我正在尝试使用SecKeyGeneratePair,并且已将该属性设置为kSecAttrTokenIDSecureEnclave以及将其留为空白。根据https://developer.apple.com/reference/security/ksecattrtokenid如果未设置kSecAttrTokenID,则该项目应存储在普通钥匙串数据库中。但是,无论是否设置它,keychain-2.db文件大小都不会更改。然而,我可以在没有任何错误的情况下将SecKeyRawSign()与生成的私钥一起使用。那么私钥在哪里存储?SecKeyGeneratePair在哪里存储密钥对?
0
A
回答
0
如果您设置kSecAttrTokenIDSecureEnclave,那么真正的私钥将存储在安全区域的某个位置,并且返回给您的私钥只是引用安全区域中的真实私钥。但是,就使用密钥而言,它没有任何区别。您以完全相同的方式使用您收到的SecKey。
如果您希望在应用程序的连续运行中使用相同的密钥对(如您最想要的那样),您必须将您收到的私钥存储在密钥链中,并在应用程序再次启动时从钥匙串中检索它,不管你是否使用这个令牌。如果你不这样做,那么你就没有SecKey,所以私钥仍然处于安全飞地,但你失去了访问它的任何方式。
看起来像这样:通常,SecKey是一个带有门钥匙或车钥匙的盒子。但是使用kSecAttrTokenIDSecureEnclave,SecKey是一个里面有一张纸的盒子,它告诉真正的密钥在安全区域的哪个位置。 iOS非常聪明,可以同时处理两种盒子。但是,您需要自行将各种盒子存储在钥匙串中。如果你没有照顾盒子,当你的应用程序重新启动时,它就会消失。
相关问题
- 1. SSL对称密钥存储在哪里?
- 2. 我们在哪里存储密钥/密码/盐进行加密?
- 3. 存储强名密钥的密码在哪里?
- 4. 加密密钥的存储位置在哪里?
- 5. vim在哪里存储自定义密钥映射缓存?
- 6. 在哪里存储jasypt解密密码
- 7. Right_aws ruby gem:我必须在哪里存储AWS访问密钥和密钥?
- 8. 我应该在哪里存储Vault开封和根密钥/密钥?
- 9. 哪里存储加密算法的密钥?
- 10. apk密钥在计算机上存储在哪里?
- 11. 要使用哪种加密算法以及在哪里存储密钥?
- 12. 在PHP中使用AES加密时,应该在哪里存储密码密钥?
- 13. 我应该在哪里存储公钥?
- 14. 哪里存储公钥在Ubuntu的SSH?
- 15. WSO2 API Manager在哪里存储私钥
- 16. C#X509Certificate2:在哪里存储私钥?
- 17. 使用Polymer + Firebase时,在哪里存储密钥?
- 18. 哪里存储api客户端密钥在grails中
- 19. .net MVC中的密钥和IV存储位置在哪里?
- 20. Windows XP在哪里以及如何存储wep/wpa密钥?
- 21. Bitbucket - 在哪里可以找到存储库SSH密钥?
- 22. Eclipse ADT在哪里存储默认密钥库路径?
- 23. 密钥库在哪里?
- 24. 使用SecKeyGeneratePair在iOS中生成密钥对失败,errSecInteractionNotAllowed
- 25. 域密钥 - 在哪里放置私钥?
- 26. 对称密钥存储
- 27. AWS密钥对存储
- 28. HMAC/Javascript - 在哪里存储秘密?
- 29. Webmin在哪里存储根MySQL密码?
- 30. 运行时在哪里存储密码?