メインコンテンツへスキップ
  1. ノート/
  2. セキュリティと暗号/

RSA 暗号・デジタル署名・Hash アルゴリズムの組み合わせ例

·1335 文字·3 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml
この記事は中国語版をもとにした日本語版メモです。コマンド、コード、数式、画像リンクは原文の意味を壊さないように保持し、説明文と見出しを日本語向けに整理しています。

情境概述
#

  • Alice 和 Bob 是通信双方。
  • 目标:确保消息 \( M \) 的机密性、完整性和来源可验证。
  • 使用的技术:RSA 暗号化、数字署名和 Hash アルゴリズム。

双方应持有的密钥
#

  1. Alice:

    • 私钥$( d_{A})$ :用来署名消息。
    • 公钥 $(e_{A})$:用来暗号化消息(もし Alice 要接收暗号化消息)。
  2. 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 暗号化和数字署名共同作用:

  1. RSA 暗号化:保护消息的机密性,确保只有 Bob(拥有私钥)才能復号消息。
  2. 数字署名:确保消息的完整性和来源,只有 Alice(拥有私钥)才能生成有效的署名,Bob できます用 Alice 的公钥验证署名。

双方持有的密钥
#

  • Alice
    • 私钥$( d_{A})$
    • 公钥 $(e_{A})$
  • Bob
    • 私钥 $( d_{B})$ ,
    • 公钥 $( e_{B} )$

双方应知的内容
#

  • Alice 知道:Bob 的公钥 $(e_{B})$(用于暗号化消息)
  • Bob 知道:Alice 的公钥 $(e_{A})$(用于验证署名)

通过这种方式,RSA 暗号化保证了消息的机密性,数字署名确保了消息的完整性和来源的真实性。