私は現在、鍵交換に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に到達するための心の一部を与えてくれますか?