One-time-pad-Crypter

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
STiGMaTa_ch
User
Beiträge: 32
Registriert: Sonntag 14. Mai 2006, 22:58
Wohnort: Rueti ZH, Schweiz

Python Master 47 hat geschrieben:[...]Das kann aber nur sein, wenn die Zufallsdaten absolut unabhängig generiert wurden z.B. thermisches Rauschen
Könnte man da auch Akustische Aufnahmen nehmen? Also z.B. ein billigst Mikrofon hinstellen und einfach einige Zeit die Umgebung aufnehmen?

Das ist doch auch völlig Zufällig was da aufgenommen wird und nicht reproduzierbar...

Lieber Gruss
STiGMaTa
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus. (André Kostolany)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

also wenn du den schlüssel schon geheim überreichen kannst, musst du den nicht auch noch verschlüsseln!
nur wenn die überreichung unsicher ist, hat das noch sinn, wenn auch nur geringfügig^^
außerdem sollte man das noch immer auffüllen, genaue dateigrößen sinf auch schon verräterisch!
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

@STiGMaTa_ch

Ja das geht auch. Das sollte absolut zufällig sein.

@murph

Aus deinem Post kann ich schließen das du One Time Pad absolut nicht verstehst.
mfg

Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

welchen part sollte ich nicht verstehen?
solange eine feste regel gilt, aus wie vielen zeichen wie viele werden,
kannst du diese größe ausrechnen und hast dann die länge der datei!
genau gleich lang sind kaum dateien, (fast) immer sind es bei der gleichen länge die gleiche datei!
das war abert ein exkurs, wie man verhindert, das zu encrypten, wenn man eine kleine auswahl hat.
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Du verstehst es wirklich nicht.

Wenn die Zufallsdaten ABSOLUT zufällig sind, dann kann alles mit gleicher Wahrscheinlichkeit in der Datei sein.

Man hat z.B. die Größe von 1GB, dann kann alles in der Datei sein, was 1 GB groß ist, z.B. ein komprmierter Film James Bond oder Gozilla oder XMen3 oder Friedhof der Kuscheltiere oder Enemy at the Gates oder The Ring1 oder ein 1 GB großés Programm oder ein 1Gb großes Rainbowtable oder 1 GB lange Wordlist oder Moto GP 3 oder Mafia oder oder oder. Da gibt es 1000 te Möglichkeiten, woher willst du wissen was es nun ist?

Noch ein Beispiel:

Größe 20 Bytes

Das kann sein:

Hallo wie geht es dir
HeuteistSonnigerTag!!!
aabbccddeeffgghhiijj
lollollollollollollola
Pythonistabsolutgeil
Was ist One Time Pad
Wie heiß ich nochmal
usw.

Sonst wäre One Time Pad unter den Bedingungen, dass die Zufallsdaten sicher übergeben werden, nie 2 mal benutzt werden und absolut zufällig ohne jede Abhängigkeit sind, nicht unknackbar. :wink:
mfg

Thomas :-)
Benutzeravatar
STiGMaTa_ch
User
Beiträge: 32
Registriert: Sonntag 14. Mai 2006, 22:58
Wohnort: Rueti ZH, Schweiz

@murph
Beim durchlesen deiner Posts habe ich auch das Gefühl bekommen, dass du nicht verstanden hast wie ein One-Time Pad funktioniert.

In einem früheren Post schreibst du, dass wenn es eine feste Regel zum verschlüsseln gibt und man die Verschlüsselung hat, man den Ursprungstext auch mathematisch knacken kann.

Dann machen wir doch mal folgendes Experiment:

Python Master 47 und ich haben uns kurz getroffen. Dabei habe ich ihm einen 4 Byte grossen Schlüssel übergeben, welcher aus einer absolut zufälligen Sequenz besteht.

Weiterhin habe ich ihm gesagt, dass ich ihm hier im Forum mitteilen werde, was er mir einkaufen soll.

Das werde ich hiermit tun:

Python Master 47, kaufe mir den Gegenstand: Turm

Deine Aufgabe lieber murph ist es nun, zu sagen was ich anstelle Turm gemeint habe.

Und damit du möglichst viele Anhaltspunkte hast um das Rätsel zu knacken, hier mal eine Auflistung was du alles weisst (oder gleich erfährst):

- Das Objekt das ich haben möchte hat genau 4 Buchstaben.
- Zufälligerweise ergibt mein gewünschtes Objekt verschlüsselt mit dem ausgetauschten Schlüssel genau Turm, Es hätte aber auch Xgh8 sein können oder sonstwas.
- Den Verschlüsselungsmechanismus lege ich offen:
Für jeden Buchstaben verwende ich dessen Ascii Code. Genau so verfahre ich auch mit dem Schlüssel, welchen ich vorab ausgetauscht habe. Dann verwende ich jeweils ein xor und aus der erhaltenen Zahl mache ich wieder einen Ascii Wert. Hier ein Codebeispiel:

Code: Alles auswählen

#!/usr/bin/python

import operator

cleartext = ['G','e','k','n','a','c','k','t']
ciphertxt = ['R','a','M','l','p','o','e','B']

for a in range(len(cleartext)):
    print chr(operator.xor(ord(cleartext[a]), ord(ciphertxt[a]))),
- Und als Non-Plus-Ultra liefere ich dir sogar noch den Unverschlüsselten Text. Allerdings musst du herausfinden welcher der Drei Worte nun das gewünschte Objekt ist und welche davon hinzugedichtet sind: Buch, Bett, Bank.

Du hast also von mir Eine Gruppe von Wörtern, von denen EINES mein gewünschtes Objekt darstellt. Du hast den Verschlüsselungsmechanismus (ein XOR kehrt man mit einem XNOR um) und du weisst wie der verschlüsselte Text lautet.

Somit hast du eigentlich alles bis auf den zufällig erstellten Verschlüsselungs Text. Und trotzdem wirst du es nicht schaffen sagen zu können, was mir der Python Master 47 denn nun besorgen soll.

Lieber Gruss
STiGMaTa
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus. (André Kostolany)
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Da warst du aber sehr freundlich Sigma! :wink:

Nur um das nochmal zu ergänzen:

Murph:
Du hast alles 3 und wirste es nicht rausbekommen(Unter der Vorraussetzung, das die Zufallsdaten wirklich zufällig sind) du könntest nur raten.

Jetzt könntest du ja folgendes sagen:

Ja und ist mir doch egal, ich kann zwar nicht das richtige Wort rausbekommen, aber ich nehme einfach alle 3 Möglichkeiten.

Dazu muss man folgendes sagen. Du wirst nie soviel Infos bekommen sprich die Ausgangsworte etc. Du bekommst in der Realität nur die Verschlüsselte Nachricht. Das heißt es kann nicht nur Bett, Bank und Buch sein sondern auch Ball, Keks, Tuch, Hemd, Hose, Bild, Saft, Band, Dvds, Geld etc.
Da gibt es 1000 te Möglichkeiten und alle sind gleich Wahrscheinlich.
mfg

Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

naja, das ist aber auch eine möglichkeit, dateien zusammzufassen.
wer sich schon einmal kaza, sheraza, xmule uä angekuckt hat, wird sehen, dass die lieder nur dadurch zusammengefasst werden, dass sie die gleiche länge haben. der name ist egal, solange jedes lied 3,258,561 bytes lang ist...
also filme, deren qualität man kennt, kann man entschlüsseln.
das war aber auch nur ein gedankenspiel ohne realer anwendung, da wenn man weiß, was es ist, man es nicht mehr zu entschlüsseln bbrauch (mit dem passwort kann man ja auch nichts anfangen ;) )
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Ok ich gebs auf. Les dir am besten nochmal alles Posts durch und geh auf wikipedia und google mal nach One Time Pad.

Waren meine Erklären denn so schlecht, das man die Beispiele nicht versteht? :?
mfg

Thomas :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

murph hat geschrieben:wer sich schon einmal kaza, sheraza, xmule uä angekuckt hat, wird sehen, dass die lieder nur dadurch zusammengefasst werden, dass sie die gleiche länge haben. der name ist egal, solange jedes lied 3,258,561 bytes lang ist...
Falsch: xMule ist ein eDonkey-Client, der Dateien anhand eines Hashes identifiziert, dieser wird aus dem Inhalt der Datei generiert, nicht aus ihrer Länge. Shareaza unterstützt ebenso das eDonkey-Protokoll und auch das BitTorrent-Protokoll, welches die Datei in Chunks teilt und diese Chunks haben selbst nochmal Hashes.

Davon abgesehen hat das mit One-Time-Pad nichts zu tun.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Ich glaube, dass das Problem darin besteht, dass izr nicht versteht, dass ich verstehe!
Ich verstehe sowohl das Prinzip als auch die alltägliche Anwendung, nur eines,EINES habe ich mit der Filelänge behaupten wollen: das man daran Dateien WIEDERerkennen könnte.
DAS WAR ABER ALLES NUR EIN GEDANKENSPIEL und einige scheinen immer noch nicht begriffen zu haben, dass nun mal das kein Zeichen der unsicherheit von xor sein soll, sondern nur ein kleiner gesponnender Gedankengang.
OK?
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

murph hat geschrieben:sondern nur ein kleiner gesponnender Gedankengang.
OK?
Der aber falsch ist. :lol:

Ich will mich mit dir nicht streiten, ich wollte dir nur klarmachen, dass das nicht geht, mit dem Wiedererkennen. :wink:
mfg

Thomas :-)
Benutzeravatar
STiGMaTa_ch
User
Beiträge: 32
Registriert: Sonntag 14. Mai 2006, 22:58
Wohnort: Rueti ZH, Schweiz

murph hat geschrieben:[...]EINES habe ich mit der Filelänge behaupten wollen: das man daran Dateien WIEDERerkennen könnte.
DAS WAR ABER ALLES NUR EIN GEDANKENSPIEL[...]
Also jetzt bin ich es, der nicht versteht was du meinst ;-)

Erläutere mir doch bitte anhand eines Beispieles was du damit meinst. Mir erschliesst sich nähmlich nicht wie man anhand einer Dateigrösse auf deren Inhalt schliessen kann.

Mal ein einfaches Beispiel. Nachfolgend zwei Hexdumps von XOR verschlüsselten Dateien. Eines ist ein 10x10pixel grosses Gif File welches einfach eine gelbe Fläche darstellt. Das andere ist ein normales Textfile mit folgendem Inhalt (Dieser Sinnlose Text ist ganz genau 49byte lang.).

Dummerweise sind beide gleich gross (49byte). Kannst du mir nun anhand deiner Theorie erklären welcher Hexoutput (zur bessern Darstellung in diesem Forum) nun das Textfile ist und welches das die Grafik ist?

Code: Alles auswählen

0000000 3f67 aff6 5239 670a 7a45 ea80 2d03 1487
0000010 ffff 2103 04f9 a36b f250 2c02 74b0 ea34
0000020 b673 5b99 0202 8c08 a98f edcb 630f dd2b
0000030 f03b
0000031

0000000 a98f 387a b139 400a 300a 7080 7823 1257
0000010 e54f 2106 04f9 63b5 40a0 2c82 2604 f6ab
0000020 840a 0a0a 0205 6139 2ef8 e8c9 6e0f f02e
0000030 d3e8
0000031
Lieber Gruss
STiGMaTa
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus. (André Kostolany)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

ok, wenn wir nun das weiterspinnen, hast du recht.
aber denken wir an ein lied von einer cd, qualität = orginal.
nun habe ich auf www.5-kastner.gmxhome.de/Marvin/notify.wav
hinterlegt,
www.5-kastner.gmxhome.de/Marvin/notify2.wav
ist nun verschlüsselt!
wenn du über python beide downloadest und len(a)==len(b) erfragst, sollte die Dateilänge identisch sein!
Das geht aber nur bei Liedern oder anderen Dateien einer gleichen Quelle, und nicht selbsterstellte wie texte!
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Ja eben nicht, weil es auch alles anderen sein kann, was z.B. 3,394 Mb groß ist. Und du bekommst ja nie die unverschlüsselte Datei, sondern immer nur die verschlüsselte und dei sollst du ja entschlüsseln.
mfg

Thomas :-)
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

da hast du recht.
Antworten