Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

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

Re: Hilfe, die Verschlüsselungs Algorithmen spielen mit mir.

  Alt 29. Okt 2004, 16:09
Du benutzt beim DEC die Methode .InitKey() zum Schlüsselsetup. Wird das Password mit dieser Methode oder direkt im Contructor .Create() des Ciphers übergeben so wird intern mit Hilfe einer Hashfunktion ein SessionKey berechnet. Dies ist sicherer aber eben auch inkompatibel. Das Schlüsselsetup als solches ist in diesen Punkten nicht Standardisiert.

Damit nun mit dem DEC absolut Standard konforme Verschlüsselungen möglich sind musst du
1.) den Cipher Mode -> Property Cipher.Mode, auf einen Standard Modus wie cmCBC, cmECB, cmCFB oder cmOFB setzen.
2.) Methode .Init() zum Setzen des Passwortes benutzen
3.) eventuell bei .Init() auch einen InitVector mit übergeben.

Nur wenn ALLE drei Punkte in jedem Tool identische Verfahren und Daten benutzen ist sichergestellt das sie auch identische Werte liefern müssen.

Ich persönlich habe DEC auch mit DCPCrypt verglichen und auf Kompatibilität getestet.

Ein spezielles Problem bleibt aber bestehen: Twofich in der offizielle DEC Part 3 Version hat einen klitzekleinen Bug im KeySetup.

DEC benutzt standardmäßig dem Cipher.Mode := cmCTS. cmCTS ist eine Entwicklung von mir, die sicherer als der Standard cmCBC ist. Ein fast identisches Verfahren wie mein CTS wurde in der AES Ausschreibung von Belgischen Cryptoexperten als Ersatz für CBC vorgeschlagen. Da aber CTS kein offizieller Standard ist (wobei es eigentlich bis heute überhaupt keinen offiziellen Standard gibt ) kann DCPCrypt oder andere Tools garnicht kompatibel zum DEC sein.

Wie gesagt, eine einfache Aussage wie "alle nutzen Twofish" also müssen sie gleiche Resultate erzielen ist falsch. Es gibt zu viele weitere Einstellungen die unterschiedlich sein könnten.

Ein weiteres Problem entsteht bei vielen Cipher die unterschiedliche Schlüssellängen und Rundenanzahlen unterstützen. Twofisch ist so ein Kandidat. Um also kompatibel zu werden müssen folgende Punkte abgeklärt werden:
1.) Schlüssellänge
2.) Rundenanzahl oder andere Ciphrspezifische Einstellungen
3.) Cipher Block Modus
4.) Cipher Block Size
5.) Schlüssel Preprocessing
6.) Padding Schemata
7.) Init Vector
8.) Daten Formatierung vor & nachher

Gruß Hagen
  Mit Zitat antworten Zitat