Seite 4 von 4

Verfasst: 08.03.2007 20:33
von Rings
na da haste mal nen richtig 'schwulen' Code erstellt.. :lol:

Code: Alles auswählen

ForEach gay()
    For t = 0 To #Gay_Data-1 ; data
      For i = 0 To #Gay_Elementar-1 ; elementar
        For o = 0 To #Gay_Char-1 ; bit

Verfasst: 08.03.2007 20:35
von Kaeru Gaman
:lol: aber echt :lol: :lol:

Verfasst: 08.03.2007 20:35
von Kiffi
<OT>
Rings hat geschrieben:na da haste mal nen richtig 'schwulen' Code erstellt.. :lol:
Mist! Du bist mir zuvorgekommen! :D

</OT>

Grüße ... Kiffi

Verfasst: 09.03.2007 18:57
von FloHimself

Verfasst: 13.03.2007 22:43
von Froggerprogger
@Leonard:
Ein paar Dinge, die mir aufgefallen sind (leider zerpflücke ich damit deinen Algorithmus, nimms mir bitte nicht übel :wink: )

Das ganze scheint eine Art PRG-basierter Chiffre zu sein. Aus dem Passwort generierst du einen Key (mittels MD5 - was sicherlich als ausreichend zufällig einzuschätzen ist) und verrechnest diesen dann Block für Block mit dem zu verschlüsselnden String. Dabei ist ein Block bei dir 1 Char, was sehr wenig ist. Damit wird bei Verwendung ein und desselben Passworts derselbe Buchstabe an derselben Stelle auf denselben Wert abgebildet, also beispielsweise:

Puter -> ];UA<
Peter -> ]KUA<
Pater -> ]OUA<

Das ist schon mal übel, denn strukturelle zusammenhänge zwischen Texten sollten niemals im Chiffre erkennbar sein. Z.B. wird damit plaintext-recovery unter chosen plaintext attacks sehr einfach:
Also wenn jemand beliebig viele plaintexte mit deinem Passwort verschlüsseln darf (ohne dieses zu kennen, also z.B. per öffentlicher Anfrage an einen Server), kann er leicht den Plaintext herzaubern, indem er einfach Buchstabe für Buchstabe voranschreitet, also erst den ersten Buchstaben erraten, dann den Zweiten usw.

Noch schlimmer ist folgende Linearität:
Wenn A auf l abgebildet wird, dann B auf k und C auf j usw., also 1 Zeichen weiter bildet auf ein Zeichen vorher ab.
Wenn du nun mit immer demselben Passwort z.B. 100 Nachrichten codierst und der Angreifer kennt auch nur eine einzige Plaintext/Chiffre-Kombination, so kann er damit sämtliche anderen Nachrichten entschlüsseln, ohne dass Passwort zu benötigen.

Auch andere Attacken für plaintext-recovery scheinen mir auf den ersten Blick möglich, allerdings habe ich jetzt nicht soviel Zeit, da mehr zu zu schreiben.

plaintext-indistinguishable ist dein Algorithmus ebenfalls nicht, denn derselbe Plaintext wird unter demselben Passwort auf immer denselben Chiffre abgebildet, da du nirgends eine Randomisierung nutzt.

Auch im Algorithmus sind ein paar seltsame Dinge. Z.B. überschreibst du zigmal die Chars an den Stellen, denn bspw. t*i*o = 0 oder auch t*i*o = 16 ist für viele Kombinationen von t,i,o erfüllt, d.h. nur der letzte Wert wird überhaupt genutzt, alle anderen sind nur verschenkte Rechenzeit.

Das Passwort wird allerdings aus einem Chiffre niemand bestimmen können, ohne MD5 zu knacken, da dein Key schließlich per MD5 aus dem Passwort generiert wird. Allerdings könnte trotzdem durchaus der verwendete Key aus mehreren bekannten Plaintext/Chiffre-Paaren rekonstruiert werden (ohne dessen Passwort zu erhalten)

Alles in allem würde ich also nicht zur Verwendung dieses Algorithmus raten, um damit irgendwelche sensiblen Daten zu schützen.
Es gibt einfache Verfahren, die zudem effizienter und sicherer sind.

Ein Gay-Algorithmus sollte im Gedenken an Freddy Mercury wesentlich sicherer sein, quasi ein Safer-Gay-Algorithmus...