【问题标题】:If a user has access to multiple encrypted pieces of data with AES encryption, would they be able to guess the encryption key?如果用户可以访问多个使用 AES 加密的加密数据,他们是否能够猜出加密密钥?
【发布时间】: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
}

我有几个问题:

  1. 如果用户无权访问加密密钥,但有多个字符串使用他们有权访问的相同加密密钥加密,他们是否能够弄清楚加密密钥是什么?
  2. 如果用户知道其中一个字符串的内容,例如“测试字符串”,他们是否能够使用该知识找出加密密钥,从而访问其他字符串?
  3. 如果 2 是肯定的,是否会在每个字符串的末尾添加一系列随机字符(比如说 20 个字符)来保护我免受这种类型的攻击?如果有人知道这一点,他们是否可以轻松删除最后 20 个字符并解密剩余的字符串?

【问题讨论】:

  • 蛮力攻击在计算上通常非常昂贵,因此对于“正常使用”它应该很好。对于更健壮的系统,请尝试使用异步加密。我也建议你在security.stackexchange.com 中提问,他们可能有更多的话题。
  • 针对 AES 的蛮力攻击不仅计算量大而且不可行,如果使用随机密钥就不必担心。
  • 使用异步密钥(公钥-私钥),en.wikipedia.org/wiki/Public-key_cryptography
  • 非异步,非对称。而且它并不比密钥加密更“强大”。它“只是”使密钥管理更容易。
  • 非对称加密一般不用于加密数据,因为数据的大小受限于密钥大小,而且速度很慢。优点是有单独的密钥来加密和解密。

标签: ios encryption aes rncryptor


【解决方案1】:

攻击者所能做的就是暴力破解密钥,这不是一个现实的提议,而且在知道多条消息的情况下也不会变得更容易(除非 AES 中存在一些我们不知道的弱点会产生“模式”)。

您可能想知道,如果攻击者能够访问许多截获(甚至解密)的消息,他是否还有其他优势。例如,能够猜测明文是否与之前的消息相似甚至相同。

AES 包括设置“初始化向量”。

通常,您为每条消息设置一个随机 IV,并将其与加密消息一起发送。您的图书馆也在这样做。结果是没有两条消息以完全相同的方式加密。即使您发送相同的明文三次,它也会以三个不同的密文结束(与三个不同的消息无法区分)。与“腌制”相同。

是否会在每个字符串的末尾添加一系列随机字符(比如说 20 个字符)来保护我免受这种类型的攻击?

随机 IV 机制使这变得不必要。

就其有效性而言,AES 是一种分组密码。早期块的输出会影响后面块的输出,但反之则不然。所以最后的随机填充只会改变最后一个块。如果有的话,你会想在开头填充你的字符串。但同样,算法本身(如果使用得当)具有处理这些问题的机制(以 IV、块链接和块填充的形式)。

【讨论】:

  • 你能告诉我们没有初始化向量或使用固定初始化向量会发生什么吗?显然,我可以弄清楚您发送了两条相同的消息,或者例如您发送了两条消息,其中前 n 个字节相同;我还能得到更多吗?
  • 我相信这就是它的程度。您可以判断两条消息的开头是否相同(或完全相同),而无需解密它们。不应该对您的蛮力尝试产生任何影响(所以也许我的回答对此有点困惑)。攻击者应该也知道 IV(因为它通常包含在传输本身中)。
猜你喜欢
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-16
  • 2012-07-20
  • 1970-01-01
  • 2014-10-03
相关资源
最近更新 更多