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:
Bisher war ich immer der Meinung, das dieses Verfahren einigermasen sicher ist. Doch weit gefehlt.
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; 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 !! |
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:
und wozu der MemoryStream?
// 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; 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 |
Re: Wie Verschlüsselt ihr ?
Zitat:
|
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: |
Re: Wie Verschlüsselt ihr ?
Zitat:
|
Re: Wie Verschlüsselt ihr ?
Einfach eine Definitionsfrage. Da gerade eben Brutforce an dieser Stelle die 100% zunichte macht.
|
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 ? |
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:
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 ...
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; |
Re: Wie Verschlüsselt ihr ?
Zitat:
|
Re: Wie Verschlüsselt ihr ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr. |
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