Benutzerdefinierten Text in der Datenbank sicher speichern (Ruby / Rails)

8

Ich versuche herauszufinden, wie man benutzergenerierten Text sicher in einer Datenbank speichern kann (so dass nur der Benutzer auf seinen gespeicherten Text zugreifen kann). Ich könnte Rails verschlüsseln und entschlüsseln die Texteinträge des Benutzers mit dem Passwort des Benutzers als Schlüssel, aber wenn der Benutzer jemals ihr Passwort vergessen würde dort keine Möglichkeit, ihren vorherigen Inhalt / Text jemals entschlüsseln (da die Rails App verwendet BCrypt nur speichern ein Hash des Passwortes).

Weiß jemand, wie das gemacht werden könnte? Es sieht so aus, als ob Dropbox so etwas macht: "Alle Dateien, die auf Dropbox-Servern gespeichert sind, sind verschlüsselt (AES-256) und sind ohne Ihr Konto-Passwort nicht zugänglich." (http://www.dropbox.com/help/27) Sie erlauben Ihnen jedoch, Ihr Passwort zurückzusetzen, und ich gehe davon aus, dass Sie Ihr Klartext-Passwort nirgendwo speichern.

Was vermisse ich? Irgendwelche Vorschläge würden sehr geschätzt werden. Danke!

    
James C. 10.12.2010, 01:45
quelle

2 Antworten

-1

Bauen Sie auf Gintautas 'Option 1 mit einem zweizinkigen Verschlüsselungsplan auf:

  1. Wenden Sie die Option 1 mit einem dem Server bekannten Schlüssel und
  2. an
  3. Speichern Sie die Datenbank auf einem Datenträger in einem verschlüsselten Format mit einem Schlüssel, der nur dem Server bekannt ist. Zum Beispiel in einem verschlüsselten Volumen. Wenn der Server gestartet wird, muss der Schlüssel manuell eingegeben werden, um auf die Datenbank zugreifen zu können.

Diese "statische Sicherheit" von Teil 2 schützt vor einem Eindringling im System, der Zugriff auf die Datenbankdateien erhält. Vielleicht nicht 100% genau die Sicherheit, die Sie suchen, aber näher kommen.

    
Dogweather 10.12.2010, 06:30
quelle
0

Logic diktiert, dass es nur zwei Optionen gibt:

  1. Sie verschlüsseln mit einem Schlüssel, der dem Server bekannt ist (Schlüsselhash des Benutzers oder eine andere Kennung). Eindringlinge können möglicherweise alle verschlüsselten Daten lesen, aber der Benutzer kann niemals das Verschlüsselungstoken verlieren, weil es sich auf Ihrem Server befindet.
  2. Sie verschlüsseln die Daten mit einem Schlüssel, der nur dem Benutzer bekannt ist (z. B. sein Passwort). Dann werden Eindringlinge nicht in der Lage sein, verschlüsselte Daten zu lesen, aber wenn der Benutzer seinen Schlüssel verliert, sind die Daten so gut wie ein Haufen zufälliger Bits.

Es ist klar, dass Dropbox (1) aus der Tatsache gewählt hat, dass sie erlauben, Ihr Passwort zurückzusetzen.

    
Gintautas Miliauskas 10.12.2010 02:03
quelle