Aes
將 AES-CTR 與 scrypt 一起使用時重用密碼是否安全?
我想用
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 也是安全的。當然,密碼必須足夠強大以抵抗暴力攻擊。