Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#1

Möglichst zufälliges Passwort (masterkey) generieren

  Alt 11. Sep 2010, 22:38
Hallo,

kurz zum Umfeld: Ich habe Dokumente, die verschlüsselt in einem Blob-Feld abgelegt werden. Alle Dokumente sind mit einem "masterkey" verschlüsselt, der ebenfalls in der gleichen Datenbank abgelegt ist.

Nur der "masterkey" ist durch das Benutzerpasswort verschlüsselt (mit RFC2898 erweitert). Das ganze deshalb, dass bei Änderung des Benutzerpasswortes nur der "masterkey" neu verschlüsselt werden muss, nicht alle gespeicherten Dokumente.

Beim Anlegen der Tabelle wird/soll ein zufälliger "masterkey" erzeugt werden... möglichst sehr zufällig, da er ja für die Lebenszeit der Datenbank gültig ist (evtl. wird es eine Möglichkeit geben, auch mit mehr Zeitaufwand den "masterkey" zu ändern, was aber dann in der Realität niemand machen wird).

Die eigentliche Frage: Wie komme ich einen einen möglichst schwer zu ermittelnden Masterkey?

Ein Byte-Array mit ca 32 Byte Länge sollte reichen, es wird mit AES256 verschlüsselt. Mein erster Ansatz war, das ich einen RandSeed-Wert ermittelt hatte und mit Random das Byte-Array gefüllt hatte. Bis ich dann drauf kam, das es ja immer nur Int.MaxValue (ca. 2 Mrd.) Möglichkeiten sind, die mit heutiger Hardware sehr schnell durchprobiert werden kann.

Selbst wenn ich für alle 32 masterkey-Bytes jeweils einen neuen RandSeed-Wert ermittele, sind das nur rund 64 Mrd. Möglichkeiten, was auch an sehr schnell zu knacken ist.

Meine aktuelle Überlegung ist, den "masterkey" zu verlängern (bis 1 MByte ist kein Thema). Bin mir aber nicht sicher, ob es funktional ist, den AES256-Encrypter mit einem 1 MByte Passwort zu füttern. Bevor ich jetzt aber nach ein paar Tagen drauf komme, das da auch ein Haken ist, werfe ich die Aufgabe auch mal hier ins Forum

Geändert von Satty67 (11. Sep 2010 um 22:43 Uhr) Grund: massig Typo...
  Mit Zitat antworten Zitat