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)