鍵交換、DH法について

はじめに

seccamp2021のグループKのリレーブログの一貫です。
前回は
こちら。次回はこちら

今回のお題は鍵交換になります。間違っている情報があるかもしれません。教えていただけると嬉しいです。

鍵配送問題

初めての通信時(鍵配送時)にセキュリティ確保された通信経路がありません。この状態で鍵配送をすると盗聴される可能性があります。これが鍵配送問題です。
もう少し分かりやすい例だと、盗聴されている状態で暗号化されたファイル(zip)と鍵を別々にしても意味がないという感じです。

この鍵配送問題を解決するのが、鍵交換、鍵交換アルゴリズムになります。

鍵交換アルゴリズム

2大アルゴリズムとして、Diffie-Hellman(DH)方式とRivest-Shamir-Adleman(RSA)方式があります。RSA暗号(公開鍵暗号を指す)はこのRSA方式の狭義のよう。

現在はRSA暗号は鍵交換のためには用いられていません。

DH法について

DH法で用いられる数学的・暗号的な話しは離散対数問題です。数学が詳しいわけでもないので具体的な証明などは省きます。DH法はあくまで鍵交換のためのアルゴリズムで暗号化をすることはできますが、一般的に想像するデータの暗号化とは違います。
その上で、DH法はAES(共通鍵暗号方式)の鍵交換に使われることが多いです。

次に、DH法のステップを言葉と図で説明します。

1. 公開鍵 x、pの決定
2. 秘密鍵A、Bの決定(2< A, B < p)
3. 秘密鍵、公開鍵から作った情報を送る
4. 貰った情報を自身の秘密鍵で計算を行う
  -> この時復号データが二者間で一致する  -> これを共通鍵にする

 

                  f:id:Bigdrea6:20220205165230p:plain

勝手な解釈ですが、このように共通鍵ができるからAESに適しているんですかね。

最後に、最近の話。
近年はDH法での暗号方式が計算できるようになってきているらしい。そこでその進化版である楕円曲線離散対数問題 : ECDH法を使うようになっているぽいです。

過去の脆弱性

自分が見つけた鍵交換に関する脆弱性は次の通りです。

Freak 攻撃
・Logjam 攻撃

この2つは暗号方式による脆弱性ではなくて(DH法が計算される話はおいておいて)、SSL/TLSにおける実装上・使用上によるものでした。

どちらもbit数を下げることで、暗号強度を下げ解読を可能にするものでした。

参考文献

DH法の証明とかはここがよさそうでした。

qiita.com