Brevet FR2941114A1 — publié le 20100716

PROCEDE ET MODULE DE RENOUVELLEMENT DU CODE D'UN ALGORITHME CRYPTOGRAPHIQUE, PROCEDE ET MODULE DE GENERATION D'UNE GRAINE, PROCESSEUR DE SECURITE ET SUPPORT D'ENREGISTREMENT POUR CES PROCEDES L'invention concerne un procédé et un module de renouvellement du code, exécutable ou interprétable par un calculateur électronique, d'un algorithme cryptographique. L'invention concerne également un procédé et un module de génération d'une graine utilisée dans ce procédé de renouvellement. L'invention concerne également un processeur de sécurité et un support d'enregistrement d'informations pour la mise en oeuvre de ces procédés. Un algorithme cryptographique permet de chiffrer une donnée D à l'aide d'une clé K pour obtenir un cryptogramme D* ou de déchiffrer un cryptogramme D* à l'aide d'une clé K pour obtenir une donnée D en clair. Lorsqu'il est implémenté sur un calculateur électronique, cet algorithme cryptographique correspond à un code exécutable ou interprétable. On dit que le code est exécutable lorsqu'il a été compilé au préalable afin de pouvoir être directement exécuté par le calculateur. On dit que le code est � interprété � lorsqu'il est traduit en instructions directement exécutables par le calculateur au fur et à mesure de son exécution. Cette traduction en instructions exécutables est réalisée par une machine connue sous le terme de � machine virtuelle �, par exemple, dans le langage JAVA� de SUN Microsystems�. Que le code soit exécutable ou interprétable, au plus bas niveau, ce code est constitué par une succession de bits. Parmi cette succession de bits on discerne au moins N constantes numériques indépendantes de la donnée D, de la clé K et du cryptogramme D*. Chaque constante numérique correspond à un opérande ou à un mnémonique d'une instruction du code exécutable ou interprétable. Un opérande est typiquement un paramètre d'une instruction dont la valeur est constante. Au plus bas niveau, une instruction s'écrit en binaire et se présente donc également sous la forme d'une constante numérique dans le code exécutable ou interprétable. Cette instruction correspond à un mnémonique de bas niveau. Par exemple, les procédés de renouvellement du code d'un algorithme cryptographique sont utilisés lorsque qu'on souhaite renforcer le niveau de sécurité d'un système en rendant secret l'algorithme cryptographique. Cet algorithme peut être propriétaire ou dérivé d'une famille d'algorithmes connue tels que DES (Data Encryption Standard) ou AES (Advanced Encryption Standard). Dans ce cas de figure, la sécurité du système dépend du secret de la clé, de l'algorithme et de ses paramètres d'exécution. Pour mieux comprendre les applications des algorithmes cryptographiques et la terminologie associée, on pourra se reporter au document �Applied Cryptography- Second Edition - Bruce Schneier John Wiley & Sons, 1996�. Pour conserver secret l'algorithme cryptographique de nombreuses précautions sont prises. Par exemple, cet algorithme cryptographique est enregistré et exécuté uniquement dans un processeur de sécurité conçu pour rendre difficile toute tentative de cryptanalyse. Ce processeur de sécurité réalise les opérations cryptographiques pour le compte d'autres équipements qui sont moins sécurisés que lui. Toutefois, malgré ces précautions, il arrive que l'algorithme cryptographique soit découvert et rendu public. Cela constitue une sérieuse brèche dans les systèmes sécurisés utilisant cet algorithme cryptographique car le secret des données chiffrées repose dès lors uniquement sur la préservation du secret qui entoure la clé. Dans une telle situation, il est souhaitable de renouveler l'algorithme cryptographique en le remplaçant par un nouvel algorithme cryptographique secret. Ce nouvel algorithme cryptographique secret est appelé I� Les procédés de renouvellement du code de l'algorithme cryptographique sont utilisés pour obtenir le code de l'algorithme cryptographique renouvelé. Plusieurs procédés de renouvellement sont connus. Par exemple, un premier procédé consiste à envoyer, via un réseau de transmission d'informations, le code d'un algorithme cryptographique renouvelé à un processeur de sécurité. Une telle façon de procéder nécessite une bande passante importante sur le réseau. De plus, l'écoute et la cryptanalyse du code transmis sur le réseau peut permettre de découvrir l'algorithme cryptographique renouvelé et donc compromettre la sécurité du système. Un second procédé consiste à enregistrer initialement, dans un même processeur de sécurité, plusieurs codes, appelés � variantes �, d'algorithmes cryptographiques renouvelés. Ensuite, lorsque cela est nécessaire, le code de l'algorithme cryptographique actuellement utilisé est désactivé et l'on active à la place l'exécution du code d'une des variantes préenregistrées. L'activation d'une variante de l'algorithme cryptographique est déclenchée en réponse à la réception d'un message d'activation. Ce second type de procédé ne nécessite pas une bande passante importante pour transmettre le message d'activation puisque ce message d'activation ne contient pas le code de l'algorithme cryptographique renouvelé. De plus, l'écoute et la cryptanalyse du message d'activation reçu par le processeur de sécurité ne permettent pas à eux seuls de découvrir l'algorithme cryptographique renouvelé. Par contre, ce second procédé nécessite plus de ressources mémoires puisqu'il faut enregistrer initialement les différentes variantes de l'algorithme cryptographique dans le processeur de sécurité. Si l'ensemble du code implémenté dans le processeur de sécurité devient connu, chaque variante de l'algorithme cryptographique le devient également. L'invention vise à remédier à au moins l'un de ces inconvénients en proposant un procédé amélioré de renouvellement du code d'un algorithme cryptographique. Elle a donc pour objet un procédé de renouvellement comprenant : - la réception d'une graine, tirée de façon aléatoire, dont la taille, en nombre de bits, est au moins quatre fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques du code de l'algorithme cryptographique, - l'expansion de la graine de façon déterministe pour obtenir une suite de nombres dont la taille, en nombre de bits, est au moins égale au nombre de bits nécessaires pour coder les N constantes numériques de l'algorithme cryptographique, - la génération de N nouvelles constantes numériques à partir de la suite de nombres obtenue, et - le remplacement des N constantes du code de l'algorithme cryptographique par les N nouvelles constantes générées pour obtenir le code d'un algorithme cryptographique renouvelé. Une expansion déterministe est une opération consistant à générer une suite de nombres à partir d'une graine de telle sorte que, à chaque fois que la même graine est utilisée pour initialiser l'expansion, la suite de nombres obtenue est la même. Dans le procédé ci-dessus, la taille de la graine est très inférieure à la taille du code de l'algorithme cryptographique renouvelé. En effet, la taille de l'algorithme renouvelé est au moins supérieure à la taille des N constantes. Ainsi, ce procédé est moins gourmand en bande passante que les procédés où le code complet de l'algorithme est transmis au travers d'un réseau de transmission d'informations. De plus, puisque la graine est tirée de façon aléatoire, l'analyse de la graine reçue n'est pas suffisante à elle seule pour retrouver l'algorithme cryptographique renouvelé. En effet, pour cela, il faut aussi connaître l'algorithme utilisé pour réaliser l'expansion de la graine. Or cet algorithme n'est pas transmis par l'intermédiaire du réseau de transmission d'informations. Ce procédé ne nécessite pas non plus le stockage initial d'une multitude de variantes d'algorithmes cryptographiques. Ainsi, ce procédé exploite moins de ressources mémoires du côté du processeur qui exécute l'algorithme cryptographique. Contrairement aux procédés consistant à activer une variante préenregistrée de l'algorithme cryptographique, la découverte du code exécutée par le processeur de sécurité n'est pas suffisante à elle seule pour déterminer le code de l'algorithme cryptographique renouvelé. Pour cela, il faut aussi connaître la graine reçue. Enfin, la génération et le remplacement des N constantes sont réalisés beaucoup moins fréquemment que l'exécution de l'algorithme cryptographique. Ainsi, la découverte de l'algorithme utilisé pour l'expansion de la graine et pour la génération des N nouvelles constantes numériques est rendue plus difficile. Par exemple, des tentatives de cryptanalyse basées sur l'analyse de courbes de consommation d'énergie, de courbes de rayonnement électromagnétique ou d'autres techniques basées sur des signaux générés par le processeur de sécurité lorsqu'il fonctionne, sont plus difficiles à utiliser. Les modes de réalisation de ce procédé de renouvellement peuvent comporter une ou plusieurs des caractéristiques suivantes : ^ chaque constante numérique correspond soit à un opérande soit à un opérateur mathématique qui, lorsqu'il est remplacé par un nouvel opérateur mathématique, ne modifie pas l'ordre d'exécution des instructions du code de l'algorithme cryptographique ; ^ si la présence d'un code secret au sein d'une première partie d'un message reçu est détectée, alors les données contenues dans une seconde partie prédéterminée de ce message ou d'un message reçu ultérieurement sont utilisées pour construire la graine, et si la présence du code secret au sein de la première partie du message n'est pas détectée alors les données contenues dans les première et secondes parties sont utilisées à d'autres fins que le renouvellement de l'algorithme cryptographique ; ^ si la présence du code secret n'est pas détectée, alors les données contenues dans les première et seconde parties sont utilisées pour vérifier l'intégrité des données contenues dans le ou les messages ; ^ le ou les messages sont des messages ECM (Entitlement Control Message) ou EMM (Entitlement Management Message) ; ^ le remplacement des N constantes de l'algorithme cryptographique par les N nouvelles constantes générées est déclenché en réponse à un événement déclencheur indépendant de la réception de la graine ; ^ la taille de la graine en nombre de bits est au moins dix fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques ; ^ l'expansion déterministe est réalisée à l'aide d'un générateur pseudo-aléatoire initialisé avec la graine reçue ; ^ N est strictement supérieur à deux et, de préférence, supérieur à dix. Ces modes de réalisation du procédé de renouvellement présentent en outre les avantages suivants : - remplacer des opérandes et/ou opérateurs mathématiques du code permet de ne pas modifier l'ordre d'exécution des instructions du code de l'algorithme cryptographique ce qui simplifie la mise en oeuvre de ce procédé de renouvellement ; - l'utilisation d'un code secret pour indiquer qu'une seconde partie d'un message, normalement utilisée à d'autres fins, contient la graine permet de cacher la transmission de cette graine ; - cacher le code secret et la graine dans une redondance cryptographique d'un message permet de transmettre des données valides dans tous les autres champs du message et donc de ne pas modifier le comportement du récepteur même lorsque la redondance cryptographique contient la graine ou le code secret ; - déclencher le remplacement des N constantes en réponse à un événement déclencheur indépendant de la réception de la graine permet de rendre plus difficilement identifiable le message reçu qui contient la graine ; - utiliser une graine dont la taille est au moins dix fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques permet d'économiser encore plus de bande passante sur le réseau. L'invention a également pour objet un module de renouvellement du code de l'algorithme cryptographique comprenant : - un sous-module de réception d'une graine, tirée de façon aléatoire, dont la taille, en nombre de bits, est au moins quatre fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques du code de l'algorithme cryptographique, - un générateur déterministe de nombres initialisable avec la graine pour obtenir une suite de nombres dont la taille, en nombre de bits, est au moins égale au nombre de bits nécessaires pour coder les N constantes numériques de l'algorithme cryptographique, et - un constructeur de code d'algorithme cryptographique apte à : • générer N nouvelles constantes numériques à partir de la suite de nombres obtenue, et • remplacer les N constantes du code de l'algorithme cryptographique par les N nouvelles constantes générées pour obtenir le code d'un algorithme cryptographique renouvelé. L'invention a également pour objet un processeur de sécurité apte à exécuter ou à interpréter le code de l'algorithme cryptographique. Ce processeur de sécurité comprend le module de renouvellement ci-dessus. L'invention a également pour objet un procédé de génération d'une graine destinée à être utilisée par le procédé de renouvellement ci-dessus. Ce procédé comprend : a) le tirage aléatoire d'une graine dont la taille, en nombre de bits, est au moins quatre fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques du code de l'algorithme cryptographique à renouveler, b) la création d'un code d'algorithme de chiffrement correspondant au code de l'algorithme cryptographique renouvelé obtenu à l'aide du procédé de renouvellement lorsque la graine reçue est celle tirée lors de l'étape a), c) la vérification de la robustesse du code de l'algorithme de chiffrement vis-à-vis d'au moins un procédé de cryptanalyse, d) si le code de l'algorithme de chiffrement n'est pas robuste vis-à-vis du procédé de cryptanalyse, alors le retour à l'étape a) et, dans le cas contraire, e) la transmission de la graine tirée aléatoirement à un récepteur apte à mettre en oeuvre le procédé de renouvellement du code de l'algorithme cryptographique. La vérification de la robustesse de l'algorithme de chiffrement correspondant à l'algorithme cryptographique renouvelé permet de n'utiliser que des graines permettant d'obtenir des algorithmes cryptographiques robustes. L'invention a également pour objet un module de génération de la graine comprenant : - un générateur apte à tirer aléatoirement une graine dont la taille, en nombre de bits, est au moins quatre fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques du code de l'algorithme cryptographique à renouveler, et - un sous-module de création d'un code d'algorithme de chiffrement correspondant au code de l'algorithme cryptographique renouvelé obtenu à l'aide du procédé de renouvellement lorsque la graine reçue est celle tirée par le générateur, - un vérificateur de la robustesse du code de l'algorithme de chiffrement vis-à-vis d'au moins un procédé de cryptanalyse, ce vérificateur étant apte à : • inhiber la transmission de la graine tirée aléatoirement vers un récepteur si l'algorithme de chiffrement n'est pas robuste vis-à-vis du procédé de cryptanalyse et, dans le cas contraire, • autoriser la transmission de la graine tirée aléatoirement à un récepteur apte à mettre en oeuvre le procédé de renouvellement du code de l'algorithme cryptographique. Enfin, l'invention a également pour objet un support d'enregistrement d'informations contenant des instructions pour la mise en oeuvre des procédés ci-dessus, lorsqu'elles sont exécutées par un calculateur électronique. L'invention sera mieux comprise à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple non limitatif et faite en se référant aux dessins sur lesquels : - la figure 1 est une illustration schématique d'un système de transmission d'un contenu multimédia embrouillé entre un émetteur et un récepteur, - la figure 2 est une illustration schématique d'une table de conversion utilisée dans l'émetteur et le récepteur du système de la figure 1, - la figure 3 est une illustration schématique du contenu d'une mémoire de l'émetteur du système de la figure 1, - les figures 4 et 5 sont des illustrations schématiques de tables d'indirection utilisées, resepctivement, par l'émetteur et le récepteur du système de la figure 1, - la figure 6 est une illustration schématique du contenu d'une mémoire utilisée par le récepteur du système de la figure 1 ; - la figure 7 est un organigramme d'un procédé de transmission de contenu multimédia embrouillé dans lequel sont mis en oeuvre des phases de renouvellement du code d'un algorithme cryptographique et de génération d'une graine pour renouveler ce code ; - la figure 8 est une illustration schématique d'une suite de nombres 20 obtenue à partir d'un générateur déterministe ; - la figure 9 est une illustration schématique et partielle d'une trame d'informations correspondant à un message ECM (Entitlement Control Message) ; - la figure 10 est un organigramme d'un procédé de transmission de 25 données par un canal caché entre l'émetteur et le récepteur du système de la figure 1. Dans ces figures, les mêmes références sont utilisées pour désigner les mêmes éléments. Dans la suite de cette description, les caractéristiques et fonctions bien 30 connues de l'homme du métier ne sont pas décrites en détail. De plus, la terminologie utilisée est celle des systèmes d'accès conditionnels à des contenus multimédias embrouillés. Pour plus d'informations sur cette terminologie, le lecteur peut se reporter au document suivant : Functional Mode/ of Conditional Access System �, EBU Review-35 Technical European Broadcasting Union, Bruxel, BE, n °266, 21 Décembre 1995. La figure 1 représente un système 2 de transmission d'un contenu multimédia entre un émetteur 4 et une multitude de récepteurs. Les récepteurs sont raccordés à l'émetteur 4 par l'intermédiaire d'un réseau 6 de transmission 40 d'informations. Par exemple, le réseau 6 est un réseau satellitaire auquel les récepteurs sont raccordés par l'intermédiaire de liaisons sans fil. Pour simplifier l'illustration, seul un récepteur 8 a été représenté sur la figure 1. On suppose ici que les autres récepteurs sont identiques au récepteur 8. L'émetteur 4 comprend : - un module cryptographique 10 apte à exécuter des algorithmes cryptographiques tels qu'un algorithme F de chiffrement d'un mot de contrôle CW, - un générateur 12 de message ECM (Entitlement Control Message)/EMM (Entitlement Management Message), - un module 14 de génération d'une graine pour le renouvellement d'un algorithme F-'de déchiffrement d'un cryptogramme CW* du mot de contrôle CW. Le module 10 est également apte à exécuter un algorithme de chiffrement du contenu multimédia à l'aide du mot de contrôle CW pour obtenir un contenu multimédia embrouillé. Des sorties des modules 10 et 12 sont raccordées à un multiplexeur 15. Ce multiplexeur 15 multiplexe le contenu multimédia embrouillé par le module 10 aux messages ECM et EMM générés par le générateur 12 pour obtenir un contenu multimédia multiplexé. Le contenu multimédia multiplexé est diffusé vers les récepteurs par l'intermédiaire du réseau 6. Les modules 10 et 14 et le générateur 12 sont raccordés à une mémoire 16 par l'intermédiaire d'un bus de transmission d'informations. Le module 14 comprend : - un générateur 20 apte à tirer aléatoirement une graine, - un sous-module 22 de création du code exécutable d'un algorithme F' de chiffrement correspondant à un algorithme F"' de déchiffrement renouvelé, et - un vérificateur 24 de robustesse de l'algorithme F' créé par le sous- module 22. Un algorithme de chiffrement correspond à un algorithme de déchiffrement si le cryptogramme D* qu'il crée est déchiffrable à l'aide de l'algorithme de déchiffrement. Dans le cas d'une cryptographie symétrique, cela signifie que l'algorithme de chiffrement est l'inverse de l'algorithme de déchiffrement. Le sous-module 22 comprend : - un générateur déterministe 26 d'une suite de nombres initialisable avec la graine tirée par le générateur 20, et - un constructeur 28 de l'algorithme F' de chiffrement correspondant à l'algorithme F"' de déchiffrement renouvelé. Par exemple, le générateur 26 est un générateur pseudo-aléatoire connu sous l'acronyme PRNG (Pseudo Random Number Generator). Ainsi ici, un nombre tiré de façon � aléatoire � désigne également un nombre tiré de façon pseudo-aléatoire. Le module 14 est réalisé à partir d'un calculateur électronique programmable apte à exécuter des instructions enregistrées sur un support d'enregistrement d'informations. A cet effet, la mémoire 16 comprend les instructions et les données nécessaires à l'exécution du procédé de la figure 7. Le récepteur 8 comprend un décodeur 34 du contenu multimédia multiplexé raccordé à un processeur 36 de sécurité. Le décodeur 34 comprend un démultiplexeur 38 apte à démultiplexer le contenu multimédia multiplexé et un désembrouilleur 40 apte à désembrouiller le contenu multimédia à l'aide du mot de contrôle CW qui lui est fourni par le processeur 36. Le décodeur 34 est raccordé à un écran 42 tel qu'un écran de télévision apte à afficher en clair le contenu multimédia. L'expression � en clair � indique que le contenu multimédia affiché sur l'écran 42 est directement compréhensible par un être humain. Dans ce cas particulier, le processeur 36 est amovible. Il peut donc être connecté au et déconnecté du décodeur 34 de façon réversible. Par exemple, le processeur 36 est une carte à puce. Le processeur 36 comprend : - un module cryptographique 50 apte à exécuter l'algorithme F 1 de 20 déchiffrement du cryptogramme CW*, et - un module 52 de renouvellement de l'algorithme de déchiffrement exécuté par le module 50. Le module 52 comprend un générateur déterministe 54 identique au générateur 26 et un constructeur 56 de l'algorithme de déchiffrement renouvelé 25 et un sous-module 57 de réception d'une graine. Le module 50, le générateur 54 et le constructeur 56 sont raccordés à une mémoire 58. Le processeur 36 est réalisé à partir d'un calculateur électronique programmable apte à exécuter des instructions enregistrées sur un support 30 d'enregistrement d'informations. A cet effet, la mémoire 58 comprend les instructions nécessaires et les données nécessaires à l'exécution du procédé de la figure 7. L'émetteur 4 utilise un algorithme F de chiffrement pour obtenir le cryptogramme CW* du mot de contrôle transmis au récepteur 8 dans un 35 message ECM. Le processeur 36 utilise un algorithme F 1 de déchiffrement pour déchiffrer le cryptogramme CW* afin d'obtenir le mot de contrôle CW en clair qui est ensuite utilisé par le désembrouilleur 40. Ici ces algorithmes de chiffrement et de déchiffrement sont des algorithmes secrets. Un exemple d'algorithmes de chiffrement et de déchiffrement secrets va 40 maintenant être présenté avant de décrire plus en détail le fonctionnement du système 2. Ici, une cryptographie symétrique est utilisée pour réaliser ces algorithmes F et F-1 de chiffrement et de déchiffrement. Par exemple, ces algorithmes sont construits en modifiant l'algorithme cryptographique AES-128 (Advanced Encryption Standard - 128). Dans l'algorithme AES-128 la donnée d'entrée D est codée sur 128 bits et la clé est également codée sur 128 bits. Cet algorithme AES est bien connu de sorte que les détails relatifs à cet algorithme sont omis de cette description. On rappelle simplement que l'algorithme de chiffrement AES-128 comprend dix tours Ti ou � rounds � en anglais, où l'indice i désigne le numéro du tour. Ces tours Ti sont notamment composés des opérations suivantes : - une opération de substitution lors de laquelle chaque octet est remplacé par un autre à partir d'une table de substitution préenregistrée, - une rotation vers la droite d'un certain nombre de pas, - une transformation linéaire lors de laquelle les octets sont combinés avec un polynôme prédéfini par une opération XOR, et - une étape de combinaison des octets de la donnée à chiffrer et de la clé à l'aide d'une opération XOR (� OU EXCLUSIF �). Les opérations du premier tour et du dernier tour peuvent différer légèrement de ce qui vient d'être indiqué précédemment. Le cryptogramme intermédiaire obtenue à l'issu du i-ième tour Ti est notée D*; et le cryptogramme final obtenu après l'exécution complète de l'algorithme de chiffrement est noté D*. Ici, l'algorithme de chiffrement AES-128 est modifié par le fait qu'après chaque tour Ti on applique au cryptogramme intermédiaire D*; une fonction F; secrète. Ensuite, le tour suivant Ti+1 prend comme entrée la donnée F;(D*;) au lieu de la donnée D*;. Ainsi, D*;+1= T;+10 F;(D*;). Autrement dit, après modification, l'algorithme secret F de chiffrement utilisé ici s'écrit de la façon suivante : D* = F(D) = Fi0 o T10 o...o F2 o T2 o F1 o T1(D) où - D est la donnée en clair, - Ti correspond à la composition des opérations exécutées lors du ième tour de l'algorithme de chiffrement AES-128, - F; est la fonction secrète appliquée au cryptogramme intermédiaire D*; obtenue à l'issu du tour Ti, et - o est l'opération composition de fonctions. Les pointillés présents dans la relation ci-dessus signifient que l'on a omis de représenter la formule complète pour simplifier son écriture. Avec les mêmes notations, l'algorithme secret F-1 de déchiffrement s'écrit comme suit : D = F-1(D*) = T1-1 o F1-1 o T2-1 o ... o T10-1 o F10-1(D*) où � -1 � indique qu'il s'agit de l'inverse de la fonction correspondante. Chaque fonction Fi est formée par la composition de huit fonctions élémentaires inversibles fi1 à fi8. Ainsi, la fonction Fi(D*i) s'écrit de la façon suivante : Fi(D*i) = fi8 o fi, o fi6 o fi5 o fi4 o fi3 o fi2 o fil (D*i). Chaque fonction fi] est choisie dans le groupe composé des huit fonctions Vk suivantes : Vo(x,p) = x XOR p Vo(x,p) = x + p Vo(x,p) = x û p V3(x,p)=xx(2xp+1) V4(x,p) = rot_left(x,p mod 8) V5(x,p) = rot_right(x, p mod 8) V6(x,p) = NOT (x XOR p) V7(x,p) = x. x et p sont des paramètres variables de chaque fonction Vk. x et p sont aussi tous les deux des opérandes des fonctions Vk. La fonction � mod 8� est la fonction congruence modulo 8. La fonction rot_left est la fonction qui décale vers la gauche les bits de la donnée x d'un pas égal au résultat de l'opération p mod 8. La fonction rot_right est identique à la fonction rot_left à l'exception que le décalage se fait vers la droite. Les fonctions XOR et NOT sont les fonctions booléennes bien connues. Dans la définition d'une fonction Fi, plusieurs fonctions fi] peuvent être identiques. Le code exécutable de la fonction Vk est enregistré et exécutable en appelant les instructions enregistrées à partir de l'adresse Adk dans la mémoire 16. La section de la mémoire 16 dans laquelle sont enregistrés les codes exécutables des fonctions Vk(x,p) est illustrée plus en détail en regard de la figure 3. Le code exécutable de ces fonctions Vk(x,p) est préenregistré avant toute utilisation de l'émetteur 4. Dans la suite, on note pli la valeur du paramètre p de la fonction fi]. Avec cette notation, la fonction fi] s'écrit comme suit : fii(x) = Vk(x,pii) où les indices k et j sont compris entre 1 et 8. Dans ces conditions, une fonction fi] est entièrement définie dès que l'on connaît l'adresse Adk à laquelle se trouve le code exécutable de la fonction Vk et la valeur du paramètre pli. L'adresse Adk et la valeur du paramètre pli pour chaque fonction fi] sont des constantes numériques que l'on retrouve dans le code de l'algorithme F. Ces constantes numériques sont indépendantes de la donnée D à chiffrer et de la clé K de chiffrement. Ici, le code de l'algorithme F comprend donc quatre- vingts constantes numériques pour définir toutes les fonction fi] et d'autres constantes numériques définissant chacun des tours Ti. L'adresse Adk est codée sur plusieurs octets, par exemple, deux octets. La valeur de chaque paramètre pli est quant à elle codée sur un octet. Dès lors, la définition d'une fonction fi] peut être codée sur trois octets. Toutefois, pour limiter le nombre de bits nécessaires pour coder la définition d'une fonction fi ici, une table 60 (voir figure 2) de conversion est utilisée. Cette table contient une première colonne contenant les huit valeurs possibles d'un identifiant IdV de l'adresse Adk de la fonction Vk. Par exemple, sur la figure 2, les valeurs 0, 1, 2, 3 et 4 de l'identifiant IdV écrites en binaire correspondent, respectivement, aux adresses Ado, Ad1, Ad2, Ad3 et Ad4 à partir desquels les codes exécutables, respectivement des fonctions Vo, V1, V2, V3, et V4, peuvent être appelés. La table 60 est préenregistrée dans la mémoire 16. Grâce à l'utilisation de la table 60, la définition d'une fonction fi] peut être codée sur 11 bits seulement, trois bits pour coder la valeur de l'identifiant IdV et huit bits pour coder la valeur du paramètre pi Dès lors, pour coder la définition d'une fonction F;, il faut au minimum 88 bits puisque chaque fonction F; est le résultat de la composition de huit fonctions fil. Enfin, pour définir l'ensemble des fonctions F; utilisées dans l'algorithme F de chiffrement, il faut donc 880 bits au minimum. La définition de chacune des fonctions fi] utilisées dans l'algorithme F de chiffrement est enregistrée dans une table d'indirection 62. Un exemple de table 62 est représenté sur la figure 4. Cette table 62 comprend pour chaque fonction fi]. - un identifiant, noté ici fi] de la fonction fi] - l'adresse Adk de l'endroit où se trouve le code exécutable de la fonction Vk utilisée dans la définition de la fonction fi], et - la valeur du paramètre pi Par exemple, sur la figure 4, la fonction f1i est définie par l'adresse Ad3 et par l'opérande p11. Cela signifie que la fonction f11 s'écrit de la façon suivante : f11(x) = V3(x,p11)• Pour simplifier la figure 4, les définitions des fonctions fi] qui ont été omises ont été remplacées par des pointillés. Les fonctions fi] sont toutes inversibles. Dans ces conditions, les fonctions Fi-1(D'*;) utilisées dans l'algorithme F-1 de déchiffrement s'écrivent comme suit : Fi-1(D'*;) = fil -1 o fi2-1 o ... o f;$-1(D'*i) De façon similaire à ce qui a été décrit pour l'algorithme de chiffrement, chaque fonction fil est définie dans une table d'indirection 64 enregistrée dans la mémoire 58 du processeur 36. Un exemple de cette table 64 est représenté sur la figure 5. Comme pour la table 62, cette table associe pour chaque fonction fil un identifiant fil de cette fonction, l'adresse Adk où se trouve le code exécutable de l'inverse de la fonction Vk et la valeur de l'opérande pi La figure 6 représente plus en détail une portion de la mémoire 58 dans laquelle sont enregistrées les fonctions Vk-'(x,p). Pour simplifier, on a supposé ici que le code exécutable de la fonction Vk-'(x,p) est enregistré à la même adresse Adk dans la mémoire 58 que celle à laquelle est enregistré le code exécutable de la fonction Vk(x,p) dans la mémoire 16. Avec cette hypothèse, la mémoire 58 contient une table de conversion identique à la table 60. Le fonctionnement du système 2 va maintenant être décrit en regard du procédé de la figure 7. Initialement, une phase 70 de diffusion du contenu multimédia est exécutée. Au début, lors d'une étape 72, l'émetteur 4 génère un mot de contrôle CW. Ensuite, lors d'une étape 74, ce mot de contrôle CW est utilisé pour embrouiller ou chiffrer le contenu multimédia. En parallèle, lors d'une étape 76, le mot de contrôle CW est chiffré par le module 10 en utilisant l'algorithme F pour obtenir le cryptogramme CW*. Une fois le cryptogramme CW* obtenu, toujours lors de l'étape 76, le générateur 12 génère un message ECM contenant ce cryptogramme. Ensuite, lors d'une étape 78, le contenu multimédia embrouillé et le message ECM ainsi que d'éventuels messages EMM sont multiplexés par le multiplexeur 15. Lors d'une étape 80, le contenu multimédia multiplexé ainsi obtenu est diffusé vers l'ensemble des récepteurs par l'intermédiaire du réseau 6. Puis, lors d'une étape 82, le récepteur 8 reçoit le contenu multimédia multiplexé. Lors d'une étape 84, le démultiplexeur 38 démultiplexe ce contenu multimédia multiplexé et transmet le contenu multimédia embrouillé à l'embrouilleur 40 et le message ECM au processeur de sécurité 36. Lors d'une étape 86, le processeur 36 déchiffre le cryptogramme CW* en exécutant l'algorithme F 1 et renvoie à l'embrouilleur 40 le mot de contrôle CW ainsi obtenu en clair. Lors d'une étape 88, le désembrouilleur 40 désembrouille le contenu multimédia embrouillé reçu à l'aide du mot de contrôle CW transmis par le processeur 6 et transmet le contenu multimédia désembrouillé vers l'écran 42. Lors d'une étape 90, le contenu multimédia désembrouillé est affiché en clair sur l'écran 42. Le mot de contrôle CW est modifié à intervalle régulier. L'intervalle pendant lequel le mot de contrôle CW n'est pas modifié est appelé � cryptopériode �. Ainsi, les étapes 72 à 90 sont réitérées pour chaque cryptopériode. Par exemple, une cryptopériode dure moins de 20 secondes et, de préférence, moins de 11 secondes. Lorsque cela est nécessaire, il est procédé à une phase 100 de génération d'une graine utilisable pour renouveler les algorithmes F et F 1. Au début de la phase 100, lors d'une étape 102, le générateur 20 génère une nouvelle graine. La taille, en nombre de bits, de cette graine est au moins quatre fois, et de préférence dix ou vingt fois, inférieure aux 880 bits nécessaires pour coder les constantes numériques définissant les fonctions fi]. Ici, la taille de la graine est de 16 bits. Ces 16 bits sont tirés de façon aléatoire. Par exemple, le tirage aléatoire est initialisé à partir d'un phénomène physique qui se produit sur l'une des interfaces utilisateurs de l'émetteur 4. Par exemple, le tirage aléatoire est initialisé par un déplacement d'une souris. Ensuite, lors d'une étape 104, on procède à une expansion déterministe de la graine pour obtenir une suite de nombres. La taille de cette suite de nombres, en nombre de bits, est au moins égale au nombre de bits nécessaires pour coder les constantes numériques définissant les fonctions fi]. Ici, l'expansion déterministe consiste à générer à partir d'une graine codée sur 16 bits une suite de 880 bits. Pour réaliser cette expansion, le générateur pseudo-aléatoire 26 est initialisé avec la graine obtenue lors de l'étape 102. Ensuite, lors d'une étape 106, on crée le code d'un algorithme F' de chiffrement correspondant à un algorithme F'-' de déchiffrement renouvelé du cryptogramme CW*. Pour cela, on crée une nouvelle table d'indirection Tab' dans laquelle les constantes numériques sont différentes de celles contenues dans la table 62. Plus précisément, lors d'une opération 108, les nouvelles constantes numériques à enregistrer dans la table d'indirection Tab' sont générées. Pour expliquer la génération de ces constantes numériques, on a représenté sur la figure 8 le début de la suite de nombres obtenue après l'étape 104. Cette suite de nombres est ici une suite de nombres écrite en binaire. Il s'agit donc d'une succession de zéro et de un. Cette suite de nombres est divisée en dix segments successifs de 88 bits correspondant respectivement aux fonctions F1, F2, ..., F10. Ces segments sont tous structurés de la même façon. Cette structure est décrite en regard du segment F. Les 24 premiers bits du segment F1 sont divisés en huit sous-segments notés f11, f12, ..., f18. Le reste du segment F1 est divisé en huit segments successifs notés p11 à p18. Chaque sous-segment fil contient la valeur, codée sur 3 bits, de l'identifiant IdV de la fonction Vk. Chaque sous-segment pli contient la valeur du paramètre pli. Le constructeur 28, à partir de la valeur contenue dans les sous-segments fil et en utilisant la table 60 retrouve l'adresse codée sur deux octets correspondant à la valeur de cette identifiant. Ainsi, à partir de la valeur de l'identifiant fil et du paramètre pli, le constructeur 28 génère les deux nouvelles constantes numériques définissant la nouvelle fonction fil. Ce qui vient d'être décrit dans le cas particulier du segment F1 s'applique également aux autres segments F. Ensuite, lors d'une opération 110, les nouvelles constantes numériques générées lors de l'opération 108 sont enregistrées dans la table d'indirection Tab' indépendante de la table 62 mais structurellement identique. Après l'étape 106, lors d'une étape 112, le vérificateur 24 vérifie la robustesse de l'algorithme F' de chiffrement obtenu. Par exemple, il vérifie que l'algorithme F' est robuste vis-à-vis des procédés de cryptanalyse utilisant la fréquence d'apparition de certains motifs de bits dans le cryptogramme. A cet effet, le vérificateur 24 chiffre avec l'algorithme F' une donnée prédéterminée à l'aide d'une clé K prédéterminée pour obtenir un cryptogramme D*. Ensuite, il vérifie la répartition aléatoire des bits à 0 et à 1 dans le cryptogramme D*. A cet effet, les différentes méthodes de vérification décrites dans le document suivant sont utilisées : Federal Information Processing Standard Publication (FIPS) 140-1, 11 janvier 1994, US Departement of Commerce/National Institute of Standard and 15 Technology. Plus précisément, les méthodes de vérifications appliquées ici sont les mêmes que celles décrites au paragraphe 4.11.1 de ce document pour tester la répartition aléatoire des bits dans une suite de bits générée par un générateur pseudo-aléatoire (voir la section � Statistical Random Number Generator Tests � 20 à la page 43 de ce document). Lors de l'étape 112, on réalise également un test d'identité c'est-à-dire que l'on vérifie que le cryptogramme D* n'est pas identique à la donnée D. Pour réaliser ces tests, la clé K choisie peut être celle actuellement utilisée pour réaliser le chiffrement du mot de contrôle CW. 25 Si l'un des tests appliqués lors de l'étape 112 n'est pas satisfait, le procédé retourne à l'étape 102. Dans le cas contraire, il est considéré que la graine utilisée permet de construire un algorithme de chiffrement robuste. Dans ce cas, la nouvelle table d'indirection Tab' ainsi que la graine sont mémorisées dans l'émetteur lors d'une étape 114. Lors de l'étape 114, la graine ainsi 30 générée est également transmise au processeur 36 par l'intermédiaire du réseau 6 sur un canal caché. Toutefois, la table d'indirection Tab' n'est pas utilisée tant qu'un élément déclencheur n'intervient pas. Ensuite, lorsque l'élément déclencheur intervient, on procède à une étape 116 lors de laquelle la table d'indirection 62 est remplacée par la table 35 d'indirection Tab'. Après l'étape 116, le procédé retourne à la phase 70. Dès lors, lors des nouvelles exécutions de cette phase 70, c'est l'algorithme F' de chiffrement renouvelé qui est utilisé à la place de l'ancien algorithme F de chiffrement. Ici, l'élément déclencheur est l'envoi d'un message ECM contenant un 40 code particulier apte à déclencher le renouvellement de l'algorithme de déchiffrement dans le processeur 36. En parallèle de la phase 100, lors d'une phase 120, le processeur 36 exécute un renouvellement de l'algorithme F-' de déchiffrement. Initialement, lors d'une étape 122, le processeur 36 reçoit la graine envoyée lors de l'étape 114 par l'émetteur 4. Ensuite, lors d'une étape 124, cette graine est mémorisée. Cette graine n'est pas utilisée tant que l'élément déclencheur n'intervient pas. Lors d'une étape 126, le processeur 36 acquiert cet élément déclencheur. Par exemple le processeur 36 reçoit le message ECM contenant l'instruction déclenchant un renouvellement de l'algorithme de déchiffrement. Puis, lors d'une étape 128, en réponse à l'acquisition de l'élément déclencheur, le générateur 54 procède à l'expansion déterministe de la graine reçue. L'étape 128 est identique à l'étape 104 de sorte que la suite de nombres obtenue est la même. Ensuite, lors d'une étape 130, le code d'un algorithme F'-' de déchiffrement renouvelé correspondant à l'algorithme F' est construit à partir de cette suite de nombres. Lors d'une opération 132, les nouvelles constantes numériques à enregistrer dans la table 64 sont générées. Ici, cette opération 132 est identique à l'opération 108. Ensuite, lors d'une opération 134 chacune des constantes numériques contenues dans la table 64 d'indirection est remplacée par la nouvelle constante numérique correspondante générée lors de l'étape 132. Ainsi, à l'issu de l'étape 130, le code de l'algorithme F-' a été remplacé par le code de l'algorithme F"'. Ensuite, on retourne à la phase 70. Dès lors, lors des nouvelles exécutions de la phase 70, c'est l'algorithme F'-' de déchiffrement renouvelé qui est utilisé, en lieu et place de l'ancien algorithme F-', pour déchiffrer les cryptogrammes CW*. Un exemple de transmission de la graine de l'émetteur 4 vers le récepteur 8 va maintenant être décrit. Pour cela, on rappelle brièvement, en regard de la figure 9, la structure d'un message ECM. Un message ECM contient un champ 140 contenant le cryptogramme CW* et un champ 142 contenant une signature ou redondance cryptographique appelée MAC. Par exemple, la signature 142 est codée sur 128 bits. Cette signature 142 permet de vérifier l'intégrité du message. Elle est construite en appliquant une fonction de signature prédéterminée sur les autres données du message. Par exemple, la signature MAC est construite en appliquant une fonction de hachage sur les bits des autres données contenues dans le même message ECM et en particulier en prenant en compte les bits du cryptogramme CW*. Dans ce contexte, la réception de la graine et de l'élément déclencheur par le processeur 36 via un canal caché va maintenant être décrite en regard de la figure 10 dans le cas particulier où la graine est codée sur 128 bits. Initialement, le processeur 36, lors d'une étape 150 calcule la signature MACc du message ECM reçu. Pour cela, la même fonction de signature que celle utilisée par l'émetteur 4 est appliquée sur les données du message ECM. Ensuite, lors d'une étape 152, la signature MACc construite est comparée à la signature MACe contenue dans le champ 142 du message ECM. Si ces signatures sont identiques, alors on procède à une étape 154 de traitement du message ECM par le processeur 36. Le traitement consiste en outre à déchiffrer le cryptogramme CW* si les titres d'accès contenus dans la mémoire 58 correspondent aux conditions d'accès contenues dans le message ECM reçu. Dans le cas contraire, lors d'une étape 156, les signatures MACc et MACe sont combinées octet par octet à l'aide d'une opération XOR. Les seize octets correspondant aux résultats de cette combinaison sont enregistrés, respectivement, dans les cases RES[0] à RES[15] d'un résidu. Ensuite, lors d'une étape 158, on vérifie si les octets enregistrés dans les cases d'indice pair du résidu sont égaux à une première valeur prédéterminée. Par exemple, on réalise les comparaisons suivantes pour i allant de 0 à 7 : RES[2xi] = OxA5 où OxA5 est une valeur prédéterminée exprimée en hexadécimal. Dans le cas où toutes les valeurs comparées sont égales, on procède à une étape 160 lors de laquelle les valeurs contenues dans les cases RES[2xi+1] d'indice impair sont enregistrées, respectivement, dans des cases GRAINE[i], pour i allant de 0 à 7. Ensuite, lors de l'étape 160, le message ECM reçu est traité normalement par le processeur 36. Dans le cas où les cases comparées lors de l'étape 158 ne correspond par à la première valeur prédéterminée, on procède à une étape 162 de comparaison des cases RES[2xi] à une deuxième valeur prédéterminée, par exemple, Ox5A pour i allant de 0 à 7. Si toutes les cases comparées sont égales à la valeur Ox5A, alors on procède à une étape 164 lors de laquelle les valeurs contenues dans les cases RES[2xi+1] pour i allant de 0 à 7 sont stockées dans des cases GRAINE[8+i], respectivement. Lors de l'étape 164, le message ECM reçu est également traité normalement par le processeur 36. Dans le cas où les cases comparées lors de l'étape 162 ne sont pas égales à la deuxième valeur prédéterminée, on procède à une étape 166 de comparaison des cases à une troisième valeur prédéterminée, par exemple 0x00, pour i allant de 0 à 7. Si toutes les cases comparées lors de l'étape 166 correspondent à la troisième valeur prédéterminée, alors, lors d'une étape 168, le message ECM est traité. De plus, le fait de procéder à l'étape 168 correspond l'acquisition de l'élément déclencheur. Autrement dit, l'étape 168 correspond à l'étape 126 du procédé de la figure 7. Ainsi, l'étape 168, autorise la poursuite du renouvellement de l'algorithme cryptographique, dans le processeur 36, comme décrit en regard de la phase 120 de la figure 7. Dans le cas contraire, cela signifie que le message ECM reçu est erroné et, lors d'une étape 170, le processeur 36 le signale et le message ECM n'est pas traité. Le procédé d'émission sur un canal caché de la graine ou de l'élément déclencheur se déduit du procédé de réception décrit en regard de la figure 10. Celui ne sera donc pas décrit plus en détail ici. De nombreux autres modes de réalisation sont possibles. Par exemple, le processeur 36 peut être intégré de façon irréversible au désembrouilleur 40 ou au décodeur 34. Le processeur 36 peut également être un module logiciel modifié pour être plus résistant aux tentatives de cryptanalyse que d'autres parties des logiciels du décodeur 34. Le réseau 6 peut être un réseau filaire. Le réseau 6 peut être également un réseau à commutation de paquets tel que le réseau Internet. Dans le cas particulier décrit ici, les mémoires 16 et 58 contiennent le code exécutable des fonctions Vk. Ce code est directement exécutable par les modules 10 et 50. En variante, ces codes exécutables sont remplacés par des codes interprétables des fonctions Vk. Dans ce cas, les modules 10 et 50 comportent des interpréteurs, respectivement 180 et 182 (voir figure 1) aptes à interpréter ces codes. Ainsi, dans cette variante, les modules cryptographiques comprennent des interpréteurs aptes à interpréter le code de l'algorithme renouvelé construit par le constructeur. Dans un autre mode de réalisation, le code exécutable des fonctions Vk est remplacé par le code source de ces mêmes fonctions. Dans ce cas, les constructeurs 28 et 56 contiennent respectivement des compilateurs 184 et 186 (voir figure 1). De plus lors de l'étape de construction de l'algorithme renouvelé, ces compilateurs 184 et 186 sont utilisés pour compiler le code source correspondant aux fonctions Vk utilisées pour définir les fonctions fi]. Ainsi, les constructeurs 28 et 56 génèrent chacun un nouveau code exécutable par les modules 10 et 50 correspondant aux algorithmes renouvelés. La plupart des algorithmes cryptographiques comprennent de nombreux opérandes indépendants de la donnée D à chiffrer ou à déchiffrer et de la clé utilisée pour cela. Par exemple, les algorithmes AES ou DES comprennent des tables de permutation et des tables de substitution ou S-box. D'autres algorithmes cryptographiques utilisent des tables d'indexation ou de décalage. Ces tables se présentent sous la forme de matrice contenant des valeurs numériques prédéterminées. Ces valeurs numériques sont des opérandes de l'opération de permutation, de substitution, d'indexation ou de décalage. On rencontre également dans ces algorithmes cryptographiques d'autres opérandes utilisés comme masque de blanchiment ou comme coefficient ou constante dans une formule de calcul mathématique. Pour renouveler un tel algorithme pourvu d'opérandes, il est possible de remplacer une partie ou la totalité de ces opérandes par de nouveaux opérandes. Pour cela, on peut procéder comme décrit pour le remplacement des paramètres pli en regard de la figure 7. Pour renouveler un algorithme cryptographique il est aussi possible de remplacer les opérateurs mathématiques de cet algorithme qui sont indépendants de la donnée à chiffrer ou à déchiffrer et de la clé à utiliser. En langage de bas niveau, les opérateurs mathématiques correspondent chacun à un mnémonique correspondant à une instruction directement exécutable ou interprétable par un calculateur électronique. Les opérateurs XOR, NOT, +, -, x, rot_left, rot_right, mod des fonctions Vk sont des exemples d'opérateurs correspondant à des mnémoniques d'instructions du jeu d'instructions exécutables par le calculateur de l'émetteur et du récepteur. D'autres opérateurs mathématiques existent tels que les opérateurs AND et OR. Une méthode pour faire cela a déjà été décrite dans le cas particulier de l'algorithme cryptographique utilisé dans le système de la figure 1. En effet, à chaque renouvellement d'algorithme cryptographique, les opérateurs des fonctions f11 sont remplacés par d'autres opérateurs. Pour renouveler le code de l'algorithme cryptographique il est encore possible de remplacer d'autres instructions du code que les opérateurs mathématiques. Par exemple, des instructions JUMP, CALL ou NOP (No OPeration) peuvent être remplacées. Pour illustrer cela, nous prenons l'exemple du code suivant écrit en langage assembleur. 0x00 JUMP 0x10 [Code de la fonction Vo] 0x10 JUMP 0x20 [Code de la fonction V1] 0x20 JUMP 0x30 [Code de la fonction V2] 0x30 JUMP 0x40 En fonction de la valeur de la graine reçue, certains des instructions JUMP peuvent être remplacées par des instructions NOP. Par exemple, si l'on remplace l'instruction �JUMP � à la ligne 0x10 par l'instruction NOP, on oblige le calculateur à exécuter le code correspondant à la fonction V1. Le code de l'algorithme cryptographique est donc renouvelé sans avoir modifié les opérandes et les opérateurs mathématiques. Lorsque l'on remplace ces instructions par d'autres instructions, le flux d'exécution du code est systématiquement modifié alors que lorsque l'on remplace seulement les opérandes ou les opérateurs mathématiques ce n'est pas systématiquement le cas. Pour construire l'algorithme cryptographique renouvelé, on peut procéder au remplacement des opérandes ou au remplacement des opérateurs mathématiques ou au remplacement d'instructions autres que les opérandes et opérateurs mathématiques ou encore à une combinaison quelconque de ces remplacements. De préférence, seule un partie des constantes numériques du code de l'algorithme cryptographique est remplacée. Toutefois, le nombre de constantes remplacées pour obtenir un algorithme cryptographique renouvelé doit être important, c'est-à-dire de préférence supérieur à 2, 10 ou 50. Plus le nombre de constantes numériques remplacées est important, plus il est difficile de découvrir l'algorithme cryptographique renouvelé à partir d'informations sur l'ancien algorithme cryptographique. En variante, un code secret est envoyé dans un message au processeur, par exemple, via le canal caché. Ce code secret indique au processeur que les données sur la graine sont contenues dans un message ultérieur prédéterminé. Ainsi, le code secret et les données sur la graine n'ont pas besoin d'être dans le même message. Ce qui a été décrit ci-dessus dans le cas du renouvellement du code de l'algorithme de déchiffrement utilisé par le processeur 36 peut également être appliqué pour renouveler un algorithme G de chiffrement utilisé par le processeur 36. Dans ce cas, lors de la phase 100, l'algorithme correspondant à l'algorithme G construit par le constructeur 28 est l'algorithme G lui-même. Ce qui a été décrit dans le cas particulier du renouvellement d'algorithmes de chiffrement et de déchiffrement d'un mot de contrôle peut être appliqué pour des algorithmes cryptographiques utilisés pour signer et vérifier la signature de messages tel que les messages ECM et EMM. Ce qui vient d'être décrit dans le cas du renouvellement d'un algorithme cryptographique symétrique peut également être adapté à un algorithme cryptographique asymétrique. Revendications1. Procédé de renouvellement du code, exécutable ou interprétable par un calculateur électronique, d'un algorithme cryptographique apte à chiffrer une donnée D à l'aide d'une clé K pour obtenir un cryptogramme D* ou à déchiffrer un cryptogramme D* à l'aide d'une clé K pour obtenir une donnée D en clair, ce code comprenant au moins N constantes numériques, chaque constante numérique correspondant à un opérande ou à un mnémonique d'une instruction du code, la valeur de ces constantes numériques étant indépendante de la donnée D, de la clé K et du cryptogramme D*, caractérisé en ce que ce procédé comprend : - la réception (122) d'une graine tirée de façon aléatoire dont la taille, en nombre de bits, est au moins quatre fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques du code de l'algorithme cryptographique, - l'expansion (128) de la graine de façon déterministe pour obtenir une suite de nombres dont la taille, en nombre de bits, est au moins égale au nombre de bits nécessaires pour coder les N constantes numériques de l'algorithme cryptographique, - la génération (132) de N nouvelles constantes numériques à partir de la suite de nombres obtenue, et - le remplacement (134) des N constantes du code de l'algorithme cryptographique par les N nouvelles constantes générées pour obtenir le code d'un algorithme cryptographique renouvelé. 2. Procédé selon la revendication 1, dans lequel chaque constante numérique correspond soit à un opérande soit à un opérateur mathématique qui, lorsqu'il est remplacé par un nouvel opérateur mathématique, ne modifie pas l'ordre d'exécution des instructions du code de l'algorithme cryptographique. 3. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que - si la présence d'un code secret au sein d'une première partie d'un message reçu est détectée, alors les données contenues dans une seconde partie prédéterminée de ce message ou d'un message reçu ultérieurement sont utilisées (160, 164) pour construire la graine, et - si la présence du code secret au sein de la première partie du message n'est pas détectée alors les données contenues dans les première et secondes parties sont utilisées (154, 170) à d'autres fins que le renouvellement de l'algorithme cryptographique. 4. Procédé selon la revendication 3, dans lequel si la présence du code secret n'est pas détectée, alors les données contenues dans les première et seconde parties sont utilisées (154, 170) pour vérifier l'intégrité des données contenues dans le ou les messages. 5. Procédé selon la revendication 3 ou 4, dans lequel le ou les messages sont des messages ECM (Entitlement Control Message) ou EMM (Entitlement Management Message). 10 6. Procédé selon l'une quelconque des revendications précédentes, dans lequel le remplacement des N constantes de l'algorithme cryptographique par les N nouvelles constantes générées est déclenché (168) en réponse à un événement déclencheur indépendant de la réception de la graine. 15 7. Procédé selon l'une quelconque des revendications précédentes, dans lequel la taille de la graine en nombre de bits est au moins dix fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques. 8. Procédé selon l'une quelconque des revendications précédentes, dans lequel 20 l'expansion déterministe (128) est réalisée à l'aide d'un générateur pseudoaléatoire initialisé avec la graine reçue. 9. Procédé selon l'une quelconque des revendications précédentes, dans lequel N est strictement supérieur à deux et, de préférence, supérieur à dix. 25 10. Module de renouvellement du code, exécutable ou interprétable par un calculateur électronique, d'un algorithme cryptographique apte à chiffrer une donnée D à l'aide d'une clé K pour obtenir un cryptogramme D* ou à déchiffrer un cryptogramme D* à l'aide d'une clé K pour obtenir une donnée 30 D en clair, ce code comprenant au moins N constantes numériques, chaque constante numérique correspondant à un opérande ou à un mnémonique d'une instruction du code, la valeur de ces constantes numériques étant indépendante de la donnée D, de la clé K et du cryptogramme D*, caractérisé en ce que le module comprend : 35 - un sous-module (57) de réception d'une graine, tirée de façon aléatoire, dont la taille, en nombre de bits, est au moins quatre fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques du code de l'algorithme cryptographique, - un générateur (54) déterministe de nombres initialisable avec la graine pour 40 obtenir une suite de nombres dont la taille, en nombre de bits, est au moins égale au nombre de bits nécessaires pour coder les N constantes numériques de l'algorithme cryptographique, et5un constructeur (56) de code d'algorithme cryptographique apte à : • générer N nouvelles constantes numériques à partir de la suite de nombres obtenue, et • remplacer les N constantes du code de l'algorithme cryptographique par les N nouvelles constantes générées pour obtenir le code d'un algorithme cryptographique renouvelé. 11. Processeur (36) de sécurité apte à exécuter ou à interpréter le code d'un algorithme cryptographique pour chiffrer une donnée D à l'aide d'une clé K pour obtenir un cryptogramme D* ou pour déchiffrer un cryptogramme D* à l'aide d'une clé K pour obtenir une donnée D en clair, ce code comprenant au moins N constantes numériques, chaque constante numérique correspondant à un opérande ou à un mnémonique d'une instruction du code, la valeur de ces constantes numériques étant indépendante de la donnée D, de la clé K et du cryptogramme D*, caractérisé en ce que le processeur de sécurité comprend un module (52) de renouvellement du code de cet algorithme cryptographique conforme à la revendication 10. 12. Procédé de génération d'une graine destinée à être utilisée par un procédé de renouvellement du code d'un algorithme cryptographique conforme à l'une quelconque des revendications 1 à 9, caractérisé en ce que ce procédé comprend : a) le tirage aléatoire (102) d'une graine dont la taille, en nombre de bits, est au moins quatre fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques du code de l'algorithme cryptographique à renouveler, b) la création (106) d'un code d'algorithme de chiffrement correspondant au code de l'algorithme cryptographique renouvelé obtenu à l'aide du procédé de renouvellement lorsque la graine reçue est celle tirée lors de l'étape a), c) la vérification (112) de la robustesse du code de l'algorithme de chiffrement vis-à-vis d'au moins un procédé de cryptanalyse, d) si le code de l'algorithme de chiffrement n'est pas robuste vis-à-vis du procédé de cryptanalyse, alors le retour à l'étape a) et, dans le cas contraire, e) la transmission (114) de la graine tirée aléatoirement à un récepteur apte à mettre en oeuvre le procédé de renouvellement du code de l'algorithme cryptographique. 13. Module de génération d'une graine destinée à être utilisée pour renouveler le code d'un algorithme cryptographique à l'aide d'un procédé conforme à l'une quelconque des revendications 1 à 9, caractérisé en ce que ce module comprend :- un générateur (20) apte à tirer aléatoirement une graine dont la taille, en nombre de bits, est au moins quatre fois inférieure au nombre de bits nécessaires pour coder les N constantes numériques du code de l'algorithme cryptographique à renouveler, et - un sous-module (22) de création d'un code d'algorithme de chiffrement correspondant au code de l'algorithme cryptographique renouvelé obtenu à l'aide du procédé de renouvellement lorsque la graine reçue est celle tirée par le générateur, - un vérificateur (24) de la robustesse du code de l'algorithme de chiffrement vis-à-vis d'au moins un procédé de cryptanalyse, ce vérificateur étant apte à : • inhiber la transmission de la graine tirée aléatoirement vers un récepteur si l'algorithme de chiffrement n'est pas robuste vis-à-vis du procédé de cryptanalyse et, dans le cas contraire, • autoriser la transmission de la graine tirée aléatoirement à un récepteur apte à mettre en oeuvre le procédé de renouvellement du code de l'algorithme cryptographique. 14. Support d'enregistrement d'informations, caractérisé en ce qu'il comporte des instructions pour l'exécution d'un procédé conforme à l'une quelconque des revendications 1 à 9 et 12, lorsque ces instructions sont exécutées par un calculateur électronique.