Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Passwort "endgültig" verschlüsseln (https://www.delphipraxis.net/51593-passwort-endgueltig-verschluesseln.html)

ichbins 15. Aug 2005 19:50


Passwort "endgültig" verschlüsseln
 
Hallo allerseits, ich wollte fragen, ob es eine Möglichkeit gibt, ein Passwort entgültig zu verschlüsseln, so dass es nur noch durch Ausprobieren erraten werden kann und mit keinem anderen Algorithmus auf dieser Welt geknackt werden kann?

Ich habe schon die Möglichkeit gefunden, dass das Passwort per XOR mit sich selbst verschlüsselt wird:

Delphi-Quellcode:
function encode(password:string):string;
var
  i:integer;
begin
  result:='';
  for i:=1 to length(password) do
    result:=result+char(byte(password[i]) xor byte(password[length(password)-i+1]));
end;

//Überprüfen damit:
function pwisok(encodedpassword,edit:string):string;
var
  i:integer;
begin
  result:=length(encodedpassword)=length(edit);
  if not result then exit;
  for i:=1 to length(encodedpassword) do
    result:=result and (encodedpassword[i]=char(byte(edit[i]) xor byte(edit[length(edit)-i+1])));
end;
aber ich denke einmal das das von jedem Halb-Profi geknackt werden kann, wenn er erst einmal diese Funktion kennt, weil da ja so viele Wiederholungen drin sind. Aber z.B. MSWord kann das ja auch und ich kann dann das Passwort nicht wieder kriegen ohne das ich es (mit oder ohne Software) errate. Das muss doch irgendwie gehen?

//edit: ich glaube das passt in keine andere Kategorie, aber wenn doch verschiebt es bitte in die richtige.

//edit2: nach allden Antworten die sich seit gestern angesammelt haben glaube ich das ich mich doch falsch ausgedrückt habe: Ich will mit dem Passwort keine Daten verschlüsseln sondern ein Logon absichern. Bisher konnte ich das Passwort nur in einer INI-Datei als String speichern.

Dax 15. Aug 2005 19:53

Re: Passwort "endgültig" verschlüsseln
 
Ein sicheres, unkanckbares verfahren? Hier im Forum suchenOne Time Pad ;)

Tubos 15. Aug 2005 19:53

Re: Passwort "endgültig" verschlüsseln
 
Du brauchst einen Hier im Forum suchenHash Algorithmus.
Weitere Informationen: http://de.wikipedia.org/wiki/Hash

Olli 15. Aug 2005 20:06

Re: Passwort "endgültig" verschlüsseln
 
Zitat:

Zitat von Tubos
Du brauchst einen Hier im Forum suchenHash Algorithmus.

So ist es, da würde ich mal einen Blick in DEC riskieren und mich über MD5 und SHA schlaumachen. Leider sind Hashalgorithmen im Gegensatz zu dem von Dax angesprochenen Verfahren nicht unknackbar. Für Mathematiker ist es eine Herausforderung Kollisionen in solchen Algorithmen zu erzeugen und je nach Hashlänge kann auch eine sog. Rainbow Table das Problem lösen. Dies ist ein beschleunigtes (weil gecachtes) Brute-Force-Verfahren.

Rückrechnen kann man aber das Paßwort nicht.

Sharky 15. Aug 2005 20:12

Re: Passwort "endgültig" verschlüsseln
 
Anstelle des DEC kannst Du auch die MD5 Funktion aus diesem Beitrag in der Code-Library eines ominösen Users benutzten. :mrgreen:

Wenn Du die Unit um diese Funktion erweiterst kannst Du auch den MD5-Hash eines Strings erzeugen:
Delphi-Quellcode:
function MD5_HashForString(aValue: string): TMD5Digest;
var
  Context: TMD5_CTX;
begin
  MD5Init(Context);
  MD5Update(Context, PChar(aValue), Length(aValue));
  MD5Final(Context, Result);
end;

Olli 15. Aug 2005 20:21

Re: Passwort "endgültig" verschlüsseln
 
Zitat:

Zitat von Sharky
Wenn Du die Unit um diese Funktion erweiterst kannst Du auch den MD5-Hash eines Strings erzeugen

Ich ging davon aus, man könnte diese hier benutzen: MD5_Hash_OverBuffer().

Aber wenn du meinst, würde ich mit einer kurzen Referenz auf dich das noch in die Unit einfügen. Sozusagen als "convenience function" :mrgreen:

ichbins 15. Aug 2005 20:23

Re: Passwort "endgültig" verschlüsseln
 
Vielleicht bin ich einfach nur zu blöd aber ich konnte bei keinem der Links was finden... :wall:
Hat nicht jemand eine Funktion oder so für mich?

Olli 15. Aug 2005 20:36

Re: Passwort "endgültig" verschlüsseln
 
Zitat:

Zitat von ichbins
Vielleicht bin ich einfach nur zu blöd aber ich konnte bei keinem der Links was finden... :wall:
Hat nicht jemand eine Funktion oder so für mich?

Dann gucke doch nochmal in den von Sharky genannten Beitrag. Ich werde die Unit gleich aktualisieren. Wenn du mir also ein paar Minuten gibst, hast du gleich Sharkys Funktion mit drin!

Sharky 15. Aug 2005 20:48

Re: Passwort "endgültig" verschlüsseln
 
Und damit Du auch gleich etwas damit machen kannst ;-)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  md5_digi: TMD5Digest; // Ein 16 Byte grossen Array = 128 Bit;
  passwort: string;
  md5_hexstring: string;
begin
  passwort := 'blubb';
  md5_digi := MD5_HashForString(passwort); // Ereugt den Hash
  md5_hexstring := MD5_Hash2String(md5_digi); // Wandelt die 128 Bit ein einen HEX-String;
  ShowMessage(md5_hexstring);
end;

Olli 15. Aug 2005 20:52

Re: Passwort "endgültig" verschlüsseln
 
Habe es aktualisiert und Sharkys Funktion aufgenommen. Da Sharky eigentlich nichtmal erwähnt werden wollte, und ich keinen Grund sehe selber erwähnt werden zu müssen, nur weil ich eine eigene Übersetzung des C-Codes liefere, habe ich es als PUBLIC DOMAIN deklariert. Niemand wird also je von dir verlangen einen von uns zu erwähnen ;) ... es sei denn, der Hai beißt nochmal zu :mrgreen:

Mit besten Grüssen,

negaH 15. Aug 2005 20:58

Re: Passwort "endgültig" verschlüsseln
 
Zitat:

Passwort "endgültig" verschlüsseln
Jo ganz einfach, lösche es unwideruflich und fertig.

Diese Antwort zeigt die Sinnhaftigkeit der Frage sehr schön. Warum möchtestdu ein Passwort "endgültig" verschlüsseln ?? Diese Frage ist ziemlich unverständlich.

Gruß Hagen

Urmel 15. Aug 2005 21:03

Re: Passwort "endgültig" verschlüsseln
 
Hallo negaH",

mann sollte einem 14 jährigen, der womöglich noch nicht viel erfahrung beim programmieren hat, das recht zu gestehen eine frage nicht in einem satz so formulieren zu können wie andere.

dafür wurde im posting doch recht deutlich was er möchte finde ich.

Olli 15. Aug 2005 21:08

Re: Passwort "endgültig" verschlüsseln
 
Kommt mal wieder runter! :mrgreen:

Ich finde Hagens Einwand sachlich schon richtig, aber nicht unbedingt rethorisch gut dargelegt. Man hätte auch sagen können: "Erzeuge ein zufälliges Paßwort und speichere dieses nicht ab, mit diesem Paßwort verschlüsselst du dein Paßwort noch bevor du das zufällige Paßwort wegwirfst." Sachlich auch richtig, aber nicht angemessen. Aber einem wie Hagen lassen wir das doch durchgehen, oder?
:cheers:

negaH 15. Aug 2005 21:18

Re: Passwort "endgültig" verschlüsseln
 
Ok, ich gebe zu das meine Antwort provokativ war.

Zitat:

Hallo allerseits, ich wollte fragen, ob es eine Möglichkeit gibt, ein Passwort entgültig zu verschlüsseln, so dass es nur noch durch Ausprobieren erraten werden kann und mit keinem anderen Algorithmus auf dieser Welt geknackt werden kann?
Fangen wir mal an das Problem sachlich zu analysieren.

1.) ein Passwort existiert
2.) damit werden Daten verschlüsselt
3.) danach wird dieses Passwort unwideruflich und für heutige Technologien unknackbar verschlüsselt.

Wie kann man nun die vorher verschlüsselten Daten entschlüsseln ?
Garnicht, also sollte man das Passwort samt zu schützende Daten unwideruflich und sicher löschen, basta. Denn nur so erreicht man die analytisch maximalste Sicherheit die erreichbar ist. Selbst ein OTP Verfahren, selbst ein echtes, unendlich echtes Zufallspasswort kann einfach nicht sicher sein als die Daten samt Passwort zu vernichten, für alle Zeiten, unendlich lange.

Der einzigste Weg um dieses Passwort + Daten wiederherzustellen ist eine Zeitmaschine.

Meine Antwort ist somit durchaus ernst zu nehmen und absolut logisch.
Die Art & Weise meine Antwort so ohne weitere Erklärungen in den Raum zu werfen, jo das kann man kritisieren.

Die beste Antwort auf die Eigansfrage lautet also: Warum?
Ich vermute mal das es ein Contest ist oder ein Test eines Brute Force Algorithmus. Dies wäre die einzigst plausible Begründung warum man eine solche Frage stellen würde, aus meiner Sicht wohlgemerkt.

Also, warum fragst du so eine Frage ?

Gruß Hagen

Thorben86 15. Aug 2005 22:34

Re: Passwort "endgültig" verschlüsseln
 
Also für mich hört es sich ehr danach an, dass er sein Passwort einfach verschlüsselt irgendwo ablegen will und dass dieses nicht wieder zu rekonstruieren ist ( was eventuell das "endgültig" erklärt).

negaH 15. Aug 2005 22:42

Re: Passwort "endgültig" verschlüsseln
 
Könnte auch sein, nur ist das dann unmöglich, ohne externe Crypto-Hardware.

Denn, ein Passwort wie "XZY" muß immer mit einem anderen Passwort wie "1234567890" verschüsselt werden, ganz einfach ausgedrückt.

Das heist das das Passwort das ein Passwort schützen soll um ein vielfaches höhere Komplexität aufweisen muß als das verschlüsselte Passwort. Nun, nachdem man so ein Passwort geschützt hat stellt sich die Frage:

"Wie schütze ich ein Passwort das ein Passwort schützt, das ein Passwort schützt das ein Passwort schützen soll, das .... ?"

Also auch aus diesem Blickwinkel ist die Frage unsinnig zu beantworten wenn er nicht mit mehr Details rausrückt.

Gruß Hagen

Olli 15. Aug 2005 22:53

Re: Passwort "endgültig" verschlüsseln
 
Zitat:

Zitat von negaH
Denn, ein Passwort wie "XZY" muß immer mit einem anderen Passwort wie "1234567890" verschüsselt werden, ganz einfach ausgedrückt.

Unter endgültig kann man auch "Einweg" verstehen. Dann wäre ein Hash auch richtig. Wenn wir es so nehmen wie du, müßten viel mehr Fragen im Forum nur mit Ja oder Nein beantwortet werden. Also nicht so genaunehmen.

Zitat:

Zitat von negaH
Also auch aus diesem Blickwinkel ist die Frage unsinnig zu beantworten wenn er nicht mit mehr Details rausrückt.

Hey, denk mal an das Alter des Fragestellers :zwinker:

negaH 15. Aug 2005 23:18

Re: Passwort "endgültig" verschlüsseln
 
@Olli,

ich gebe dir Recht mit dem Hinweis auf sein Alter, denoch ändert dies nichts an meiner Antwort da sie nur sachlich auf die Frage bezogen ist.

Zitat:

Unter endgültig kann man auch "Einweg" verstehen. Dann wäre ein Hash auch richtig.
Korrekt. Man könnte dann aber per Brute Force Attacke nicht eindeutig das Passwort knacken. Denn zu einer zb. 128 Bit großen Hash Funktionen wird es mathematisch korrekt exakt "unendlich - 2^128" gültige Test-Passwörter geben die exakt den gleichen Hashwert produzieren müssen wie dieses eine Passwort.

Wir benötigen also in jedem Falle mehr Input vom Fragesteller.

Zb. sowas wie "ich möchte das eingegebene Passswort über einen zweiten Wert auf Gültigkeit prüfen".

Diese Frage ist einfach zu beantworten: nehme eine Hash Funktion, oder besser gesagt eine "sichere Einweg Verschlüsselung".

Die Verschlüsselung des Passwortes mit sich selber ist unsicherer als eine solche Hash Funktion.

Gruß Hagen


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