XOR-Verschlüsselung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Donnerstag 20. April 2006, 16:47

Ich habe nur die Idee gehabt, einen sicheren Datentransfer zu machen,
der, wie man es nun mal gerne mag, zu (fast)100 % sicher ist...da ist nur die Frage: welches Schlüsselsystem nimmt man da? Deshalb das Interesse...
Gibt es noch mehr Verschlüsselungen (von denen ihr den Skript habt), die man nutzen kann?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 20. April 2006, 17:11

murph hat geschrieben:Ich habe nur die Idee gehabt, einen sicheren Datentransfer zu machen, der, wie man es nun mal gerne mag, zu (fast)100 % sicher ist...

Es gibt keine 100% sicheren Verschlüsselungen. Einige sind sicherer andere weniger. Und XOR ist weit davon entfernt sicher zu sein.

murph hat geschrieben:da ist nur die Frage: welches Schlüsselsystem nimmt man da? Deshalb das Interesse...

Ich würde es mit SSL Tunneln, ggf auch extern über Stunnel. Aber eigentlich nutze ich immer SSH's SCP/SFTP. Das ist sicher, schnell, gut getestet, weithin unterstützt und schon fertig benutzbar.

murph hat geschrieben:Gibt es noch mehr Verschlüsselungen (von denen ihr den Skript habt), die man nutzen kann?

Brauchst du eine Stream-Verschlüsselung oder eine Blockverschlüsselung? Wenn letzteres möglich ist, solltest du dir auf jeden Fall PyCrypto ansehen. Blowfish oder AES zu knacken sollte ein schwierigereres Unterfangen sein, als XOR.

Oder du kannst gleich die grpße Public-Key Maschinierie anwerfen: RSA, DSA, ElGamal.

Hängt einfach ab, was du brauchst. Von dem was du so gemeint hast, würde ich dir zu SSL raten.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
modelnine
User
Beiträge: 670
Registriert: Sonntag 15. Januar 2006, 18:42
Wohnort: Celle
Kontaktdaten:

Beitragvon modelnine » Donnerstag 20. April 2006, 17:35

Du kannst Dir auch mal yawPyCrypto angucken, was ich während meiner Zeit an der UdS als Wrapper für PyCrypto geschrieben hab, um gewisse Dinge wie Block-Ciphers "einfacher" nutzbar zu machen, oder auch für Public-/Private-Key Cryptographie. Ich hab yawPyCrypto lange nicht mehr angefasst; wenn's Probleme gibt, msg me. ;-)
--- Heiko.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 20. April 2006, 18:04

murph hat geschrieben:Ich habe nur die Idee gehabt, einen sicheren Datentransfer zu machen
Was meinst du mit sicher?
Willst du verhindern, dass jemand mitliest, oder willst du sicherstellen, dass die Nachricht nicht manipuliert wurde, oder beides?

Im ersten Fall bietet sich AES an, im zweiten Fall Assymetrische Verschlüsselung.

Für die, die sich fragen, warum XOR mit einmaligen zufälligen Schlüsseln perfekt sicher ist: z.B. kann die Nachricht "fl091jvcajgi3fhfal" sowohl "Stirb, Ungläubiger" als auch "Heute abend Party!" heißen; beides ist gleich wahrscheinlich.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Donnerstag 20. April 2006, 18:26

Die Aufgabe ist, dass die Datei nicht manipuliert werden kann, ohne sie unnütz zu machen. Ebenso stehen in ihr empfindliche Daten, wie (nur über include) die Datenbankverbindung zur MySQL.
Ich habe grade die Idee, den md5hash aus dem Text zu ziehen und zu vergleichen mit dem auf dem Server gelegenden Wert (über threading zuerst das ausrechnen lassen und danach den md5-hash vom skript zu ziehen und dem Server senden).
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 20. April 2006, 19:35

murph hat geschrieben:Ich habe grade die Idee, den md5hash aus dem Text zu ziehen und zu vergleichen mit dem auf dem Server gelegenden Wert (über threading zuerst das ausrechnen lassen und danach den md5-hash vom skript zu ziehen und dem Server senden).
Im Prinzip ist das auch das, was man mit signieren macht. Einziger, aber wichtiger Unterschied ist, dass die MD5 mit einem assymetrischen Verfahren verschlüsselt wird; jeder kann die MD5 entschlüsseln, aber nur der Sender kann sie verschlüsseln.

Denn ansonsten würde der Angreifer einfach den Text ändern und die MD5 anpassen.

Wie schon gesagt, schau dir PyCrypto oder yawPyCrypto an, anstatt das Rad neu zu erfinden.

Oder nimm SSL.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Donnerstag 20. April 2006, 19:56

ich dachte, md5 wäre genau anders.
Jeder kann es verschlüsseln, es ist aber unentschlüsselbar.
Und wenn er sowieso auf dem Server den hinterlegten md5-hash
bearbeiten kann, wird er auch problemlos in die datenbank reinkommen, also wäre das sinnlos....
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 20. April 2006, 21:03

murph hat geschrieben:ich dachte, md5 wäre genau anders.
Jeder kann es verschlüsseln, es ist aber unentschlüsselbar.
MD5 ist ein Hash. Jedem Text wird ein Wert zugeordnet. Und bei kryptographischen Hashes, wie MD5 eines ist, ist es nicht leicht möglich, zu einem gegebenen Hash einen Text zu finden; oder alternativ einen Text so zu ändern, dass die Hash gleichbleibt (bei MD5 ist es inzwischen gelungen, auch SHA-1 wackelt)

Mit Verschlüsselung meinte ich wirklich das: der Wert wird nochmal verschlüsselt. Allerdings kann nur einer diese Verschlüsselung durchführen, jeder kann sie überprüfen.

Und wenn er sowieso auf dem Server den hinterlegten md5-hash
bearbeiten kann, wird er auch problemlos in die datenbank reinkommen, also wäre das sinnlos....
Ich verstehe nicht ganz, was du meinst. Ich nahm an, du wolltest sicherstellen, dass ein Befehl vom Client zum Server nicht manipuliert werden kann. Wie soll der Server da die MD5 schon vorher wissen?
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Donnerstag 20. April 2006, 21:36

Der Skript ist immer der gleiche, dessen md5-hash ermittelt wird.
Deshalb würde ich vor dem Aushändigen mir ankucken, wie der hash jedes mal lauten wird (gegebenfalls als *.txt auf dem server geschützt oder inner datenbank, je nach verwendung).
Dann wird mir der hash zugesendet und ich kann vergleichen...
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Donnerstag 20. April 2006, 22:50

Ähh... Dann kannst du doch auch gleich das Skript einmalig auf den Server packen.
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Freitag 21. April 2006, 15:01

Der Skript ist lang und dauert, bis er ausgeführt ist.
Als ich letztens eine Beschwerde bekommen habe (ich teile mir den Server),
Dachte ich, dass ich da ja etwas ändern könnte (aber zu der Zeit war echt "Hochbetrieb")
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 21. April 2006, 16:50

murph hat geschrieben:Der Skript ist lang und dauert, bis er ausgeführt ist.

Und wenn du das Skript erstmal auf den Server hochlädst, dessen MD5 Signatur überprüfst und es dann ausführst, ist es schneller, ja?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Sonntag 23. April 2006, 14:05

Ne, wenn ich den Skript auf den Server hochlade, damit sich die Gamer diesen downloaden. Der wirs lokal ausgeführt, dass Ergebnis in die MySQL-Datenbank eingetragen, aber dass nur dann, wenn der md5-hash auch stimmt von dem Skript, den sie auf ihrem PC lokal ausführen, um das Umschreiben des Skkriptes zu verhindern (weil dann falsche Dateien in die Datnebank geraten könnten).
Eine Alternative wäre natürlcih, den Skript zu schützen. Aber das würde sich um eingiges schwieriger gestallten.
Benutzeravatar
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Beitragvon Joghurt » Sonntag 23. April 2006, 16:34

murph hat geschrieben:Ne, wenn ich den Skript auf den Server hochlade, damit sich die Gamer diesen downloaden. Der wirs lokal ausgeführt, dass Ergebnis in die MySQL-Datenbank eingetragen, aber dass nur dann, wenn der md5-hash auch stimmt von dem Skript, den sie auf ihrem PC lokal ausführen, um das Umschreiben des Skkriptes zu verhindern (weil dann falsche Dateien in die Datnebank geraten könnten).
Und wie soll das gehen?

Ich merke mit die MD5, ändere das Skript, führe es aus, und sende die alte (korrekte) MD5 mit...
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Beitragvon murph » Sonntag 23. April 2006, 17:01

Genau das soll nicht gehen. Man soll nicht einfach eine alte md5 benutzen können, sondern er soll automatische einen generieren, den er dann schickt.
Man könnte auch den md5 nur von einem Part der Datei nehmen (es müsste der Größte sein) und den jedes mal überprüfen...oder ich erstelle eine *.exe Datei, die sonst unter wine ausgeführt wird...

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder