我已經開始使用RNCryptor,它將自己描述爲「iOS和Mac的CCCryptor(AES加密)包裝器」。如果用戶可以使用AES加密訪問多個加密的數據片段,他們是否能夠猜測加密密鑰?
我的問題不是特定於iOS,而是更一般。
下面是一些代碼,我可能會使用加密的字符串:
func encryptText(text: String, encryptionKey: String) -> NSData? {
let textData = text.dataUsingEncoding(NSUTF8StringEncoding)
if textData == nil {
return nil
}
let encryptedTextData = RNCryptor.encryptData(textData!, password: encryptionKey)
return encryptedTextData
}
我有幾個擔心:
- 如果用戶無法訪問加密密鑰,但也有多個字符串使用他們有權訪問的相同加密密鑰加密,他們是否能夠找出加密密鑰是什麼?
- 如果用戶知道其中一個字符串的內容,例如「Test String」,他們是否能夠使用該知識找出加密密鑰,從而訪問其他字符串?
- 如果對2,是否會在每個字符串的末尾添加一系列隨機字符(可以說是20個字符)使我免受這種類型的攻擊?如果有人有這些知識,他們是否可以很容易地刪除最後20個字符並解密剩餘的字符串?
蠻力攻擊通常在計算上非常昂貴,所以對於「正常使用」它應該保持良好。對於更強大的系統,請嘗試使用異步加密。我也建議你在http://security.stackexchange.com上提問,他們可能會有更多的討論。 – UlyssesR
針對AES的蠻力攻擊不僅計算昂貴而且不可行,如果使用隨機密鑰,它不是一個問題。 – zaph
使用異步密鑰(公鑰 - 私鑰),https://en.wikipedia.org/wiki/Public-key_cryptography – UlyssesR