iOS钥匙串使用什么encryptionalgorithm来保护数据?

广泛的谷歌search后,我没有设法find这个问题的答案1 ,这是令人惊讶的,因为'安全通过默默无闻'是不是真的安全… …

有没有可靠的来源回答这个问题(如iOS的authentication应用程序,源代码或类似的)?

1唯一能提及的是它可以使用3DES。

根据这个官方的苹果文件 :

GCM(加罗瓦/计数器模式)中的AES 128encryption;

“通过默默无闻的安全”意味着依靠默默无闻来实现安全。 这并不意味着你没有安全感,只是因为你没有向世界宣传你的安全机制。

苹果估计要自由地改变钥匙链的实施,所以它的encryption不是它的规范的一部分,因为它不需要。

这就是说,我严重怀疑苹果使用3DES,因为他们实际上知道他们在做什么。 我会给他们使用AES的10比1赔率。

一个权威的答案可能只能来自苹果或从反汇编他们的代码的人。

根据钥匙串文档 Keychain服务和其他Mac OS X安全APIbuild立在开源公共数据安全架构(CDSA)及其编程接口Common Common Services Manager(CSSM)上。

关于这方面的更多信息

这里的讨论post引用了官方的苹果文档(目前defunkt)的说法;

钥匙串中的所有密码数据都使用三重数字encryption标准(3DES)进行保护。

我会看看是否可以提出更多的最新/明确的。

更新:

好的,这里有一个官方的OSX文件的副本确认3DES,但是我同意这个实现很可能会改变。

这是否也适用于iOS也需要validation,但考虑到iOS和Lion的协调,我怀疑它更可能。

每个iOS设备在闪存和主系统内存之间的DMApath中都内置了一个专用的AES 256encryption引擎,使得文件encryption效率非常高。在A9或更高版本的A系列处理器上,闪存子系统位于隔离总线上只通过DMAencryption引擎授予对包含用户数据的内存的访问权限。