To top
Resources Resources
[Translate to German:]

Projektschutz durch Verschlüsselung

Nahezu jede Software verarbeitet in irgendeiner Form Daten. Je nach Anwendungsfall kann in diesen Daten viel Know-how und geistiges Eigentum des Softwareherstellers oder des Anwenders liegen. Dieser Artikel zeigt, wie Sie als Hersteller diese Daten schützen können, sowohl im eigenen Interesse, als auch als Mehrwert für Ihren Kunden.

Automatismus mit AxProtector

Der AxProtector bietet Ihnen mit der Dateiverschlüsselung eine schnell nutzbare Möglichkeit, wie Sie einfache Anforderungen abbilden können. Beim Schützen Ihrer Anwendung schalten Sie die Dateiverschlüsselung ein. Der AxProtector liegt sich dann wie ein Wächter zwischen die geschützte Anwendung und die zu lesende Datei. Falls die zu schützende Datendatei nun ebenfalls mit dem AxProtector verschlüsselt wurde, überprüft Ihre geschützte Anwendung nun ganz automatisch, ob die passende Lizenz auch für die Datendatei vorhanden ist. Falls ja, wird diese automatisch entschlüsselt.

Falls die passende Lizenz für die Datendatei nicht vorhanden ist, verweigert die geschützte Anwendung das Laden der Datendatei. Und hier sind wir bei der ersten Einschränkung der automatischen Dateiverschlüsselung: Das Fehlerhandling. Der Fehler wird von Ihrer originalen Anwendung verarbeitet und muss daher unter Umständen geringfügig angepasst werden.

Das Schreiben von Datendateien ist die zweite Herausforderung der geschützten Anwendung. Über ein Regelwerk können Sie das Schreiben sehr fein bis hin zur Dateierweiterung definieren.

Manuelle Verschlüsselung

Wenn Ihnen die einfachen Automatismen nicht ausreichen oder Sie selber gerne die volle Kontrolle behalten wollen, dann bietet Ihnen das CodeMeter Core API mächtige Funktionen für eine manuelle Integration von Ver- und Entschlüsselung in Ihre Anwendung.

Jede Kombination aus Firm Code und Product Code besitzt einen eigenen Schlüssel, den Sie verwenden können. Mit CmAccess2 öffnen Sie ein Handle auf den Lizenzeintrag. Mit CmCrypt2 verschlüsseln Sie Ihre Daten und mit CmRelase geben Sie das Handle wieder frei. 

Neben Firm Code und Product Code geht in die Berechnung des verwendeten Schlüssels der Encryption Code ein. Diesen können Sie selber frei wählen. Wählen Sie einen beliebigen, aber festen Encryption Code und speichern Sie diesen im Source Ihrer Software ab. Dann ist das Geheimnis verteilt. Der eigentliche Schlüssel steckt in der CodeMeter Lizenz, aber mittels des Geheimnisses in der Software legen Sie fest, welcher der vielen möglichen Schlüssel verwendet werden soll. Damit kann nur Ihre Software die Daten entschlüsseln.

Beim Verschlüsseln setzen Sie die Option „CRC erzeugen“. Diese Checksumme speichern Sie mit Firm Code und Product Code in Ihrer Datendatei ab. Beim Entschlüsseln setzen Sie Option „CRC überprüfen“ und stellen somit sicher, dass die Datendatei korrekt entschlüsselt wurde. Als Verschlüsselungsmethode verwenden Sie AES im CBC-Modus. Damit können beliebig lange Daten (mindestens 16 Byte) in einem Block verschlüsselt werden. Bei CodeMeter werden dabei nur die ersten 16 Byte an den CmDongle geschickt, der Rest erfolgt ohne Einschränkung der Sicherheit im Hauptspeicher des Computers. Damit bietet Ihnen diese Methode eine hohe Performance auch bei großen Daten.

Rechteverwaltung

Falls Sie die Verschlüsselung von Datendateien als Mehrwert für Ihre Kunden anbieten, stellt sich die Frage, wie man die Zugriffsrechte auf die Daten verwaltet. Prinzipiell sind hier zwei Verfahren üblich:

  • Rechteverwaltung mittels Lizenzen (bestehend aus Firm Code, Product Code und weiteren Optionen)
  • Rechteverwaltung mittels Identitäten (in Form eines privaten Schlüssels)

Lizenzbasiert

Da jede Kombination aus Firm Code und Product Code einen anderen Schlüssel bietet, stellt jede Kombination ein einzelnes Recht dar. Die technische Realisierung erfolgt mittels manueller Verschlüsselung. Zusätzlich bieten Sie in der Software die Möglichkeit an, Firm Code und Product Code für die Verschlüsselung zu wählen.

Falls Ihr Kunde, der Anwender, die Rechte selber verteilen möchte, dann benötigt er einen eigenen Firm Code und die Infrastruktur für die Erstellung von Lizenzen (CodeMeter License Central). Damit stellt diese Lösung einen höheren einmaligen Aufwand beim Anwender dar. Dafür erhält er die volle Flexibilität bei der Vergabe von Berechtigungen, inklusive zeitlich beschränkter Rechte und einer Online-Übertragung der Lizenzen.

Identitätsbasiert

In vielen Anwendungsfällen erfolgt die Vergabe von Berechtigungen identitätsbasiert. Jede Person erhält eine eigene Identität. Datendateien werden speziell für eine oder mehrere Identitäten verschlüsselt. D.h. nur die definierten Empfänger sind in der Lage, die entsprechende Datendatei zu verwenden. Das System arbeitet analog zu verschlüsselter Kommunikation bei E-Mails. Auch dort wird eine E-Mail für die entsprechenden Empfänger verschlüsselt. Zusätzlich kann die verschlüsselnde Person die Datendatei signieren und somit Authentizität und Integrität sicherstellen.

Die Vorteile dieses Verfahrens sind der geringe Aufwand für den Anwender sowie Integrität und Authentizität. Jeder CmDongle besitzt bereits eine eindeutige Identität, bzw. kann sehr einfach eine weitere Identität erhalten. Der Anwender benötigt keine extra Infrastruktur, um die Lizenzen und Rechte zu erstellen und zu verwalten.

Die Implementierung erfolgt mittels asymmetrischer Kryptographie. Dabei besitzt jede Identität einen privaten und einen dazu passenden öffentlichen Schlüssel. Mit dem privaten Schlüssel wird signiert und Daten entschlüsselt. Mit dem öffentlichen Schlüssel werden Signaturen geprüft und Daten verschlüsselt. Bei der Implementierung stehen Sie vor zwei Herausforderungen. Zum Einen sollen Daten für mehrere Empfänger lesbar sein. Da Sie zum Verschlüsseln den öffentlichen Schlüssel des Empfängers verwenden, wären die Daten damit für jeden Empfänger anders. Außerdem ist asymmetrische Kryptographie nicht geeignet für die Verschlüsselung von größeren Daten.

Beide Herausforderungen lösen Sie mit einer Hybridverschlüsselung. Dazu wählen Sie einen zufälligen AES Schlüssel. Mit diesem verschlüsseln Sie die gewünschten Daten. Nun nehmen Sie die öffentlichen Schlüssel aller Empfänger und verschlüsseln den zufälligen AES Schlüssel mit jedem von diesen öffentlichen Schlüsseln und hängen diese zusammen mit einer Kennung des Empfängers an die Daten an. Zusätzlich können Sie die Daten wahlweise vor dem Verschlüsseln oder die gesamte verschlüsselte Nachricht noch zusätzlich mit dem privaten Schlüssel des Senders signieren. In den meisten Fällen wird zuerst signiert. Dann ist die Authentizität der Daten gewährleistet. Signieren Sie nach dem Verschlüsseln, ist die Authentizität der ganzen Nachricht gewährleistet.

Optional können Sie dieses Hybridverfahren mit Ihren eigenen Passwortverfahren verbinden und so eine Abwärtskompatibilität zu Ihrer bisherigen Lösung herstellen.

Die geschützten Daten enthalten dann die verschlüsselten Daten, für jeden Empfänger den individuell für ihn verschlüsselten Schlüssel und seine Kennung, sowie die Signatur zur Prüfung von Authentizität und Integrität.

Beim Entschlüsseln verwenden Sie den privaten Schlüssel des Empfängers, um die Daten zu entschlüsseln und den öffentlichen Schlüssel des Senders um die Authentizität und damit auch die Integrität zu überprüfen.

Das ganze Verfahren setzt voraus, dass jeder Teilnehmer sicher (authentisch) den öffentlichen Schlüssel des jeweilig anderen Teilnehmers kennt. Ist Ihr öffentlicher Schlüssel zum Beispiel fest in Ihrer Software im Quellcode hinterlegt, dann können Sie bei Datendateien überprüfen, ob diese von Ihnen erstellt wurden und andere Daten ablehnen. Hat der Sender eine Datenbank aller öffentlichen Schlüssel der Empfänger, dann kann er ihnen eine Datendatei erzeugen, ohne die passenden CmDongles selbst zu besitzen.

Best of Both Worlds

Über Gruppenschlüssel kann die identitätsbasierte Verschlüsselung um die Funktionalität der lizenzbasierten Verschlüsselung erweitert werden. Zusätzlich zur persönlichen Identität können gruppen- oder datenspezifische Schlüssel vergeben werden und in Form eines Lizenzeintrags in einem CmDongle gespeichert werden. Dann sind alle Lizenzoptionen möglich, die Verschlüsselung basiert aber auf dem als Hidden Data oder Secret Data gespeicherten privaten Schlüssel.
Dann können Berechtigungen auch mittels CodeMeter License Central erstellt und verteilt werden, sowohl permanent als auch temporär. Diese Flexibilität bietet Ihnen nur CodeMeter, da nur CodeMeter asymmetrische und symmetrische Verfahren in einem CmDongle vereint.
Neben CmDongles bieten rechnergebundene CmActLicenses exakt die gleiche Funktionalität. Dann liegen die Schlüssel verschlüsselt in einer Lizenzdatei auf dem Rechner.

CodeMeter das Schlüsselmonster

Vielleicht haben Sie im Zusammenhang mit der asymmetrischen Kryptographie den Begriff RSA gehört oder gelesen. RSA ist ein in die Jahre gekommenes Verfahren, welches lange Schlüssellängen für ausreichende Sicherheit benötigt und bei dem öffentlicher und privater Schlüssel aufwendig berechnet werden müssen. Diese Berechnung war in der Vergangenheit oft der Angriffspunkt, wenn RSA gebrochen wurde.

Daher setzt CodeMeter bewusst auf den neuen Standard ECC. Mit einem ECC-Schlüssel von 224 Bit erreichen Sie die gleiche Sicherheit wie mit einem RSA-Schlüssel von 2048 Bit. Somit sind in einem CmDongle mehr als 2.000 verschiedene Schlüssel / Identitäten speicherbar.

ECC hat gegenüber RSA einen weiteren Vorteil. Der private Schlüssel ist eine reine Zufallszahl, aus dem der öffentliche Schlüssel berechnet werden kann. Somit ist das Erzeugen eines Schlüsselpaars einfacher und robuster. 

Fazit

Unabhängig davon, ob Sie Ihre Daten lizenzbasiert, identitätsbasiert oder mit einer Mischung aus beiden schützen wollen: CodeMeter ist in jedem Fall die einfache und sichere Lösung für Ihren Anwendungsfall.                                 
 

Glossary

AES

Advanced Encryption Standard (a symmetric encryption method)

CBC

Cipher Block Chaining Mode (Verkettung von Blöcken bei Verschlüsselung größerer Datenmengen)

RSA

Rivest, Shamir and Adleman (Asymmetrisches Verschlüsselungsverfahren)

ECC

Elliptic Curve Cryptography (Asymmetrisches kryptographisches Verfahren)

CRC

Cyclic Redundancy Check (Prüfsumme)

Hash

Kryptographische Prüfsumme