Ключи Secure Enclave существуют даже после удаления приложения
Я сгенерировал ключи внутри безопасного анклава, используя следующий фрагмент кода:
func generateKeyPair (accessControl: SecAccessControl) бросает -> (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!))
}
После деинсталляции приложения ключи все еще существуют, есть ли способ удалить ключи из безопасного анклава?
Заранее спасибо:)
0 ответов
При удалении приложения с устройства триггера для выполнения кода нет. Доступ к связке ключей зависит от профиля обеспечения, который используется для подписи приложения. Следовательно, никакие другие приложения не смогут получить доступ к этой информации в связке ключей.
Если вы хотите удалить ключ из Secure Enclave, вы можете позвонить:
SecItemDelete(query as CFDictionary)
https://developer.apple.com/documentation/security/1395547-secitemdelete