Source Code vor Klau schützen [Leitfaden]

von  Steffen Kätsch | 26.04.2021

Jeder Softwareentwickler wird früher oder mit später mit dem Thema Softwarepiraterie konfrontiert. Ein Fremder klaut den Quellcode, an dem man selbst stunden- oder vielleicht sogar tagelang gearbeitet hat und verkauft diesen als seinen eigenen. Es entstehen massive Umsatzeinbußen, die bis hin zur Existenzbedrohung reichen können. Um die eigene Software zuverlässig vor Dieben schützen zu können, gibt es jedoch effektive Möglichkeiten. In diesem Beitrag erfahren Sie, welche Methoden Ihnen für den Schutz Ihrer Source Codes zur Verfügung stehen und wie Sie Ihre Software alternativ auch ohne Programmierkenntnisse schützen können.


Inhaltsverzeichnis:
Was ist Source Code?
Lizenzierung
Bearbeitung des Source Codes als Voraussetzung für einen sicheren Schutz
Source Code schützen – einige Möglichkeiten
Fazit

Was ist Source Code?

Der Source Code ist der für Menschen lesbare Text einer Programmiersprache. Er ist auch als Quelltext oder Quellcode bekannt. Der Computer kann den Source Code automatisch in Maschinensprache übersetzen und das Programm somit lauffähig machen. Der Source Code bildet die Grundlage eines jeden Computerprogramms. Mit dem Quellcode wird eine Software oder ein Programm so genau beschrieben, dass der Computer dieses automatisch in Mediensprache übersetzen kann.

Lizenzierung

Eine Software sowie der dazu gehörende Quelltext unterliegen dem Urheberrecht. Unterschieden wird hier zwischen proprietärer und quelloffener Software.
Proprietäre Software wird dem Nutzer ohne den dazugehörigen Quellcode zur Verfügung gestellt oder unter besonders restriktiven Lizenzen an den Verbraucher verkauft.
Dahingegen werden quelloffene Programme mit Open Source-Lizenz gemeinsam mit dem Quelltext an den Nutzer geliefert und sowohl Weitergabe als auch Änderungen an der Lizenz erlaubt. Für den Nutzer gehen Open Source-Softwares mit wichtigen Vorteilen einher. So hat dieser beispielsweise die Möglichkeit, den Quellcode zu überprüfen und an seine individuellen Bedürfnisse anzupassen. Hinzu kommt die bessere Qualität von Fehlermeldungen im Falle einer Störung.

Bearbeitung des Source Codes als Voraussetzung für einen sicheren Schutz

Damit der Quellcode sicher vor Softwarepiraterie geschützt (Softwareschutz) werden kann, müssen Sie diesen eigenständig bearbeiten können.
Ein Source Code kann mit einem einfachen Texteditor erstellt und bearbeitet werden, sofern man die entsprechende Programmiersprache beherrscht. In den meisten Fällen wird bei der Erstellung des Source Codes jedoch auf spezielle Programmiersprache-Editoren zurückgegriffen. Mit diesen werden nützliche Code-Bibliotheken zur Verfügung gestellt. Durch automatische Korrekturen und Einfärbungen erleichtern sie zudem die Erstellung und Bearbeitung des Quellcodes. Besonders bei höheren Programmiersprachen wie Java, C, C++ oder C# wird meist auf eine integrierte Entwicklungsumgebung (IDE) gesetzt. In diese sind sowohl der Editor als auch der Compiler integriert.
Um die Arbeit bei Korrekturen und Veränderungen sowie die Umsetzung eines Source Codes zu erleichtern, hat es sich als äußerst hilfreich erwiesen, sich bei der Erstellung des Source Codes an bestimmte Formatierungsregeln zu halten.

Source Code verschlüsseln – einige Möglichkeiten

Bei der Verschlüsselung und damit dem Schutz des Quelltextes gibt es viele verschiedene Möglichkeiten, die von sehr einfach bis hin zu äußerst kompliziert reichen. Dabei gilt: Je trivialer die Verschlüsselung, desto einfacher ist auch deren Entschlüsselung durch mögliche Diebe.
Im Allgemeinen erfolgt die Verschlüsselung nach dem folgenden Prinzip: Der Quellcode ist verschlüsselt in der entsprechenden Datei abgespeichert und wird entschlüsselt sobald die Seite geöffnet wird. Wird der Quelltext jedoch von einem Nutzer betrachtet, wird nur der verschlüsselte, nicht aber der entschlüsselte Code angezeigt.

Code Obfuscation für Anwendung in C#.NET

Insbesondere in der Programmiersprache C#.NET geschriebene Anwendungen sind sehr anfällig für Dekompilierung. Erfahrene Cracker und Programmierer können den implementierten Schutz dieser Anwendungen schnell und einfach analysieren und entfernen. Dem Schutz des .NET-Codes kommt deshalb eine besonders hohe Bedeutung zu.
Eine gute Lösung hierfür ist die Code Obfuscation, was auf Deutsch so viel bedeutet wie die Verschleierung des Codes. Eine kostenlose Version des Dotfuscators ist im Visual Studio, einer von Microsoft angebotenen Entwicklungsumgebung, für verschiedene Hochsprachen enthalten. Kommerzielle Lösungen wie zum Beispiel der Babel Obfuscator bieten jedoch mehr Optionen und somit auch einen besseren Schutz.

Verschlüsselungs-Engine der CRYPTO-BOX

Mit der Verschlüsselungs-Engine der von MARX entwickelten, hardwarebasierten CRYPTO-BOX können Emulationsangriffe effektiv verhindert werden. Die aktuellen CRYPTO-BOX-Modelle unterstützen sowohl symmetrische (AES/Rijndael) als auch asymmetrische (RSA) Verschlüsselungsmodelle. Darüber hinaus werden auch die Erzeugung von Zufallssequenzen und die Berechnung von MD5-Hashs unterstützt. Über das Smarx OS API erhalten Entwickler universelle Unterstützung für Verschlüsselungsalgorithmen. So ist es möglich, Schutz-, Authentifizierungs- oder E-Commerce-Lösungen zu implementieren, die von den neusten symmetrischen und asymmetrischen Verschlüsselungstechniken profitieren.

Beispiel 1: Sichern des Benutzerpassworts (UPW) mit hardwarebasierter Verschlüsselung

Für die Sicherung von UPS müssen Sie eine hardwarebasierte Verschlüsselung verwenden. Bei der CRYPTO-BOX ist keine Benutzeranmeldung erforderlich. Somit kann das Programm UPW-verschlüsselt mit CRYPTO-BOX Fixed AES, einigen zusätzlichen AES-Schlüsseln des CRYPTO-BOX SC-Modells oder sogar mit CRYPTO-BOX SC RSA-Schlüsseln gespeichert werden. Entschlüsselte UPW-Werte können dadurch nur dann erhalten werden, wenn eine gültige CRYPTO-BOX beigefügt ist.
Über die RSA-Verschlüsselung erhält das Programm selbst einen öffentlichen Schlüssel für das RSA-Schlüsselpaar A, während der private Schlüssel in der CRYPTO-BOX gespeichert ist.
Doch auch ohne die Nutzung weiterer Funktionen der CRYPTO-BOX sollten Sie die Hardwareverschlüsselung in Betracht ziehen. Denn dieser rekursive Schutz, bei dem das Zugangspasswort zur CRYPTO-BOX durch die interne Kryptografie verschlüsselt wird, kann auch zum Erreichen eines hohes Sicherheitsniveaus verwendet werden, sofern die CRYPTO-BOX mit zusätzlichen Techniken wie dem Echtzeit-Multithreading, dem Anit-Debug-Schutz oder hardwarebasierten Signaturen kombiniert wird.

Beispiel 2: Nutzung der asymmetrischen Verschlüsselung (RSA) für eine sichere Zustellung symmetrischer (AES) Schlüssel

Für die Organisierung sicherer Sitzungen können Sie mit der CRYPTO-BOX RSA-Schlüsselpaare generieren und diese zur sicheren Zustellung der Rijndael-Sitzungsschlüssel über das Internet verwenden. Um Kennwörter zu überprüfen, ohne dabei einen realen Wert zu speichern oder Endbenutzer zu authentifizieren, können Sie die Hash-Berechnung und Zufallssequenzgenerierung verwenden. Mithilfe eines Zufallsgenerators können zudem Verschlüsselungsschlüssel dynamisch verändert werden. Hängt der Schlüssel vom Datum, dem Jahr oder der Länge des Arbeitsverzeichnis-Pfades ab, führt dies zu pseudostatischen Verschlüsselungsschlüsseln. Somit kann ein Cracker zwar eine Verschlüsselungssequenz umgehen, bei sich ändernden Betriebsbedingungen ist das entsprechende Ergebnis jedoch wertlos. Um den Schlüssel für Verschlüsselungsalgorithmen zu initiieren, können Sie zudem Überprüfungsantworten verwenden.

Programm-Parameter und -variablen in der CRYPTO-BOX speichern

Mit dem Speicher der CRYPTO-BOX können Sie im laufenden Betrieb Parameter speichern, welche für die Ausführung des Programms erforderlich sind. Mit einer verzögerten Reaktion lässt sich das Vorhandensein eines Sicherheitsgeräts überprüfen. Dieses wird dadurch für den Hacker sehr schwer zu verstehen sein.
Zur Veranschaulichung soll ein Beispiel dienen, bei dem die Oberfläche eines Kreises berechnet wird. Bevor Sie Ihr Programm ausliefern, speichern Sie die Zeichenfolge „3.1415“ im CRYPTO-BOX-Speicher. Diesen String legen Sie zur Laufzeit im laufenden Betrieb ein und transformieren ihn in eine Zahl, mit der eine temporäre Variable initialisiert wird. Dies könnte zum Beispiel „PiFromMARX“ sein. Anschließend berechnen Sie: Oberfläche = PiFromMARX * Radius^2.

AutoCrypt

Mit der Zuhilfenahme der Software AutoCrypt, für die keine Programmierkenntnisse erforderlich sind, kann ein besonders hoher Schutz der eigenen Anwendung erzielt werden. Die Software wird mit der automatischen Einbindung in eine Art binären Schutzmantel gehüllt. Einfach und schnell können für die Lizenzierung viele verschiedene Optionen wie zum Beispiel das Ablaufdatum oder auch die Begrenzung der Programmausführungen festgelegt werden.
Hier erhalten Sie weitere Informationen über AutoCrypt und können das Programm 45 Tage lang kostenlos und unverbindlich testen.

Fazit

Im Internet lauern zahlreichen Quellcode-Diebe und Softwarepiraten. Wird der eigens entwickelte Quellcode geklaut und von einer fremden Person als ihr Eigen ausgegeben, sind häufig massive Umsatzeinbußen die Folge. Nicht selten führen diese bei Betroffenen zu einer echten Existenzbedrohung. Um den Quellcode vor Angreifern zu schützen, stehen Ihnen viele verschiedene Optionen zur Verfügung, die jedoch je nach Effektivität auch mit einem erhöhten Zeitaufwand einhergehen können. Gute Alternativen hierzu sind die Software AutoCrypt sowie die hardwarebasierte CRYPTO-BOX.

Autor: Steffen Kätsch

Technischer Support, MARX Software Security GmbH

Please guide me to find the right solution

guide me

I already know what I need. Take me directly to the
Product Overview/Shop

Product Overview