回 4-5 道 4 ネットワークと暗号
公開鍵暗号方式は、
読み終えたら共通鍵暗号、
この頁の流れ
暗号の部品 4 つ (共通鍵暗号、
なぜ鍵を 公開しても 秘密が 守れるのか
鍵を
初めて
この
| 部品 | 守る物 | 鍵 |
|---|---|---|
| 共通鍵暗号 | 中身を | 両者で同じ鍵 |
| 公開鍵暗号 | 鍵を | 公開鍵と秘密鍵 |
| ハッシュ | 書き換えに気づく | 鍵なし |
| 署名 | 誰が | 秘密鍵で |
暗号の 部品は、 どう 組み合わさっているのか
暗号の
共通鍵暗号は、 同じ鍵で 閉じて開ける
共通鍵暗号は、
弱い
公開鍵暗号は、 閉じる 鍵と 開ける 鍵を分ける
公開鍵暗号は、
- 受け取る
人が、 公開鍵と 秘密鍵の対を作る - 公開鍵を、
送る 人に 渡す (途中で 読まれてもよい) - 送る
人が、 公開鍵で 中身を 閉じて送る - 受け取る
人が、 秘密鍵で開ける
代表は
署名の
ハッシュは、 データの 指紋を作る
ハッシュ関数は、
暗号と
署名は、 秘密鍵で 付けて 公開鍵で確かめる
デジタル署名は、
暗号化が
実際の 通信は、 部品を 組み合わせる
実際の
HTTPS の
TLS が
動かして確かめる
部品を 1 つずつ Python で
まず共通鍵暗号です。
動かす 同じ鍵で閉じて開ける
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
bb 6b b1 2e 60 3a c2 0b 52 17
会議は3時
cc 98 98 37 30k1 で
次に、pow(e, -1, phi) は、
動かす 小さな数の RSA
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
公開鍵 (3233, 17)
秘密鍵 2753
暗号文 2790
戻す 65公開鍵 (3233, 17) で
ハッシュの
動かす ハッシュは 1 字で大きく変わる
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
abc ba7816bf8f01cfea
abd a52d159f262b2c6d
abc ba7816bf8f01cfea
ビット数 256
違うビット 122
バイト 32同じ
最後に
動かす 秘密鍵で署名し公開鍵で確かめる
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
署名 982
True
False1 万円の文に
どこで 暗号が 破れるのか
暗号は、
小さい 鍵は、 素因数分解で 秘密鍵が出る
上の
動かす 小さい n を割って秘密鍵を出す
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
p q 53 61
割った回数 52
秘密鍵 2753
617 桁52 回割っただけで
同じ鍵の 流れを 2 回使うと、 中身が漏れる
共通鍵暗号で、
動かす 同じ並びを 2 回使う
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
b'PAY 9999'2 つの暗号文を
詰め物の 無い RSA は、 候補を 総当たりされる
RSA の
動かす 候補を閉じて当てる
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
中身は 42秘密鍵を
崩れる
仕事で どう 確かめるか
仕事では、
1 つ目は、
2 つ目は、== ではなく hmac.compare_digest で
動かす HMAC で書き換えに気づく
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
d783b3f3c3a5067d
67d309ec0b6f8d65
False3 つ目は、md5 や sha1 で
関わる実例
次の 2 件は、
Debian の OpenSSL の 予測できる 乱数 CVE-2008-0166 (NVD の 公開 2008 年 5 月 13 日)
米国の
崩れた
SHA-1 の 衝突の 公表 (2017 年 2 月 23 日)
Google と
崩れた
よくある問い
公開鍵が バレても 大丈夫ですか
大丈夫です。公開鍵は、
共通鍵暗号方式の 欠点は何ですか
欠点は、
署名鍵とは何ですか
署名鍵は、
AES 128 と AES 256 の 違いは何ですか
違いは
確認クイズ
答えだと
1 問目
公開鍵暗号方式で、
2 問目
この
秘密鍵で戻す
n, d = 3233, 2753
print(pow(2790, d, n))3 問目
ダウンロードしたファイルが、
4 問目
TLS 1.3 で、
説明課題
次の
- 共通鍵暗号、
公開鍵暗号、 ハッシュ、 署名が、 それぞれ何を守るか - HTTPS の
通信で、 それらが どう 組み合わさっているか
自分の
この回の 先の一歩
API の
もっと深く
この
一次資料
どれも 2026年10月27日に開いて、
- RFC 8017 PKCS #1 RSA Cryptography Specifications Version 2.2 (IETF、英語)。RSA の公開鍵が n と
e の 組である こと、 暗号に する 計算が c = m^e mod n である こと、 新しい 用途では RSAES-OAEP を 使えるように する ことを 求めていること - FIPS 197 Advanced Encryption Standard (米国 NIST、英語)。AES-128、
AES-192、 AES-256 が どれも 128 ビットの 塊を 変換し、 数字が 鍵の 長さを表すこと - FIPS 180-4 Secure Hash Standard (米国 NIST、英語)。SHA-256 が
256 ビットの 値を出すこと - SP 800-57 Part 1 Rev. 5 Recommendation for Key Management (米国 NIST、英語)。2048 ビットの
RSA が 112 ビットの 強さの 区分にあること - RFC 8446 The Transport Layer Security (TLS) Protocol Version 1.3 (IETF、英語)。鍵の
決め方が (EC)DHE と PSK である こと、 static RSA と static DH の 方式を 取り除いたこと - RFC 2104 HMAC Keyed-Hashing for Message Authentication (IETF、英語)。HMAC が
秘密の 鍵と ハッシュで 作る 書き換えの 印であること - hmac Keyed-Hashing for Message Authentication (Python 公式文書、英語)。値を
比べるときは compare_digestを使い、 タイミング攻撃を 減らすよう 勧めていること - Built-in Functions (Python 公式文書、英語)。3 引数の
powが3.8 から 負の 指数を 受け、 法の 逆数を 計算できること - CVE-2008-0166 (米国 NIST の
NVD、英語) 。Debian 系のOpenSSL が 予測できる 乱数を 使い、 鍵を 総当たりで 当てやすくなっていたこと - Announcing the first SHA1 collision (Google Security Blog、2017年2月23日、英語)。SHA-1 の
衝突する 2 つの PDF を 公表した こと、 SHA-1 の 計算を 合計 9,223,372,036,854,775,808 回使ったこと
