Autor Beitrag
-delphin-
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Do 26.04.07 20:39 
Servus (;
Ich habe ein Verschlüsselungsverfahren programmiert, was auf RandSeed und der damit verbundenen Zahlenreihe basiert. RandSeed wird durch ein Passwort ermittelt, deren Rechnung im Moment wiefolgt aussieht:

ausblenden Quelltext
1:
errechnet:=errechnet*(count*ord(Passwort[count]))+(count*ord(Passwort[count]));					


Count ist die Laufvariable - das ganze steht in einer for-do-to-Schleife.

Meine Frage lautet jetzt, ob jemand einen Vorschlag hat, die Errechnung des RandSeeds so schwer wie möglich zu machen und somit das Prog sicherer, vielleicht mit Wurzel oder so?
Wichtig ist eigentlich bloß, dass beim gleichen Passwort auch immer die gleiche Zahl für RandSeed ermittelt wird und, dass es eben möglichst schwer ist.

Gruß & thX for help :D,
delphin
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Do 26.04.07 21:02 
Solange das Verschlüsselungsverfahren bekannt ist, nützt diese Art der Verschlüsselung gar nichts,
da ich locker per Bruteforce alle Möglichkeiten von Low(RandSeed) bis High(RandSeed) durchprobieren kann.
-delphin- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Do 26.04.07 21:14 
Ja gut BruteForce kannste immer bringen...
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Do 26.04.07 21:31 
Okay, wie du meinst. Verfeinere die RandSeed-Generation so wie du willst, gib mir den Verschlüsselungsquelltext und ich entschlüssele dir einen deutschen Text, mit einem beliebigen Passwort, innerhalb von 5 Minuten. ;)
-delphin- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Do 26.04.07 21:39 
der witz ist ja, dass du den quelltext nicht haben wirst Oo Dazu kommt, dass du normalerweise selbst die information mit randseed etc nicht hast....
Aber bitte:

ausblenden Quelltext
1:
kSv(²—pÒñÝ‹ ‰Bec]Â-‘²HêYÿº€‰J4Ÿ²e>					


gL, hF ;)
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 26.04.07 22:11 
Es geht darum, dass man das Programm zum verschlüsseln hat -> debuggen oder einfach eingie sachen verschlüsseln.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 26.04.07 22:14 
Wie du hier zum Thema Verschlüsselung immer wieder finden kannst: Die Sicherheit eines Verfahrens DARF nicht auf der Geheimhaltung des Algorithmus basieren (da das unmöglich ist), sondern lediglich auf der Sicherheit des eingesetzten Passworts. Da dein Passwort immer genau EINE Zahl zwischen 0 und MaxInt ist, ist dein Verfahren ... naja ... von der Sicherheit her ganz weit unten ... ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
-delphin- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Do 26.04.07 22:25 
Das soll heißen? Müsste ich es in irgendeiner Form umschreiben oder ist das nicht möglich? Wie soll ein Passwort aussehen, das 'sicherer' ist?
Achja, gelöst hat es noch keiner :P
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 26.04.07 22:34 
Benutze bitte die suche. Es wird hier keiner Versuchen das was du da gepostet hast zu entschlüsseln, aber für dich mach ich es mal:
Text: Delphi-Forum
Password: test

Und nu beweise mit mal, dass es nicht durch irgendeine Verschlüsselung möglich ist aus den beiden Daten oben genau das zu erzeugen was du unten als verschlüsseltene String stehen hast.

Gib mir das Programm, dann entschlüssel ich dir das...

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
-delphin- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Fr 27.04.07 14:43 
user profile iconuall@ogc hat folgendes geschrieben:

Und nu beweise mit mal, dass es nicht durch irgendeine Verschlüsselung möglich ist aus den beiden Daten oben genau das zu erzeugen was du unten als verschlüsseltene String stehen hast.


Das ist nicht der Sinn des Verschlüsselns, dir zu beweisen, dass das, was du geraten hast, falsch ist. Übrigens, wie überflüssigerweise zu erwähnen, es ist falsch.

Im Anhang die .exe und die .sec-Datei.
Einloggen, um Attachments anzusehen!
Sirke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 208
Erhaltene Danke: 2



BeitragVerfasst: Fr 27.04.07 17:46 
user profile icon-delphin- hat folgendes geschrieben:
Das ist nicht der Sinn des Verschlüsselns, dir zu beweisen, dass das, was du geraten hast, falsch ist. Übrigens, wie überflüssigerweise zu erwähnen, es ist falsch.

Streng genommen ist genau das der Sinn der Kryptographie! Denn nur wenn du außschließen kannst, dass diese Lösung nicht die richtige Lösung ist, kannst du behaupten, dass dein Verfahren eindeutig ist! Alles andere wäre eh eine unsichere Verschlüsselung!

Letzlich wirst du mit Zufallszahlen die mit Delphi erzeugt werden wenig erreichen können! Denn du wirklich die Sicherheit steigern willst, dann solltest du einen Pseudozufallszahlengenerator mit diesen Zufallszahlen speisen! Bei einem solchen kannst du, wenn er gut ist (auch wenn ich bezweifel, dass du es schaffen wirst, weil sich daran momentan Genies die Köpfe einrennen), von Sicherheitsprechen!

Die Random()-Funktion von Delphi ist zwar auch ein solcher, doch hat er zu wenige Ausgangsituationen, die du mittels RandSeed festlegen kannst!
-delphin- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Fr 27.04.07 18:09 
Soll heißen, wenn RandSeed bei Kommazahlen oder noch besser bei irrationalen Zahlen starten würde, wäre es sicher?

Wie bitte soll man ausschließen können, dass das nicht die Lösung ist? Gib mir 5 Minuten und man programmiert ein Programm, das genau das bei dem Quelltext zur Lösung hat...
Sirke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 208
Erhaltene Danke: 2



BeitragVerfasst: Fr 27.04.07 18:22 
user profile icon-delphin- hat folgendes geschrieben:
Soll heißen, wenn RandSeed bei Kommazahlen oder noch besser bei irrationalen Zahlen starten würde, wäre es sicher?

Wenn dazu kommt, dass es bei jeder unterschiedlichen Zahl auch unterschiedliche Ergebnisse liefert würde ich sagen: JA, wobei ich eher "ja, es isch sicherer, als ohne" sagen würde.

Wenn Randseed 2^256 (weil es heute Standard ist) unterschidliche Startpositionen hätte und daraus unterschidliche Zufallsreihen liefern würde und diese nicht zurück- oder weiterrechenbar sind, dann wäre es schon sehr sehr gut!
Silas
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 478

Windows XP Home
Delphi 2005, RAD Studio 2007, MASM32, FASM, SharpDevelop 3.0
BeitragVerfasst: Fr 27.04.07 18:52 
Ich weiß nicht, ob die Idee sinvoll ist, aber:
Man könnte Ja ein Passwort, z.B. "Hallo", nehmen und den ANSI-Code von "H" als RandSeed verwenden, dann die "a"-te Zufallszahl errechnen, als RandSeed einsetzen, dann die "l"-te Zufallszahl und so weiter. Und wenn man das "o" auch hat, die nächste Randseed dann tatsächlich verwenden.

Silas

//EDIT: Das würde aber auch nur dann funktionieren, wenn der Code an sich nicht die Schwachstelle ist, sondern das PW

_________________
Religionskriege sind nur Streitigkeiten darüber, wer den cooleren imaginären Freund hat ;-)
Sirke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 208
Erhaltene Danke: 2



BeitragVerfasst: Fr 27.04.07 19:10 
@Silas: Auch das ist nicht wirklich eine verbesserung der Sicherheit! RandSeed ist ein 32-Bit Integer, also verwendet man so zu sagen einen 32-Bit-Schlüssel. Wenn man den Start um n Stellen verschiebt, dann muss das um 2^32 Stellen sein, damit man einen 2^64-Bit-Schlüssel erhält... diese 2^32 Stellen durch zu laufen würde eine "Ewigkeit" dauern!

Durch das Verschieben um den ASCII-Wert, würde eine Verschiebung um 2^8 Stellen dabei heraus kommen! Das bedeutet man erhält einen 40-Bit-Schlüssel ... das ist immer noch nicht wirklich sinnvoll!

Eine verbessere Random()-Funktion ist hier zu finden! Die Zahl 134775813 kann variiren, sollte aber bestimmte Bedingungen erfüllen.
-delphin- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Fr 27.04.07 19:29 
was soll das bringen, das randseed einfach mit 134775813 zu multiplizieren? oder hab ich das falsch verstanden?
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Fr 27.04.07 21:21 
Hallo,

leider habe ich da kaum Ahnung, aber vom reinen Anblick her, werden bei dem Zufallsgenerator nicht mehr Zufallszahlen erzeugt
Input 32 bit output 32 bit die wieder input werden.
Das sind also wieder nut 32-Bit Schlüssellänge.
Erzeuge doch einen MD-5 oder SHA-1 Hash aus deinem Paßwort und nimm immer 32 Bit Abschnitte als Randseed für einen Generator.
Bei MD-5 sind 128 Bit ja 4 x 32 Bit.
Du kannst jetzt 4 normale Generatoren laufen lassen wo bei die erzeugten Werte als XOR Schlüssel dienen. Vielleicht bestimmt Geneartor 1 zusätzlich, welche Permutation der neuen Ranseed's genommen werden soll.
Soll heißen: es gibt 4! Möglichkeiten welcher Generator X mit dem Ergrbnis von Generator Y als neuem Randseed gefüttert wird.
Das heisst , das die Generatoren fast ständig (bei 1 von 24 nicht) Ihre Position wechseln.

Gruß Horst
-delphin- Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 200



BeitragVerfasst: Fr 27.04.07 21:38 
das habe ich nich verstanden und werde es wohl auch nie verstehen ;)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 28.04.07 00:57 
Mal Abgesehen davon, dass es falsch war ...

Wenn ich 4 verschiedene Vignere-Verschlüsslungen nacheinander mit der gleichen Schlüssellänge ablaufen lasse, so ist die Länge des Gesamtschlüssels nicht 4 mal die Ausgangslänge, sondern gleich dem kgV der Ausgangsschlüssellängen ...

Um die Schlüssellänge stark zu verlängern müsstest Du 4 Zufallsgeneratoren haben, die alle eine prime Wiederholfrequenz haben, deren Periodizität 4 aufeinanderfolgende teilerfremde Zahlen sind.

d.h. Längen 2,4,8,16 = schlecht (Periode 16 = 2^4)
Längen 3,5,7,11 = besser. (Periode 1155 = 2^10,173677)

Fazit: Lass die Finger von, wenn Du nicht mal die Grundlagen der Kryptographie verstehst!

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Sa 28.04.07 11:20 
user profile iconBenBE hat folgendes geschrieben:
Fazit: Lass die Finger von, wenn Du nicht mal die Grundlagen der Kryptographie verstehst!
Richitg. Es ist naiv, anzunehmen, daß man als Laie mal eben einen sichereren Algorithmus aus dem Ärmel schüttelt, wenn sich ganze Arbeitsgruppen von Mathematikern einige Jahre lang mit nur einem einzigen Verfahren beschäftigen.
delphin, nimm ein existierendes Kryptosystem, zum Beispiel DSA oder RSA. Beide sind um ein vielfaches sicherer als das, was jeder einzelne von uns hier in der Lage ist, sich auszudenken.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert