Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

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

Re: Passwortlänge DEC 3.0 vs. DEC 5.1

  Alt 21. Apr 2006, 21:55
Du machst garnichts falsch !

Unter den vielen Änderungen im DEC 5.x verglichen zur Version 3.x sind im Besonderen die konzeptionellen Änderungen wichtig. Das sind Änderungen am Konzept zu Gunsten höherer Anwendungssicherheit (Fehlervermeidung durch den Programmierer) und die "Abspeckungs-" Maßnahmen zu nennen.

In Version 3.x gab es zb. zwei verschiedene Möglichkeiten einen Cipher zu initialisiren
a.) .Init()
b.) .InitKey()


Während .Init() die Standardmethode zur Initialisierung eines Ciphers ist und dabei zu langes Keymaterial einfach abgeschnitten hat, benutzte Methode .InitKey() eine interne Transformation per Hashfunktion vom Keymaterial um dieses auf die erforderliche Passwortgröße des Ciphers umzuwandeln.

Diese Umwandlung erfolgt heutzutage durch sogennate KDF = Key Derivation Function. Der Trend geht absehbar in diese Richtung. Allerdings sind die benutzten Verfahren so unterschiedlich das es faktisch unmöglich ist dise alle im DEC zu integrieren. Es entsteht eine Zwickmühle, entweder die vielen KDFs ins DEC integrieren und damit die Abspeckmaßnahmen zunichte machen und wieder eine "überfrachtete" Library zu bauen, oder einfach nur die notwendigen Mittel integrieren und den letzten Schliff muß der Endanwender in par Zeilen Sourcecode selber machen. Ich habe mich für letzteres entschieden, weil nur so die Zielsetzung das DEC 5.x einfacher werden sollte, erreichbar war.

Im DEC 5.x gibt es also die Methode .InitKey() nicht mehr. Methode .Init() und die ganze Benutzung der Cipher seber wird durch eine FSM=Finite State Machine nun zusätzlich abgesichert. Dh. es sind mehr Überprüfungen, Plausibilitätschecks im Version 5.x integeriert. Dies erhöht die Sicherheit vor Fehlbenutzungen der Cipher durch Endanwender wie Dich.

Du müsstest also die Art & Weise des Keysetups aus dem DEC 3.x in Version 5.x manuell nachbauen, oder aber wie ich es empfehlen würde darauf verzichten und neuere im DEC 5.x unterstütze Wege einschlagen.

Zb.

Delphi-Quellcode:
var
  Salt: Binary;
begin
  Salt := RandomBinary(16);
  with TCipher_Rijndael.Create do
  try
    Mode := cmCBCx;
    Init(THash_SHA1.KDFx(APassword, Salt, Context.KeySize));
    
    En/DecodeBlaBla();
  finally
    Free;
  end;
end;
Schaue dir auch mal des Project DECTest.dpr im Ordner \DECx\PART_I\DECtest\ an. Dort findest du einen Vorschlag wie man Dateien sicherer verschlüsseln kann.

Und noch eines ist ganz wichtig. In meinem Rijndael aus Version 3.x wurde noch das originale KeySetup des Rijndaels benutzt. Erst später in Version 5.1c (<- wichtig) habe ich das keySetup auf den neuesten Stand nach AES gebracht (wurde ja auch 3 -> dreimal -> im AES Standard geändert !!). Das bedeutet Rijndael im DEC 3.x ist nicht kompatibel im KeySetup zum DEC 5.1c !!

Gruß Hagen
  Mit Zitat antworten Zitat