3

私は現在、鍵交換にDiffie-Hellmanを使用するプロトコルに取り組んでいます。aes-128暗号化部分と128ビットDH公開鍵で構成されるパケットを受信します。

プロトコルの最後のステップで、aesキーがネットワーク内の別のピアに送信されます。このaesキーは、128ビットの強力な秘密キーを使用して暗号で暗号化する必要があります。

私はBlowfishを使用する予定です(別の暗号にすることもできますが、問題には関係ありません)

ここで、aes-keyを暗号化するために、たとえばblowfishを使用して、SecretKeySpec(javax.cryptoのものを使用しています)というクラスで暗号化用の秘密鍵を作成する必要があります。このクラスは、コンストラクターでbyteArrayを使用してsecretKeyを作成します。

DHの共有キーは128ビットのBigIntegerです。これで、共有キーをbyteArrayとして解釈できるようになりました(16バイトで128ビットが得られます[数値は8ビットデータのフレームとして解釈されます])

だから私の質問は、私の鍵は本当にどれくらい強いのかということです。

byteArrayの入力として数値のみを使用するため、影響はありますか(これにより、キースペースが制限されますか?)

そうではないと思いますが、100%確信はありません。たぶん誰かが数学をして、私が正しいか間違っているかを証明することができます。

共有キーのキーサイズが間違っている場合、暗号化のために最終的に128ビットのSecretKeyに到達するための心の一部を与えてくれますか?

4

2 に答える 2

2

Crypto ++ Webサイトでは、128ビットのAESキーを転送するために最低p3072ビット(またはECC実装の場合は256ビット)を使用することを提案しています。

さまざまなアルゴリズム間でのキーの長さの比較の詳細については、 http://www.keylength.com/en/compare/で提供されているリファレンスを確認することをお勧めします。

于 2011-10-29T21:12:40.607 に答える
1

ここではDHの専門家ではありませんが、私には、 nビットで表される共有キーのDHのキースペースは2^ nよりもいくらか小さいようです。

于 2011-10-29T21:09:26.287 に答える