Hallo, ich würde hier gerne meinen Algorithmus vorstellen.
Ich behaupte nicht ein Profi zu sein und, dass der Algorithmus hochprofessionell ist. Es ist einer meiner ersten Gehversuche was das anbelangt. Harte Kritik ist erwünscht aber bitte sachlich. Womöglich blamiere ich mich auch aber das Risiko gehe ich ein.
Man kann ihn ja gemeinsam verbessern.
Er ist bewusst in einer einfachen Struktur geschaffen um sehr performancestark zu sein.
Ziel ist es sowohl sicher als auch schnell zu sein.
Daher wurde zumindest in der ersten Version auf S-Boxen verzichtet.
Der Klartextblock mit 128 bit wird in jeder Runde variabel (schlüsselabhängig) "bit geshifted", und zwar in dem die Zahl um die bitweise verschoben wird berechnet wird in dem der Schlüssel modulo 128 genommen wird.
Danach wird der Block in 16 Teile a 8 bit zerlegt und schlüsselbasiert neu geordnet. Das passiert in dem die Nummern der Postionen mit einem Hash-Algorithmus gehasched werden und das Ergebnis modulo 16 genommen wird. Dabei werden die Standardwerte des Hash-Alogorithmus durch den Schlüssel ersetzt. Ohne Schlüssel sollte es nicht möglich sein die ursprüngliche Ordnung widerherzustellen.
Danach wird der wiederzusammengesetzte Block mit dem Schlüssel "gexored" um durch Informationsverlust weitere Sicherheit herzustellen.
Jede einzelne Routine ist schlüsselabhängig.
Die Rundenanzahl ist beliebig wählbar sollte aber mindestens zehn Runden in der Standardversion bzw. Anwendung haben.
Keyshedule:
Der Schlüssel wird jede Runde mit einer Hashfunktion gehashed bei der der Schlüssel die Standardwerte des Hashalgorithmus ersetzt.
Damit sollte es unmöglich sein selbst bei Kenntnis eines Rundenschlüssels Schlüssel vorheriger Runden oder zukünftiger Runden vorherzusagen. Alternativ kann der Schlüssel auch selbst die Verschlüsselungsroutine durchlaufen, was aber Perfomance kosten würde.
In zukünftigen Versionen kann der Algorithmus um S-Boxen erweitert werden und zwar variable 16 S-Boxen die jede Runde schlüsselabhängig geändert werden bzw. wird auch deren Position schlüsselabhängig jede Runde geändert.
Mir ist bewusst, dass der Algortithmus sehr einfach ist, das ist aber bewusst so. Er kann wie gesagt erweitert werden.
Ich behaupte nicht ein Profi zu sein und, dass der Algorithmus hochprofessionell ist. Es ist einer meiner ersten Gehversuche was das anbelangt. Harte Kritik ist erwünscht aber bitte sachlich. Womöglich blamiere ich mich auch aber das Risiko gehe ich ein.
Man kann ihn ja gemeinsam verbessern.
Er ist bewusst in einer einfachen Struktur geschaffen um sehr performancestark zu sein.
Ziel ist es sowohl sicher als auch schnell zu sein.
Daher wurde zumindest in der ersten Version auf S-Boxen verzichtet.
Der Klartextblock mit 128 bit wird in jeder Runde variabel (schlüsselabhängig) "bit geshifted", und zwar in dem die Zahl um die bitweise verschoben wird berechnet wird in dem der Schlüssel modulo 128 genommen wird.
Danach wird der Block in 16 Teile a 8 bit zerlegt und schlüsselbasiert neu geordnet. Das passiert in dem die Nummern der Postionen mit einem Hash-Algorithmus gehasched werden und das Ergebnis modulo 16 genommen wird. Dabei werden die Standardwerte des Hash-Alogorithmus durch den Schlüssel ersetzt. Ohne Schlüssel sollte es nicht möglich sein die ursprüngliche Ordnung widerherzustellen.
Danach wird der wiederzusammengesetzte Block mit dem Schlüssel "gexored" um durch Informationsverlust weitere Sicherheit herzustellen.
Jede einzelne Routine ist schlüsselabhängig.
Die Rundenanzahl ist beliebig wählbar sollte aber mindestens zehn Runden in der Standardversion bzw. Anwendung haben.
Keyshedule:
Der Schlüssel wird jede Runde mit einer Hashfunktion gehashed bei der der Schlüssel die Standardwerte des Hashalgorithmus ersetzt.
Damit sollte es unmöglich sein selbst bei Kenntnis eines Rundenschlüssels Schlüssel vorheriger Runden oder zukünftiger Runden vorherzusagen. Alternativ kann der Schlüssel auch selbst die Verschlüsselungsroutine durchlaufen, was aber Perfomance kosten würde.
In zukünftigen Versionen kann der Algorithmus um S-Boxen erweitert werden und zwar variable 16 S-Boxen die jede Runde schlüsselabhängig geändert werden bzw. wird auch deren Position schlüsselabhängig jede Runde geändert.
Mir ist bewusst, dass der Algortithmus sehr einfach ist, das ist aber bewusst so. Er kann wie gesagt erweitert werden.