2015-03-04 8 views
8

Ich habe einen Benutzer Pin im iOS Keychain gespeichert. Für jeden Pin-Versuch verwende ich SecItemCopyMatching, um den Referenzstift abzurufen, und führe dann den Vergleich durch.Check Pin ohne das iOS Keychain zu verlassen

Das Problem ist, dass der abgerufene Referenzstift für eine kurze Zeit in den Arbeitsspeicher der App gelangt. Wenn das Telefon kompromittiert ist, kann der Referenzstift möglicherweise ausgelesen werden.

Gibt es eine Möglichkeit, den PIN-Versuch an den Schlüsselbund zu übergeben und den Schlüsselbund in seiner sicheren Umgebung mit dem Referenzstift vergleichen zu lassen? (Kann das sichere Element diese Art von Sachen tun?)

Antwort

2

Ich denke, dies könnte Ihnen helfen, die endgültige Antwort zu erreichen, da 1Password mit dem gleichen Problem konfrontiert ist.

https://guides.agilebits.com/kb/security/en/topic/touch-id-pin-code-and-ios-keychain

Aber auf das, was ich lese, was Sie wollen, ist vorerst nicht möglich zu erreichen. Die nächste Information, die ich finden konnte, war diese:

What is the correct way to clear sensitive data from memory in iOS?

und diese:

Sensitive Data In Memory

wo man lesen:

Wenn Ihr Gegner die Fähigkeit hat, um beliebigen Code auf Ihrem Ziel Maschine (mit den Debug-Privilegien erforderlich, um einen Prozess abzuladen s Bild), Sie sind alle Arten von verschraubt.

Also meine Antwort ist: Nein, Sie können nicht pin überprüfen, ohne den iOS Keychain zu verlassen.

2

Nein, es kann nicht so gemacht werden, wie Sie vorschlagen. der Schlüsselbund ist ein Speicher

aber ist es wirklich ein Problem, wenn das Element im flüchtigen Speicher ist?
Ich meine .. wenn der Schlüsselbund geöffnet ist, ist es bereits im Speicher (zumindest während der Überprüfung erfolgt)

6

In der Regel speichern Sie eine Einweg-Hash-Passwort mit einem Salz, nicht die tatsächliche Passwort. Fügen Sie zum Überprüfen das Salz hinzu, überprüfen Sie die Zeichenfolge, vergleichen Sie sie mit dem gespeicherten Hash, und wenn sie übereinstimmt, ist sie verifiziert.

Die Stärke ist dann die Stärke des Algorithmus, das Salz und das Passwort.

+0

Problem ist, es ist ein 4-stelliger Pin, so Hashes sind leicht rohe Gewalt. – Randomblue

+2

Sehr wahr. Seltsam, dass du eine PIN als Passwort bezeichnen würdest. Trotzdem ist es besser als nichts. Scheint aber wie ein [x-y Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). –

+0

Sorry! Das Problem ist jetzt genau angegeben. – Randomblue

3

Sie können ein Element als Hash-Pin haben, dann können Sie überprüfen, ob die Elemente vorhanden sind, wenn der Benutzer nach dem Hashing einen Pin eingibt.

Möglicherweise müssen Sie das Element vom Schlüsselbund reinigen, wenn sich der Stift ändert.

Verwandte Themen