0Pricing
Cryptology Academy · レッスン

ECDH:鍵交換のための楕円曲線

楕円曲線のスカラー倍算をECDH鍵合意に適用します。

「ECDH:鍵交換のための楕円曲線」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

ようこそ

ECDHは、DHの乗法群を楕円曲線群に置き換えます。その結果、10分の1の鍵サイズと10倍の演算速度で、同等の安全性を実現できます。

楕円曲線群の演算

ECDHにおける「乗算」は、楕円曲線のスカラー倍算です。点Pにスカラーkを掛けるとは、Pをk回加算すること、つまりk×Pを意味します。これはg^k mod pの楕円曲線版です。

ECDHプロトコル

曲線Eと基点Gを公開で合意します。 Alice:秘密鍵a、公開鍵A = a×G Bob:秘密鍵b、公開鍵B = b×G Alice:S = a×B = a×b×G Bob:S = b×A = b×a×G 2人は同じ点Sを導出します。

ECDLP

楕円曲線上でA = a×Gが与えられたとき、aを求めます。これは楕円曲線離散対数問題です。一般的な曲線に対する準指数時間アルゴリズムは知られていないため、同じ鍵サイズで比較すると、ECDLPはDLPより困難です。

Curve25519

Bernsteinが2005年に設計しました。モンゴメリ形式では、素数2^255-19上でy²=x³+486662x²+xとなります。高速で、実装ミスに強いように設計されています。WireGuard、Signal、SSHで使用されています。

X25519鍵交換

X25519は、Curve25519を使用するECDH関数です。共有点のx座標だけを使用し、余因子の乗算によってエッジケースを処理します。RFC 7748でX25519とX448が標準化されています。

ECDHのPython実装

from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey alice_priv = X25519PrivateKey.generate() bob_priv = X25519PrivateKey.generate() alice_pub = alice_priv.public_key() bob_pub = bob_priv.public_key() shared_alice = alice_priv.exchange(bob_pub) shared_bob = bob_priv.exchange(alice_pub) assert shared_alice == shared_bob

共有点から共通鍵へ

生の共有点は鍵として直接使用しません(均一に分布していないためです)。HKDFを使用して、適切な共通鍵を導出してください。 from cryptography.hazmat.primitives.kdf.hkdf import HKDF key = HKDF(SHA256, 32, salt, info).derive(shared_secret)

ECDHとDHの鍵サイズ

128ビットの安全性: - DH:3072ビットの素数 - ECDH:256ビットの曲線 鍵サイズの比率:約12:1。ECDH公開鍵:32バイト(Curve25519)。DH公開鍵:384バイト。ECDHの秘密鍵演算は約50倍高速です。

脆弱な曲線に対する余因子攻撃

小部分群攻撃は、自明でない余因子を持つ曲線を悪用します。Curve25519の余因子は8ですが、X25519はこれを正しく処理します。NIST P曲線の余因子は1です。必ず標準化された実装を使用してください。

TLS 1.3でのECDH

TLS 1.3は鍵交換にX25519、X448、P-256、P-384、P-521をサポートしています。X25519が最も一般的で、高速、安全、かつconstant-timeです。双方のピアは、セッションごとに一時鍵を生成します。

クイックチェック

従来のDiffie-Hellmanと比べたECDHの主な利点は何ですか。

まとめ

ECDHを習得しました。次は前方秘匿性について学び、TLSで一時鍵交換が不可欠な理由を理解します。

よくある質問

「ECDH:鍵交換のための楕円曲線」レッスンは無料ですか?

はい。「ECDH:鍵交換のための楕円曲線」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「ECDH:鍵交換のための楕円曲線」で何を学びますか?

楕円曲線のスカラー倍算をECDH鍵合意に適用します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「ECDH:鍵交換のための楕円曲線」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 鍵配送問題
  2. Diffie-Hellman鍵交換の数学
  3. ECDH:鍵交換のための楕円曲線
  4. 前方秘匿性と一時鍵交換
← Cryptology Academyに戻る