2016-07-07 16 views
0

Ich baue eine schnelle App und habe ein Benutzerkonto. Ich muss ihre Informationen (Passwort) sicher aufbewahren, ich habe gelesen, dass die Verwendung von gesalzenem Hash für das Passwort sicher ist, aber ich wollte wissen, ob es empfohlen wird, dieses zu verwenden und das Hash-Passwort in meinem iCloud Kit (meine Datenbank)Was kann ich tun, um das Passwort sicher in swift zu speichern?

zu speichern

Antwort

2

Die Empfehlung, wenn Sie das Original benötigen, sollte Passwörter im Schlüsselbund speichern. Wenn Sie nur einen Hash zur Verifizierung speichern müssen, salzen Sie ihn und speichern Sie ihn als SHA-256 HASH (und behalten Sie das Salz im Schlüsselbund, möglicherweise auch das Hash).

Wenn Sie Kennwörter in die Datenbank eines iOS-Geräts eingeben müssen und aus welchem ​​Grund auch immer der Schlüsselbund nicht funktioniert, sollten Sie SQLCipher verwenden, und der Benutzer muss das DB-Kennwort eingeben, um es entsperren Speichern des DB-Schlüssels an einer beliebigen Stelle. Wenn Sie diese Route verwenden, verwenden Sie eine Schlüsselableitungsfunktion wie PBKDF2 für die Benutzereingabe.

Im Allgemeinen davon ausgehen, dass jedes Passwort, das Sie speichern, ein Sicherheitsproblem ist. Versuchen Sie, sie nicht selbst zu lagern.

+0

können Sie den Teil über KDFs klären? Ich würde denken, dass Sie immer eine KDF anstelle einer einfach zu Brute-Force-Salz + Hash verwenden möchten ... – dandavis

+0

Der Zweck von KDF ist, Rechenverzögerung einzuführen, um Brute-Force-Angriffe zu verhindern. Hashing hingegen ist darauf ausgelegt, schnell zu sein. Es gibt viele Antworten auf SO von Menschen, die schlauer sind als ich, wenn es darum geht, den richtigen Weg zu wählen. Siehe http://crypto.stackexchange.com/questions/4033/whats-the-difference-between-a-key-derivation-function-and-a-password-hash zum Beispiel. –