これまでの暗号は「同じ鍵をどうやって安全に相手と共有するか」という問題を 残していました。ここで見るのは、盗聴者に全部見られていても秘密を 共有できてしまう、鍵交換の仕組みです。
A幕: 公開の場で秘密を共有する
アリスとボブは、公開されているg=5・p=23だけを共有した状態から始めます。
アリス
秘密の数 a(誰にも見せない):
公開する A = g^a mod p =
計算した共有の秘密:
ボブ
秘密の数 b(誰にも見せない):
公開する B = g^b mod p =
計算した共有の秘密:
B幕: 曲線の上の足し算
この曲線(y²=x³+x+1 mod 97)の上の点をタップすると、もう1点との「足し算」の結果が見えます。
1点目をタップしてください。
C幕: 実物大の曲線(X25519)
アリスとボブが、実際のX25519(255bitのモンゴメリラダー)で鍵交換します。 公開されるのは32バイトの公開鍵だけです。
アリスの公開鍵
ボブの公開鍵
両者が独立に計算した共有の秘密(一致するはず)
この値がそのまま 第2展示室 のAESの鍵になります。
D幕: httpsの南京錠の中身
このページを開いた0.1秒足らずの間に、いま見てきた計算が本当に実行されました。
なぜECCは鍵が短くて済むのか
RSAの安全性は「大きな数の素因数分解の困難さ」に基づき、既知の効率的な攻撃法 (数体篩法等)があるため2048bit以上の鍵が必要です。楕円曲線暗号の安全性は 「離散対数問題」に基づき、既知の最良の攻撃法がより非効率(平方根オーダー)なため、 256bit程度の鍵でRSA-2048相当の強度が得られます。Curve25519(X25519)はTLS・SSH・ Signalなど広く使われています。