Zuallererst stimme ich den anderen Antworten zu, in denen darauf hingewiesen wird, dass es viel sicherer ist, dies zu vermeiden und nur Hashes von Passwörtern zu speichern, nicht die Passwörter selbst oder alles, was zurück in ein Passwort umgewandelt werden kann.
Es gibt jedoch Situationen, in denen Sie die Wiederherstellung mehr oder weniger berücksichtigen müssen. Bei Kennwörtern möchten Sie im Allgemeinen eine Wiederherstellung durchführen, indem Sie einem Administrator einfach erlauben, das Kennwort bei Bedarf zu ändern, anstatt das vorhandene Kennwort wiederherzustellen.
Eine andere Möglichkeit ist jedoch, dass Sie dem Benutzer erlauben, Daten auf dem Server zu speichern, der mit seinem eigenen Passwort verschlüsselt ist. In diesem Fall reicht es nicht aus , nur einem Administrator das Ändern des Kennworts zu gestatten . Mit dem neuen Kennwort können die Daten nicht entschlüsselt werden, und die meisten Benutzer können nicht auf alle verschlüsselten Daten zugreifen, wenn sie ein Kennwort vergessen oder verloren haben. Für diese Situation gibt es eine Alternative, die einigermaßen sicher ist und bei Bedarf dennoch eine Wiederherstellung ermöglicht.
Anstatt das Kennwort des Benutzers zum Verschlüsseln der Daten zu verwenden, erstellen Sie einen zufälligen Schlüssel, um die Daten selbst zu verschlüsseln. Anschließend speichern Sie diesen Schlüssel an mehreren Stellen: einmal mit dem Kennwort des Benutzers und an einer anderen Stelle, die mit einem Administratorkennwort verschlüsselt ist. Wenn der Benutzer dann (nicht wirklich, wenn) sein Kennwort verliert und nicht mehr direkt auf die Daten zugreifen kann, können Sie das Administratorkennwort zum Entschlüsseln des tatsächlichen Schlüssels und zum Wiederherstellen der Daten und / oder zum erneuten Verschlüsseln des Schlüssels mit verwenden das neue Passwort des Benutzers.
Wenn Sie einem einzelnen Administrator nicht vollständig vertrauen möchten, können Sie dies auch verwalten. Sie können beispielsweise festlegen, dass 5 Personen über Administratorschlüssel verfügen, und Sie möchten, dass mindestens drei Personen zustimmen, bevor ein Schlüssel wiederhergestellt werden kann. In diesem Fall wird das verschlüsselte Kennwort beim Speichern zu Verwaltungszwecken mehrmals gespeichert, und zwar jeweils einmal für jeden Satz von drei der fünf Administratoren (was nicht viel Platz beansprucht, da Sie nur mehrere Schlüssel speichern) . bei ~ 256 Bits pro Stück, nicht mehrere Kopien der Daten). Jede dieser Kopien wird nacheinander mit (den Hashes von) jedem der Kennwörter für diese drei Administratoren verschlüsselt.
Um es zu entschlüsseln, müssen Sie die drei Administratoren identifizieren, die ihre Kennwörter eingeben, den richtigen verschlüsselten Schlüssel für diesen Satz von drei auswählen und dann mit jedem der drei Kennwörter entschlüsseln, um schließlich den Originalschlüssel zu erhalten. Sie können das dann verwenden, um die Daten selbst wiederherzustellen, oder Sie können sie einfach mit dem (Hash) des neuen Passworts des Benutzers neu verschlüsseln, damit dieser weiterhin auf seine Daten zugreifen kann.
Wenn Sie dies jedoch tun, müssen Sie wirklich einen Standardverschlüsselungsalgorithmus und (stark bevorzugt) eine bekannte, gründlich untersuchte Standardimplementierung verwenden.