Seite 2 von 3

Verfasst: 02.08.2006 12:20
von real
Ich will nicht meine Zeit damit vergeuden, selbst möglichst unsichere (und per reverse engineering analysierbare) Kryptoalgorithmen zu basteln. Habt ihr auch konstruktive Beiträge?

@Volker: hört sich gut an, DANKE! :)

Verfasst: 02.08.2006 14:29
von Kaeru Gaman
> per reverse engineering analysierbare

das würde mich mal näher interessieren.
wie funktioniert das? gibts da beispiele/abhandlungen drüber?

Verfasst: 02.08.2006 15:48
von dussel
@Kaeru Gaman:

> die erreiche ich aber auch, indem ich eine eigene verschlüsselung progge.
> es gibt so viele variationsmöglichkeiten, da muss dann erstmal einer
> hinter den algorithmus steigen, wenn das kein überall verwendeter ist,
> und dann überlegt sich einer schon, ob sich das überhaupt lohnt.

Sicherlich wird ein potentieller Angreifer sich den Kosten-Nutzen Effekt überlegen. Sollte der Nutzen jedoch überwiegen wird "Security by Obscurity" keinem ernsthaften Angriff stand halten.

Ein sicheres Verfahren benötigt keine Geheimhaltung des Algorithmus :)

> das würde mich mal näher interessieren.
> wie funktioniert das? gibts da beispiele/abhandlungen drüber?

Auf verschlüsselte Inhalte:
http://de.wikipedia.org/wiki/Kryptoanalyse

Reverse Engineering von Anwendungen:
http://de.wikipedia.org/wiki/Reverse_Engineering

Verfasst: 02.08.2006 16:11
von Kaeru Gaman
> Ein sicheres Verfahren benötigt keine Geheimhaltung des Algorithmus

das leuchtet mir ein. :D

nungut.
wenn ich mir ein standard-verfahren ausdenke, dann würde nach offenlegung des algorithmus nur noch der schlüssel alleine zwischen den cracker und der entschlüsselung stehen.

selbst wenn der schlüssel 32bit hat, wäre dies eine endliche anzahl an crack-versuchen.

aber:
da ich ja zusätzlich die möglichkeit habe, den algorithmus geheimzuhalten,
auch in dem ich die decrypt-sequenz im programmcode selber kryptisiere...
sollte das nicht für die meisten belange mehr als ausreichend sein?

Verfasst: 04.08.2006 11:50
von dussel
wenn ich mir ein standard-verfahren ausdenke, dann würde nach offenlegung des algorithmus nur noch der schlüssel alleine zwischen den cracker und der entschlüsselung stehen.
Ja, die bekannten kryptographische Funktionen wie z.B. FIPS 46-2 (AES) sind dokumentiert und öffentlich verfügbar. Nur der (unbekannte) geheime Schlüssel fehlt dem potentiellen Angreifer zur entschlüsselung der verschlüsselten Information.

Kryptologen orientieren sich meist am Kerckhoffs-Prinzip (siehe http://de.wikipedia.org/wiki/Kerckhoffs-Prinzip), das lautet:
„Die Sicherheit eines Kryptosystems darf nicht von der Geheimhaltung des Algorithmus abhängen. Die Sicherheit gründet sich nur auf die Geheimhaltung des Schlüssels.“
da ich ja zusätzlich die möglichkeit habe, den algorithmus geheimzuhalten,
auch in dem ich die decrypt-sequenz im programmcode selber kryptisiere...
sollte das nicht für die meisten belange mehr als ausreichend sein?
Implementierst du in deiner Software einen eigenen Algorythmus, stehen einem potentiellen Angreifer zwei Angriffsverfahren zur Verfügung:
- Mathematischer Angriff auf die verschlüsselte Information
- Analyse deiner Software

Implementierst du beispielsweise eine simple XOR oder Atbash (siehe http://de.wikipedia.org/wiki/Atbash) Verschlüsselung von Klartext, wird ein sich bereits bei einer groesseren Textmenge über rein statistische Verteilung (z.B. Stärkere Verbreitung des Buchstabens "e" im Sprachraum denn "ö") ein Grossteil der Substitutionen ermitteln lassen. Selbst aufwändigere Methoden bieten einem gestandenem Kryptologen eine grosse Angriffsfläche.

Da Software die Ver-/Entschlüsselung implementieren muss, genügt eine Analyse der Software um den Algo zu verstehen. Selbst wenn der Prozess wiederum verschlüsselt wird, ist er zu irgendeinem Zeitpunkt im Speicher und kann durch einen Debugger ausgelesen werden. Ein Cracker geht auch nicht anders vor.

Selbstverständlich hast du recht, das alles in einer Relation zueinander steht. Niemand wird sich die Mühe machen den Algo softwareverschlüsselter Bookmarks zu knacken. Wenn es jedoch um die Übermittlung sensibler Informationen (PINs / Accounts / Kreditkartennummer und ähnliches) über das Internet geht, wie sieht es dann aus? Ganz zu schweigen von professionellen Anwendungen, die z.B. elektronische Tickets zum selbstausdrucken generieren sollen.

Verfasst: 04.08.2006 12:52
von Kaeru Gaman
ich stimme dir voll zu.

für extrem sensible daten würde ich mich auch monatelang mit der materie auseinandersetzen,
und nicht einfach irgendwelche libs/includes verwenden, die ich nicht wie meine westentasche kenne.
denn zumindest müsste ich sie analysieren und verstehen, und sagen können:
ja, das verfahren ist sauber umgesetzt, jetzt kann ich die sicherheit unterschreiben.

in meinen augen stehen das bedürfnis nach hoher sicherheit und
die verwendung einer unbekannten hobby-lib im krassen gegensatz.

ich wage es auch zu bezweifeln, dass mehr als einzelne ausnahmen hier in der hobby-progger-szene
überhaupt den BEDARF für eine derart hohe datensicherheit haben.

Verfasst: 04.08.2006 13:11
von roherter
Habe mal ne dll aus der aes-lib erstellt weil die lib die ich gefunden habe nur unter 3.94 funktionierte vielleicht kanns jemand gebrauchen.
http://www.leolasoft-herter.de/aes.dll

der code dazu:

Code: Alles auswählen

If OpenLibrary(0,"aes.dll")
  Erge.l = GetFunction(0, "AES_Crypt_File")
  start = GetTickCount_()
  te.s="toto"
  key.s = MD5Fingerprint(@te, 4)
  InFile.s = "e:\wc3.rar"
  EncryptFile.s = "e:\wc3.enc"
  DecryptFile.s = "e:\wc3.dec.rar"
  
  CallFunctionFast(Erge, 0, InFile, EncryptFile, key, 8192*2)
  CallFunctionFast(Erge,1, EncryptFile, DecryptFile, key, 8192*2)
  DeleteFile(DecryptFile)
  RenameFile(DecryptFile + ".dec", DecryptFile)
  Debug "Milliseconds: "+Str(GetTickCount_()-start)
  If MD5FileFingerprint(InFile) = MD5FileFingerprint(DecryptFile)
    Debug "ok"
  Else
    Debug "error"
  EndIf 
Debug Ergebnis 
CloseLibrary(0)
EndIf

Verfasst: 04.08.2006 13:35
von real
@roherter: Verdammt, dass ich darauf nicht gekommen bin. Danke! :D

Grds. dauert es mir persönlich einfach zu lange, mir einen Kryptoalgo auszudenken und den zu proggen. Da ich wusste, dass es für PB3.94 eine Userlib für AES gab wollte ich in diesem Thread einfach nur wissen, ob sich schon jemand an eine solche für PB4 gewagt hat. Also hab ich schon ziemlich genau formuliert, wonach ich suche.

Verfasst: 04.08.2006 16:09
von Deeem2031
In dem Code ist ein kleiner Fehler:

Code: Alles auswählen

  *te.s="toto"
  key.s = MD5Fingerprint(@te, 4)
*te und @te geben was verschiedenes aus ;)

So isses besser:

Code: Alles auswählen

  te.s="toto"
  key.s = MD5Fingerprint(@te, 4)

Verfasst: 04.08.2006 18:12
von roherter
Deeem2031:wusste icht nicht danke. :allright:
Habs oben geändert :freak: