2012-07-23 84 views
1

因此,当我对如何存储加密密钥感到困惑时,我正在开始在iPhone应用程序上实现AES加密数据。我可以使用用户输入的密码(加密密钥)轻松加密数据。但是,如果我将密钥存储在未加密的密钥中,那么加密是无用的,因为具有访问权限的任何人都可以使用容易获得的加密密钥轻松解密数据。我可以对密钥进行加密,但是随后会有另一个未加密的密钥在附近浮现,并且有人可能只是沿着链条向下传输数据。看起来很清楚,我不能存储密钥,所以我认为我只能在用户的脑海中才能拥有密钥。这将是非常安全的,但我无法检查解密是否正常工作,并且在用户忘记密码的情况下所有数据都将丢失,这是不可接受的。如何在iPhone上安全地存储AES密钥

本质上,我该如何安全地存储AES加密密钥?

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

回答

1

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

+0

感谢您的回答。如果用户忘记密码呢? – Regan 2012-07-24 22:45:03

+0

@Regan,他们将不得不删除应用程序数据并重新开始。我认为这是标准功能。如果您在iPhone上忘记了密码(解锁PIN),您知道您的选择是什么吗?重置手机。你失去了任何未同步/保存在别处的东西。对于系统,您忘记密码与不知道密码的攻击者相同。你在加密什么?你能否在服务器上存储副本? – 2012-07-25 13:23:08

1

也许你有兴趣在Keychain保存此作为一个通用的服务? Keychain服务有一个很好的Objective-C包装,叫做SSKeychain

相关问题