AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#
Thema durchsuchen
Ansicht
Themen-Optionen

Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

Ein Thema von schinger · begonnen am 17. Feb 2006 · letzter Beitrag vom 13. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
schinger

Registriert seit: 7. Aug 2004
11 Beiträge
 
#1

Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 17. Feb 2006, 18:43
Hallo zusammen,

hab hier im Forum schon eine Menge an Informationen zum Thema Verschlüsselung gefunden und hoffe nun, dass Ihr mir
etwas weiterhelfen könnt.

Meine Frage also:

Im Moment benutze ich die Rijndael-Verschlüsselung aus dem DEC als symmetrische und RSA aus Lockbox als asymmetrische Verschlüsselun g in einer Client-Server Applikation (WebService Client und Service selbst). Da ich nun beide Anwendungen selbst schreibe und in beiden die gleichen Komponenten verwende, funktioniert das auch wunderbar. Meine Frage ist jetzt nun, wenn nun jemand einen z.b. C# Client für den WebService schreibt, in wie weit sind dann die Verschlüsselungsalgorithmen kompatibel.
Will sagen, wenn der Client nun eine andere Implementation von Rijndael verwendet, da es die lockbox ja nur für Delphi gibt, funktioniert dann die Verschlüsselung trotzdem oder kann es da zu Problemen kommen. Wenn ja zu welchen und welche Lösungen gibt es in diesem Fall.

Danke schon mal für euere Hilfe.

Gruss

Markus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 17. Feb 2006, 18:48
Theoretische sollte eine Verschlüsselung unabhängig von der Implementierung und Programmiersprache sein.
Aber Teste es lieber. Nicht jede Implementierung ist das wirklich sondern "nur" zu sich selbst kompatible da irgendwelche Compilereigenheiten/Blockgrößen fehlerhaft berücksichtigt wurden. wurden
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
schinger

Registriert seit: 7. Aug 2004
11 Beiträge
 
#3

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 19. Feb 2006, 11:49
Danke für die Antwort.

Ich hatte allerdings gehofft, dass jemand dazu vielleicht schon Erfahrungswerte hat.

Vielleicht kann ja auch Hagen, der dankenwerterweise das DEC ja zur Verfügung gestellt hat, was dazu sagen. Sonst müsste ich jetzt erst weitere Testanwendungen schreiben.

Also falls jemand schon Erfahrungen dazu hat, z.b. mit C# oder auch java, wäre ich sehr dankbar.

Gruss

Markus
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 22. Feb 2006, 15:33
Sie müssen kompatibel sein, rein Algorithmisch gesehen. ABER! alles was ausserhalb des reinen AES Algos. liegt ist Definitionssache, dh. zb. das Protokoll wie man den übergebenen Schlüssel in einen sicheren Sessionkey umwandelt kann sehr unterschiedlich sein. Das gleiche gilt für die IVs=Init Vektoren.

Du solltest folgendes berücksichtigen:

1.) nur Cipher Modis cmCBC, cmECB, cmOFB etc. pp. verwenden.
2.) NIEMALS Cipher Mode cmCTS verwenden da das eine Eigenentwicklung meinerseits ist. Sie basiert zwar auf dem Standard Modus CBC ist aber kein Standard selber.
3.) den Cipher mit .Init() initialisieren und nicht mit .InitKey(). Die Methode Init() benutzt den Schlüssel so wie er ist. Die Methode .initKey() wanelt per Hashfunktion den Key vorher in einen Sessionkey um. Dieses Umwandlung ist zwar standardmäßig empfohlene Praxis, aber jede Library kocht da ihr eigenes Süppchen WIE sie es umwandelt.
4.) Das Padding der Nachricht auf ein Mehrfaches der Blockgröße. DEC benutzt Cipher Text Stealing im CBC Modus. Die Art&Weise wie nun dieses durchgeführt wird ist noch nicht standardisiert. Nur die neuesten Cipher Modis habe das auch in ihren Standards berücksichtigt. Am besten ist es erstmal mit Nachrichten der Länge Cipher.BlockSize * x austesten. Wenn beide Resultate identisch sind dann mit ungepaddeten Daten nochmal probieren. Meistens unterscheidet sich dann der letzte Block der verschlüsselten Nachricht, je nachdem welches Paddingschemata verwendet wurde.
5.) praktisch Testen! Um einen solchen Test kommst du niemals drumherum.

Gruß Hagen
  Mit Zitat antworten Zitat
schinger

Registriert seit: 7. Aug 2004
11 Beiträge
 
#5

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 11. Mär 2006, 18:50
Hallo,

danke für die Antwort, hab sie leider jetzt erst gelesen.
Werd wohl wirklich nicht um einen Test herum kommen.
Gibt es denn schon jemanden der Erfahrungen mit dem DEC/Verschlüsselung und Kommunikation mit implementation von z.b. Rijndael in anderen Sprachen z.B. c# hat, das wäre sehr hilfreich für mich.

Vielen dank schon mal.

Gruss

schinger
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#6

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 11. Mär 2006, 20:37
Mal ne andere Sache.. warum portierst Du nicht den Delphi-Code nach Delphi.NET, machst ein Assembly und benutzt den dann tatsächlich identischen Code aus C# raus? Ich denke das schliesst zumindest schonmal einige der möglichen Fehlerquellen aus.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 11. Mär 2006, 20:55
Zitat von Phoenix:
Mal ne andere Sache.. warum portierst Du nicht den Delphi-Code nach Delphi.NET, machst ein Assembly und benutzt den dann tatsächlich identischen Code aus C# raus? Ich denke das schliesst zumindest schonmal einige der möglichen Fehlerquellen aus.
Ja klar, er kompiliert eine DCU-only Bibliothek wie DEC mit D.Net?
Selbst wenn er die Saucen hätte wäre der Code nicht kompilierbar, außer er kapselt das DEC in einer DLL.

Dieses D32->D.Net Rekompilieren sollte man bitte mit etwas mehr Vorsicht genießen als es uns so mancher Borland-Zealot glauben machen will.
Lass ihn doch einfach DEC-verschlüsselte Daten vom RSACryptoServiceProvider entschlüsseln und vice versa. Wenn's geht, gates.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 11. Mär 2006, 21:57
Naja, ganz so dramatisch ist es nun auch wieder nicht.

DEC Part I liegt sehr wohl als Source vor, sogar als Freeware. Und es ging hier nur um Bestandteile des Part I.
Desweiteren enthält gerade die neueste Version reine PASCAL Sourcen und per Compilerswitches separat aktivierbaren Assemblercode. Zusätzlich habe ich gerade in dieser neuen Version darauf geachtet die vielen in .NET unerwünschten Zeiger und Sourcekonstrukte zu ersetzen. Nach meiner Meinung nach müsste DEC Part I eigentlich in weiten Teilen sofort in .NET compilierbar sein.

Das was du als reine DCU Distributation kennst ist eigentlich der Part II vom DEC. Das sind nur die Sourcen des sogenannten DECMaths und dessen Bestandteile die nicht frei sind.

Diese werden aber in keinster Weise für obiges Problem benötigt.

Gruß Hagen
  Mit Zitat antworten Zitat
schinger

Registriert seit: 7. Aug 2004
11 Beiträge
 
#9

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 12. Mär 2006, 13:09
Hallo,

danke für eure Antworten und Anregungen.
Ich schildere kurz nochmal mein Problem und würde mich freuen, wenn Ihr dazu was sagen könnten.

Also das Grundproblem ist folgendes:

Verschlüsselung mit Rijndael (DEC) auf Delphiseite. Nun meine Frage. Kann nun jemand meine verschlüsselten Daten problemlos z.B.
mit einer C# -Anwendung wieder entschlüsseln, vorausgesetzt er weiss das verwendete Passwort .

Hat jemand schon damit, oder mit nem ähnlichen Problem, Erfahrung gemacht, und/oder was gibt es da zu beachten?

Ich hab irgendwo gelesen, dass man bei C# neben dem richtigen Passwort auch noch einen Initialisierungverktor braucht. Bei DEC braucht man doch nur das Passwort?

Also danke schon mal.

Gruss

Schinger
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Kompatibilität DEC Rijndael, Lockbox RSA zu z.B. C#

  Alt 13. Mär 2006, 04:02
Zitat:
Verschlüsselung mit Rijndael (DEC) auf Delphiseite. Nun meine Frage. Kann nun jemand meine verschlüsselten Daten problemlos z.B.
mit einer C# -Anwendung wieder entschlüsseln, vorausgesetzt er weiss das verwendete Passwort .
Einfache Antwort:

Theoretisch JA zu 100%,
praktisch JAIN und eher 80% Wahrscheinlichkeit das irgendwas nich ganz hinhaut.


Zitat:
Hat jemand schon damit, oder mit nem ähnlichen Problem, Erfahrung gemacht, und/oder was gibt es da zu beachten?
Ja ich. Die Sache ist so das man sehr sehr genau darüber bescheid wissen muß WAS WIE in der jeweiligen Library gemacht wird. Es gibt zwar Standards aber wie so oft hält sich daran keiner und erst recht die sogenannten "Big Player" wie Microsoft koxchen sehr gern ihr eigenes Süppchen.

Ich habe die Algorirthmen im DEC absichtlich alle mit den Standard Text Vekroren getestet. Sie sind kompatibel wenn da nicht das klitzekleine Problemchen wäre das es
a.) oft garkeine zertifizierten und vom Autor des Algos herausgegebene Testvektoren gibt
b.) es oft wiedersprüchliche Testvektoren gibt, zb. beim Blowfish kursieren zwei Versionen jeweils für Big Endian und Little Endian und Bruce Schneier hat sich meines Wissens nach nie geäußert ob sein Algo nun Big- oder Little Endian ist.


Zitat:
Ich hab irgendwo gelesen, dass man bei C# neben dem richtigen Passwort auch noch einen Initialisierungverktor braucht. Bei DEC braucht man doch nur das Passwort?
Nicht zwangsläufig DEC unterstützt in der alten Version zwei verschiedene Methoden zum Schlüsselsetup.
1.) die einfache und alles inklusive Methode .InitKey() die gerade für Anfänger einige zusätzliche Berechnungen durchführt. Diese Methode IST und KANN auch nicht kompatibel zuirgendwas anderes sein, da es im Grunde eben keine verbindlichen Standards gibt (zumindestensnicht vor 5 Jahren).
2.) die einfache und "Basic" methode .Init() bei der der Programmierer eben selber noch einiges an Preprocessing durchführen muß.

Benutzt man 2.) dann MUSS das erzeugte Resultat bei gleichen Parameteren auch gleiche Outputs erzeugen.

Am wichtigsten ist es zu bedenken das DEC eine Algorithmen Bibliothek ist. Also wie ein Werkzeugkoffer oder Baukasten aber nicht ein fertiges Motorad.

Man muß aber auch bedenken das die meisten Crypto Libraries nur solche Baukästen darstellen. Das bedeutet ob du es willst oder nicht du als Programmierer musst die zusäzliches Wissen erarbeiten, die entsprechenden Betriebsparamter zb. in C# ermitteln und dann beide Systeme aufeinander abgleichen.

Eine professionelle Cryptolibrary wie die von RSAInc. oder so kostet einen rießigen Batzen Geld (nicht umsonst).

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


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 08:34 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