Elliptic Curve Diffie Hellman (ECDH)とは何ですか?
Elliptic Curve Diffie Hellman (ECDH)は、二者が公開の場でやり取りすることで同じ秘密鍵に合意する方法です。どちらの側からも秘密が外部に出ることはなく、それでも両者は一致する鍵を得ます。たとえるなら、二人のバリスタがそれぞれ違うシロップを混ぜて、周囲の人はカップしか見えないのに同じ風味ができあがるようなものです。
Elliptic Curve Diffie Hellman (ECDH)自体はメッセージを暗号化しません。共有の秘密を与えるだけで、実際に暗号化や復号を行うためには認証された暗号や方式が別に必要です。
Elliptic Curve Diffie Hellman (ECDH)の仕組み
簡単な流れ: ウォレットアプリが新しいデバイスとペアリングする場面を想像してください。やり取りは公開されますが、使われているのは数学上のささやきです。
- 開始: 各当事者はランダムな 秘密鍵 を作りそれを秘密に保ち、対応する公開点を準備します。この一組は 暗号鍵 の考え方の一部です。
- 共有: その公開点を誰でも見られるチャネルで交換します。にぎやかなチャットでも構いません。
- 混合: 各当事者は自分の秘密鍵と相手の公開点を組み合わせて、同じ共有点に到達します。
- 導出: 共有点をキー導出関数に通して、新しい対称鍵を得ます。
- 利用: その対称鍵がセッション中の暗号化やメッセージ検証を担当します。ECDHは布置を整える役割を果たします。
これが全体の流れです。静かな数学、はっきりした結果。
Elliptic Curve Diffie Hellman (ECDH)が重要な理由
ポイントだけを簡潔に示します:
- 利点: 鍵が小さく、握手が速いため、帯域、バッテリー、時間の節約になります。携帯機器や手数料にやさしいです。
- 安全性: その安全性は 楕円曲線離散対数問題(ECDLP) の解きにくさに依存しており、現行の計算機では逆算が困難です。
- 関連場面: ウォレットのペアリング、P2Pメッセージ、Lightningノードの握手、TLSの暗号部分などで出会います。
セッションを信用する前に、必ず相手の 公開鍵 を検証してください。指紋の照合や署名検証を行うことで、目立たないなりすましが中間に入るのを防げます。
Elliptic Curve Diffie Hellman (ECDH)の主な特徴
際立つ点は次の通りです:
- 小型: RSAのような従来方式より短い鍵で強い安全性を得られます。
- 高速: 計算が速く、モバイルや高トラフィック環境に適しています。
- 秘密保持: 共有鍵は通信路を通りません。公開点のみが送信されます。
- 前方秘匿性: 一時鍵を使えば、後に端末が侵害されても過去のメッセージは安全に保たれます。
バリエーション
脅威モデルに応じて異なる形式があります:
- 静的: 長期鍵はセッションの一貫性を保ちますが、プライバシーは低くなります。
- エフェメラル: セッションごとに新しい鍵を使う方式は、標準で前方秘匿性を提供します。
- ハイブリッド: 片方が静的、もう片方がエフェメラルだと、識別性とプライバシーのバランスが取れます。
鍵合意は本人確認ではありません。認証がなければ巧妙な攻撃者が通信を中継する可能性があります。誰と話しているかを証明するために、楕円曲線デジタル署名アルゴリズム(ECDSA) のような署名と組み合わせてください。
例
二つのLightningノードが接続する際、Elliptic Curve Diffie Hellman (ECDH)を実行して共有セッション鍵を生成し、ウォレットはその後にデバイスのペアリングリクエストを暗号化して送るために 楕円曲線統合暗号方式(ECIES) を使うことがあります。
豆知識
楕円曲線暗号は80年代半ばにKoblitzとMillerによって提案されました。元のDiffieとHellmanの考えより後ですが、同等の安全性をより短い鍵で得られるため普及しました。携帯端末の計算量が減り、ほかの用途にバッテリーを回せます。
まとめ
短く言うと: ECDHは二者が公開の場で秘密鍵に合意し、その鍵を使ってプライベートな通信や支払いを行えるようにする仕組みです。
