web-dev-qa-db-ja.com

証明書なしで鍵交換プロトコルを構築できますか?

サーバーとクライアントの両方に秘密鍵Kがあると仮定します。MITM攻撃が保持できないように、また過去のセッションがまだ行われているある時点で鍵が公開された場合に、認証付きの鍵交換プロトコルを使用することは可能ですか。秘密?

Kの署名をサーバーに渡す通常のDiffie-Hellman鍵交換プロトコルを使用して試しましたが、すべてのバージョンで、MITMがクライアントとサーバーになりすましてすべてのセッションを監視できます...

4
Bush

はい、できます。これは Password Authenticated Key Exchange と呼ばれます。このようなプロトコルは、「非対称暗号」要素(Diffie-Hellmanなど)を再利用し、共有秘密と「スマートに」混合して、次のようにします。

  • クライアントとサーバーは、共有シークレットに関して相互に認証します。
  • 共有シークレットを推測すると、過去のセッションを復号化できません。
  • 記録された内容には、共有シークレットの潜在的な値testに十分な情報が含まれていません。

3番目の条件は、低エントロピーの共有秘密を意味します。 「パスワード」は引き続き安全に使用できるため、この種のプロトコルの名前です。暗号化の概念は、1992年にBellovinとMerritによって「暗号化された鍵交換」(正式には、メッセージが共有秘密で対称的に暗号化されるDH鍵交換であるため、間違った秘密で復号化すると構文的に有効なDHが生成される)という名前で発明されました。メッセージ-実際の数学的要件は微妙です)。

SSL/TLSのコンテキストでは、標準のPAKEプロトコルが [〜#〜] srp [〜#〜] という名前で定義されています( Wikipediaページ も参照してください)。 )。 SRPは良いです。残念ながら、Webブラウザは(まだ)それをサポートしていないようです。

6
Thomas Pornin