hey, ich weiß wer du bist und demzufolge weiß ich auch wie du es gemeint hast, ich bin zu keiner Zeit davon ausgegangen das ich mich angegriffen fühlen müsste
Ja, man kann das oben noch einbauen, ginge sogar sehr einfach. Das Thema habe ich aber unter -> Es gibt Verbesserungen und hier in der
DP schon als Source zu finden, abgehackt. Ich muß halt immer einen Kompromiß anstreben, zwischen dem was ich hier als Beispiele poste und noch verständlich ist und dem was alles möglich wäre. Kryptographie ist deshalb sicher weil man das bestehende Wissen auch begriffen hat, man weiß es also. Erkläre ich zuviel kann mir keiner mehr folgen und man wird auf gut Glauben das wiederkauen wa ich an Beispielen gepostet habe ohne es verstanden zu haben. Das ist dann keine Kryptographie mehr, leider.
denoch hier die Änderungen mal angedeutet:
Delphi-Quellcode:
procedure Encrypt(ASource, ADest: TStream; ...blabla);
overload;
var
... blabla
MAC: Binary;
begin
with ...
do
try
...blabla Initialisierung hier
EncodeStream(ASource, ADest, -1);
MAC := CalcMAC(TFormat_COPY);
ADest.WriteBuffer(MAC[1], Length(MAC));
finally
Free;
....bla
ProtectBinary(MAC);
end;
end;
procedure Decrypt(ASource, ADest: TStream; ...blabla);
overload;
var
... blabla
MAC: Binary;
begin
with ...
do
try
...blabla Initialisierung hier
DecodeStream(ASource, ADest, ASource.Size - ASource.Position - BufferSize);
SetLengh(MAC, BufferSize);
ASource.ReadBuffer(MAC[1], Length(MAC));
if MAC <> CalcMAC(TFormat_COPY)
then
raise Exception.Create('
invalid decryption data maybe modifyed or please verify your password');
finally
Free;
....bla
ProtectBinary(MAC);
end;
end;
ABER VORSICHT! Die Berechnung der CMAC hängt stark vom verwendeten Ciphermode ab. Im Grunde ist diese CMAC nur dann aussagekräftig wenn im cmCTS?/cmCFS? Modus gearbeitet wird. Im cmCBCx Modus kann man eine CMAC berechnen lassen nur wird diese auf Grund der Selbstsynchronisation des CBC Modus eben nicht aussagekräft sein.
Der cmCTS?/cmCFS? Modus enthält quasi einen Lawineneffekt. Ein falsches Bit lösste eine Lawine aus die alle nachfolgenden Bits verändert, bis zum Ende der Verschlüsselung und der Berechnung des CMAC. Die Selbstsynchrnisation ist zerstört dafür ergibt sich quasi sowas wie eine Prüfsumme über alle Datenbits. Dies trifft aber auf alle selbstsynchronisierenden Modis nicht zu.
So. Und wieder die Verständlichkeit dieses Threades verschlechtert
Gruß Hagen