AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi bitte verschlüsselungsfunktion bewerten/testen
Thema durchsuchen
Ansicht
Themen-Optionen

bitte verschlüsselungsfunktion bewerten/testen

Ein Thema von Davidb · begonnen am 28. Nov 2005 · letzter Beitrag vom 30. Nov 2005
Antwort Antwort
Benutzerbild von negaH
negaH

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

Re: bitte verschlüsselungsfunktion bewerten/testen

  Alt 29. Nov 2005, 16:44
Gerade eben

Das ist ein MDC = Message Digest Cipher, wenn auch deine Impelemntierung ziemlich unkonvetionell bzw. umständlich ist.

Ein MDC benutzt das Passwort als Seed und erzeugt dann wiederholt durch hashen dieses Seeds einen Schlüsselstrom der mit XOR die Nachricht verschlüsselt. Ansich eine gute Idee da so sichergestellt wird das es keine Zurückrechenbaren Abhängigkeiten vom Passwort zum produzierten Schlüsselstrom gibt.
Auf alle Fälle weit weit besser als Delphi Random zu benutzen.

Aber wie überall gibts ein Problem: Einige MDC sind unsicher und wurden gebrochen, sogar ziemlich viele. Das lag aber meisten daran wir der Seed erneut in den neuen Seed per Hash eingerechnet wurde. MDC sind also in der Verrschlüsselung verpönt, man wendet sie deshalb nicht an weil es Verschlüselungsalgos. gibt die exakt auf die Aufgabe "Verschlüsseln" hin konstruiert und analysiert wurden. MDC mißbrauchen quasi eine Hashfunktion die ganz andere Aufgaben erledigen soll zur Konstruktion einer Verschlüsselung. Der Beweis der Sicherheit einer MDC ist weit schwieriger als bei einer gleichstarken Verschlüsselung.

B.Schneier meint das man sie nicht anwenden sollte.

Auf Grund deiner Art&Weise über String zu arbeiten, mod 31 durchzuführen, immer nur nach X zeichen des MDC zu berechnen würde ich meinen das einiges dadurch unsicherer wird, heist das dadurch Angriffsmöglichkeiten existieren werden die bei einem rein binär arbeitenden MDC nicht existent sind.

Mache folgendes:

Delphi-Quellcode:
var
  Hash: THash;
  Counter: Cardinal;
  Register: array[0..19] of Byte;
begin
  SetLength(Result, Length(Value));
  Hash := THash_SHA1.Create;
  try
    Hash.Init;
    Hash.Calc(Password[1], Length(Password));
    Hash.Done;
    for Counter := 1 to Length(Value) do
    begin
      Move(Hash.DigestKey^, Register, SizeOf(Register));
      Hash.Init;
      Hash.Calc(Counter, Sizeof(Counter));
      Hash.Calc(Register, SizeOf(Register));
      Hash.Done;
      Byte(Result[Counter]) := Byte(Value[Counter]) xor PByte(Hash.DigestKey)^;
    end;
  finally
    Hash.Free;
  end;
  Result := StrToFormat(PChar(Result), Lenght(Result), fmtHEX);
end;
Gruß Hagen
  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 12:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz