AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüsselung erkennen

Ein Thema von Luckie · begonnen am 8. Aug 2003 · letzter Beitrag vom 10. Aug 2003
Antwort Antwort
Seite 2 von 2     12   
Assarbad
(Gast)

n/a Beiträge
 
#11

Re: Verschlüsselung erkennen

  Alt 9. Aug 2003, 17:10
Jetzt aber still, Motzi

Ganz leise ...

Hab ihm auch vorher gesagt, daß ich in Sachen Kryptographie nur auf erprobte OpenSource Implementationen vertrauen würde - als er mir den Wrapper zeigte. Aber ich sagte auch, daß es für Zwecke wo man nicht den Geheimdienst fürchten muß sicher reicht. Sehe ich immernoch so!

... ist aber unschön das von Hagen jetzt so detailliert auf die Stulle geschmiert zu kriegen

  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Verschlüsselung erkennen

  Alt 9. Aug 2003, 17:13
DEC Part I gibts nur als diese Version 3.0, die aber mit nur 3 Änderungen auch auf D6,D7 läuft. Einfach in Unit DECReg.pas in der Uses Klausel "DsgnIntf" ändern "DesignIntf, DesignEditors". Den zweiten Fehler in Checksum.pas (falls vorhanden) kannste selber ändern, Borland's inline Assembler ist nun pingeliker.

Aber das nützt dir alles nichts, da dieser Part keine asymmetrische/Public Key Verschlüsselungen enthält.
Ich habe leider nicht mehr die großen Zeitfetzen um alles am DEC komplett fertigzustellen. Meine derzeitige Idee ist es eine DLL zu entwicklen die Elliptische Kurven + RSA Algorithmen enthält. Also ein absolut guter Ersatz für RSA. Hier fängt aber das Problem so richtig an, denn jede vernünftige PKC muss auch ein vernünftiges Schlüssel-/Signature Management enthalten. Also 1000mal mehr Überbau über den eigentlichen mathematischen Code, bäh und das hasse ich

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Verschlüsselung erkennen

  Alt 9. Aug 2003, 17:17
Sorry, das war echt gemein von mir, oh Achtung da kommt ein Kartoon :=)

Ich könnte hier zaghaft einen leisen Pieep machen und anbieten gemeinsam eine eigene DLL zu entwicklen. Man soll ja nicht anderen ihre Arbeit kritisieren wenn man's nicht besser kann. Den kompletten math./kryptographischen Teil würde ich dann beisteueren. Wie gesagt das Keýmanagement IST das eigentliche problem.

Gruß hagen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: Verschlüsselung erkennen

  Alt 9. Aug 2003, 17:33
Ich bin jetzt erstmal auf BlowFish, DEC und Rijndael zur Auswahl umgestiegen. Benutzen tue ich diese Komponenten: www.crypto-central.com Was hältst du davon? Recht einfach zu Handhaben, was mir nur fehlt ist das Ereignis OnProgress. Ich hätte nämlich gerne eine Rückmelung an den Benutzer, wenn es mal wieder länger dauert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Verschlüsselung erkennen

  Alt 9. Aug 2003, 17:44
DCPCrypt ist nach dem DEC die dritt-beste freie Cryptolib für delphi was soll ich anderes sagen ?? Die zweitbeste Lib ist das DEC und die allerbeste Library für Delphi ist mein inoffizielles DEC.

Ich will ehrlich zu dir sein, extrahiere den reinen Algorithmus und wende diesen an. Beim DEC Part I zB. hat mich am meisten gestört das es eine enorm umfangreiche Bibliothek ist, einfach zuviel des Guten. Meine eigene version vom DEC integriert nur eine CRC unit, eine Unit mit SHA1 und MD4 als Hash's und AES-Rindael + Polymorph PMC + SCOP als verschlüsselungen, und einen sicheren Zufallsgeenrator und meine Mini-LZH Komprimierung. Meistens nutze ich nur SHA1 + AES Rijndael + LZH.

Natürlich bin ich der Meinung das DEC's Klassenkonzept echt elegant ist

Aber am wichtigsten ist es zu wissen WAS man tut. Da du gerade am basteln deines Headers bist, der entscheidend verantwortlich für die spätere Sicherheit ist, biete ich dir an ein paar Tipps&Tricks zu veraten.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Verschlüsselung erkennen

  Alt 9. Aug 2003, 17:49
Zitat von negaH:
Aber am wichtigsten ist es zu wissen WAS man tut. Da du gerade am basteln deines Headers bist, der entscheidend verantwortlich für die spätere Sicherheit ist, biete ich dir an ein paar Tipps&Tricks zu veraten.
Na dann mal los...
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Verschlüsselung erkennen

  Alt 10. Aug 2003, 12:32
Ok ich versuche mal einen kurzen Abriß zu geben.

Was benötigen wir:
1.) eine Hashfunktion wie SHA1
2.) einen symmetrischen Cipher wie AES Rijndael
3.) einen Zufallsgenerator wie YARROW
4.) einen Komprimierungsalgo. eventuell

Man will eine Datei verschlüsseln, hat das Passwort und einen Dateisourcestream und Outputstream.

Zuerst erzeugen wir mir dem Randomgenerator YARROW einen Salt. Dieser Salt dient dazu das Password zu sichern und es zufällig zu machen. Desweiteren dient er zu randomisierung des Verschlüsselungsprozesses.
Nachfolgend NUR ein Pseudocode um besser den Algo. zu zeigen.

Delphi-Quellcode:
type
  THeader = packed record
    Ident: Cardinal; // identifiziert das Dateiformat
    Salt: array[0..19] of Byte; // randomisiert das Passwort
    SessionKey: array[0..19] of Byte; // zur überprüfung des Passwortes
  end;

procedure Encrypt(const Source,Dest: TStream; const Password: String);
var
  Header: THeader;
begin
// initialisiere Header
  Header.Ident := $12345678;

// erzeuge Salt, ein "Zufallswert" der NICHT zurückberechnenbar ist
  RunYarrow(Header.Salt, SizeOf(Header.Salt));

// erzeuge Sessionkey
  Header.SessionKey := RunSHA1(Header.Salt + Password);
  
  InitEncrypt(Header.SessionKey);
  EncryptCBC(Header.SessionKey);
  Dest.Write(Header);
  EncryptCBC(Source, Dest);
  EncryptCBCDone(Dest);

{ man erzeugt Zufallsdaten, diese + Password werden durch eine
  Hashfunktion in ein SessionKey umgewandelt mit dem Verschlüsselt wird.
  Der SessionKey wird mit sich selber verschlüsselt.
  Der Header wird in Dest geschrieben.
  Die Source wird nach Dest verschlüsselt.
  WICHTIG! dabei ist das Encrypt(SessionKey) + Encrypt(Source, Dest)
  keine voneinander getrennten Verschlüsselungen sind. Es werden also
  SessionKey + Source als ein zusammengehöriger Datenstrom behandelt.
 
  D.h. Man kann SessionKey nur entschlüsseln wenn man den korrekten
  Sessionkey kennt. Wird entschlüsselt muß aus dem gespeichert Salt +
  Password der gleiche SessionKey erzeugt werden, dann wird
  Header.SessionKey entschlüsselt und mit dem aktuellen Schlüssel
  verglichen. Sollten sie ungleich sein so ist das Entschlüsselungs-
  passwort falsch. Da der Salt aus dem Passwort einen Zufäligen SessionKey
  erzeugt MUSS demzufolge die Verschlüsselung auch zufällig sein.
  Da der Header.SessionKey als erster Block verschlüsselt wird wird
  auch der Schlüsselstrom zufällig.
}

end;
So das ertmal zum Prinizp. Jetzt stellst du erstmal mehr Fragen und dann sehen wir mal ob ich eine kleine Unit baue

Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:35 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