Ключи 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!))
    }

После удаления приложения ключи все еще существуют. Есть ли способ удалить ключи из безопасного анклава?

Заранее спасибо :)


person vineeth    schedule 04.08.2018    source источник
comment
вы нашли способ?   -  person Johnny    schedule 15.12.2018
comment
нет не нашел   -  person vineeth    schedule 10.01.2019


Ответы (1)


Нет триггера для выполнения кода, когда приложение удаляется с устройства. Доступ к цепочке ключей зависит от профиля обеспечения, который используется для подписи приложения. Поэтому никакие другие приложения не смогут получить доступ к этой информации в связке ключей.

https://stackoverflow.com/a/5711090/7350472

Если вы хотите удалить ключ из Secure Enclave, вы можете позвонить:

SecItemDelete(query as CFDictionary)

https://developer.apple.com/documentation/security/1395547-secitemdelete

person Martin Žid    schedule 20.03.2019