Hagen, auf dich hab ich gewartet
Zitat von
negaH:
Versuche mal als Value einen String aus lauter #0 Zeichen zu verschlüsseln. Du wirst sehen das im CipherText 1 zu 1 dein Verschlüsselungskey drinnen steht. Ein möglicher Angriff ist also die "Known Plain Text Attack" bei dem ich dir eben einen Value aus lauter #0 Zeichen unterjubel. Dein verschlüsselter Wert liefert mir dann frei Haus deinen Schlüssel. Ich muß dir aber garnicht einen Value aus #0 zeichen unterjubeln, JEDER beliebige Wert reicht aus.
Hmpf. So einfach?
Zitat von
negaH:
Es gilt: nehme zur Verschlüsselung niemals direkt das Passwort !
Mach ich zum Glück nicht
Zum Rest:
Das Problem ist ja, dass das einzige was die Verschlüsselung eines Wertes von der eines anderen Unterscheidet ja der Schlüssel ist.
Normalerweise würde man dann den User diesen Schlüssel eingeben lassen.
In diesem Fall geht dies aber nicht.
Daher habe ich nach einer Möglichkeit gesucht, diesen Schlüssel eben aus gegebenen Werten zu erzeugen.
Dazu habe ich mir folgende Variante überlegt:
Delphi-Quellcode:
function TCryptedIniFile.ReadPassword(Section: String; Ident: String; Default: String): String;
begin
Result:=Crypt(Crypt(Base64Decode(ReadString(Section,Ident,Default)),Section),Ident);
end;
procedure TCryptedIniFile.WritePassword(Section: String; Ident: String; Value: String);
begin
WriteString(Section,Ident,Base64Encode(Crypt(Crypt(Value,Section),Ident)));
end;
Nun, ohne eine weitere Analyse:
Ist dieses Verfahren sicher genug, um ein Passwort für einen
SQL-Account auf einem Schulserver zu schützen, der lediglich auf eine Tabelle Zugriff hat, und dort nur Einfügen, Löschen und Verändern kann, wobei das Programm auf einem Verwaltungsrechner liegt, wo normalerweise keine Schüler drankommen?
Ja, oder?