iOS硬件支持的密钥认证

11
2个回答

3

1
该服务不允许将经过认证的密钥用于通用加密(仅用于签署真实性挑战),我想。从这个意义上说,它与Android密钥认证不匹配。 - lxgr
2
如果我理解正确的话,这项服务允许您验证应用程序的完整性,因此,如果您知道(a) 应用程序未被修改,(b) 它正在运行在未经修改的苹果硬件+操作系统上,以及(c) 您使其在安全隔离区生成密钥-那么您可以确信它生成后发送到您的服务器的公钥确实是由硬件支持的。但这里的限制是,您将无法向其他人证明它。 - kirelagin

0

注意:与此同时,我的答案已经过时。请参考Tolga Okur在2020年6月23日之前的答案。出于历史目的,我不会删除它。


我不知道有直接类似的可能性,但如果您的应用程序存在于未越狱的设备上,您可以创建密钥并将其存储在iOS设备的安全区域内,确保它们被安全地存储且无法被破解。请注意,您只能存储256位椭圆曲线私钥。然后,您可以通过秘密密钥获取公钥,例如通过SecKeyCopyPublicKey

TrailOfBits创建了一个示例项目,您可以在其中查找更多与安全区域API的交互。

安全区域本身受到安全引导链的保护,以确保其单独的软件已由Apple验证和签名。 请参阅:https://www.apple.com/business/docs/iOS_Security_Guide.pdf


8
你所解释的是如何在安全执行环境内生成密钥对,但我想确保密钥是从服务器端内部安全执行环境中生成的。 Android通过使用来自供应商并存储在安全元件内部的密钥签署公钥来解决这个问题。 - arnau
是的,我知道,很遗憾苹果没有提供这个可能性。至少我不知道有这个功能,文档也没有提供任何关于这个主题的提示。 请注意,在Android中,认证是一个相对较新的功能,因为它需要API级别24(Android 7,别名Nougat)。 - David Artmann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接