Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sicherer Dateiheader anlegen mittels DEC (https://www.delphipraxis.net/143923-sicherer-dateiheader-anlegen-mittels-dec.html)

stOrM 26. Nov 2009 06:48


Sicherer Dateiheader anlegen mittels DEC
 
Hallo!
Beim stöbern hier im Forum, stieß ich auf ein Paar interessanter Beiträge im Bezug auf Kryptographie in Verbindung mit DEC welche mir ausserordentlich gut gefällt muss ich sagen. :thumb:

Problem ist ich hab keinerlei Erfahrung im Bezug auf Kryptographie von daher müßte ich mir gewisse Sachen wohl aneignen um folgendes zu erreichen:

Meine Anwendung benutzt (auch hier aus dem Forum ich find nur den Link leider grad nicht :cry: ) EncryptedStringLists...
Die Stringlist benötige ich um diverse Sachen zu verschlüsseln, zu speichern und bei bedarf halt wieder einzulesen...

Hierbei hab ich mir die Frage gestellt, ob es ggf. Sinn macht (falls ja, wie?) der verschlüsselten Datei vor dem Speichern ggf. noch eine Art Header zu verpasst, was später sicherstellen soll, dass diese Datei wirklich von meiner Anwendung erstellt wurde...
Im Header könnte ggf. dann z.b. der Name der Anwendung / Checksum? oder sowas in der Art stehen, um sicher gehen zu können, dass mir nicht irgend jemand da eine Datei untergejubelt hat, welche gar nicht von mir stammt... (Als Beispiel zu verstehen!)

Zurück zu DEC:
Wie müßte ich denn mit DEC vorgehen um einen sicheren Header zu erstellen?

Wie gesagt beim stöbern hier hab ich schon einiges darüber lesen können, ich vermute mal ich muss dort auch eine Art Random Engine benutzen?
Aber so genau weiß ich da im Moment auch nicht wirklich WIE , WAS , WO!

Vielleicht weiß ja jemand mehr (Wovon ich überzeugt bin :mrgreen: )

Viele Grüße
s!

himitsu 26. Nov 2009 10:16

Re: Sicherer Dateiheader anlegen mittels DEC
 
Das mit der Checksumme könntest du auch weglassen.
Wird irgendwann eh geknackt und dann berechnet man einfach eine passende Summe und schon denkt dein Programm es sei alles in Ordnung.

Zitat:

Zitat von stOrM
Meine Anwendung benutzt (auch hier aus dem Forum ich find nur den Link leider grad nicht :cry: ) EncryptedStringLists...

http://www.delphipraxis.net/internal...glist+encrypt*

stOrM 26. Nov 2009 10:27

Re: Sicherer Dateiheader anlegen mittels DEC
 
Zitat:

Zitat von himitsu
Das mit der Checksumme könntest du auch weglassen.
Wird irgendwann eh geknackt und dann berechnet man einfach eine passende Summe und schon denkt dein Programm es sei alles in Ordnung.

Zitat:

Zitat von stOrM
Meine Anwendung benutzt (auch hier aus dem Forum ich find nur den Link leider grad nicht :cry: ) EncryptedStringLists...

http://www.delphipraxis.net/internal...glist+encrypt*

Ok bin für jede Anregung sehr dankbar!

Jau genau das war der Link! :mrgreen:

Ps.: Ich hab noch was gefunden dazu (Was für ein Zufall, das klingt eigentlich super nur RunYarrow? Dürfte Pseudo Code sein, dat hab ich ned :roll: )
Aber so in etwa hab ich mir das Vorgestellt, nur Verstanden hab ich weniger als die Hälfte davon leider!

klick

negaH 27. Nov 2009 00:56

Re: Sicherer Dateiheader anlegen mittels DEC
 
YARROW ist der Zufallsgenerator der im DEC ab 5.0 standardmäßig benutzt wird.

Wozu einen "sicheren" Header ?
Was du brauchst ist eine kryptographisch sichere Überprüfung ob die verschlüsselten Daten manipuliert wurden, dann erübrigt sich dein "sicherer" Header. Der macht nur dann Sinn wenn du sehr schnell, ohne die Daten entschlüsseln zu müssen, erkennen möchtest ob der Header noch ok ist.

Essentiell ist das alles sehr einfach zu realisieren.
Du brauchst

1.) Zufallssalt
2.) Passwort eingegeben vom Eigner der Daten
3.) secure hash Funktion wie SHA1/SHA256 usw.

Zufallsalt wird als erstes Element im Header gespeichert. Danach deine Headerinformationen und abschließend eine Prüfsumme berechnet mit der Hash Funktion.
Du machst nun folgendes um diese Prüfsumme zu berechnen. Laden den Header als binären Datenblock ohne die Prüfsumme in den Speicher. Initialisiere ein Hash Funktion. Berechne über das Passwort den Hash und anschloießend sofort über den Header. Finalisiere den Hash und fertig ist deine Prüfsumme. Speichere sie nach dem Header.

Nur derjenige der das korrekte Passwort kennt kann die exakt gleiche Prüfsumme nachberechnen und ergo du hast deine sichere Überprüfung.
Exakt auf gleiche Weise könntest du auch die un-/verschlüsselten Daten absichern.

Wichtig dabei ist einzigst das das Passwort im Hirn des Benutzer gespeichert wird und nicht hardcoded in deiner Anwendung.

Gruß Hagen

Einfaches Beispiel:
Delphi-Quellcode:
function Checksum(const Password: String; const Header: Binary): String;
begin
  with THash_SHA1.Create do
  try
    Init;
    Calc(Password[1], Length(Password));
    Calc(Header[1], Length(Header));
    Done;
    Result := DigestStr(TFormat_HEX);
  finally
    Free;
  end;
end;

stOrM 27. Nov 2009 02:39

Re: Sicherer Dateiheader anlegen mittels DEC
 
Hallo Hagen
erstmal herzlichen Dank zur Beleuchtung meines Hirns, ein kleines Licht ist angegangen (Besser als die vorherige totale Finsternis :mrgreen: )

Ich denke ich habs so halbwegs verstanden, was Du oben schriebst, nur ein kleines Problem gibt es noch und zwar:

Zitat:

Wichtig dabei ist einzigst das das Passwort im Hirn des Benutzer gespeichert wird und nicht hardcoded in deiner Anwendung.
Genau das ist der Haken, oder mein Verständnisproblem, die Anwendung von mir läuft gewissermassen automatisiert ab, der User muss / kann keine Eingaben machen, dass was gemacht werden muss übernimmt die Anwendung so zu sagen alleine...

Nur wie soll die jetzt die Überprüfung starten, wenn das PW nicht in die Anwendung darf?

Ich wills mal so Erklären, stell dir eine Art Container vor in Form einer Datei, dort steht eigentlich alles drin, was meine Anwendung erledigen soll und genau um diese Sicherheit des Containers gehts nun...

Das heisst irgendwo muss ich das PW dann hinterlegen??? So das meine Anwendung dann weiterhin ohne Benutzerinteraktion die Dinger entschlüsseln, verarbeiten und überprüfen kann?

Viele Grüße und herzlichen Dank für die Infos!!!
s!


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