AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Passwortverschlüsselung

Ein Thema von arest · begonnen am 12. Jan 2011 · letzter Beitrag vom 12. Jan 2011
Antwort Antwort
arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#1

Passwortverschlüsselung

  Alt 12. Jan 2011, 13:07
hallo an alle,

leidiges thema und schon hundertfach diskutiert.. sorry dafür! dennoch die frage, da mir die sufu nicht so richtig weiter hilft
ich habe einen datensatz, den ich über nachfolgende funktion in eine datei abspeichere:
Code:
procedure TForm1.Listespeichernunter1Click(Sender: TObject);
var Datf:File of TDaten;
Daten1:TDaten;
begin
      aenderung:=false;
      Edit1.Clear;
      lauf:=TKnoten.Init;
      if SaveDialog1.Execute
      then begin
              dateiname:=SaveDialog1.FileName;
              if copy(dateiname,length(dateiname)-3,4)<>'.mbf'
              then begin
                      dateiname:=dateiname+'.mbf';
                   end;
              Assignfile(Datf,dateiname);
              Rewrite(Datf);
              lauf:=anfang;
              repeat lauf:=lauf.nachfolger;
                 if (lauf <> ende)
                 then begin
                         write(Datf,lauf.Daten);
                      end;
              until (lauf.nachfolger=ende);
              closefile(Datf);
           end;
end;
wie euch sicherlich aufgefallen ist, speichert das in normal lesbarer version alle datensätze aus meiner liste. ich möchte nun, dass diese daten verschlüsselt abgespeichert werden und bei meiner datei öffnen funktion nur dann korrekt eingelesen werden, wenn das mitgespeicherte und ebenfalls verschlüsselte passwort korrekt eingegeben wurde... (bei meiner speichermethode kann die datei logischerweise einfach per wordpad geöffnet und gelesen werden)

muss ich dabei wirklich so aufwändig werden, wie in einigen schon vorhandenen posts besprochen wurde? oder kann man das auch einfacher haben? ich brauch da nicht unbedingt eine 128bit verschlüsselte file.. es soll bloß für den normalen user, der die file halt per wordpad öffnet nicht mehr lesbar sein und in meinem programm halt nur bei korrekter eingabe entschlüsselt werden!

danke für alle beiträge vorab!
greedings
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Passwortverschlüsselung

  Alt 12. Jan 2011, 13:53
[...] wenn das mitgespeicherte und ebenfalls verschlüsselte passwort korrekt eingegeben wurde...
Eine weitaus bessere Idee ist es, das Passwort nicht in der Datei zu speichern, sondern es zu hashen und den Hash als Schlüssel für deinen Verschlüsselungsalgorithmus zu nutzen. Wenn man zum öffnen nun ein falsches Passwort eingibt, entschlüsselst du nur Müll. Andernfalls müsstest du ja mit einem festen Schlüssel () die Daten in den Klartext bringen, bevor du prüfen kannst, ob der Nutzer leseberechtigt ist - nicht sonderlich sicher.

PS: Was hast du gegen Chiffren mit einem 128-bit Schlüssel? Viel kleiner kannst du eh nicht werden, denn außer den veralteten DES und einigen Stromchiffren gibt es eig. nichts gescheites, was weniger hat.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#3

AW: Passwortverschlüsselung

  Alt 12. Jan 2011, 14:51
krass was ein amok denkfehler meinerseits.. ist ja logisch, dass das so nicht gehen könnte^^ danke dafür schonmal

wie funktioniert das mit dem hashen denn? ich würd es dann jetzt so verstehen, dass ich meinen normalen inhalt ausm programm durch irgend eine form von verschlüsselung unlesbar abspeichere und das passwort gehashed(?!) mit hinterlegt wird.. hat jemand dazu was in ein paar zeilen code?

thx
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Passwortverschlüsselung

  Alt 12. Jan 2011, 14:57
.. nein, der Schlüssel bzw. das Passwort wird nirgendwo hinterlegt.

Der User gibt ein Passwort ein, dein Programm erstellt daraus einen Hash
(Stichwort md5, sha1). Der Hash wird dann zum ver- und entschlüsseln hergenommen.

Grüße
Klaus
Klaus

Geändert von Klaus01 (12. Jan 2011 um 14:58 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Passwortverschlüsselung

  Alt 12. Jan 2011, 15:00
Es war anders gemeint, so wie Klaus01 schon sagte.

Speichern:
  1. Benutzer gibt das Passwort ein
  2. Passwort mit einem Hash hashen (dessen Ausgabegröße im Idealfall genau zur Schlüssellänge deines Verschlüsselungsalgorithmus passt)
  3. Den Hash als Schlüssel setzen
  4. Die Daten verschlüsseln und in eine Datei speichern

Das Passwort existiert somit nirgendwo mehr.
Das Laden geht erst einmal genau so, nur dass du in Punkt 4 natürlich die Daten lädst und entschlüsselst.
Außerdem sollte man natürlich aufpassen, dass man ja einen verketteten Modus für die Blockchiffre nimmt (sofern man sich für eine entscheidet) und am besten auch jedes mal einen neuen Initialisierungsvektor nutzt.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#6

AW: Passwortverschlüsselung

  Alt 12. Jan 2011, 15:10
ich hab mal bei der sufu nach md5 und sha1 gekramt, aber ich versteh da nur bahnhof... ich bin schon eher so nen ziemlicher amateur beim coden und das überfordert mich dann doch ziemlich^^ prinzipiell check ich was ihr von mir wollt, aber wie ich das in zeilen umsetzen soll hab ich keinen plan :X evtl erbarmt sich jemand und hilft mir mit n bisschen code weiter? bzw. ein link zu nem entsprechenden eintrag in irgend nem forum, aus dem auch ein nichtskönner schlau wird?
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Passwortverschlüsselung

  Alt 12. Jan 2011, 15:15
Such mal nach DEC. Dort sollten genug Algorithmen enthalten sein.
Wie es funktioniert? Gute Frage, ich nutze es nicht, aber auch da könnte dir die Sufu weiter helfen.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
arest

Registriert seit: 27. Sep 2005
Ort: Frankfurt
62 Beiträge
 
Delphi 6 Personal
 
#8

AW: Passwortverschlüsselung

  Alt 12. Jan 2011, 15:28
wie gesagt, das ist mir alles ein bisschen hoch... ich begrab das "projekt" verschlüsseln dann einfach

danke trotzdem an alle und falls doch noch jemand helfen mag, ich freue mich
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Passwortverschlüsselung

  Alt 12. Jan 2011, 15:44
Naja, schwer ist es nun nicht gerade.
Ein Beispiel, wie einfach es mit meinen eigenen Komponenten geht:
Delphi-Quellcode:
procedure TForm1.SaveFileButtonClick(Sender: TObject);
begin
  AES.Key.Assign(SHA256.Hash(PasswortEdit.Text)); // Passwort hashen und als Schlüssel zuweisen
  AES.EncipherTextFile('C:\test.txt', DatenMemo.Text); // Inhalt von DatenMemo in die Datei test.txt speichern
end;

procedure TForm1.OpenFileButtonClick(Sender: TObject);
begin
  AES.Key.Assign(SHA256.Hash(PasswortEdit.Text)); // Passwort hashen und als Schlüssel zuweisen
  DatenMemo.Text := AES.DecipherTextFile('C:\test.txt'); // Datei test.txt laden und deren Inhalt DatenMemo.Text zuweisen
end;
(SHA-256 als Hash, AES als Verschlüsselung.)

Hier fehlt eig. nur noch, beim Speichern einen IV zu setzen. Ansonsten ist es vollkommen einsatzbereit
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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