情境概述#
- Alice 和 Bob 是通信双方。
- 目标:确保消息 \( M \) 的机密性、完整性和来源可验证。
- 使用的技术:RSA 加密、数字签名和 Hash 算法。
双方应持有的密钥#
Alice:
- 私钥$( d_{A})$ :用来签名消息。
- 公钥 $(e_{A})$:用来加密消息(如果 Alice 要接收加密消息)。
Bob:
- 私钥 $( d_{B})$ :用来解密消息。
- 公钥 $(e_{B})$:用来加密消息(如果 Bob 要接收加密消息)。
注意:双方的公钥是公开的,任何人都可以获取,而私钥则是保密的,只能由对应的密钥持有者使用。
已知信息#
- Alice 和 Bob 都知道对方的 公钥。即:
- Alice 知道 Bob 的公钥 $(e_{B})$。
- Bob 知道 Alice 的公钥 $(e_{A})$。
过程说明#
1. Alice 准备消息#
- Alice 要向 Bob 发送一条消息 \( M \),比如: $$ M = \text{"Hello, Bob!"} $$
2. Alice 对消息进行 RSA 加密#
Alice 使用 Bob 的公钥 $(e_{B})$ 对消息 \( M \) 进行加密,得到密文 \( C \):
$$ C = M^{e_{B}} \mod n_{B} $$这里,$( n_{B} )$ 是 Bob 公钥的一个组成部分。
密文 \( C \) 是加密后的消息,只有拥有 Bob 私钥 $( d_{B})$ 的 Bob 才能解密。
3. Alice 计算消息的 Hash 值并生成数字签名#
为了确保消息的完整性和来源,Alice 使用 Hash 算法(如 SHA-256)计算消息 \( M \) 的 Hash 值 \( H (M) \):
$$ H(M) = \text{SHA-256}(M) $$然后,Alice 使用 自己的私钥$( d_{A})$ 对 Hash 值 \( H (M) \) 进行签名,生成数字签名 \( S \):
$$ S = H(M)^{d_{A}} \mod n_{A} $$这里,$( n_{A} )$ 是 Alice 私钥的一个组成部分。
4. Alice 发送加密消息和签名#
- Alice 将加密后的消息 \( C \) 和数字签名 \( S \) 一同发送给 Bob。 $$ \text{发送数据} = (C, S) $$
5. Bob 接收消息和签名#
- Bob 收到 Alice 发送的加密消息 \( C \) 和签名 \( S \)。
6. Bob 使用私钥解密消息#
Bob 使用 自己的私钥 $( d_{B})$ 解密密文 \( C \),得到原始消息 \( M \):
$$ M = C^{d_{B}} \mod n_{B} $$解密后,Bob 得到原始的消息 $( M = \text{"Hello, Bob!"} )$。
7. Bob 使用 Alice 公钥验证签名#
Bob 使用 Alice 的公钥 $(e_{A})$ 对签名 \( S \) 进行验证:
$$ H'(M) = S^{e_{A}} \mod n_{A} $$这里,\( H' (M) \) 是通过公钥解密签名后得到的 Hash 值。
然后,Bob 对收到的消息 \( M \) 使用相同的 Hash 算法计算 Hash 值 \( H (M) \),即:
$$ H(M) = \text{SHA-256}(M) $$
8. Bob 验证签名的有效性#
如果计算得到的 Hash 值 \( H (M) \) 与通过公钥解密得到的 Hash 值 \( H' (M) \) 相同:
$$ H(M) = H'(M) $$那么消息 \( M \) 没有被篡改,且确实是由 Alice 发送的,签名有效。
如果 $( H (M) \neq H' (M) )$,则说明消息可能已被篡改,或者签名无效。
9. Bob 进一步处理消息#
- 如果签名验证成功,Bob 知道消息完整且真实,接下来可以继续处理消息内容(比如显示消息:“Hello, Bob!”)。
总结#
在这个过程中,RSA 加密和数字签名共同作用:
- RSA 加密:保护消息的机密性,确保只有 Bob(拥有私钥)才能解密消息。
- 数字签名:确保消息的完整性和来源,只有 Alice(拥有私钥)才能生成有效的签名,Bob 可以用 Alice 的公钥验证签名。
双方持有的密钥#
- Alice:
- 私钥$( d_{A})$
- 公钥 $(e_{A})$
- Bob:
- 私钥 $( d_{B})$ ,
- 公钥 $( e_{B} )$
双方应知的内容#
- Alice 知道:Bob 的公钥 $(e_{B})$(用于加密消息)
- Bob 知道:Alice 的公钥 $(e_{A})$(用于验证签名)
通过这种方式,RSA 加密保证了消息的机密性,数字签名确保了消息的完整性和来源的真实性。

