Anzeige:
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 16 bis 30 von 33

Thema: [C++]Binäre Verschlüsselungsalgorythmen

  1. #16
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von J!0X
    Ich meine damit, dass nicht immer die gleichen Buchstaben in der gleichen Reihenfolge auftreten.
    Ich verstehe nicht ganz, was du meinst.

    Wenn der Schlüssel z.B. 4 Zeichen lang ist, wird "AAAAAAAAA" z.B. als "ZBDQZBDQ" kodiert.

    Wenn du nun eine Nachricht hast, die du entschlüsseln willst, und die Schlüssellänge kennst/vermuten kannst, kannst du die Nachricht so schreiben (Schlüssellänge 5)
    Code:
    UVNAG
    QITMA
    NBMYY
    QQAQF
    LBMAF
    Jetzt kannst du für die 1. Spalte, 2. Spalte, usw. getrennt eine Häufigkeitsanalyse machen. Denn in der 1. Spalte wird ein E immer durch denselben Buchstaben kodiert, dito für die zweite, etc.

  2. #17
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von Joghurt
    Niemand, und deshalb sendet man verschlüsselte Dokumente nur, wenn die Informationen darin irgendwann nutzlos geworden ist. Z.B. ist es egal, wenn ein Dokument in dem Pläne für das nächste Geschäftsjahr gespeichert sind, nach 2 Jahren entschlüsselt wird.
    Das ist vielen Leuten aber nicht bewusst

    Außerdem halten viele Verfahren der "Gartenschlauch-Methode" nicht stand, diese besteht darin, denjenigen, der das Kennwort kennt, solang mit einem Gartenschlauch auf die Füße zu schlagen, bis er das Kennwort freigibt.
    Wieso Gartenschlauch? Ich hab immer gemeint, das Gartenschlauchprinzip sei dann, wenn du ausrechnen musst, wieviele Elektronen (Gleichstrom) aus einem Kabel fliessen

    Abgesehen davon gibts wohl effizientere Methoden als Gartenschläuche

    "Sicherheit" ist immer ein relativer Begriff. Absolute Sicherheit gibt es nicht.
    Yep - und es sterben immer noch mehr Leute in Verkehrsunfällen und an schlechter Luft als durch Terroristen. Kyotoprotokoll will man nicht unterschreiben, dafür ist man bereit, im Kampf gegen den internationalen Terrorismus seine Privatsphäre aufzugeben... (ok - war jetzt ein wenig OT - aber musste einfach wieder mal raus )

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  3. #18
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Das One-Time-Pad ist die sicherste Verschlüsselung. Wenn das One-Time-Pad mehrfach verwendet wird, ist es kein One-Time-Pad mehr .

    Bei allen Verschlüsselungsverfahren (inkl. One-Time-Pad) ist es natürlich wichtig, dass der Schlüssel "gut" gewählt ist. Ein wichtige Eigenschaft dafür ist die Zufälligkeit. Ein normales /dev/random mag vielleicht für einfache Sachen ausreichen, ist aber leider nicht wirklich zufällig.

    Übrigens hat Bruce doch Recht. Denn alle Verschlüsselungsverfahren basieren auf zwei wesentlichen Grundelementen:
    • Die Wahrscheinlichkeit der Entschlüsselung, also einen zweiten Schlüssel zu finden, ist möglichst gering. Aber durch den Zufall ist es natürlich nicht ausgeschlossen den richtigen Schlüssel im ersten Versuch zu finden.
    • Im Fall einer systematischen Analyse muss die aufgewendete Rechenzeit größer sein, als Halbwertzeit der Information selbst. Dabei gilt zu bedenken, dass in der Zwischenzeit eine Steigerung der Rechenleistung um einen Faktor x stattfindet.


    Pingu
    Geändert von Pingu (17-08-2006 um 08:55 Uhr)
    Homepage: www.pingu.info

  4. #19
    Registrierter Benutzer Avatar von J!0X
    Registriert seit
    15.08.2006
    Ort
    Dortmund
    Beiträge
    22
    Zitat Zitat von Joghurt
    Wenn der Schlüssel z.B. 4 Zeichen lang ist, wird "AAAAAAAAA" z.B. als "ZBDQZBDQ" kodiert.
    Wenn der Klartext "AAAAAAAAA" ist, kann man eine Häufigkeitsanalyse machen aber wenn der Klartext z.B. "Dies ist ein kleiner Text" lautet, kann man keine Analyse mehr machen.. Oder doch?
    Ich denke ich habe das jetzt so richtig verstanden.

  5. #20
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Zitat Zitat von J!0X
    Wenn der Klartext "AAAAAAAAA" ist, kann man eine Häufigkeitsanalyse machen aber wenn der Klartext z.B. "Dies ist ein kleiner Text" lautet, kann man keine Analyse mehr machen.. Oder doch?
    Ich denke ich habe das jetzt so richtig verstanden.
    Normalerweise verschlüsselt man nicht nur einen Satz, sondern einen Text. Es gibt für die verschiedensten Sprachen Häufigkeitsanalysen für die eizelnen Buchstaben. Diese muss entsprechend auch für den verschlüsselten Text gelten. Jetzt zählt man zum Beispiel die Häufigkeit aller Buchstaben, den mit dem häufigsten Aufkommen weist man dem 'e' zu (diese kommt in Englischen und AFAIK auch in deutschen Texten mit Abstand am häufigsten vor). Dann kann man dieses noch mit den verschiedensten Buchstabenkombinationen durchführen usw (z.B. kommt in der deutschen Sprache nach dem "c" sehr häufig ein "h" oder nach dem "q" kommt sehr häufig ein "u”).

    Pingu
    Homepage: www.pingu.info

  6. #21
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von Pingu
    Das One-Time-Pad ist die sicherste Verschlüsselung. Wenn das One-Time-Pad mehrfach verwendet wird, ist es kein One-Time-Pad mehr .
    Da haste auch wieder Recht. Aber es gab mal so einen Fall, wo so ein Typ von der Ami-Botschaft in der UdSSR "nach Hause telefonieren" wollte - jedoch kein ungebrauchter One-Time-Pad mehr verfügbar war. Hat er halt nen alten nochmals gebraucht - den dann die Russen auch geknackt haben (hat aber ein wenig gedauert )

    Bei allen Verschlüsselungsverfahren (inkl. One-Time-Pad) ist es natürlich wichtig, dass der Schlüssel "gut" gewählt ist. Ein wichtige Eigenschaft dafür ist die Zufälligkeit. Ein normales /dev/random mag vielleicht für einfache Sachen ausreichen, ist aber leider nicht wirklich zufällig.
    Überhaupt nicht zufällig - wär hier die richtige Aussage

    Übrigens hat Bruce doch Recht. Denn alle Verschlüsselungsverfahren basieren auf zwei wesentlichen Grundelementen:
    • Die Wahrscheinlichkeit der Entschlüsselung, also einen zweiten Schlüssel zu finden, ist möglichst gering. Aber durch den Zufall ist es natürlich nicht ausgeschlossen den richtigen Schlüssel im ersten Versuch zu finden.
    • Im Fall einer systematischen Analyse muss die aufgewendete Rechenzeit größer sein, als Halbwertzeit der Information selbst. Dabei gilt zu bedenken, dass in der Zwischenzeit eine Steigerung der Rechenleistung um einen Faktor x stattfindet.
    Sicher heisst für mich: Nicht knackbar (insbesonders da ich nicht weiss, wie schnell der Computer von wem genau ist). Ausserdem gibts da noch das Problem, dass man im Normalfall nicht sagen kann, wie lange eine Information brisant bleibt...

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  7. #22
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von bischi
    Überhaupt nicht zufällig - wär hier die richtige Aussage
    Verwechselt ihr beiden da nicht /dev/random mit /dev/urandom?

    /dev/random liefert wirkliche Zufallszahlen, die z.B. aus Mausbewegungen, Zeitabständen der Tastendrücke und Netzwerkverkehr gelesen werden. /dev/random wartet mit der Lieferung weiterer Ergebnisse, wenn es nicht genug Entropie gesammelt hat. /dev/urandom steigt in diesem Falle auf einen normalen Zufallszahlengenerator um. Ist genug Entropie vorhanden, sind beide identisch.

    Und /dev/random nimmt es recht genau, was gute Daten für den Entropiepool sind. Gebt mal
    Code:
    od -x /dev/random
    ein und wartet, bis der Pool aufgebraucht ist (geht schnell), dann bewegt die Maus und tippt rum, viel mehr als 20 Bytes/s werdet ihr da trotzdem nicht rausbekommen.

  8. #23
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Wobei eine Mausbewegung extrem zufällig ist Ich mach zum Beispiel immer die selben hintereinander: Immer wieder hin zu den Smileys und dann zurück ins Textfeld: Etwa so

    Da nehm ich lieber atmosphärisches Rauschen (soll ja glaub ich auf CD erhältlich sein - musst mal in den CD-Laden gehen und nach "Tokio Hotel" fragen )

    MfG Bischi

    PS: Wenn Sie das nicht haben, frag halt nach "Killerpilze"

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  9. #24
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von bischi
    Wobei eine Mausbewegung extrem zufällig ist
    Du willst also im Ernst behaupten, dass du immer auf den Millimeter genau dieselben Bewegungen, in der selben Geschwindigkeit machst?

    Natürlich nimmt man, wie schon geschrieben, nur die niederwertigsten Bits der Messergebnisse, also das Rauschen.

  10. #25
    Registrierter Benutzer Avatar von J!0X
    Registriert seit
    15.08.2006
    Ort
    Dortmund
    Beiträge
    22
    Es hat sich hier eine sehr interresante Konversation entwickelt. Danke nochmal für eure Hilfe.
    MfG J!0X

  11. #26
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von J!0X
    Es hat sich hier eine sehr interresante Konversation entwickelt. Danke nochmal für eure Hilfe.
    Das war jetzt diplomatisch für "Ihr werden off-topic! Hört auf damit!"

  12. #27
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Ich habe übrigens mal eine Häufigkeitsanalyse der Buchstaben dieses Threads gemacht:
    Code:
    insgesamt 14078
    e 2053 = 14,5%
    n 1303 = 09,3%
    i 1135 = 08,1%
    s 1061 = 07,5%
    t  988 = 07,0%
    Verglichen hiermit passt das schon ganz gut.
    Also dieser Thead ist z.B. schon sehr gut für eine Häufigkeitsanalyse geeignet. In der Regel reichen schon 200 Wörter.

    Ich habe auch mal ein kleines Pythonskript geschrieben, dass die Verschlüsselung bricht:
    Es nimmt einfach an, dass am häufigsten das Leerzeichen und am Zweithäufigsten das kleine "e" vorkommt. Nun zählt es für die jewelige Vermutete Schlüssellänge die Buchstaben jeweils einzeln zusammen und schaut, wenn z.B. in einer Spalte (wie weiter oben gepostet) Q am häufigsten und T am zweithäufigsten ist, welcher Schlüsselbuchstabe ein ' ' zu 'Q' und welcher ein 'e' zu 'T' machen würde. Sind beide gleich, wird angenommen, dass der jeweilige Schlüsselbuchstabe gefunden wurde.
    Wenn für die Vermutete Schlüssellänge alle Buchstaben gefunden wurden, wird der Schlüssel ausgegeben. Ich habe als Eingabedatei ein HTML der Druckversion dieses Threads genommen und bis zu einer Schlüssellänge von 6 hat es den Schlüssel jedesmal herausbekommen. Bei längeren Schlüsseln reicht die Statistik nicht mehr aus.

    Es ist übrigens egal, ob Addition oder XOR genommen wird. Beide Verfahren sind gleichwertig.
    Hier mal der Code in Python, jedoch ohne weitere Kommentare:
    Code:
    def encrypt(buffer, key):
        keypos = 0
        cypher = []
        for ch in buffer:
            cypher.append( chr((ord(ch)+ord(key[keypos]))%256) )
            keypos = (keypos+1)%len(key)
    
        return "".join(cypher)
    
    def try_crack(cypher, keylength):
        hists = []
        for x in xrange(keylength):
            hists.append({})
        bin = 0
        retval = []
        for ch in cypher:
            hists[bin][ch] = hists[bin].setdefault(ch, 0) + 1
            bin = (bin+1)%keylength
        for hist in hists:
            hist = hist.items()
            hist.sort(lambda a,b:-cmp(a[1], b[1]))
            # Welcher Schlüsselbuchstabe macht ein ' ' zu unserem häufigsten Zeichen?
            test_space = chr((ord(hist[0][0])-ord(' '))%256)
            # Dito für 'e' und zweithäufigstes Zeichen
            test_e = chr((ord(hist[1][0])-ord('e'))%256)
            # Wenn beide übereinstimmen, ist es ein guter Kandidat für das Schlüsselzeichen
            if test_space == test_e:
                retval.append(test_space)
            else:
                return None
        return "".join(retval)
                
                
    
    x = open("a.html").read()
    
    cipher = encrypt(x,"test12")
    
    for i in xrange(1,10):
        key = try_crack(cipher, i)
        if key != None:
            print "Key might be",key
    #Ausgabe:
    # Key might be t
    # Key might be ttttt
    # Key might be test12
    #Die ersten beiden sind Fehltreffer, der dritte ist der richtige
    Geändert von Joghurt (18-08-2006 um 23:26 Uhr)

  13. #28
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Wenn du jetzt die verschiedenen Schlüsselversuche noch mit nem Wörterbuch abgleichen tätest, könnte man wohl auch längere Schlüssel knacken...

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  14. #29
    Registrierter Benutzer Avatar von J!0X
    Registriert seit
    15.08.2006
    Ort
    Dortmund
    Beiträge
    22
    Ziemlich interresantes Script, jedoch kann ich Python nicht
    Bin in C++ auch erst Mittelmäßig gut. Habe mein 890Seiten langes Buch erst bis Seite 450 oder so gelesen.
    Ich versuche gleich mal, das Script in C++ zu übersetzen

  15. #30
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von bischi
    Wenn du jetzt die verschiedenen Schlüsselversuche noch mit nem Wörterbuch abgleichen tätest, könnte man wohl auch längere Schlüssel knacken...
    Wer sagt, dass die Schlüssel Wörter sein müssen? Mein Programm könnte auch den Schlüssel 0x54 0x12 0x55 0x99 0xff finden... Oder einen rein zufällig gewählten.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •