WO2006063876A1 - Method and device for encoding and for carrying out a software library - Google Patents

Method and device for encoding and for carrying out a software library Download PDF

Info

Publication number
WO2006063876A1
WO2006063876A1 PCT/EP2005/054909 EP2005054909W WO2006063876A1 WO 2006063876 A1 WO2006063876 A1 WO 2006063876A1 EP 2005054909 W EP2005054909 W EP 2005054909W WO 2006063876 A1 WO2006063876 A1 WO 2006063876A1
Authority
WO
WIPO (PCT)
Prior art keywords
software library
library
java
computer
software
Prior art date
Application number
PCT/EP2005/054909
Other languages
German (de)
French (fr)
Inventor
Stefan Berndt
Thomas Hanna
Thorsten Laux
Original Assignee
Siemens Aktiengesellschaft
Scheering, Christian
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 Aktiengesellschaft, Scheering, Christian filed Critical Siemens Aktiengesellschaft
Publication of WO2006063876A1 publication Critical patent/WO2006063876A1/en

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

Definitions

  • the invention relates to a method for encrypting and executing a software library according to the preamble of patent claim 1 and to a computer program product for use in such a method according to the preamble of patent claim 12.
  • source code "source code”
  • object code "byte code”
  • DLLs Computer programs (applications) are often created and delivered as a collection of libraries, which are often referred to as “DLLs” (DLL) in the environment of the operating system "Windows” and in the environment of
  • JAR files Programming language JAVA are usually available in so-called JAR files. These software libraries are usually in a compiled form, but can be restored (almost) completely to source codes using so-called decompilers.
  • the JAVA programming language is a completely object-oriented programming language from the manufacturer SUN Microsystems, which, because of its platform independence, is often used for programming across operating systems
  • the computer programs for decompiling make use of the fact that in the byte code, ie in the compiled computer program, a lot of information is available in "plain text", for example function names, variables, line numbers, debug information, etc .. Such information is often referred to as “symbolic information”. Ultimately, they ensure that the source code recovered by a decompiler can be easily traced (analyzed) and changed by a knowledgeable programmer.
  • the Nach- Part of the byte-code obfuscation lies in the fact that "debugging" of the bytecode processed in this way is practically no longer possible.Furthermore, with the JAVA programming language, a special means of speech, the so-called JAVA reflection API, can not be used.
  • the JAVA Reflection API is a means of language in which, during runtime of a computer program, computer program properties are analyzed by the computer program and used to alter the program flow or even to change the computer program itself. Since such an analysis inter alia analyzes function names and variable names, the JAVA Reflection API can only be used with such computer programs or computer program parts (in JAVA one also speaks of "classes") which are not represented by a byte code. Obfuscation are protected.
  • byte code encryption An alternative method for protecting byte code is the so-called "byte code encryption.”
  • the byte code is encrypted using a cryptographic method (algorithm) so that a decompiler does not have a "readable” byte Code finds more. But since an execution instance (operating system or - in the JAVA
  • this method breaks the "platform independence" of the JAVA programming language because the decrypting program together with the encrypted class forms an executable file, called an "executable”, which is platform-dependent “Executable.”
  • Another disadvantage of this method is that so protected Software libraries can only be executed directly and use in a different environment, for example on a web server (as so-called JAVA Applets) is not possible. This is due to the fact that 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.
  • the method of byte-code obfuscation provides protection against the analysis and reuse of a decompiled computer program and also ensures the platform independence of computer programs such as JAVA classes and JAVA libraries, but because of the change in the Byte codes, on the one hand, limits the scope for debugging and, on the other, prevents the use of language resources, such as the JAVA Reflection API.
  • the byte code restored in byte-code encryption has the same quality and thus the same possibilities (debug capability, reflection API-capability) as the original byte-code, but this method has the disadvantage Affects that the platform independence is broken and the usability of the computer program is limited, for example, by a use as a so-called "JAVA Applet", in which dynamic program parts are reloaded, is hindered or impossible.
  • the object is achieved for the method by the features of independent claim 1 and for the computer program by the features of independent claim 12.
  • the solution provides a method for encrypting and executing a software library, wherein in a first step the software library is encrypted by means of a cryptographic method, in a second step the encrypted software library is transferred to a computer with an execution instance in that a decryption program is transmitted to the computer in a third step, and in a fourth step the encrypted software library is restored by the decryption program, transferred to the execution instance and executed there.
  • 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.
  • the method steps two and three can also be combined or carried out in the reverse order.
  • the execution entity is supplied with a "full" byte code, which can use methods such as “debugging” or the use of language means such as the "Reflection API.”
  • one encrypted by such a method and executed software library can also be used for applications such as the JAVA applets, whereby the combination of the second and the third method step is particularly advantageous there
  • the method is also advantageously applicable to the programs or computer program products of other programming languages.
  • the solution further provides a computer program product for use in the above methods, wherein the computer program product can be used as a loading unit by an execution instance.
  • the computer program product has a decryption function for decrypting a software library protected by means of a cryptographic method.
  • Such a computer program product may be used by an execution entity, such as a JAVA virtual machine, instead of and in the same manner as a standard.
  • the execution instance receives the same program information (byte code), which is also processed by an unencrypted software library the computer program product can be used platform independent on all computers and operating systems on which such an execution instance is operated.Also, the integration of the decryption function in the Ladeinstanz for increased security, because access to the decrypted byte code is so difficult.
  • the unencrypted charge is transmitted to the computer in compiled form and protected from decompilation before transmission, thereby preventing analysis and manipulation of the decryption function, advantageously providing protection against decomposition of the entire charge, or at least the contained therein decryption function by a
  • the load instance can be addressed in the same way as the default load instance, allowing the execution instance to continue to be used as it is.
  • the charge density can advantageously also be used for loading unencrypted elements from the software library and / or another, either unencrypted or similarly coded, software library, so that mixed encrypted and unencrypted ones can also be used with one and the same charge instance
  • Software libraries can be loaded.
  • the method can be used universally if in each case platform-independent software is used for the software library, for the loading unit and / or for the decryption function. This is especially true if a JAVA library is used for the software library and a JAVA virtual machine is used for the execution instance. At least partially compiled byte code is used for the JAVA library, whereby not only the compiled byte code but also non-compiled resources, for example texts and image information, can be contained in the same software library. If a JAVA class loader is used as the load instance, such protected (encrypted) JAVA classes can be used as software libraries.
  • the single figure shows schematically the method steps for encryption, decryption and execution of a software library.
  • a software library in the JAVA programming language will be considered below with reference to FIG. 1 as an example of the encryption and execution of a software library.
  • This software library consists of several elements, which are combined into one file (".jar-File").
  • the individual elements of the software library are encoded in a first step SIa using a conventional encryption method.
  • all elements of the software library are encrypted.
  • 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.
  • 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.
  • the decryption program is also created in the JAVA programming language.
  • JAVA programming language can 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.
  • the decryption program with the decryption function is provided only in compiled form in order to avoid the misuse of the source code and thus in the functioning.
  • the decryption program is in this case designed as a load instance, a so-called "class loader” (JAVA class loader), this load instance comprising, on the one hand, the decryption function for restoring the byte code of the encrypted elements of the software library, and secondly, in the same way that the standard class loader from a JAVA virtual machine is used to dynamically load elements of a JAVA software library.
  • class loader JAVA class loader
  • the decrypting program that is, in this case, the embossing function-equipped embossing function
  • this embossing instance will be included in the file in the present embodiment inserted into the elements of the software library - step SIb - and thus de facto a component of the software library.
  • the charge density is protected by the use of an "obfuscator" according to the method of byte code obfuscation, so that the algorithm for decoding can not be reconstructed by decompiling the charge value
  • the software library is a so-called "JAVA applet" which is transmitted to the computer via the Internet and handed over there to the JAVA virtual machine as an execution instance for execution -
  • Virtual-Machine instructs not to use the already pre-installed JAVA class loader ("Default Class Loader"), but to use the class loader included in the new software library Bypassing software components and using other versions of these software components that come with them is provided for the JAVA programming language.
  • the JAVA class loader is now used to feed the JAVA virtual machine software library elements - step S4c. For each element requested, it is checked whether it is an encrypted or an unencrypted element, whereby the access function (JAVA class loader) is used for decryption when accessing an encrypted element - step S4b. During decryption, the byte code of the respective element is completely restored so that the debug information, variable names, function names, etc. contained in the byte code are also restored. In the event of program errors, error messages can be generated which can be transmitted by the computer running to a computer of the manufacturer of the software library and can be evaluated there.
  • the access function JAVA class loader
  • the software library may also be provided with a reference identifying the location of the "appropriate" dummy in which on the computer on which the software library is to be used, the "matching" Ladeinstanz already exists, a re-transmission of Ladeinstanz, for example via the Internet, be avoided. It also does not necessarily need to be uninstalled after use if unencrypted software libraries are used again, because unencrypted software libraries or unencrypted elements are also treated by the load instance in the same way as the standard Load instance of the execution instance (JAVA Virtual Machine).

Abstract

The invention relates to a method for encoding and carrying out a software-library. Said method comprises the following steps; in a first step (SIa) the software library is encoded by means of a cryptographic method, in a second step (S2), the encoded software-library is transferred to a computer at an execution instant, in a third step (S3), a decoding program is transferred to the computer, and in a fourth step (S4a, S4b, S4c), the encoded software-library is reproduced by the decoding program, is transmitted to the execution instant and executed. According to the invention, a loading instance is used as the decoding program, which is fitted with a decoding function. The loading instance is used to load elements of the software-library in the execution instance.

Description

Beschreibungdescription
Verfahren und Vorrichtung zur Verschlüsselung und Ausführung einer Software-BibliothekMethod and apparatus for encrypting and executing a software library
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 invention relates to a method for encrypting and executing a software library according to the preamble of patent claim 1 and to a computer program product for use in such a method according to the preamble of patent claim 12.
Computerprogramme („Software") werden häufig gegen miss- bräuchliche Verwendung geschützt. Dabei wird zum einen oft- mals 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 frequently protected against misuse, on the one hand often being used for copy protection, which prevents uncontrolled transfer or multiple use of a computer program or computer program product, and on the other hand for protection against misuse so-called decompilation.
Die Druckschrift US 2003/0110387 Al Cowie et al. „Initiating execution of a Computer program from an encypted version of a Computer program" zeigt ein Verfahren und eine Anordnung zur Erzeugung und zur Ausführung eines verschlüsselten Computerprogramms. Dabei wird das unverschlüsselte Computerprogramm mittels eines privaten Schlüssels verschlüsselt und zusammen mit einem korrespondierenden öffentlichen Schlüssel zu einem Ziel-Computer übertragen. Sobald auf dem Ziel-Computer ein Befehl zur Ausführung des verschlüsselten Computerprogramms eingegeben wird, wird ein spezielles Ladeprogramm gestartet, wobei dieses das verschlüsselte Computerprogramm mit Hilfe des öffentlichen Schlüssels entschlüsselt und vollständig in einem separaten Speicherbereich des Ziel-Computers speichert. Dabei können mittels des öffentlichen Schlüssels nur solche Computerprogramme entschlüsselt werden, die mit dem „richti- gen" Schlüssel, also dem damit assoziierten privaten Schlüssel, verschlüsselt wurden, wodurch eine nachträgliche Manipulation des Programms oder dessen Austausch gegen eine unauto- risierte Version erkannt wird. Anschließend initiiert das La- deprogramm die Ausführung des entschlüsselten Computerprogramms und beendet sich selber.The document US 2003/0110387 Al Cowie et al. "Initiating execution of a computer program from an encrypted version of a computer program" shows a method and an arrangement for generating and executing an encrypted computer program, wherein the unencrypted computer program is encrypted by means of a private key and, together with a corresponding public key, becomes one When a command to execute the encrypted computer program is entered on the target computer, a special loader is started, which decrypts the encrypted computer program using the public key and stores it completely in a separate memory area of the target computer. In this case, by means of the public key only those computer programs can be decrypted that have been encrypted with the "correct" key, that is to say the private key associated therewith, whereby a subsequent M application of the program or its replacement with an unauthorized detected version is detected. The load program then initiates the execution of the decrypted computer program and ends itself.
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 Funkti- onsweise, die Struktur und die Algorithmen des Computerprogramms ersehen, und zum anderen bietet der so gewonnene Sour- ce-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 Her- stellers des Computerprogramms, so dass verschiedene Methoden eingesetzt werden, um ein „Reverse-Engineering" von Computerprogrammen zu verhindern.During decompilation, often referred to as "reverse engineering", the source code ("source code", "source code") is converted from a compiled computer program ("object code", "byte code"). On the one hand, the recovered source code reveals the functionality, the structure and the algorithms of the computer program, and on the other hand, the source code thus obtained offers the possibility of modifying (manipulating) it, recompiling it This is generally not in the interest of the manufacturer of the computer program, so various methods are used to prevent reverse engineering of computer programs.
Computerprogramme (Anwendungen) werden häufig als eine An- Sammlung von Bibliotheken erstellt und ausgeliefert, die im Umfeld des Betriebssystems „Windows" oft als „DLLs" (DLL = Dynamic Link Library) bezeichnet werden und im Umfeld der Computer programs (applications) are often created and delivered as a collection of libraries, which are often referred to as "DLLs" (DLL) in the environment of the operating system "Windows" and in the environment of
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. De- compiler (fast) vollständig zu Source-Codes wiederhergestellt werden.Programming language JAVA are usually available in so-called JAR files. These software libraries are usually in a compiled form, but can be restored (almost) completely to source codes using so-called decompilers.
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übergreifenderThe JAVA programming language is a completely object-oriented programming language from the manufacturer SUN Microsystems, which, because of its platform independence, is often used for programming across operating systems
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.Software and for use on the Internet is used. Programs or software libraries in the programming language JAVA are therefore very often affected by unjustified reverse engineering.
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, Variab- len, 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 um- benannt 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 „Debug- ging" 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 decompiling (decompile) make use of the fact that in the byte code, ie in the compiled computer program, a lot of information is available in "plain text", for example function names, variables, line numbers, debug information, etc .. Such information is often referred to as "symbolic information". Ultimately, they ensure that the source code recovered by a decompiler can be easily traced (analyzed) and changed by a knowledgeable programmer. In order to avoid this disadvantage, methods and devices for byte code obfuscation, so-called "obfuscators" (English: obfuscation = obfuscation), are used in these methods, which are often called "byte code Obfuscation" are denoted, the symbolic information not required for the runnability of the byte code is removed as far as possible (this relates, for example, line numbers and debug information) and the remaining symbolic information is obfuscated, for example by renaming variables and functions , Although such a protected byte code is still convertible by a decompiler into a source code, but the result is difficult to evaluate. The Nach- Part of the byte-code obfuscation lies in the fact that "debugging" of the bytecode processed in this way is practically no longer possible.Furthermore, with the JAVA programming language, a special means of speech, the so-called JAVA reflection API, can not be used The JAVA Reflection API is a means of language in which, during runtime of a computer program, computer program properties are analyzed by the computer program and used to alter the program flow or even to change the computer program itself. Since such an analysis inter alia analyzes function names and variable names, the JAVA Reflection API can only be used with such computer programs or computer program parts (in JAVA one also speaks of "classes") which are not represented by a byte code. Obfuscation are protected.
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 (Algo- rithmus) verschlüsselt, so dass ein Decompiler keinen „lesbaren" Byte-Code mehr vorfindet. Da aber auch eine Ausführungsinstanz (Betriebssystem bzw. - bei der JAVA-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. But since an execution instance (operating system or - in the JAVA
Programmiersprache - die „JAVA-Virtual-Machine") einen verschlüsselten Byte-Code nicht abarbeiten kann, muss der ver- schlü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.If the programming language - the "JAVA virtual machine" - can not process an encrypted byte code, the encrypted byte code must be decrypted before it is used, so that an encrypted computer program or encrypted class is usually combined with a decryption program, this decryption program decrypts the actual computer program or the actual "JAVA class" just before their use and to the execution instance (eg JVM = JAVA Virtual Machine) passes. However, this method breaks the "platform independence" of the JAVA programming language because the decrypting program together with the encrypted class forms an executable file, called an "executable", which is platform-dependent "Executable." Another disadvantage of this method is that so protected Software libraries can only be executed directly and use in a different environment, for example on a web server (as so-called JAVA Applets) is not possible. This is due to the fact that 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.In summary, the method of byte-code obfuscation provides protection against the analysis and reuse of a decompiled computer program and also ensures the platform independence of computer programs such as JAVA classes and JAVA libraries, but because of the change in the Byte codes, on the one hand, limits the scope for debugging and, on the other, prevents the use of language resources, such as the JAVA Reflection API. On the other hand, the byte code restored in byte-code encryption has the same quality and thus the same possibilities (debug capability, reflection API-capability) as the original byte-code, but this method has the disadvantage Affects that the platform independence is broken and the usability of the computer program is limited, for example, by a use as a so-called "JAVA Applet", in which dynamic program parts are reloaded, is hindered 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 is therefore an object of the present invention to protect computer programs from decompilation and to preserve 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 ge- löst. 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 kryptographi- schen 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 An- Wendung 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 Verfah- rensschritt besonders vorteilhaft ist. Das Verfahren ist auch vorteilhaft auf die Programme bzw. Computerprogrammprodukte anderer Programmiersprachen anwendbar.The object is achieved for the method by the features of independent claim 1 and for the computer program by the features of independent claim 12. The solution provides a method for encrypting and executing a software library, wherein in a first step the software library is encrypted by means of a cryptographic method, in a second step the encrypted software library is transferred to a computer with an execution instance in that a decryption program is transmitted to the computer in a third step, and in a fourth step the encrypted software library is restored by the decryption program, transferred 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. The method steps two and three can also be combined or carried out in the reverse order. Using this technique, the execution entity is supplied with a "full" byte code, which can use methods such as "debugging" or the use of language means such as the "Reflection API." Further, one encrypted by such a method and executed software library can also be used for applications such as the JAVA applets, whereby the combination of the second and the third method step is particularly advantageous there The method is also advantageously applicable to the programs or computer program products of other programming languages.
Die Lösung sieht weiter ein Computerprogrammprodukt zum Ein- satz 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 Programminforma- tionen (Byte-Code) zu, die auch bei einer unverschlüsselten Software-Bibliothek abgearbeitet werden. Durch die Integrati- on 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 methods, wherein the computer program product can be used as a loading unit by an execution instance. In this case, the computer program product has a decryption function for decrypting a software library protected by means of a cryptographic method. Such a computer program product may be used by an execution entity, such as a JAVA virtual machine, instead of and in the same manner as a standard. The execution instance receives the same program information (byte code), which is also processed by an unencrypted software library the computer program product can be used platform independent on all computers and operating systems on which such an execution instance is operated.Also, the integration of the decryption function in the Ladeinstanz for increased 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 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 sicher- gestellt, 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 eineWhen the dummy is transferred to the computer as an unencrypted element of the software library, it is ensured that with the encrypted elements of the software library, the "correct" load instance with the correct decryption function arrives at the computer and is put into operation without further decryption Advantageously, however, the unencrypted charge is transmitted to the computer in compiled form and protected from decompilation before transmission, thereby preventing analysis and manipulation of the decryption function, advantageously providing protection against decomposition of the entire charge, or at least the contained therein decryption function by a
Byte-Code-Verschleierung, weil dadurch die Plattformunabhängigkeit der Ladeinstanz bewahrt wird. 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 ei- ner 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.Byte code obfuscation, because it preserves the platform independence of the charge. If the load instance is used by the execution instance instead of an existing default dummy, the load instance can be addressed in the same way as the default load instance, allowing the execution instance to continue to be used as it is. In this case, the charge density can advantageously also be used for loading unencrypted elements from the software library and / or another, either unencrypted or similarly coded, software library, so that mixed encrypted and unencrypted ones can also be used with one and the same charge instance 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üh- rungsinstanz 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 can be used universally if in each case platform-independent software is used for the software library, for the loading unit and / or for the decryption function. This is especially true if a JAVA library is used for the software library and a JAVA virtual machine is used for the execution instance. At least partially compiled byte code is used for the JAVA library, whereby not only the compiled byte code but also non-compiled resources, for example texts and image information, can be contained in the same software library. If a JAVA class loader is used as the load instance, such protected (encrypted) JAVA classes can be used 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. Ausführungsbeispiele des erfindungsgemäßen Verfahrens werden nachfolgend anhand der Zeichnung erläutert und dienen gleichzeitig der Erläuterung eines erfindungsgemäßen Computerpro- grammprodukts .The control and reuse of software library items is simplified when debug information is used in the software library to be encrypted, with the debug information being restored in the fourth step. It is also advantageous to use unchanged function names and variables as debug information, which also supports the use of a JAVA reflection API. Exemplary embodiments of the method according to the invention are explained below with reference to the drawing and serve at the same time to explain 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.The single figure shows schematically the method steps for encryption, decryption and execution of a software library.
Anhand der Figur 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 Elemen- ten, die zu einer Datei (" .jar-File") zusammengefasst sind.A software library in the JAVA programming language will be considered below with reference to FIG. 1 as an example of the encryption and execution of a software library. 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 SIa mit Hilfe eines gebräuchlichen Verschlüsselungsverfahrens codiert. Im vorliegenden Ausführungs- beispiel 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, in- stalliert 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 SIa using a conventional encryption method. In the present exemplary 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, can 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 provided only in compiled form in order to avoid the misuse of the source code and thus in the 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 ver- schlü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 SIb - 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 Dekompilie- rung der Ladeinstanz der Algorithmus zur Entschlüsselung nicht nachvollzogen werden kann. Da die verwendeteThe decryption program is in this case designed as a load instance, a so-called "class loader" (JAVA class loader), this load instance comprising, on the one hand, the decryption function for restoring the byte code of the encrypted elements of the software library, and secondly, in the same way that the standard class loader from a JAVA virtual machine is used to dynamically load elements of a JAVA software library. Although the decrypting program, that is, in this case, the embossing function-equipped embossing function, may also be transmitted separately from the computer (destination hardware) on which the software library is to be used, this embossing instance will be included in the file in the present embodiment inserted into the elements of the software library - step SIb - and thus de facto a component of the software library. In this case, the charge density is protected by the use of an "obfuscator" according to the method of byte code obfuscation, so that the algorithm for decoding can not be reconstructed by decompiling the charge value
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öglich- keiten 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.For example, if you want to use an insert for an unlimited number of encrypted software libraries, this is a software that has been tested many times and it is not a disadvantage that obfuscation no longer gives you the opportunity to "debug" other disadvantages of the concealment procedure (byte-code Obfuscation), such as the exclusion of the JAVA language element "reflection API", are not relevant here.
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 unit with the decryption function will now be transferred in a further method step S2, S3 to the computer on which the software library is to be used. In the present exemplary embodiment, the software library is a so-called "JAVA applet" which is transmitted to the computer via the Internet and handed over there to the JAVA virtual machine as an execution instance for execution - In a step S4a, Virtual-Machine instructs not to use the already pre-installed JAVA class loader ("Default Class Loader"), but to use the class loader included in the new software library Bypassing software components and using other versions of these software components that come with them is provided for the JAVA programming language.
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 über- prü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 De- bug-Informationen, Variablen-Namen, Funktionsnamen, etc. wiederhergestellt werden. Bei auftretenden Programmfehlern können dabei Fehlermeldungen erzeugt werden, die von dem ausfüh- renden Computer zu einem Computer des Herstellers der Software-Bibliothek übermittelt und dort ausgewertet werden können. 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 Soft- ware-Bibliotheken bzw. unverschlüsselte Elemente in der gleichen Weise behandelt werden, wie es die Standard-Ladeinstanz der Ausführungsinstanz (JAVA-Virtual-Machine) macht. The JAVA class loader is now used to feed the JAVA virtual machine software library elements - step S4c. For each element requested, it is checked whether it is an encrypted or an unencrypted element, whereby the access function (JAVA class loader) is used for decryption when accessing an encrypted element - step S4b. During decryption, the byte code of the respective element is completely restored so that the debug information, variable names, function names, etc. contained in the byte code are also restored. In the event of program errors, error messages can be generated which can be transmitted by the computer running to a computer of the manufacturer of the software library and can be evaluated there. As an alternative to the previously described method of embedding the dummy with the decryption function in the software library file, the software library may also be provided with a reference identifying the location of the "appropriate" dummy in which on the computer on which the software library is to be used, the "matching" Ladeinstanz already exists, a re-transmission of Ladeinstanz, for example via the Internet, be avoided. It also does not necessarily need to be uninstalled after use if unencrypted software libraries are used again, because unencrypted software libraries or unencrypted elements are also treated by the load instance in the same way as the standard Load instance of the execution instance (JAVA Virtual Machine).

Claims

Patentansprüche claims
1. Verfahren zur Verschlüsselung und Ausführung einer Soft- ware-Bibliothek, wobei in einem ersten Schritt (SIa) 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.1. A method for encrypting and executing a software library, wherein in a first step (SIa) 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, restored to the execution instance and executed there is characterized in that as the decryption program, a load instance equipped with a decryption function is used, the load instance being used for loading elements of the software library into the execution instance.
2. Verfahren nach Patentanspruch 1, dadurch gekennzeichnet, dass die Ladeinstanz als unverschlüsseltes Element der Software-Bibliothek zu dem Computer übertragen wird.2. The method according to claim 1, characterized in that the Ladeinstanz is transmitted as unencrypted element of the software library to the computer.
3. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass die Ladeinstanz von der Ausführungsinstanz anstelle einer vorhandenen Standard-Ladeinstanz verwendet wird. 3. The method according to any one of the preceding claims, characterized in that the Ladeinstanz is used by the execution instance instead of an existing standard Ladeinstanz.
4. 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 Soft- ware-Bibliothek verwendet wird.4. The method according to any one of the preceding claims, characterized in that the Ladeinstanz is also used for loading unencrypted elements from the software library and / or another software library.
5. 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.5. The method according to any one of the preceding claims, characterized in that for the software library, the Ladeinstanz and / or for the decryption program each platform-independent software is used.
6. 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.6. The method according to any one of the preceding claims, characterized in that is used as the software library, a JAVA library and as the execution instance of a JAVA virtual machine.
7. Verfahren nach Patentanspruch 6, dadurch gekennzeichnet, dass für die JAVA-Bibliothek zumindest teilweise compilierter Byte-Code verwendet wird.7. The method according to claim 6, characterized in that for the JAVA library at least partially compiled byte code is used.
8. Verfahren nach einem der vorhergehenden Patentansprüche, dadurch gekennzeichnet, dass als die Ladeinstanz ein JAVA-Class-Loader verwendet wird.8. The method according to any one of the preceding claims, characterized in that as the Ladeinstanz a JAVA class loader is used.
9. 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 Decompi- lierung geschützt wird. 9. The method according to any one of the preceding claims, characterized in that the Ladeinstanz is transferred in compiled form to the computer Ü and protected before the third step before decompilation.
10. Verfahren nach Patentanspruch 9, dadurch gekennzeichnet, dass der Schutz vor der Decompilierung durch eine Byte-Code- Verschleierung erfolgt.10. The method according to claim 9, characterized in that the protection takes place before the decompilation by a byte code obfuscation.
11. 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.11. The method according to any one of the preceding claims, characterized in that are used in the encrypted software library debug information, wherein the debug information in the fourth step to be restored.
12. 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.12. Computer program product for use in one of the above methods, wherein the computer program product is usable as a loading instance by an execution instance, characterized in that it has a decryption function for decrypting a software library protected by means of a cryptographic method.
13. Computerprogrammprodukt nach Patentanspruch 12, dadurch gekennzeichnet, dass es durch eine Byte-Code-Verschleierung vor einer Decompilierung geschützt ist,13. Computer program product according to claim 12, characterized in that it is protected by byte-code obfuscation from decompilation,
14. Computerprogrammprodukt nach Patentanspruch 12 oder 13, dadurch gekennzeichnet, dass es in einer plattformunabhängigen Programmiersprache erstellt ist.14. Computer program product according to claim 12 or 13, characterized in that it is created in a platform-independent programming language.
15. 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. 15. 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.
PCT/EP2005/054909 2004-12-17 2005-09-29 Method and device for encoding and for carrying out a software library WO2006063876A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102004061634.5 2004-12-17
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
WO2006063876A1 true WO2006063876A1 (en) 2006-06-22

Family

ID=35500801

Family Applications (1)

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

Country Status (2)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262555A (en) * 2011-08-22 2011-11-30 迈普通信技术股份有限公司 Method and device for loading different versions of JAVA three-party library
CN103218551A (en) * 2013-05-03 2013-07-24 飞天诚信科技股份有限公司 Method for protecting java programs

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999041651A2 (en) * 1998-02-13 1999-08-19 National Computer Board, Acting Through Its R & D Division, The Information Technology Institute Method for protecting bytecode
DE10105053A1 (en) * 2001-02-05 2002-08-29 Hmd Software Ag Method and device for transmitting program codes on the Internet
US20040039926A1 (en) * 2000-10-11 2004-02-26 Lambert Martin Richard Methods of providing java tamperproofing

Family Cites Families (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
US7346781B2 (en) * 2001-12-06 2008-03-18 Mcafee, Inc. Initiating execution of a computer program from an encrypted version of a computer program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999041651A2 (en) * 1998-02-13 1999-08-19 National Computer Board, Acting Through Its R & D Division, The Information Technology Institute Method for protecting bytecode
US20040039926A1 (en) * 2000-10-11 2004-02-26 Lambert Martin Richard Methods 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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262555A (en) * 2011-08-22 2011-11-30 迈普通信技术股份有限公司 Method and device for loading different versions of JAVA three-party library
CN103218551A (en) * 2013-05-03 2013-07-24 飞天诚信科技股份有限公司 Method for protecting java programs
WO2014176950A1 (en) * 2013-05-03 2014-11-06 飞天诚信科技股份有限公司 Method for protecting java programs
US9665730B2 (en) 2013-05-03 2017-05-30 Feitian Technologies Co., Ltd. Method for protecting java program

Also Published As

Publication number Publication date
DE102004061634A1 (en) 2006-06-29

Similar Documents

Publication Publication Date Title
DE69714752C5 (en) USING A HIGH PROGRAMMING LANGUAGE IN A MICROCONTROLLER
DE102008021567B4 (en) Computer system with secure boot mechanism based on symmetric key encryption
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
DE102012215196A1 (en) Protecting application programs from destructive software or malware
EP2193471A1 (en) Method and system for the protection against access to a machine code of a device
EP3403214B1 (en) Method and apparatus for providing a cryptographic security function for the operation of a device
DE102004057490B4 (en) Device and method for processing a program code
EP2510475B1 (en) Hardware device
WO2006063876A1 (en) Method and device for encoding and for carrying out a software library
DE102005046696B4 (en) A method for generating protected program code and method for executing program code of a protected computer program and computer program product
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
EP3497606B1 (en) Individual encryption of control commands
WO2006119928A1 (en) Method for adding functionality to an executable first module of a program package
EP1318451B1 (en) Method to execute a program on a computer
DE102022207883A1 (en) Method for programming a programmable logic controller using an executable control program and programmable logic controller system
EP4064090A1 (en) Provision of data to be protected in a secure execution environment of a data processing system
DE102014113441A1 (en) Protection against software components by means of encryption
DE10336083A1 (en) Method for securing computer programs against unauthorized multiple use
WO2024022830A1 (en) Method for programming a programmable logic controller by means of an executable control programme, and programmable logic controller system
EP1720095B1 (en) Method for protection of an executable first module
EP1105798A1 (en) Method, array and set of several arrays for protecting several programs and/or files from unauthorized access by a process
AT500519A2 (en) METHOD FOR CARRYING OUT INTERPRETABLE COMPUTER PROGRAMS
AT524619A1 (en) Computer-implemented method for authorized execution of software, data processing system, computer program product and computer-readable storage medium

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV LY MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 05807984

Country of ref document: EP

Kind code of ref document: A1