Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#4

Re: Sicherer Dateiheader anlegen mittels DEC

  Alt 27. Nov 2009, 00:56
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;
  Mit Zitat antworten Zitat