FR 3029667 A1 20160610 FR 1461923 A 20141204 1 Procédé d'encapsulation d'une clé de session La présente invention concerne le domaine général de la protection des données numériques et de la cryptographie. Elle concerne plus particulièrement un procédé d'encapsulation d'une clé de session. La clé de session est destinée à être utilisée par une première entité pour chiffrer un contenu et par une deuxième entité pour déchiffrer le contenu reçu chiffré de la première entité. Le procédé d'encapsulation décrit comment la première et la deuxième entité conviennent de la même clé de session. L'invention trouve une application particulièrement intéressante dans la diffusion sécurisée de contenus numériques, comme dans un service de télévision à péage. Dans un service de diffusion sécurisée de contenus numériques, une première entité est adaptée pour chiffrer des contenus qu'elle diffuse ensuite sur un canal public à l'attention d'une pluralité d'abonnés. Un abonné au service est équipé d'un deuxième dispositif qui mémorise une clé secrète lui permettant de déchiffrer le contenu. La lenteur des mécanismes de chiffrement à clé publique par rapport à ceux à clé secrète a conduit à l'utilisation de mécanismes dits « hybrides » où la première entité utilise un mécanisme de chiffrement à clé publique pour envoyer de manière sécurisée une clé de session qui est utilisée pour chiffrer les contenus au moyen d'un mécanisme de chiffrement symétrique, la clé de session étant déchiffrée au moyen de la clé secrète mémorisée dans chacun des dispositifs d'abonné. Cependant, la distribution d'un très grand nombre de décodeurs contenant chacun une clé secrète permettant de retrouver la clé de session pose un problème de sécurité. En effet, il suffit qu'un utilisateur récupère la clé secrète d'un dispositif d'abonné, la publie ou s'en serve pour fabriquer des décodeurs pirates pour qu'un grand nombre d'utilisateurs illégitimes accèdent au contenu. Il est donc souhaitable de pouvoir retrouver, à partir d'une clé publiée ou d'un décodeur pirate, l'identité de l'utilisateur à l'origine de la fraude (on parle de traçage de traîtres ou de « traitor tracing » en anglais). Il est par ailleurs souhaitable que la connaissance de plusieurs clés secrètes ne permette pas d'en fabriquer une nouvelle, d'autant plus que celle-ci ne serait alors associée à aucun abonné. De nombreux schémas d'encapsulation de clés de session avec identification de traîtres existent. Cependant de tels schémas souffrent soit d'une résistante réduite aux collusions, c'est-à-dire que la sécurité n'est garantie que tant que le nombre d'utilisateurs fraudeurs ne dépasse pas une valeur donnée, soit d'une complexité importante, les rendant incompatibles dans un contexte de déchiffrement de flux en temps réel. 3029667 2 Un exemple de schéma d'encapsulation de clés de session avec traçage de traîtres est décrit dans le document « Optimal Public Key Traitor Tracing Scheme in Non-Black Box Model », Ph.Guillot et al., Africacrypt 2012. Ce schéma est l'un des plus efficaces actuellement. Il est défini par plusieurs primitives cryptographiques : une primitive de génération de clés 5 destinée à générer les clés secrètes d'utilisateurs, une primitive de chiffrement et une primitive de déchiffrement. Il utilise des outils mathématiques complexes que sont les couplages bilinéaires (ou « pairings » en anglais). Pour rappel, un couplage bilinéaire, noté e est une application définie sur un ensemble G1xG2 vers un ensemble GT, où Gl, G2 et GT désignent généralement des groupes cycliques 10 d'ordre p, p étant un nombre premier. Cette application e vérifie les propriétés suivantes : (1) Bilinéarité : V X1 E G1, V X2 E G2, V (a, b) E 7Lp,e(aX1, bX2) = e(X1,X2)ab, où Zp désigne l'ensemble des entiers relatifs inférieurs à p. (2) Non dégénérée : Pour X1 # 1Gi et X2 # 1G2, e(X1, X2) # 1GT où 1G1, 1G2 et 1GT désignent respectivement les unités des ensembles Gl, G2 et GT. 15 (3) Calculable : V X1 E G1,VX2 E G2, il existe un algorithme efficace pour calculer e (X1, X2). Les couplages bilinéaires sont des techniques prometteuses en cryptographie : ils permettent d' améliorer les fonctionnalités de protocoles existants et procurent un même niveau de sécurité avec des paramètres de taille nettement inférieure. 20 La mise en oeuvre du schéma d'encapsulation de Ph.Guillot et al. nécessite l'envoi entre les entités impliquées de six informations et le calcul de six exponentiations. En outre, la primitive de déchiffrement reste relativement complexe. Cette complexité peut être pénalisante en termes de performances dans le cadre d'un service temps réel de diffusion de contenus au cours duquel une clé de session est renouvelée à intervalles réguliers, de l'ordre de quelques 25 dizaines de secondes. Un des buts de l'invention est de remédier à des insuffisances/inconvénients de l'état de la technique et/ou d'y apporter des améliorations. A cette fin l'invention propose un procédé d'encapsulation d'une clé de session, un 30 premier dispositif possédant une clé secrète d'encapsulation obtenue au moyen d'un algorithme de génération de clés d'un schéma de signature numérique, ledit schéma de signature numérique étant construit à partir d'une application bilinéaire, le procédé étant caractérisé en ce qu'il est généré et distribué à au moins un deuxième dispositif, une clé secrète, ladite clé secrète comprenant un message généré aléatoirement et une signature de ce message, ladite signature 3029667 3 étant obtenue en appliquant un algorithme de signature du schéma de signature paramétré par la clé secrète d'encapsulation au message, et dans lequel le premier dispositif : - génère aléatoirement une première valeur, - envoie au moins une deuxième valeur obtenue en appliquant une opération 5 mathématique à la première valeur et à un élément utilisé pour construire une clé de vérification d'encapsulation associée à la clé secrète d'encapsulation, ladite clé de session étant obtenue par le premier dispositif en appliquant l'opération mathématique à une troisième une valeur indépendante de la clé secrète distribuée audit deuxième dispositif et appartenant à un groupe d' arrivée de l' application bilinéaire. 10 Le procédé d'encapsulation décrit ici utilise astucieusement un schéma de signature numérique basé sur un couplage bilinéaire et les propriétés connues d'un tel couplage. L'équation de vérification de signature qui est l'une des caractéristiques qui définit le schéma de signature est utilisée ici pour obtenir la clé de session destinée à être partagée par le premier et les deuxièmes dispositifs. De manière classique, cette équation dépend d'un message et d'une 15 signature de ce message. Ici, un tel message et sa signature associée forment une clé secrète distribuée et mémorisée par chacun des deuxièmes dispositifs. Grâce à cette équation et aux propriétés du couplage, le premier dispositif peut partager avec les deuxièmes dispositifs autant de clés de session que nécessaire en randomisant l'équation de vérification. Le premier dispositif peut obtenir la clé de session en calculant le membre de droite de l'équation élevé à la 20 puissance k, qu'il a généré aléatoirement. La clé de session n'est ainsi pas transmise du premier dispositif aux deuxièmes dispositifs. Seuls quelques éléments d'informations sont envoyés puis utilisés par les deuxièmes dispositifs pour calculer la clé de session. Dans un exemple de réalisation, ces éléments d'informations sont des éléments de la clé publique élevés à la puissance k. Ainsi, non seulement l'encapsulation nécessite l'envoi de très peu d'informations, 25 mais ces informations, issues de la clé publique, ne nécessitent pas de mesures de sécurité spécifiques lors de cet envoi. Par ailleurs, l'obtention de la clé de session par les premier et deuxièmes dispositifs ne nécessite pas beaucoup de calculs. Le procédé d' encapsulation décrit ici est basé sur des mécanismes de signatures numériques, qui font partie des primitives cryptographiques à clé publique réputées pour être les 30 plus efficaces. Ce procédé est moins complexe que des solutions connues et offre de meilleures performances. Par exemple, si l'on compare au schéma décrit dans l'article de Guillot et al, qui est connu comme étant l'un des plus efficaces actuellement, la complexité des différents algorithmes du schéma de signature qui est à la base du procédé d'encapsulation, ainsi que la taille des encapsulations sont moindres que la complexité des algorithmes et la taille des encapsulations du schéma. 3029667 4 Le procédé offre par ailleurs des garanties de sécurité importantes. Il repose sur des mécanismes de signatures éprouvés d'un point de vue sécurité. Les clés secrètes sont construites comme des couples (message, signature). La sécurité inhérente au schéma de signature sous-jacent garantit l'impossibilité de créer de nouvelles signatures valides à partir de signatures 5 existantes. Ainsi, avec ce procédé d'encapsulation, il est impossible de créer de nouvelles clés secrètes à partir de clés secrètes générées de manière légitime. Cela renforce la sécurité des services basés sur ce procédé d'encapsulation. Selon un exemple de réalisation, l'algorithme de vérification du schéma de signature consiste à vérifier que : 10 e (gi, hi). e (g2, h2) = T1. T2 Tr , où T1, T2, . , Tr sont des éléments d'un groupe GT, publics et indépendants du message à signer et de la signature de ce message à vérifier et où, pour chaque paire (gi, h1) l'un des éléments est de la forme u ci'. avec a E Zp, avec ut un élément issu de la clé publique. Dans un exemple de réalisation, le premier dispositif, suite à la détection qu'une clé 15 secrète d'un des deuxièmes dispositifs est illégitimement utilisée : - modifie avant de l'envoyer, une des au moins deuxième valeur, au moyen d'un terme parasite, ledit terme parasite générant une valeur parasite dans un algorithme de vérification du schéma de signature, - envoie au moins la deuxième valeur, 20 - identifie la clé secrète illégitimement utilisée parmi les clés secrètes distribuées, en calculant pour chaque clé secrète distribuée une valeur courante au moyen de l' algorithme de vérification, la clé secrète illégitimement utilisée étant égale à la clé secrète pour laquelle la valeur courante est égale à la valeur parasite. La construction du schéma d'encapsulation facilite le traçage de traîtres. En effet, pour 25 identifier un traître, le fournisseur de services qui dispose d'un dispositif illégitime d'abonné ou des clés de session publiées illégitimement sur Internet diffuse une valeur parasite et identifie par calcul la clé secrète utilisée pour calculer la clé de session. Selon un premier exemple de réalisation, le procédé d'encapsulation utilise un premier schéma de signature, dit schéma de Boneh et Boyen. Ce schéma les primitives comme suit : 30 génération de clés : soit les générateurs aléatoires Yi E G1, g2 E G2, et un entier aléatoire x E Zp, il est calculé y REVENDICATIONS1. Procédé d'encapsulation d'une clé de session, un premier dispositif (10) possédant une clé secrète d'encapsulation (Sk) obtenue au moyen d'un algorithme de génération de clés d'un schéma de signature numérique, ledit schéma de signature numérique étant construit à partir d'une application bilinéaire, le procédé étant caractérisé en ce qu'il est généré et distribué à au moins un deuxième dispositif (20i), une clé secrète (mi, Si), ladite clé secrète comprenant un message généré aléatoirement (mi) et une signature (Si) de ce message, ladite signature étant obtenue en appliquant un algorithme de signature du schéma de signature paramétré par la clé secrète d'encapsulation (Sk) au message (mi), et dans lequel le premier dispositif : - génère (E4) aléatoirement une première valeur (k), - envoie (E5) au moins une deuxième valeur (ub obtenue en appliquant une opération mathématique à la première valeur et à un élément utilisé pour construire une clé de vérification d'encapsulation (17k) associée à la clé secrète d'encapsulation, ladite clé de session étant obtenue (E8) par le premier dispositif en appliquant l'opération mathématique à une troisième une valeur (T1. T2 ... Tr) indépendante de la clé secrète distribuée audit deuxième dispositif et appartenant à un groupe d'arrivée de l'application bilinéaire. 2. Procédé d'encapsulation d'une clé de session selon la revendication 1, dans lequel l'algorithme de vérification du schéma de signature consiste à vérifier que : e (g1, hi). e (g2, h2) . e (gn, Fin) = T1. T2 Tr , où T1, T2, . , T r sont des éléments d'un groupe GT, publics et indépendants du message à signer et de la signature de ce message à vérifier et où, pour chaque paire (gi, h1) l'un des éléments est de la forme u ci'. avec a E Zp, avec ut un élément issu de la clé publique. 3. Procédé d'encapsulation selon la revendication 2, dans lequel le premier dispositif, suite à la détection qu'une clé secrète (mj,Sj) d'un des deuxièmes dispositifs est illégitimement utilisée : - modifie (E20) avant de l'envoyer, une des au moins deuxième valeur, au moyen d'un terme parasite (w), ledit terme parasite générant une valeur parasite dans un algorithme de vérification du schéma de signature, - envoie (E21) au moins la deuxième valeur, - identifie (E22) la clé secrète illégitimement utilisée parmi les clés secrètes distribuées, en calculant pour chaque clé secrète distribuée une valeur courante au moyen de l'algorithme de 3029667 24 vérification, la clé secrète illégitimement utilisée étant égale à la clé secrète pour laquelle la valeur courante est égale à la valeur parasite. 4. Procédé d'encapsulation d'une clé de session selon l'une des revendications 5 précédentes, dans lequel un premier schéma de signature, dit schéma de Boneh et Boyen, définit les primitives de : - génération de clés : soit les générateurs aléatoires Yi E G1, 92 E G2, et un entier aléatoire x E Zp, il est calculé y 5. Procédé d' encapsulation selon l'une des revendications 1 à 3, dans lequel un 20 deuxième schéma de signature, dit schéma de Waters, définit les primitives de : - génération de clés dans lequel la clé publique est définie comme suit : un secret a E Zpest choisi aléatoirement et soit un générateur aléatoire g E G = G1 = G2, il est défini Yi = ga, il est choisi aléatoirement 92 dans G et il est choisi aléatoirement u' E G et un vecteur aléatoire de longueur N, U = (ui), dont les 25 éléments sont choisis aléatoirement dans G, la clé publique publiée étant g, gi, 92,u' , et U, et la clé secrète étant g' 2 , - signature : soit m un message de N-bit à signer mi étant le i-ième bit de m, et l'ensemble M S {1, , N} des i pour lesquels mi = 1, une signature de m est générée comme suit : un aléa r E Zp est choisi et la signature est ensuite construite 30 comme - o-m = (g2 (u'11jEM ui )r, gr), et - vérification : o- = 62) est une signature acceptée pour un message m si e(o-i, g)/ e (o-2, u' mem. ui) = e (g 1, g2). 3029667 25 6. Utilisation du procédé d'encapsulation selon l'une des revendications précédentes, dans un service de diffusion de contenus, un contenu étant chiffré au moyen de la clé de session et diffusé chiffré par le premier dispositif à l'attention d'au moins le deuxième dispositif. 5 7. Procédé de calcul d'une clé de session par au moins un premier dispositif, ladite clé de session étant déterminée par un deuxième dispositif, possédant une clé secrète d'encapsulation (Sk) obtenue au moyen d'un algorithme de génération de clés d'un schéma de signature numérique, ledit schéma de signature numérique étant construit à partir d'une application bilinéaire, ledit procédé étant caractérisé en ce qu'il a été préalablement généré par 10 le deuxième dispositif et distribué au premier dispositif une clé secrète (mi,Si), ladite clé secrète comprenant un message généré aléatoirement (mi) et une signature (Si) de ce message, ladite signature étant obtenue en appliquant un algorithme de signature du schéma de signature paramétré par la clé secrète d'encapsulation (Sk) au message (mi), et dans lequel le premier dispositif reçoit au moins une valeur (ub obtenue en appliquant une opération mathématique à 15 une deuxième valeur (k) générée aléatoirement par le deuxième dispositif et à un élément (ui) utilisé pour construire une clé de vérification d'encapsulation (17k) associée à la clé secrète d'encapsulation, ladite clé de session étant calculée par le premier dispositif comme le résultat d'un algorithme de vérification de signature du schéma de signature numérique appliqué à ladite au moins une valeur reçue et à au moins une partie de la clé secrète. 20 8. Dispositif (10) d'encapsulation d'une clé de session, ledit dispositif comprenant une clé secrète d'encapsulation (Sk) obtenue au moyen d'un algorithme de génération de clés d'un schéma de signature numérique, ledit schéma de signature numérique étant construit à partir d'une application bilinéaire, le dispositif d' encapsulation comprenant : 25 - des moyens (113) de génération, agencés pour générer aléatoirement une première valeur (k), - des moyens (114) d'envoi, agencés pour envoyer à au moins un dispositif de calcul (20,) au moins une deuxième valeur (ub obtenue en appliquant une opération mathématique à la première valeur et à un élément (ui) utilisé pour construire une clé de 30 vérification d'encapsulation (17k) associée à la clé secrète d'encapsulation, - des moyens (115) d'obtention de la clé de session, ladite clé de session étant obtenue en appliquant l'opération mathématique à une troisième valeur (T1. T2 ... Tr) indépendante d'une clé secrète (mi,Si) distribuée à au moins un deuxième dispositif, ladite clé secrète comprenant un message généré aléatoirement (mi) et une signature (Si) de ce message, ladite signature étant obtenue en appliquant un algorithme de signature 3029667 26 du schéma de signature paramétré par la clé secrète d'encapsulation (Sk) au message (mi), ladite troisième valeur appartenant à un groupe d'arrivée de l'application bilinéaire. 5 9. Dispositif (20,) de calcul d'une clé de session, ladite clé de session étant déterminée par un dispositif d'encapsulation (10) possédant une clé secrète d'encapsulation (Sk) obtenue au moyen d'un algorithme de génération de clés d'un schéma de signature numérique, ledit schéma de signature numérique étant construit à partir d'une application bilinéaire, le dispositif de calcul comprenant : 10 - des moyens (213) de réception et de mémorisation d'une clé secrète (mi, Si), agencés pour recevoir et mémoriser une clé secrète comprenant un message généré aléatoirement (mi) et une signature (Si) de ce message, ladite signature étant obtenue par le dispositif d'encapsulation en appliquant un algorithme de signature du schéma de signature paramétré par la clé secrète d'encapsulation (Sk) au message (mi), 15 - des moyens de réception (214), agencés pour recevoir au moins une valeur (ub obtenue en appliquant une opération mathématique à une deuxième valeur (k) générée aléatoirement par le deuxième dispositif et à un élément (ui) utilisé pour construire une clé de vérification d'encapsulation (17k) associée à la clé secrète d'encapsulation, - des moyens de calcul (215), agencés pour calculer la clé de session comme le résultat 20 d'un algorithme de vérification de signature du schéma de signature numérique appliqué à ladite au moins une valeur reçue et à au moins une partie de la clé secrète. 10. Système d'encapsulation d'une clé de session comprenant : - un dispositif d' encapsulation selon la revendication 8, 25 - au moins un dispositif de calcul selon la revendication 9. 11. Programme d'ordinateur sur un support de données et chargeable dans la mémoire d'un dispositif d'encapsulation, le programme comprenant des instructions de code pour l'exécution des étapes du procédé d'encapsulation d'une clé de session selon l'une des 30 revendications 1 à 5, lorsque le programme est exécuté sur ledit dispositif. 12. Support de données dans lequel est enregistré le programme selon la revendication 10. 3029667 27 13. Programme d'ordinateur sur un support de données et chargeable dans la mémoire d'un dispositif de calcul, le programme comprenant des instructions de code pour l'exécution des étapes du procédé de calcul d'une clé de session selon la revendication 7, lorsque le programme est exécuté sur ledit dispositif. 14. Support de données dans lequel est enregistré le programme selon la revendication 13. 5 10