Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

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

Re: Mit DEC ein record verschlüsseln

  Alt 6. Okt 2006, 13:48
Zitat:
Dies bedeutet aber, dass ich ja erstmal den Namen und die Firma des Lizenznehmers nicht kenne aber trotzdem in der Lage sein möchte die Lizenzdaten zu entschlüsseln.
Ich benötige so eine Art Master und Public Key Verfahren. Mit Hilfe des Masterkeys müsste ich immer in der Lage sein die Lizenzdatei zu enschlüsseln, nicht aber der User/Cracker, wenn er nicht den genauen Namen und die Firma aus der Lizenzdatei kennt.
Ja auch sowas geht mit sym. Kryptographie. Du erzeugst einen Zufallsschlüssel A. Mit diesem werden die Daten verschlüsselt. In deinem RegKey speicherst du nun diesen Key A zwemal verschlüsselt, einmal mit den ApplicationKey verschlüsselt und ein anders mal mit deinem Lizenzmanagerschlüssel.

Du kannst also nun deine Daten etweder mit dem ApplicationKey entschlüsseln indem zu erstmal den verschl. Key A mit dem ApplicationKey entschlüsselst und danach die Daten des Kunden. Oder du nimst deinen Lizenzmanagerschlüssel lädst den Key A aus dere RegKey der damit verschl. wurde, entschl. Key A und kommst auch an die Daten ran.

Kurz gesagt: ein Zufallsschlüssel erzeugen mit dem die Daten geschützt werden. Diese Zufallskey für jeden vorkommenden MasterKey separat verschlüsselt in RegKey speichern.

Oder du verschl. in deinem RegKey die Daten gleich zweimal. EInmal mit AppKey und einmal mit MasterKey. Das hat den Vortteil das du als einzigster überprüfen kannst ob beide Datenböcke nach der entschlüsselung noch zueinander identisch sind. AppKey und MasterKey kennst du ja als einzigster beide. Es würde aber schon ausreichen wenn der Teil für den MasterKey nur ein Hashdigest über die Kundendaten ist. Denn im Grunde möchtest du ja verifizieren ob die mit dem AppKey entschl. Kundendaten nicht manipuliert wurden. Die digitale Signatur besteht also aus einem Hashdigest über diese Kundendaten der dann noch verschl. wurde mit dem MasterKey. Aber bitte vergiß nicht bei dieser Hash-Prüfsumme einen Zufallssalt mit einzubauen !

Könnte dann so aussehen:

Code:
RegKey := Kundendaten || Salt || Signature

Kundendaten = verschl. mit AppKey.
Salt = Zufall, 128 Bit
Signature = Hash(Kundendaten) verschlüsselt mit SessionKey.KDF_MD5(Salt || Masterkey)
Überprüfung ist dann so:

1.) entschl. Kundendaten mit AppKey
2.) ziehe Hash über Kundendaten
3.) verschlüssele Hash mit SessionKey.KDF_MD5(Salt || MasterKey)
4.) vergleiche Output mit dem in RegKey gespeicherten Wert

KDF_MD5 steht für eine Key Derivation Function sowas wie THash_MD5.KDFx() und erzeugt aus Salt + MasterKey + Hashfunktion einen sicheren zufälligen Sessionkey der nicht rückwärts geknackt werden kann. Du schützt damit den MasterKey vor Angriffen.

Ach übrigens könntest du auch die Signature über die verschl. Kundendaten ziehen. Das würde es ermöglichen die Signature zu überprüfen ohne das du den AppKey kennen müsstest.

Wichtig ist nur eines: diese Siganture kamnn nur reproduziert oder entschlüsselt werden wenn man den MasterKey hat, und dieser liegt nicht im Zugriff eines Crackers.

Gruß Hagen
  Mit Zitat antworten Zitat