Autor Beitrag
FloFri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 97



BeitragVerfasst: Mi 29.10.03 09:35 
Auch wenn der Thread schon etwas älter ist würde ich gerne zu dem Zufallsprinzip noch etwas fragen:

Was währe denn bei folgendem Beispiel zur erzeugung von Zufallszahlen:

Man macht zuerst ein Randomize.
Dann holt man sich per Random das erste Zeichen des Schlüssels.
Dannach holt man sich per Random einen zweiten wert zwischen 1 und 5
Ist dieser Wert gleich 5, dann wird der Random-Pool mit dem letzten Zeichen des Schlüssels neu initialisiert.
Dann geht das Spiel von vorne los.

Was haltet ihr dafon? Wie zufällig währe das?

Ach so: und hat jemand ein Beispiel für einen Reellen Zufalls-Algo?
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mi 29.10.03 13:22 
Das Problem ist dasselbe - Random ist nur ein Pseudo-Zufallsgenerator der nur auf einer 32-Bit Variable basiert. Kennt man den ersten Ausgangswert von RandSeed kann man deinen kompletten Algorithmus rekonstruieren! Und wie bereits gesagt vereinfacht der Einsatz von Randomize eine BruteForce-Attacke, da RandSeed mit der Anzahl der vergangenen Millisekunden seit 0 Uhr füllt und dieser Wert hat nunmal ein Maximum von 24*60*60*1000 = 86400000 und ist somit 49 mal kleiner als der höchst mögliche Wert eine 32-Bit Variable!

Die einzige Möglichkeit Random sinnvoll einzusetzten wäre wieder nur in Verbindung mit einer echten Zufallsquelle zB Mausbewegungen, aber wenn man bereits eine echte Zufallsquelle hat braucht man dann eigentlich auch kein Random mehr...!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
FloFri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 97



BeitragVerfasst: Mi 29.10.03 14:51 
Hm, gibt es irgendwo ein beispiel, wie ich so eine eigene random-funktion schreibe, oder reicht es, wenn ich den seed-startwert aus einer reellen-zufallsquelle nehme?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 29.10.03 17:16 
Ich hatte vor eineiger Zeit mal ein bissl rumprobiert und dabei ist folgende Fkt rausgekommen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function Rand(v: integer): integer;
begin
 repeat
  result := round(v * 3 * cos(randseed * 133.579487179487));
  randseed := (randseed + gettickcount + random(10));
  if result < 0 then result := -result;
 until result < v;
end;


Allerdings weiß ich nicht wie sicher die ist. (Rekonstruierbar dürften die Zahlen aber nicht ohne weiteres sein)
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mi 29.10.03 17:32 
Und mit welchem Wert initialisierst du RandSeed das erste mal..? :roll:

Das Problem ist nunmal, dass Random auf einer 32-Bit Variable basiert und damit maximal 2^32 mögliche Zufallsfolgen erstellen kann. Und auch wenn RandSeed aufgrund eines eigenen Algos neu berechnet wird erhöht das die Sicherheit keinesfalls, da ja das gesamte Prinzip nur auf einem 32-Bit Ausgangswert beruht! Wird dieser Ausgangswert ermittelt (bei 32 Bit ist das per BruteForce kein Problem) so kann man alle weiteren Werte ohne Probleme berechnen..!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 29.10.03 18:27 
Motzi hat folgendes geschrieben:
Und mit welchem Wert initialisierst du RandSeed das erste mal..? :roll:


GetTickCount(=Anzahl der Millisekunden seit letztem Windows-start)

Und ich glaube kaum, dass du in diesem Fall alles wiederherstellen kannst, weil du nicht weist, wie lange mein PC für einen Schleifendurchlauf, in dem eine Zahl berechnet wird, braucht.
(Ich lasse mich aber gerne belehren ;))
sakura
ontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 137

W2KS, W2K3S
D1Pr, D3Pr, D4Pr, D5E, D7A, D8A, D2005A
BeitragVerfasst: Mi 29.10.03 21:28 
Ich wollte nur eine Korrektur zu Randomize anbringen. Ich bin mir nicht sicher, seit welcher Delphi-Version es anders ist, aber das ließe sich morgen mal testen. Unter Windows wird RandSeed i.A. mit 64 Bit initialisiert.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure       Randomize;
{$IFDEF LINUX}
begin
  RandSeed := _time(nil);
end;
{$ENDIF}
{$IFDEF MSWINDOWS}
var
  Counter: Int64;
begin
  if QueryPerformanceCounter(Counter) then
    RandSeed := Counter
  else
    RandSeed := GetTickCount;
end;
{$ENDIF}


EDIT: Vergesst es, ändert ja nichts an der Tatsache dass RandSeed vom Typ LongInt (32 Bit) ist :roll:

:welcome:

_________________
Das Lächeln ist die eleganteste Art dem Gegner die Zähne zu zeigen.
Borland SE
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Do 30.10.03 11:53 
@obbschtkuche: oh.. hab übersehen, dass du innerhalb deiner Rand-Funktion auch nochmal GetTickCount verwendest... das macht die Sache natürlich etwas komplizierter, allerdings ist das auch noch nicht der ideale Zufall...!

@sakura: also bei meinem Delphi schaut Randomize so aus:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
procedure       Randomize;
{$IFDEF LINUX}
begin
  RandSeed := _time(nil);
{$ENDIF}
{$IFDEF MSWINDOWS}
var
        systemTime :
        record
                wYear   : Word;
                wMonth  : Word;
                wDayOfWeek      : Word;
                wDay    : Word;
                wHour   : Word;
                wMinute : Word;
                wSecond : Word;
                wMilliSeconds: Word;
                reserved        : array [0..7of char;
        end;
asm
        LEA     EAX,systemTime
        PUSH    EAX
        CALL    GetSystemTime
        MOVZX   EAX,systemTime.wHour
        IMUL    EAX,60
        ADD     AX,systemTime.wMinute   { sum = hours * 60 + minutes    }
        IMUL    EAX,60
        XOR     EDX,EDX
        MOV     DX,systemTime.wSecond
        ADD     EAX,EDX                 { sum = sum * 60 + seconds              }
        IMUL    EAX,1000
        MOV     DX,systemTime.wMilliSeconds
        ADD     EAX,EDX                 { sum = sum * 1000 + milliseconds       }
        MOV     RandSeed,EAX
{$ENDIF}
end;

Aber wie du richtig bemerkt hast "ändert ja nichts an der Tatsache dass RandSeed vom Typ LongInt (32 Bit) ist" und dass die Anzahl der möglichen Zufallsfolgen damit sehr begrenzt ist... ;)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
FloFri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 97



BeitragVerfasst: Fr 31.10.03 09:01 
Aber das sollte doch eigendlich keinen stören mit den Zufallsfolgen, da doch eh ständig eine andere benutzt wird (am beispiel von obbschtkuche).

Noch eine andere Frage: Es können ja bei verschlüsselten Strings und Keys 255 verschiedene Zeichen rauskommen. Einige davon sind aber ja Steuerzeichen, von denen wiederum einige für den String tabu sind, da diese den string an sich verändern, ohne das der benutzer was macht.

Ein beispiel dafür ist das Zeichen chr(0), da dieser den Schluss des strings symbolisiert und dadurch der string an der stelle abgeschnitten wird.

Andere Tabu-Zeichen sind zum beispiel der backslash, da auch der den string verändert.

Steuerzeichen, die zum beispiel nicht tabu sind, sind chr(13) und chr(10), da diese ja nur eine neue zeile beginnen, aber nicht den string verfälschen.

Hat zufällig jemand eine Liste, mit solchen tabu-zeichen, die einen string verfälschen?
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 31.10.03 11:57 
soweit ich weiß nur #0, aber das macht auch nichts, da dateien binär gespeichert werden
FloFri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 97



BeitragVerfasst: Fr 31.10.03 14:48 
Habe schon herausgefunden, warum mein text immer verfälscht wurde. Habe es aus Debug-Gründen erst in ein Memo-Feld gepostet, befor ich es gespeichert habe.

Speicher es jetzt direkt und kann sogar #0 benutzen.
pHew
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP Prof
D6 Enter
BeitragVerfasst: Sa 17.01.04 18:15 
Hm, kann ich so ein OneTimePad nicht knacken, wenn ich Wörter kenne die darin vorkommen?

Ich probier einfach alle Chiffres durch, bis bei einem ein hoher Prozentsatz "sinnvoller" Wörter drin stehen. Oder ergibt jeder beliebige Klartext sinnvolle Wörter (das wär ja arger Zufall, oder?).

_________________
Kill Bill
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Sa 17.01.04 18:38 
Nein.. ein OneTimePad erzeugt einen vollkommen willkürlichen Chiffre-Text. Und da jeder Schlüssel geleich wahrscheinlich ist, ist auch jeder mögliche Klartext gleich wahrscheinlich! Und zu diesen unendlich vielen möglichen Klartexten gehören eben auch alle möglichen Klartexte die durchaus sinnvollen Text haben. Aber dadurch, dass eben jeder dieser Klartexte gleich wahrscheinlich ist hat man keinen Anhaltspunkt welcher nun der gesuchte ist...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
pHew
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP Prof
D6 Enter
BeitragVerfasst: Di 20.01.04 18:40 
Aber ob der Text jetzt

Thomas ging zur Arbeit und vergaß seinen Schal.

oder

Herbert Bügelbrett Paul t334 sieben komma!

lautet, hilft mir. Dann muss ich eben alle durchsehen, wo meine Wörter vorkommen. Wenn ich genug probier is das richtige sicher dabei, und das erkenn ich dann am Sinn der Worte. Mit Pech ist es eben das letzte von unendlich vielen.

_________________
Kill Bill
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Sa 05.06.04 12:32 
Hoppla.. das Posting ist mir damals komplett durch die Lappen gegangen.. :oops:
pHew hat folgendes geschrieben:
Aber ob der Text jetzt

Thomas ging zur Arbeit und vergaß seinen Schal.

oder

Herbert Bügelbrett Paul t334 sieben komma!

lautet, hilft mir. Dann muss ich eben alle durchsehen, wo meine Wörter vorkommen. Wenn ich genug probier is das richtige sicher dabei, und das erkenn ich dann am Sinn der Worte. Mit Pech ist es eben das letzte von unendlich vielen.

Wie du in deinem letztem Satz schon sagst gibt es unendlich viele Möglichkeiten und jede dieser Möglichkeiten ist gleich wahrscheinlich! Und in diesen unendlich vielen Möglichkeiten gibt es zwar unendlich viele Möglichkeiten die keinen Sinn ergeben, aber auch unendlich viele die sehr wohl einen Sinn ergeben. Und da jede dieser Möglichkeiten gleich wahrscheinlich ist hat man keine Möglichkeit festzustellen welche jetzt die richtige ist..!!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
FAlter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 192

Win XP Home
Turbo Delphi 2006 (Win32), C# (VS 2008 Prof.), Java (Eclipse), PHP
BeitragVerfasst: Sa 05.06.04 13:43 
Ich habe vor einiger Zeit aich ein Verschlüsselungsprogramm geschrieben. Es basiert zwar nicht auf XOR-Basis, hat aber mit dem OTP trotzdem gewisse Ähnlichkeit.

Der Schlüssel steckt im zur Verschlüsselung verwendeten Passwort. Dieses darf zwar beliebig lang sein, am besten <= zu verschlüsselnde Daten in Byte, aber wenn man ihn genau gleich groß macht und nir zufälligen Symbolen füllt (und das Passwort kann nicht nur Buchstaben, sondern alle Zeichen von #0 bis #255 aufnehmen) dann ist es doch genauso schlecht knackbar, oder? Wenn man ein falsches Passwort eingibt, bekommt man nur Datenmüll.

Nur, da es schwierig ist, sich einen mehrere MB großen Schlüssel zu merken, habe ich ein System entwickelt, nach dem auch bei kürzeren Passwörtern einigermaßen Sicherheit bestehen soll. Der Schlüssel wird nach einem System jedesmal neu berechnet, wenn er fertig genutzt wurde. Dadurch sind auch bei Eingabe eines ähnlichen Passwortes nur die ersten paar Zeichen korrekt entschlüsselt.

Eine weitere Möglichkeit ist es, den Entschlüsselungsalgo... zum Verschlüsseln zu nutzen und dem zum Verschlüsseln beim Entschlüsseln. Das funktioniert einwandfrei, und der, der es Knacken will, muss möglicherweide doppelt so viele Kombinationen durchgehen.

Versucht mal, mit jetzigen Kenntnissen über das System (mehr hat der entschlüsselnde ja auch nicht), das zu entschlüsseln:

 ËŽáÚÆŽÉÚÔ‡¹’XåȈ̒Ì×kš@ìØã„£’ÍÕÓŽÜÕÌ’ÜÒÖÜ@ÏÓ¢‚þòîí\ï÷ÿ£åj

PS: Der Schlüssel bestand nur aus auf der Tastatur eingebbaren Zeichen, war Englisch, kürzer als der Verschlüsselte Text und entsprach ihm Inhaltlich ungefähr.
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Sa 05.06.04 14:40 
Titel: welcher kommentar?
FAlter hat folgendes geschrieben:
Der Schlüssel steckt im zur Verschlüsselung verwendeten Passwort. Dieses darf zwar beliebig lang sein, am besten <= zu verschlüsselnde Daten in Byte, aber wenn man ihn genau gleich groß macht und nir zufälligen Symbolen füllt (und das Passwort kann nicht nur Buchstaben, sondern alle Zeichen von #0 bis #255 aufnehmen) dann ist es doch genauso schlecht knackbar, oder? Wenn man ein falsches Passwort eingibt, bekommt man nur Datenmüll.

naja. wenn du deinen schlüssel aus einem passwort mit zufälligen daten generierst erstellst, kannst dich gleich komplett auf zufällige daten stützen -> das passwort wird sinnlos, weil du auch - genau wie beim one-time-pad - den schlüssel speichern bzw. mitübertragen musst.

FAlter hat folgendes geschrieben:
Nur, da es schwierig ist, sich einen mehrere MB großen Schlüssel zu merken, habe ich ein System entwickelt, nach dem auch bei kürzeren Passwörtern einigermaßen Sicherheit bestehen soll. Der Schlüssel wird nach einem System jedesmal neu berechnet, wenn er fertig genutzt wurde.

:?: Wie meinen :?:

FAlter hat folgendes geschrieben:
Versucht mal, mit jetzigen Kenntnissen über das System (mehr hat der entschlüsselnde ja auch nicht), das zu entschlüsseln:

ËŽáÚÆŽÉÚÔ‡¹’XåȈ̒Ì×kš@ìØã„£’ÍÕÓŽÜÕÌ’ÜÒÖÜ@ÏÓ¢‚þòîí\ï÷ÿ£åj

PS: Der Schlüssel bestand nur aus auf der Tastatur eingebbaren Zeichen, war Englisch, kürzer als der Verschlüsselte Text und entsprach ihm Inhaltlich ungefähr.

Scherzkeks. Du hast zwar im gröbsten umrissen wie du den schlüssel generierst, aber kein wort über die art der verschlüsselung. wir wissen nur dass nicht gexort wurde... :roll:
//edit: oder is das ein schlüssel?

raziel

_________________
JSXGraph
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Sa 05.06.04 16:56 
FAlter hat folgendes geschrieben:
Nur, da es schwierig ist, sich einen mehrere MB großen Schlüssel zu merken, habe ich ein System entwickelt, nach dem auch bei kürzeren Passwörtern einigermaßen Sicherheit bestehen soll. Der Schlüssel wird nach einem System jedesmal neu berechnet, wenn er fertig genutzt wurde.

Die Sicherheit basiert aber dennoch nur auf dem kurzen Passwort..! Ich brauche schließlich nur das kurze Passwort zu kennen um daraus den langen Schlüssel berechnen zu können..!

Bei eine Kryptanalyse geht man davon aus, dass der Angreifer bestens über den Algorithmus bescheid weiß. Du kannst also gerne deinen Code hier posten und ich schau ihn mir mal an..

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
FAlter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 192

Win XP Home
Turbo Delphi 2006 (Win32), C# (VS 2008 Prof.), Java (Eclipse), PHP
BeitragVerfasst: So 06.06.04 17:52 
Titel: Re: welcher kommentar?
raziel hat folgendes geschrieben:
das passwort wird sinnlos, weil du auch - genau wie beim one-time-pad - den schlüssel speichern bzw. mitübertragen musst.

Ich übertrage keinen Schlüssel. Der Empfänger gibt das Passwort ein, das ich vorher z. B. mit ihm persönlich abgemacht habe. Da dieses Passwort den Schlüssel darstellt, muss ich es nicht jedesmal mit übertragen.

motzi nicht, sondern auch raziel hat folgendes geschrieben:
Wie meinen


Ich berechne aus dem Passwort eine Zahl und mit deren Hilfe codiere ich die Zeichen noch zusätzlich. Das bietet höhere Sciherheit, als nur nochmal mit dem Passwortanfang zu beginnen.

aber diesmal motzi hat folgendes geschrieben:
Die Sicherheit basiert aber dennoch nur auf dem kurzen Passwort..! Ich brauche schließlich nur das kurze Passwort zu kennen um daraus den langen Schlüssel berechnen zu können..!

Nun, dieses "kurze" Passwort ist natürlich niche mehrere MB lang lang, aber Ein Sprichwort ist doch schon ziemlich lang oder ein Gedicht. Oder man nimmt einfach Teile eines Liedes ("DhGDEheD(A)"). Wenn man möchte, kann man auch den Ihnalt des letzten Briefes nehmen. Dieser sollte dann einiger KB groß sein.

Um zur Realität zurückzukommen: Was nutzt es dir, wenn du weißt, dass das Passwort Meyer oder Mayer oder Majer oder so ist? Und Wenn dui das Passwort nicht weißt, hast du kaum eine Chance.

Damit ihr den Text oben entschlüsseln könnt, hier ein paar weitere Infos: Mein Schlüssel basiert aus Addition und Subtraktion des Byte-Wertes. Ich hoffe, ihr könnt es trotz dieser Information nicht entschlüsseln. (Ich werde natürlich nicht so viel verraten, dass die ganze Sicherheit weg ist.)

Und noch was:

10 15 15 10 _ 1 5 5 _ 14 1 5 !

Leichter zu entschlüsseln (HEX!!!) Endlich habe ich es geschafft, einen Hex-Satz zu schreiben!

[sub]//Edit: Namen in Quote-Tags geändert[/sub]


Zuletzt bearbeitet von FAlter am So 06.06.04 18:22, insgesamt 1-mal bearbeitet
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: So 06.06.04 18:05 
Titel: Re: welcher kommentar?
FAlter hat folgendes geschrieben:
motzi hat folgendes geschrieben:
Wie meinen

Das war von mir, nich vion Motzi...
FAlter hat folgendes geschrieben:
(Ich werde natürlich nicht so viel verraten, dass die ganze Sicherheit weg ist.)

An dieser Stelle zitier ich sehr gerne Bruce Schneier aus seinem Buch "Angewandte Kryptographie":
Bruce Schneier hat folgendes geschrieben:
Wenn ich von Ihnen verlange, einen Brief zu lesen, den ich in einen Safe gelegt und dann irgendwo in New York versteckt habe, dann hat das nichts mit Sicherheit zu tun, sondern ist ein einfaches Verstecken. Wenn ich diesen Brief jedoch in den Safe lege, Ihnen dann die Entwicklungspläne des Safes und noch hundert Safes gleicher Bauart mitsamt ihren Kombinationen gebe, so daß Sie mit Hilfe der weltbesten Safeknacker den Sperrmechanismus ausgiebig studieren können, aber immer noch nicht in der Lage sind, den Safe zu öffnen und den Brief zu lesen - dann ist das Sicherheit.


In diesem Sinne,

raziel

_________________
JSXGraph