-
Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum Schutz eines Computerprogramms gegen unberechtigte Benutzung. Das Verfahren und die Vorrichtung können insbesondere bei einer Steuervorrichtung zur Steuerung einer Werkzeugmaschine Verwendung finden.
-
US 7,492,783 B2 offenbart ein Verfahren zur Programmierung und Ausführung eines Steuerprogramms einer Industriesteuerung. Eine ausführbare Steuersequenz des Steuerprogramms wird mit einem Benutzer- oder Individualisierungspasswort verschlüsselt. Das bedeutet, dass die ausführbare Steuersequenz des Steuerprogramms selbst nicht verschlüsselt ist.
-
EP 1 556 743 B2 offenbart ein Verfahren zur Vermeidung einer fehlerhaften Maschinenansteuerung durch Maschinensteuerparameter einer Werkzeugmaschine. Hier werden die Maschinensteuerparameter mittels eines Chiffrierverfahrens verschlüsselt. Anschließend werden die Maschinensteuerparameter auf der Werkzeugmaschine dechiffriert und geprüft.
-
Bei den genannten Verfahren werden jedoch das verwendete Computerprogramm und/oder Teile davon nicht verschlüsselt. Das bedeutet, dass die genannten Verfahren die verwendeten Computerprogramme nicht vollständig vor unberechtigter Benutzung oder Einsicht schützen können. Beispielsweise können während des Ablaufs des Computerprogramms Programmteile eingesehen werden. Damit ist ein Kopieren des Computerprogramms oder zumindest von Programmteilen möglich.
-
Demzufolge können die genannten Verfahren ein Geheimhalten von technologischem Wissen durch Verschlüsselung nicht unumschränkt gewährleisten. Demzufolge kann ein unberechtigtes Nutzen von OEM-Zyklen (OEM = Original Equipment Manufacturer = Originalausrüstungshersteller) nicht verhindert werden. Aufgrund dessen ist ein ausreichender Schutz in Bezug auf Investitionskosten nicht gegeben.
-
Es ist daher Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zum Schutz eines Computerprogramms gegen unberechtigte Benutzung bereitzustellen, mit welchen die zuvor genannten Probleme gelöst werden können. Insbesondere soll ein Verfahren und eine Vorrichtung zum Schutz eines Computerprogramms gegen unberechtigte Benutzung bereitgestellt werden, bei welchen insbesondere Unterprogramme vor unberechtigter Einsicht und/oder Nutzung geschützt werden können.
-
Diese Aufgabe wird durch ein Verfahren zum Schutz eines Computerprogramms gegen unberechtigte Benutzung nach Patentanspruch 1 gelöst.
-
Die Aufgabe wird außerdem durch eine Vorrichtung zum Schutz eines Computerprogramms gegen unberechtigte Benutzung nach Patentanspruch 8 gelöst.
-
Die Aufgabe wird darüber hinaus durch ein System zum Schutz eines Computerprogramms gegen unberechtigte Benutzung nach Patentanspruch 10 gelöst.
-
Vorteilhafte weitere Ausgestaltungen des Verfahrens und der Vorrichtung sind in den abhängigen Patentansprüchen angegeben.
-
Das beschriebene Verfahren und die beschriebene Vorrichtung sowie das System stellen sicher, dass auch beim Ablauf des Verfahrens keine Programminhalte auf einer Anzeigeeinrichtung angezeigt werden können, welche einen Hinweis auf den Inhalt des Programms geben. Es werden nur programmierte Hinweise und/oder Diagnosemeldungen ausgegeben.
-
Mit dem beschriebenen Verfahren und der beschriebenen Vorrichtung sowie dem System kann sichergestellt werden, dass nur ein Originalausrüstungshersteller (OEM) und/oder von ihm autorisierte Personen und/oder Institutionen die verschlüsselten Inhalte des Computerprogramms entschlüsseln kann. Somit ist eine (ungewollte) Weitergabe an Dritte seitens des Herstellers oder Betreibers einer Werkzeugmaschine, auf welcher des Verfahren und die Vorrichtung angewendet werden kann, ausgeschlossen.
-
Weitere mögliche Implementierungen der Erfindung umfassen auch nicht explizit genannte Kombinationen von zuvor oder im Folgenden bezüglich der Ausführungsbeispiele beschriebenen Merkmale oder Ausführungsformen. Dabei wird der Fachmann auch Einzelaspekte als Verbesserungen oder Ergänzungen zu der jeweiligen Grundform der Erfindung hinzufügen.
-
Nachfolgend ist die Erfindung unter Bezugnahme auf die beiliegende Zeichnung und anhand eines Ausführungsbeispiels näher beschrieben. Es zeigen:
-
1 ein Übersichtsbild eines Systems gemäß einem Ausführungsbeispiel; und
-
2 ein Flussdiagramm eines Verfahrens gemäß einem Ausführungsbeispiel.
-
In den Figuren sind gleiche oder funktionsgleiche Elemente, sofern nichts anderes angegeben ist, mit denselben Bezugszeichen versehen.
-
1 zeigt ein System 1 zum Schutz eines Computerprogramms 2 gegen unberechtigte Benutzung. Das System 1 hat eine externe Vorrichtung 10, welche ein Personalcomputer (PC) sein kann, der bei einem Originalausrüstungshersteller (OEM) oder einem sonstigen Anwender bereitgestellt ist. Zudem hat das System 1 eine Vorrichtung 20 zum Schutz des Computerprogramms 2 gegen unberechtigte Benutzung. Die Vorrichtung 20 kann eine numerisch gesteuerte Werkzeugmaschine (NC-Maschine) sein, welche Gegenstände in einer vorbestimmten Form, Werkstücke, fertigt.
-
Die externe Vorrichtung 10 hat eine Schlüsselerzeugungseinrichtung 11, von welcher ein Schlüssel 12 erzeugt wird, eine Anzeigeeinrichtung 13, eine Schlüsselspeichereinrichtung 14 und eine Dateiverschlüsselungseinrichtung 15. Die Schlüsselerzeugungseinrichtung 11 kann einen Schlüssel zum Ver- und Entschlüsseln des Computerprogramms bereitstellen. Die Schlüsselerzeugungseinrichtung 11 kann jedoch auch zwei verschiedene Schlüssel, also einen Verschlüsselungsschlüssel zum Verschlüsseln und einen Entschlüsselungsschlüssel zum Entschlüsseln bereitstellen. Nachfolgend ist der Einfachheit halber meist nur von dem Schlüssel 12 die Rede.
-
Der Schlüssel 12 kann auf der Anzeigeeinrichtung 13 angezeigt werden, und kann in der Schlüsselspeichereinrichtung 14 gespeichert werden. Der Schlüssel 12 kann über ein Schlüsselherunterladen, beispielsweise mittels OpenSSL (= mittels frei verfügbarem Computerprogramm (Open Source) Ausführen der SSL- und TLS-Protokolle), für die Vorrichtung 20 zum Entschlüsseln des verschlüsselten Computerprogramms 11 bereitgestellt werden. Darüber hinaus kann der Schlüssel 12 der Dateiverschlüsselungseinrichtung 15 zur Verfügung gestellt werden.
-
Die Dateiverschlüsselungseinrichtung 15 hat eine Verschlüsselungseinrichtung 16 und eine Verschlüsselungsanzeigeeinrichtung 17. Die Dateiverschlüsselungseinrichtung 15 kann das unverschlüsselte Computerprogramm 2 unter Verwendung des Schlüssels 12 mittels der Verschlüsselungseinrichtung 16 in ein verschlüsseltes Computerprogramm 3 verschlüsseln. Die Verschlüsselung kann mittels der Verschlüsselungsanzeigeeinrichtung 17 angezeigt und überwacht werden.
-
Die Vorrichtung 20 hat eine Vorrichtungsanzeigeeinrichtung 21, eine Steuereinrichtung 22, eine Computerprogramm-Speichereinrichtung 23, eine Arbeitsspeichereinrichtung 24 mit einem SRAM-Bereich 25 und einem RAM-Bereich 26, und eine Entschlüsselungseinrichtung 27. Der SRAM-Bereich ist ein statischer Speicher mit wahlfreiem Zugriff (SRAM = static Random Access Memory, der nicht periodisch aufgefrischt werden muss. Der RAM-Bereich ist ebenfalls ein Speicher mit wahlfreiem Zugriff (RAM = Random Access Memory) und ist vorzugsweise ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM = dynamic Random Access Memory), der periodisch aufgefrischt werden muss, kann jedoch auch ein statischer Speicher mit wahlfreiem Zugriff sein.
-
Die Steuereinrichtung 22 führt die Funktionen einer Herunterladeeinrichtung zum Herunterladen des von einer externen Vorrichtung 10 bereitgestellten Schlüssels 12 und einer Speicherplatzverwaltungseinrichtung aus. Die Steuereinrichtung 22 kann auch die Funktion der Entschlüsselungseinrichtung 27 zur Entschlüsselung des verschlüsselten Computerprogramms 3 ausführen.
-
Die Steuereinrichtung 22 als Speicherplatzverwaltungseinrichtung verwaltet den Speicherplatz derart, dass das verschlüsselte Computerprogramm 3 in der Computerprogramm-Speichereinrichtung 23 gespeichert wird und ist. In der Computerprogramm-Speichereinrichtung 23 gespeicherte Inhalte können grundsätzlich mit der Vorrichtungsanzeigeeinrichtung 21 angezeigt werden. Dies ist mittels des weißen Blockpfeils A angegeben. Für verschlüsselte Programmteile oder für das gesamte verschlüsselte Computerprogramm 3 gelten jedoch die nachfolgend beschriebenen Einschränkungen.
-
Die Steuereinrichtung 22 als Speicherplatzverwaltungseinrichtung verwaltet den Speicherplatz zudem derart, dass der Schlüssel 12, genauer gesagt der Entschlüsselungsschlüssel zur Entschlüsselung des verschlüsselten Computerprogramms 3, in dem SRAM-Bereich 25 gespeichert ist. Mit dem Schlüssel 12 kann das verschlüsselte Computerprogramm 3 unsichtbar in ein entschlüsseltes Computerprogramm 4 entschlüsselt werden. Das mit dem Entschlüsselungsschlüssel, dem Schlüssel 12, entschlüsselte Computerprogramm 4 oder entschlüsselte Programmteile 4 werden dagegen von der Steuereinrichtung 22 als Speicherplatzverwaltungseinrichtung in dem RAM-Bereich 26 des Arbeitsplatzspeichers 24 gespeichert.
-
Bei dem System 1 sind sämtliche Stellen berücksichtigt, wo Inhalte des Computerprogramms 2 abgelegt, also nach der Verschlüsselung in den Speichereinrichtungen 23 und 24 gespeichert, oder sichtbar, also der Vorrichtungsanzeigeeinrichtung 21, werden. Hierbei ist zu berücksichtigen, dass in dem Computerprogramm 2 verwendete Tabellendaten nicht verschlüsselt werden. 2 veranschaulicht ein Verfahren zum Schutz des Computerprogramms 2 gegen unberechtigte Benutzung. Nach dem Start des Verfahrens wird bei einem Schritt S1 ein von der externen Vorrichtung 10 mit dem Schlüssel 12 verschlüsseltes Computerprogramm 3 in der Computerprogramm-Speichereinrichtung 23 gespeichert. Die Computerprogramm-Speichereinrichtung 23 ist vorzugsweise ein Netzwerkdateisystem, in welchem über ein Datennetzwerk verwendbare Dateien gespeichert sind. Die Verschlüsselung des Computerprogramms 2 erfolgt also auf der externen Vorrichtung 10. Eine Nachverschlüsselung eines neuen Computerprogramms 2 ist offline möglich. Hierzu sind in der Schlüsselverwaltungseinrichtung 14 alle von der Schlüsselerzeugungseinrichtung 11 erzeugten Schlüssel 12 gespeichert. Nach dem Schritt S1 geht der Ablauf zu dem Schritt S2 weiter.
-
Bei dem Schritt S2 wird ein zum Entschlüsseln des verschlüsselten Computerprogramms 3 bereitgestellter Entschlüsselungsschlüssel, der Schlüssel 12, in dem SRAM-Bereich 25 der Arbeitsspeichereinrichtung 24 gespeichert. Hierbei kann der von der externen Vorrichtung 10 erzeugte Schlüssel 12 mittels der Vorrichtung 20, genauer gesagt der Steuereinrichtung 22 als Herunterladeeinrichtung, von der externen Vorrichtung 10 heruntergeladen werden. Über den explizit erzeugten Schlüssel 12 wird sichergestellt, dass nur der Originalausrüstungshersteller die verschlüsselten Inhalte entschlüsseln kann. Nach dem Schritt S2 geht der Ablauf des Verfahrens zu einem Schritt S3 über.
-
Bei dem Schritt S3 entschlüsselt die Entschlüsselungseinrichtung 27 das verschlüsselte Computerprogramm 3 mit dem Entschlüsselungsschlüssel, dem Schlüssel 12. Hierbei werden das entschlüsselte Computerprogramm 4 oder entschlüsselte Computerprogrammteile 4 in dem RAM-Bereich 26 der Arbeitsspeichereinrichtung 24 gespeichert. Nach dem Schritt S3 geht der Ablauf zu einem Schritt S4 weiter.
-
Bei dem Schritt 34 wird geprüft, ob ein Coredump des RAM-Bereichs 26 der Arbeitsspeichereinrichtung 24 ausgeführt werden soll, ob mit dem verschlüsselten Computerprogramm 3 eine Simulation ausgeführt werden soll, ob das verschlüsselte Computerprogramm 3 mittels der Vorrichtungsanzeigeeinrichtung 21 angezeigt werden soll, oder ob mit der Vorrichtungsanzeigeeinrichtung 21 von der Entschlüsselungseinrichtung 27 entschlüsselte Computerprogrammteile 4 oder das von der Entschlüsselungseinrichtung 27 entschlüsselte Computerprogramm 4 angezeigt werden soll.
-
Lautet die Antwort bei dem Schritt S4 NEIN ist das Verfahren beendet. Lautet die Antwort bei dem Schritt S4 hingegen JA, geht der Fluss zu dem Schritt S5 weiter. Der Schritt S4 und der Schritt S5 werden laufend während des Ablaufs des entschlüsselten Computerprogramms 4 in der Vorrichtung 20 ausgeführt.
-
Bei dem Schritt S5 wird ein Coredump verhindert, wenn das entschlüsselte Computerprogramm 4 oder entschlüsselte Computerprogrammteile 4 in dem RAM-Bereich 26 der Arbeitsspeichereinrichtung 27 stehen. Ein Coredump steht für den aufgezeichneten Zustand des Arbeitsspeichers eines Computerprogramms bei einer vorbestimmten Zeit. Der Coredump zeigt an den betreffenden Stellen nur einen Hinweis auf Dateiverschlüsselung. Im Allgemeinen ist die vorbestimmte Zeit die Zeit, wenn das Computerprogramm abnormal beendet wurde. Zudem wird bei dem Schritt S5 eine Simulation mit dem verschlüsselten Computerprogramm 3 verhindert, wenn das entschlüsselte Computerprogramm 4 oder entschlüsselte Computerprogrammteile 4 in dem RAM-Bereich 26 der Arbeitsspeichereinrichtung 24 stehen. Ferner wird bei dem Schritt S5 eine Anzeige des verschlüsselten Computerprogramms 3 mittels der Vorrichtungsanzeigeeinrichtung 21 verhindert, wenn das verschlüsselte Computerprogramm 3 zur Anzeige auf der Vorrichtungsanzeigeeinrichtung 21 geöffnet werden soll. In diesem Fall wird mit der Vorrichtungsanzeigeeinrichtung 21 eine Fehlermeldung ausgegeben. Zudem wird bei dem Schritt S5 verhindert, dass das von der Entschlüsselungseinrichtung 27 entschlüsselte Computerprogramm 4 oder die von der Entschlüsselungseinrichtung 27 entschlüsselten Computerprogrammteile mit der Vorrichtungsanzeigeeinrichtung 21 angezeigt werden.
-
Nach dem Schritt S5 ist das Verfahren beendet.
-
Durch die Verhinderung des Coredumps, wenn das entschlüsselte Computerprogramm 4 oder die entschlüsselten Computerprogrammteile 4 im RAM-Bereich 26 stehen, wird verhindert, dass die Verschlüsselung des Computerprogramms 2 ausgehebelt wird. Dies wäre zum Beispiel der Fall, wenn sichtbare Programmteile des entschlüsselten Computerprogramms 4 in einem Coredump nicht gelöscht oder unkenntlich gemacht wären.
-
Zudem bewirkt der Schritt S5, dass bei einem Simulationsprogramm, wie beispielsweise EWB (Electronics Workbench), verschlüsselte Programme, wie das verschlüsselte Computerprogramm 3, bei einer Analyse nicht berücksichtigt werden.
-
Bei dem zuvor beschriebenen System 1 erlauben die Funktionen VREC/IREC keine DIN-Code-Ausgaben von verschlüsselten Computerprogrammen 3. Zudem liefern die Items NCS, OPC und SCP für das verschlüsselte Computerprogramm 3 keinen Programmcode.
-
Bei dem zuvor beschriebenen System 1 ist eine zusätzliche Verschlüsselung über eine CF-Kartennummer zum Kopierschutz nicht erforderlich, da der Schlüssel 12 auf der Steuereinrichtung 22, genauer gesagt in dem SRAM-Bereich 25, bleibt.
-
Aufgrund der zuvor beschriebenen Funktionalität des Systems 1 ist eine Fremdunterstützung für das verschlüsselte Computerprogramm 3 nicht möglich.
-
Mit dem zuvor beschriebenen System 1 ist es möglich, dass ein verschlüsseltes Computerprogramm 3 keinerlei Auswirkungen auf das Laufzeitverhalten der Vorrichtung 20 hat.
-
Wird bei dem zuvor beschriebenen System 1 ein Tausch der Steuereinrichtung 22 vorgenommen, ist es vorteilhaft, wenn der Schlüssel 12 von der externen Vorrichtung 10 in die neue Steuereinrichtung 22 gebracht wird. Alternativ ist es auch möglich, alle Computerprogramme 2 mit dem neuen Schlüssel 12 neu zu verschlüsseln.
-
Die Schlüsselerzeugung bei der externen Vorrichtung 10 kann bei Bedarf über frei erhältliche Software (Freeware) erfolgen. Die Schlüsselerzeugung sollte nicht im Indraworks integriert werden.
-
Bei dem beschriebenen System 1 werden beim Technologieschutz sämtliche Stellen berücksichtigt, wo Inhalte des Computerprogramms 2 abgelegt werden (Dateisystem) oder sichtbar (Bedienoberfläche bzw. Anzeigeeinrichtung 21) werden. Dies sind der NC-Editor (Bearbeitungseinrichtung der numerischen Steuereinrichtung), die NC-Satzanzeige, der NC-Analyzer (NC-Analyseeinrichtung), die Simulation, der Computerprogrammnavigator und das Dateisystem.
-
Im NC-Editor können verschlüsselte Programme nicht geöffnet werden. Auf der Anzeigeeinrichtung 21 kommen in der Statuszeile ein Hinweis und ein leeres Anzeigefenster.
-
Bei der NC-Satzanzeige enthält das Satzanzeigefenster im Falle von verschlüsselten Programmteilen nur eine Hinweiszeile „verschlüsseltes Programm”.
-
Bei dem NC-Analyzer enthält das Programmanzeigefenster im Falle von verschlüsselten Programmteilen nur eine Hinweiszeile „verschlüsseltes Programm”. Für die Simulation gilt das Gleiche.
-
Im Computerprogrammnavigator bekommen verschlüsselte Dateien eine besondere Kennzeichnung.
-
Im Dateisystem, der Computerprogramm-Speichereinrichtung 23, liegen alle zu schützenden Dateien nur in verschlüsselter Form vor.
-
Wird ein Archiv erstellt, werden alle verschlüsselten Dateien, welche in der Computerprogramm-Speichereinrichtung 23 gespeichert sind, mitgesichert.
-
Mit dem zuvor beschriebenen System 1 und dem Verfahren, die einen NC-Programmschutz bieten, können Unterprogramme bzw. Zyklen verschlüsselt und anschließend geschützt in der Steuereinrichtung 22 abgelegt werden. Die Abarbeitung in der numerischen Steuerung (NC) ist ohne Einschränkung möglich aber jegliche Einsicht in das NC-Programm, das Computerprogramm 3, ist blockiert. Damit wird das interne Know-how geschützt. Das NC-Programm kann aber in der verschlüsselten Form, also als Computerprogramm 3, kopiert werden. Damit ist die Nutzung auch an weiteren Maschinen möglich. Wenn auch das verhindert werden soll, kann das NC-Programm durch eine verschlüsselungstechnische Ergänzung fest an eine NC- oder CNC-Hardware gebunden werden.
-
Bei dem zuvor beschriebenen System 1 und dem Verfahren ist es nicht möglich, dass bei Serviceeinsätzen das verschlüsselte Computerprogramm 3 oder eine andere verschlüsselte Datei vor Ort von einem Service-Techniker entschlüsselt werden kann. Das unverschlüsselte Computerprogramm 2 oder die unverschlüsselte Datei muss der Betreiber der externen Vorrichtung 10, der OEM, bereitstellen. Daher wird bei dem zuvor beschriebenen System 1 kein Generalschlüssel verwendet. Das Verantwortungsbewusstsein liegt beim OEM.
-
Alle zuvor beschriebenen Ausgestaltungen des Verfahrens und der Vorrichtung können einzeln oder in allen möglichen Kombinationen Verwendung finden. Zusätzlich sind insbesondere folgende Modifikationen denkbar.
-
Vorzugsweise wird für die Verschlüsselung in der externen Vorrichtung 10 ein Algorithmus verwendet, der weder gegen Exportbeschränkungen oder Embargovorschriften verstößt. Hierbei werden zum Ver- und Entschlüsseln zwei verschiedene Schlüssel verwendet. Müssen solche Exportbeschränkungen oder Embargovorschriften nicht beachtet werden, ist es auch möglich, den gleichen Schlüssel zum Ver- und Entschlüsseln zu verwenden. In diesem Fall handelt es sich um ein symmetrisches Verfahren.
-
Die Datensicherung, Versionsverwaltung und Versionskontrolle des Computerprogramms 2 bzw. 3 kann automatisch durch erneute Verschlüsselung und Vergleich des Quelltextes erfolgen.
-
Anstelle des Verhinderns eines Coredumps ist es auch möglich, dass, die Auswertung des Coredump nur mit einer Entwicklungsumgebung zur Entwicklung des Computerprogramms 2 sowie dem Quellcode des Computerprogramms 2 möglich ist.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 7492783 B2 [0002]
- EP 1556743 B2 [0003]