1

CWE-329 NON-Random IV によると、辞書攻撃の可能性があります。ただし、AES 暗号化の例では、golang ドキュメントはランダムではない IV を使用しています。

ciphertext := make([]byte, aes.BlockSize+len(plaintext))
iv := ciphertext[:aes.BlockSize]

この実装は安全ですか、それともランダム関数を使用して IV を取得する必要がありますか?

4

1 に答える 1

2

/dev/urandomIV は、デフォルトで OS から提供される暗号学的に安全な疑似乱数ジェネレーター (CSPRNG) から入力されるため、安全です。ExampleNewCBCEncrypter関数から:

iv := ciphertext[:aes.BlockSize]
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
    panic(err)
}
于 2015-09-17T15:28:35.757 に答える