【问题标题】:Is it possible to use AES128 with GCM mode on iOS?是否可以在 iOS 上使用 AES128 和 GCM 模式?
【发布时间】:2014-07-04 02:20:20
【问题描述】:

所以我对 stackoverflow 天才的问题是:如果有办法(本机、库、框架等)使用 AES 加密数据(最好是 128,但也可以是 256)使用强经过身份验证的加密算法,比如说GCM模式

问题很简短,我做了一些研究,我只找到了一个似乎支持它的库(RNCryptor),但它似乎也使用 密码而不是密钥(就像你提供密码并且图书馆制作了密钥),我不太喜欢这样,我更喜欢自己管理我的密钥

我还查看了 CommonCryptor.h 并发现了那行,在我看来,这似乎是通用加密器源代码中 GCM 的唯一参考(但我可能错了,实际上我可能错了):

case kCCModeGCM: if((ref->symMode[direction].gcm = getCipherMode(cipher, mode, direction).gcm) == NULL) return kCCUnimplemented;

提前致谢!

【问题讨论】:

  • 我们的 SecureBlackbox 支持 AES-GCM 并且可用于 iOS。但这是未记录的功能,因此您需要在我们的论坛上索取示例。

标签: ios encryption cryptography aes aes-gcm


【解决方案1】:

RNCryptor 使用 HMAC,它被认为是一种创建身份验证标签的强密码方法。它也是开源的。所以我会认真考虑为此克隆 RNCryptor 代码(保持标题中的版权完整!)。

基于密码的加密包括派生密钥(可能还有 IV),然后执行加密和身份验证。所以你应该通过简单地删除密钥派生部分来获得很长的路要走。

唯一不起作用的情况是密钥派生代码被编入执行加密/身份验证的部分,但 RNCryptor 似乎并非如此。

【讨论】:

  • 谢谢伙计!我听从了您的建议,实际上在 RNCryptor 中可以使用密钥并跳过密钥派生。然而,RNCryptor 不使用 GCM,而是使用 CBC,然后使用 HMAC+SHA1,但这符合我的要求。谢谢指导!
【解决方案2】:

感谢 owlstead 建议我深入研究 RNCryptor 并找到解决方案。

首先,经过大量谷歌搜索,Zaph 似乎是对的,iOS 不提供 GCM,但在 iOS 中使用它。参考:iOS Security feb 2014

其次,RNCryptor 不使用 GCM,而是在 CBC 模式下使用 AES256(密码块链接),这很好,然后使用 HMAC+SHA1 进行身份验证。这符合我的要求。

为了使用密钥加密并跳过密码推导部分,RNCryptor 提供了这个功能:

NSData *encryptedData = [RNEncryptor encryptData:yourData
                                        withSettings:kRNCryptorAES256Settings
                                       encryptionKey:encryptionKey
                                             HMACKey:HMACKey
                                               error:&error];

然后用这个解密

NSData *decryptedData = [RNDecryptor decryptData:encryptedData withEncryptionKey:encryptionKey HMACKey:HMACKey error:&decryptionError];

RNCryptor 还提供密钥的随机生成方法。

注意:使用 AES256 时要小心,密钥计划可能很弱:Schneier article 但没有戏剧性,还有其他关于 AES256 的观点是专业的:Colin Percival article

【讨论】:

    【解决方案3】:

    CommonCrypto 中缺少 GCM。有趣的是,Apple 从 ios5 开始就使用 GCM 作为钥匙串。

    【讨论】:

    猜你喜欢
    • 2016-06-18
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2018-02-14
    • 2012-11-25
    相关资源
    最近更新 更多