Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie Verschlüsselt ihr ? (https://www.delphipraxis.net/133642-wie-verschluesselt-ihr.html)

Corpsman 6. Mai 2009 08:36


Wie Verschlüsselt ihr ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hossa DP,

Ich höre gerade eine Vorlesung über Kryptographie und wurde mal so richtig wachgerüttelt, und darum geht es in diesem Post.

Das Verschlüsselte Dateien nicht 100% sicher sind wahr mir schon immer klar, aber wie das eben so ist wenn man keine Ahnung von der Materie hat, dachte ich immer, das sind halt richtige Freaks die solche Dateien knacken können.

Unser Prof hat mich heute eines besseren belehrt.

Worum geht es nun genau:

Wenn ich bisher Files verschlüsselt habe dann tat ich das immer ungefähr so :
Delphi-Quellcode:
Var
  pw: Array Of Byte;
  s: String;
  pwp, i: integer;
  f: TFilestream;
  m, m2: TMemoryStream;
  by: Byte;
Begin
  If OpenDialog1.execute Then Begin
    // Einlesen des Passwortes
    setlength(pw, Length(edit1.text));
    For i := 0 To high(pw) Do
      pw[i] := ord(edit1.text[i + 1]);
    // Verschlüsseln
    f := TFileStream.create(Opendialog1.FileName, fmopenread);
    m := TMemoryStream.create;
    m.CopyFrom(f, f.size);
    f.free;
    m2 := TMemoryStream.create;
    m.position := 0;
    pwp := 0;
    While m.position <> m.size Do Begin
      m.read(by, sizeof(by));
      by := by Xor pw[pwp];
      m2.write(by, sizeof(by));
      pwp := (pwp + 1) Mod (high(pw) + 1);
    End;
    m.free;
    m2.position := 0;
    f := TFileStream.create(Opendialog1.FileName + 'C', fmcreate Or fmopenwrite);
    f.CopyFrom(m2, m2.size);
    m2.free;
    f.free;
    // Ausgabe des Verwendeten Passwortes
    label1.caption := 'Benutztes Passwort [ Länge : ' + inttostr(high(pw) + 1) + ' ]';
    setlength(s, high(pw) + 1);
    For i := 0 To High(pw) Do
      s[i + 1] := chr(pw[i]);
    edit3.text := s;
  End;
End;
Bisher war ich immer der Meinung, das dieses Verfahren einigermasen sicher ist. Doch weit gefehlt.
Ich konnte ein Tool erstellen welches eine so verschlüsselte Datei binnen weniger sekunden ( weniger als 10 ) Problemlos entschlüsselt und sogar das Passwort ausgeben kann. Und das selbst dann, wenn ich das Passwort sehr groß ( also ca. 100 Byte und mehr ) wähle.

Einzige Vorraussetzung. Man mus ungefähr wissen was da verschlüsselt wurde, in meinem Fall ist das immer ein Text im ASCII format. Und man mus das Verfahren kennen ( s.o. ).

So denn die Frage was nutzt ihr denn nun für Verschlüsselungen ?

Und für alle Neugierigen, hab ich im Anhang mal eine Verschlüsselte Datei mit angehängt, kriegt die jemand entschlüsselt ?

Aber nicht auf meine HP gehen, denn da ist ja das Entschlüsselungstool veröffentlicht !!

himitsu 6. Mai 2009 09:22

Re: Wie Verschlüsselt ihr ?
 
am einfachsten und auch sehr sicher ... schau dich hier mal nach Hagens DEC um (auf Luckies Seite liegt es auch noch zum Download rum)


PS: selbst die billige XOR-Verschlüsselung kann sehr sicher (sogar fast 100%ig Unknackbar sein) ... man muß nur einen Schlüssel haben, welcher mindestens genausogroß ist, wie die zu verschlüsselnden Daten selber :angel2:

Ansonsten gibt es auch schon massig Threads hier zu diesem Thema.


Ja und wenn etwas 100% sicher wäre, dann könnte man es auch nie wieder entschlüsseln, da ja zumindestens für diesen Fall eine "Hintertür" vorhanden sein muß :nerd:


PS: du kannst da einen Schritt [Einlesen des Passwortes] bei dir auch rauslassen
Delphi-Quellcode:
// Einlesen des Passwortes
s := edit1.text;
...
pwp := 1;
...
m.read(by, sizeof(by));
by := by Xor ord(pw[pwp]);
m2.write(by, sizeof(by));
pwp := pwp Mod length(pw) + 1;
...
// Ausgabe des Verwendeten Passwortes
label1.caption := 'Benutztes Passwort [ Länge : ' + inttostr(length(s)) + ' ]';
edit3.text := s;
und wozu der MemoryStream?
nimm doch zum Auslesen/Schreiben direkt den FileStream :angel:

oder waumm der FileStream ... LoadFormFile und Co. sollte sollen die MemoryStreams auch drinnen haben :angel2:

da es hier ja wohl nicht sooooo um Geschwindigkeit geht
sonst hätte sogar ein MemoryStream gereicht

Luckie 6. Mai 2009 09:29

Re: Wie Verschlüsselt ihr ?
 
Zitat:

Zitat von himitsu
Ja und wenn etwas 100% sicher wäre, dann könnte man es auch nie wieder entschlüsseln, da ja zumindestens für diesen Fall eine "Hintertür" vorhanden sein muß :nerd:

Die Aussage verstehe ich nicht.

himitsu 6. Mai 2009 09:31

Re: Wie Verschlüsselt ihr ?
 
ganz einfach: wenn etwas genau zu 100% sicher wäre, dann käme absolut nichts mehr an die Rohdaten ran,
also kann es auch nichts geben, womit man dieses wieder entschlüsseln könnte :zwinker:

Bernhard Geyer 6. Mai 2009 09:38

Re: Wie Verschlüsselt ihr ?
 
Zitat:

Zitat von himitsu
ganz einfach: wenn etwas genau zu 100% sicher wäre, dann käme absolut nichts mehr an die Rohdaten ran,
also kann es auch nichts geben, womit man dieses wieder entschlüsseln könnte :zwinker:

Wenn man es nicht entschlüsseln könnte dan wären die Daten geschrottet und nicht verschlüsselt. Es geht darum das man ohne den Schlüssel nicht mehr an die Rohdaten herankommt (reiner Brute-Force ausgenommen).

quendolineDD 6. Mai 2009 09:49

Re: Wie Verschlüsselt ihr ?
 
Einfach eine Definitionsfrage. Da gerade eben Brutforce an dieser Stelle die 100% zunichte macht.

Corpsman 6. Mai 2009 09:54

Re: Wie Verschlüsselt ihr ?
 
@himitsu

Die Thematik der One Time Pads ist mir schon bekannt.

Und mir gings nicht darum eine Verschlüsselungskomponente zu bekommen.

Die Frage galt eher Generell.

Und da ich eben versuche möglichst auf Fremdkomponenten zu verzichten, zwecks dieser ganzen Urheberrechtssachen und gedöns hab ich eben bisher auch immer meinen Verschlüsselungsalgo selbst gemacht...

Wenn die Länge des zu verschlüsselnden Codes sehr nahe an die Länge des Passwortes Ran kommt, dann denke ich wird es sowieso deutlich sicherer.

Meine File die ich da hochgeladen habe ist nicht ohne grund so groß ;), wenn man zusätzlich das Passwort noch via Zufall erzeugen läst, dann wirds ebenfalls noch mal ein klein wenig schwerer mit der von mir angegeben Analyse eine Richtige entschlüsselung zu bekommen.

und was der Brute Force angeht, so wird dein Programm ganz schön lang rumrechnen wenn du es auf die von mir hochgeladene File anwendest.

Heut zu tage reicht es ja die meisten "Geheimnisse" für eine bestimmte Zeit geheim zu halten. Und so lange der Brute Force Ansatz länger dauert als diese bestimmte Zeit, scheidet dieser aus.

[Edit]
ich sehe meine File wurde schon 2 mal geladen, hat denn schon jemand das gute stück entschlüsselt ?

himitsu 6. Mai 2009 09:55

Re: Wie Verschlüsselt ihr ?
 
auch für BruteForce brauchst du eine Hintertür ... nämlich das Grundprinzip des Algorithmusses, für die Verschlüsselung und/oder die Art der verschlüsselten Daten.
sonst kannste ja gleich Zufallszahlenketten bilden ... irgendwann stimmt eine der zufälligen Ketten mit dem gesuchten Text schon überein :angel2:

@Bernhard: drum sagte ich ja > 100% ist nicht möglich


@Corpsman: das DEC ist frei zur Verwendung, also wegen de Rechte mußte dir da keine großen Sorgen machen


mach eh grad mal Pause und hatte 'nen Sekündchen Zeit
Delphi-Quellcode:
Var
  m: TMemoryStream;
  s: String;
  mp, me, sp, se, ss: PByte;
Begin
SendMessage(HWND_BROADCAST, CM_INVALIDATE, 0, 0);

  If OpenDialog1.execute Then Begin
    m := TMemoryStream.Create;
    Try
      m.LoadFromFile(Opendialog1.FileName);
      mp := m.Memory;
      me := mp + m.Size;
      s := Edit1.text;
      sp := Pointer(s);
      se := sp + Length(s);
      ss := sp;
      While mp < me do Begin
        mp^ := mp^ xor sp^;
        Inc(mp);
        Inc(sp);
        If sp = se Then sp := ss;
      End;
      m.SaveToFile(Opendialog1.FileName + 'C');
    Finally
      m.Free;
    End;
    // Ausgabe des Verwendeten Passwortes
    Label1.Caption := 'Benutztes Passwort [ Länge : ' + IntToStr(Length(s)) + ' ]';
    Edit3.text := s;
  End;
End;
und jetzt gibt dem Code mal ein Passowrt von der Selben größe wie deine Testdatei (oder zumindesten 1/4 davon) und laß nochmal dein Tool drüber laufen ...

Luckie 6. Mai 2009 09:59

Re: Wie Verschlüsselt ihr ?
 
Zitat:

Zitat von himitsu
ganz einfach: wenn etwas genau zu 100% sicher wäre, dann käme absolut nichts mehr an die Rohdaten ran,
also kann es auch nichts geben, womit man dieses wieder entschlüsseln könnte :zwinker:

Das heißt, wenn ich mit meinem Passwort einen TrueCrypt Container öffne, dann nutz die Software eine Sicherheitslücke in sich selbst, um den Container zu öffnen? Was ist das für ein Schwachsinn? Der Sinn des Verschlüsselns ist es ja gerade, dass man die Daten auch wieder entschlüsseln kann. Und warum soll es keinen 100% sicheren Algorithmus geben?

himitsu 6. Mai 2009 10:02

Re: Wie Verschlüsselt ihr ?
 
Zitat:

Zitat von Luckie
dann nutz die Software eine Sicherheitslücke in sich selbst, um den Container zu öffnen?

im Prinzip schon ... nun gilt es eben nur noch diese "Lücke" so klein wie möglich zu machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz