FR 2916871 A1 20081205 FR 0755421 A 20070601 L'invention se rapporte au domaine de la protection des contenus numériques ainsi que des logiciels contre l'usage non autorisé de ces contenus et logiciels. Plus précisément, l'invention concerne un procédé de protection de secrets numériques résistant aux attaques dites "attaques en boîte-blanche". Dans le contexte du déploiement des réseaux de communications et des services audiovisuels, la distribution de contenus numériques devient problématique sur le plan des droits de propriété. En effet, la recopie de données numériques en très grand nombre, ainsi que leur redistribution à grande échelle, est devenue à la fois facile et peu coûteuse pour les particuliers. Par exemple, les industries dont les bénéfices reposent sur la distribution de données numériques (comme la musique, la vidéo, les logiciels de jeux, de navigation sur Internet, ou de manipulation de flux audiovisuels) souhaitent protéger ces données numériques contre une utilisation sortant du cadre défini par un contrat commercial entre fournisseur et consommateur ; c'est l'objet de la gestion des droits numériques (en anglais, "Digital Rights Management" ou DRM). Pour une présentation générale des problèmes liés à la protection des logiciels, on pourra consulter l'article de P.C. van Oorschot intitulé "Revisiting Software Protection" (Actes de la 6ème Conférence Internationale "Information Security', Springer-Verlag, pages 1 à 13, 2003). Le problème de sécurité auquel se rapporte la présente invention est celui de la protection d'un contenu numérique ou d'un logiciel, non seulement contre des pirates extérieurs à la plateforme, mais également et surtout contre l'utilisateur légitime de la plateforme informatique hébergeant ces données numériques. En effet, cet utilisateur peut être tenté de faire usage de ces données numériques en-dehors du cadre contractuel dans lequel elles lui ont été confiées. Dans ce contexte, les procédés cryptographiques habituels (chiffrement/déchiffrement, signatures, clés de session) sont inopérants puisque les clés secrètes requises pour pouvoir utiliser les données numériques sous contrat ont été évidemment fournies à l'utilisateur. L'utilisateur indélicat peut donc, par exemple, chercher à localiser ces clés secrètes en mémoire, ou chercher à identifier les étapes principales mises en oeuvre dans le logiciel, pour en faire un usage non autorisé. Ce contexte de piratage est appelé "contexte d'attaque en boîte-blanche", suite à l'article de S. Chow, P. Eisen, H. Johnson et P.C. van Oorschot intitulé "White-Box Cryptography and an AES Implementation" (Actes du "International Workshop on Selected Areas in Cryptography', Springer, pages 250 à 270, 2003), et à l'article des mêmes auteurs intitulé "A White-Box DES Implementation for DRM Applications" (Actes du "Second ACM Workshop on Digital Rights Management', Springer, pages 1 à 15, 2003). Cette dénomination souligne la différence de ce contexte avec celui, bien connu, de la "boîte-noire", dans lequel un pirate cherchant à attaquer un logiciel ne peut observer que des couples (données d'entrée)/(données de sortie) associés à ce logiciel, sans avoir accès aux étapes de traitement intermédiaires mises en oeuvre par le logiciel ; alors que dans le contexte d'attaque en boîte-blanche, l'attaquant peut observer pas à pas l'exécution dynamique d'un logiciel, et même modifier des instructions de ce logiciel pour pouvoir étudier les conséquences de ces modifications sur le traitement effectué par le logiciel. Notamment, un attaquant en boîte-blanche peut chercher à retrouver les valeurs de clés secrètes enregistrées dans un logiciel (on dira que ce logiciel est une "instanciation" particulière de l'algorithme général qu'il met en oeuvre), afin d'utiliser ces clés secrètes dans un logiciel équivalent dont dispose l'attaquant (en effet, l'algorithme mis en oeuvre par le logiciel est dans certains cas connu dans ses étapes principales), ou sur une autre plateforme. La protection de ces clés secrètes est donc essentielle, mais rendue d'autant plus difficile que les clés cryptographiques obéissent généralement à un format bien particulier qui les distingue des autres données enregistrées sur la plateforme informatique, ce qui permet à un attaquant de les y repérer assez facilement. La présente invention concerne donc un procédé d'obtention par une première entité d'une valeur dérivée Kr à partir d'un paramètre d'entrée r. Ledit procédé comprend les étapes suivantes : - la détermination, en fonction dudit paramètre d'entrée r , d'une liste d'indices où u 1, dans une liste prédéterminée d'indices, au moyen d'une fonction de sélection d'indices prédéterminée E(r), et - l'obtention de ladite valeur dérivée Kr en appliquant, en fonction dudit paramètre d'entrée r , une fonction de combinaison prédéterminée Fr à un ensemble de blocs (T1,TZ,...,T~) lus dans une table prédéterminée T de blocs où chacun desdits blocs Ti a été engendré par une seconde entité au moyen d'une fonction de construction pseudo-aléatoire GS (i) paramétrée par une valeur maîtresse S non divulguée à ladite première entité. Ainsi, selon l'invention, la valeur maîtresse S n'est pas explicitement présente dans les données qui ont été fournies à la première entité. Grâce à ces dispositions, la première entité peut obtenir les valeurs dérivées Kr auxquelles elle a droit, mais ne peut trouver la valeur maîtresse S dont dépendent in fine les valeurs dérivées Kr (via la table T ), de sorte que la première entité ne peut faire usage des valeurs dérivées Kr que dans le cadre prévu par la seconde entité. La protection de la valeur maîtresse S en boîte-blanche ne doit pas faire oublier pour autant les possibilités d'attaque en boîte-noire. C'est pourquoi, selon des caractéristiques particulières, on choisit une fonction pseudo-aléatoire pour la fonction de combinaison Fr . Imaginons en effet que cette première fonction Fr soit réversible au lieu d'être pseudo-aléatoire ; dans ce cas, un attaquant en boîte noire pourrait, en faisant varier le paramètre d'entrée r, remonter, à partir des valeurs dérivées Kr, à tous les blocs Ti et les enregistrer ; or la connaissance globale de la table T est, en pratique, équivalente à la connaissance de la valeur maîtresse S . On notera qu'en revanche, l'obtention de certaines valeurs dérivées Kr par un attaquant mettant en oeuvre en boîte-noire le procédé selon l'invention n'est pas équivalente à la connaissance de la valeur maîtresse S , pourvu que la fonction de combinaison Fr soit choisie (comme le permettent les modes de réalisation décrits ci-dessous) de telle sorte que le nombre de valeurs dérivées Kr soit suffisamment grand pour rendre matériellement impossible le stockage de l'ensemble des valeurs dérivées Kr . En revanche, si le procédé selon l'invention est intégré dans une application particulière (telle que le déchiffrement ou l'authentification, cf. exemples ci-dessous) de telle sorte qu'un attaquant en boîte-noire ne puisse obtenir les valeurs dérivées Kr proprement dites, l'exigence de sécurité mentionnée ci-dessus disparaît, et l'on peut envisager de prendre pour la fonction de combinaison une fonction (théoriquement) réversible, par exemple : K =T~ O+Tz O...O+T r u, où le symbole O+ représente l'opération "ou-exclusif" bit à bit. Corrélativement, l'invention concerne un dispositif d'obtention par une première entité d'une valeur dérivée Kr à partir d'un paramètre d'entrée r , ledit dispositif comprenant : - des moyens pour déterminer, en fonction dudit paramètre d'entrée r , une liste d'indices où u 1, dans une liste prédéterminée d'indices, au moyen d'une fonction de sélection d'indices prédéterminée E(r) , et - des moyens pour obtenir ladite valeur dérivée Kr en appliquant, en fonction dudit paramètre d'entrée r , une fonction de combinaison prédéterminée Fr à un ensemble de blocs (T1lus dans une table prédéterminée T de blocs Ti, où chacun desdits blocs Ti a été engendré par une seconde entité au moyen d'une fonction de construction pseudo-aléatoire GS (i) paramétrée par une valeur maîtresse S non divulguée à ladite première entité. Ce dispositif d'obtention d'une valeur dérivée pourra notamment prendre la forme d'une plate-forme logicielle, ou d'un circuit électronique. Les avantages offerts par ce dispositif sont essentiellement les mêmes que ceux offerts par le procédé corrélatif succinctement exposé ci- dessus. L'invention vise également un programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur. Ce programme d'ordinateur est remarquable en ce qu'il comprend des instructions pour l'exécution des étapes de l'un quelconque des procédés d'obtention d'une valeur dérivée succinctement exposés ci-dessus, lorsqu'il est exécuté sur un ordinateur. Les avantages offerts par ce programme d'ordinateur sont essentiellement les mêmes que ceux offerts par lesdits procédés. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée ci-dessous de modes de réalisation particuliers, donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels : - la figure 1 est un schéma synoptique illustrant le fonctionnement général du procédé selon l'invention du point de vue de la première entité, selon un mode de réalisation, et - la figure 2 est un schéma synoptique illustrant un mode de réalisation pour la construction de la table T par la seconde entité. La figure 1 illustre le fonctionnement général du procédé selon l'invention du point de vue de la première entité, selon un mode de réalisation. Cette première entité peut, par exemple, être un consommateur de données numériques qui lui sont fournies par une deuxième entité constituée par un fournisseur de données numériques. Pour pouvoir accéder à ces données numériques, le consommateur doit engendrer une ou plusieurs clés Kr, qui sont appelées "valeurs dérivées" dans le cadre de l'invention. Les étapes du présent mode de réalisation sont les suivantes. A l'étape P1, la plateforme informatique de la première entité reçoit un paramètre r. A l'étape P2, la plateforme utilise un générateur pseudo-aléatoire prédéterminé pour déterminer, en fonction du paramètre r , une liste d'indices ), où u est un entier prédéterminé au moins égal à 1. Cette liste d'indices peut donc être vue comme la sortie d'une fonction E(r). En pratique, on pourra avantageusement utiliser pour ce faire un générateur pseudo-aléatoire prédéterminé ; dans ce cas, on pourra en outre prévoir que ce générateur pseudo-aléatoire utilise le paramètre d'entrée r soit comme graine, soit comme vecteur d'initialisation (on rappelle qu'un "vecteur d'initialisation" est un paramètre permettant d'utiliser plusieurs fois la même graine en engendrant plusieurs suites de nombres pseudo-aléatoires distinctes) ; lesdits indices pourront alors correspondre à u séquences binaires successives de même longueur égale à l bits, où 1 est un entier prédéterminé au moins égal à 1, en sortie du générateur pseudo-aléatoire. A l'étape P3, on consulte une table prédéterminée T de blocs Ti . Dans l'exemple considéré, les valeurs de l'indice i (vu comme un nombre entier) vont de 0 à (21 -1), et la table T comprend donc 21 blocs. On peut commodément donner à tous les blocs de la table T une même longueur égale à n bits, où n est un entier prédéterminé au moins égal à 1. Suite à cette consultation, effectuée en se référant à la liste d'indices ), on obtient un ensemble de u blocs (T1,TZ,...,T~) sélectionnés dans la table T. A l'étape P4, on applique une fonction de combinaison prédéterminée Fr , dépendant du paramètre r , auxdits blocs (T1,T2 ,...,Tu ). La valeur prise par cette fonction n'est autre que la valeur dérivée Kr cherchée. De nombreuses variantes de réalisation sont possibles pour la fonction Fr , dont quelques-unes sont données ci-après à titre d'exemple. Selon une première variante, la fonction Fr est telle que : Kr =H(T~ IIT2 II...II), où le symbole "II" représente la concaténation et H est une fonction de hachage prédéterminée. Selon une deuxième et une troisième variantes, on prend u = 1, et le paramètre d'entrée r est tel que : r=iii j, où le symbole "II" représente la concaténation et j est un mot binaire de longueur m , où m est un entier prédéterminé au moins égal à 1. Autrement dit, dans les deuxième et troisième variantes, la fonction de sélection d'indices E(r) ne produit qu'un seul indice i représenté par les 1 premiers bits en commençant par la gauche du paramètre d'entrée r , et la fonction Fr ne dépend que d'un seul bloc 1 , ainsi sélectionné dans la table T . De plus, chacun des blocs Ti peut commodément être représenté par un mot binaire de longueur n fixe, comme ci-dessus. Cela étant posé, dans la deuxième variante, la mise en oeuvre de ladite fonction de combinaison Fr comprend m étapes successives, l'étape n q, où 1 q m , comprenant la sélection comme résultat de l'étape, en fonction de la valeur du q 1ème bit dudit mot j , soit des n premiers bits, soit des n derniers bits d'un train binaire de longueur (2n) produit par un générateur pseudo-aléatoire f prédéterminé prenant pour graine : - le résultat de l'étape précédente lors des étapes n 2 à n m , et - ledit bloc Ti lors de la première étape. Dans la troisième variante, la mise en oeuvre de ladite fonction de combinaison Fr comprend m étapes successives, l'étape n q, où 1 q m , comprenant la sélection comme résultat de l'étape, en fonction de la valeur du q 1ème bit dudit mot j , soit du résultat d'une première permutation pseudo-aléatoire f' prédéterminée de n bits, soit du résultat d'une seconde permutation pseudo-aléatoire f" prédéterminée de n bits, lesdites permutations étant appliquées : - au résultat de l'étape précédente lors des étapes n 2 à n m , et - audit bloc Ti lors de la première étape. On va décrire à présent, en référence à la figure 2, un mode de réalisation pour la construction de la table T par la seconde entité. Chacun des u indices de la liste pourra commodément être constitué par un mot binaire de longueur 1 comme ci-dessus. Quant à la valeur maîtresse S , elle pourra commodément être constituée par un mot binaire de longueur n . La mise en oeuvre de ladite fonction de construction GS (i) comprend alors 1 étapes successives, l'étape n p, où 1 L'invention concerne donc également un programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, ledit programme étant remarquable en ce qu'il comprend des instructions pour l'exécution des étapes d'un procédé de déchiffrement tel que décrit succinctement ci-dessus, ou d'un procédé d'authentification tel que décrit succinctement ci-dessus, lorsqu'il est exécuté sur un ordinateur. L'invention vise aussi un support d'informations lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus.15 REVENDICATIONS 1. Procédé d'obtention par une première entité d'une valeur dérivée Kr à partir d'un paramètre d'entrée r , ledit procédé comprenant les étapes suivantes : - la détermination, en fonction dudit paramètre d'entrée r , d'une liste d'indices ), où u 1, dans une liste prédéterminée d'indices, au moyen d'une fonction de sélection d'indices prédéterminée E(r), et -l'obtention de ladite valeur dérivée Kr en appliquant, en fonction dudit paramètre d'entrée r , une fonction de combinaison prédéterminée Fr à un ensemble de blocs (T1,TZ,...,T~) lus dans une table prédéterminée T de blocs où chacun desdits blocs Ti a été engendré par une seconde entité au moyen d'une fonction de construction pseudo-aléatoire GS (i) paramétrée par une valeur maîtresse S non divulguée à ladite première entité. 2. Procédé d'obtention d'une valeur dérivée selon la revendication 1, caractérisé en ce que, ledit indice i étant un mot binaire de longueur 1 et la valeur maîtresse S un mot binaire de longueur n , la mise en oeuvre de ladite fonction de construction GS(i) comprend 1 étapes successives, l'étape n p, où 1 3. Procédé d'obtention d'une valeur dérivée selon la revendication 1, caractérisé en ce que, ledit indice i étant un mot binaire de longueur 1 et la valeur maîtresse S un mot binaire de longueur n , la mise en oeuvre de ladite fonction de construction GS(i) comprend 1 étapes successives, l'étape n p, où 1 p 4. Procédé d'obtention d'une valeur dérivée selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ladite fonction de sélection d'indices E(r) est réalisée au moyen d'un générateur pseudo-aléatoire dont la sortie dépend dudit paramètre d'entrée r , et en ce que chacun desdits indices est un mot binaire, de longueur fixe prédéterminée, extrait de la sortie dudit générateur pseudo-aléatoire. 5. Procédé d'obtention d'une valeur dérivée selon la revendication 4, caractérisé en ce que ledit générateur pseudo-aléatoire utilisé pour la détermination d'indices prend le paramètre d'entrée r pour graine. 6. Procédé d'obtention d'une valeur dérivée selon la revendication 4, caractérisé en ce que ledit générateur pseudo-aléatoire utilisé pour la détermination d'indices prend le paramètre d'entrée r pour vecteur d'initialisation. 7. Procédé d'obtention d'une valeur dérivée selon l'une quelconque des revendications 1 à 6, caractérisé en ce que ladite fonction de combinaison prédéterminée Fr est pseudo-aléatoire. 8. Procédé d'obtention d'une valeur dérivée selon l'une quelconque des revendications 1 à 7, caractérisé en ce que ladite fonction de combinaison prédéterminée Fr est telle que : Kr =H(T1 IIT2 II...IIT.), où le symbole "II" représente la concaténation et H est une fonction de hachage prédéterminée. 9. Procédé d'obtention d'une valeur dérivée selon l'une quelconque des revendications 1 à 6, caractérisé en ce que ladite fonction de combinaison prédéterminée Fr est telle que : K=T~ O+ Tz 0+...O+ T. r u, où le symbole e représente l'opération "ou-exclusif" bit à bit. 10. Procédé d'obtention d'une valeur dérivée selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ladite liste d'indices ne comprend qu'un seul indice i , en ce que ledit paramètre d'entrée r est tel que : r=iIl j, où le symbole "II" représente la concaténation et j est un mot binaire de longueur m , en ce que chacun desdits blocs Ti est représenté par un mot binaire de longueur n , et en ce que l'application de ladite fonction de combinaison Fr comprend m étapes successives, l'étape n q, où 1 q m , comprenant la sélection comme résultat de l'étape, en fonction de la valeur du q 1ème bit dudit mot j , soit des n premiers bits, soit des n derniers bits d'un train binaire de longueur (2n) produit par un générateur pseudo-aléatoire f prédéterminé prenant pour graine : - le résultat de l'étape précédente lors des étapes n 2 à n m, et - ledit bloc Ti lors de la première étape. 15 11. Procédé d'obtention d'une valeur dérivée selon l'une quelconque des revendications 1 à 3, caractérisé en ce que ladite liste d'indices ne comprend qu'un seul indice i , en ce que ledit paramètre d'entrée r est tel que : r=ill j, où le symbole "Il" représente la concaténation et j est un mot binaire de longueur m , en ce que chacun desdits blocs Ti est représenté par un mot binaire de longueur n , et en ce que l'application de ladite fonction de combinaison Fr comprend m étapes successives, l'étape n q, où 1 q≤ m , comprenant la sélection comme résultat de l'étape, en fonction de la valeur du q 1ème bit dudit mot j , soit du résultat d'une première permutation pseudo-aléatoire f' prédéterminée de n bits, soit du résultat d'une seconde permutation pseudo-aléatoire f" prédéterminée de n bits, lesdites permutations étant appliquées : - au résultat de l'étape précédente lors des étapes n 2 à n m , et - audit bloc Ti lors de la première étape. 12. Procédé de déchiffrement, caractérisé en ce qu'il utilise comme clé de déchiffrement une valeur dérivée Kr obtenue au moyen d'un procédé selon l'une quelconque des revendications 1 à 11, pour déchiffrer un cryptogramme Cr(M) reçu conjointement audit paramètre d'entrée r, où M est un message en clair et Cr un algorithme de chiffrement prédéterminé utilisant une clé de chiffrement associée à la clé de déchiffrement Kr. 13. Procédé d'authentification, caractérisé en ce que ladite première entité utilise comme clé secrète d'authentification auprès d'une entité vérificatrice une valeur dérivée Kr obtenue au moyen d'un procédé selon l'une quelconque des revendications 1 à 11, après réception dudit paramètre d'entrée r destiné à une telle authentification. 14. Dispositif d'obtention par une première entité d'une valeur dérivée Kr à partir d'un paramètre d'entrée r , ledit dispositif comprenant : - des moyens pour déterminer, en fonction dudit paramètre d'entrée r , une liste d'indices où u 1, dans une liste prédéterminée d'indices, au moyen d'une fonction de sélection d'indices prédéterminée E(r) , et - des moyens pour obtenir ladite valeur dérivée Kr en appliquant, en fonction dudit paramètre d'entrée r , une fonction de combinaison prédéterminée Fr à un ensemble de blocs (T1,12,...,1 ) lus dans une table prédéterminée T de blocs Ti , où chacun desdits blocs Ti a été engendré par une seconde entité au moyen d'une fonction de construction pseudo-aléatoire GS (i) paramétrée par une valeur maîtresse S non divulguée à ladite première entité. 15. Circuit électronique, caractérisé en ce qu'il comprend un dispositif d'obtention d'une valeur dérivée selon la revendication 14. 16. Programme d'ordinateur téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, caractérisé en ce qu'il comprend des instructions pour l'exécution des étapes du procédé d'obtention d'une valeur dérivée selon l'une quelconque des revendications 1 à 11, ou d'un procédé de déchiffrement selon la revendication 12, ou d'un procédé d'authentification selon la revendication 13, lorsqu'il est exécuté sur un ordinateur. 17. Support d'informations lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur selon la revendication 16.25