在android中,有一种方法可以知道密钥对中的公钥是否在TEE内部生成,因此是否由硬件支持(https://source.android.com/security/keystore/attestation)。我找不到在iOS中执行此操作的方法。有谁知道有办法吗?
注意:与此同时,我的答案不再是最新的。请参阅上面 Tolga Okur 在 2020 年 6 月 23 日的回答。出于历史目的,我不会删除它。
我不知道有直接类似的可能性,但如果您的应用程序运行在未越狱的设备上,您可以创建密钥并将其存储在 iOS 设备的 Secure Enclave 内,并确保它们安全存储并且不会受到损害。请注意,您只能存储 256 位椭圆曲线私钥。然后您可以从秘密密钥中获取公钥,例如通过SecKeyCopyPublicKey。
TrailOfBits 创建了一个示例项目,您可以在其中查找与 Secure Enclave API 的更多交互。
Secure Enclave 本身受到安全启动链的保护,以确保其单独的软件经过 Apple 验证和签名。请参阅: https: //www.apple.com/business/docs/iOS_Security_Guide.pdf