Verschlüsselung (AES etc.) für PB 4

Fragen und Bugreports zur PureBasic 4.0-Beta.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag 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! :)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> per reverse engineering analysierbare

das würde mich mal näher interessieren.
wie funktioniert das? gibts da beispiele/abhandlungen drüber?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
dussel
Beiträge: 49
Registriert: 15.09.2004 12:52
Wohnort: Bei Frankfurt/Main

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
dussel
Beiträge: 49
Registriert: 15.09.2004 12:52
Wohnort: Bei Frankfurt/Main

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag 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
Zuletzt geändert von roherter am 04.08.2006 18:13, insgesamt 1-mal geändert.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag 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.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Deeem2031:wusste icht nicht danke. :allright:
Habs oben geändert :freak:
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Gesperrt