Zugriff auf Daten aus der iOS Keychain über die Apple Watch

21.04.2015 / 0 Comments

Was ist die Keychain (Schlüsselbund)?

Das Speichern vertraulicher Daten auf dem iPhone sollte über den Schlüsselbund (Keychain) stattfinden. Der Schlüsselbund ist ein geschützter Bereich auf dem iPhone, der es nur Ihrer App erlaubt, die Daten zu lesen und dies auch nur unter bestimmten Zugangsbedingungen. Wenn Sie nun die Unterstützung der Apple Watch Ihrer App hinzufügen, müssen Sie vermutlich die Zugriffsmethode auf Elemente im Schlüsselbund verändern. So können Sie Ihre Daten aus der iOS-Keychain auch über die Apple Watch abrufen.

Möglichkeiten des Zugriffs auf die Keychain (Schlüsselbund)

Es gibt sechs verschiedene Zugriffskonstanten, um Elemente in der Keychain (Schlüsselbund) abzuspeichern.

Diese Konstanten bestimmen, wann auf die Daten über Ihre App oder über die Erweiterung Ihrer App (z.B. die Erweiterung für die Apple Watch) zugegriffen werden darf. Es gibt drei unterschiedliche Zugriffsmethoden:

1) Der Zugriff wird immer erlaubt (kSecAttrAccessibleAlways und kSecAttrAccessibleAlwaysThisDeviceOnly)

Dieser Modus sollte nicht verwendet werden und wird auch nicht von Apple empfohlen, da Sie den Zugriff auf die Elemente in der Keychain soweit wie möglich beschränken sollten.

2) Der Zugriff wird nur erlaubt, wenn das Gerät von dem Nutzer entsperrt wurde (kSecAttrAccessibleWhenUnlocked und kSecAttrAccessibleWhenUnlockedThisDeviceOnly).

Dies ist vermutlich die Option, die Sie gerade ohne die Apple Watch verwenden. Diese Methode wird empfohlen, wenn Sie auf die Keychain mit einer App im Vordergrund zugreifen möchten. Ebenso ist es der voreingestellte Wert für den Zugang zur Keychain.

3) Der Zugriff wird von dem ersten Freischalten bis zum Neustart des Geräts erlaubt (kSecAttrAccessibleAfterFirstUnlock und kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly).

Dies ist die Option, die wir für den Zugang für die Apple Watch benötigen, da er uns erlaubt, die Elemente in der Keychain zu lesen, während unsere App im Hintergrund läuft.

Jede dieser Methoden hat auch einen zweiten entsprechenden „This Device Only“-Modus, der festlegt, dass dieses Datenelement nicht mithilfe eines Backups auf ein neues Gerät übertragen werden kann.

Zugang zur Keychain über die Apple Watch (WatchKit-Erweiterung)

Wenn Sie nun die Apple Watch benutzen und Ihr iPhone in der Tasche lassen möchten, müssen Sie ihr Background-Zugriff auf die Keychain gewähren. Das bedeutet, dass Sie kSecAttrAccessibleAfterFirstUnlock verwenden müssen, (oder kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly um zu vermeiden, dass es im Backup beinhaltet ist), um Ihre Elemente in der Keychain zu schützen.

Haben Sie bereits Elemente in der Keychain (Schlüsselbund) mit einer  kSecAttrAccessibleWhenUnlocked-Erreichbarkeit, müssen Sie diese einmal neu speichern, wenn sich Ihre App im Vordergrund öffnet. Lesen Sie die Elemente aus der Keychain ein und löschen Sie sie. Danach speichern Sie sie mit der neuen Zugriffsoption zurück.

Quellcode

Hier finden Sie einen Beispielcode, um einen privaten Schlüssel in der Keychain zu sichern, auszulesen (und gleichzeitig zu überprüfen, ob er in der Keychain existiert) und zu löschen.

Speichern des privaten Schlüssels:

Auslesen des privaten Schlüssels (inklusive der Überprüfung, ob das Element existiert):

Löschen des privaten Schlüssels:

Letzte Blog Einträge, Neuigkeiten & Funktionen

Crowd SSO

21.09.2017

Read More
Do NOT follow this link or you will be banned from the site!