Ist es sicher, den sicheren Passcode des Benutzers in verschlüsselter Form in einer Datenbank zu speichern, während eine Bitcoin-Brieftasche erstellt wird?

Ich möchte eine Bitcoin Wallet erstellen.

Ein Teil des Prozesses besteht darin, öffentliche und private Schlüssel in verschlüsselter Form in der Serverdatenbank zu speichern.

Alle Schlüssel, die ich speichere, werden mit dem Passcode des Benutzers verschlüsselt .

1) Ist es sicher, den Passcode des Benutzers in verschlüsselter Form in der Serverdatenbank zu speichern? (Ich denke, dass der Benutzer sein Passwort vergessen könnte, also erwäge eine Wiederherstellungsoption)

2) Gibt es eine zukünftige Möglichkeit, dass ich in Schwierigkeiten komme, wenn irgendeine Art von Angriff stattfindet oder durch die Aktion eines Eindringlings / Administrators selbst (schlechteste Möglichkeit) - der Schlüssel, der dem Angreifer offenbart wird, der den Zugriff führt und die gesamte Kneipe öffnet /priv-Schlüssel aus der Datenbank dieses bestimmten Benutzers? Auf diese Weise kann ich dem Benutzer keine Option zum Vergessen des Passcodes geben.

Wenn Sie also beide Optionen in Betracht ziehen, soll ich den Passcode des Benutzers speichern oder nicht?

Was ist die beste Vorgehensweise, um diese Sicherheitsfunktion in Bitcoin Wallet zu implementieren?

Antworten (1)

Best Practice ist es, nur einen Hash eines Passworts zu speichern, nicht das Passwort selbst. Sie sollten vor dem Hashen auch ein zufälliges Salz hinzufügen. Sie sollten sich darüber im Klaren sein, welche bekannten Hashing-Algorithmen für diese Verwendung nicht mehr als sicher gelten.

Das Verschlüsseln des Kennworts vor dem Speichern ist keine gute Strategie, da Sie am Ende einen Verschlüsselungsschlüssel haben, der irgendwo als Klartext gespeichert ist und alle Benutzerkennwörter entsperren kann. Dies ist ein Geschenk an Hacker.

Sie müssen darauf achten, wie Sie das Passwort im Speicher halten, um es beim Verschlüsseln und Entschlüsseln anderer Daten (Schlüssel usw.) zu verwenden. Beispielsweise müssen Sie sicherstellen, dass andere Prozesse und Plugins nicht in den Speicherplatz Ihrer Prozesse einsehen können und dass vor der Freigabe jeglicher zugewiesener Speicher gelöscht wird. Dies sollte bei den meisten modernen Systemen automatisch erfolgen, aber es liegt in Ihrer Verantwortung, sich dessen sicher zu sein.

Ja, der Versuch eines Amateurs, einen Sicherheitscode zu schreiben, ist wahrscheinlich eine gute Möglichkeit, Ihr Geschäft zu zerstören, Ihren Ruf zu zerstören und sich einem Zivil- oder Strafverfahren wegen Fahrlässigkeit in den Weg zu stellen.

Um ehrlich zu sein, sollte diese Frage besser irgendwo wie Security.stackexchange gestellt werden. Daran ist nichts Bitcoin-spezifisches.