Ios 如何在iPhone上安全地存储AES密钥

Ios 如何在iPhone上安全地存储AES密钥,ios,security,commoncrypto,Ios,Security,Commoncrypto,因此,我打算在iPhone应用程序上实现AES数据加密,当时我对如何存储加密密钥感到困惑。我可以很容易地使用用户输入的密码加密数据,即加密密钥。但是,如果我未加密地存储密钥,则加密是无用的,因为任何具有访问权限的人都可以使用现成的加密密钥轻松地解密数据。我可以对密钥进行加密,但是会有另一个未加密的密钥漂浮在周围,有人可以沿着链向下搜索数据。很明显,我无法存储密钥,因此我认为我可以让密钥只存在于用户的头脑中。这将是非常安全的,但我无法检查解密是否正确,如果用户忘记密码,所有数据都将丢失,这是不可接

因此,我打算在iPhone应用程序上实现AES数据加密,当时我对如何存储加密密钥感到困惑。我可以很容易地使用用户输入的密码加密数据,即加密密钥。但是,如果我未加密地存储密钥,则加密是无用的,因为任何具有访问权限的人都可以使用现成的加密密钥轻松地解密数据。我可以对密钥进行加密,但是会有另一个未加密的密钥漂浮在周围,有人可以沿着链向下搜索数据。很明显,我无法存储密钥,因此我认为我可以让密钥只存在于用户的头脑中。这将是非常安全的,但我无法检查解密是否正确,如果用户忘记密码,所有数据都将丢失,这是不可接受的

本质上,如何安全地存储AES的加密密钥


我相信这种情况以前也遇到过,正如其他问题所显示的那样,但它们似乎是以网络为中心的。我对以iPhone为中心的解决方案感兴趣,可能使用CommonCrypto?

我在项目中使用了一个不错的开源工具包,用于在密钥链中存储安全数据


也许您有兴趣将其作为通用服务保存在钥匙链中?钥匙链服务有一个很好的Objective-C包装器,名为。

正如您所说,不要存储密码。您仍然可以单独存储密码的散列,并根据该散列进行测试,以查看密码是否正确。

谢谢您的回答。如果用户忘记了密码怎么办?@Regan,他们必须删除应用程序数据并重新开始。我认为这是标准功能。如果你忘记了iPhone上的密码(解锁PIN),你知道你的选择是什么吗?重置手机。您将丢失任何未同步/保存到其他位置的内容。对于系统而言,忘记密码与攻击者不知道密码是一样的。你在加密什么?你能在服务器上存储副本吗?