Sicherheit von Schlüsselbunddaten

Viele Apps müssen Passwörter und andere kurze, aber vertrauliche Datenfragmente (z. B. Schlüssel und Anmelde-Token) verarbeiten. Der Schlüsselbund stellt eine sichere Methode zum Speichern dieser Elemente zur Verfügung. Die verschiedenen Apple-Betriebssysteme verwenden unterschiedliche Mechanismen, um die Sicherheitsgarantien zu erzwingen, die den unterschiedlichen Sicherheitsklassen des Schlüsselbunds zugeordnet sind. Auf Geräten mit macOS wird Datensicherheit nicht direkt verwendet, um diese Sicherheitsgarantien zu erzwingen.

Übersicht

Schlüsselbundobjekte werden mithilfe zweier AES-256-GCM-Schlüssel verschlüsselt: eines Tabellenschlüssels (Metadaten) und eines pro Zeile erzeugten Schlüssels (SecretKey). Die Metadaten des Schlüsselbunds (alle Attribute außer kSecValue) werden zum schnellen Suchen mit dem Metadatenschlüssel verschlüsselt, während der geheime Wert (kSecValueData) mit dem geheimen Schlüssel (secretkey) verschlüsselt wird. Der Metadatenschlüssel wird von der Secure Enclave geschützt, aber im Anwendungsprozessor zwischengespeichert, um schnelle Anfragen an den Schlüsselbund zuzulassen. Der Geheimschlüssel erfordert immer einen Durchlauf durch die Secure Enclave.

Der Schlüsselbund ist als SQLite-Datenbank implementiert, die im Dateisystem gespeichert wird. Es gibt nur eine Datenbank, und der securityd-Daemon legt fest, auf welche Schlüsselbundelemente ein Prozess oder eine App zugreifen kann. Zugriffe auf die APIs des Schlüsselbunds resultieren in Anfragen an den Daemon, der wiederum die Berechtigungen „keychain-access-groups“, „application-identifier“ und „application-group“ abfragt. Anstatt den Zugriff auf einen einzelnen Prozess einzuschränken, ermöglichen es Zugriffsgruppen, Schlüsselbundeinträge zwischen Apps zu teilen.

Schlüsselbundeinträge können nur zwischen Apps desselben Entwicklungsteams gemeinsam genutzt werden. Für die gemeinsame Nutzung von Schlüsselbundeinträgen werden Apps anderer Anbieter angewiesen, Zugriffsgruppen mit einem Präfix zu verwenden, das ihnen durch das Apple-Entwicklerprogramm über Anwendungsgruppen zugewiesen wurde. Das Präfix als Erfordernis und die Einzigartigkeit der Anwendungsgruppe werden über die Codesignierung, die Bereitstellungsprofile und das Apple-Entwicklerprogramm sichergestellt.

Die Schlüsselbunddaten werden mit einer Klassenstruktur geschützt, die der Klassenstruktur ähnelt, die für die Datensicherheit bei Dateien zum Einsatz kommt. Diese Klassen weisen ähnliche Verhaltensweisen wie die Datensicherheitsklassen für Dateien auf, verwenden aber separate Schlüssel und Funktionen.

Verfügbarkeit

Sicherheit von Dateidaten

Sicherheit von Schlüsselbunddaten

Wenn entsperrt

NSFileProtectionComplete

kSecAttrAccessibleWhenUnlocked

Wenn gesperrt

NSFileProtectionComplete

UnlessOpen

Nach erstem Entsperren

NSFileProtectionComplete

UntilFirstUserAuthentication

kSecAttrAccessibleAfterFirstUnlock

Immer

NSFileProtectionNone

kSecAttrAccessibleAlways

Code aktiviert

kSecAttrAccessibleWhen

PasscodeSetThisDeviceOnly

Apps, die Dienste für die Hintergrundaktualisierung verwenden, können kSecAttrAccessibleAfterFirstUnlock für Schlüsselbundobjekte nutzen, auf die bei Hintergrundaktualisierungen zugegriffen werden muss.

Die Klasse kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly verhält sich ähnlich wie die Klasse kSecAttrAccessibleWhenUnlocked, ist aber nur verfügbar, wenn das Gerät mit einem Gerätecode konfiguriert wurde. Diese Klasse existiert nur im systemeigenen Keybag. Sie:

  • wird nicht mit dem iCloud-Schlüsselbund synchronisiert,

  • wird nicht gesichert,

  • wird nicht in Escrow-Keybags integriert.

Wenn der Gerätecode entfernt oder zurückgesetzt wird, werden diese Objekte unbrauchbar, da die Klassenschlüssel verworfen werden.

Andere Schlüsselbundklassen besitzen ein „Nur dieses Gerät“-Gegenstück, das immer mit der UID geschützt wird, wenn eine Kopie bei der Sicherung des Geräts erstellt wird. Dadurch wird es bei der Wiederherstellung auf einem anderen Gerät nutzlos. Apple hat Sicherheit und Benutzerfreundlichkeit sorgfältig abgewogen und Schlüsselbundklassen gewählt, die von der Art der zu sichernden Informationen und davon abhängen, zu welchem Zeitpunkt iOS, iPadOS und visionOS darauf zugreifen müssen.

Sicherheit von Schlüsselbunddatenklassen

Die unten aufgeführten Sicherheitsklassen werden für Schlüsselbundobjekte erzwungen.

Objekt

Zugänglich

Schlüssel für Handoff-Ankündigungen

Nach erstem Entsperren

iCloud-Token

Nach erstem Entsperren

iMessage-Schlüssel

Nach erstem Entsperren

LDAP, CalDAV, CardDAV

Nach erstem Entsperren

Mail-Accounts

Nach erstem Entsperren

Microsoft Exchange ActiveSync-Accounts

Nach erstem Entsperren

Account-Token für soziale Netzwerke

Nach erstem Entsperren

VPN-Passwörter

Nach erstem Entsperren

WLAN-Passwörter

Nach erstem Entsperren

Homeshare-Passwörter

Wenn entsperrt

Safari-Lesezeichen

Wenn entsperrt

Safari-Passwörter

Wenn entsperrt

Finder-/iTunes-Backup

Wenn entsperrt, nicht-migrierend

VPN-Zertifikate

Nach erstem Entsperren; nicht-migrierend

Apple Push-Benachrichtigungsdienst-Token (APNs)

Immer, nicht-migrierend

Bluetooth-Schlüssel

Immer, nicht-migrierend

iCloud-Zertifikate und privater Schlüssel

Immer, nicht-migrierend

SIM-PIN

Immer, nicht-migrierend

Token für „Wo ist?

Immer

Voicemail

Immer

In macOS sind alle Schlüsselbundobjekte, die von Konfigurationsprofilen installiert wurden, immer verfügbar, nachdem FileVault entsperrt wurde. In iOS, iPadOS und visionOS hängt die Verfügbarkeit von Schlüsselbundobjekten, die von einem Konfigurationsprofil installiert wurden, davon ab, um welche Art es sich beim jeweiligen Schlüsselbundobjekt handelt, wie auf es verwiesen wird und wann es installiert wurde. Schlüsselbundobjekte, die über ein Konfigurationsprofil installiert wurden, sind standardmäßig nach dem ersten Entsperren verfügbar und nicht-migrierend. In den folgenden Fällen ist ein über ein Konfigurationsprofil installiertes Schlüsselbundobjekt jedoch immer verfügbar:

  • Es wurde vor einem Upgrade auf iOS 15 oder iPadOS 15 (oder neuer) installiert

  • Es ist ein Zertifikat (und keine Identität)

  • Es ist eine Identität, auf die von IdentityCertificateUUID in einer com.apple.mdm-Payload verweisen wird

Schlüsselbundzugriffssteuerung

Schlüsselbunde können Zugriffssteuerungslisten (ACLs) verwenden, um Richtlinien für Zugriffs- und Authentifizierungsanforderungen festzulegen. Objekte können mittels Bedingungen die Anwesenheit der Benutzer:innen für den Zugriff auf sie zur Voraussetzung machen, indem sie festlegen, dass der Zugriff nur möglich ist, wenn sich Benutzer:innen per Optic ID, Face ID, Touch ID oder durch die Eingabe des Gerätecodes oder -passworts authentifizieren. Der Zugriff auf Objekte kann auch eingeschränkt werden, indem festgelegt wird, dass die Optic ID-, Face ID- oder Touch ID-Registrierung seit dem Hinzufügen des Objekts nicht geändert wurde. Mit dieser Einschränkung lässt sich verhindern, dass ein Angreifer seinen eigenen Fingerabdruck hinzufügt, um so auf ein Objekt im Schlüsselbund zuzugreifen. ACLs werden in der Secure Enclave evaluiert und nur dann an den Kernel weitergegeben, wenn die angegebenen Einschränkungen erfüllt sind.

Schlüsselbundarchitektur in macOS

macOS bietet außerdem Zugriff auf den Schlüsselbund, in dem Benutzernamen und die zugehörigen Passwörter sowie digitale Identitäten, Verschlüsselungsschlüssel und geschützte Notizen sicher und bequem gespeichert werden können. Der Zugriff auf den Schlüsselbund erfolgt durch das Öffnen der App „Schlüsselbundzugriff“ im Pfad /Applications/Utilities. Mit dem Schlüsselbund entfällt für Benutzer:innen die Notwendigkeit, die Anmeldeinformationen für jede Ressource eingeben oder sich überhaupt merken zu müssen. Für alle Mac-Benutzer:innen wird ein anfänglicher Standardschlüsselbund erstellt. Benutzer:innen haben aber die Möglichkeit, für spezifische Zwecke andere Schlüsselbunde zu erstellen.

Ergänzend zu den benutzerspezifischen Schlüsselbunden nutzt macOS weitere, auf Systemebene angelegte Schlüsselbunde, um Authentifizierungswerte zu speichern, die nicht benutzerspezifisch sind. Dazu gehören zum Beispiel Anmeldeinformationen für Netzwerke und PKI-Identitäten (Public Key Infrastructure). Einer dieser Schlüsselbunde – System Roots – ist unveränderlich. Darin werden für die Internet-PKI genutzte Root-Zertifikate von Zertifizierungsstellen (CA) gespeichert, die die Grundlage für gängige Tätigkeiten wie Online-Banking und E-Commerce bilden. Auf verwalteten Mac-Computern können Benutzer:innen in ganz ähnlicher Weise von einer internen Zertifizierungsstelle bereitgestellte Zertifikate implementieren, um interne Sites und Dienste zu validieren.

Veröffentlichungsdatum: 19. Dezember 2024
Morty Proxy This is a proxified and sanitized view of the page, visit original site.
Hilfreich?
Zeichenbeschränkung: 250
Die maximal zulässige Anzahl von Zeichen beträgt 250.
Vielen Dank für Ihr Feedback.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.