Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 12.07.05 07:42 
Hallo, kann mir einer sagen welchen Algorithmus könnte ich anwenden um ein Passwort zu verschlüsseln?
Ich hatte mir früher gedacht einfach werden von jedem Character etwas Increment/Decrement gemacht!
Na ja man kann ja auch die Position hinzuaddieren oder mit jedem n-ten anders verfahren!


Zuletzt bearbeitet von JRegier am Di 12.07.05 11:00, insgesamt 1-mal bearbeitet
Gekko
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 49

Win XP, Vista
Visual C# Express, Python Ruby
BeitragVerfasst: Di 12.07.05 09:31 
Probier mal md5.
Du speicherst quasi nur den md5 hash ab. Wenn ein User sein Passwort eingibt wird der md5 Hash daraus neu generiert und mit dem abgespeicherten Hash verglichen.

wikisource.org/wiki/MD5_hash
www.fichtner.net/delphi/md5.delphi.phtml
www.planet-source-co...lngWid!7/anyname.htm

md5 Hashes werden auch gerne bei Linux z.B. verwendet oder bei CMSen auch. Gibt viele Anwendungsmöglichkeiten dafür.

lg, Gekko
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 12.07.05 10:11 
user profile iconGekko hat folgendes geschrieben:
Probier mal md5.
Du speicherst quasi nur den md5 hash ab. Wenn ein User sein Passwort eingibt wird der md5 Hash daraus neu generiert und mit dem abgespeicherten Hash verglichen.

wikisource.org/wiki/MD5_hash
www.fichtner.net/delphi/md5.delphi.phtml
www.planet-source-co...lngWid!7/anyname.htm

md5 Hashes werden auch gerne bei Linux z.B. verwendet oder bei CMSen auch. Gibt viele Anwendungsmöglichkeiten dafür.

lg, Gekko


Vielen Dank, für Info! Kann man eigentlich die Hashes umdefinieren? So das es eine andere Verschlüsselung wird das nicht ein Standard wäre
und keiner Knacken kann?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 12.07.05 10:13 
user profile iconJRegier hat folgendes geschrieben:
wird das nicht ein Standard wäre

bestimmt.
user profile iconJRegier hat folgendes geschrieben:
und keiner Knacken kann?

bestimmt nicht.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 12.07.05 10:37 
Hashes sind schonmal der richtige Ansatz, aber ich würde kein MD5 nehmen, sondern eher SHA1 (wobei das angeblich auch nicht mehr so sicher ist) bzw. mein momentaner Favorit RipeMD.

Einen bestehenden Hash-Algorithmus zu ändern halte ich für sehr gewagt! Diese Algos sind schon lange im Einsatz, von x Spezialisten eingehend untersucht und haben sich (manche mehr, manche weniger) gut bewährt. Wenn nun jetzt jemand hergeht und irgendwas ändert, und nicht genau weiß was er da macht, dann würd ich dem Algorithmus ganz sicher kein Vertrauen mehr schenken!! Also lieber auf den gut bewährten Standard-Hash-Algo zurückgreifen!

Gruß, Motzi

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

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 12.07.05 10:48 
Na Tol! Ich habe jetzt mit dem TIdCoderMD5 Probiert aber irgendwas läuft schief! Genauer gesagt ich kann mich jetzt mit beliebigem Passwort einlogen!

Hier der Code!
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:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
procedure TMainForm.SetPassword;
var Pass : TStringList;
    PassCoder : TIdCoderMD5;
begin
   // Password vorbereiten
   ApplicationDirectory := ExtractFileDir(Application.ExeName);
   Pass := TStringList.Create;
   PassFile := ApplicationDirectory+'\DSCHAMBUL.CAT';
   PassCoder := TIdCoderMD5.Create(Self);
   if(FileExists(PassFile))then
   begin
   Pass.LoadFromFile(PassFile);
   Password := PassCoder.CodeString(Pass.Strings[0]);
   end
   else
   begin
   Pass.Add(PassCoder.CodeString('masterkey'));
   Pass.SaveToFile(PassFile);
   Password := Pass.Strings[0];
   end;
   Pass.Free;
   PassCoder.Free;
end;

procedure TLoginForm.OKBtnClick(Sender: TObject);
var PassCoder : TIdCoderMD5;
begin
PassCoder := TIdCoderMD5.Create(Self);
if(PassCoder.CodeString(Trim(PasswordEdit.Text)) = Password)then
begin
PasswordEdit.Text := '';
Login := True;
Close;
end
else
ShowMessage('Falsches Admin Passwort! Kein Zutritt!');
PassCoder.Free;
end;

procedure TPassChangeForm.OKBtnClick(Sender: TObject);
var  New, Rep : String;
     PassCoder : TIdCoderMD5;
begin
   PassCoder := TIdCoderMD5.Create(Self);
   if(PassCoder.CodeString(Trim(OldPasswordEdit.Text)) <>  Password)then
   ShowMessage('Admincreator Passwort stimmt nicht! Passwort kann nicht geändert werden!')
   else
   begin
   New := Trim(NewPasswordEdit.Text);
   Rep := Trim(NewPasswordRepeatEdit.Text);
   if(New <> Rep)then
   ShowMessage('Passwortwiederh. stimmt mit neum Passwort nicht überein!')
   else
   begin
   Login := True;
   Password := PassCoder.CodeString(Trim(NewPasswordEdit.Text));
   Close;
   end;
   end;
   PassCoder.Free;
end;


Ich habe in das Passwort File gesehen aber das ist leer!
zemy
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 207

Win XP Prof.
D7
BeitragVerfasst: Di 12.07.05 11:08 
Mal so als Denkansatz: Würde es helfen, wenn man beim Password automatisch nach der Eingabe noch ein Leerzeichen oder ähnliches hinzufügt? Im Idealfall würden sich 50% der Bits ändern und man könnte nicht mehr so einfach den Hash ersetzen in der PW-File...

_________________
LifeIsToShortToThinkAboutTheShortness
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 12.07.05 12:04 
user profile iconzemy hat folgendes geschrieben:
Mal so als Denkansatz: Würde es helfen, wenn man beim Password automatisch nach der Eingabe noch ein Leerzeichen oder ähnliches hinzufügt? Im Idealfall würden sich 50% der Bits ändern und man könnte nicht mehr so einfach den Hash ersetzen in der PW-File...


Soll das etwa die Erklärung dafür sein warum mein Code nicht funktioniert?
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Di 12.07.05 12:12 
das verhindert schonmal. das jemand mit einem beliebigen md5 generator dein passwort ersetzt.
aber was ist, wenn jemand der auch das programm hat, einfach seinen schlüssel durch den originalen ersetzt?
damit würde dieser jemand durchkommen und es würde funktionieren.

am besten beziehst du noch rechnerspezifische daten wie die seriennummer von windows, die seriennummer der festplatte oder ähnliches mit ein.
dann wird es für den angreifer immer schwieriger das passwort einfach so zu übersetzen.

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
zemy
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 207

Win XP Prof.
D7
BeitragVerfasst: Di 12.07.05 12:16 
user profile iconJRegier hat folgendes geschrieben:
user profile iconzemy hat folgendes geschrieben:
Mal so als Denkansatz: Würde es helfen, wenn man beim Password automatisch nach der Eingabe noch ein Leerzeichen oder ähnliches hinzufügt? Im Idealfall würden sich 50% der Bits ändern und man könnte nicht mehr so einfach den Hash ersetzen in der PW-File...


Soll das etwa die Erklärung dafür sein warum mein Code nicht funktioniert?


Nein, das sollte nur ne Frage am Rande sein, ob dies sinnvoll währe und die Sicherheit erhhen würde. So geberiert man nur nen MD5-String von nem Eigenen Password und ersetzt das mit dem vorgegebenen

Zu deinem Code: SetPassword rufts du auch auf, oder? Wenn ja dann keine Ahnung :?

_________________
LifeIsToShortToThinkAboutTheShortness
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 12.07.05 13:12 
Also MD5 würde ich nicht verwenden..! Mein Favorit ist wie gesagt RipeMD.. im Suche in: Delphi-Forum, Delphi-Library DEC von Hagen Reddmann findet man eine Implementierung davon..

Zitat:
am besten beziehst du noch rechnerspezifische daten wie die seriennummer von windows, die seriennummer der festplatte oder ähnliches mit ein.

Gute Idee, und wenn man dann mal das OS oder die Festplatte wechselt stimmen alle Passwörter nicht mehr... :roll:

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

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Mi 13.07.05 09:29 
user profile iconMotzi hat folgendes geschrieben:
A
Zitat:
am besten beziehst du noch rechnerspezifische daten wie die seriennummer von windows, die seriennummer der festplatte oder ähnliches mit ein.

Gute Idee, und wenn man dann mal das OS oder die Festplatte wechselt stimmen alle Passwörter nicht mehr... :roll:

wenn die betroffene festplatte bzw das betriebssystem geändert wird, muss die software i.d.R. sowieso neu aufgespielt werden.
und es geht ja nur um ein lokalen login für das programm

das man sich dadurch einschränkunen einkauft bestreite ich ja gar nicht :wink:

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mi 13.07.05 12:14 
user profile iconJRegier hat folgendes geschrieben:
Na Tol! Ich habe jetzt mit dem TIdCoderMD5 Probiert aber irgendwas läuft schief! Genauer gesagt ich kann mich jetzt mit beliebigem Passwort einlogen!

Hier der Code!
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:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
procedure TMainForm.SetPassword;
var Pass : TStringList;
    PassCoder : TIdCoderMD5;
begin
   // Password vorbereiten
   ApplicationDirectory := ExtractFileDir(Application.ExeName);
   Pass := TStringList.Create;
   PassFile := ApplicationDirectory+'\DSCHAMBUL.CAT';
   PassCoder := TIdCoderMD5.Create(Self);
   if(FileExists(PassFile))then
   begin
   Pass.LoadFromFile(PassFile);
   Password := PassCoder.CodeString(Pass.Strings[0]);
   end
   else
   begin
   Pass.Add(PassCoder.CodeString('masterkey'));
   Pass.SaveToFile(PassFile);
   Password := Pass.Strings[0];
   end;
   Pass.Free;
   PassCoder.Free;
end;

procedure TLoginForm.OKBtnClick(Sender: TObject);
var PassCoder : TIdCoderMD5;
begin
PassCoder := TIdCoderMD5.Create(Self);
if(PassCoder.CodeString(Trim(PasswordEdit.Text)) = Password)then
begin
PasswordEdit.Text := '';
Login := True;
Close;
end
else
ShowMessage('Falsches Admin Passwort! Kein Zutritt!');
PassCoder.Free;
end;

procedure TPassChangeForm.OKBtnClick(Sender: TObject);
var  New, Rep : String;
     PassCoder : TIdCoderMD5;
begin
   PassCoder := TIdCoderMD5.Create(Self);
   if(PassCoder.CodeString(Trim(OldPasswordEdit.Text)) <>  Password)then
   ShowMessage('Admincreator Passwort stimmt nicht! Passwort kann nicht geändert werden!')
   else
   begin
   New := Trim(NewPasswordEdit.Text);
   Rep := Trim(NewPasswordRepeatEdit.Text);
   if(New <> Rep)then
   ShowMessage('Passwortwiederh. stimmt mit neum Passwort nicht überein!')
   else
   begin
   Login := True;
   Password := PassCoder.CodeString(Trim(NewPasswordEdit.Text));
   Close;
   end;
   end;
   PassCoder.Free;
end;


Ich habe in das Passwort File gesehen aber das ist leer!


Jetzt sagt mir doch mal warum dieser Code hier nicht funzt! Also ich kann mich im Prinzip mit beliebigem Passwort einlogen!
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mi 13.07.05 12:20 
Wie gesagt, wenn du SetPassword aufgerufen hast, so müsste der Code eigentlich funktionieren. Definier doch einen Haltepunkt und geh einfach mal Schrittweise durch. Dann siehst du wo der Fehler ist ;)

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Mi 13.07.05 13:20 
user profile iconmaxk hat folgendes geschrieben:
Wie gesagt, wenn du SetPassword aufgerufen hast, so müsste der Code eigentlich funktionieren. Definier doch einen Haltepunkt und geh einfach mal Schrittweise durch. Dann siehst du wo der Fehler ist ;)


Du meinst meine procedure SetPassword oder..? Jetzt habe ich da in der Hilfe gesehen das man noch den Zurückgegebenen Wert mit Fetch
ummogeln muß aber das klappt wohl auch nicht! Also was ich von der CodeString Funktion zurückbekomme ist ein Leerer String;
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 14.07.05 08:32 
Hey Leute ich habe meine eigene Verschlüsselungsroutine erfunden! Kann den einer knacken wenn er nicht zum Standard gehört?

Aber übrigens macht der MD5 auch wahrscheinlich aus benutzerdefinierten Initialisierung den Passenden Schlüssel oder?
Es ist nur so eine Idee! Aber könnte vieleicht wircklich der Fall sein! Ich bekamm nämlich immer einen leeren String als
Passwort zurück wahrscheinlich muß der TIdCoderMD5 erstmall benutzerdefiniert mit Werten Initialisiert werden, hab ich recht?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 14.07.05 08:39 
user profile iconJRegier hat folgendes geschrieben:
Hey Leute ich habe meine eigene Verschlüsselungsroutine erfunden! Kann den einer knacken wenn er nicht zum Standard gehört?

Ja. Sagte ich bereits.
JRegier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Do 14.07.05 09:57 
user profile iconjasocul hat folgendes geschrieben:
user profile iconJRegier hat folgendes geschrieben:
Hey Leute ich habe meine eigene Verschlüsselungsroutine erfunden! Kann den einer knacken wenn er nicht zum Standard gehört?

Ja. Sagte ich bereits.


Aber welche Methoden benutzen Knacker, können die in den Code sehen und das zurückrechnen?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 14.07.05 10:01 
Alles ein Frage des Aufwands.
Wie ds im einzelnen machen kann ich dir nicht sagen. Ich gehe aber mal davon aus, dass hervorragende Kenntnisse in ASM sehr hilfreich sein werden.
Und gibts ja auch noch Brute-Force :lol:
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Do 14.07.05 11:20 
user profile iconJRegier hat folgendes geschrieben:
Aber welche Methoden benutzen Knacker, können die in den Code sehen und das zurückrechnen?
Das ist gar nicht nötig, da man den Code eines Verschlüsslungsalgorithmus sowieso immer veröffentlichen sollte. Ansonsten ist jeder Algorithmus knackbar. Nur weil niemand aus dem Forum es schaffen könnte, heißt es nicht, dass es nicht möglich ist. Mathematisch ist es das nämlich immer. Und zur Not kommt (wie jasocul bereits sagte) Bruteforce 8)

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.