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 AES - wie cipher aus kennwort? (https://www.delphipraxis.net/112703-aes-wie-cipher-aus-kennwort.html)

geofranz01 25. Apr 2008 16:38


AES - wie cipher aus kennwort?
 
Hallo,

ich bin gerade dabei zu Verstädniszwecken eine eigene kleine AES-Implementierung zu schreiben. Vorerst beschränke ich mich auf 128bit Schlüssellänge. Es funktioniert auch alles schon super, ich weiß jedoch jetzt nicht wirklich, wie ich das Passwort des Anwenders (z.B. Baum (nur ein Beispiel, natürlich ziemlich unsicher)) in den cipher-Block umwandle. Gibt es da irgendeine Art "Vorschrift"? Ich weiß nicht ob die Methode mit Wiederholen des Passwortes bis zu 16 Zeichen bzw. abschneiden des Passwortes nach 16 Zeichen so sinnvoll ist (wie im WWW manchmal vorgeschlagen). Wäre eine 128bit langer Hash des Kennwortes gut? Wie wird das denn in den profesionellen Implementierungen gemacht?.

mfg,
geofranz

Zacherl 25. Apr 2008 16:44

Re: AES - wie cipher aus kennwort?
 
Guck dir mal Hagens DEC an. Dort findest du sowohl AES als auch z.b. eine SHA-1 Hash Implementierung.

shmia 25. Apr 2008 16:54

Re: AES - wie cipher aus kennwort?
 
Ein MD5 Hash über das Passwort wäre nicht schlecht.
Jede winzige Änderung am PW führt zu einem ganz anderen Hashwert.
Allerdings ist das noch nicht sicher genug, da es Tools gibt, um von einem MD5 Hash einen passenden Plaintext zu errechnen.
Deshalb solltest du das Passwort noch modifizieren:
Delphi-Quellcode:
var
  pw, hash_pw: string;
begin
  pw := ....;  // Passwort im Klartext
  hash_pw := '**42**'+pw + '##';  // Passwort modifizieren

  hash := MD5Calc(hash_pw);
Wie du das Passwort modifizierst ist egal, es muss nur immer gleich sein.
Das Modifizierungsverfahren hältst du geheim.
Aber selbst wenn es bekannt würde, hätte ein Hacker trotzdem grosse Probleme ein gültiges Password zu ermitteln.
Es wäre nur durch brute-force zu knacken.

geofranz01 25. Apr 2008 17:05

Re: AES - wie cipher aus kennwort?
 
Danke euch beiden!
Wenn ich das richtig sehe, werden an das Passwort (wenn es zu wenig Zeichen hat) einfach Nullen angehängt, oder?
Gut, dann mache ich das mit einem Hash, da das Progamm nur zu Demonstrations-/Lehrzwecken dient (mit Sourcecode), muss es nicht durch eine zusätzliche geheime Passwortmodulation erweitert werden.

Noch so nebenbei: Ist denn dann jede Implementierung (außer in den Grundfesten) anders, d.h. jedes Programm würde mir für die gleiche Datei andere Ausgaben leifern (bei gleichem Kennwort) oder gibt es einen Standard?

Zacherl 25. Apr 2008 17:25

Re: AES - wie cipher aus kennwort?
 
Ehm ehm ehm .. nein erstmal MD5 ist nicht zu empfehlen. SHA eignet sich da besser (weniger Kollisionen = sicherer). Es werden keine 0en an ein zu kurzes Kennwort angehangen. Der Hash hat eine konstante länge. Das Problem löst sich damit also von selbst :P

geofranz01 25. Apr 2008 17:38

Re: AES - wie cipher aus kennwort?
 
@Zacherl: Mit dem Hash ist das ja klar, aber ich glaube das in der DEC irgendwo gesehen zu haben. Naja egal, egal wahrscheinlich habe ich mich irgendwie vertan.

Danke!

mfg,
geofranz

gammatester 26. Apr 2008 17:23

Re: AES - wie cipher aus kennwort?
 
Zitat:

Zitat von Zacherl
Ehm ehm ehm .. nein erstmal MD5 ist nicht zu empfehlen. SHA eignet sich da besser (weniger Kollisionen = sicherer).

Die Kollisionen sind relativ uninteressant, wenn man den Hash als Schlüssel verwendet (interessanter wäre es, wenn versucht wird das Passwort zu rekonstruieren).

Völlig falsch ist aber die Aussage
Zitat:

Es werden keine 0en an ein zu kurzes Kennwort angehangen. Der Hash hat eine konstante länge. Das Problem löst sich damit also von selbst
Wenn ein Passwort zu einfach ist, wird der einfache Hash auch nicht durch "Zauberei" sicherer.

Sichere Schlüssel sollten aus Passphrasen und "Salz" berechnet werden (z.B. gemäß Standard PKCS#5)

Gruß Gammatester

dominikkv 26. Apr 2008 18:46

Re: AES - wie cipher aus kennwort?
 
Zitat:

Zitat von shmia
... da es Tools gibt, um von einem MD5 Hash einen passenden Plaintext zu errechnen.

öhm... geht das wirklich, einen passenden Plaintext aus einem MD5Hash zu errechnen? Ich dachte immer das geht nur über Bruteforce...

omata 26. Apr 2008 18:54

Re: AES - wie cipher aus kennwort?
 
Zitat:

Zitat von shmia
... da es Tools gibt, um von einem MD5 Hash einen passenden Plaintext zu errechnen.

cool, mit welchem Tool kann man das machen? Kannst du da mal bitte einen Link angeben.

Neugierige Grüsse
Thorsten

phXql 26. Apr 2008 19:59

Re: AES - wie cipher aus kennwort?
 
Zitat:

Zitat von dominikkv
Ich dachte immer das geht nur über Bruteforce...

Eine Hash-Funktion ist eine nicht-umkehrbahre Funktion. Es gibt aber Rainbow-Tabellen, welche Hashs von vielen Passwörtern errechnet haben und abgespeichert haben. Nun kann man den Hash in der Datenbank suchen und die Datenbank spuckt die Passwörter aus, die diesen Hash ergeben. Deswegen sollte man immer das Passwort vor dem Hashen salzen, siehe unten im Beitrag.

Zitat:

Zitat von Shmia
Das Modifizierungsverfahren hältst du geheim.

Bitte was? Security through obscurity = no go!

Du hängst an das Passwort hinten noch ein paar zufällige Bits dran, dann jagst du's durch die Hash-Funktion. Dieses sog. Salt speicherst du dann vor dem verschlüsselten Text. So kannst du Angriffe durch eben diese obengenannten Rainbow-Tabellen entgehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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