DE102004061634A1 - Method and apparatus for encrypting and executing a software library - Google Patents

Method and apparatus for encrypting and executing a software library Download PDF

Info

Publication number
DE102004061634A1
DE102004061634A1 DE200410061634 DE102004061634A DE102004061634A1 DE 102004061634 A1 DE102004061634 A1 DE 102004061634A1 DE 200410061634 DE200410061634 DE 200410061634 DE 102004061634 A DE102004061634 A DE 102004061634A DE 102004061634 A1 DE102004061634 A1 DE 102004061634A1
Authority
DE
Germany
Prior art keywords
software library
instance
decryption
java
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE200410061634
Other languages
German (de)
Inventor
Stefan Berndt
Thomas Hanna
Thorsten Laux
Christian Dr. Scheering
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Priority to DE200410061634 priority Critical patent/DE102004061634A1/en
Priority to PCT/EP2005/054909 priority patent/WO2006063876A1/en
Publication of DE102004061634A1 publication Critical patent/DE102004061634A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software

Abstract

Die Erfindung betrifft ein Verfahren zur Verschlüsselung und Ausführung einer Software-Bibliothek, wobei in einem ersten Schritt (S1a) die Software-Bibliothek mittels eines kryptographischen Verfahrens verschlüsselt wird, in einem zweiten Schritt (S2) die verschlüsselte Software-Bibliothek zu einem Computer mit einer Ausführungsinstanz übertragen wird, in einem dritten Schritt (S3) zu dem Computer ein Entschlüsselungsprogramm übermittelt wird und in einem vierten Schritt (S4a, S4b, S4c) die verschlüsselte Software-Bibliothek von dem Entschlüsselungsprogramm wiederhergestellt, an die Ausführungsinstanz übergeben und dort ausgeführt wird. Dabei wird als das Entschlüsselungsprogramm eine Ladeinstanz verwendet, die mit einer Entschlüsselungsfunktion ausgerüstet ist, wobei die Ladeinstanz zum Laden von Elementen der Software-Bibliothek in die Ausführungsinstanz verwendet wird.The invention relates to a method for encrypting and executing a software library, wherein in a first step (S1a) the software library is encrypted by means of a cryptographic method, in a second step (S2) the encrypted software library to a computer with a Execution instance is transmitted, in a third step (S3) to the computer, a decryption program is transmitted and in a fourth step (S4a, S4b, S4c) the encrypted software library of the decryption program is restored, passed to the execution instance and executed there. In this case, a loading instance equipped with a decryption function is used as the decryption program, the loading instance being used for loading elements of the software library into the execution instance.

Description

Die Erfindung betrifft ein Verfahren zur Verschlüsselung und Ausführung einer Software-Bibliothek gemäß des Oberbegriffs des Patentanspruchs 1 und ein Computerprogrammprodukt zum Einsatz in einem solchen Verfahren gemäß des Oberbegriffs des Patentanspruchs 12.The The invention relates to a method for encrypting and executing a Software library according to the generic term of claim 1 and a computer program product are used in such a method according to the preamble of Patent claim 12.

Computerprogramme („Software") werden häufig gegen missbräuchliche Verwendung geschützt. Dabei wird zum einen oftmals ein Kopierschutz eingesetzt, der eine unkontrollierte Weitergabe bzw. eine Mehrfach-Verwendung eines Computerprogramms bzw. Computerprogrammproduktes verhindert, und zum anderen ein Schutz gegen eine sog. Dekompilierung.computer programs ("Software") are often against abusive Use protected. On the one hand a copy protection is often used, the one uncontrolled disclosure or multiple use of a computer program or computer program product prevents, and on the other hand protection against a so-called decompilation.

Bei der Dekompilierung, häufig auch als „Reverse-Engineering" bezeichnet, wird aus einem in kompilierter Form vorliegenden Computerprogramm („Object-Code", „Byte-Code") der Quelltext („Source-Code", „Quell-Code") zurückgewonnen. Anhand des zurückgewonnenen Source-Codes lassen sich zum einen die Funktionsweise, die Struktur und die Algorithmen des Computerprogramms ersehen, und zum anderen bietet der so gewonnene Source-Code die Möglichkeit, diesen abzuändern (manipulieren), neu zu kompilieren und somit für eigene Zwecke weiter zu verwenden. Dies liegt im Allgemeinen nicht im Interesse des Herstellers des Computerprogramms, so dass verschiedene Methoden eingesetzt werden, um ein „Reverse-Engineering" von Computerprogrammen zu verhindern.at decompilation, often also referred to as "reverse engineering" is recovered from a compiled form computer program ("object code", "byte code"), the source code ("source code", "source code"). Based on the recovered Source codes can be on the one hand, the functioning, the structure and the algorithms of the computer program, and on the other hand the source code thus obtained offers the possibility to modify it (manipulate), new to compile and thus for to use your own purposes. This is generally not in the interest of the manufacturer of the computer program, so that different Methods are used to reverse engineer computer programs to prevent.

Computerprogramme (Anwendungen) werden häufig als eine Ansammlung von Bibliotheken erstellt und ausgeliefert, die im Umfeld des Betriebssystems „Windows" oft als „DLLs" (DLL = Dynamic Link Library) bezeichnet werden und im Umfeld der Programmiersprache JAVA zumeist in sog. JAR-Files verfügbar sind. Diese Software-Bibliotheken liegen in der Regel in einer kompilierten Form vor, können jedoch mit Hilfe sog. Decompiler (fast) vollständig zu Source-Codes wiederhergestellt werden.computer programs (Applications) become common created and delivered as a collection of libraries, in the environment of the operating system "Windows" often referred to as "DLLs" (DLL = Dynamic Link Library) and in the context of the programming language JAVA mostly in so-called. JAR files available are. These software libraries are usually compiled in one Form before, can However, with the help of so-called. Decompiler (almost) completely restored to source codes become.

Bei der Programmiersprache JAVA handelt es sich um eine vollständig objektorientierte Programmiersprache des Herstellers SUN Microsystems, welche wegen ihrer Plattformunabhängigkeit häufig für die Programmierung betriebsystemübergreifender Software und für den Einsatz im Internet verwendet wird. Programme bzw. Software-Bibliotheken in der Programmiersprache JAVA sind daher sehr häufig von nicht-berechtigtem Reverse-Engineering betroffen.at The programming language JAVA is a completely object-oriented Programming language of the manufacturer SUN Microsystems, which due to their platform independence often for programming OS-cross Software and for the use on the Internet is used. Programs or software libraries in the JAVA programming language are therefore very often of unjustified Reverse Engineering affected.

Die Computerprogramme zur Dekompilierung (Decompiler) machen sich dabei zu Nutze, dass in dem Byte-Code, also in dem kompilierten Computerprogramm, viele Informationen im „Klartext" vorliegen. Das betrifft zum Beispiel Funktionsnamen, Variablen, Zeilennummern, Debug-Informationen etc.. Solche Informationen werden häufig auch als „symbolische Informationen" bezeichnet. Sie sorgen letztlich dafür, dass der von einem Decompiler wiederhergestellte Source-Code von einem fachkundigen Programmierer leicht nachvollzogen (analysiert) und verändert werden kann. Um diesen Nachteil zu umgehen, werden Verfahren und Einrichtungen zur Byte-Code-Verschleierung, sog. „Obfuskatoren" (engl.: obfuscation = Verschleierung, Verwirrung), eingesetzt. Bei diesen Verfahren, welche häufig auch als „Byte-Code-Obfuscation" bezeichnet werden, werden die für die Ablauffähigkeit des Byte-Codes nicht erforderlichen symbolischen Informationen soweit wie möglich entfernt (dies betrifft z. B. Zeilennummern und Debug-Informationen) und die restlichen symbolischen Informationen werden verschleiert, indem beispielsweise Variablen und Funktionen umbenannt werden. Ein derart geschützter Byte-Code ist zwar immer noch durch einen Decompiler in einen Source-Code umsetzbar, aber das Resultat ist nur schwer auswertbar. Der Nach teil der Byte-Code-Obfuscation liegt darin, dass ein „Debugging" des derart verarbeiteten Byte-Codes praktisch nicht mehr möglich ist. Bei der Programmiersprache JAVA kann darüber hinaus ein besonderes Sprachmittel, die sog. JAVA-Reflection-API, nicht mehr verwendet werden. Bei der JAVA-Reflection-API handelt es sich um ein Sprachmittel, bei dem während der Laufzeit eines Computerprogramms Eigenschaften des Computerprogramms von diesem selbst analysiert werden und zu einer Veränderung des Programmablaufs oder sogar zu einer Veränderung des Computerprogramms selbst verwendet werden. Da eine solche Analyse unter anderem Funktionsnamen und Variablen-Namen analysiert, kann die JAVA-Reflection-API nur bei solchen Computerprogrammen oder Computerprogramm-Teilen (bei JAVA spricht man auch von „Klassen") verwendet werden, die nicht durch eine Byte-Code-Verschleierung geschützt sind.The Computer programs for decompilation (decompiler) get involved to use that in the byte code, that is, in the compiled computer program, a lot of information is in "plain text" for example, function names, variables, line numbers, debug information etc. Such information is often called "symbolic Information ". They ultimately ensure that the source code of a decompiler restored by a skilled programmer easily understood (analyzed) and changed can be. To circumvent this disadvantage, methods and Devices for byte code obfuscation, so-called "obfuscators" (English: obfuscation = Obfuscation, confusion). In these methods, which often may also be referred to as "byte-code obfuscation" the for the processability of the bytecode not required symbolic information so far as possible removed (eg, line numbers and debug information) and the remaining symbolic information is obfuscated, for example, by renaming variables and functions. Such a protected Byte code is still through a decompiler into a source code feasible, but the result is difficult to evaluate. The disadvantage The byte code obfuscation is that of "debugging" the byte code thus processed practically impossible is. In the programming language JAVA, a special language, the so-called JAVA Reflection API, no longer be used. The JAVA Reflection API is a Language means in which during the runtime of a computer program computer program properties be analyzed by this myself and change the program flow or even a change in the computer program itself be used. Because such an analysis among other function names and variable name parses, the JAVA Reflection API can only in such computer programs or computer program parts (in JAVA is also called "classes"), that are not protected by byte-code obfuscation.

Eine alternative Methode zum Schutz von Byte-Code ist die sog. „Byte-Code-Verschlüsselung". Bei dieser Methode wird der Byte-Code mit Hilfe eines kryptographischen Verfahrens (Algorithmus) verschlüsselt, so dass ein Decompiler keinen „lesbaren" Byte-Code mehr vorfindet. Da aber auch eine Ausführungsinstanz (Betriebssystem bzw. – bei der JAVA-Programmiersprache – die „JAVA-Virtual-Machine") einen verschlüsselten Byte-Code nicht abarbeiten kann, muss der verschlüsselte Byte-Code vor seiner Verwendung wieder entschlüsselt werden. Daher wird ein verschlüsseltes Computerprogramm bzw. eine verschlüsselte Klasse in der Regel zusammen mit einem Entschlüsselungsprogramm ausgeliefert, wobei dieses Entschlüsselungsprogramm das eigentliche Computerprogramm bzw. die eigentliche „JAVA-Klasse" kurz vor ihrem Einsatz entschlüsselt und an die Ausführungsinstanz (z.B. JVM = JAVA-Virtual-Machine) übergibt. Dieses Verfahren bricht jedoch die „Plattformunabhängigkeit" der Programmiersprache JAVA, weil das Entschlüsselungsprogramm zusammen mit der verschlüsselten Klasse eine ausführbare Datei, ein sog. „Executable", bildet, wobei dieses „Executable" plattformabhängig ist. Ein weiterer Nachteil dieses Verfahrens ist, dass die derart geschützten Software-Bibliotheken nur direkt ausgeführt werden können und ein Einsatz in einem anderen Umfeld, beispielsweise auf einem Web-Server (als sog. JAVA-Applets) nicht möglich ist. Das liegt daran, dass eine Ladeinstanz (z.B. „JAVA-Class-Loader") nicht frei auf die verschlüsselten Klassen zugreifen kann, so dass ein dynamisches Laden der Elemente der Software-Bibliothek nicht oder nur eingeschränkt möglich ist.An alternative method for protecting byte code is the so-called "byte-code encryption." In this method, the byte-code is encrypted using a cryptographic method (algorithm) so that a decompiler does not have a "readable" byte-code finds more. However, since an execution instance (operating system or, in the case of the JAVA programming language, the "JAVA virtual machine") can not process an encrypted byte code, the encrypted byte code must be decrypted before it is used encrypted computer program or an encrypted class usually delivered together with a decryption program, this decryption program the egg decrypted the actual computer program or the actual "JAVA class" shortly before its use and handed over to the execution instance (eg JVM = JAVA Virtual Machine) .This method, however, breaks the "platform independence" of the programming language JAVA because the decryption program together with the encrypted class forms an executable file, a so-called "executable", wherein this "executable" is platform-dependent. Another disadvantage of this method is that the so-protected software libraries can only be executed directly and use in another environment, for example on a web server (as so-called. JAVA applets) is not possible. This is because a load instance (eg "JAVA Class Loader") can not freely access the encrypted classes, so that a dynamic loading of the elements of the software library is not possible or only possible to a limited extent.

Zusammengefasst lässt sich sagen, dass das Verfahren der Byte-Code-Obfuscation einen Schutz gegen die Analyse und die Weiterverwendung eines dekompilierten Computerprogramms bietet und auch die Plattformunabhängigkeit von Computerprogrammen, beispielsweise von JAVA-Klassen und JAVA-Bibliotheken, gewährleistet, aber wegen der Veränderung des Byte-Codes zum einen die Debug-Möglichkeiten einschränkt und zum anderen den Gebrauch von Sprachmitteln, beispielsweise der JAVA-Reflection-API, verhindert. Dem gegenüber hat der bei der Byte-Code-Verschlüsselung wieder hergestellte Byte-Code zwar die gleiche Qualität und somit die gleichen Möglichkeiten (Debug-Fähigkeit, Reflection-API-Capability) wie der originale Byte-Code, aber dieses Verfahren ist mit dem Nachteil behaftet, dass die Plattformunabhängigkeit gebrochen wird und die Einsatzfähigkeit des Computerprogramms beschränkt wird, indem beispielsweise ein Einsatz als sog. „JAVA-Applet", bei dem dynamisch Programmteile nachgeladen werden, behindert wird oder unmöglich ist.Summarized let yourself say that the method of byte-code obfuscation protection against the analysis and reuse of a decompiled Computer program offers and also the platform independence computer programs, such as JAVA classes and JAVA libraries, guaranteed but because of the change the byte code limits the debug possibilities and on the other hand, the use of language resources, such as the JAVA Reflection API, prevented. Opposite has recovered in byte-code encryption Byte code is the same quality and thus the same possibilities (Debug capability Reflection API Capability) like the original byte code, but this one Method has the disadvantage that the platform independence is broken and the operational capability limited to the computer program For example, by using an application as a so-called "JAVA applet" in which dynamic Program parts are reloaded, obstructed or impossible.

Es ist also eine Aufgabe der vorliegenden Erfindung, Computerprogramme vor einer Dekompilierung zu schützen und die Funktionalität des geschützten Computerprogramms zu erhalten.It Thus, it is an object of the present invention to provide computer programs to protect against decompilation and the functionality of the protected Computer program.

Die Aufgabe wird für das Verfahren durch die Merkmale des unabhängigen Patentanspruchs 1 und für das Computerprogramm durch die Merkmale des unabhängigen Patentanspruchs 12 gelöst.The Task is for the method by the features of independent claim 1 and the computer program by the characteristics of the independent Patent claim 12 solved.

Die Lösung sieht ein Verfahren zur Verschlüsselung und Ausführung einer Software-Bibliothek vor, wobei in einem ersten Schritt die Software-Bibliothek mittels eines kryptographischen Verfahrens verschlüsselt wird, in einem zweiten Schritt die verschlüsselte Software-Bibliothek zu einem Computer mit einer Ausführungsinstanz übertragen wird, in einem dritten Schritt zu dem Computer ein Entschlüsselungsprogramm übermittelt wird, und in einem vierten Schritt die verschlüsselte Software-Bibliothek von dem Entschlüsselungsprogramm wieder hergestellt, an die Ausführungsinstanz übergeben und dort ausgeführt wird. Dabei wird als das Entschlüsselungsprogramm eine Ladeinstanz verwendet, die mit einer Entschlüsselungsfunktion ausgerüstet ist, wobei die Ladeinstanz zum Laden von Elementen der Software-Bibliothek in die Ausführungsinstanz verwendet wird. Die Verfahrensschritte zwei und drei können dabei auch zusammengefasst sein oder in umgekehrter Reihenfolge durchgeführt werden. Durch die Anwendung dieses Verfahrens wird der Ausführungsinstanz ein „vollwertiger" Byte-Code zugeführt, wodurch Verfahren wie das „Debugging" oder die Anwendung von Sprachmitteln wie der „Reflection-API" benutzt werden können. Weiterhin ist eine durch ein solches Verfahren verschlüsselte und ausgeführte Software-Bibliothek auch für Einsatzgebiete wie für die JAVA-Applets verwendbar, wobei dort die Zusammenfassung des zweiten mit dem dritten Verfahrensschritt besonders vorteilhaft ist. Das Verfahren ist auch vorteilhaft auf die Programme bzw. Computerprogrammprodukte anderer Programmiersprachen anwendbar.The solution sees a method for encryption and execution a software library, where in a first step the Software library is encrypted using a cryptographic process, in a second step, the encrypted software library transferred to a computer with an execution instance In a third step, a decryption program is transmitted to the computer and in a fourth step the encrypted software library from the decryption program restored, handed over to the execution instance and executed there becomes. It is called the decryption program a charge unit used with a decryption function equipped where is the loading instance for loading elements of the software library into the execution instance is used. The process steps two and three can thereby also be summarized or carried out in reverse order. By applying this method, the execution entity is supplied with a "full" byte code, thereby Procedures like "debugging" or the application language tools such as the Reflection API is a software library encrypted and executed by such a process also for Fields of application as for the JAVA applets usable, where the summary of the second particularly advantageous with the third method step is. The method is also advantageous to the programs or computer program products other programming languages applicable.

Die Lösung sieht weiter ein Computerprogrammprodukt zum Einsatz in den vorstehenden Verfahren vor, wobei das Computerprogrammprodukt als Ladeinstanz von einer Ausführungsinstanz verwendbar ist. Dabei weist das Computerprogrammprodukt eine Entschlüsselungsfunktion zur Entschlüsselung einer mittels eines kryptographischen Verfahrens geschützten Software-Bibliothek auf. Ein solches Computerprogrammprodukt kann von einer Ausführungsinstanz, beispielsweise einer JAVA-Virtual-Machine, anstelle und in der gleichen Weise wie eine Stan dard-Ladeinstanz („Class-Loader") eingesetzt werden. Dabei fließen der Ausführungsinstanz die gleichen Programminformationen (Byte-Code) zu, die auch bei einer unverschlüsselten Software-Bibliothek abgearbeitet werden. Durch die Integration der Entschlüsselungsfunktion in die Ladeinstanz kann das Computerprogrammprodukt plattformunabhängig auf allen Computern und Betriebssystemen verwendet werden, auf denen eine solche Ausführungsinstanz betrieben wird. Außerdem führt die Integration der Entschlüsselungsfunktion in die Ladeinstanz zu einer erhöhten Sicherheit, weil ein Zugriff auf den entschlüsselten Byte-Code so erschwert wird.The solution further provides a computer program product for use in the above Method, wherein the computer program product as Ladeinstanz from an execution instance is usable. In this case, the computer program product has a decryption function for decryption a protected by a cryptographic process software library. Such Computer program product may be from an execution instance, for example a JAVA virtual machine, instead of and in the same way as a standard loading unit ("Class loader") are used. Flow the execution instance the same program information (byte code), which is also at a unencrypted Software library to be processed. By integrating the decryption function in the Ladeinstanz the computer program product can be platform independent all computers and operating systems that are used such an execution instance is operated. Furthermore leads the Integration of the decryption function in the Ladeinstanz to an elevated Security, because access to the decrypted byte code is so difficult.

Das Verfahren ist durch die Merkmale der abhängigen Patentansprüche 2 bis 11 vorteilhaft weiter ausgestaltet. Die dabei beschriebenen Merkmale und Vorteile gelten sinngemäß auch für das erfindungsgemäße Computerprogrammprodukt. Gleichfalls ist das erfindungsgemäße Computerprogrammprodukt durch die Merkmale der abhängigen Patentansprüche 13 bis 15 vorteilhaft weiter ausgestaltet, wobei auch die Merkmale und Vorteile dieser abhängigen Patentansprüche sinngemäß auf das erfindungsgemäße Verfahren anzuwenden sind.The method is advantageously further developed by the features of the dependent claims 2 to 11. The features and advantages described here apply mutatis mutandis to the inventions The computer program product according to the invention. Likewise, the computer program product according to the invention by the features of the dependent claims 13 to 15 advantageously further configured, with the features and advantages of these dependent claims are mutatis mutandis applicable to the inventive method.

Wenn die Ladeinstanz als unverschlüsseltes Element der Software-Bibliothek zu dem Computer übertragen wird, ist sichergestellt, dass mit den verschlüsselten Elementen der Software-Bibliothek die „passende" Ladeinstanz mit richtiger Entschlüsselungsfunktion zu dem Computer gelangt und zudem ohne weitere Entschlüsseldung in Betrieb genommen werden kann. Dabei wird vorteilhaft jedoch die unverschlüsselte Ladeinstanz in kompilierter Form zu dem Computer übertragen und vor der Übertragung vor einer Dekompilierung geschützt. Dadurch werden eine Analyse und eine Manipulation der Entschlüsselungsfunktion verhindert. Vorteilhafter Weise erfolgt der Schutz vor Dekompilierung der kompletten Ladeinstanz oder zumindest der darin enthaltenen Entschlüsselungsfunktion durch eine Byte-Code-Verschleierung, weil dadurch die Plattformunabhängigkeit der Ladeinstanz bewahrt wird.If the charge as an unencrypted element the software library is transferred to the computer is ensured that with the encrypted Elements of the software library the "right" Ladeinstanz with proper decryption function get to the computer and also without further decryption can be put into operation. In this case, however, the unencrypted Ladeinstanz is advantageous in compiled form transferred to the computer and before the transfer before protected from decompilation. This will provide an analysis and manipulation of the decryption function prevented. Advantageously, the protection takes place before decompilation the complete charge or at least the one contained therein decryption function by a byte-code obfuscation, because thereby the platform independence the charge is preserved.

Wenn die Ladeinstanz von der Ausführungsinstanz anstelle einer vorhandenen Standard-Ladeinstanz verwendet wird, kann die Ladeinstanz in der gleichen Weise wie die Standard-Ladeinstanz angesprochen werden, wodurch die Ausführungsinstanz in unveränderter Form weiter verwendet werden kann. Dabei ist die Ladeinstanz vorteilhafter Weise auch zum Laden unverschlüsselter Elemente aus der Software-Bibliothek und/oder einer weiteren, entweder unverschlüsselten oder einer gleichartig verschlüsselten, Software-Bibliothek verwendbar, so dass mit ein- und derselben Ladeinstanz auch gemischt verschlüsselte und nicht verschlüsselte Software-Bibliotheken geladen werden können.If the loading instance of the execution instance is used instead of an existing standard The charging distance can be addressed in the same way as the standard charging distance which causes the execution instance in unchanged Form can be used further. The charge is more advantageous Way also for loading unencrypted Elements from the software library and / or another, either unencrypted or a similar encrypted, Software library usable, so that with one and the same Ladeinstanz also mixed encrypted and not encrypted Software libraries can be loaded.

Das Verfahren ist besonders universell verwendbar, wenn für die Software-Bibliothek, für die Ladeinstanz und/oder für die Entschlüsselungsfunktion jeweils plattformunabhängige Software verwendet wird. Das gilt insbesondere, wenn für die Software-Bibliothek eine JAVA-Bibliothek und für die Ausführungsinstanz eine JAVA-Virtual-Machine verwendet wird. Dabei wird für die JAVA-Bibliothek zumindest teilweise kompilierter Byte-Code verwendet, wobei neben dem kompilierten Byte-Code auch nicht-kompilierte Ressourcen, beispielsweise Texte und Bildinformationen, in ein- und derselben Software-Bibliothek enthalten sein können. Wenn dabei ein JAVA-Class-Loader als die Ladeinstanz verwendet wird, lassen sich derart geschützte (verschlüsselte) JAVA-Klassen als Software-Bibliotheken einsetzen.The Method is particularly universally applicable, if for the software library, for the loading puncture and / or for the decryption function each platform independent Software is used. This is especially true if for the software library a JAVA library and for the execution instance a JAVA virtual machine is used. This is for the JAVA library at least partially compiled byte code is used, besides The compiled byte code also includes uncompiled resources, for example Texts and image information, in the same software library may be included. If a JAVA class loader is used as the dummy, can be protected in this way (encrypted) JAVA classes as software libraries.

Die Kontrolle und die Weiterverwendung von Elementen der Software-Bibliothek wird vereinfacht, wenn in der zu verschlüsselnden Software-Bibliothek Debug-Informationen eingesetzt werden, wobei die Debug-Informationen im vierten Schritt wiederhergestellt werden. Dabei können vorteilhaft auch unveränderte Funktionsnamen und Variablen als Debug-Informationen eingesetzt werden, wodurch auch der Einsatz einer JAVA-Reflection-API unterstützt wird.The Control and reuse of software library items is simplified when debug information in the software library to be encrypted are used, with the debug information in the fourth step be restored. Advantageously, unchanged function names can also be used and variables as debug information which also makes use of a JAVA reflection API supports becomes.

Ausführungsbeispiele des erfindungsgemäßen Verfahrens werden nachfolgend anhand der Zeichnung erläutert und dienen gleichzeitig der Erläuterung eines erfindungsgemäßen Computerprogrammprodukts.embodiments the method according to the invention will be explained below with reference to the drawing and serve simultaneously the explanation a computer program product according to the invention.

Dabei zeigt die einzige Figur schematisch die Verfahrensschritte zur Verschlüsselung, Entschlüsselung und zur Ausführung einer Software-Bibliothek.there the sole figure shows schematically the method steps for encryption, decryption and for execution a software library.

Anhand der 1 wird im Folgenden als Beispiel für die Verschlüsselung und Ausführung einer Software-Bibliothek eine Software-Bibliothek in der Programmiersprache JAVA betrachtet. Diese Software-Bibliothek besteht aus mehreren Elementen, die zu einer Datei (".jar-File") zusammengefasst sind.Based on 1 In the following, an example of the encryption and execution of a software library is a software library in the JAVA programming language. This software library consists of several elements, which are combined into one file (".jar-File").

Die einzelnen Elemente der Software-Bibliothek werden in einem ersten Schritt S1a mit Hilfe eines gebräuchlichen Verschlüsselungsverfahrens codiert. Im vorliegenden Ausführungsbeispiel werden dabei alle Elemente der Software-Bibliothek verschlüsselt. Alternativ können jedoch auch einzelne Elemente der Software-Bibliothek von der Verschlüsselung ausgenommen werden. Das ist z.B. dann sinnvoll, wenn einzelne Elemente, z.B. Multimedia-Daten (Audiodaten, Videodaten), nicht vor einem Reverse-Engineering geschützt werden müssen und somit durch die Verschlüsselung und anschließende Entschlüsselung ein unnötiger Aufwand an Rechenzeit verursacht würde. Die Verschlüsselung der Software-Bibliothek findet hierbei auf einem Computer (Server) des Herstellers der Software-Bibliothek statt. Der Hersteller bietet zugleich auch ein passendes Entschlüsselungsprogramm an, welches im vorliegenden Ausführungsbeispiel nicht nur für die hier verschlüsselte Software-Bibliothek verwendet wird, sondern für alle Software-Bibliotheken dieses Herstellers verwendet werden kann. Da die Software-Bibliothek hier eine "plattformunabhängige" JAVA-Software-Bibliothek ist, ist auch das Entschlüsselungsprogramm in der Programmiersprache JAVA erstellt. Somit kann ein- und dasselbe Entschlüsselungsprogramm auf unterschiedlichen Computer-Plattformen unverändert eingesetzt werden, sofern auf diesen Computer-Plattformen jeweils eine passende Ausführungsinstanz, hier also eine JAVA-Virtual-Machine, installiert ist. Selbstverständlich wird das Entschlüsselungsprogramm mit der Entschlüsselungsfunktion nur in compilierter Form zur Verfügung gestellt, um die missbräuchliche Einsichtnahme in den Quellcode und damit in die Funktionsweise zu vermeiden.The individual elements of the software library are encoded in a first step S1a using a conventional encryption method. In the present embodiment, all elements of the software library are encrypted. Alternatively, however, individual elements of the software library can be excluded from the encryption. This is useful, for example, if individual elements, eg multimedia data (audio data, video data), do not need to be protected against reverse engineering and thus an unnecessary amount of computing time would be caused by the encryption and subsequent decryption. The encryption of the software library takes place here on a computer (server) of the manufacturer of the software library. At the same time, the manufacturer also offers a suitable decryption program, which in the present exemplary embodiment is not only used for the software library encrypted here but can also be used for all software libraries of this manufacturer. Since the software library here is a "platform-independent" JAVA software library, the decryption program is also created in the JAVA programming language. Thus, one and the same decryption program can be used unchanged on different computer platforms, provided that a suitable execution instance, in this case a JAVA virtual machine, is installed on each of these computer platforms. Of course, the decryption program with the decryption function is only available in compiled form to prevent misuse of the source code and thus its functioning.

Das Entschlüsselungsprogramm ist hierbei als eine Ladeinstanz, ein sog. "Class-Loader" (JAVA-Class-Loader), ausgeführt, wobei diese Ladeinstanz zum Einen die Entschlüsselungsfunktion zur Wiederherstellung des Byte-Codes der verschlüsselten Elemente der Software-Bibliothek umfasst, und zum Anderen in der gleichen Weise wie der Standard-Class-Loader von einer JAVA-Virtual-Machine zum dynamischen Laden von Elementen einer JAVA-Software-Bibliothek verwendbar ist. Obwohl das Entschlüsseldungsprogramm, also in diesem Fall die mit einer Entschlüsselfunktion ausgestattete Ladeinstanz, auch separat zu dem Computer (Ziel-Hardware), auf dem die Software-Bibliothek verwendet werden soll, übermittelt werden kann, wird diese Ladeinstanz im vorliegenden Ausführungsbeispiel in die Datei mit den Elementen der Software-Bibliothek eingefügt – Schritt S1b – und damit de fakto ein Bestandteil der Software-Bibliothek. Dabei wird die Ladeinstanz durch Einsatz eines „Obfuskators" nach dem Verfahren einer Byte-Code-Verschleierung geschützt, so dass durch eine Dekompilierung der Ladeinstanz der Algorithmus zur Entschlüsselung nicht nachvollzogen werden kann. Da die verwendete Ladeinstanz für eine unbegrenzte Anzahl verschlüsselter Software-Bibliotheken einsetzbar ist, handelt es sich hierbei um eine vielfach getestete Software, bei der es nicht von Nachteil ist, dass durch Einsatz der „Obfuskation" keine Möglichkeiten zum "Debuggen" mehr bestehen. Auch die anderen Nachteile des Verschleierungsverfahrens (Byte-Code- Obfuscation), wie z.B. der Ausschluß des JAVA-Sprachelements "Reflection-API", sind hierbei nicht von Belang.The decryption program is here as a Ladeinstanz, a so-called. "Class Loader" (JAVA Class Loader), executed This Ladeinstanz on the one hand, the decryption function for recovery the byte code of the encrypted Includes elements of the software library, and on the other in the same way as the standard class loader from a JAVA virtual machine dynamic loading of elements of a JAVA software library is. Although the decryption program, So in this case the one equipped with a decryption function Ladeinstanz, also separately to the computer (target hardware), on the The software library that should be used can be transmitted this Ladeinstanz in the present embodiment in the file inserted with the elements of the software library - step S1b - and so on de facto a part of the software library. Here is the Ladeinstanz by use of an "obfuscator" after the process a byte code obfuscation protected, so that by decompiling the Ladeinstanz the algorithm for decryption can not be reconstructed. Because the size of the charge used for an unlimited Number of encrypted software libraries can be used, this is a much tested Software in which it is not disadvantageous that through use the "Obfuscation" no possibilities to "debug" more. Also the other disadvantages of the obfuscation technique (byte-code obfuscation), like e.g. the exclusion of the JAVA language element "Reflection API", are not relevant.

Die Datei mit der Software-Bibliothek und somit auch die Ladeinstanz mit der Entschlüsselungsfunktion wird nun in einem weiteren Verfahrensschritt S2, S3 zu dem Computer übertragen, auf dem die Software-Bibliothek zum Einsatz kommen soll. Im vorliegenden Ausführungsbeispiel ist die Software-Bibliothek ein sog. „JAVA-Applet", welches über das Internet zu dem Computer übertragen und dort der JAVA-Virtual-Machine als Ausführungsinstanz zur Ausführung übergeben wird. Bei der Initialisierung der Software-Bibliothek wird die JAVA-Virtual-Machine in einem Schritt S4a angewiesen, nicht den bereits vorinstallierten JAVA-Class-Loader ("Default Class-Loader") einzusetzen, sondern den in der neuen Software-Bibliothek mitgelieferten Class-Loader zu verwenden. Diese Möglichkeit, die Verwendung vorinstallierter Software-Komponenten zu umgehen und stattdessen mitgelieferte, andere Versionen dieser Software-Komponenten einzusetzen, ist bei der Programmiersprache JAVA vorgesehen.The File with the software library and thus also the loading distance with the decryption function is now transferred to the computer in a further method step S2, S3, on which the software library is to be used. In the present embodiment is the software library a so-called "JAVA applet", which over the Transfer Internet to the computer and there the JAVA virtual machine as an execution instance for execution passed becomes. When initializing the software library, the JAVA virtual machine will be in instructed a step S4a, not the already pre-installed JAVA class loader ("Default Class loader "), but in the new software library to use the supplied class loader. This possibility, bypassing the use of pre-installed software components and instead provided to use other versions of these software components, is intended for the programming language JAVA.

Der JAVA-Class-Loader wird nun eingesetzt, um die Elemente der Software-Bibliothek der JAVA-Virtual-Machine zuzuführen – Schritt S4c. Dabei wird bei jedem angeforderten Element überprüft, ob es sich um ein verschlüsseltes oder um ein unverschlüsseltes Elemente handelt, wobei beim Zugriff auf ein verschlüsseltes Element die Entschlüsselungsfunktion der Ladeinstanz (JAVA-Class-Loader) zur Entschlüsselung eingesetzt wird – Schritt S4b. Bei der Entschlüsselung wird dabei der Byte-Code des jeweiligen Elementes vollständig wiederhergestellt, so dass auch die in dem Byte-Code enthaltenen Debug-Informationen, Variablen-Namen, Funktionsnamen, etc. wiederhergestellt werden. Bei auftretenden Programmfehlern können dabei Fehlermeldungen erzeugt werden, die von dem ausführenden Computer zu einem Computer des Herstellers der Software-Bibliothek übermittelt und dort ausgewertet werden können.Of the JAVA class loader is now used to control the elements of the software library to the JAVA virtual machine - step S4c. It is checked for each element requested, whether it is an encrypted or an unencrypted Elements, wherein when accessing an encrypted Element the decryption function the loading unit (JAVA class loader) is used for decryption - step S 4 b. In the decryption while the byte code of the respective element is completely restored, so that also the debug information contained in the byte-code, Variable name, function name, etc. can be restored. If program errors occur, error messages can be sent generated by the executing computer transmitted to a computer of the manufacturer of the software library and can be evaluated there.

Alternativ zu der zuvor beschriebenen Methode, die Ladeinstanz mit der Entschlüsselungsfunktion in die Datei mit der Software-Bibliothek einzubetten, kann die Software-Bibliothek auch mit einem Verweis ausgestattet sein, der den Speicherort für die „passende" Ladeinstanz bezeichnet. Dann kann in den Fällen, in denen auf dem Computer, auf dem die Software-Bibliothek eingesetzt werden soll, die „passende" Ladeinstanz bereits vorhanden ist, eine erneute Übertragung der Ladeinstanz, beispielsweise über das Internet, vermieden werden. Dabei braucht die einmal eingesetzte Ladeinstanz nach ihrer Verwendung auch nicht zwingend deinstalliert werden, wenn wieder unverschlüsselte Software-Bibliotheken eingesetzt werden, weil von der Ladeinstanz auch unverschlüsselte Software-Bibliotheken bzw. unverschlüsselte Elemente in der gleichen Weise behandelt werden, wie es die Standard-Ladeinstanz der Ausführungsinstanz (JAVA-Virtual-Machine) macht.alternative to the method described above, the loading unit with the decryption function to embed in the file with the software library, the software library can also use a reference indicating the location for the "matching" Ladeinstanz. Then in cases, in those on the computer where the software library is used should be, the "matching" Ladeinstanz already is present, a retransmission the Ladeinstanz, for example about the Internet, to be avoided. It needs the once used Also not necessarily be uninstalled after use if again unencrypted Software libraries are used because of the loading punctuation also unencrypted Software libraries or unencrypted items in the same Be treated as the standard instance of the execution instance (JAVA Virtual Machine).

Claims (15)

Verfahren zur Verschlüsselung und Ausführung einer Software-Bibliothek, wobei in einem ersten Schritt (S1a) die Software-Bibliothek mittels eines kryptographischen Verfahrens verschlüsselt wird, in einem zweiten Schritt (S2) die verschlüsselte Software-Bibliothek zu einem Computer mit einer Ausführungsinstanz übertragen wird, in einem dritten Schritt (S3) zu dem Computer ein Entschlüsselungsprogramm übermittelt wird, und in einem vierten Schritt (S4a, S4b, S4c) die verschlüsselte Software-Bibliothek von dem Entschlüsselungsprogramm wiederhergestellt, an die Ausführungsinstanz übergeben und dort ausgeführt wird, dadurch gekennzeichnet, dass als das Entschlüsselungsprogramm eine Ladeinstanz verwendet wird, die mit einer Entschlüsselungsfunktion ausgerüstet ist, wobei die Ladeinstanz zum Laden von Elementen der Software-Bibliothek in die Ausführungsinstanz verwendet wird.Method for encrypting and executing a software library, wherein in a first step (S1a) the software library is encrypted by means of a cryptographic method, in a second step (S2) the encrypted software library is transferred to a computer with an execution instance, in a third step (S3) a decryption program is transmitted to the computer, and in a fourth step (S4a, S4b, S4c) the encrypted software library is restored by the decryption program, transferred to the execution entity and executed there, characterized in that as the decryption program, a load instance equipped with a decryption function is used, the load instance is used to load elements of the software library into the execution instance. Verfahren nach Patentanspruch 1, dadurch gekennzeichnet, dass die Ladeinstanz als unverschlüsseltes Element der Software-Bibliothek zu dem Computer übertragen wird.Method according to claim 1, characterized that the loading instance as an unencrypted element of the software library transferred to the computer becomes. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass die Ladeinstanz von der Ausführungsinstanz anstelle einer vorhandenen Standard-Ladeinstanz verwendet wird.Method according to one of the preceding claims, characterized characterized in that the loading instance of the execution instance is used instead of an existing standard dummy. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass die Ladeinstanz auch zum Laden unverschlüsselter Elemente aus der Software-Bibliothek und/oder einer weiteren Software-Bibliothek verwendet wird.Method according to one of the preceding claims, characterized characterized in that the Ladeinstanz also for loading unencrypted Elements from the software library and / or another software library is used. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass für die Software-Bibliothek, für die Ladeinstanz und/oder für das Entschlüsselungsprogramm jeweils plattformunabhängige Software verwendet wird.Method according to one of the preceding claims, characterized characterized in that for the Software library, for the charging distance and / or for the decryption program each platform independent Software is used. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass als die Software-Bibliothek eine JAVA-Bibliothek und als die Ausführungsinstanz eine JAVA-Virtual-Machine verwendet wird.Method according to one of the preceding claims, characterized marked that as the software library is a JAVA library and as the execution instance a JAVA virtual machine is used. Verfahren nach Patentanspruch 6, dadurch gekennzeichnet, dass für die JAVA-Bibliothek zumindest teilweise compilierter Byte-Code verwendet wird.Method according to claim 6, characterized that for the JAVA library is used at least partially compiled byte code. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass als die Ladeinstanz ein JAVA-Class-Loader verwendet wird.Method according to one of the preceding claims, characterized in that the load instance is a JAVA class loader. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass die Ladeinstanz in compilierter Form zu dem Computer übertragen wird und vor dem dritten Schritt vor einer Decompilierung geschützt wird.Method according to one of the preceding claims, characterized characterized in that the charge in compiled form to the Computer render is protected from decompilation before the third step. Verfahren nach Patentanspruch 9, dadurch gekennzeichnet, dass der Schutz vor der Decompilierung durch eine Byte-Code-Verschleierung erfolgt.Method according to claim 9, characterized protection against decompilation is done by byte-code obfuscation. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass in der zu verschlüsselnde Software-Bibliothek Debug-Informationen eingesetzt werden, wobei die Debug-Informationen im vierten Schritt wiederhergestellt werden.Method according to one of the preceding claims, characterized characterized in that in the software library to be encrypted Debug Information are used, with the debug information restored in the fourth step become. Computerprogrammprodukt zum Einsatz in einem der vorstehenden Verfahren, wobei das Computerprogrammprodukt als Ladeinstanz von einer Ausführungsinstanz verwendbar ist, dadurch gekennzeichnet, dass es eine Entschlüsselungsfunktion zur Entschlüsselung einer mittels eines kryptographischen Verfahrens geschützten Software-Bibliothek aufweist.Computer program product for use in one of above method, the computer program product being Loading instance of an execution instance is usable, characterized, that it is a decryption feature for decryption a protected by a cryptographic process software library having. Computerprogrammprodukt nach Patentanspruch 12, dadurch gekennzeichnet, dass es durch eine Byte-Code-Verschleierung vor einer Decompilierung geschützt ist,Computer program product according to claim 12, characterized in that it is by a byte-code obfuscation protected from decompilation is Computerprogrammprodukt nach Patentanspruch 12 oder 13, dadurch gekennzeichnet, dass es in einer plattformunabhängigen Programmiersprache erstellt ist.Computer program product according to claim 12 or 13, characterized in that it created in a platform-independent programming language is. Computerprogrammprodukt nach einem der Patentansprüche 12 bis 14, dadurch gekennzeichnet, dass es als ein JAVA-Class-Loader für eine JAVA-Virtual-Machine einsetzbar ist.Computer program product according to one of the claims 12 to 14, characterized in that it can be used as a JAVA class loader for a JAVA virtual machine is.
DE200410061634 2004-12-17 2004-12-17 Method and apparatus for encrypting and executing a software library Withdrawn DE102004061634A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE200410061634 DE102004061634A1 (en) 2004-12-17 2004-12-17 Method and apparatus for encrypting and executing a software library
PCT/EP2005/054909 WO2006063876A1 (en) 2004-12-17 2005-09-29 Method and device for encoding and for carrying out a software library

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE200410061634 DE102004061634A1 (en) 2004-12-17 2004-12-17 Method and apparatus for encrypting and executing a software library

Publications (1)

Publication Number Publication Date
DE102004061634A1 true DE102004061634A1 (en) 2006-06-29

Family

ID=35500801

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200410061634 Withdrawn DE102004061634A1 (en) 2004-12-17 2004-12-17 Method and apparatus for encrypting and executing a software library

Country Status (2)

Country Link
DE (1) DE102004061634A1 (en)
WO (1) WO2006063876A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262555B (en) * 2011-08-22 2013-11-20 迈普通信技术股份有限公司 Method and device for loading different versions of JAVA three-party library
CN103218551B (en) * 2013-05-03 2016-04-06 飞天诚信科技股份有限公司 A kind of method protecting java program

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134324A (en) * 1991-07-31 2000-10-17 Lsi Logic Corporation Method and system for distributing a plurality of software products, and limiting access thereto
US20030110387A1 (en) * 2001-12-06 2003-06-12 Cowie Neil Andrew Initiating execution of a computer program from an encrypted version of a computer program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6645398A (en) * 1998-02-13 1999-08-30 National Computer Board Method for protecting bytecode
GB0024918D0 (en) * 2000-10-11 2000-11-22 Sealedmedia Ltd Method of providing java tamperproofing
DE10105053A1 (en) * 2001-02-05 2002-08-29 Hmd Software Ag Method and device for transmitting program codes on the Internet

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134324A (en) * 1991-07-31 2000-10-17 Lsi Logic Corporation Method and system for distributing a plurality of software products, and limiting access thereto
US20030110387A1 (en) * 2001-12-06 2003-06-12 Cowie Neil Andrew Initiating execution of a computer program from an encrypted version of a computer program

Also Published As

Publication number Publication date
WO2006063876A1 (en) 2006-06-22

Similar Documents

Publication Publication Date Title
EP3274825B1 (en) Method and execution environment for the secure execution of program instructions
DE60127310T2 (en) DEVICE FOR PROTECTING DIGITAL DATA
DE102009041176B4 (en) A compiler system and method for compiling a source code into an encrypted machine language code
EP1770590A2 (en) Method and system for protecting source code
WO2010040597A2 (en) Method and device for replacing a component of a computer system
DE102005021064B4 (en) Method and apparatus for protection against buffer overrun attacks
EP1798653B1 (en) Method, computer program product and device for protecting a program comprising a function block
EP1271310B1 (en) Method to extend application that is to be installed with an installation program with a function and a computer program product
DE102004057490B4 (en) Device and method for processing a program code
EP3403214B1 (en) Method and apparatus for providing a cryptographic security function for the operation of a device
WO2004114131A1 (en) Method for booting up a software in the boot sector of a programmable read-only memory
EP2394232B1 (en) Device and method for preventing unauthorized use and/or manipulation of software
WO2006063876A1 (en) Method and device for encoding and for carrying out a software library
EP3497606B1 (en) Individual encryption of control commands
WO2006119928A1 (en) Method for adding functionality to an executable first module of a program package
EP2524333B1 (en) Method for providing a secure counter on a terminal
DE102005046696A1 (en) Secured program code producing method for license verification, involves storing modified program code including exchanged references, coded program blocks and program block with decoded function as protected computer program
EP4088183A1 (en) Analysis of a container instance of an operating system
DE102015111625A1 (en) A method for forming a virtual environment in an operating system of a computer
EP1318451B1 (en) Method to execute a program on a computer
DE102018201571A1 (en) Method for updating data
EP1720095B1 (en) Method for protection of an executable first module
DE10055118A1 (en) Program and data monitoring method for digital data processing system checks each program, interpreted data and active internet information in installation mode for virus detection
DE102014113441A1 (en) Protection against software components by means of encryption
EP4312140A1 (en) Method for programming a programmable controller using an executable control program and programmable controller

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal