FR 3111037 A1 20211203 FR 2005704 A 20200529 Procédé de dérivation d’une signature partielle avec vérification partielle L’invention concerne un procédé de dérivation d’une signature partielle pour un sous-ensemble d’un ensemble de messages, dit sous-ensemble de messages, ledit procédé, comprenant : - réception (E12-1) de l’ensemble de messages et d’une signature dudit ensemble de messages, ladite signature comprenant des éléments de signature de l’ensemble de messages, - génération (E12-2) des éléments anonymisés de la signature, - génération (E12-3) d’un premier élément de vérification calculé à partir des messages autres que ceux du sous-ensemble de messages, et - génération (E12-4) d’un second élément de vérification destiné à prouver que le premier élément de vérification est bien formé, et - envoi à une entité de vérification d’une signature partielle propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments de la signature de l’ensemble de messages anonymisés, le premier élément de vérification et le second élément de vérification, ladite signature partielle étant destinée à être vérifiée avec les seuls messages du sous-ensemble de messages, caractérisé en ce que le second élément de vérification est fonction de valeurs dérivées calculées à partir d’au moins les autres éléments de la signature partielle. Figure pour l’abrégé : Fig 1 Procédé de dérivation d’une signature partielle avec vérification partielle La présente invention se rapporte au domaine général des télécommunications et concerne plus précisément la sécurisation des échanges entre dispositifs de communication à l’aide de techniques cryptographiques telles que des techniques de signature électronique. La signature électronique est un outil cryptographique qui permet d’authentifier n’importe quelle donnée numérique, agissant ainsi comme l’équivalent d’une signature manuscrite traditionnelle. Cette technique est omniprésente dans notre vie quotidienne et a conduit à profusion de travaux en cryptographie autour de la notion d’authentification anonyme, où le but est de réduire l’information révélée lors de chaque authentification au strict minimum. Certaines technologies issues de ces travaux sont aujourd’hui massivement déployées, par exemple dans la plupart des ordinateurs portables, sous le nom de DAA (pour « Direct Anonymous Attestation ») ou dans certains processeurs sous le nom d’EPID (pour « Enhanced Privacy IDentity »). Derrière ces travaux se trouvent essentiellement des mécanismes de signature électronique. Ce type d’algorithme prend en entrée un ensemble de n messages et retourne une signature vérifiable publiquement par quiconque ayant connaissance d’une clé publique correspondant à la clé privée utilisée par le signataire pour signer les messages. La difficulté dans le contexte de l’authentification anonyme est que les messages non pertinents pour l’authentification doivent être « dissimulés » au moyen de preuves de connaissance, une technique cryptographique relativement coûteuse. Si l’on prend l’exemple d’un passeport numérique, l’ensemble de n attributs, tels que le prénom, le nom, la date de naissance, les caractéristiques physiques, etc. est signé par une autorité délivrant le passeport. S’il faut prouver que l’on satisfait un certain critère d’âge, par exemple un âge strictement supérieur à 18 ans, toute information autre que la date de naissance devient « inutile » et doit donc être cachée pour préserver la vie privée des utilisateurs. Cela signifie qu’il va falloir produire des preuves de connaissance de n-1 données autres que la date de naissance. Cela s’avère cependant beaucoup trop coûteux d’un point de vue efficacité : coût de communication de beaucoup de données pour permettre le calcul des preuves, temps de calcul de ces preuves. Lors de la conférence PKC 2020, un nouveau mécanisme de signature électronique résolvant ces problèmes a été publié : « Efficient Redactable Signature and Application to Anonymous Credentials », Olivier Sanders. Ce mécanisme permet au détenteur d’une signature sur n attributs de dériver une signature partielle sur n’importe quel sous-ensemble de ces n attributs. La signature dérivée ainsi obtenue est de taille constante et peut être vérifiée avec une complexité dépendant uniquement de la taille du sous-ensemble de dérivation. Pour reprendre l’exemple précédent sur les attributs d’un passeport, il est possible en utilisant cet algorithme de dériver une signature uniquement sur la date de naissance de l’utilisateur, cette signature pouvant ensuite être vérifiée avec essentiellement une unique exponentiation. Cependant ces propriétés sont possibles au prix d’une clé publique de taille relativement importante. En effet, celle-ci contient environ n^2 (ou n 2 ) éléments pour un système supportant n attributs. Cela peut s’avérer prohibitif pour de grandes valeurs de n : transmission de la clé publique aux parties prenantes, volume nécessaire pour stocker cette clé publique, complexité du calcul initial de la clé. 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é de dérivation d’une signature partielle pour un sous-ensemble d’un ensemble de messages, dit sous-ensemble de messages, ladite signature partielle étant destinée à prouver la validité d’une signature de l’ensemble de messages pour les messages du sous-ensemble de messages, ledit procédé, mis en œuvre par une entité de dérivation d’une signature partielle, comprenant : - réception de l’ensemble de messages et d’une signature dudit ensemble de messages, ladite signature comprenant des éléments de signature de l’ensemble de messages, - génération d’éléments anonymisés de la signature, - génération d’un premier élément de vérification calculé à partir des messages de l’ensemble autres que ceux du sous-ensemble de messages, et - génération d’un second élément de vérification destiné à prouver que le premier élément de vérification est bien formé, et - envoi à une entité de vérification d’une signature partielle propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments de la signature de l’ensemble de messages anonymisés, le premier élément de vérification et le second élément de vérification, ladite signature partielle étant destinée à être vérifiée avec les seuls messages du sous-ensemble de messages, caractérisé en ce que le second élément de vérification est fonction de valeurs dérivées calculées à partir d’au moins les autres éléments de la signature partielle. Le procédé de dérivation d’une signature partielle présente les mêmes avantages que le mécanisme décrit dans PKC 2020 : la signature obtenue est de taille constante, peu importe la valeur de n et la taille du sous-ensemble de messages, et il n’est pas nécessaire de connaître les messages non pris en compte, c’est-à-dire ceux qui ne font pas partie du sous-ensemble de messages, pour vérifier la signature. Par ailleurs, le schéma offre toutes les propriétés de sécurité habituellement attendues de ce type de schéma, ainsi que la capacité de prouver des relations sur les données. Le procédé de la présente invention améliore l’efficacité de ce mécanisme avec une clé publique de taille considérablement réduite, de l’ordre de 3n éléments. La complexité du procédé est dite linéaire alors que la complexité du mécanisme PKC 2020 est dite quadratique (en n^2). Le nombre d’éléments de la clé publique est donc drastiquement réduit et afin d’éviter des phénomènes de compensation où un attaquant tricherait sur certains messages et compenserait sur d’autres, il est introduit une dose d’imprédictibilité au moyen des valeurs dérivées qui en pratique vont rendre impossible toute tentative de compensation de l’attaquant. L’ensemble des valeurs dérivées permet en quelques sortes de « figer » les autres valeurs de la signature partielle et constitue ainsi un engagement du signataire sur ces autres valeurs. Dans un exemple de réalisation, soit I un sous-ensemble d’un ensemble {1, …, n}, n désignant le nombre maximal de messages pouvant être signés à la fois, l’ensemble de messages étant noté {m_1, …, m_n}, soit m_i les messages du sous-ensemble de messages, i appartenant à I, le calcul des valeurs dérivées du deuxième élément de vérification comprend : pour tout i de I, l’application d’une fonction H prenant en entrée n’importe quelle chaîne de caractères et retournant un scalaire non nul, ladite fonction H étant appliquée aux éléments de la signature de l’ensemble de messages anonymisés, au premier élément de vérification, au sous-ensemble I et à i. La fonction H permet de calculer les valeurs dérivées utilisées dans le calcul du second élément de vérification. Elle prend en entrée n’importe quelle chaîne de caractères et retourne un scalaire non nul. On comprend qu’un attaquant qui modifierait un ou plusieurs des autres éléments de la signature ne permettrait pas d’obtenir une vérification positive de la signature partielle. En effet, les valeurs dérivées calculées à partir de valeurs modifiées de la signature, et/ou compensées par des valeurs modifiées des premier, et/ou second élément de vérification seraient alors nécessairement différentes. Dans un exemple de réalisation, la fonction H prenant en entrée n’importe quelle chaîne de caractères et retournant un scalaire non nul est une fonction à sens unique. Dans cet exemple, la fonction H est une fonction à sens unique, c’est-à-dire une fonction qui peut facilement être calculée mais qui est difficile à inverser. Par exemple, la fonction H est une fonction de hachage cryptographique, telle que SHA-256. Dans un exemple de réalisation, le procédé de dérivation d’une signature partielle comprend au préalable une génération d’une clé secrète et d’une clé publique associée dans un environnement bilinéaire, ledit environnement désignant un premier groupe G1, un deuxième groupe G2 et un troisième groupe GT d’ordre p, ainsi qu’une application bilinéaire e, prenant en entrée un élément du premier groupe G1, un élément du deuxième groupe G2 et à valeurs dans le troisième groupe GT, soit g, respectivement h, un élément du premier groupe G1, respectivement du deuxième groupe G2, ladite génération comprenant : - une génération par l’entité signataire de 2 scalaires aléatoires a et b, lesdits scalaires aléatoires formant la clé secrète de l’entité signataire, et - un calcul par l’entité signataire de : G_i = g^{b^i}, pour tout 1 ≤ i ≤ n et n+2 ≤ i ≤ 2n, A = h^a, et B_i = h^{b^i}, pour tout 1 ≤ i ≤ n, la clé publique (Kp) est formée de g, h, G_i, A, et B_i et de la fonction de calcul des valeurs dérivées. On remarque que la génération du couple de clés Ks/Kp du signataire nécessite la génération de deux scalaires uniquement, a et b, ce dernier étant impliqué à différentes puissances dans les éléments de la clé publique. Dans le mécanisme de PKC2020 le signataire générait n+1 scalaires aléatoires utilisés notamment pour construire des éléments indispensables à la dérivation de la signature mais qui pesaient lourdement sur la taille de la clé publique car ils étaient au nombre de n^2-n (ou n 2 -n). D’où la complexité quadratique mentionnée précédemment. Ainsi, la clé publique utilisée dans le procédé de dérivation d’une signature partielle décrit ici n’est constituée que de 2n éléments de G1 et n + 2 éléments de G2. Pour mémoire la clé publique du mécanisme de PKC 2020 est constituée de (n^2+n+2)/2 (ou (n 2 +n+2)/2) éléments de G1 et n éléments de G2. Le procédé d’une signature partielle passe donc d’une complexité quadratique à une complexité linéaire. Une simple estimation pour des valeurs de n raisonnables, comme n = 100, n = 1000, etc., montre l’importance pratique de cette amélioration. Cette amélioration concerne les coûts inhérents à la transmission de la clé publique, au stockage de cette clé publique par exemple. Dans un exemple de réalisation, la signature de l’ensemble {1, …, n} de messages {m_1, …, m_n}, comprend la sélection par l’entité signataire d’un élément aléatoire s_1 du premier groupe G1, et le calcul de : s_2 = s_1^{a + b * m_1 + b^2 * m_2 + … + b^n * m_n}, ladite signature comprenant les éléments de signature s_1, s_2, et étant notée (s_1, s_2). Dans un exemple de réalisation, la dérivation de la signature partielle pour le sous-ensemble I de l’ensemble {1, …, n} de messages comprend : - calcul des éléments anonymisés ((s’_1, s’_2)) de la signature, ledit calcul comprenant : - génération d’un premier scalaire aléatoire t et d’un deuxième scalaire non nul r, - anonymisation du premier élément de signature et calcul de s’_1 = s_1^r, - anonymisation du deuxième élément de signature et calcul de s’_2 = s_2^r * s’_1^t, - génération du premier élément de vérification s’_3 = Π_{j dans {1, …, n} \ I} B_j^{m_j} * h^t, et - génération du deuxième élément de vérification s’_4 = Π_{i dans I}(G_{n+1-i}^t * Π_{j dans {1, …, n}\I} G_{ n+1-i+j}^m_j)^c_i, la signature partielle étant alors (s’_1, s’_2, s’_3, s’_4). On remarque que dans cet exemple où sont détaillés les calculs des différents éléments de la signature partielle le premier élément de vérification est très similaire, dans son calcul, à un élément de la signature partielle du schéma PKC 2020. En revanche, le calcul du deuxième élément de vérification ne trouve pas son équivalent dans le mécanisme PKC 2020, notamment car il est calculé à partir de valeurs dérivées. Cette différence est due à l’utilisation de moins de scalaires par rapport à l’autre mécanisme, qui conduisent à moins d’éléments dans la clé publique, mais aussi à l’utilisation adéquate de valeurs dérivées mentionnées ci-dessus qui permet de réduire le nombre d’éléments de cette clé publique tout en préservant la sécurité du procédé. L’invention concerne également un procédé de vérification d’une signature partielle pour un sous-ensemble d’un ensemble de messages, dit sous-ensemble de messages, ladite signature partielle étant destinée à prouver la validité d’une signature de l’ensemble de messages pour les messages du sous-ensemble de messages, ledit procédé, mis en œuvre par une entité de vérification d’une signature partielle, comprenant : - réception du sous-ensemble de messages et d’une signature partielle propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments anonymisés de la signature de l’ensemble de messages, un premier élément de vérification calculé à partir des messages de l’ensemble autres que ceux du sous-ensemble de messages et un second élément de vérification destiné à prouver que le premier élément de vérification est bien formé, le second élément de vérification étant fonction de valeurs dérivées à partir d’au moins les autres éléments de la signature partielle, - calcul des valeurs dérivées au moyen d’une fonction de calcul de valeurs dérivées, - vérification d’une première équation et d’une seconde équation, ladite première équation comprenant les messages du sous-ensemble de messages, les éléments de la signature de l’ensemble de messages, le premier élément de vérification et des éléments de la clé publique, la seconde équation comprenant le premier élément de vérification de la signature, le deuxième élément de vérification de la signature, des éléments de la clé publique et les valeurs dérivées. Le procédé de vérification décrit ici est indissociable du procédé de dérivation d’une signature partielle décrit précédemment. Evidemment, L’utilisation de valeurs dérivées dans le calcul de la signature partielle se retrouve logiquement dans le procédé de vérification qui se démarque également de la vérification de signature partielle du mécanisme de PKC 2020. Dans un exemple de réalisation du procédé de vérification d’une signature partielle, une clé secrète et une clé publique ont été préalablement générées dans un environnement bilinéaire pour une entité signataire, ledit environnement désignant un premier groupe G1, un deuxième groupe G2 et un troisième groupe GT d’ordre p, ainsi qu’une application bilinéaire e, prenant en entrée un élément du premier groupe G1, un élément du deuxième groupe G2 et à valeurs dans le troisième groupe GT, soit g, respectivement h, un élément du premier groupe G1, respectivement du deuxième groupe G2, ladite génération de la clé secrète et de la clé publique comprenant : - génération par l’entité signataire de 2 scalaires aléatoires a et b, lesdits scalaires aléatoires formant la clé secrète de l’entité signataire, et n désignant le nombre maximal de messages pouvant être signés à la fois, - calcul par l’entité signataire de : G_i = g^{b^i}, pour tout 1 ≤ i ≤ n et n+2 ≤ i ≤ 2n, A = h^a, et B_i = h^{b^i}, pour tout 1 ≤ i ≤ n, g, h, G_i, A, et B_i et la fonction de calcul de valeurs dérivées, notée H, formant la clé publique, la vérification de la signature partielle, notée (s’_1, s’_2, s’_3, s’_4), reçue par l’entité de vérification comprenant pour un sous-ensemble I d’un ensemble {1, …, n}, l’ensemble de messages étant noté {m_1, …, m_n}, soit m_i les messages du sous-ensemble de messages : - calcul des valeurs dérivées : c_i = H(s’_1 || s’_2 || s’_3 || I || i), pour tout indice i dans I , - vérification de la première équation : e(s’_1, A*(Π_{i dans I} B_i^{m_i}) * s’_3) = e(s’_2, h), et de la seconde équation : e(Π_{i dans I} G_{n+1-i}^{c_i}, s’_3) = e(s’_4, h). L’invention concerne aussi une entité de dérivation d’une signature partielle destinée à dériver une signature partielle pour un sous-ensemble d’un ensemble de messages, dit sous-ensemble de messages, ladite signature partielle étant destinée à prouver la validité d’une signature de l’ensemble de messages pour les messages du sous-ensemble de messages, ladite entité de dérivation de signature partielle, comprenant : - des moyens de réception, agencés pour recevoir l’ensemble de messages et une signature dudit ensemble de messages, ladite signature comprenant des éléments de signature de l’ensemble de messages, - des premiers moyens de génération, agencés pour générer des éléments anonymisés de la signature, - des deuxièmes moyens de génération, agencés pour générer un premier élément de vérification calculé à partir des messages de l’ensemble autres que ceux du sous-ensemble de messages, et - des troisièmes moyens de génération, agencés pour générer un second éléments de vérification destiné à prouver que le premier élément de vérification est bien formé, et - des moyens d’envoi, agencés pour envoyer à une entité de vérification une signature partielle propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments de la signature de l’ensemble de messages anonymisés, le premier élément de vérification et le second élément de vérification, ladite signature partielle étant destinée à être vérifiée avec les seuls messages du sous-ensemble de messages, caractérisé en ce que le second élément de vérification est fonction de valeurs dérivées calculées à partir d’au moins les autres éléments de la signature partielle. L’invention porte également sur une entité de vérification d’une signature partielle, destinée à vérifier une signature partielle pour un sous-ensemble d’un ensemble de messages, dit sous-ensemble de messages, ladite signature partielle étant destinée à prouver la validité d’une signature de l’ensemble de messages pour les messages du sous-ensemble de messages, ladite entité de vérification de signature partielle comprenant : - des premiers moyens de réception, agencés pour recevoir le sous-ensemble de messages et une signature partielle propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments anonymisés de la signature de l’ensemble de messages, un premier élément de vérification calculé à partir des messages de l’ensemble autres que ceux du sous-ensemble de messages et un second élément de vérification destiné à prouver que le premier élément de vérification est bien formé, le second élément de vérification étant fonction de valeurs dérivées à partir d’au moins les autres éléments de la signature partielle, - des moyens de calcul, agencés pour calculer des valeurs dérivées au moyen d’une fonction de calcul de valeurs dérivées, - des moyens de vérification, agencés pour vérifier une première équation et une seconde équation, ladite première équation comprenant les messages du sous-ensemble de messages, les éléments de la signature de l’ensemble de messages, le premier élément de vérification et des éléments de la clé publique, la seconde équation comprenant le premier élément de vérification de la signature, le deuxième élément de vérification de la signature, des éléments de la clé publique et les valeurs dérivées. L’invention concerne également un système de dérivation de signature partielle et de vérification comprenant : - une entité de dérivation d’une signature partielle telle que décrite précédemment, - une entité de vérification d’une signature partielle telle que décrite précédemment. L’invention porte également sur une utilisation d’un système de dérivation de signature partielle et de vérification tel que décrit ci-dessus dans un système d’accréditations anonymes. L’invention concerne aussi un programme d’ordinateur sur un support de données et chargeable dans la mémoire d’un ordinateur, comprenant des instructions de code de programme destinées à commander l’exécution des étapes du procédé de dérivation d’une signature partielle tel que décrit précédemment, lorsque le programme est exécuté sur ledit ordinateur. L’invention concerne également un support de données dans lequel est enregistré le programme précédent. L’invention porte aussi sur un programme d’ordinateur sur un support de données et chargeable dans la mémoire d’un ordinateur, comprenant des instructions de code de programme destinées à commander l’exécution des étapes du procédé de vérification de signature partielle introduit précédemment, lorsque le programme est exécuté sur ledit ordinateur. L’invention porte également sur un support de données dans lequel est enregistré le programme ci-dessus. Brève description des figures D'autres caractéristiques et avantages de la présente invention seront mieux compris de la description détaillée et des figures annexées parmi lesquels : présente les étapes d’un procédé de dérivation d’une signature partielle et de vérification de la signature partielle pour un sous-ensemble d’un ensemble de messages, selon un exemple de réalisation ; est une représentation schématique d’une entité de dérivation d’une signature partielle apte à mettre en œuvre les étapes du procédé de dérivation d’une signature partielle pour un sous-ensemble de messages, selon un exemple de réalisation ; est une représentation schématique d’une entité de vérification d’une signature partielle apte à mettre en œuvre les étapes du procédé de vérification d’une signature partielle pour un sous-ensemble de messages, selon un exemple de réalisation. Description détaillée Les étapes d’un procédé de dérivation d’une signature partielle et de vérification associée pour un sous-ensemble d’un ensemble de messages, dit sous-ensemble de messages, selon un exemple de réalisation, vont maintenant être décrites en relation avec la figure 1. A noter que l’on utilise ici une notation habituelle en cryptographie dans laquelle : - « x_i » représente « x indice i », soit « x i » ; - « g^x » représente « g puissance x », soit « g x », - le produit est schématisé par un astérisque : « * », ou par le signe classique П (pi capitale) lorsque de nombreux facteurs indexés interviennent. Une notation où l’astérisque est absente est également possible : « 2n » pour « 2 * n », - l’addition est classiquement schématisée par le signe « + », ou par le signe Σ (sigma capitale) lorsque de nombreux facteurs indexés interviennent. Le schéma de signature décrit ici fonctionne dans un environnement bilinéaire qui désigne trois groupes, habituellement notés G1, G2 et GT, d’ordre p, ainsi qu’une application bilinéaire e appelée « couplage bilinéaire » prenant en entrée un élément du groupe G1 et un élément du groupe G2 et à valeurs dans le groupe GT. Ce type d’environnement est devenu classique en cryptographie et peut être implémenté très efficacement. Il est à noter que les rôles de G1 et de G2 sont parfaitement interchangeables. Par ailleurs le terme « scalaire » désigne ici n’importe quel entier compris entre 0 et p – 1, p étant l’ordre des groupes mentionnés ci-dessus. Le schéma de signature repose sur un système qui comprend plusieurs entités : - une entité signataire 10. L’entité signataire 10 est un dispositif informatique qui comprend des instructions de code pour mettre en œuvre celles des étapes du procédé de dérivation d’une signature partielle mises en œuvre par l’entité signataire 10, - une entité 11 de dérivation d’une signature partielle. L’entité 11 de dérivation d’une signature partielle est un dispositif informatique qui comprend des instructions de code pour mettre en œuvre celles des étapes du procédé de dérivation d’une signature partielle mises en œuvre par l’entité 11 de dérivation d’une signature partielle, - une entité 12 de vérification d’une signature partielle. L’entité 12 de vérification d’une signature partielle est un dispositif informatique qui comprend des instructions de code pour mettre en œuvre celles des étapes du procédé de dérivation d’une signature partielle mises en œuvre par l’entité 12 de vérification d’une signature partielle. A noter qu’une même entité peut cumuler plusieurs rôles. Par exemple, une entité signataire peut également jouer le rôle d’entité de dérivation d’une signature partielle. De même, une entité signataire peut également être amenée à jouer le rôle d’entité de vérification d’une signature partielle. Pour mémoire, un couplage bilinéaire e est une fonction vérifiant entre autres les propriétés suivantes : e(g^a, h^b) = e(g, h)^(a.b) e(g^a, q) = e(g, q)^a = e(g, q^a) Dans ce qui suit, n désigne le nombre maximal de données pouvant être signées à la fois. Par la suite, on utilise une notation classique en cryptographie et l’on parle de « messages » plutôt que de « données ». Ainsi, on dispose d’un ensemble {1, …, n} de messages à signer, noté {m_1, …, m_n}. Par exemple, pour un individu, de tels messages peuvent être son nom, son adresse, sa date de naissance, etc. Dans une étape préalable E10 de génération de clés, l’entité signataire 10 génère pour le schéma de signature, un couple de clés secrète/publique Ks/Kp. A noter que dans un autre exemple de réalisation, la génération de clés peut être mise en œuvre par une entité dédiée de génération de clés, distincte de l’entité signataire 10, les clés, et notamment la clé secrète étant alors transmises à l’entité signataire 10 de façon sécurisée, selon des méthodes connues non présentées ici. Soit g, respectivement h, un élément aléatoire du groupe G1, respectivement du groupe G2, l’entité signataire 10 commande la génération de deux scalaires a et b et calcule les éléments suivants : G_i = g^{b^i}, pour 1 ≤ i ≤ n, et n + 2 ≤ i ≤ 2n A = h^a B_i = h^{b^i}, pour 1≤ i ≤ n La clé publique Kp est formée des éléments g, h, A, B_i et G_i, pour les indices mentionnés ci-dessus. La clé publique définit également une fonction, notée H, destinée à figer les données auxquelles elle s’applique. Plus précisément, appliquer la fonction H à des données produit un engagement sur ces données (on parle de « commitment » en anglais). La fonction H prend en entrée n’importe quelle chaîne de caractères et retourne un scalaire non nul. Dans un exemple de réalisation la fonction H est une fonction à sens unique. Pour mémoire, une fonction à sens unique est une fonction qui peut facilement être calculée mais qui est difficile à inverser. Dans un autre exemple de réalisation, la fonction H est une fonction de hachage cryptographique, telle que SHA-256 (de l’anglais « Secure Hash Algorithm). La clé secrète Ks du signataire dans le système de signature est uniquement constituée des scalaires a, b. Ainsi : Ks = (a, b), et Kp = (g, h, A, B_i, G_i, H) De manière classique, la clé publique Kp est ensuite publiée ou transmise, ici par l’entité signataire 10. A noter que le coût inhérent à cette publication ou à cette transmission est considérablement réduit, notamment par rapport à la solution décrite à PKC 2020 : « Efficient Redactable Signature and Application to Anonymous Credentials », Olivier Sanders, du fait de la taille de la clé publique Kp. Dans cet exemple de réalisation la clé publique Kp est en effet constituée de 2n éléments de G1 et n + 2 éléments de G2, contre (n^2 + n + 2)/2 éléments pour le protocole décrit dans PKC 2020. Une estimation pour des valeurs raisonnables de n telles que n = 100, n = 1000, …, montre l’importance pratique de cette amélioration, notamment pour la transmission et/ou le stockage de la clé publique. On parle de complexité linéaire, ou « en n » pour la présente solution contre une complexité quadratique, ou en « n^2 » pour le mécanisme présenté à PKC 2020. Le schéma de signature décrit ici permet ainsi de vérifier très efficacement la validité d’une signature sur n’importe quel sous-ensemble de messages. Cette efficacité repose notamment sur la clé publique dont le nombre d’éléments est drastiquement réduit par rapport au mécanisme décrit à PKC 2020. Dans une deuxième étape E11 de signature, l’entité signataire 10 signe les n messages m_1, …, m_n au moyen de sa clé secrète Ks. A cette fin, l’entité signataire 10 sélectionne un élément aléatoire s_1 du groupe G1 et génère un second élément s_2 comme suit : s_2 = s_1^{a + b * m_1 + b^2 * m_2 +…+ b^n * m_n} La signature de l’ensemble des n messages est alors (s_1, s_2). A noter que l’entité signataire 10 peut également signer des messages de taille n’, avec n’ L’entité 11 de dérivation d’une signature partielle reçoit, dans une sous-étape E12-1 de réception d’une étape E12 de dérivation d’une signature partielle la signature (s_1, s_2) de cet ensemble de n messages ainsi que l’ensemble des n messages {m_1, …, m_n}. L’étape E12 de dérivation d’une signature partielle permet de dériver de la signature sur les n messages reçue au cours de l’étape E12-1, une signature appelée par la suite « signature partielle » sur n’importe quel sous-ensemble des n messages. L’ensemble des indices des messages de ce sous-ensemble est désigné par I dans ce qui suit. L’entité 11 de dérivation d’une signature partielle génère, dans une sous-étape E12-2 de génération des éléments anonymisés de la signature (on utilise le terme « randomized » en anglais), un scalaire t, potentiellement égal à 0, ainsi qu’un scalaire aléatoire r non nul. Les scalaires t et r sont destinés à anonymiser la signature. L’entité 11 de dérivation calcule ensuite un premier et un deuxième élément anonymisé de la signature : s’_1 = s_1^r s’_2 = s_2^r * s’_1^t Dans une sous-étape E12-3 de génération d’un premier élément de vérification, l’entité 11 calcule un troisième élément de la signature : s’_3 = П_{j dans {1, …, n} \ I} B_j^{m_j} * h^t Ce troisième élément de la signature s’_3 constitue un premier élément de vérification de la signature partielle. On remarque que tous les indices du produit formant ce premier élément de vérification s’_3 sont tous les éléments de {1, …, n} qui ne sont pas dans I. Dans une étape suivante E12-4 de génération d’un second élément de vérification de la signature, l’entité 11 calcule un quatrième élément de la signature s’_4. A cette fin l’entité 11 calcule des valeurs dérivées c_i comme suit : c_i = H(s’_1 || s’_2 || s’_3 || I || i}, pour tout i dans I. Le symbole « || » désigne la concaténation de chaînes de caractères. Par définition de la fonction H, chacun des éléments c_i est un scalaire non nul. Les valeurs c_i, obtenues en appliquant la fonction H, constituent des valeurs dérivées des éléments de la signature s’_1, s’2 et s’3 . Les valeurs dérivées figent en quelque sorte les éléments de la signature. Elles sont destinées à éviter des phénomènes dits « de compensation », où un adversaire tricherait sur certains messages mais arriverait à compenser sur d’autres messages. Ces valeurs dérivées sont destinées à contrecarrer la simplicité de la clé publique qui utilise moins de scalaires, conduisant donc à moins d’éléments dans la clé publique. L’entité de dérivation 11 calcule alors le quatrième élément de la signature partielle s’_4 : s’_4 = П_{i dans I}(G_{n+1–i}^t * П _{j dans {1,…,n}\I}(G_{n+1-i+j}^m_j))^c_i Ce quatrième élément de la signature s’_4 constitue le second élément de vérification de la signature partielle. La signature partielle est alors (s’_1, s’_2, s’_3, s’_4). La signature partielle est propre aux messages m_i, avec i dans I et est destinée à être utilisée pour vérifier la validité de la signature de ce sous-ensemble de messages m_i sur la base de la signature des n messages (s_1, s_2), et avec les seuls messages du sous-ensemble de messages. On remarque que dans tous les cas, les indices des éléments G du second élément de vérification de la signature s’_4 sont différents de n + 1. Tous les éléments nécessaires à la vérification des signatures sont donc présents dans la clé publique Kp. A noter que dans un exemple de réalisation où la valeur du scalaire t est fixée à 0, le système de signature garantit l’authenticité des messages signés mais perd ses propriétés d’anonymat. Cet exemple de réalisation est donc particulièrement indiqué dans un contexte où la propriété d’anonymat n’est pas désirée. Dans l’exemple de réalisation décrit ici, dans l’étape E12-4 de dérivation d’un second élément de vérification, l’entité 11 de dérivation de signature partielle calcule, ou dérive, le second élément de vérification s’_4. Ce second élément de vérification s’_4 est destiné à prouver que le premier élément de vérification s’_3 est valide, c’est-à-dire qu’il est bien formé. Intuitivement, le second élément de vérification s’_4 permet de montrer que le premier élément de vérification s’_3, calculé à partir des messages dissimulés, est bien formé, c’est-à-dire qu’il ne peut pas être utilisé pour tricher sur la valeur des messages m_i, pour i dans I, qui sont présentés à l’entité 12 de vérification de signature partielle. Dans une sous-étape suivante E12-5 d’envoi, qui constitue la fin de l’étape E12 de génération d’une signature partielle, l’entité 11 de dérivation d’une signature partielle envoie à l’entité 12 de vérification la signature partielle (s’_1, s’_2, s’_3, s’_4) et le sous-ensemble de messages m_i, avec i dans I. Ainsi, quel que soit le nombre de messages du sous-ensemble de messages m_i, avec i dans I, quel que soit le nombre de messages de l’ensemble de messages, la signature partielle est de taille constante et comprend peu d’éléments, en l’espèce quatre. A noter également que seuls les messages du sous-ensemble de messages {m_i}, avec i dans I, sont transmis. L’entité 12 de vérification n’a donc pas besoin de connaître l’ensemble de messages {m_1, …, m_n} ou des messages qui seraient liés par construction à des messages du sous-ensemble de messages, tels que par exemple pour l’âge, la date de naissance. Dans une étape suivante E13 de réception, l’entité 12 de vérification d’une signature partielle reçoit de l’entité 11 de dérivation d’une signature partielle le sous-ensemble de messages {m_i}, avec i dans I, et la signature partielle (s’_1, s’_2, s’_3, s’_4) générée. L’entité 12 de vérification d’une signature partielle, dans une étape préalable E14 de calcul des valeurs dérivées, calcule : c_i = H(s’_1 || s’_2 || s’_3 || I || i), pour tout indice i dans I Dans une étape suivante E15 de vérification de signature, l’entité 12 de vérification d’une signature partielle teste si les deux équations suivantes sont satisfaites : e(s’_1, A * (П_{i dans I} B_i^ {m_i}) * s’_3) = e(s’_2, h), (1) et e(П_{i dans I} G_{n+1-i}^ {c_i}, s’_3) = e(s’_4, h), (2) Si les deux équations sont satisfaites (branche « ok » sur la figure 1), alors la signature est considérée comme valide. Sinon (branche « nok » sur la figure 1), elle est rejetée. Une signature obtenue au cours de l’étape E11 de signature puis dérivée au cours de l’étape E12 de dérivation d’une signature partielle est nécessairement valide au regard de l’étape E15 de vérification de signature. En effet : (1) e(s’_1, A * (П_{i dans I} B_i^ {m_i}) * s’_3) = e(s_1^r, h^a * П_{i dans I} h^{b^i * m_i} * П_{j dans {1,…,n}\I}h^{b^j * m_j} * h^t) = e(s_1^r, h^a * h^t * П_{i dans {1,…,n}} h^{b^i * m_i}) Et en remarquant que e(g^a, q) = e(g, q)^a = e(g, q^a) : = e(s_1^{r (t + a + b * m_1 + b^2 * m_2 + …+ b^n * m_n)}, h) = e(s’_1^t * s_1^{r (a + b * m_1 + b^2 * m_2 + …+ b^n * m_n)}, h) = e(s’_2, h) La première équation (1) est donc bien vérifiée. En ce qui concerne la seconde équation : (2) e(П_{i dans I} G_{n+1-i}^ {c_i}, s’_3) = e(П_{i dans I} G_{n+1-i}^{c_i}, П_{j dans {1, …, n}\I}B_j^{m_j} * h^t) = e((П_{i dans I} G_{n+1-i}^{c_i})^{t + Σ{j dans {1,…,n}\I}b^j * m_j}, h) = e(П_{i dans I}( G_{n+1-i}^t * G_{n+1-i}^{ Σ{j dans {1,…,n}\I}b^j * m_j})^c_i, h) Il suffit de remarquer que (G_u)^{b^v} = g^{b^{u + v}} = G_{u + v} pour tout entier u et v. Ainsi le couplage précédent peut s’écrire : e(П_{i dans I}( G_{n+1-i}^t * П_{j dans {1, …,n}\I} G_{n+1-i+j}^m_j})^{c_i}, h) = e(s’_4, h) La seconde équation de vérification est donc bien vérifiée. Dans un exemple de réalisation (non représenté sur la figure 1) où la vérification de signature, mise en œuvre par l’entité 12 de vérification de signature partielle au cours de l’étape préalable E14 de calcul des valeurs dérivées et de l’étape E15 de vérification de signature, serait mise en œuvre directement sur des signatures non partielles, c’est-à-dire sur des signatures obtenues au terme de l’étape E11 de signature, les première et seconde valeurs de vérification s’_3, s’_4 sont alors fixées à 1 et I = {1, …, n}. Le procédé de dérivation d’une signature partielle, et le procédé de vérification associé, présentent un intérêt pour tous les cas d’usage nécessitant une authentification, qu’elle soit anonyme ou non. Plus précisément, ils s’appliquent dans les cas où plusieurs données sont certifiées mais où il est fréquent d’avoir besoin de ne vérifier l’authenticité que de certaines d’entre elles. Dans un premier exemple d’utilisation, une base de données contenant potentiellement des millions de données est certifiée. Lorsqu’une personne souhaite récupérer une donnée de cette base, elle n’a besoin de vérifier l’authenticité que de cette donnée. Avec un système de signature classique, il lui faudrait récupérer l’ensemble de la base de données pour effectuer cette vérification. Avec le mécanisme décrit dans PKC 2020, la signature serait courte et la vérification efficace mais la clé publique contiendrait des trillions d’éléments. Avec le procédé de dérivation d’une signature partielle et le procédé de vérification associé décrits ici, on garderait les mêmes avantages mais avec une clé publique nettement plus courte. La transmission de la clé publique et son stockage par cette personne sont beaucoup plus efficaces, en gardant des propriétés de sécurité indéniables. Les procédés de dérivation et de vérification d’une signature partielle décrits précédemment sont particulièrement adaptés pour une utilisation dans les attestations ou accréditations anonymes. Une attestation anonyme permet de prouver une propriété ou un droit lié à son détenteur, sans révéler l’identité de celui-ci. Elle protège la vie privée du détenteur de l’accréditation anonyme en fournissant la propriété d’anonymat et de non traçabilité. Elle prend la forme ici d’une donnée cryptographique : la signature partielle, qui peut être montrée par son détenteur, ici l’entité 11 de dérivation de signature partielle, à une organisation, ici l’entité 12 de vérification de signature partielle, pour prouver une propriété liée à son identité. Une entité de dérivation d’une signature partielle, selon un exemple de réalisation, va maintenant être décrite en relation avec la figure 2. L’entité 11 de dérivation d’une signature partielle est un équipement informatique, tel un ordinateur. L’entité 11 de dérivation d’une signature partielle comprend : - une unité de traitement ou processeur 110, ou "CPU" (de l'anglais "Central Processing Unit"), destinée à charger des instructions en mémoire, à les exécuter, à effectuer des opérations ; - un ensemble de mémoires, dont une mémoire volatile 111, ou "RAM" (pour "Random Access Memory") utilisée pour exécuter des instructions de code, stocker des variables, etc., et une mémoire de stockage 112 de type « EEPROM » (de l’anglais « Electrically Erasable Programmable Read Only Memory »). En particulier, la mémoire de stockage 112 est agencée pour mémoriser un module logiciel de dérivation d’une signature partielle qui comprend des instructions de code pour mettre en œuvre les étapes du procédé de dérivation d’une signature partielle tel que décrit précédemment et qui sont mises en œuvre par l’entité 11 de dérivation d’une signature partielle. La mémoire de stockage 112 est également agencée pour mémoriser dans une zone sécurisée la clé secrète Ks du schéma de signature. L’entité 11 de dérivation de signature partielle comprend également : - un module de réception 113 adapté pour recevoir l’ensemble de messages {m_1, …, m_n} et une signature dudit ensemble de messages, ladite signature comprenant des éléments de signature (s_1, s_2) de l’ensemble de messages. Le module de réception 113 est agencé pour mettre en œuvre l’étape E12-1 du procédé de dérivation d’une signature partielle tel que décrit précédemment ; - un premier module de génération 114, agencé pour générer des éléments anonymisés de la signature (s’_1, s’_2). Le premier module de génération 114 est agencé pour mettre en œuvre l’étape E12-2 de génération des éléments anonymisés de la signature du procédé de dérivation d’une signature partielle tel que décrit précédemment ; - un deuxième module de génération 115, agencé pour générer un premier élément de vérification s’_3 calculé à partir des messages autres que ceux du sous-ensemble de messages. Le deuxième module de génération 114 est agencé pour mettre en oeuvre l’étape E12-3 de génération d’un premier élément de vérification du procédé de dérivation d’une signature partielle tel que décrit précédemment ; - un troisième module de génération 116, agencé pour générer un second élément de vérification s’_4 destiné à prouver que le premier élément de vérification est bien formé. Le troisième module de génération 116 est adapté pour mettre en œuvre l’étape E12-4 de génération d’un second élément de vérification du procédé de dérivation d’une signature partielle tel que décrit précédemment ; et - un module d’envoi 117, agencé pour envoyer à une entité de vérification 12 une signature partielle propre au sous-ensemble de messages. La signature partielle comprend un nombre constant d’éléments : au moins les éléments de la signature de l’ensemble de messages anonymisés (s’_1, s’_2), le premier élément de vérification s’_3 et le second élément de vérification s’_4. La signature partielle est destinée à être vérifiée avec les seuls messages du sous-ensemble de messages. Le second élément de vérification s’_4 est fonction de valeurs dérivées calculées à partir d’au moins les autres éléments de la signature. Le module d’envoi 117 est adapté pour mettre en œuvre la sous-étape E12-5 d’envoi de l’étape E12 de dérivation d’une signature partielle du procédé de dérivation d’une signature partielle tel que décrit précédemment. Le module de réception 113, le premier module de génération 114, le deuxième module de génération 115, troisième module de génération 116 et le module d’envoi 117 sont de préférence des modules logiciels comprenant des instructions logicielles pour mettre en œuvre celles des étapes du procédé de dérivation d’une signature partielle mises en œuvre par l’entité 11 de dérivation d’une signature partielle. L'invention concerne donc aussi : - un programme d'ordinateur comportant des instructions pour la mise en œuvre des étapes du procédé de dérivation d’une signature partielle tel que décrit précédemment et mises en œuvre par l’entité de dérivation d’une signature partielle lorsque ce programme est exécuté par un processeur du dispositif de dérivation d’une signature partielle, - un support d’enregistrement lisible sur lequel est enregistré le programme d'ordinateur décrit ci-dessus. Une entité de vérification d’une signature partielle, selon un exemple de réalisation, va maintenant être décrite en relation avec la figure 3. L’entité 12 de vérification d’une signature partielle est un équipement informatique, tel un ordinateur. L’entité 12 de vérification d’une signature partielle comprend : - une unité de traitement ou processeur 120, ou CPU, destinée à charger des instructions en mémoire, à les exécuter, à effectuer des opérations ; - un ensemble de mémoires, dont une mémoire volatile 121, ou RAM utilisée pour exécuter des instructions de code, stocker des variables, etc., et une mémoire de stockage 122 de type EEPROM. En particulier, la mémoire de stockage 122 est agencée pour mémoriser un module logiciel de vérification d’une signature partielle telle que générée par l’entité 11 de dérivation d’une signature partielle. Le module logiciel comprend des instructions de code pour mettre en œuvre les étapes du procédé de vérification d’une signature partielle tel que décrit précédemment et qui sont mises en œuvre par l’entité 12 de vérification d’une signature partielle. La mémoire de stockage 122 est également agencée pour mémoriser dans une zone de stockage la clé publique Kp du schéma de signature. L’entité 12 de vérification d’une signature partielle comprend également : - un module de réception 123, agencé pour recevoir le sous-ensemble de messages et une signature partielle (s’_1, s’_2, s’_3, s’_4) propre au sous-ensemble de messages. Ladite signature partielle comprend un nombre constant d’éléments : au moins les éléments anonymisés de la signature de l’ensemble de messages (s’_1, s’_2), un premier élément de vérification s’_3 calculé à partir des messages de l’ensemble autres que ceux du sous-ensemble de messages et un second élément de vérification s’_4 destiné à prouver que le premier élément de vérification est bien formé. Le second élément de vérification s’_4 est fonction de valeurs dérivées à partir d’au moins les autres éléments de la signature partielle. Le premier module de réception est adapté pour mettre en œuvre l’étape E14 de réception du procédé de dérivation d’une signature partielle tel que décrit précédemment ; - un module 124 de calcul, agencé pour calculer des valeurs dérivées au moyen d’une fonction de calcul de valeurs dérivées. Le module de calcul 124 est adapté pour mettre en œuvre l’étape E14 de calcul des valeurs dérivées du procédé de dérivation d’une signature partielle tel que décrit précédemment ; - un module 125 de vérification, agencé pour vérifier une première équation et une seconde équation. La première équation comprend les messages du sous-ensemble de messages, les éléments de la signature de l’ensemble de messages, le premier élément de vérification et des éléments de la clé publique. La seconde équation comprend le premier élément de vérification de la signature, le deuxième élément de vérification de la signature, des éléments de la clé publique et les valeurs dérivées. Le module 125 de vérification est agencé pour mettre en œuvre l’étape E15 de vérification du procédé de dérivation d’une signature partielle tel que décrit précédemment. Le module de réception 123, le module 124 de calcul et le module 125 de vérification sont de préférence des modules logiciels comprenant des instructions logicielles pour mettre en œuvre celles des étapes du procédé de dérivation d’une signature partielle mises en œuvre par l’entité 12 de vérification d’une signature partielle. L'invention concerne donc aussi : - un programme d'ordinateur comportant des instructions pour la mise en œuvre des étapes du procédé de dérivation d’une signature partielle tel que décrit précédemment et mises en œuvre par l’entité de vérification d’une signature partielle lorsque ce programme est exécuté par un processeur du dispositif 12 de vérification d’une signature partielle, - un support d’enregistrement lisible sur lequel est enregistré le programme d'ordinateur décrit ci-dessus. L’invention porte également sur un système de dérivation d’une signature partielle et de vérification qui comprend : - une entité 11 de dérivation d’une signature partielle, telle que décrite précédemment, et - une entité 12 de vérification d’une signature partielle telle que décrite précédemment. Procédé de dérivation d’une signature partielle pour un sous-ensemble d’un ensemble de messages ({m_1, …, m_n}), dit sous-ensemble de messages, ladite signature partielle étant destinée à prouver la validité d’une signature de l’ensemble de messages pour les messages du sous-ensemble de messages, ledit procédé, mis en œuvre par une entité de dérivation d’une signature partielle, comprenant : - réception (E12-1) de l’ensemble de messages ({m_1, …, m_n}) et d’une signature dudit ensemble de messages, ladite signature comprenant des éléments de signature ((s_1, s_2)) de l’ensemble de messages, - génération (E12-2) d’éléments anonymisés de la signature ((s’_1, s’_2), - génération (E12-3) d’un premier élément de vérification (s’_3) calculé à partir des messages de l’ensemble autres que ceux du sous-ensemble de messages, et - génération (E12-4) d’un second élément de vérification (s’_4) destiné à prouver que le premier élément de vérification est bien formé, et - envoi (E12-5) à une entité de vérification (12) d’une signature partielle propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments de la signature de l’ensemble de messages anonymisés ((s’_1, s’_2)), le premier élément de vérification (s’_3) et le second élément de vérification (s’_4), ladite signature partielle étant destinée à être vérifiée avec les seuls messages du sous-ensemble de messages, caractérisé en ce que le second élément de vérification (s’_4) est fonction de valeurs dérivées calculées à partir d’au moins les autres éléments de la signature partielle. Procédé de dérivation d’une signature partielle selon la revendication 1 dans lequel, soit I un sous-ensemble d’un ensemble {1, …, n}, n désignant le nombre maximal de messages pouvant être signés à la fois, l’ensemble de messages étant noté {m_1, …, m_n}, soit m_i les messages du sous-ensemble de messages, i appartenant à I, le calcul des valeurs dérivées, notées c_i, du deuxième élément de vérification (s’_4) comprend : pour tout i de I, l’application d’une fonction H prenant en entrée n’importe quelle chaîne de caractères et retournant un scalaire non nul, ladite fonction H étant appliquée aux éléments de la signature de l’ensemble de messages anonymisés ((s’_1, s’_2)), au premier élément de vérification (s’_3), au sous-ensemble I et à i afin de calculer les valeurs dérivées c_i. Procédé de dérivation d’une signature partielle selon la revendication 2 dans lequel la fonction H prenant en entrée n’importe quelle chaîne de caractères et retournant un scalaire non nul est une fonction à sens unique. Procédé de dérivation d’une signature partielle selon l’une des revendications précédentes comprenant au préalable une génération (E10) d’une clé secrète (Ks) et d’une clé publique (Kp) associée dans un environnement bilinéaire, ledit environnement désignant un premier groupe G1, un deuxième groupe G2 et un troisième groupe GT d’ordre p, ainsi qu’une application bilinéaire e, prenant en entrée un élément du premier groupe G1, un élément du deuxième groupe G2 et à valeurs dans le troisième groupe GT, soit g, respectivement h, un élément du premier groupe G1, respectivement du deuxième groupe G2, ladite génération comprenant : - une génération par l’entité signataire (10) de 2 scalaires aléatoires a et b, lesdits scalaires aléatoires formant la clé secrète de l’entité signataire, et - un calcul par l’entité signataire de : G_i = g^{b^i}, pour tout 1 ≤ i ≤ n et n+2 ≤ i ≤ 2n, A = h^a, et B_i = h^{b^i}, pour tout 1 ≤ i ≤ n, la clé publique (Kp) est formée de g, h, G_i, A, et B_i et de la fonction de calcul des valeurs dérivées. Procédé de dérivation d’une signature partielle selon l’une des revendications précédentes dans lequel la signature de l’ensemble {1, …, n} de messages {m_1, …, m_n}, comprend la sélection par l’entité signataire d’un élément aléatoire s_1 du premier groupe G1, et le calcul de : s_2 = s_1^{a + b * m_1 + b^2 * m_2 + … + b^n * m_n}, ladite signature comprenant les éléments de signature s_1, s_2, et étant notée (s_1, s_2). Procédé de dérivation d’une signature partielle selon l’une des revendications précédentes dans lequel la dérivation de la signature partielle pour le sous-ensemble I de l’ensemble {1, …, n} de messages comprend : - calcul (E12-2) des éléments anonymisés ((s’_1, s’_2)) de la signature, ledit calcul comprenant : - génération d’un premier scalaire aléatoire t et d’un deuxième scalaire non nul r, - anonymisation du premier élément de signature et calcul de s’_1 = s_1^r, - anonymisation du deuxième élément de signature et calcul de s’_2 = s_2^r * s’_1^t, - génération (E12-3) du premier élément de vérification s’_3 = Π_{j dans {1, …, n} \ I} B_j^{m_j} * h^t, et - génération (E12-4) du deuxième élément de vérification s’_4 = Π_{i dans I }(G_{n+1-i}^t * Π_{j dans {1, …, n}\I} G_{ n+1-i+j}^m_j)^c_i, la signature partielle étant alors (s’_1, s’_2, s’_3, s’_4). Procédé de vérification d’une signature partielle pour un sous-ensemble d’un ensemble de messages ({m_1, …, m_n}), dit sous-ensemble de messages, ladite signature partielle étant destinée à prouver la validité d’une signature de l’ensemble de messages pour les messages du sous-ensemble de messages, ledit procédé, mis en œuvre par une entité de vérification d’une signature partielle, comprenant : - réception (E13) du sous-ensemble de messages et d’une signature partielle ((s’_1, s’_2, s’_3, s’_4)) propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments anonymisés de la signature de l’ensemble de messages ((s’_1, s’_2)), un premier élément de vérification (s’_3) calculé à partir des messages de l’ensemble autres que ceux du sous-ensemble de messages et un second élément de vérification (s’_4) destiné à prouver que le premier élément de vérification est bien formé, le second élément de vérification étant fonction de valeurs dérivées à partir d’au moins les autres éléments de la signature partielle, - calcul (E14) des valeurs dérivées au moyen d’une fonction de calcul de valeurs dérivées, - vérification (E15) d’une première équation et d’une seconde équation, ladite première équation comprenant les messages du sous-ensemble de messages, les éléments de la signature de l’ensemble de messages, le premier élément de vérification et des éléments de la clé publique, la seconde équation comprenant le premier élément de vérification de la signature, le deuxième élément de vérification de la signature, des éléments de la clé publique et les valeurs dérivées. Procédé de vérification d’une signature partielle selon la revendication 7, dans lequel une clé secrète et une clé publique ont été préalablement générées dans un environnement bilinéaire pour une entité signataire (10), ledit environnement désignant un premier groupe G1, un deuxième groupe G2 et un troisième groupe GT d’ordre p, ainsi qu’une application bilinéaire e, prenant en entrée un élément du premier groupe G1, un élément du deuxième groupe G2 et à valeurs dans le troisième groupe GT, soit g, respectivement h, un élément du premier groupe G1, respectivement du deuxième groupe G2, ladite génération de la clé secrète et de la clé publique comprenant : - génération par l’entité signataire (10) de 2 scalaires aléatoires a et b, lesdits scalaires aléatoires formant la clé secrète de l’entité signataire, et n désignant le nombre maximal de messages pouvant être signés à la fois, - calcul par l’entité signataire de : G_i = g^{b^i}, pour tout 1 ≤ i ≤ n et n+2 ≤ i ≤ 2n, A = h^a, et B_i = h^{b^i}, pour tout 1 ≤ i ≤ n, g, h, G_i, A, et B_i et la fonction de calcul de valeurs dérivées, notée H, formant la clé publique, la vérification de la signature partielle, notée (s’_1, s’_2, s’_3, s’_4), reçue par l’entité de vérification (12) comprenant pour un sous-ensemble I d’un ensemble {1, …, n}, l’ensemble de messages étant noté {m_1, …, m_n}, soit m_i les messages du sous-ensemble de messages : - calcul des valeurs dérivées : c_i = H(s’_1 || s’_2 || s’_3 || I || i), pour tout indice i dans I , - vérification (E15) de la première équation : e(s’_1, A*(Π_{i dans I} B_i^{m_i}) * s’_3) = e(s’_2, h), et de la seconde équation : e(Π_{i dans I} G_{n+1-i}^{c_i}, s’_3) = e(s’_4, h). Entité (11) de dérivation d’une signature partielle destinée à dériver une signature partielle pour un sous-ensemble d’un ensemble de messages ({m_1, …, m_n}), dit sous-ensemble de messages, ladite signature partielle étant destinée à prouver la validité d’une signature de l’ensemble de messages pour les messages du sous-ensemble de messages, ladite entité de dérivation de signature partielle, comprenant : - des moyens de réception (113), agencés pour recevoir l’ensemble de messages ({m_1, …, m_n}) et une signature dudit ensemble de messages, ladite signature comprenant des éléments de signature ((s_1, s_2)) de l’ensemble de messages, - des premiers moyens de génération (114), agencés pour générer des éléments anonymisés de la signature ((s’_1, s’_2)), - des deuxièmes moyens de génération (115), agencés pour générer un premier élément de vérification (s’_3) calculé à partir des messages de l’ensemble autres que ceux du sous-ensemble de messages, et - des troisièmes moyens de génération (116), agencés pour générer un second élément de vérification (s’_4) destiné à prouver que le premier élément de vérification est bien formé, et - des moyens d’envoi (117), agencés pour envoyer à une entité de vérification (12) une signature partielle propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments de la signature de l’ensemble de messages anonymisés (s’_1, s’_2), le premier élément de vérification (s’_3) et le second élément de vérification (s’_4), ladite signature partielle étant destinée à être vérifiée avec les seuls messages du sous-ensemble de messages, caractérisé en ce que le second élément de vérification (s’_4) est fonction de valeurs dérivées calculées à partir d’au moins les autres éléments de la signature partielle. Entité (12) de vérification d’une signature partielle, destinée à vérifier une signature partielle pour un sous-ensemble d’un ensemble de messages ({m_1, …, m_n}), dit sous-ensemble de messages, ladite signature partielle étant destinée à prouver la validité d’une signature de l’ensemble de messages pour les messages du sous-ensemble de messages, ladite entité de vérification de signature partielle comprenant : - des premiers moyens de réception (123), agencés pour recevoir le sous-ensemble de messages et une signature partielle ((s’_1, s’_2, s’_3, s’_4)) propre au sous-ensemble de messages, ladite signature partielle comprenant un nombre constant d’éléments comprenant au moins les éléments anonymisés de la signature de l’ensemble de messages ((s’_1, s’_2)), un premier élément de vérification (s’_3) calculé à partir des messages autres que ceux du sous-ensemble de messages et un second élément de vérification (s’_4) destiné à prouver que le premier élément de vérification est bien formé, le second élément de vérification étant fonction de valeurs dérivées à partir d’au moins les autres éléments de la signature partielle, - des moyens de calcul (124), agencés pour calculer des valeurs dérivées au moyen d’une fonction de calcul de valeurs dérivées, - des moyens de vérification (125), agencés pour vérifier une première équation et une seconde équation, ladite première équation comprenant les messages du sous-ensemble de messages, les éléments de la signature de l’ensemble de messages, le premier élément de vérification et des éléments de la clé publique, la seconde équation comprenant le premier élément de vérification de la signature, le deuxième élément de vérification de la signature, des éléments de la clé publique et les valeurs dérivées. Système de dérivation de signature partielle et de vérification comprenant : - une entité de dérivation d’une signature partielle (11) selon la revendication 9, - une entité de vérification d’une signature partielle (12) selon la revendication 10. Utilisation d’un système de dérivation de signature partielle et de vérification selon la revendication 11 dans un système d’accréditations anonymes. Programme d’ordinateur sur un support de données et chargeable dans la mémoire d’un ordinateur, comprenant des instructions de code de programme destinées à commander l’exécution des étapes du procédé de dérivation d’une signature partielle selon l’une des revendications 1 à 6, lorsque le programme est exécuté sur ledit ordinateur. Support de données dans lequel est enregistré le programme selon la revendication 13. Programme d’ordinateur sur un support de données et chargeable dans la mémoire d’un ordinateur, comprenant des instructions de code de programme destinées à commander l’exécution des étapes du procédé de vérification de signature partielle selon l’une des revendications 7 ou 8, lorsque le programme est exécuté sur ledit ordinateur. Support de données dans lequel est enregistré le programme selon la revendication 15.