暗号鍵交換

Jan 01 2023
対称暗号化と非対称暗号化の違いについては以前に説明しましたが、今日はキーが実際にどのように交換されるかについて説明します。一般に、暗号鍵交換または暗号化鍵交換 (EKE) プロトコルは、秘密を第三者に明かすことなく、2 つの当事者が共有秘密を生成できるようにすることで機能します。

対称暗号化と非対称暗号化の違いについては以前に説明しましたが、今日はキーが実際にどのように交換されるかについて説明します。

一般に、暗号鍵交換または暗号化鍵交換 (EKE) プロトコルは、秘密を第三者に明かすことなく、2 つの当事者が共有秘密を生成できるようにすることで機能します。これは通常、公開鍵暗号化と数学的アルゴリズムの組み合わせを使用して行われます。共有秘密鍵は、対称暗号の鍵として使用できます。これにより、2 つの当事者が安全に通信できるようになります。

使用法

メソッドは公開鍵を使用するため、対称暗号化では鍵が共有されないため、当然、非対称暗号化にのみ適用されます。つまり、事前に知られていて合意されています。

暗号鍵交換は、ネットワーク上で暗号鍵を安全に交換する方法です。これは、多くの暗号化プロトコルの基本的な側面であり、2 つの当事者が相互に安全に通信するために使用できる共有秘密を確立できるためです。

この取引所は、安全な通信、安全なオンライン トランザクション、アクセス制御など、さまざまなアプリケーションで使用されています。多くの場合、クライアントとサーバーなどの 2 つのパーティ間、または 2 つのデバイス間で安全な接続を確立するために使用されます。そのため、FTPS、HTTPS、SFTP などのプロトコルを介してファイルを安全に送信する前に、通信する 2 つの当事者がまず鍵交換を行う必要があります。

概要

EKE の最も一般的な形式では、少なくとも 1 つのパーティがパスワードを使用して一時的な (1 回限りの) 公開キーを暗号化し、それを 2 番目のパーティに送信します。

Augmented-EKE と呼ばれる、このスキームの別のバリエーションが存在します。拡張された方法には、サーバーから盗まれたパスワード検証データが、攻撃者が最初にパスワードを決定しない限り (盗まれたデータに対してブルート フォース攻撃を実行するなど)、クライアントになりすますために使用できないようにするという追加の目標があります。

最も一般的な 2 つの鍵交換アルゴリズムは、RSA と Diffie-Hellman (現在は Diffie-Helmlman-Merkle として知られています) です。これら 2 つの鍵交換プロトコルの出現が、特にビジネス面でのインターネットの成長を加速したと言っても過言ではありません。これは、これら 2 つのプロトコルにより、クライアントとサーバー、およびサーバーとサーバーが安全でない媒体 (インターネット) を介して暗号化キーを交換し、安全な方法で電子的に取引できるようになったためです。

最近、楕円曲線暗号の出現により、ECDH (Elliptic Curve Diffie-Hellman) や ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) などの新しい交換プロトコルが導入されました。

ここでは、DH-EKE として知られる Diffie-Hellman ファミリに焦点を当てます。これは、何年にもわたって複数の攻撃に耐え、バリエーションの改善につながっています。

ディフィー・ヘルマン

1976 年、Whitfield Diffie と Martin Hellman は、Hellman の博士課程の学生 Ralph Merkle によって開発された概念に基づいて、Diffie-Hellman 鍵交換 (D–H) と呼ばれる暗号化プロトコルを公開しました。このプロトコルにより、相手がその通信チャネルを監視している場合でも、ユーザーは秘密鍵を安全に交換できます。これは、有限体でべき乗を使用して、メッセージの暗号化と復号化に使用できる共有秘密を生成するという考えに基づいています。

Diffie-Hellman 鍵交換プロセスの例を次に示します。以下の図を参照してください。

Alice と Bob は、有限体とその体内の素数 (これは「モジュラス」として知られています) について合意しています。彼らが有限体 GF(23) pと素数 5 gを選んだとしましょう。

  1. アリスは秘密の整数「a」を選択し、ボブは秘密の整数「b」を選択します。これらの整数は、共有シークレットを生成するために使用されます。
  2. Alice は A = 5^a mod 23 を計算し、A を Bob に送信します。Bob は B = 5^b mod 23 を計算し、B を Alice に送信します。
  3. Alice は次の計算を実行して共有秘密を計算します: sharedSecret = B^a mod 23. Bob は同じ計算を使用して共有秘密を計算します: sharedSecret = A^b mod 23.
  4. これで Alice と Bob の両方が共有シークレットを取得し、これをキーとして使用してメッセージを暗号化および復号化できます。

# Alice's side of thNote that in this example, the shared secret is the same for both Alice and Bob, even though they used different secret integers to generate it. This is because the shared secret is generated using a mathematical function that is commutative, meaning that the order of the operands does not affect the result. This property is what allows Alice and Bob to establish a shared secret without revealing their secret integers to each other.e key exchange

# Choose finite field and prime number
field = GF(23)
prime = 5

# Choose secret integer
secretA = 6

# Compute A and send to Bob
A = (prime ^ secretA) mod field
send A to Bob

# Receive B from Bob
B = receive from Bob

# Compute shared secret
sharedSecret = (B ^ secretA) mod field

# Bob's side of the key exchange

# Choose secret integer
secretB = 15

# Compute B and send to Alice
B = (prime ^ secretB) mod field
send B to Alice

# Receive A from Alice
A = receive from Alice

# Compute shared secret
sharedSecret = (A ^ secretB) mod field

このプロパティにより、Alice と Bob は、秘密の整数を互いに明かさずに共有秘密を確立できます。

DH交換が機能する理由は、離散対数問題の解決の難しさに基づく離散対数暗号です。

簡単に言えば、方程式「g^x = y mod p」で整数「x」を見つけることを含む数学の問題です。「g」と「y」は既知であり、「p」は素数です。この問題は、「g」、「y」、および「p」の任意の値に対して「x」の値を見つける効率的なアルゴリズムが知られていないため、解決が難しいと考えられています。

全体として、Diffie-Hellman は広く使用されている効果的な鍵交換プロトコルですが、実際にはいくつかの制限があるため、可能であれば楕円曲線 Diffie-Hellman (ECDH) を選択することをお勧めします。

楕円曲線ディフィーヘルマン (ECDH)

Elliptic Curve Diffie-Hellman (ECDH) は Diffie-Hellman 鍵交換プロトコルの変形であり、有限体での従来の累乗の代わりに楕円曲線暗号を使用します。ECDH には、通常の Diffie-Hellman よりもいくつかの利点があります。

  1. ECDH はより効率的です: 楕円曲線操作は一般に、有限体操作よりも高速であり、必要な計算能力が少ないため、ECDH は通常の Diffie-Hellman よりも効率的です。その仕組みと利点については、以前の記事をご覧ください。
  2. ECDH はより安全です: 楕円曲線暗号は、特定の種類の攻撃に対してより耐性があるため、一般的に有限体暗号よりも安全であると考えられています。
  3. ECDH 鍵が短い: 楕円曲線演算では使用する数値が小さいため、ECDH 鍵は通常、通常の Diffie-Hellman 鍵よりも短く、送信と保存が容易になります。
  4. ECDH の方が鍵サイズが小さい: 楕円曲線演算はより効率的で安全であるため、ECDH は通常の Diffie-Hellman と同じレベルのセキュリティをより小さな鍵サイズで実現できます。これは、特定の種類のハードウェア デバイスなど、キー サイズが制限要因となるアプリケーションで特に役立ちます。

楕円曲線 Diffie-Hellman Ephemeral (ECDHE)

Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) は、Elliptic Curve Diffie-Hellman (ECDH) の一種で、一時キーを使用します。

ECDHE では、ECDH のように有効期間の長い静的キー ペアを使用するのではなく、各当事者がセッションごとに新しい有効期間の短いキー ペアを生成します。これにはいくつかの利点があります。

  1. セキュリティの向上: ECDHE は単一のセッションでのみ使用される一時的なキーを使用するため、攻撃者が前のセッションからキーをキャプチャして再利用するリプレイ攻撃など、特定の種類の攻撃に対する耐性が高くなります。
  2. 前方秘匿性: ECDHE では、共有秘密鍵は、セッション後に破棄される一時鍵から派生します。これは、攻撃者が一時的なキーのコピーを取得したとしても、共有秘密が知られていないため、過去の通信を解読できないことを意味します。
  3. 簡素化されたキー管理: ECDHE では、各パーティは、長期間有効な静的キー ペアを管理するのではなく、セッションごとに新しいキー ペアを生成します。これにより、キー管理が簡素化され、キー侵害のリスクが軽減されます。