【发布时间】:2016-03-11 11:20:53
【问题描述】:
我已经开始使用RNCryptor,它将自己描述为“适用于 iOS 和 Mac 的 CCCryptor(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
}
我有几个问题:
- 如果用户无权访问加密密钥,但有多个字符串使用他们有权访问的相同加密密钥加密,他们是否能够弄清楚加密密钥是什么?
- 如果用户知道其中一个字符串的内容,例如“测试字符串”,他们是否能够使用该知识找出加密密钥,从而访问其他字符串?
- 如果 2 是肯定的,是否会在每个字符串的末尾添加一系列随机字符(比如说 20 个字符)来保护我免受这种类型的攻击?如果有人知道这一点,他们是否可以轻松删除最后 20 个字符并解密剩余的字符串?
【问题讨论】:
-
蛮力攻击在计算上通常非常昂贵,因此对于“正常使用”它应该很好。对于更健壮的系统,请尝试使用异步加密。我也建议你在security.stackexchange.com 中提问,他们可能有更多的话题。
-
针对 AES 的蛮力攻击不仅计算量大而且不可行,如果使用随机密钥就不必担心。
-
使用异步密钥(公钥-私钥),en.wikipedia.org/wiki/Public-key_cryptography
-
非异步,非对称。而且它并不比密钥加密更“强大”。它“只是”使密钥管理更容易。
-
非对称加密一般不用于加密数据,因为数据的大小受限于密钥大小,而且速度很慢。优点是有单独的密钥来加密和解密。
标签: ios encryption aes rncryptor