我已阅读钥匙串并发现它使用三重 DES。我找不到的是它使用的键控选项。我猜测/希望它的键控选项 1 所有 3 个密码都是唯一的,但如果是这种情况,我只能想到它可以使用的两个密码(来自您的开发证书的用户密码和应用程序 ID)那么第三个密码在哪里从?它是 Apple 的私有密钥吗?
如果它的密钥选项 2(第一个和第三个密钥相同)可能不够安全,我们公司不能依赖它。虽然这听起来有点偏执,但我必须向我们的安全部门证明它足够安全。
由于还没有答案,我想我可能会用我迄今为止发现的东西来回答。
我查看了可用于 OS X 钥匙串的源代码,虽然我不是 100% 确定,因为它有很多,但钥匙串确实在 API 类 -> 第 141 行的 KeyItem.cpp 中使用 3DES。它也有评论在第 150 行的 Import/Export -> SecWrappedKeys.cpp 中,仅 DES 和 3DES 至少用于此类。缺少很多私人课程,所以我只能继续我所看到的。
在 Apple 的钥匙串docos和其他随机技术支持文章中,它声明钥匙串有一个应用程序密码和一个系统生成的密码。如果您更改应用程序的开发证书,它会丢失钥匙串条目,如果您恢复到新手机,钥匙串将不起作用。
从我所看到的钥匙串使用键控选项 1(最强的所有 3 个键都不同)这三个密码将是您解锁手机的密码/默认一个或随机一个,如果没有锁,设备 UDID 或其他等效iPhone 的唯一标识符,第三个是 App ID(忘记了它的名字)。
编辑:鉴于最近在某些网站上演示的漏洞利用,即使用户拥有手机密码,所有 3 个密码似乎都是系统生成的。