即使在应用程序卸载后仍存在 Secure Enclave 密钥
Posted
技术标签:
【中文标题】即使在应用程序卸载后仍存在 Secure Enclave 密钥【英文标题】:Secure Enclave keys exists even after app uninstallation 【发布时间】:2018-08-04 12:16:55 【问题描述】:我已使用以下代码片段在 Secure enclave 内生成了密钥,
func generateKeyPair(accessControl: SecAccessControl) throws -> (`public`: SecureEnclaveKeyReference, `private`: SecureEnclaveKeyReference)
let privateKeyParams: [String: Any] = [
kSecAttrLabel as String: privateLabel,
kSecAttrIsPermanent as String: true,
kSecAttrAccessControl as String: accessControl,
]
let params: [String: Any] =
[
kSecAttrKeyType as String: attrKeyTypeEllipticCurve,
kSecAttrKeySizeInBits as String: 256,
kSecAttrTokenID as String: kSecAttrTokenIDSecureEnclave,
kSecPrivateKeyAttrs as String: privateKeyParams
]
var publicKey, privateKey: SecKey?
let status = SecKeyGeneratePair(params as CFDictionary, &publicKey, &privateKey)
guard status == errSecSuccess else
throw SecureEnclaveHelperError(message: "Could not generate keypair", osStatus: status)
return (public: SecureEnclaveKeyReference(publicKey!), private: SecureEnclaveKeyReference(privateKey!))
卸载应用程序后密钥仍然存在,有没有办法从安全飞地中删除密钥?
提前谢谢你:)
【问题讨论】:
你找到方法了吗? 不,我没有找到 【参考方案1】:从设备中删除应用时,不会触发执行代码。对钥匙串的访问取决于用于签署应用程序的配置文件。因此,没有其他应用程序能够访问钥匙串中的这些信息。
https://***.com/a/5711090/7350472
如果您想从 Secure Enclave 中删除密钥,您可以调用:
SecItemDelete(query as CFDictionary)
https://developer.apple.com/documentation/security/1395547-secitemdelete
【讨论】:
以上是关于即使在应用程序卸载后仍存在 Secure Enclave 密钥的主要内容,如果未能解决你的问题,请参考以下文章
Django中的JSONField即使在POST请求后仍保持为空