web-dev-qa-db-ja.com

ECDHE-RSA-AES-GCM-SHAの余分なバイトをどうするか?

演習として、暗号スイートECDHE-RSA-AES256-GCM-SHA384に基づくプロトコルを実装しようとしています。

私が理解しているように、ECDHEは鍵交換に使用され、RSAはECDHE公開鍵の信頼性に使用され、AES(GCM)は暗号化に使用され、SHAはECDHEから派生した秘密鍵からAESで使用するランダムな鍵。

今私が理解していないのは、AES256には256ビットのキーが必要ですが、SHA384は384ダイジェストを生成するということです。だから私は2つの質問があります:

  • ここでSHA256を使用して、暗号アルゴリズムキーの予想サイズとサイズが一致するダイジェストを作成してみませんか? (AES256とSHA384の両方が64ビットアーキテクチャでより高速に動作するという事実と関係がありますか?)
  • 384ビットダイジェストをAES256キーとして使用するには、どのような操作を実行する必要がありますか?最初の256ビットだけを保持しますか?それとも私は何かが足りないのですか?
2
ereOn

RFC5246 、TLS 1.2仕様によると、SHA384は、KDFではなく、署名とMACに使用されます。

さらに、ドキュメントのセクション1.2では、すべてのTLS 1.2暗号スイートがキー計算のPRFとしてP_SHA256を使用することを指定しているため、 セクション5 で定義されているSHA256ベースの疑似ランダム関数を使用します。 PRFは、必要なだけのデータを正確に生成する方法を指定します(SHA-256ブロックサイズを法として)。最後のブロック内の余分なデータは、単に最後から破棄されます。

3
David