Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: Einige Fragen zum DEC

  Alt 13. Jan 2007, 11:07
Deine Datenbank könnte also so aussehen:

Salt (16 Bytes binär), Check (16 Bytes binär), verschlüsselte Datenfelder (binär), unverschl. Datenfelder, evetuell Indexdaten zur Sortierung nach verschl. Datenfelder (komplizerte Aufgabe)

Die Speicherroutine könnte so arbeiten:

1.) neuen 16 Bytes Salt per Zufall erzeugen
2.) neuen Sessionkey erzeugen, SessionKey := THash_SHA1.KDFx(Password, Salt, Cipher.Context.KeySize, TFormat_COPY)
3.) Check erzeugen, dazu 8 Bytes Zufall erzeugen diesen invertiert hintendran hängen um so auf 16 Bytes zu kommen und mit Sessionkey verschlüsseln
4.) jedes Datenfeld mit Sessionkey verschlüsseln
5.) Salt,Check und Daten speichern

Beim Lesen der Daten
1.) Salt laden
2.) wie oben in Punkt 2.) Sessionkey erzeugen
3.) Check laden und entschlüsseln, überprüfen das die ersten 8 Bytes invertiert identisch zu den 2'ten 8 Bytes sind, wenn nein falsches Passwort
4.) restlichen Felder laden und mit Sessionkey erzeugen

Der Check stellt sicher das es zu 2^64 möglichen Werten auch 2^64 mögliche korrekte Prüfcodes existieren. Ein Angreifer kann also diesen Check nicht misbrauchen in einer Brute Force Attacke um festzustelle ob er das richtige Passwort ermittelt hat.

Der Salt stellt sicher das es 2^128 verschiedene Sessionkeys gibt zu dem einen Benutzerpasswort. Somit werden alle als Wörterbuch-Angriffe bekannte Attacken ausgeschlossen, besonders die Rainbow Tabellen.

Desweiteren verhindert der Salt die differentielle Kryptoanalyse. Dh. auf Grund dessen das man fast identische Daten merhfach verschlüsselt kann man nicht das Passwort ermitteln, eben differntiell kryptoanalysieren. Logisch wir erzeugen ja bei jedem Speichern einen neuen zufälligen Salt der dann über die Hashfunktion zu einem ebenfalls pseudo-zufälligen aber Benutzerpasswort abhängigen Sessionkey führt.

Ein besonderes Augenmerk gilt eventuell notwenigen Indizes zur Sortierung der Datenbank nach den verschlüsselten Datenfeldern. Du musst ja dann separate und für die DB auswertebare Felder als Indexfelder benutzen. Es sollte dann aber sichergestellt sein das ein Angreifer aus diesen Indexfelder nicht auf die Daten in den verschl. feldern rückschließen kann. Das ist defakto sehr schwierg, wenn nicht sogar unmöglich.

Gruß Hagen
  Mit Zitat antworten Zitat