Ich versuche, SecKeyGeneratePair zu verwenden, und ich habe das Attribut auf kSecAttrTokenIDSecureEnclave sowie lassen Sie es leer. Gemäß https://developer.apple.com/reference/security/ksecattrtokenid, wenn kSecAttrTokenID nicht festgelegt ist, sollte das Element in der normalen Schlüsselbund-DB gespeichert werden. Unabhängig davon, ob ich es einstelle, ändert sich die Größe der keychain-2.db Datei nicht. Ich bin jedoch in der Lage, SecKeyRawSign() mit dem generierten privaten Schlüssel ohne Fehler zu verwenden. Wo ist dann der private Schlüssel gespeichert?Wo speichert SecKeyGeneratePair das Schlüsselpaar?
Antwort
Wenn Sie kSecAttrTokenIDSecureEnclave setzen, wird der echte private Schlüssel irgendwo in der sicheren Enklave gespeichert, und der private Schlüssel, der Ihnen zurückgegeben wird, bezieht sich nur auf den echten privaten Schlüssel in der sicheren Enklave. Was die Verwendung des Schlüssels betrifft, macht dies jedoch keinen Unterschied. Sie verwenden den SecKey, den Sie auf die gleiche Weise erhalten haben.
Wenn Sie das gleiche Schlüsselpaar bei fortlaufenden Durchläufen Ihrer Anwendung verwenden möchten, müssen Sie den privaten Schlüssel, den Sie in der Schlüsselkette erhalten haben, beim erneuten Starten der App aus dem Schlüsselbund speichern. ob Sie dieses Token verwenden oder nicht. Wenn Sie das nicht tun, haben Sie keinen SecKey, also ist der private Schlüssel irgendwie immer noch in der sicheren Enklave, aber Sie haben keine Möglichkeit mehr, darauf zuzugreifen.
Sieh es so: Normalerweise ist ein SecKey eine Box mit einem Türschlüssel oder einem Autoschlüssel darin. Der SecKey ist jedoch mit kSecAttrTokenIDSecureEnclave eine Box mit einem Stück Papier, das anzeigt, wo sich der echte Schlüssel in der sicheren Enklave befindet. iOS ist clever genug, um beide Arten von Boxen identisch zu behandeln. Sie müssen jedoch jede Art von Box im Schlüsselbund selbst speichern. Wenn du dich nicht um die Box kümmerst, ist sie verschwunden, wenn deine App neu gestartet wird.
- 1. Wo speichert Windows Vista das Profilbild?
- 2. Wo speichert Webmin das Root-MySQL-Passwort?
- 3. Wo speichert Bundler Edelsteine?
- 4. Wo speichert R Pakete?
- 5. Wo speichert AspnetIdentity UserTokens?
- 6. Wo speichert nginx rewrite_log?
- 7. Wo speichert Bazel TenserFlow?
- 8. Wo speichert Bamboo Bereitstellungsumgebungen?
- 9. Wo speichert Woocommerce Bestellungen?
- 10. Wo speichert Subversion?
- 11. Wo speichert Hive Metastore speichert Informationen?
- 12. Wo speichert Eclipse Tastaturbelegungen?
- 13. Wo speichert Git Dateien?
- 14. Wo speichert Node.js Puffer?
- 15. Cocoa - Wo speichert NSCoding?
- 16. Wo speichert Steam Bibliotheksverzeichnisse?
- 17. Wo speichert Eclipse Einstellungen?
- 18. Wo speichert SqlMembershipProvider Zugriffsrollen?
- 19. Wo speichert Moxtra Daten?
- 20. Wo speichert MySQL Datenbankdateien?
- 21. Wo speichert CLR statische Klassen?
- 22. Wo speichert Visual Composer Links?
- 23. Wo speichert Eclipse SSL-Schlüssel?
- 24. Wo speichert GitHub Daten/Dateien?
- 25. Wo speichert CLion ausführbare Dateien?
- 26. Wo speichert TFS UNIT-Testergebnisse?
- 27. Wo speichert aws cli Profilinformationen?
- 28. Wo speichert Linux mein Syslog?
- 29. Android KeyPairGenerator generiert immer das gleiche Schlüsselpaar
- 30. Ansible Amazon EC2. Das Schlüsselpaar existiert nicht