Wo kann man seinen Kryptoalgorithmus testen lassen?

...komplette Frage anzeigen

4 Antworten

Einfach veröffentlichen, das ist die sinnvollste Variante. Dazu gehört dann auch, die Designerkriterien herauszustellen. Dann sollte man die Standardmethoden der Analyse verwenden, zum Beispiel eine differentielle Kryptoanalyse (wenn es eine Blockchiffre ist), dies führt aber wahrscheinlich schon etwas zu weit. Fang erstmal mit einfachen Analysen an: Statistische Häufigeit des CHiffrats untersuchen, also zum Beispiel 10000 mal dasselbe Zeichen verschlüsseln (als Block, oder Strom, je nachdem, wie dein Ding funktioniert), das Chiffrat sollte dann trotzdem alle Häufigkeitsmerkmale eines Zufallstextes besitzen. Danach sollte die lineare Komplexität untersucht werden, und dann besser noch ein lineares Komplexitätsmodul. Alle diese Dinge garantieren keinen guten Algorithmus, aber fällt der Algorithmus bei diesen Tests durch, ist er in der Tat nicht gut. Mit etwas mehr Informationen könnte ich dir etwas weiterhelfen.

Achso, keine Sorge, keiner wird dir das Ding klauen wollen. Die Sicherheitsproblme in heutigen Computersystemen liegen nicht daran, dass die Algorithmen nicht gut sind.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Moba1
07.03.2017, 10:31

Der Plaintext wird in 128 bit Blöcke geteilt. Der Letzte Block, falls nicht 128 bit gross wird mit Nullen gepadded.

Der Plaintext wird um X Stellen entweder nach rechts oder links bitweise verschoben.
Die Zahl um die der Plaintext bitweise verschoben wird wird aus den letzten 7 bit des Schlüssels gewonnen (128 Verschiebemöglichkeiten), das letzte Bit des Schlüssels entscheidet ob nach rechts oder links verschoben wird.
Danach wird der Block in 128 Teile a 1 bit zerlegt.
Jedem bit wird ein neuer bzw. zukünftiger Platz zugewiesen.
Das passiert so:

Der Schlüssel wird mit md5 gehashed und zwar so, dass der Schlüssel die Standardwerte der Hashfunktion ersetzt.

Das Ergebnis wird modulo 128 genommen.

Der erste Hashwert modulo 128 weist dem ersten bit seine Position zu.
Dann wird der Hashwert erneut gehashed, modulo 128 genommen und weist dem 2 bit seinen Platz zu.
Das passiert so lange bis alle 128 bit einen neuen bzw. zukünftigen Platz haben.
Um Kollisionen zu vermeiden wird immer überprüft ob ein Platz schon besetzt ist.
In diesem Fall wird der Hash erneut gehashed so lange bis es keine Kollision mehr gibt usw.

Durch diese Methode wird der Plaintext bzw. der Block komplett und schlüsselbasiert zerissen bzw. neu geordnet, so, dass die ursprüngliche Ordnung ohne Schlüssel nicht mehr herzustellen ist.

Danach wird der wiederzusammengesetzte Block in 16 Teile a 8 bit zerlegt.

Dann werden 16 S-Boxen iniatialisiert.

Das passiert so:

Die Werte der AES-Sbox (16x16 byte strings) werden mit md5 gehashed wobei der Schlüssel auch hier die Standardwerte der Funktion ersetzt.
Das passiert so lange bis man 16 S-Boxen a la 16x16 strings hat.
Die S-boxen werden also dynamisch und schlüsselbasiert generiert.

Schlussendlich wird der Block mit dem 128 bit Schlüssel geXORed um durch Informationsverlust Sicherheit zu erlangen.

Key Shedule:

Der Schlüssel wird mit md5 gehashed so, dass der Schlüssel selbst die Standardwerte der Funktion ersetzt.

So sollte es bei Kenntnis eines Rundenschlüssels unmöglich sein, vorherige oder künftige Schlüssel zu errechnen.

Das Besondere an diesem Algorithmus: Sämtliche Routinen sind schlüsselbasiert bzw. schlüsselabhängig. Bei anderen Algorithmen kann man einen byteblock vom Anfang bis zum Ende verfolgen bei diesem nicht.

Der Weg ist schon nach einer Runde nicht mehr nachzuvollziehen da die Transposition dynamisch ist.

Der Block wird komplett und schlüsselbasiert zerissen und neu zusammengefügt.

Ich hoffe ich habe meinen Algorithmus richtig und verständlich beschrieben.

0

Veröffentlichen, in umlauf bringen. Mich persönlich würde der auch mal interessieren (bin in dem thema crypto allerdings nicht erfahren!!). Sofern deiner den anforderungen der nist/nsa entsprechen kannst du ihn einsenden beim aktuellen "wettbewerb"

Antwort bewerten Vielen Dank für Deine Bewertung

Veröffentlichung hört sich doch schon gut an, ich würde damit anfangen. So kannst du es noch einmal formalisieren, Mathematisch fundiert und die Kriterien herausheben, denen der Algorithmus standhalten soll.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von BrutalNormal
07.03.2017, 08:35

Je länger ich darüber nachdenke ... solltest du genau das tun. Wie wehrst du dich denn gegen Leute, die verstehen, was du geschrieben hast und dann selbst damit ein Paper herausgeben?

Das willst du nicht, auf gar keinen Fall!

0

Ja, die gibt's, das kostet aber schön Geld.

Das sinnvollste ist hier wirklich die Community, wenn man als Privatperson sowas macht.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?