WO2004032329A2 - Software and method for authenticating same - Google Patents

Software and method for authenticating same Download PDF

Info

Publication number
WO2004032329A2
WO2004032329A2 PCT/FR2003/050074 FR0350074W WO2004032329A2 WO 2004032329 A2 WO2004032329 A2 WO 2004032329A2 FR 0350074 W FR0350074 W FR 0350074W WO 2004032329 A2 WO2004032329 A2 WO 2004032329A2
Authority
WO
WIPO (PCT)
Prior art keywords
software
functions
calculation
verification
signature
Prior art date
Application number
PCT/FR2003/050074
Other languages
French (fr)
Other versions
WO2004032329A3 (en
Inventor
Jean-Claude Sarfati
Alain Lecaer
Original Assignee
Canal + Technologies
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 Canal + Technologies filed Critical Canal + Technologies
Priority to AU2003288371A priority Critical patent/AU2003288371A1/en
Publication of WO2004032329A2 publication Critical patent/WO2004032329A2/en
Publication of WO2004032329A3 publication Critical patent/WO2004032329A3/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

Definitions

  • the present invention relates to software and an authentication method thereof, in particular in the field of digital television decoders.
  • an integrity test of an on-board software is generally carried out by calculating, using an external tool, a reference signature representative of this software and in inserting it into this one.
  • the software calculates its own signature and compares this signature with the reference signature. If these signatures are different, the software runs software specific to a defense procedure, otherwise it continues normally. This succession of steps is illustrated in FIG. 1.
  • a known solution consists in taking the principle of the integrity test and combining it with an asymmetric cryptographic algorithm: the reference signature is encrypted with a private key and the result is integrated, in the form of a certificate, into the software. During the control phase, the reference signature is decrypted with an integrated public key to the software before being compared to the reference signature.
  • a second document of known art describes the protection of software against modifications illegitimate from its users. Protection and resistance to manipulation of the software are achieved by using a network of security units, or “guards”, dispersed in a program, which work together. Each of these units is a piece of software capable of performing certain safety-related actions during the execution of the program. The units can be programmed to perform any calculation, for example the calculation of a checksum of another piece of software during its execution, to verify its integrity. These security units can work together and implement a sophisticated protection scheme that allows them to resist attacks better than an isolated unit. Thus, if a program comprises several pieces of software whose integrity is to be protected, several units carrying out such verifications can be used to protect these different pieces.
  • the object of the invention is to overcome such drawbacks.
  • the present invention relates to a method for authenticating software, which comprises the following steps:
  • the verification functions are of two types:
  • the first verification functions which verify, directly or indirectly, the concordance between the signature calculated by the main algorithm and the reference certificate;
  • second verification functions which verify, directly or indirectly, that the result obtained with the calculation functions disseminated in the software corresponds to the expected value.
  • the invention also relates to software which comprises several calculation functions, and at least one verification function, scattered throughout it.
  • the elementary calculation functions used in the method of the invention are not necessarily the same from one execution to another.
  • the execution of the software may, in fact, depend on external parameters or stimuli. Verification functions can be performed at any time during the life of the software. Also, so that a hacker can invalidate the authentication test of the invention, all the functions of verification, which are scattered throughout the software. Certain branches of the software normally not explored during standard operation can be called upon upon receipt of particular stimuli, allowing the execution of verification functions never called before. This makes it even more difficult to invalidate authentication by hackers.
  • FIG. 3 illustrates a variant of the method of the invention.
  • the method of the invention consists in executing authentication algorithms by calculation and verification functions scattered throughout the software to be authenticated. Unlike the methods of the known art, authentication is not performed according to an iterative or linear process, but during the execution of said software. Knowing that a software consists of a set of functions called in sequence, in the invention is inserted into certain functions of this software elementary functions of signature calculation and elementary functions of verification. We then ensure that these insertions do not not interfere with the normal operation of this software, which is within the reach of those skilled in the art.
  • the signature calculation and verification algorithms are located in one or more places of the software, and are executed once during the course of the software, generally during the initialization phase of the latter.
  • the signature calculation is distributed geographically throughout the software, and is executed during the normal execution of the software functions, advantageously during the initialization phase which is a phase of compulsory passage of this software.
  • Such an initialization phase is thus illustrated in FIG. 2 with: x: representing a calculation function, o: representing a verification function,
  • the authentication method of the known art is combined with the above method, that is to say that: on the one hand, the all of the software with the method of the known art, - on the other hand, the integrity of this software is verified with the method of the invention, by verifying the signature obtained by disseminated verification functions.
  • zones A, B and D of a memory made of flash material for example, contain the software to be authenticated.
  • Zone B contains the main software integrity verification algorithm, in accordance with to the process of known art.
  • Zone C contains a certificate which serves as a reference for authentication.
  • the main algorithm contained in zone B calculates the signature of the software on zones A, B and D, excluding the certificate contained in zone C.
  • the calculated signature is memorized, using a code obfuscation technique.
  • the calculation functions F c disseminated in the software are executed during the execution of the software, according to the method of the invention. This calculation relates both to the main algorithm contained in zone B and to the possible defense functions which are also found in this zone B.
  • the verification functions can therefore be of two types:
  • the HASH calculation algorithm called SHAl is used.
  • the latter operates as follows:
  • 1.Fill of file SHA.l is used to calculate a digest of file ("file digest") for a file which is provided as input.
  • file digest a digest of file
  • the file should be treated as a bit string.
  • the length of the file is made up of the number of bits in the file (an empty file has a length of 0). If the number of bits in a file is a multiple of 8, for compacting the file can be represented in hexadecimal.
  • the purpose of file filling is to make the total length of the filled file multiple of 512.
  • SHA.l processes blocks of 512 bits sequentially when it performs the file digest. This summary can be carried out in the following manner.
  • a "1” followed by m “0” followed by a 64-bit integer is appended to the end of the file to produce a filled file of length 512 * n.
  • the 64-bit integer is the length of the original file.
  • the filled file is then treated by SHA.l as n blocks of 512 bits.
  • a file has a length (denoted 1) such as: 1 ⁇ 2 ⁇ 64, before it has entered SHA.l, the file is filled on the right as follows. at. "1" is attached. For example, if the original file is '01010000', it is completed with '010100001', b. the "0" are completed.
  • the number of "0" depends on the original file length.
  • the last 64 bits of the last block of 512 bits are reserved for the length 1 of the original file,
  • the completed file contains 16 * n words for a few n> 0.
  • the completed file is viewed as a sequence of n blocks M (l), M (2), first characters (or bits) of file.
  • O ⁇ t ⁇ 79 operates on three 32-bit words B, C, D and produces a 32-bit word as output
  • K (l), ... K (79) is used in SHA.l. In hexadecimal they are given by:
  • K (t) 8F1BBCDC (40 ⁇ t ⁇ 59)
  • the file digest is calculated using the completed file as described above. This calculation is described using two buffers, each comprising five 32-bit words, and a sequence of 80 32-bit words.
  • the words of the first buffers of 5 words are called A, B, C, D, E.
  • the words of the second 5-word buffers are called HO, Hl, H2, H3 and H4.
  • the words in the 80-word sequence are called ⁇ 0), W (1) .... W (79).
  • a single TEMP word buffer is also used.
  • blocks of 16 words M (l), M (2) ... (n) are processed in order.
  • the processing of each M (i) comprises 80 steps.
  • M (l), (2), M (n) are processed.
  • M (i) we carry out: a. Division of M (i) into 16 words (0),
  • the file digest is the 160-bit string represented by the 5 words:
  • the algorithm described above is broken down into N calculation functions which are disseminated intermittently with portions of the software. N calculation functions are necessary to obtain a single digest of file, that is to say a calculation result according to the invention.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

The invention concerns a method for authenticating a software, comprising the following steps: verifying during the running of the software the conformity of an authentication result obtained by means of at least one computational algorithm and a previously stored result; launching a defence procedure in case of non-conformity, wherein the authentication algorithms are executed by several elementary computing functions and at least one verification function embedded in the entire software, during normal execution of the functions of said software.

Description

LOGICIEL ET PROCEDE D'AUTHENTIFICATION DE CELUI-CI SOFTWARE AND METHOD FOR AUTHENTICATING SAME
DESCRIPTIONDESCRIPTION
DOMAINE TECHNIQUE La présente invention concerne un logiciel et un procédé d'authentification de celui-ci, notamment dans le domaine des décodeurs en télévision numérique .TECHNICAL FIELD The present invention relates to software and an authentication method thereof, in particular in the field of digital television decoders.
ETAT DE LA TECHNIQUE ANTERIEURE Dans les dispositifs de l'art connu, un test d'intégrité d'un logiciel embarqué est généralement réalisé en calculant, à l'aide d'un outil externe, une signature de référence représentative de ce logiciel et en insérant celle-ci dans celui-ci. Pendant la phase d'initialisation du logiciel, celui-ci calcule sa propre signature et compare cette signature avec la signature de référence. Si ces signatures sont différentes le logiciel exécute un logiciel spécifique à une procédure de défense, sinon il continue normalement. Cette succession d'étapes est illustrée sur la figure 1.STATE OF THE PRIOR ART In the devices of the known art, an integrity test of an on-board software is generally carried out by calculating, using an external tool, a reference signature representative of this software and in inserting it into this one. During the software initialization phase, the software calculates its own signature and compares this signature with the reference signature. If these signatures are different, the software runs software specific to a defense procedure, otherwise it continues normally. This succession of steps is illustrated in FIG. 1.
Dans le cas d'une authentification d'un tel logiciel, on souhaite s'assurer de la provenance de celui-ci. Une solution connue consiste à reprendre le principe du test d'intégrité et à le combiner avec un algorithme cryptographique asymétrique : la signature de référence est chiffrée avec une clé privée et le résultat est intégré, sous forme d'un certificat, au logiciel. Pendant la phase de contrôle, la signature de référence est déchiffrée avec une clé publique intégrée au logiciel avant d'être comparée à la signature de référence.In the case of authentication of such software, we want to ensure the origin of it. A known solution consists in taking the principle of the integrity test and combining it with an asymmetric cryptographic algorithm: the reference signature is encrypted with a private key and the result is integrated, in the form of a certificate, into the software. During the control phase, the reference signature is decrypted with an integrated public key to the software before being compared to the reference signature.
Un tel logiciel embarqué peut donc faire l'objet d'attaques de la part de pirates {"hackers") essayant de modifier les fonctionnalités dudit logiciel à leur profit. Une authentification permet de détecter une éventuelle modification non autorisée du logiciel, c'est-à-dire sans certificat associé.Such embedded software can therefore be attacked by pirates ("hackers") trying to modify the functionality of said software to their advantage. An authentication makes it possible to detect any unauthorized modification of the software, that is to say without an associated certificate.
L' authentification repose entièrement sur des parties de logiciel. Les pirates peuvent effectuer des attaques avec plus ou moins de facilité. Ils peuvent essayer de changer la clé publique, inverser le test d'égalité des signatures, court-circuiter l'ensemble de la vérification... Un premier document de l'art connu, référencé [1] en fin de description, décrit un mécanisme d'auto-vérification de logiciel réalisé pour améliorer la résistance de ce logiciel à l' encontre des manipulations. Ce mécanisme consiste en un ensemble de morceaux de logiciels, ou "testeurs", qui testent de manière redondante 1 ' existence éventuelle de changements dans un logiciel exécutable pendant son exécution, et qui mettent en évidence de telles modifications. Chaque "testeur" teste une petite partie de logiciel contiguë, et compare une valeur calculée à une valeur correcte connue. Chaque "testeur" est testé par plusieurs autres. La mise hors service d'un ou plusieurs de ces "testeurs" en les modifiant, est ainsi détectée par les "testeurs" non modifiés. Un second document de l'art connu, référencé [2] en fin de description, décrit la protection d'un logiciel contre des modifications illégitimes de la part de ses utilisateurs . La protection et la résistance aux manipulations du logiciel sont réalisées en utilisant un réseau d'unités de sécurité, ou "guards", disséminées dans un programme, qui travaillent ensemble. Chacune de ces unités est un morceau de logiciel apte à réaliser certaines actions relatives à la sécurité, pendant l'exécution du programme. Les unités peuvent être programmées pour effectuer n'importe quel calcul, par exemple le calcul d'une somme de contrôle (ou "checksum" en langue anglaise) d'un autre morceau de logiciel pendant son exécution, pour vérifier son intégrité. Ces unités de sécurité peuvent travailler ensemble et mettre en œuvre un schéma de protection sophistiqué qui permette de mieux résister aux attaques qu'une unité isolée. Ainsi, si un programme comporte plusieurs morceaux de logiciel dont on veut protéger l'intégrité, plusieurs unités réalisant de telles vérifications peuvent être utilisées pour protéger ces différents morceaux.Authentication relies entirely on software parts. Hackers can carry out attacks with varying degrees of ease. They can try to change the public key, reverse the signature equality test, short-circuit the entire verification ... A first document of known art, referenced [1] at the end of the description, describes a software self-checking mechanism designed to improve the resistance of this software against manipulation. This mechanism consists of a set of pieces of software, or "testers", which redundantly test the possible existence of changes in executable software during its execution, and which highlight such modifications. Each "tester" tests a small piece of contiguous software, and compares a calculated value to a known correct value. Each "tester" is tested by several others. The decommissioning of one or more of these "testers" by modifying them is thus detected by the unmodified "testers". A second document of known art, referenced [2] at the end of the description, describes the protection of software against modifications illegitimate from its users. Protection and resistance to manipulation of the software are achieved by using a network of security units, or "guards", dispersed in a program, which work together. Each of these units is a piece of software capable of performing certain safety-related actions during the execution of the program. The units can be programmed to perform any calculation, for example the calculation of a checksum of another piece of software during its execution, to verify its integrity. These security units can work together and implement a sophisticated protection scheme that allows them to resist attacks better than an isolated unit. Thus, if a program comprises several pieces of software whose integrity is to be protected, several units carrying out such verifications can be used to protect these different pieces.
Mais il semble que les pirates effectuent, sur le logiciel en composant "flash" dont ils ont récupéré l'image, plutôt des analyses d'ingénierie inverse (ou "reverse engineering") "statique", c'est-à- dire par simple examen du logiciel, que des. analyses "dynamiques", c'est-à-dire en s' intéressant directement au logiciel en cours d'exécution.But it seems that the hackers carry out, on the software by composing "flash" of which they recovered the image, rather analyzes of reverse engineering (or "reverse engineering") "static", that is to say by simple software review, only. "dynamic" analyzes, that is to say by taking an interest directly in the software being executed.
Il existe, en effet, de nombreux outils d'investigation, par exemple sur des terminaux informatiques de type PC ("Personal Computers"), qui permettent à de nombreux pirates amateurs d'effectuer des analyses statiques, alors que pour effectuer des analyses dynamiques il est nécessaire de détenir, maîtriser et mettre en œuvre des outils spécifiques. De telles analyses dynamiques sont donc nettement plus délicates à réaliser, et ne sont donc à la portée que de quelques spécialistes.There are, in fact, many investigative tools, for example on computer terminals of the PC ("Personal Computers") type, which allow numerous amateur hackers to carry out static analyzes, while to carry out dynamic analyzes it is necessary to possess, master and implement specific tools. Such dynamic analyzes are therefore much more difficult to carry out, and are therefore only available to a few specialists.
Dans des analyses statiques, étant donné que, dans leurs mises en œuvre habituelles, les morceaux de logiciels liés à l' authentification sont très localisés dans le logiciel en matériau "flash", il est relativement facile de les retrouver et de les modi ier sans avoir à suivre leurs exécutions .In static analyzes, given that, in their usual implementations, the pieces of software linked to authentication are very localized in software in "flash" material, it is relatively easy to find and modify them without have to follow their executions.
L'invention a pour objet de pallier de tels inconvénients .The object of the invention is to overcome such drawbacks.
EXPOSE DE L'INVENTION La présente invention concerne un procédé d'authentification d'un logiciel, qui comprend les étapes suivantes :PRESENTATION OF THE INVENTION The present invention relates to a method for authenticating software, which comprises the following steps:
- vérification au cours du déroulement du logiciel de la concordance d' un résultat de calcul obtenu à l'aide d'au moins un algorithme d'authentification et d'un résultat mémorisé au préalable,- verification during the course of the software of the concordance of a calculation result obtained using at least one authentication algorithm and a previously stored result,
-lancement d'une procédure de défense s'il n'y a pas concordance, caractérisé en ce que les algorithmes d'authentification sont exécutés par plusieurs fonctions élémentaires de calcul et au moins une fonction de vérification disséminées dans l'ensemble du logiciel, au fil de l'exécution normale des fonctions de ce logiciel . Avantageusement, ces étapes sont mises en œuvre pendant la phase d'initialisation du logiciel. Dans une variante de réalisation, ce procédé comprend des étapes préalables de :launching of a defense procedure if there is no agreement, characterized in that the authentication algorithms are executed by several elementary calculation functions and at least one verification function disseminated throughout the software, during normal execution of the functions of this software. Advantageously, these steps are implemented during the software initialization phase. In an alternative embodiment, this method comprises preliminary steps of:
- calcul de la signature du logiciel par un algorithme principal, - comparaison de la concordance de cette signature à un certificat de référence,- calculation of the software signature by a main algorithm, - comparison of the concordance of this signature with a reference certificate,
- lancement d'une procédure de défense s'il n'y a pas concordance .- launch of a defense procedure if there is no match.
Dans cette variante, les fonctions de vérification sont de deux types :In this variant, the verification functions are of two types:
- des premières fonctions de vérification qui vérifient de façon directe ou indirecte, la concordance entre la signature calculée par l'algorithme principal et le certificat de référence; - des secondes fonctions de vérification qui vérifient, de façon directe ou indirecte, que le résultat obtenu avec les fonctions de calcul disséminées dans le logiciel correspond à la valeur attendue.- the first verification functions which verify, directly or indirectly, the concordance between the signature calculated by the main algorithm and the reference certificate; - second verification functions which verify, directly or indirectly, that the result obtained with the calculation functions disseminated in the software corresponds to the expected value.
L'invention concerne également un logiciel qui comprend plusieurs fonctions de calcul, et au moins une fonction de vérification, disséminées dans l'ensemble de celui-ci.The invention also relates to software which comprises several calculation functions, and at least one verification function, scattered throughout it.
Les fonctions de calcul élémentaires mises à contribution dans le procédé de l'invention ne sont pas nécessairement les mêmes d'une exécution à l'autre. L'exécution du logiciel peut, en effet, dépendre de paramètres ou de stimuli externes . Les fonctions de vérification peuvent être exécutées à tout moment au long de la vie du logiciel. Aussi, pour qu'un pirate puisse invalider le test d'authentification de 1 ' invention, il f ut supprimer toutes les fonctions de vérification, qui sont disséminées dans le logiciel. Certaines branches du logiciel normalement non explorées lors d'un fonctionnement standard peuvent être mises à contribution sur réception de stimuli particuliers, permettant l'exécution de fonctions de vérification jamais appelées auparavant. Ceci rend encore plus difficile l'invalidation de 1' authentification par des pirates.The elementary calculation functions used in the method of the invention are not necessarily the same from one execution to another. The execution of the software may, in fact, depend on external parameters or stimuli. Verification functions can be performed at any time during the life of the software. Also, so that a hacker can invalidate the authentication test of the invention, all the functions of verification, which are scattered throughout the software. Certain branches of the software normally not explored during standard operation can be called upon upon receipt of particular stimuli, allowing the execution of verification functions never called before. This makes it even more difficult to invalidate authentication by hackers.
BRÈVE DESCRIPTION DES DESSINS - La figure 1 illustre un test d'intégrité de 1 ' art connu.BRIEF DESCRIPTION OF THE DRAWINGS - Figure 1 illustrates an integrity test of known art.
- La figure 2 illustre le procédé de l 'invention.- Figure 2 illustrates the process of the invention.
- La figure 3 illustre une variante du procédé de l'invention.- Figure 3 illustrates a variant of the method of the invention.
DESCRIPTION DÉTAILLÉE DE MODES DE RÉALISATIONDETAILED DESCRIPTION OF EMBODIMENTS
Le procédé de l'invention consiste à faire exécuter des algorithmes d'authentification par des fonctions de calcul et de vérification disséminées dans l'ensemble du logiciel à authentifier. Contrairement aux procédés de l'art connu, 1 'authentification n'est pas exécutée selon un processus itératif ou linéaire, mais au cours de 1 ' exécution dudit logiciel . En sachant qu'un logiciel est constitué d'un ensemble de fonctions appelées en séquence, dans 1 * invention on insère dans certaines fonctions de ce logiciel des fonctions élémentaires de calcul de signature et des fonctions élémentaires de vérification. On s'assure alors que ces insertions ne perturbent pas le fonctionnement normal de ce logiciel, ce qui est à la portée de l'homme de métier.The method of the invention consists in executing authentication algorithms by calculation and verification functions scattered throughout the software to be authenticated. Unlike the methods of the known art, authentication is not performed according to an iterative or linear process, but during the execution of said software. Knowing that a software consists of a set of functions called in sequence, in the invention is inserted into certain functions of this software elementary functions of signature calculation and elementary functions of verification. We then ensure that these insertions do not not interfere with the normal operation of this software, which is within the reach of those skilled in the art.
Dans une mise en œuvre habituelle, les algorithmes de calcul de signature et de vérification sont localisés en un ou plusieurs endroits du logiciel, et sont exécutés une fois au cours du déroulement du logiciel, généralement pendant la phase d'initialisation de celui-ci.In a usual implementation, the signature calculation and verification algorithms are located in one or more places of the software, and are executed once during the course of the software, generally during the initialization phase of the latter.
Dans la mise en œuvre de l'invention, le calcul de signature est réparti géographiquement dans l'ensemble du logiciel, et est exécuté au fil de l'exécution normale des fonctions du logiciel, avantageusement pendant la phase d'initialisation qui est une phase de passage obligé de ce logiciel. Une telle phase d'initialisation est ainsi illustrée sur la figure 2 avec : x : représentant une fonction de calcul, o : représentant une fonction de vérification,In the implementation of the invention, the signature calculation is distributed geographically throughout the software, and is executed during the normal execution of the software functions, advantageously during the initialization phase which is a phase of compulsory passage of this software. Such an initialization phase is thus illustrated in FIG. 2 with: x: representing a calculation function, o: representing a verification function,
Sur cette figure sont illustrés différents chemins possibles (ici au nombre de trois : chemins 10, 11 et 12) entre le début (point 0) et la fin (point F) de cette initialisation. Le passage par l'un ou l'autre de ces chemins dépend de l'état dans lequel se trouve le logiciel en début d'initialisation : première initialisation, choix effectués préalablement ....In this figure are illustrated different possible paths (here three in number: paths 10, 11 and 12) between the start (point 0) and the end (point F) of this initialization. The passage by one or the other of these paths depends on the state in which the software finds itself at the start of initialization: first initialization, choices made beforehand ...
Comme cela apparaît sur la figure 2, certaines fonctions de calcul et de vérification ne sont appelées pendant aucun de ces chemins .As shown in FIG. 2, certain calculation and verification functions are not called during any of these paths.
Pour ne pas pénaliser les performances du logiciel, en termes de vitesse d'exécution et de taille, il n'est pas possible d'intégrer une fonction élémentaire de calcul ou de vérification dans .chaque fonction du logiciel. On choisit donc un nombre de telles fonctions de calcul ou de vérification disséminées dans le logiciel pour pouvoir mener à bien le calcul nécessaire à l'obtention d'une signature dans un temps raisonnable selon l'algorithme de calcul retenu.In order not to penalize the performance of the software, in terms of execution speed and size, it is not possible to integrate a basic calculation or verification function in. software function. We therefore choose a number of such calculation or verification functions disseminated in the software in order to be able to carry out the calculation necessary to obtain a signature in a reasonable time according to the chosen calculation algorithm.
Dans le procédé de l'invention, on s'assure que les fonctions de calcul ont bien terminé leur calcul avant que les fonctions de vérification n'entrent en œuvre.In the method of the invention, it is ensured that the calculation functions have indeed completed their calculation before the verification functions are implemented.
On vérifie donc expérimentalement à partir de quel moment, en fonction des différentes possibilités de déroulement du logiciel, les fonctions de vérification peuvent être rendues actives.We therefore verify experimentally from what point, depending on the different possibilities for running the software, the verification functions can be made active.
Dans une variante de réalisation du procédé de 1 ' invention, on combine le procédé d'authentification de l'art connu, et le procédé ci- dessus, c'est-à-dire que : - d'une part, on vérifie la totalité du logiciel avec le procédé de 1 ' art connu, — d'autre part, on vérifie l'intégrité de ce logiciel avec le procédé de l'invention, en vérifiant la signature obtenue par des fonctions disséminées de vérification.In an alternative embodiment of the method of the invention, the authentication method of the known art is combined with the above method, that is to say that: on the one hand, the all of the software with the method of the known art, - on the other hand, the integrity of this software is verified with the method of the invention, by verifying the signature obtained by disseminated verification functions.
Ainsi, comme illustré sur la figure 3, si les zones A, B et D d'une mémoire en matériau flash, par exemple, contiennent le logiciel à authentifier.Thus, as illustrated in FIG. 3, if zones A, B and D of a memory made of flash material, for example, contain the software to be authenticated.
Des fonctions de calcul Fc et des fonctions de vérification Fv sont disséminées dans ces zones.Computation functions F c and verification functions F v are scattered in these areas.
La zone B contient l'algorithme principal de vérification d'intégrité du logiciel, conformément au procédé de l'art connu. La zone C contient un certificat qui sert de référence pour 1 ' authentification.Zone B contains the main software integrity verification algorithm, in accordance with to the process of known art. Zone C contains a certificate which serves as a reference for authentication.
Selon le procédé de l'art connu, 1 ' algorithme principal contenu dans la zone B calcule la signature du logiciel sur les zones A, B et D, en excluant le certificat contenu dans la zone C. La signature calculée est mémorisée, en utilisant une technique d'obfuscation de code. On vérifie alors, en utilisant par exemple des fonctions de vérification, la concordance de cette signature avec ledit certificat de référence. S'il n'y a pas concordance, une procédure de défense peut alors être lancée. Après ce calcul qui a porté sur l'ensemble du logiciel, les fonctions de calcul Fc disséminées dans le logiciel sont exécutées au fil de l'exécution du logiciel, selon, le procédé de l'invention. Ce calcul porte, à la fois, sur l'algorithme principal contenu dans la zone B et sur les éventuelles fonctions de défense qui se trouvent également dans cette zone B. Dans cette variante, les fonctions de vérification peuvent donc être de deux types :According to the method of known art, the main algorithm contained in zone B calculates the signature of the software on zones A, B and D, excluding the certificate contained in zone C. The calculated signature is memorized, using a code obfuscation technique. We then verify, by using for example verification functions, the concordance of this signature with said reference certificate. If there is no match, a defense procedure can then be launched. After this calculation which relates to the whole of the software, the calculation functions F c disseminated in the software are executed during the execution of the software, according to the method of the invention. This calculation relates both to the main algorithm contained in zone B and to the possible defense functions which are also found in this zone B. In this variant, the verification functions can therefore be of two types:
- des premières fonctions de vérification qui vérifient de façon directe ou indirecte la concordance entre la signature calculée par 1 ' algorithme principal et la valeur attendue,- first verification functions which verify, directly or indirectly, the agreement between the signature calculated by the main algorithm and the expected value,
— des secondes fonctions de vérification qui vérifient de façon directe ou indirecte que le résultat obtenu avec les fonctions de calcul Fc disséminées dans le logiciel correspond à la valeur attendue. Dans les deux cas, s'il n'y a pas concordance des signatures, une procédure de défense peut alors être lancée.- second verification functions which verify directly or indirectly that the result obtained with the calculation functions F c disseminated in the software corresponds to the expected value. In both cases, if the signatures do not match, a defense procedure can then be launched.
Dans un mode de réalisation préféré de l'invention on utilise l'algorithme de calcul HASH nommé SHAl . Ce dernier opère de la manière suivante :In a preferred embodiment of the invention, the HASH calculation algorithm called SHAl is used. The latter operates as follows:
1.Remplissage de fichier SHA.l est utilisé pour calculer un condensé de fichier ("file digest")pour un fichier qui est fourni comme entrée. Le fichier devrait être considéré comme une chaîne de bits. La longueur du fichier est constituée par le nombre de bits dans le fichier (un fichier vide a une longueur 0) . Si le nombre de bits dans un fichier est un multiple de 8, pour compactage on peut représenter le fichier en hexadécimal . Le but d'un remplissage de fichier est de rendre la longueur totale du fichier rempli multiple de 512. SHA.l traite séquentiellement des blocs de 512 bits lorsqu'il réalise le condensé de fichier. Ce condensé peut-être réalisé de la façon suivante. Comme un résumé, un "1" suivi par m "0" suivis par un entier de 64 bits sont joints à la fin du fichier pour produire un fichier rempli d'une longueur 512* n. L'entier de 64 bits est la longueur du fichier original. Le fichier rempli est alors traité par SHA.l comme n blocs de 512 bits.1.Fill of file SHA.l is used to calculate a digest of file ("file digest") for a file which is provided as input. The file should be treated as a bit string. The length of the file is made up of the number of bits in the file (an empty file has a length of 0). If the number of bits in a file is a multiple of 8, for compacting the file can be represented in hexadecimal. The purpose of file filling is to make the total length of the filled file multiple of 512. SHA.l processes blocks of 512 bits sequentially when it performs the file digest. This summary can be carried out in the following manner. As a summary, a "1" followed by m "0" followed by a 64-bit integer is appended to the end of the file to produce a filled file of length 512 * n. The 64-bit integer is the length of the original file. The filled file is then treated by SHA.l as n blocks of 512 bits.
Si un fichier a une longueur (notée 1) telle que : 1 < 2 Λ 64, avant qu'il ne soit entré dans SHA.l, le fichier est rempli sur la droite de la manière suivante . a. "1" est joint. Par exemple, si le fichier original est '01010000', il est complété à '010100001', b. les "0" sont complétés.If a file has a length (denoted 1) such as: 1 <2 Λ 64, before it has entered SHA.l, the file is filled on the right as follows. at. "1" is attached. For example, if the original file is '01010000', it is completed with '010100001', b. the "0" are completed.
Le nombre de "0" dépend de la longueur originale de fichier. Les derniers 64 bits du dernier bloc de 512 bits sont réservés pour la longueur 1 du fichier original,The number of "0" depends on the original file length. The last 64 bits of the last block of 512 bits are reserved for the length 1 of the original file,
Par exemple, si on suppose que le fichier original est la chaîne de bits : 01100001 01100010 01100011 01100100For example, if we assume that the original file is the bit string: 01100001 01100010 01100011 01100100
0110010101100101
Après l'étape (a) cela donneAfter step (a) this gives
01100001 01100010 01100011 01100100 01100101 1 Puisque 1 = 40, le nombre de bits ci-dessus est 41 et 417 "0" sont joints, ce qui fait que le total est maintenant 448.01100001 01100010 01100011 01100100 01100101 1 Since 1 = 40, the number of bits above is 41 and 417 "0" are joined, so the total is now 448.
Cela donne (en hexadécimal) :This gives (in hexadecimal):
61626364 65800000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 c. On obtient la représentation 2 -mots de61626364 65800000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 c. We get the 2-word representation of
1, le nombre de bits dans le fichier original. Si 1 < 2 Λ 32 alors le mot est composé de "0". On joint ces deux mots au fichier complété.1, the number of bits in the original file. If 1 <2 Λ 32 then the word is made up of "0". These two words are attached to the completed file.
Par exemple, on suppose que le fichier original est comme dans (b) . Alors 1 = 40 (on note queFor example, assume that the original file is like in (b). Then 1 = 40 (we note that
1 est calculé avant tout remplissage) . La représentation deux mots de 40 est (en hexadécimal) :1 is calculated before any filling). The representation two words of 40 is (in hexadecimal):
00000000 00000028. En conséquence le fichier complété00000000 00000028. Consequently the completed file
(en hexadécimal) :(in hexadecimal):
61626364 65800000 00000000 00000000 00000000 00000000 00000000 0000000061626364 65800000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000028 Le fichier complété contient 16 * n mots pour quelques n > 0. Le fichier complété est regardé comme une séquence de n blocs M(l), M(2), premiers caractères (ou bits) du fichier.00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000028 The completed file contains 16 * n words for a few n> 0. The completed file is viewed as a sequence of n blocks M (l), M (2), first characters (or bits) of file.
2. Fonctions et constantes utilisées .2. Functions and constants used.
Une séquence de fonctions" logiques f (0), f(l) f(79) est utilisée dans SHA.l Chaque f(t), avecA sequence of " logical f (0), f (l) f (79) functions is used in SHA.l Each f (t), with
O≤ t <79 fonctionne sur trois mots de 32 bits B,C,D et produit un mot de 32 bits comme sortie, f (t,B,C,D) est défini comme suit pour des mots B,C,D f(t ; B,C,D)=(B AND C) OR ( (NOT B) AND D) (0 t < 19) f (t ; B,C,D) = B XOR C XOR D (20 ≤ t < =39) f (t ; B,C,D) = (B AND C) ORO≤ t <79 operates on three 32-bit words B, C, D and produces a 32-bit word as output, f (t, B, C, D) is defined as follows for words B, C, D f (t; B, C, D) = (B AND C) OR ((NOT B) AND D) (0 t <19) f (t; B, C, D) = B XOR C XOR D (20 ≤ t <= 39) f (t; B, C, D) = (B AND C) OR
(B AND D) OR (C AND D) (40 < t ≤ 59) f (t,B,C,D) = B XOR C XOR D (60< t <79) . Une séquence de mots constants K(0),(B AND D) OR (C AND D) (40 <t ≤ 59) f (t, B, C, D) = B XOR C XOR D (60 <t <79). A sequence of constant words K (0),
K(l) ,...K(79) est utilisée dans SHA.l. En hexadécimal ils sont donnés par :K (l), ... K (79) is used in SHA.l. In hexadecimal they are given by:
K(t) = 5A827999 (0 ≤ t < 19)K (t) = 5A827999 (0 ≤ t <19)
K(t) - 6ED9EBA1 (20 ≤ t ≤ 39) K(t) = 8F1BBCDC (40 ≤ t < 59)K (t) - 6ED9EBA1 (20 ≤ t ≤ 39) K (t) = 8F1BBCDC (40 ≤ t <59)
K(t) = CA62C1D6) (60 ≤ t ≤ 79). 3. Calcul du condensé de fichierK (t) = CA62C1D6) (60 ≤ t ≤ 79). 3. Calculation of the file digest
Le condensé de fichier est calculé en utilisant le fichier rempli comme décrit ci-dessus. Ce calcul est décrit en utilisant deux buffers, chacun comprenant cinq mots de 32 bits, et une séquence de 80 mots de 32 bits. Les mots des premier buffers de 5 mots sont appelés A,B,C,D,E. Les mots des seconds buffers de 5 mots sont appelés HO, Hl, H2, H3 et H4. les mots de la séquence de 80 mots sont appelés {0), W(1)....W (79) . Un buffer de mot seul TEMP est aussi utilisé.The file digest is calculated using the completed file as described above. This calculation is described using two buffers, each comprising five 32-bit words, and a sequence of 80 32-bit words. The words of the first buffers of 5 words are called A, B, C, D, E. The words of the second 5-word buffers are called HO, Hl, H2, H3 and H4. the words in the 80-word sequence are called {0), W (1) .... W (79). A single TEMP word buffer is also used.
Pour générer le condensé de fichier, des blocs de 16 mots M(l) ,M(2)... (n) sont traités dans l'ordre. Le traitement de chaque M(i) comprend 80 étapes.To generate the file digest, blocks of 16 words M (l), M (2) ... (n) are processed in order. The processing of each M (i) comprises 80 steps.
Avant le traitement de tout bloc, les H sont initialisés comme suit (en hexadécimal) :Before the processing of any block, the Hs are initialized as follows (in hexadecimal):
H0 = 67452301H0 = 67452301
Hl ≈ EFCDAB89 H2 = 98BADCFEHl ≈ EFCDAB89 H2 = 98BADCFE
H3 = 10325476H3 = 10325476
H4 = C3D2E1F0H4 = C3D2E1F0
Maintenant M(l), (2), , M(n) sont traités. Pour traiter M(i) on réalise : a. Division de M (i) en 16 mots (0),Now M (l), (2),, M (n) are processed. To treat M (i) we carry out: a. Division of M (i) into 16 words (0),
W(l) , ..W(15) , où 11(0) est le mot le plus à gauche. b. Pour t ≈ 16 à 79 (t) « SΛl(W(t-3) XOR W (t-8) XOR (t-14) XOR W(t-16) ) . c. A =HO,B = H1,C=H2,D=H3,E=H4. d. Pour t= 0 à 79W (l), ..W (15), where 11 (0) is the leftmost word. b. For t ≈ 16 to 79 (t) “S Λ l (W (t-3) XOR W (t-8) XOR (t-14) XOR W (t-16)). vs. A = HO, B = H1, C = H2, D = H3, E = H4. d. For t = 0 to 79
TEMP = SΛ5(A)+f (t;B,C,D) + E + W(t) + K(t) E = D ; D = C ; C = S Λ 30 (B) : B =A ; A = TEMP e. HO = HO + A, Hl = Hl +B,H2 = H2 + C?H3 ≈H3 + D, H4 = H4 + E. Après traitement de M(n), le condensé de fichier est la chaîne de 160 bits représentée par les 5 mots :TEMP = S Λ 5 (A) + f (t; B, C, D) + E + W (t) + K (t) E = D; D = C; C = S Λ 30 (B): B = A; A = TEMP e. HO = HO + A, Hl = Hl + B, H2 = H2 + C? H3 ≈H3 + D, H4 = H4 + E. After processing M (n), the file digest is the 160-bit string represented by the 5 words:
H0 Hl H2 H3 H4.H0 Hl H2 H3 H4.
Selon l'invention, l'algorithme décrit ci- dessus est décomposé en N fonctions de calculs qui sont disséminées par intermittence avec des portions du logiciel. N fonctions de calcul sont nécessaires pour obtenir un seul condensé de fichier, c'est à dire un résultat de calcul selon l'invention. According to the invention, the algorithm described above is broken down into N calculation functions which are disseminated intermittently with portions of the software. N calculation functions are necessary to obtain a single digest of file, that is to say a calculation result according to the invention.
REFERENCESREFERENCES
[1] [1 ]
"Dynamic Self-Checking Techniques for Improved Tamper Résistance" de Bill Horne, Lesley Matheson, Casey Sheehan et Robert E. Tarjan (présenté dans le cadre du séminaire (" orkshop") DRM ("Digital Rights Management") de l'ACM ("Association for Computing Machinery") en 2001)"Dynamic Self-Checking Techniques for Improved Tamper Résistance" by Bill Horne, Lesley Matheson, Casey Sheehan and Robert E. Tarjan (presented during the ACM ("orkshop") DRM ("Digital Rights Management") seminar ( "Association for Computing Machinery") in 2001)
[2][2]
"Protecting Software Code by Guards" de Hoi Chang et Mikhail D. Attallah (présenté dans le cadre du séminaire ("Workshop") DRM ("Digital Rights Management") de l'ACM ("Association for Computing Machinery") en 2001) "Protecting Software Code by Guards" by Hoi Chang and Mikhail D. Attallah (presented in the framework of the DRM ("Workshop") DRM ("Digital Rights Management") seminar of the ACM ("Association for Computing Machinery") in 2001)

Claims

REVENDICATIONS
1. Procédé d'authentification d'un logiciel, qui comprend les étapes suivantes : - vérification au cours du déroulement du logiciel de la concordance d' n résultat de calcul obtenu à l'aide d'au moins un algorithme d'authentification et d'un résultat mémorisé au préalable,1. Method for authenticating software, which comprises the following steps: - verification during the course of the software of the concordance of n calculation result obtained using at least one authentication algorithm and d '' a result previously saved,
— lancement d'une procédure de défense s'il n'y a pas concordance, caractérisé en ce que les algorithmes d'authentification sont exécutés par plusieurs fonctions élémentaires de calcul et au moins une fonction de vérification disséminées dans l'ensemble du logiciel, au fil de l'exécution normale des fonctions de ce logiciel.- launch of a defense procedure if there is no agreement, characterized in that the authentication algorithms are executed by several elementary calculation functions and at least one verification function disseminated throughout the software, during normal execution of the functions of this software.
2. Procédé selon la revendication 1, dans lequel ces étapes sont mises en œuvre pendant la phase d'initialisation du logiciel.2. Method according to claim 1, in which these steps are implemented during the software initialization phase.
3. Procédé selon la revendication 1, comprenant des étapes préalables de :3. Method according to claim 1, comprising preliminary steps of:
— calcul de la signature du logiciel par un algorithme principal,- calculation of the software signature by a main algorithm,
— comparaison de la concordance de cette signature à un certificat de référence,- comparison of the consistency of this signature with a reference certificate,
— lancement d'une procédure de défense s'il n'y a pas concordance. - launch of a defense procedure if there is no match.
4. Procédé selon la revendication 3, dans lequel les fonctions de vérification sont de deux types :4. Method according to claim 3, in which the verification functions are of two types:
- des premières fonctions de vérification qui vérifient de façon directe ou indirecte la concordance entre la signature calculée par l'algorithme principal et le certificat de référence ;- the first verification functions which verify, directly or indirectly, the agreement between the signature calculated by the main algorithm and the reference certificate;
- des secondes fonctions de vérification qui vérifient de façon directe ou indirecte que le résultat obtenu avec les fonctions de calcul disséminées dans le logiciel correspond à la valeur attendue.- second verification functions which verify directly or indirectly that the result obtained with the calculation functions disseminated in the software corresponds to the expected value.
5. Logiciel, caractérisé en ce qu'il comprend plusieurs fonctions de calcul, et au moins une fonction de vérification, disséminées dans l'ensemble de celui-ci. 5. Software, characterized in that it comprises several calculation functions, and at least one verification function, scattered throughout it.
PCT/FR2003/050074 2002-10-04 2003-10-02 Software and method for authenticating same WO2004032329A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2003288371A AU2003288371A1 (en) 2002-10-04 2003-10-02 Software and method for authenticating same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR02/12326 2002-10-04
FR0212326A FR2845494B1 (en) 2002-10-04 2002-10-04 SOFTWARE AND AUTHENTICATION METHOD THEREOF

Publications (2)

Publication Number Publication Date
WO2004032329A2 true WO2004032329A2 (en) 2004-04-15
WO2004032329A3 WO2004032329A3 (en) 2004-07-15

Family

ID=32011394

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2003/050074 WO2004032329A2 (en) 2002-10-04 2003-10-02 Software and method for authenticating same

Country Status (3)

Country Link
AU (1) AU2003288371A1 (en)
FR (1) FR2845494B1 (en)
WO (1) WO2004032329A2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1857956A2 (en) * 2006-05-09 2007-11-21 Apple Inc. Determining validity of subscription to use digital content
US8769675B2 (en) 2008-05-13 2014-07-01 Apple Inc. Clock roll forward detection

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999013613A1 (en) * 1997-09-05 1999-03-18 Intel Corporation Tamper resistant methods and apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999013613A1 (en) * 1997-09-05 1999-03-18 Intel Corporation Tamper resistant methods and apparatus

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
AUCSMITH D: "TAMPER RESISTANT SOFTWARE: AN IMPLEMENTATION" INFORMATION HIDING. INTERNATIONAL WORKSHOP PROCEEDINGS, XX, XX, 1996, pages 317-333, XP000955677 *
BILL HORNE, LESLEY MATHESON, CAEY SHEEHAN AND ROBERT E. TARJAN: "Dynamic Self-Checking Techniques for Improved Tamper Resistance" T.SANDER (ED.) DRM 2001, LNCS 2320, 10 juin 2002 (2002-06-10), pages 141-159, XP002242929 ISBN: 3-540-43677-4 cité dans la demande *
CHANG H ET AL: "Protecting Software Code by Guards" LECTURE NOTES IN COMPUTER SCIENCE, SPRINGER VERLAG, NEW YORK, NY, US, vol. 2320, 10 juin 2002 (2002-06-10), pages 160-175, XP002245264 ISSN: 0302-9743 cité dans la demande *
COHEN F B: "OPERATING SYSTEM PROTECTION THROUGH PROGRAM EVOLUTION" COMPUTERS & SECURITY. INTERNATIONAL JOURNAL DEVOTED TO THE STUDY OF TECHNICAL AND FINANCIAL ASPECTS OF COMPUTER SECURITY, ELSEVIER SCIENCE PUBLISHERS. AMSTERDAM, NL, vol. 12, no. 6, 1 octobre 1993 (1993-10-01), pages 565-584, XP000415701 ISSN: 0167-4048 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1857956A2 (en) * 2006-05-09 2007-11-21 Apple Inc. Determining validity of subscription to use digital content
EP1857956A3 (en) * 2006-05-09 2010-04-07 Apple Inc. Determining validity of subscription to use digital content
EP3093782A1 (en) * 2006-05-09 2016-11-16 Apple Inc. Determining validity of subscription to use digital content
US10528705B2 (en) 2006-05-09 2020-01-07 Apple Inc. Determining validity of subscription to use digital content
US8769675B2 (en) 2008-05-13 2014-07-01 Apple Inc. Clock roll forward detection

Also Published As

Publication number Publication date
WO2004032329A3 (en) 2004-07-15
FR2845494A1 (en) 2004-04-09
FR2845494B1 (en) 2005-08-19
AU2003288371A1 (en) 2004-04-23
AU2003288371A8 (en) 2004-04-23

Similar Documents

Publication Publication Date Title
EP1570648B1 (en) Method of securing software updates
CA2121410C (en) Device for protecting the keys of a chip card
FR2789829A1 (en) METHOD FOR VERIFYING THE USE OF PUBLIC KEYS GENERATED BY AN ON-BOARD SYSTEM
EP1627362A1 (en) Security key generation method
FR2986631A1 (en) DEVICE AND METHOD FOR GENERATING A MESSAGE AUTHENTICATION CODE
EP2958040B1 (en) Method and device for encoding source files for the secure delivery of source code
EP2166696B1 (en) protection of encrypted data Integrity using an intermediate cipher state to generate a signature
EP1938503B1 (en) Method for secure transmission of data
FR3059445A1 (en) CHIFFREMENT PROCESS
KR20220014315A (en) Data processing system and method
EP1756696A1 (en) Method for secure software upgrade in a security module
EP2336931B1 (en) Method for signature verification
WO2004032329A2 (en) Software and method for authenticating same
EP1387519A2 (en) Method for protecting an electronic circuit against fault-based attacks
EP1591866B1 (en) Control of execution of an algorithm by an integrated circuit
EP3623979A1 (en) Method for secure storage in a network of an image of a container in a directory of containers
EP3757842A1 (en) Modification of a memory of a secure microprocessor
WO2015197930A1 (en) Method of sharing digital files between several computers, and computer, data storage assembly and digital file sharing system associated therewith
WO2024083849A1 (en) White box encoding
WO2024083855A1 (en) White-box cryptographic keys
FR2947072A1 (en) DIGITAL RIGHTS MANAGEMENT SYSTEM USING A DIVERSIFIED CONTENT PROTECTION PROCESS
FR3050044A1 (en) METHOD FOR AUTOMATICALLY CHECKING A TARGET COMPUTING FILE RELATIVE TO A REFERENCE COMPUTING FILE
WO2024133604A1 (en) Method for securing the input of the digits of a personal identification code and corresponding device
EP3745638A1 (en) Methods for implementation and obfuscation of a cryptographic algorithm with secret data key
EP2521984B1 (en) Method for protecting contents and multimedia services

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NI NO NZ OM PH PL PT RO RU SC SD SE SG SK SL 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: A2

Designated state(s): GH GM KE LS MW MZ 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 IT LU MC NL 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
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: CONSTATATION DE LA PERTE D UN DROIT CONFORMEMENT AE LA REGLE 69(1) CBE (COMMUNICATION DU 23-08-2005, OEB FORM 1205A)

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP