Aes

將 AES-CTR 與 scrypt 一起使用時重用密碼是否安全?

  • August 19, 2019

我想用scrypt加密實用程序加密幾個文件。以下是其文件格式的概述,它說明了它的作用:

scrypt encrypted data format
----------------------------

offset  length
0   6   "scrypt"
6   1   scrypt data file version number (== 0)
7   1   log2(N) (must be between 1 and 63 inclusive)
8   4   r (big-endian integer; must satisfy r * p < 2^30)
12  4   p (big-endian integer; must satisfy r * p < 2^30)
16  32  salt
48  16  first 16 bytes of SHA256(bytes 0 .. 47)
64  32  HMAC-SHA256(bytes 0 .. 63)
96  X   data xor AES256-CTR key stream generated with nonce == 0
96+X    32  HMAC-SHA256(bytes 0 .. 96 + (X - 1))

AES256-CTR is computed with a 256-bit AES key key_enc, and HMAC-SHA256 is
computed with a 256-bit key key_hmac, where
 scrypt(password, salt, N, r, p, 64) == [key_enc][key_hmac]

我可以安全地重複使用密碼來加密不同的文件嗎?我擔心 nonce 設置為 0,我知道在 CTR 模式下重用密鑰是一個很大的禁忌。但是,密鑰是由 scrypt 生成的,它使用隨機生成的鹽。這足以緩解重複使用密碼片語和固定隨機數的問題嗎?

如果您重複使用密鑰/iv,點擊率是不安全的。由於鹽是隨機的,因此每次加密時都會派生不同的加密密鑰。因此,即使它總是使用零 IV 也是安全的。當然,密碼必須足夠強大以抵抗暴力攻擊。

引用自:https://crypto.stackexchange.com/questions/72689