Encryption
一遍又一遍地共享相同的加密數據是否存在加密風險?
正常場景
假設我有要加密的秘密文件。生成的容器將被共享並可能被攔截。不好,但沒關係 - 這就是我首先加密數據的原因。
有問題的場景
但是,現在,我將再次加密並共享相同的數據。使用相同的密碼。容器將不同(因為密鑰已更改),但其中的數據是相同的。攻擊者知道這一點。從加密的角度來看,這是否會對任何漏洞開放加密?
請原諒我缺乏技術術語。我猜這將是僅密文攻擊?但是以某種方式修改為加密之前的每個明文(我的數據,我的文件)都是相同的?
(這是一個普遍的問題,加密的容器可能來自 dm-crypt/LUKS 或 VeraCrypt 甚至是加密的 ZIP 存檔。但我認為它們都使用 256 位 AES。)
…但其中的數據是相同的。攻擊者知道這一點。從加密的角度來看,這是否會對任何漏洞開放加密?
不,如果是這樣,那麼加密就不是很有用了。
事實上,現代加密方案旨在確保安全,即使:
對手已經知道密文所代表的明文(已知明文攻擊 - KPA)
- “安全”意味著他們無法恢復密鑰或從其他密文中學習任何資訊
攻擊者可以選擇明文,送出加密,得到密文(選擇明文攻擊-CPA)
攻擊者可以選擇密文,送出解密,得到結果明文(選擇密文攻擊-CCA)
即使在所有這些情況下,現代密碼也將保持安全。它不僅可以保護明文不被發現,而且任何對手都無法以不可忽略的機率將密文與隨機比特流區分開來。
只要加密提供者是:
- 使用有能力的算法(例如問題中提到的 AES-256)
- 在適當的操作模式下(
例如,經過身份驗證的模式,如 GCM)(編輯:AEAD 在這種情況下顯然不相關)- 並適當地處理初始化向量
那麼消息將與保護它們的密碼一樣安全。密碼片語的安全程度取決於它的長度/複雜程度,以及密鑰是如何從中派生的。