One-Time-Pad - Assignment 3

  • Hi,


    hoffentlich kann mir jemand weiterhelfen, da ich keine Ahnung hab wo ich beim One-Time-Pad anfangen soll.
    Wir haben 11 verschlüsselte Ciphertexte und einen "Hinweis" in der Angabe: sprintf("%02X", ord($msg{$i}) ^ ord($key{$i}));


    Nur...wie gehts jetzt weiter? Tipps?

  • Hello Leute,


    ich habe schon einen Lösungsweg gefunden, allerdings hat die Umsetzung mittels Code kein befriedigendes Resultat hervorbringen können.


    Im Grunde wandle ich die Hex-Strings in Dezimalzahlen um und mache eine Brute-Force-Attacke, bei der einfach diese umgewandelten Hex-Strings mit den Zahlen zwischen 0-255 XOR-verknüpft werden.


    Ich verwende den Zahlenbereich 0-255, weil die Funktion ord() in Verwendung kommt. Diese Funktion liefert den ASCII-Wert des angegeben Parameters.


    Bin allerdings betriebsblind geworden und bräuchte eure Unterstützung um einen eventuellen Fehler in meinem Code zu finden.


    EDIT: Die zweite for-Schleife verknüpft den Cipher-Text mit einer Zahl zwischen 0-255. Im hinzugefügten Code steht j=13; j<=13 aus Testzwecken.

  • a) Bitte keinen Code bzw. zu viele Tipps hier posten, wenn Plagiate in den Lösungen gefunden werden, gibts 0 Punkte! (es ist eine Einzelarbeit!)
    b) Mit einem Bruteforce kommt man nicht weiter, eine Nachricht XOR einem Schlüssel kann man mit beliebigen Schlüssel jede Klartextnachricht erzeugen. Also ist die Idee ansich schon falsch.
    Weiters haben die Nachrichten eine Länge von 20-40 Zeichen, wenn man XOR macht und pro Zeichen 256 Möglichkeiten kann, kann man sich leicht ausrechnen, wielange ein Bruteforce dauert.... (Vorallem wenn die Länge noch größer wird...).


    Als kleiner Tipp: Informiert euch über das Verschlüsselungsverfahren, denkt LOGISCH nach was jemand dabei falsch machen kann und dann denkt nach, wie man es ausnutzen kann.


    ps: Weiters ist es nicht sehr sinnvoll seinen eigenen Cipher Text zu publizieren, da die Aufgabe customized ist ;) Das ist genau so als würde ich meinen private Key uploaden...

    "The quieter you become, the more you are able to hear."
    -------------------------------------------------------------------------------------

    Edited once, last by Juggl3r ().

  • a) Bitte keinen Code bzw. zu viele Tipps hier posten, wenn Plagiate in den Lösungen gefunden werden, gibts 0 Punkte! (es ist eine Einzelarbeit!)
    b) Mit einem Bruteforce kommt man nicht weiter, eine Nachricht XOR einem Schlüssel kann man mit beliebigen Schlüssel jede Klartextnachricht erzeugen. Also ist die Idee ansich schon falsch.
    Weiters haben die Nachrichten eine Länge von 20-40 Zeichen, wenn man XOR macht und pro Zeichen 256 Möglichkeiten kann, kann man sich leicht ausrechnen, wielange ein Bruteforce dauert.... (Vorallem wenn die Länge noch größer wird...).


    Als kleiner Tipp: Informiert euch über das Verschlüsselungsverfahren, denkt LOGISCH nach was jemand dabei falsch machen kann und dann denkt nach, wie man es ausnutzen kann.


    ps: Weiters ist es nicht sehr sinnvoll seinen eigenen Cipher Text zu publizieren, da die Aufgabe customized ist ;) Das ist genau so als würde ich meinen private Key uploaden...


    Dass die Texte alle verschieden lang sind hilft einem jetzt auch nicht unbedingt weiter, falls du weißt auf was ich anspiele..

    "The only way to get rid of a temptation is to yield to it."
    - Oscar Wilde

  • Ja aber das hab ich auch nicht gemeint. Ich hab die Länge oben erwähnt im Zuge der Aussage, das Bruteforce sinnlos ist. Unter anderem wollte ich damit aussagen, dass bei 40 Zeichen Länge und einem charset von 256 man ewig brauchen würde. Ist das gleiche wie wenn man Truecrypt 40 Zeichen Passwort bruteforcen möchte (wobei TC ein langsames Hashes nochmal verwendet). Da würde man auch mehrere Milliarden Jahre brauchen.

    "The quieter you become, the more you are able to hear."
    -------------------------------------------------------------------------------------

  • Ja aber das hab ich auch nicht gemeint. Ich hab die Länge oben erwähnt im Zuge der Aussage, das Bruteforce sinnlos ist. Unter anderem wollte ich damit aussagen, dass bei 40 Zeichen Länge und einem charset von 256 man ewig brauchen würde. Ist das gleiche wie wenn man Truecrypt 40 Zeichen Passwort bruteforcen möchte (wobei TC ein langsames Hashes nochmal verwendet). Da würde man auch mehrere Milliarden Jahre brauchen.


    Ja eh. Aber ich mein, im Internet steht ja bei einer Schwachstelle was von XOR verknüpfung.. was soll mir das bringen wenn die nachrichten verschieden lang sind? Oder ist das sowieso die falsche Herangehensweise?

    "The only way to get rid of a temptation is to yield to it."
    - Oscar Wilde

  • ich gehe davon aus ,dass das problem mit der verschluesselung von sponge bob ist ,dass der schluessel mehrmals verwendet wird. ist das korrekt? wenn ja ein paar tipps waeren sehr nett. ich hab die frequency distribution und aehnliche dinge schon gemacht aber irgendwie komme ich auf die loesung nicht

  • ich gehe davon aus ,dass das problem mit der verschluesselung von sponge bob ist ,dass der schluessel mehrmals verwendet wird. ist das korrekt? wenn ja ein paar tipps waeren sehr nett. ich hab die frequency distribution und aehnliche dinge schon gemacht aber irgendwie komme ich auf die loesung nicht


    Das war auch meine Annahme.. hast du die einzelnen Texte schon XOR verknüpft? Wie hast du das angestellt?

    "The only way to get rid of a temptation is to yield to it."
    - Oscar Wilde

  • Bitte nicht die Lösung hier verraten, sonst machts ja gar keinen Spaß mehr ;)
    Es gibt übrigens 2 verschiedene Möglichkeiten, das ganze zu lösen.

    "The quieter you become, the more you are able to hear."
    -------------------------------------------------------------------------------------

  • Hello,


    I have some questions


    a) The line sprintf("%02X", ord($msg{$i}) ^ ord($key{$i}));is from a PHP-program, or am I wrong?
    b) Does the above code line work so?
    Firstly, the same-indexed characters (bytes) from the message and key are XOR'ed, and then, the result is written as a 2-byte hex-string. For instance, if the result is 0x3A, then 3A is written; however, if the result is 0x5, then 05 is written.


    c) If the execution works like above, then it means that the length of each message is half of its encrypted length, am I right?


    d) Let's say that for two messages M1 and M2, when encrypted we have the texts E1 and E2. XOR'ing E1 and E2 must give us a text which is equal to M1^M2 (^ means XOR). If we XOR each 2-byte value with space, then we can find out where space is used and at least we can divide the encrypted texts into words. Am I right?


    thanks in advance

  • Das war auch meine Annahme.. hast du die einzelnen Texte schon XOR verknüpft? Wie hast du das angestellt?


    kann mir jemand bzgl der xor-verknuepfung hints geben? ich probier da seit geraumer zeit herum, es kommt aber nur bloedsinn dabei raus.. ein tipp, wie man die verknuepfung am besten anstellt, waere ganz super!


    danke!

  • a) Bitte keinen Code bzw. zu viele Tipps hier posten, wenn Plagiate in den Lösungen gefunden werden, gibts 0 Punkte! (es ist eine Einzelarbeit!)
    b) Mit einem Bruteforce kommt man nicht weiter, eine Nachricht XOR einem Schlüssel kann man mit beliebigen Schlüssel jede Klartextnachricht erzeugen. Also ist die Idee ansich schon falsch.
    Weiters haben die Nachrichten eine Länge von 20-40 Zeichen, wenn man XOR macht und pro Zeichen 256 Möglichkeiten kann, kann man sich leicht ausrechnen, wielange ein Bruteforce dauert.... (Vorallem wenn die Länge noch größer wird...).


    Als kleiner Tipp: Informiert euch über das Verschlüsselungsverfahren, denkt LOGISCH nach was jemand dabei falsch machen kann und dann denkt nach, wie man es ausnutzen kann.


    ps: Weiters ist es nicht sehr sinnvoll seinen eigenen Cipher Text zu publizieren, da die Aufgabe customized ist ;) Das ist genau so als würde ich meinen private Key uploaden...


    Okay, die Nachrichten (meinst du plaintext in diesem Fall?) haben 20-40 Zeichen Länge. Das muss dementsprechend bedeuten, dass alle Zeichen in den cipher-texts ab dem 80.Zeichen der Schlüssel selbst sein muss, weil x^0 = x.


    Das macht allerdings keinen Sinn, weil die 10 gegebenen cipher-texts eine unterschiedliche Länge haben. Sinn würde das ganze für mich machen, wenn tatsächlich 10 verschiedene Keys verwendet wurden.