はじめに
暗号技術を勉強していると、共通鍵暗号方式、公開鍵暗号方式、鍵交換、RSA、AES、DH、素因数分解の困難性、離散対数問題の解決困難性などが絡み合い、「何が何のために使われるのか?」分からなくなることがあります。
1. 共通鍵暗号と公開鍵暗号
暗号技術には大きく分けて共通鍵暗号方式(対称鍵暗号)と公開鍵暗号(非対称暗号)があります。
共通鍵暗号方式(対称鍵暗号)
- 送信者と受信者が同じ鍵を使う
- 例:AES
- 特徴:高速だが、鍵の受け渡しが問題になる
公開鍵暗号方式(非対称鍵暗号)
- 公開鍵と秘密鍵のペアを使う
- 例:RSA
- 公開鍵で暗号化 → 秘密鍵で復号(逆も可能)
- 鍵交換やデジタル署名に使われる
2. 共通鍵の受け渡し方法
共通鍵暗号(AESなど)は速くて便利ですが、「鍵の受け渡し」が課題です。
RSAを使う方法
- 共通鍵をRSAの公開鍵で暗号化して相手に送る
- 受信者はRSAの秘密鍵で復号して共通鍵を取得
- 例:TLS(HTTPSの仕組み)で使われることがある
Diffie-Hellman(DH)を使う方法
- 共通鍵を直接送らずに、情報を交換して同じ鍵を生成する
- RSAは不要!
- 例:TLSの鍵交換(ECDHなど)
3. DH法と公開鍵暗号の違い
方法 | 仕組み | 特徴 |
---|---|---|
RSA方式 | 共通鍵を公開鍵で暗号化して送る | 簡単だが前方秘匿性がない |
DH方式 | お互いの情報を交換して共通鍵を導出 | 直接鍵を送らないので安全 |
4. 暗号技術の安全性の根拠
技術 | 安全性の基盤 |
---|---|
RSA | 素因数分解の困難性 |
DH | 離散対数問題の困難性 |
5. TLS1.3ではなぜRSA鍵交換が廃止されたのか?
TLS1.3では、RSA鍵交換は廃止され、ECDH(楕円曲線DH)が標準になった。
その理由
1. 前方秘匿性(Forward Security、FS)がない
- RSA鍵交換だと、サーバーの秘密鍵が漏れると過去の通信が全て解読可能になる
- 一方、DH(特にECDH)は各セッションごとに異なる共通鍵を作るので、過去の通信は守られる
2. 計算コストが高い
- RSA鍵交換はサーバー側の処理負荷が大きい
- ECDHの方が軽量でセキュア
3. 量子コンピュータ対策
- RSA(2048bitなど)は素因数分解の困難性に依存
- 量子コンピュータが発展するとSnorのアルゴリズムで破られる可能性がある
- ECDHの方が比較的影響を受けにくい
TLS1.3での変更点
- 鍵交換 → ECDH(楕円曲線DH)が標準
- 暗号化 → AES-GCM/Cha-Cha20-poly1305などの共通鍵暗号
- 認証 → サーバー証明書の署名には RSA or ECDSA(楕円曲線署名)
※ RSA鍵交換は廃止されたが、RSA自体は証明書の署名に使われている!
まとめ
方式 | 役割 | 例 |
---|---|---|
AES | メッセージの暗号化 | TLS通信のデータ暗号化 |
RSA | 共通鍵の受け渡し or デジタル署名 | TLSハンドシェイク(RSA方式) |
DH | 共通鍵を作る(鍵交換) | TLSハンドシェイク(ECDH方式) |
素因数分解の困難性 | RSAの安全性の基盤 | RSA |
離散対数問題の困難性 | DHの安全性の基盤 | Diffie-Hellman |