FR2887097A1 - METHOD FOR PROTECTING A SOURCE CODE IN SEMI-INTERPRETED LANGUAGE - Google Patents
METHOD FOR PROTECTING A SOURCE CODE IN SEMI-INTERPRETED LANGUAGE Download PDFInfo
- Publication number
- FR2887097A1 FR2887097A1 FR0505988A FR0505988A FR2887097A1 FR 2887097 A1 FR2887097 A1 FR 2887097A1 FR 0505988 A FR0505988 A FR 0505988A FR 0505988 A FR0505988 A FR 0505988A FR 2887097 A1 FR2887097 A1 FR 2887097A1
- Authority
- FR
- France
- Prior art keywords
- code
- byte
- key
- decrypting
- encrypted
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 23
- 238000004590 computer program Methods 0.000 claims description 7
- 230000008901 benefit Effects 0.000 description 3
- 230000001464 adherent effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
- Facsimiles In General (AREA)
- Facsimile Transmission Control (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Abstract
Procédé de protection d'un code-source en langage semi-interprété. Selon l'invention, ledit code-source (11) étant compilé en un code-octet (12), ledit procédé comprend les étapes consistant à :- chiffrer ledit code-octet (12) par un algorithme de chiffrement,- fournir à une machine utilisatrice (20) dudit code-source (11) le code-octet chiffré (13) et le code-octet d'un chargeur (14) de classes déchiffrant apte à déchiffrer ledit code-octet chiffré (13) au moyen d'une clé (Ks) de déchiffrement disponible sur ladite machine utilisatrice (20).Application à la protection des codes-source contre la reproduction illicite.Method for protecting a source code in semi-interpreted language According to the invention, said source code (11) being compiled into a byte-code (12), said method comprises the steps of: - encrypting said code-byte (12) by an encryption algorithm, - providing a user machine (20) of said source code (11) the encrypted byte code (13) and the byte code of a deciphering class loader (14) capable of decrypting said encrypted code-byte (13) by means of a decryption key (Ks) available on said user machine (20) .Application for the protection of source codes against illegal reproduction.
Description
PROCEDE DE PROTECTION D'UN CODE-SOURCE EN LANGAGE SEMI-METHOD FOR PROTECTING A SOURCE CODE IN SEMI-LANGUAGE
INTERPRETEINTERPRETER
La présente invention concerne un procédé de protection d'un code-source en langage semi-interprété. The present invention relates to a method for protecting a source code in semi-interpreted language.
L'invention trouve une application particulièrement avantageuse dans le domaine de la protection des codes-source en langage semi-interprété contre la reproduction illicite ou leur utilisation non autorisée par un distributeur. The invention finds a particularly advantageous application in the field of the protection of source codes in semi-interpreted language against the illicit reproduction or their unauthorized use by a distributor.
On entend ici par langage semi-interprété un langage reposant sur le principe d'une machine virtuelle et d'un code intermédiaire, ou codeoctet . Référence sera faite plus spécialement au langage Java, bien que l'invention puisse être mise en oeuvre par d'autres langages, tels que Flash de io Macromédia et C# de Microsoft. Here we mean by semi-interpreted language a language based on the principle of a virtual machine and an intermediate code, or codeoctet. Reference will be made more specifically to the Java language, although the invention may be implemented by other languages, such as Macromedia Flash and Microsoft C #.
Avant d'être exécutable, un code-source Java écrit par un développeur est compilé en code-octet ou bytecode , c'est-à-dire en un langage interprétable directement par une machine virtuelle Java (JVM) qui charge ce code en utilisant un chargeur de classes ( Classloader ). Ce chargeur de classes est un composant de la machine virtuelle. Before it can be executed, a Java source code written by a developer is compiled into code-byte or bytecode, that is to say into a language directly interpretable by a Java virtual machine (JVM) that loads this code using a classloader. This class loader is a component of the virtual machine.
Cependant, il est possible de facilement décompiler ce code-octet en utilisant des programmes de décompilation, accessibles sur l'Internet par exemple. Au cours de cette décompilation, certaines informations sont perdues, comme par exemple les commentaires et le nom de variables locales, mais le code-octet lui-même reste lisible par un développeur. However, it is possible to easily decompile this code-byte by using decompiling programs, accessible on the Internet for example. During this decompilation, some information is lost, such as comments and the name of local variables, but the code-byte itself remains readable by a developer.
On comprend alors qu'il est à la portée d'un fraudeur de décompiler le code-octet pour accéder au code-source correspondant, de le copier et éventuellement de le modifier. D'où la possibilité de réaliser des contrefaçons ainsi que des versions pirates en décompilant et en modifiant le code qui sert à vérifier la présence d'une clé de licence. We then understand that it is within the scope of a fraudster to decompile the code-byte to access the corresponding source code, copy it and possibly modify it. Hence the possibility of making counterfeits and pirated versions by decrypting and modifying the code used to verify the presence of a license key.
Pour tenter de limiter la fraude, certains éditeurs d'applications Java ont recours au procédé dit d'obfuscation - par obfuscation d'un code étant entendu l'obscurcissement de ce code afin de le rendre illisible - qui consiste, au moyen de programmes appelés obfuscateurs , à transformer le code- s octet de telle façon qu'il soit isofonctionnel, c'est-à-dire sans changement visible lors d'une exécution correcte du programme, mais moins facile à comprendre après décompilation du fait que toutes les classes, variables, méthodes sont renommées lors de l'obfuscation avec des séquences qui n'ont plus aucun sens pour un lecteur humain (noms du type a , aa , b , io etc). Bien entendu, cette technique n'empêche pas pour autant de décompiler le code-octet, mais la réutilisation du code-octet décompilé est rendue plus délicate. To try to limit fraud, some Java application editors use the so-called obfuscation process - by obfuscating a code being understood the obscuration of this code in order to make it unreadable - which consists, by means of programs called obfuscators, to transform the code-byte in such a way that it is isofunctional, that is to say without any visible change during a correct execution of the program, but less easy to understand after decompilation because all the classes , variables, methods are renamed during obfuscation with sequences that no longer have any meaning for a human reader (names of type a, aa, b, io etc.). Of course, this technique does not preclude decompiling the code-byte, but the reuse of the decompiled byte-code is made more difficult.
Toutefois, même moins lisible, ce code est toujours vulnérable aux pirates et aux contrefacteurs. However, even less readable, this code is still vulnerable to hackers and counterfeiters.
Un autre procédé pour limiter les risques de décompilation du code-octet consiste à utiliser un utilitaire pour compiler directement le code-octet Java en code natif. On obtient ainsi un programme binaire qui pourra être exécuté sur le système d'exploitation pour lequel le code-octet a été compilé en code natif. La décompilation de ce programme exécutable est très difficile puisqu'il s'agit cette fois de décompiler du code-machine. Another method to limit the risk of decompilation of the code-byte is to use a utility to directly compile the Java-byte code in native code. This gives a binary program that can be executed on the operating system for which the byte-code has been compiled in native code. The decompilation of this executable program is very difficult since it is this time to decompile the machine code.
Ces procédés connus visant à limiter l'accès au code-source Java par décompilation du code-octet correspondant présentent cependant un certain nombre d'inconvénients. These known methods for limiting access to Java source code by decompiling the corresponding byte-code, however, have a number of disadvantages.
Le procédé par obfuscation conduit à un code-octet, certes obfusqué, 25 mais toujours décompilable. Le code-source qui en est tiré est seulement plus difficile à comprendre pour un développeur. The obfuscation method leads to a code byte, admittedly obfuscated, but still decompilable. The source code that is derived from it is only harder to understand for a developer.
D'autre part, le renommage systématique des classes, variables, etc, peut également poser des problèmes dans le sens où il rend plus difficile l'interprétation d'une file d'exécution. Ainsi, lorsque l'application part en échec, sur une exception non traitée par exemple, la file d'exécution affichée à la machine virtuelle Java devient assez peu compréhensible à cause des renommages et donc difficilement exploitable quand il s'agit de traquer un bogue notamment. On the other hand, the systematic renaming of classes, variables, etc., can also cause problems in the sense that it makes the interpretation of an execution queue more difficult. Thus, when the application fails, on an untreated exception, for example, the execution queue displayed to the Java virtual machine becomes unclear because of renaming and therefore difficult to exploit when it comes to tracking a bug especially.
Le procédé par compilation vers un code natif, s'il réduit fortement le risque de décompilation, supprime néanmoins un des avantages principaux de l'environnement Java, à savoir sa portabilité. En effet, le code natif est destiné à une version donnée d'un système d'exploitation donné, alors que l'intérêt de Java est de pouvoir exécuter des codes, en fait des codes-octet, sur n'importe quel système sur lequel une machine virtuelle conforme au standard a été installée. Ainsi, si on veut s'appuyer sur ce procédé de protection par code natif, il faut prévoir autant de versions compilées que de systèmes d'exploitation cibles. Cette situation est difficilement gérable pour un éditeur de io logiciels. The process of compiling to a native code, while greatly reducing the risk of decompilation, nevertheless eliminates one of the main advantages of the Java environment, namely its portability. Indeed, the native code is intended for a given version of a given operating system, whereas the interest of Java is to be able to execute codes, in fact byte codes, on any system on which a standard virtual machine has been installed. Thus, if we want to rely on this method of protection by native code, it is necessary to provide as many compiled versions as target operating systems. This situation is difficult to manage for a software publisher.
Aussi, le problème technique à résoudre par l'objet de la présente invention est de proposer un procédé de protection d'un code-source en langage semi-interprété, qui permettrait d'améliorer la protection du code-source contre la décompilation sans perdre le bénéfice de la portabilité du langage semi-interprété utilisé, notamment Java, et sans rendre plus compliqué le dépistage d'erreurs dans le code résultant de l'application du procédé. Also, the technical problem to be solved by the object of the present invention is to propose a method of protecting a source code in semi-interpreted language, which would make it possible to improve the protection of the source code against decompilation without losing the benefit of the portability of the semi-interpreted language used, in particular Java, and without making it more difficult to detect errors in the code resulting from the application of the method.
La solution au problème technique posé consiste, selon la présente invention, en ce que, ledit code-source étant compilé en un code-octet, ledit 20 procédé comprend les étapes consistant à : - chiffrer ledit codeoctet par un algorithme de chiffrement, - fournir à une machine utilisatrice dudit code-source le code-octet chiffré et le code-octet d'un chargeur de classes déchiffrant apte à déchiffrer ledit code-octet chiffré au moyen d'une clé de déchiffrement disponible sur ladite machine utilisatrice. The solution to the technical problem posed is, according to the present invention, in that, said source code being compiled into a byte-code, said method comprises the steps of: - encrypting said codeoctet by an encryption algorithm, - providing to a machine using said source code the encrypted byte-code and the byte-code of a decrypting class loader capable of decrypting said encrypted byte-code by means of a decryption key available on said user machine.
La figure 1 montre un schéma illustratif du procédé de protection conforme à l'invention. Figure 1 shows an illustrative diagram of the protection method according to the invention.
Le procédé selon l'invention présente donc l'intérêt qu'une fois chiffré le code-octet 13 associé au code-source 11 à protéger n'est plus décompilable puisqu'il ne s'agit plus alors d'un code-octet interprétable comme tel par une machine virtuelle Java par exemple. Par contre, après déchiffrement dans la machine 20, le dépistage et la correction de bogues restent possibles sur le code-octet 12 ainsi déchiffré. The method according to the invention therefore has the advantage that once encrypted code byte 13 associated with the source code 11 to be protected is no longer decompilable since it is no longer an interpretable code-byte as such by a Java virtual machine for example. On the other hand, after decryption in the machine 20, the detection and the correction of bugs are possible on the byte-code 12 thus deciphered.
L'exécution du code-octet 12 repose sur l'ajout d'un composant spécifique, appelé ici chargeur 14 de classes déchiffrant, qui a pour fonction de déchiffrer le code-octet chiffré 13 en le chargeant dans la machine virtuelle Java 20. A cet effet, le chargeur 14 de classes déchiffrant retrouve ou accède s à la clé KS de déchiffrement disponible dans la machine 20. The execution of the byte-code 12 is based on the addition of a specific component, referred to herein as a decrypting class loader 14, whose function is to decrypt the encrypted byte-code 13 by loading it into the Java virtual machine 20. A For this purpose, the deciphering class loader 14 finds or accesses the decryption key KS available in the machine 20.
Dans le cas où, comme le prévoit l'invention, ledit algorithme de chiffrement est un algorithme cryptographique symétrique, la même clé KS sert au chiffrement du code-octet 12 par le distributeur 10 du codesource 11 et au déchiffrement par le chargeur 14 de classes déchiffrant du code-octet chiffré io 13 reçu par la machine 20. La clé KS de déchiffrement est, par exemple, stockée dans une mémoire de la machine 20 ou encore fournie par l'utilisateur dans une mémoire enfichable. In the case where, as provided by the invention, said encryption algorithm is a symmetric cryptographic algorithm, the same key KS serves to encode the byte-code 12 by the distributor 10 of the source code 11 and decryption by the class loader 14 The decryption key KS is, for example, stored in a memory of the machine 20 or provided by the user in a plug-in memory.
Le chargeur 14 de classes déchiffrant est lui-même écrit en langage Java et utilisé à la place du chargeur de classes standard. Pour qu'il soit facilement utilisable par la machine 20, son propre code-octet n'est pas chiffré. Cependant, si on veut le protéger lui-même contre la décompilation, l'invention propose, par exemple, que ledit code-octet du chargeur 14 de classes déchiffrant est fourni sous forme obfusquée. The decrypting class loader 14 is itself written in Java language and used instead of the standard class loader. For it to be easily usable by the machine 20, its own code-byte is not encrypted. However, if one wishes to protect it against decompilation, the invention proposes, for example, that said code byte of the deciphering class loader 14 is provided in obfuscated form.
En plus de la protection du code-source 11 contre la décompilation du code-octet 12 associé, le procédé conforme à l'invention permet également de protéger le même code-source contre une utilisation non autorisée par son distributeur 10. In addition to the protection of the source code 11 against the decompilation of the associated byte code 12, the method according to the invention also makes it possible to protect the same source code against unauthorized use by its distributor 10.
Si l'on souhaite que le code-source 11 ne soit utilisable que sur une machine 20 donnée, une première solution consiste en ce que ledit algorithme de chiffrement utilise une clé KS de chiffrement caractéristique d'une machine 20 donnée, et en ce que ledit chargeur 14 de classes déchiffrant est apte à reconstituer ladite clé Ks. If it is desired that source code 11 be usable only on a given machine, a first solution is that said encryption algorithm uses an encryption key KS characteristic of a given machine, and that said decrypting class loader 14 is adapted to reconstruct said key Ks.
Cette solution repose sur le fait que la clé KS de chiffrement, et donc la clé de déchiffrement dans le cadre d'un algorithme symétrique, est rendue fortement adhérente à la machine 20. Dans un mode de réalisation, ladite clé caractéristique est constituée à partir d'une adresse IP de ladite machine. Dans un autre mode de réalisation, ladite clé caractéristique est constituée à partir d'une adresse MAC de ladite machine. La clé est déduite de cette donnée d'adresse (Ks=f(adresselP) par exemple), ou autre, par le distributeur 10 et également par le chargeur 14 de classes déchiffrant de la machine 20 en effectuant un calcul sur cette donnée selon un algorithme f connu des deux parties. This solution is based on the fact that the encryption key KS, and therefore the decryption key in the context of a symmetrical algorithm, is made strongly adherent to the machine 20. In one embodiment, said characteristic key is constituted from an IP address of said machine. In another embodiment, said characteristic key is constituted from a MAC address of said machine. The key is deduced from this address data (Ks = f (adresselP) for example), or other, by the distributor 10 and also by the deciphering class loader 14 of the machine 20 by performing a calculation on this datum according to a algorithm f known to both parties.
Si l'on souhaite que le code-source 11 ne puisse être utilisé que par un seul utilisateur, une deuxième solution consiste en ce que ledit algorithme de chiffrement utilise une clé Ks de chiffrement chiffrée au moyen d'une clé publique Kpublique d'un utilisateur (K's=g(Ks,Kpublique)), et en ce que ledit chargeur 14 de classes déchiffrant est apte à déchiffrer ladite clé K's de chiffrement io chiffrée, au moyen de la clé privée Kprivée de l'utilisateur associée à ladite clé publique Kpubiique (Ks=9-1(K's,Kprivée)). If it is desired that the source code 11 can be used by only one user, a second solution consists in that said encryption algorithm uses an encrypted encryption key Ks by means of a public key Kpublique of a user (K's = g (Ks, Kpublic)), and in that said deciphering class loader 14 is able to decrypt said enciphered encryption key K 'by means of the private key Kprivée of the user associated with said public key Kpubic (Ks = 9-1 (K's, Kprivee)).
Selon cette solution, le code-octet 12 du code-source 11 dont on veut limiter la diffusion est chiffré par le distributeur 10 au moyen d'une clé Ks de chiffrement symétrique générée aléatoirement chez le distributeur 10. Le code-octet 13 ainsi chiffré est fourni à l'utilisateur accompagné de K's qui est la clé Ks de chiffrement elle- même chiffrée au moyen d'une clé publique Kpublique de l'utilisateur selon un algorithme de chiffrement asymétrique. A la réception du code- octet chiffré 13 et de la clé K's de chiffrement chiffrée, le chargeur 14 de classes déchiffrant déchiffre la clé K's de chiffrement au moyen de la clé privée Kprivée de l'utilisateur. A titre d'exemple, ladite clé privée est contenue dans un certificat détenu par ledit utilisateur dans une mémoire enfichable par exemple. Enfin, la clé Ks de chiffrement symétrique, une fois déchiffrée, sert au chargeur 14 de classes déchiffrant à déchiffrer le code-octet 13. According to this solution, the byte code 12 of the source code 11 whose distribution is to be limited is encrypted by the distributor 10 by means of a symmetric encryption key Ks generated randomly at the distributor 10. The code-octet 13 thus encrypted is provided to the user accompanied by K's which is the encryption key Ks itself encrypted by means of a public key Kpublique of the user according to an asymmetric encryption algorithm. Upon receipt of the encrypted byte code 13 and encrypted encryption key K's, the decrypting class loader 14 decrypts the encryption key K's by means of the user's private key Kprivée. By way of example, said private key is contained in a certificate held by said user in a plug-in memory for example. Finally, the symmetric encryption key Ks, once decrypted, is used by the decrypting class loader 14 to decrypt the byte code 13.
Enfin, si l'on souhaite limiter l'utilisation du code-source dans le temps, une troisième solution consiste en ce que ledit algorithme de chiffrement utilise une clé Ks de chiffrement constituée à partir de la date limite d'utilisation dudit code-source Java 11, et en ce que ledit chargeur 14 de classes déchiffrant est apte à reconstituer ladite clé à partir de la date courante. Finally, if it is desired to limit the use of the source code over time, a third solution consists in that said encryption algorithm uses an encryption key Ks constituted from the use-by date of said source code. Java 11, and in that said decrypting class loader 14 is able to reconstruct said key from the current date.
Prenons l'exemple où la date limite pour l'utilisation autorisée du codesource vaut 123456999 unités de temps à partir d'une origine donnée. Le distributeur 10 chiffre le code-octet 12 au moyen de la clé symétrique Ks 123456 et installe dans le chargeur 14 de classes déchiffrant un algorithme indiquant que la clé Ks de déchiffrement est obtenue en tronquant la date courante de ses trois derniers chiffres. Tant que la date courante de la machine peut s'écrire 123456xyz avec xyz 999, le déchiffrement est correctement effectué. Au-delà de la date limite d'utilisation, la clé calculée par le chargeur de classes déchiffrant s'écrira 123457 et le déchiffrement ne pourra plus avoir lieu. Take the example where the deadline for the authorized use of the source code is 123456999 units of time from a given origin. The distributor 10 encrypts the byte-code 12 by means of the symmetric key Ks 123456 and installs in the deciphering class loader 14 an algorithm indicating that the decryption key Ks is obtained by truncating the current date of its last three digits. As long as the current machine date can be written 123456xyz with xyz 999, decryption is correctly performed. Beyond the expiration date, the key calculated by the decrypting class loader will be written as 123457 and decryption will no longer be possible.
L'invention concerne également un dispositif de chiffrement d'un codesource en langage semi-interprété, remarquable en ce que, ledit codesource (11) étant compilé en un code-octet (12), ledit dispositif comprend: - des moyens pour chiffrer ledit code-octet (12) par un algorithme de io chiffrement, - des moyens pour fournir à une machine utilisatrice (20) dudit code-source (11) le code-octet chiffré (13) et le code-octet d'un chargeur (14) de classes déchiffrant apte à déchiffrer ledit code-octet chiffré (13) au moyen d'une clé (KS) de déchiffrement disponible sur ladite machine utilisatrice (20). The invention also relates to a device for encrypting a source code in semi-interpreted language, remarkable in that, said source code (11) being compiled into a byte-code (12), said device comprises: - means for encrypting said code-byte (12) by an encryption algorithm, - means for supplying to a user machine (20) of said source code (11) the encrypted byte-code (13) and the byte-code of a loader ( 14) decrypting classes capable of decrypting said encrypted code-byte (13) by means of a decryption key (KS) available on said user machine (20).
L'invention concerne encore un dispositif de déchiffrement d'un codesource en langage semi-interprété, ledit code-source (11) étant compilé en un code-octet chiffré (13) par un algorithme de chiffrement, remarquable en ce que ledit dispositif de déchiffrement dispose d'une clé (Ks) de déchiffrement dudit code-octet chiffré (13). The invention also relates to a device for decrypting a source code in a semi-interpreted language, said source code (11) being compiled into an encrypted byte-code (13) by an encryption algorithm, remarkable in that said device decryption has a key (Ks) for decrypting said encrypted byte-code (13).
L'invention concerne encore un programme d'ordinateur de chiffrement d'un code-source en langage semi-interprété, ledit code-source (11) étant compilé en un code-octet (12), ledit programme d'ordinateur comprenant des instructions de chiffrement dudit code-octet (12) par un algorithme de chiffrement, et de fourniture du code-octet chiffré (13) et du code- octet d'un chargeur (14) de classes déchiffrant à une machine utilisatrice (20) dudit code-source (11), ledit chargeur (14) de classes déchiffrant étant apte à déchiffrer ledit code-octet chiffré (13) au moyen d'une clé (KS) de déchiffrement disponible sur ladite machine utilisatrice (20), ainsi qu'un programme d'ordinateur de déchiffrementd'un code-source en langage semi-interprété, ledit code- source (11) étant compilé en un code-octet chiffré comprenant des instructions de déchiffrement d'un code octet chiffré reçu à l'aide du code-octet d'un chargeur (14) de classes déchiffrant reçu apte à déchiffrer ledit code-octet chiffré (13) au moyen d'une clé (Ks) de déchiffrement disponible. The invention also relates to a computer program for encrypting a source code in a semi-interpreted language, said source code (11) being compiled into a code-byte (12), said computer program comprising instructions encrypting said byte-code (12) by an encryption algorithm, and providing the encrypted byte-code (13) and the byte-code of a deciphering class loader (14) to a user machine (20) of said code -source (11), said deciphering class loader (14) being able to decrypt said encrypted byte-code (13) by means of a decryption key (KS) available on said user machine (20), and a computer program for decrypting a source code in semi-interpreted language, said source code (11) being compiled into an encrypted byte-code comprising instructions for decrypting an encrypted byte code received with the code -octet of a loader (14) of decrypting classes received able to decipher the said encrypted byte-code (13) by means of an available decryption key (Ks).
Enfin, l'invention concerne la mise à disposition par téléchargement du programme d'ordinateur de déchiffrement selon l'invention. Finally, the invention relates to the provision by download of the decryption computer program according to the invention.
Claims (13)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0505988A FR2887097A1 (en) | 2005-06-14 | 2005-06-14 | METHOD FOR PROTECTING A SOURCE CODE IN SEMI-INTERPRETED LANGUAGE |
PCT/FR2006/050558 WO2006134304A2 (en) | 2005-06-14 | 2006-06-14 | Method for protecting a source code in semi-interpreted language |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0505988A FR2887097A1 (en) | 2005-06-14 | 2005-06-14 | METHOD FOR PROTECTING A SOURCE CODE IN SEMI-INTERPRETED LANGUAGE |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2887097A1 true FR2887097A1 (en) | 2006-12-15 |
Family
ID=36001093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0505988A Pending FR2887097A1 (en) | 2005-06-14 | 2005-06-14 | METHOD FOR PROTECTING A SOURCE CODE IN SEMI-INTERPRETED LANGUAGE |
Country Status (2)
Country | Link |
---|---|
FR (1) | FR2887097A1 (en) |
WO (1) | WO2006134304A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014191965A1 (en) * | 2013-05-30 | 2014-12-04 | Auditmark S.A. | Digital content execution control mechanism |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102007045743A1 (en) * | 2007-09-25 | 2009-04-02 | Siemens Ag | Method and system for protection against access to a machine code of a device |
CN102043932B (en) * | 2010-12-31 | 2012-07-18 | 中国航空工业集团公司第六三一研究所 | Method for preventing Java program from being decompiled |
US8667600B2 (en) * | 2011-06-30 | 2014-03-04 | International Business Machines Corporation | Trusted computing source code escrow and optimization |
CN102360412B (en) * | 2011-09-26 | 2014-07-02 | 飞天诚信科技股份有限公司 | Method and system for protecting Java source code |
WO2014191968A1 (en) | 2013-05-30 | 2014-12-04 | Auditmark S.A. | Web application protection |
SG10201602449PA (en) | 2016-03-29 | 2017-10-30 | Huawei Int Pte Ltd | System and method for verifying integrity of an electronic device |
CN109995526A (en) * | 2019-04-10 | 2019-07-09 | 睿驰达新能源汽车科技(北京)有限公司 | A kind of storage method of key and the call method and device of device, key |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998042098A1 (en) * | 1997-03-14 | 1998-09-24 | Cryptoworks, Inc. | Digital product rights management technique |
US6334189B1 (en) * | 1997-12-05 | 2001-12-25 | Jamama, Llc | Use of pseudocode to protect software from unauthorized use |
EP1278112A1 (en) * | 2001-07-12 | 2003-01-22 | Castify Networks SA | A process for providing access of a client to a content provider server under control of a resource locator server |
US20030059051A1 (en) * | 2001-09-27 | 2003-03-27 | Kabushiki Kaisha Toshiba | Electronic apparatus, wireless communication device, and encryption key setting method |
EP1338971A1 (en) * | 2000-11-24 | 2003-08-27 | NTT DoCoMo, Inc. | Data acquiring method and terminal |
US20040039926A1 (en) * | 2000-10-11 | 2004-02-26 | Lambert Martin Richard | Methods of providing java tamperproofing |
-
2005
- 2005-06-14 FR FR0505988A patent/FR2887097A1/en active Pending
-
2006
- 2006-06-14 WO PCT/FR2006/050558 patent/WO2006134304A2/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1998042098A1 (en) * | 1997-03-14 | 1998-09-24 | Cryptoworks, Inc. | Digital product rights management technique |
US6334189B1 (en) * | 1997-12-05 | 2001-12-25 | Jamama, Llc | Use of pseudocode to protect software from unauthorized use |
US20040039926A1 (en) * | 2000-10-11 | 2004-02-26 | Lambert Martin Richard | Methods of providing java tamperproofing |
EP1338971A1 (en) * | 2000-11-24 | 2003-08-27 | NTT DoCoMo, Inc. | Data acquiring method and terminal |
EP1278112A1 (en) * | 2001-07-12 | 2003-01-22 | Castify Networks SA | A process for providing access of a client to a content provider server under control of a resource locator server |
US20030059051A1 (en) * | 2001-09-27 | 2003-03-27 | Kabushiki Kaisha Toshiba | Electronic apparatus, wireless communication device, and encryption key setting method |
Non-Patent Citations (3)
Title |
---|
"THE CRYPTOLOPE LIVEÜ PRODUCT", IBM CRYPTOLOPE LIVE. GENERAL INFORMATION GUIDE, XX, XX, 1997, pages 1 - 36, XP002908144 * |
CACHEFLOW: "SSL Primer", CACHEFLOW TECHNICAL NOTE, 31 October 2000 (2000-10-31), pages 1 - 16, XP002278809 * |
MARC A KAPLAN: "IBM Cryptolopes, SuperDistribution and Digital Rights Management", IBM RESEARCH CENTER, 30 December 1996 (1996-12-30), XP002132994 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014191965A1 (en) * | 2013-05-30 | 2014-12-04 | Auditmark S.A. | Digital content execution control mechanism |
US10102384B2 (en) | 2013-05-30 | 2018-10-16 | Jscrambler S.A. | Digital content execution control mechanism |
Also Published As
Publication number | Publication date |
---|---|
WO2006134304A2 (en) | 2006-12-21 |
WO2006134304A3 (en) | 2007-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110069905B (en) | Device and method for encrypting and decrypting Springboot program | |
US7512986B2 (en) | Digital rights management system and method | |
FR2887097A1 (en) | METHOD FOR PROTECTING A SOURCE CODE IN SEMI-INTERPRETED LANGUAGE | |
KR101284676B1 (en) | Cryptography-based copy protection system and method for android apps | |
US5991402A (en) | Method and system of dynamic transformation of encrypted material | |
KR101054318B1 (en) | Computer-readable media recording information processing systems and programs | |
US8583938B2 (en) | From polymorphic executable to polymorphic operating system | |
US20080256368A1 (en) | Method and Device For Protecting Digital Content in Mobile Applications | |
CN101872404B (en) | Method for protecting Java software program | |
AU2002233609A1 (en) | Digital rights management system and method | |
KR20070001893A (en) | Tamper-resistant trusted virtual machine | |
CN101957903A (en) | Method and device for protecting class files | |
EP1376367A2 (en) | Verification of integrity of software code executed on an embedded processor | |
US20140047244A1 (en) | Protection of interpreted source code in virtual appliances | |
US8479014B1 (en) | Symmetric key based secure microprocessor and its applications | |
GB2381087A (en) | Method for the secure distribution and use of electronic media | |
US6675297B1 (en) | Method and apparatus for generating and using a tamper-resistant encryption key | |
Bahaa-Eldin et al. | A comprehensive software copy protection and digital rights management platform | |
CA2988357C (en) | Encryption method, corresponding encryption method, devices and programs | |
US20060224894A1 (en) | Methods, devices and computer programs for creating ciphertext, plaintext and a cryptographic key | |
KR20140011021A (en) | Method for preventing unauthorized copying of the android platform-based applications and inserting digital watermarking in order to track the first clone | |
Nützel et al. | How to increase the security of Digital Rights Management systems without affecting consumer’s security | |
US7197144B1 (en) | Method and apparatus to authenticate a user's system to prevent unauthorized use of software products distributed to users | |
CN115994370B (en) | Software encryption processing method, device, equipment and medium | |
WO2022238636A1 (en) | Method for executing a program loaded into the non-volatile memory of a microcontroller forming part of an integrated circuit |