4
我搜索了整個網絡,包括這裏在SO上:有很多關於哈希和存儲之前需要密碼密碼的討論。加密:當我甚至根本不存儲密鑰時,是否需要加密密鑰?
如果使用密碼來計算用於加密的密鑰(「基於密碼的加密」):如果您不在密碼存儲區中,該怎麼辦?
- [注:我做看了這麼:Passphrase, Salt and IV, do I need all of these?和Does IV work like salt當然是一個相關的問題:我不知道的初始化向量如何討論也涉及到這方面的問題]
假設:
對於加密
- 用戶進入主密碼
- 這是SHA256散列並且輸出用於AES256加密文件
- 散列是不存儲(和明顯既不是主密碼)
對於解密
- 在使用者進入主密碼
- 這是SHA256散列並且輸出用於解密該文件
- 如果解密成功,密碼是 - 很明顯 - 正確
- 它可能會降低哈希衝突
- 它需要的鹽的可能性進行存儲。
如果鹽丟失/損壞的用戶將不能夠解密了
如何檢查步驟3中成功解密文件:這確實需要的文件部分內容闖出一片天?
- 如果是這樣,有多少假人將一個已知值存儲在加密文件中(這不能總是被阻止 - 攻擊者可能會猜測,例如用戶姓氏在文件的某個地方被加密 - 一個是正確)。
我的問題:
當不存儲除了加密文件本身的東西,有沒有前醃製主密碼的任何好處哈希呢?
注意事項:
明確答案,不儲存,不醃製。另外,我*使用PKCS7填充並檢查:常見的cryptor確實很好地返回錯誤提供了一個錯誤的關鍵;不需要檢查文件內容。 – Wouter
更新:後者不再是真實的。 CCCrypt現在總是返回成功。 [Apple Dev Forums](https://devforums.apple.com/message/920949#920949) – Wouter
如果設置了「NoPadding」,則會接受任何垃圾。最好檢查你的設置,然後刻意用不正確的密鑰解密。 – rossum