BITTE hilfe! erster byte wird falsh entschlüsselt



  • Also, ich will natürlich den Algorythmus sicher machen, gegen diese ganzen angriffs-Methoden. Ich habe vor, immer jeweils eine angriffs-Methode herauszufinden, und den Algorythmus entsprechend umändern, sodass er sicher gegen sie ist. Leider habe ich nicht viel Ahnung auf diesem Gebiet, aber man lernt ja das ganze Leben durch...



  • Wenn du schon einen eigenen Verschlüsselungsalgorithmus bauen willst (warum kannst/darfst du keinen fertigen benutzen?) kannst du dir auf dieser Seite mal einen anschauen, der sowohl sicher als auch einfach zu implementieren ist:

    Solitaire


  • Mod

    Ok, ich habe mich in den letzten Tagen mal ein bisschen mit Kryptoanalyse beschäftigt und kann dir sagen, was an deinem Verfahren nicht stimmt:

    Dein Verfahren ist knackbar durch Frequenzanalyse, wie ich demonstriert habe (auch wenn ich nicht den Nerv habe das wirklich bis zum Ende durchzuziehen). Das ist eine prinzipielle Schwäche deines Verfahrens, da es sich um ein ersetzungsverfahren mit einer begrenzten Zahl an Alphabeten handelt. Es ist bekannt, welches Alphabet für welches Zeichen verwendet wurde, denn das vorherige Zeichen bestimmt das ALphabet. Dadurch ist es knackbar mit einer Frequnzanalyse, nur dass man es mit einer großen Zahl an Alphabeten zu tun hat.

    Was könntest du dagegen tun? Mach die Wahl des Alphabets nicht vom vorherigen Zeichen, sondern von einem anderen Schlüsselwort abhängig.

    Problem: Auch dieser Trick ist alt bekannt und längst analysiert: Man berechnet dann den Koinzidenzindex und kann so die Schlüssellänge erraten. Dann hat man es wieder mit einer bekannten Zahl an Alphabeten zu tun und kann auf diesen wieder eine Frequenzanalyse machen.

    Was man dagegen tun könnte, ohne dein Verfahren grundlegend umzukrempeln, weiß ich nicht. Man kann es natürlich immer eine Stufe komplizierter werden lassen ,indem du den Schlüssel noch alternieren lässt, aber das ist keine prinzipielle Lösung und vergrößert nur die Zahl der Nachrichten, die ein Angreifer mitlesen muss, bevor er den Code angreifen kann.

    Eine weitere Schwäche: Fallt dem Angreifer eine verschlüsselte Nachricht in die Hände, deren Quelltext er kennt, kann er ganz einfach den Schlüssel berechnen und somit alle anderen Nachrichten entschlüsseln, die mit dem gleichen Schlüssel verschlüsselt wurden. Selbst wenn man nur Teile der Nachricht kennt (z.B. es geht mit einer Anrede los, oder endet mit dem Wetterbericht), kann man schon einiges an Aussagen über den Schlüssel machen. Wenn man dann einige Teile des Schlüssels sicher kennt, kann man den Rest erraten. Auch dies ist eine prinzipielle Schwäche, die nicht durch einfache Abänderung des Verfahrens behoben werden kann.

    Der Schlüsselaustausch ist eine weitere Schwachstelle. Der Schlüssel muss irgendwie von A nach B gelangen und darf dabei nicht abgehört werden. Dies ist eine prinzipielle Schwäche aller symmetrischen Verschlüsselungsverfahren. Dagegen helfen asymmetrische Verfahren (zumindest zum Austausch des Schlüssels), die grundsätzlich anders funktionieren als dein Verfahren.



  • Also, über die Asymetrischen Verschlüsselungsmethoden habe ich mich auch schon informiert, leider habe ich nirgends etwas gefunden wie die dinger funktionieren.
    Wenn ihr meint, das Verfahren sei nicht mehr zu retten, werde ich's an etwas anderem versuchen, was aber schade wäre...
    Danke dir, SeppJ, dass du mir so fiel geholfen hast 🙂


  • Mod

    Für asymmetrische Verfahren ist die Idee, dass man sich ein mathematisches Problem sucht, dass in einer Richtung sehr einfach ist und in der Umkehrung sehr schwierig. Darauf baut man dann ein einfaches Chiffre auf. Da man Mathematiker sein muss, um über sowas den Überblick zu haben, ist es nicht leicht, selber so ein Verfahren zu entwickeln.

    Schau dir für ein sehr gebräuchliches Beispiel mal RSA an. Dieses basiert auf zwei mathematischen Problemen. Erstens die Leichtigkeit zwei Primzahlen zu finden und zu multiplizieren, aber die Schwierigkeit eine Zahl in zwei Primfaktoren zu zerlegen. Zweitens die Schwierigkeit die Eulerfunktion einer Zahl ohne Kenntnis von deren Primfaktoren zu berechnen.

    Da asymmetrische verfahren recht Rechenaufwändig sind, wird häufig nur ein Schlüssel für ein Blockchiffre damit übertragen. Du kannst dir ja auch mal die gängigen Blockchiffres angucken. Diese sind (relativ) sicher, sofern man den Schlüssel sicher übertragen kann. Für simple Blockchiffres gibt es Angriffe, die neueren sind noch nicht genau erforscht, gelten aber (bisher) als sicher. Die moderneren Verfahren sind aber teilweise nicht ganz einfach zu implementieren.

    Ich würde für den Anfang mal das schon vorgeschlagene Solitaire als Hauptchiffre implementieren und RSA als Übertragungsweg für den Schlüssel. Beide sind relativ einfach umzusetzen (zumindest wenn du für RSA eine Bibliothek für große Zahlen benutzt). Und das ist dann schon so sicher, dass es sich eher lohnt, einen unkonventionellen Angriff (also Überredung, Wanzen, Erpressung, Folter) zu starten, anstatt sich an dem Verschlüsselungsverfahren selbst die Zähne auszubeißen.



  • Wie wär's mit Pi? Man müsste zB die anzahl der danachkommenden stellen kennen, die zur verschlüsselung verwendet wurden. Wenn mann sie nicht kennt, so geht wegen der minimalen unterschiede die berechnung falsh. (checksum von Pi aus dem Speicher generieren, und damit verschlüsseln). Leider wurden bisher nur 200 Milionen nachkommastellen entdeckt, was das verfahren für brute-force sehr anfällig macht. Das könnte man aber mit zusätzlichen parametern beheben (noch kA mit welchen). Oder man könnte eben etwas wählen, was man bis zur unendlichkeit weiterführen kann, zB Fibonacci: 1 1 2 3 5 8 13 21 34 55 89...

    Verschlüsselung:
    -> Pi-nachkommastellenanzahl wählen.
    -> Pi-Checksum generieren
    -> mit der checksum verschlüsseln

    Entschlüsselung:
    -> Pi-Checksum generiren (Angreifer würden hierran scheitern, weil wenn die zahl auch minimal falsh ist, so ist )
    -> Entschlüsseln


  • Mod

    Pi kennnt jeder, kann jeder berechnen. 👎



  • lk schrieb:

    Wie wär's mit Pi? Man müsste zB die anzahl der danachkommenden stellen kennen, die zur verschlüsselung verwendet wurden. Wenn mann sie nicht kennt, so geht wegen der minimalen unterschiede die berechnung falsh. (checksum von Pi aus dem Speicher generieren, und damit verschlüsseln). Leider wurden bisher nur 200 Millionen nachkommastellen entdeckt, was das verfahren für brute-force sehr anfällig macht.

    Wo lebst Du denn? Mach mal 2 Billionen draus.



  • Okay, aber es würde trotzdem irgendein hash-wert ausreichen (zudem vielleicht auch noch varabler Länge).
    Das heist leider noch nicht, dass der Algorythm sicher ist, denn es giebt dazu noch keinen...

    volkard schrieb:

    Wo lebst Du denn? Mach mal 2 Billionen draus.

    Woraus? Meinst du es wurden bereits 2 Billionen nachkommastellen von Pi entdeckt ?


  • Mod

    lk schrieb:

    volkard schrieb:

    Wo lebst Du denn? Mach mal 2 Billionen draus.

    Woraus? Meinst du es wurden bereits 2 Billionen nachkommastellen von Pi entdeckt ?

    Man kennt heute 2,7 Billionen Stellen.



  • lk schrieb:

    volkard schrieb:

    Wo lebst Du denn? Mach mal 2 Billionen draus.

    Woraus? Meinst du es wurden bereits 2 Billionen nachkommastellen von Pi entdeckt ?

    Entdeckt, hihi.
    Man muss die nicht suchen, man muss die bloss ausrechnen 😃



  • Hmm, giebt es also schon eine feste Formel, mit der man beliebig viele stellen ausrechnen kann ?


  • Mod

    lk schrieb:

    Hmm, giebt es also schon eine feste Formel, mit der man beliebig viele stellen ausrechnen kann ?

    Jein. Es gibt Algorithmen die im Binär und im Hexadezimalsystem jede beliebige Stelle berechnen können.

    Für das Dezimalsystem ist der Stand der Technik, dass man ausgekügelte Iterationsverfahren benutzt. Da niemand an den Werten wirklich interessiert ist, werden aber keine großen Computerressourcen für die Rechnung benutzt, daher "nur" 2,7 Billionen Stellen. Es ist eher ein Sport unter Numerikern, das schnellste Verfahren zu entwickeln. Derzeitiger Stand sind glaube ich ein paar hundert Millionen korrekte Stellen pro 25 Iterationsschritte.



  • ... bis sich herraustellt das die 10^100 stelle die Lösung für P = NP liefert. Dann gehts ab.



  • GreyHound schrieb:

    ... bis sich herraustellt das die 10^100 stelle die Lösung für P = NP liefert. Dann gehts ab.

    wie?
    plz genauer.


  • Mod

    lk schrieb:

    GreyHound schrieb:

    ... bis sich herraustellt das die 10^100 stelle die Lösung für P = NP liefert. Dann gehts ab.

    wie?
    plz genauer.

    Das ist bloß ein Scherz. Da bewiesen ist, dass Pi transzendent ist, kann man theoretisch jede denkbare Ziffernfolge irgendwo finden. Wenn man die Ziffernfolgen als ASCII auffasst, bedeutet dies, dass jeder existierende und nicht existierende Text an irgendeiner Stelle in Pi steht. Nur eben relativ weit hinten 😃 . Das ist vergleichbar mit der berühmten unendlich großen Affenhorde mit Schreibmaschinen.

    P=NP kann man googeln. Ist quasi der heilige Gral der Informatik, zu beweisen ob das gilt oder nicht.

    Ironischerweise wäre die Konsequenz von P=NP das Ende der oben diskutierten asymmetrischen Verschlüsselungsverfahren.




Anmelden zum Antworten