私はECDHE-RSA-AE-GCM-SHA
を使用するTLSのようなシステムを実装していますが、2つの問い合わせに直面しました。
ハンドシェイクの最後(およびChangeCipherSpec
メッセージの前)では、クライアントとサーバーの両方が同じPre-Master Secret
を構築する必要があります。
この秘密に基づいているデータは何ですか?RFSの答えが見つからないため( 4492 および 5246 )、私はこれを言います:
ServerKeyExchange
メッセージ内で送信)ClientKeyExchange
メッセージ付き)MalloryはサーバーのPublicKeyで暗号化されているため、クライアントの公開ECDHEキーを取得できなかったため、私にとっては論理コンポーネントです。はいの場合、ServerkeyExchange
メッセージの署名は間違っているため、クライアントはその試みを知っています。
これは適切な正当化ではないことを承知しており、暗号法について言えば、この種の推論は悪いことではありませんが、答えは見つかりませんRFCでは、残っているものはすべてここにあります...
さらに、プリマスターシークレットを実際に構築するためにどのアルゴリズムを使用していますか?それは古典的なハッシュ関数(SHAなど)ですか?
私はSHA
がMasterSecret
を(乱数とPre-Patser Secret
から)展開するために使用されることを知っていますが、その弟のために私は霧の中にいます...
「ECDHE」は「エフェメラル Diffie-Hellman (楕円曲線あり)」を意味します。これが、プリマスターシークレットの由来です。クライアントはランダムなDH鍵ペア(DH秘密鍵と対応する公開鍵)を生成します。サーバーは、ランダムなDH鍵ペアも生成します。それらは、それぞれの鍵ペアの公開部分を相互に送信します。
クライアントは、プライベートDHキーをサーバーからのDH公開キーと組み合わせて使用して、プリマスターシークレットを取得します。
サーバーは、プライベートDHキーをクライアントからのDH公開キーと組み合わせて使用して、プリマスターシークレットを取得します。
Diffie-Hellmanの魔法により、両者はプリマスターシークレットに対して同じ値を取得します。しかし、依然としてその魔法により、クライアントとサーバーの両方からの公開鍵のみを閲覧し、プライベートDH鍵をまったく閲覧しない盗聴者は、プリマスターシークレットを再構築できません。
(「暗号化」はWordではありません。おそらく「暗号化」を意味します。ただし、ここでは暗号化はありません。DH公開鍵はpublicであり、 、確かに、現状のまま送信されます。)