PROCÉDÉ CRYPTOGRAPHIQUE PERMETTANT DE REPARTIR LA CHARGE ENTRE PLUSIEURS ENTITÉS ET DISPOSITIFS POUR METTRE
EN ŒUVRE CE PROCÉDÉ
L'invention relève du domaine technique de la cryptographie, et plus précisément de la cryptographie dite à clé publique. Dans ce type de cryptographie, un utilisateur détient une paire de clés pour un usage donné. Ladite paire de clés est constituée d'une clé privée que cet utilisateur maintient secrète et d'une clé publique associée que cet utilisateur peut communiquer à d'autres utilisateurs. Par exemple, s'il s'agit d'une paire de clés dédiée à la confidentialité, alors la clé publique est utilisée pour chiffrer les données, tandis que la clé secrète est utilisée pour les déchiffrer, c'est-à-dire pour rétablir ces données en clair.
La cryptographie à clé publique est d'une très grande utilité dans la mesure où, contrairement à la cryptographie à clé secrète, elle n'exige pas que les interlocuteurs partagent un même secret afin d'établir une communication sécurisée. Cependant, cet avantage en termes de sécurité s'accompagne d'un désavantage en termes de performance, car les procédés de cryptographie à clé publique, appelés encore « schémas à clé publique », sont souvent cent ou mille fois plus lents que les procédés de cryptographie à clé secrète appelés encore « schémas à clé secrète ». C'est donc un défi très important que de trouver des procédés de cryptographie à clé publique d'exécution rapide, de façon à pouvoir les mettre en œuvre dans des environnements peu dotés en ressources, tels que les cartes à microprocesseur standards, avec ou sans contacts.
La plupart des schémas à clé publique actuellement existants reposent sur la difficulté de problèmes mathématiques issus du domaine de l'arithmétique (ou « théorie des nombres »). C'est ainsi que la sécurité du schéma de chiffrement et de signature numérique RSA (Rivest, Shamir, Adieman) repose sur la difficulté du problème de la factorisation des nombres entiers : étant donné un très grand nombre entier (plus de 500 bits) obtenu de
façon privée en multipliant deux ou plusieurs facteurs premiers de tailles comparables, il n'existe pas aujourd'hui de méthode efficace pour retrouver ces facteurs premiers.
D'autres schémas à clé publique, tels que le schéma de chiffrement ou de signature numérique de EIGamal, font reposer leur sécurité sur la difficulté du problème dit du logarithme discret. Ce problème peut être énoncé dans sa plus grande généralité de la façon suivante : soit E un ensemble muni d'une opération (c'est-à-dire d'une fonction qui, à deux éléments a et b, associe un élément noté « a.b » ou « ab », et appelé produit de a et b), g un élément de E, r un grand nombre entier et y le nombre entier défini par : y = gr (c'est-à-dire le produit g.g....g avec r occurrences de g) ; alors il est infaisable de retrouver r à partir de g et y.
La présente invention concerne plus particulièrement le domaine technique de l'authentification d'entité, encore appelée identification, ainsi que celui de l'authentification de message et de la signature numérique de message, au moyen de techniques cryptographiques à clé publique. Dans de tels procédés, l'entité authentifiée appelée prouveur, possède une clé secrète ou clé privée et une clé publique associée. Le prouveur utilise la clé secrète pour produire une valeur d'authentification. L'entité qui authentifie, appelée vérificateur, a uniquement besoin de la clé publique du prouveur pour vérifier la valeur d'authentification.
L'invention concerne plus particulièrement encore les procédés d'authentification dits à divulgation de connaissance nulle ou sans apport de connaissance (« zero-knowledge »). Cela signifie que l'authentification se déroule suivant un protocole qui, de façon prouvée, ne révèle rien sur la clé secrète de l'entité authentifiée, et ce quel que soit le nombre d'utilisations. On sait, à l'aide de techniques standards, déduire de ce type de schémas des schémas d'authentification de message et de signature numérique de message.
L'invention concerne plus particulièrement encore des procédés dont la sécurité repose à la fois sur la difficulté du problème de la factorisation des nombres entiers et du problème dit du logarithme discret.
L'invention trouve une application dans tous les systèmes ayant recours à la cryptographie à clé publique pour sécuriser leurs éléments et ou leurs transactions, et plus particulièrement dans les systèmes où le nombre de calculs effectués par les différentes parties constitue pour au moins l'une d'entre elles un paramètre critique, soit parce qu'elle ne dispose pas d'un coprocesseur spécialisé dans les calculs cryptographiques, appelé souvent cryptoprocesseur, afin de les accélérer, soit parce qu'elle est susceptible d'effectuer un grand nombre de calculs simultanément par exemple dans le cas d'un serveur central, soit pour toute autre raison.
Une application typique est le paiement électronique, par carte bancaire ou par porte-monnaie électronique. Dans le cas du paiement de proximité, le terminal de paiement se trouve dans un lieu public, ce qui incite à utiliser des procédés de cryptographie à clé publique, afin qu'il ne stocke aucune clé- maître. Afin de réduire les coûts globaux d'un tel système, on peut souhaiter, soit que la carte soit une carte à microprocesseur standard c'est-à-dire que la carte n'est pas dotée d'un cryptoprocesseur, soit que le microprocesseur sécurisé contenu dans le terminal soit lui-même de type standard, soit les deux. Selon les cas, et selon le procédé cryptographique retenu, l'état de la technique actuellement connue permet d'atteindre: l'un ou l'autre de ces objectifs, mais permet difficilement d'atteindre les deux simultanément, en respectant les contraintes du système. Un exemple de telle contrainte est que le paiement s'effectue en moins d'une seconde, voire en moins de 150 millisecondes dans le cas d'une transaction sans contact, voire encore en quelques millisecondes dans le cas d'un péage d'autoroute.
Une limitation de tous les procédés cryptographiques connus à ce jour est que le nombre de calculs que doit effectuer chacune des parties est fixé par le procédé lui-même et ne peut pas être modifié. En particulier, il n'est pas possible de moduler la répartition des calculs entre le prouveur et une tierce
partie non nécessairement de confiance, afin de s'adapter à tel ou tel environnement. Cela empêche qu'un même procédé puisse être utilisé dans une variété d'environnements, dans lesquels les contraintes sont différentes. La présente invention a pour objet de spécifier des procédés cryptographiques à clé publique dans lesquels il soit possible de répartir une quantité importante de calculs entre au moins deux de plusieurs entités impliquées sans que cette répartition ne modifie le niveau de sécurité offert par lesdits procédés. Dans le cas d'un procédé d'authentification ou de signature numérique à clé publique, l'invention est particulièrement utile pour alléger la tâche du prouveur en réduisant le nombre de calculs qu'il effectue. L'invention permet de déléguer une partie des calculs à une autre entité, sans qu'aucune confiance ne soit nécessairement associée à cette autre entité. Plus généralement, l'invention permet de répartir de manière quelconque tout ou partie des calculs entre plusieurs entités concernées de telle sorte que les contraintes liées à une application donnée soient satisfaites.
Considérant un procédé cryptographique dans lequel une première entité génère au moyen d'une clé privée gardée secrète par la première entité, une preuve vérifiable par une deuxième entité au moyen d'une clé publique associée à ladite clé privée, le procédé selon l'invention est remarquable en ce qu'il comprend une étape dans laquelle au moins un élément de preuve est généré au moins en partie par traitement numérique ouvert d'une donnée qui ne permet pas de retrouver ladite clé privée.
On entend par traitement numérique ouvert, un traitement numérique qui ne bénéficie pas de protection particulière contre d'éventuelles intrusions. Ce traitement numérique ouvert est exécutable par une entité quelconque. La donnée précédemment mentionnée est par exemple une image de ladite clé privée.
Cette possibilité de répartition permet à un même procédé cryptographique d'être utilisé dans de nombreuses applications et environnements aux contraintes très variées. En particulier, elle peut permettre
d'effectuer des transactions en un temps réduit avec des puces aux capacités de calcul limitées.
On connaît des procédés cryptographiques qui utilisent une propriété des groupes finis par exemple comprenant n nombres entiers et munis d'une loi de composition interne telle que la multiplication. Il est pratiquement impossible de retrouver un exposant à l'origine d'une exponentiation, en particulier lorsque n est un nombre composé d'au moins deux nombres premiers très grands.
Particulièrement, le procédé selon l'invention comprend: - une première étape dans laquelle la première entité génère un premier élément de preuve au moyen d'un premier nombre aléatoire gardé secret par la première entité,
- une deuxième étape dans laquelle un ou plusieurs nombres dits communs sont générés en association avec le premier élément de preuve, dé façon à ce que la première entité et la deuxième entité puissent avoir connaissance du ou des dits nombres communs,
- une troisième étape dans laquelle la première entité, génère une image de ladite clé privée en combinant au moins un premier nombre entier de clé privée avec le premier nombre aléatoire et au moins l'un des dits nombres communs,
- une quatrième étape dans laquelle est généré un deuxième élément de preuve en appliquant à l'image de ladite clé privée, un traitement numérique ouvert exécutable par une entité quelconque, de façon à permettre à la deuxième entité de vérifier une concordance du premier élément de preuve avec le deuxième élément de preuve en appliquant une première partie de ladite clé publique au deuxième élément de preuve et au moins une deuxième partie de ladite clé publique à au moins l'un des dits nombres communs.
On entend par génération d'un nombre commun en association avec le premier élément de preuve, une génération de nombre commun pour laquelle le premier élément de preuve doit être préalablement connu. Cette génération
peut être purement aléatoire et indépendante du premier élément de preuve ou fonction du premier élément de preuve. Selon cette association, il est impossible de revenir sur le premier élément de preuve lorsque le nombre commun est généré. Plus particulièrement:
- dans la première étape, la première entité génère le premier nombre aléatoire r très supérieur à tout premier nombre entier s compris dans une clé privée gardée secrète par la première entité et la première entité génère le premier élément de preuve obtenu à la suite d'une élévation à une puissance modulo n d'un premier nombre entier G compris ou non dans ladite clé publique et dont l'exposant est le premier nombre aléatoire r,
- dans la troisième étape, la première entité génère l'image y de ladite clé privée par combinaison linéaire du premier nombre aléatoire r et d'au moins un premier nombre entier s de clé privée, combinaison linéaire dont au moins un coefficient multiplicatif est le ou l'un des dits nombres communs,
- - dans la quatrième étape, le deuxième élément de preuve Y généré est égal à une puissance modulo n d'un deuxième nombre entier g compris ou non dans ladite clé publique et dont l'exposant est l'image y de clé privée, le deuxième nombre entier g étant tel que le premier nombre entier G de clé publique est une puissance modulo n du deuxième nombre entier g avec pour exposant un troisième nombre entier e compris dans ladite clé publique. On notera d'une part qu'une connaissance de l'image de la clé privée générée dans la troisième étape ne fournit aucune information sur la clé privée car celle-ci est masquée par la combinaison linéaire avec le premier nombre aléatoire dont le premier élément de preuve ne révèle rien. D'autre part, une connaissance du premier élément de preuve et de la clé publique ne permet pas de générer le deuxième élément de preuve sans connaissance de l'image de clé privée dont la génération en deuxième étape ne peut être réalisée que
par la deuxième entité qui seule, a connaissance de la clé privée et du nombre aléatoire. La première entité peut disposer de ressources de calcul réduites pour exécuter la cinquième étape car de relativement faibles valeurs du troisième nombre entier et du nombre commun suffisent à une vérification fiable de concordance avec le premier élément de preuve.
La quatrième étape peut être exécutée par la première entité. Cependant, le coût de calcul de la puissance dans la quatrième étape est considérable car l'exposant est de grande valeur.
Avantageusement, la quatrième étape est exécutée par une entité quelconque qui reçoit de la première entité, l'image y de clé privée. Comme expliqué précédemment, une connaissance de l'image de clé privée par l'entité quelconque ne nuit pas à la sécurité du procédé. L'exécution de la quatrième étape par l'entité quelconque, distincte de la première entité, soulage la première entité. L'entité quelconque est éventuellement la deuxième entité ou une entité intermédiaire.
Avantageusement encore la quatrième étape comprend:
- une première sous-étape dans laquelle la première entité décompose l'image y en une première image partielle y' représentée par les u bits de poids faible d'un mot informatique qui représente l'image y et en une deuxième image partielle y" représentée par les bits de poids fort restants du dit mot informatique, dans laquelle la première entité génère une première composante Y1 et une deuxième composante g1 de deuxième élément de preuve telles que
Y' = gy' modulo n g' = g2 modulo n et dans laquelle la première entité envoie à une entité quelconque, la première composante Y', la deuxième composante g' et la deuxième image partielle y",
- une deuxième sous étape dans laquelle l'entité quelconque génère le deuxième élément de preuve Y en multipliant la première composante Y'
par une puissance de la deuxième composante g1 avec la deuxième image partielle y" pour exposant et dans laquelle l'entité quelconque envoie le deuxième élément de preuve Y à la deuxième entité.
La valeur de y1 alors inférieure à la valeur de y ne requiert que des ressources de calcul réduites dans la deuxième entité pour générer la première composante Y' et la deuxième composante g1. La deuxième image partielle et les deux composantes Y' et g' étant suffisantes à l'entité quelconque pour générer le deuxième élément de preuve sans connaissance complète de l'image de clé privée, la sécurité du procédé est renforcée. Particulièrement lorsque le procédé cryptographique est utilisé pour authentifier un dialogue de la première entité avec la deuxième entité, la deuxième étape est exécutée par la deuxième entité qui, pour le premier élément de preuve reçu de la deuxième entité, choisit au moins un nombre commun dans un intervalle de sécurité et envoie ledit nombre commun à la première entité.
Ceci permet d'assurer à la deuxième entité que la première entité a reçu le nombre commun pour générer le deuxième élément de preuve en concordance avec le premier élément de preuve au sein du dialogue.
Plus particulièrement dans la cinquième étape, la concordance est vérifiée lorsque le premier élément de preuve x est égal au produit modulo n de la puissance du deuxième élément de preuve Y dont l'exposant est le troisième nombre entier e et de la puissance du quatrième nombre entier v compris dans ladite clé publique dont l'exposant est ledit nombre commun c.
Plus particulièrement encore et différemment lorsque le dialogue comprend une émission de message M par la première entité, la concordance est vérifiée dans la cinquième étape lorsque le premier élément de preuve est égal à une fonction du message numérique M auquel est attaché le premier élément de preuve et du produit modulo n de la puissance du deuxième élément de preuve Y dont l'exposant est le troisième nombre entier e et de la puissance du quatrième nombre entier v compris dans ladite clé publique dont l'exposant est ledit nombre commun c.
Particulièrement encore et différemment lorsque le procédé cryptographique est utilisé pour une signature de message M, la deuxième étape est exécutée par la première entité qui génère au moins un nombre commun en fonction du premier élément de preuve et du message numérique M auquel est attaché ledit nombre commun.
Plus particulièrement dans la cinquième étape, la concordance est vérifiée lorsque le nombre commun est égal à une fonction du message numérique M et du produit modulo n de la puissance du deuxième élément de preuve Y dont l'exposant est le troisième nombre entier e et de la puissance du quatrième nombre entier v compris dans ladite clé publique dont l'exposant est ledit nombre commun c.
L'invention a aussi pour objet un dispositif prouveur, un dispositif vérificateur et un dispositif intermédiaire, adaptés pour mettre en œuvre le procédé cryptographique. Considérant un dispositif prouveur muni d'une clé privée gardée secrète et protégé contre toute intrusion, pour générer une preuve dont une vérification à l'aide d'une clé publique associée à ladite clé privée permet de garantir que le dispositif prouveur est à l'origine de ladite preuve, le dispositif prouveur est remarquable en ce qu'il comprend: - des moyens de calcul agencés pour générer un premier élément de preuve à partir d'un premier nombre aléatoire gardé secret dans le dispositif prouveur, et pour générer une image de ladite clé privée en combinant au moins un premier nombre entier de clé privée avec le premier nombre aléatoire et au moins l'un de plusieurs nombres dits communs associés au premier élément de preuve, de sorte qu'il est possible de générer un deuxième élément de preuve en appliquant à ladite image de clé privée, un traitement numérique ouvert permettant de vérifier une concordance du premier élément de preuve avec le deuxième élément de preuve en appliquant une première partie de ladite clé publique au deuxième élément de preuve et au moins une deuxième partie de ladite clé publique à au moins l'un des dits nombres communs,
- des moyens de communication agencés pour émettre au moins ledit premier élément de preuve.
Avantageusement dans le dispositif prouveur:
- les moyens de calcul sont d'une part agencés pour générer le premier nombre aléatoire r très supérieur à tout premier nombre entier s compris dans la clé privée gardée secrète, et pour générer le premier élément de preuve en élevant à une puissance modulo n un premier nombre entier G compris ou non dans ladite clé publique avec pour exposant le premier nombre aléatoire r, - les moyens de calcul sont d'autre part agencés pour générer l'image y de ladite clé privée par combinaison linéaire du premier nombre aléatoire r et d'au moins un premier nombre entier s de clé privée, combinaison linéaire dont au moins un coefficient multiplicatif est le ou l'un des dits nombres communs. Différentes adaptations du dispositif prouveur sont préférées selon la version de procédé à mettre en oeuvre
Par exemple, les moyens de communication sont aussi agencés pour recevoir le ou les dits nombres communs après avoir émis le premier élément de preuve. De préférence, les moyens de communication sont agencés pour émettre l'image de clé privée.
Optionnellement, les moyens de calcul sont agencés pour générer le deuxième élément de preuve.
Avantageusement, les moyens de calcul sont agencés pour décomposer l'image y en une première image partielle y' représentée par les u bits de poids faible d'un mot informatique qui représente l'image y et en une deuxième image partielle y" représentée par les bits de poids fort restants du dit mot informatique, et pour générer une première composante Y' et une deuxième composante g' de deuxième élément de preuve telles que Y' = gy' modulo n
g' = g2 modulo n où g est un deuxième nombre entier tel que le premier nombre entier G de clé publique est une puissance modulo n du deuxième nombre entier g avec pour exposant un troisième nombre entier e compris dans ladite clé publique, les moyens de communication sont agencés pour émettre la première composante Y', la deuxième composante g' et la deuxième image partielle y".
Dans le cas particulier de signature de message, les moyens de calcul sont agencés pour générer au moins un nombre commun en fonction du premier élément de preuve et d'un message numérique M auquel est attaché ledit nombre commun.
Selon différentes variantes, les moyens de calcul sont agencés pour générer le premier élément de preuve en élevant à une puissance modulo n un premier nombre entier G compris ou non dans ladite clé publique et dont l'exposant est le premier nombre aléatoire r. Selon une première variante, le premier nombre entier G de clé publique et un quatrième nombre entier v de clé publique sont respectivement donnés par les formules:
G = ge modulo n v = G"s modulo n. Selon une deuxième variante, le premier nombre entier G de clé publique et un quatrième nombre entier v de clé publique sont respectivement donnés par les formules:
G = gθ modulo n v = Gs modulo n. Selon une troisième variante, le premier nombre entier G de clé publique et un quatrième nombre entier v de clé publique sont respectivement donnés par les formules:
G = g"e modulo n v = G"s modulo n.
Selon une quatrième variante, les moyens de calcul sont agencés pour générer l'image y de clé privée par combinaison linéaire de deux nombres communs a et b selon la formule: y = a r + bs. Selon une cinquième variante, la clé privée comprenant plusieurs nombres secrets si, s2, ...:
- les moyens de calcul sont agencés pour générer autant de nombres communs d, c2, ... associés au premier élément de preuve x,
- les moyens de calcul sont agencés pour générer l'image de clé privée par combinaison linéaire selon la formule: y = r + d s1 + c2s2 + ... Selon une sixième variante, la clé publique comprenant spécifiquement le module n dont les facteurs premiers sont gardé secrets dans le dispositif prouveur, les moyens de calcul (37) sont agencés pour calculer les élévations de puissance en utilisant une technique dite des restes chinois.
Le dispositif prouveur est amélioré lorsque, la clé publique comprenant une quantité k de valeurs pré-calculées de premier élément de preuve x , les moyens de calcul sont agencés pour itérer k fois chaque exécution avec pour chaque itération une valeur différente de premier élément de preuve. De façon optionnelle, le premier élément de preuve est égal à une fonction f de la puissance modulo n du premier nombre entier G compris ou non dans ladite clé publique et dont l'exposant est le premier nombre aléatoire r.
Considérant un dispositif vérificateur pour vérifier qu'une preuve est issue d'un dispositif prouveur muni d'une clé privée gardée secrète par le dispositif prouveur, à l'aide d'une clé publique associée à ladite clé privée, le dispositif vérificateur est remarquable en ce qu'il comprend:
- des moyens de communication agencés pour recevoir un premier élément de preuve et un deuxième élément de preuve, - des moyens de calcul agencés pour vérifier une concordance du premier élément de preuve avec le deuxième élément de preuve en
appliquant une première partie de ladite clé publique au deuxième élément de preuve et au moins une deuxième partie de ladite clé publique à au moins l'un de plusieurs nombres dits communs générés en association avec le premier élément de preuve. Avantageusement dans le dispositif Vérificateur, les moyens de calcul sont agencés pour vérifier que le premier élément de preuve concorde avec un produit modulo n d'une puissance du deuxième élément de preuve Y dont l'exposant est un troisième nombre entier e et d'une puissance d'un quatrième nombre entier v dont l'exposant est ledit nombre commun c, le troisième nombre entier et le quatrième nombre entier étant compris dans ladite clé publique.
Avantageusement encore, les moyens de calculs sont agencés pour choisir au moins un nombre commun dans un intervalle de sécurité après réception du premier élément de preuve et en ce que les moyens de communication sont agencés pour émettre ledit nombre commun.
Particulièrement, les moyens de calcul sont agencés pour déclarer la concordance vérifiée lorsque le premier élément de preuve x est égal au produit modulo n de la puissance du deuxième élément de preuve Y dont l'exposant est le troisième nombre entier e et de la puissance du quatrième nombre entier v compris dans ladite clé publique dont l'exposant est ledit nombre commun c.
Plus particulièrement, les moyens de calcul sont agencés pour déclarer la concordance vérifiée lorsque le premier élément de preuve est égal à une fonction d'un message numérique M auquel est attaché le premier élément de preuve et du produit modulo n de la puissance du deuxième élément de preuve Y dont l'exposant est le troisième nombre entier e et de la puissance du quatrième nombre entier v compris dans ladite clé publique dont l'exposant est ledit nombre commun c.
Différemment, les moyens de calcul sont agencés pour déclarer la concordance vérifiée lorsque le nombre commun est égal à une fonction d'un message numérique M et du produit modulo n de la puissance du deuxième
élément de preuve Y dont l'exposant est le troisième nombre entier e et de la puissance du quatrième nombre entier v compris dans ladite clé publique dont l'exposant est ledit nombre commun c.
L'égalité est vérifiée dans le dispositif vérificateur par la formule: x = Yevc modulo n. ou par la formule: γe = vc x modulo n. ou par la formule:
Yex = vc modulo n. ou encore la concordance est vérifiée par l'égalité: γ e v b = χa modulo n.
Lorsque que la clé privée comprend plusieurs nombres secrets si, s2,
..., les moyens de calcul (38) sont agencés pour choisir autant de nombres communs d, c2, ... pour le premier élément de preuve x, les moyens de calcul (38) sont agencés pour vérifier la concordance par autant de quatrièmes nombres entiers de clé publique v1 , v2, ... au moyen de l'égalité:
Ye v1c1 v2c2 ...= x modulo n. Dans une variante du dispositif vérificateur, les moyens de calcul comprennent en mémoire au moins une valeur pré-calculée de premier élément de preuve x considéré comme partie de la clé publique.
Particulièrement, les moyens de calcul comprennent en mémoire une quantité k de valeurs pré-calculées de premier élément de preuve x, les moyens de communications sont agencés pour recevoir k deuxième éléments de preuve et les moyens de calcul sont agencés pour vérifier une concordance de chaque deuxième élément de preuve reçu avec une valeur différente de premier élément de preuve.
Dans une autre variante du dispositif vérificateur, le premier élément de preuve étant égal à une fonction f de la puissance modulo n du premier nombre entier G compris ou non dans ladite clé publique et dont l'exposant est le premier nombre aléatoire r, les moyens de calcul sont agencés pour exécuter la vérification sur le résultat de cette fonction.
Considérant un dispositif intermédiaire pour être introduit en aval d'un dispositif prouveur en vue de générer une preuve basée sur une clé privée gardée secrète par le dispositif prouveur, ladite preuve étant vérifiable à l'aide d'une clé publique associée à ladite clé privée, le dispositif intermédiaire est remarquable en ce qu'il comprend des moyens de calcul pour générer au moins un élément de preuve par traitement numérique ouvert d'une image de ladite clé privée, ladite image de clé privée ne permettant pas de retrouver ladite clé privée.
Particulièrement, le dispositif comprend des moyens de communication agencés pour recevoir ladite image y de clé privée.
Selon une variante possible, les moyens de calcul sont agencés pour générer le deuxième élément de preuve Y en élevant à une puissance modulo n un deuxième nombre entier g compris dans ladite clé publique et dont l'exposant est l'image y de clé privée. Selon une autre variante possible, le dispositif intermédiaire comprend des moyens de communication agencés pour recevoir une première image partielle y' de clé privée, une première composante Y' et une deuxième composante g' de deuxième élément de preuve et les moyens de calcul sont agencés pour générer le deuxième élément de preuve Y en multipliant la première composante Y' par une puissance de la deuxième composante g' avec la deuxième image partielle y" pour exposant.
Préférentiellement, les moyens de communication du dispositif intermédiaire sont agencés pour émettre le deuxième élément de preuve Y à destination d'un dispositif vérificateur. L'invention sera mieux comprise dans les exemples de mise en œuvre dont la description suit en référence aux dessins annexés dans lesquels:
- la figure 1 montre des étapes de procédé d'authentification d'une deuxième entité par une première entité selon l'invention,
- la figure 2 montre une première variante du procédé d'authentification faisant intervenir une entité intermédiaire,
- la figure 3 montre une deuxième variante du procédé d'authentification faisant intervenir une entité intermédiaire,
- la figure 4 montre des étapes de procédé d'authentification de message selon l'invention, - la figure 5 montre des étapes de procédé utilisé pour une signature de message selon l'invention.
Le mode de réalisation décrit ci-dessous est un procédé d'authentification d'entité ou d'identification. Il permet à un prouveur A de convaincre un vérificateur B de son authenticité. Ce procédé peut être transformé en procédé d'authentification de message ou signature numérique de message. Sa sécurité repose sur la difficulté conjointe de factoriser de grands nombres entiers.
Conformément à l'objectif et aux résultats explicités ci-dessus, ce procédé comporte deux options selon la façon dont on répartit les calculs entre plusieurs entités. Soient n un grand nombre entier composé et cinq nombres entiers positifs e, g, G, s, v, positifs inférieurs à n tels que : G=ge(mod n) et v=G's( mod n)
La clé publique du prouveur est alors constituée de tout ou partie du quintuplet (n, e, g, G, v), selon l'option choisie, tandis que la clé privée est constituée d'au moins le nombre entier s, gardé secret par le prouveur. La clé publique peut elle-même être décomposée en une partie générique au sens où elle est commune à plusieurs prouveurs et en une partie spécifique au sens où elle est différente pour chaque prouveur.
On définit également deux nombres entiers positifs k et t, appelés paramètres de sécurité.
Dans toutes les options, on suppose qu'une première entité, le vérificateur B connaît déjà tous les paramètres publics nécessaires à vérifier qu'une preuve est donnée par une deuxième entité, le prouveur A, à savoir son identité, sa clé publique, son certificat de clé publique, etc.
Selon une première option, la clé publique est le triplet (n, e, v) et l'authentification de l'entité A par l'entité B se déroule en itérant k fois le protocole à présent décrit en référence à la figure 1.
Dans une première étape 9, l'entité A génère un premier nombre entier aléatoire r très supérieur à s, calcule x = Gr(mod n) et envoie x à l'entité B. De façon connue, les entités A et B sont de type ordinateur ou carte à puce. L'expression (mod n) signifie modulo n, c'est à dire que de façon connue, le résultat du calcul est égal au reste de la division entière du résultat de l'opération considérée, par le nombre entier n, généralement appelé module. Ici, le nombre entier x constitue un premier élément de preuve car seule l'entité qui génère le nombre aléatoire r, est capable de générer le nombre x. Le nombre aléatoire r n'est pas communiqué par l'entité qui le génère. Selon la théorie connue des nombres, le nombre r est choisi suffisamment grand pour qu'une connaissance du premier nombre entier G et du module n, ne permette pas de retrouver le nombre r à partir du nombre x. Ce premier élément de preuve n'est pas suffisant car un tel élément peut être généré à partir d'un nombre aléatoire quelconque, par toute entité si le premier nombre entier G est compris dans la clé publique. On notera que- dans le procédé décrit en référence à la figure 1 , le nombre entier G n'est pas nécessairement compris dans la clé publique.
Une réception par l'entité B du premier élément de preuve x, valide une transition 10 qui active alors une deuxième étape 11.
Dans l'étape 11 , l'entité B choisit au hasard un nombre entier c dans un intervalle [0,t - 1] dit de sécurité et envoie le nombre c à l'entité A. Ainsi, le nombre c, généré en association avec le premier élément de preuve par l'entité B, est commun aux entités A et B et aussi à toute autre entité s'infiltrant dans le dialogue entre les entités A et B.
Une réception par l'entité A du nombre commun c, valide une transition 12 qui active alors une troisième étape 13. Dans l'étape 13, l'entité A calcule y = r + se. Ainsi, l'entité A génère une image y de la clé privée sous forme de combinaison linéaire du nombre r et du
nombre s dont le coefficient multiplicatif est le nombre commun c. Le nombre aléatoire r étant très grand et non communiqué, une connaissance de l'image y ne permet pas de retrouver le produit se et par conséquent, ne permet pas de retrouver le nombre s de clé privée qui reste donc gardé secret par l'entité A. Seule l'entité A ayant connaissance du nombre s, seule l'entité A peut générer une image qui intègre le nombre commun c.
Une quatrième étape 15 est ici directement activée à la suite de l'étape
13. Dans l'étape 15, l'entité A calcule Y =gy (mod n) et envoie Y à B. Ainsi, l'entité A génère ici un deuxième élément de preuve Y. On notera que le deuxième nombre entier g n'est pas nécessairement ici compris dans la clé publique.
Une réception par l'entité B du deuxième élément de preuve Y, valide une transition 16 qui active alors une cinquième étape 17.
Dans l'étape 17, l'entité B vérifie que : Yevc = x(mod n). Bien que, comme vu précédemment, le deuxième élément de preuve ne communique aucune information sur la clé privée, le deuxième élément de preuve Y est tel que:
Y = gr+sc(mod n) Donc en élevant le deuxième élément de preuve Y à une puissance dont l'exposant est le troisième nombre entier e de clé publique: γe = g(r+sc)e = Gr+sc (mod n)
D'autre part, bien que conformément à la théorie des nombres, le quatrième nombre entier v ne communique aucune information sur la clé privée, celui-ci est en fait tel que: v° = G-sc(modn).
Ainsi, sans que r ne soit communiqué a aucun moment, l'égalité:
Ye Vc = Gr= X (lTlθd n) certifie que l'entité A qui seule connaît s, a connaissance de c.
Considérant un imposteur comme étant une entité qui tente de se faire passer pour A sans connaître le secret s, la probabilité de ne pas détecter cet
imposteur est égale à 1/kt. Dans beaucoup d'applications, le produit kt peut être choisi relativement petit, par exemple de l'ordre de 216.
Préférentiellement k=1 ett=e, auquel cas la probabilité définie ci-dessus est égale à 1/e et il n'y a qu'une équation de vérification à appliquer. Si e est égal par exemple à 216, alors la vérification sera relativement rapide car les exposants e et c sont relativement petits. Cette vérification peut même être accélérée en calculant à l'avance, à la fin de l'étape 11 ou même avant : z ≈ vc (mod n). Ainsi dans la quatrième étape, B n'a plus qu'à vérifier : Yez = x(mod n). D'autres valeurs de k et t sont possibles.
De nombreuses optimisations de ce protocole de base sont possibles. Par exemple, on peut remplacer v=G"s ( mod n) par v=Gs ( mod n), auquel cas l'équation de vérification devient Ye = xvc (mod n) ;
Par exemple encore, on peut remplacer G≈ge (mod n) par G=g"e (mod n), auquel cas l'équation de vérification devient xYe ≈ vc (mod n) ; Par exemple encore, on peut remplacer c par un couple d'entiers positifs ou négatifs (a,b) et y = r + se par y - ar + bs, auquel cas l'équation de vérification devient Yevb = xa (mod n).
Par exemple encore, on peut choisir plusieurs nombres secrets si, s , ... plusieurs clés publiques v
1( v
2, ..., plusieurs entiers ci, c
2, ... et remplacer y = r + se par y = r + S
1C
1+S
2C
2 + ..., auquel cas l'équation de vérification devient
... = x(mod n) ;
Si n est compris dans la partie spécifique de la clé publique, et si les facteurs premiers de n sont connus de A, alors la première étape peut être accélérée en utilisant la technique dite des restes chinois.
La première étape peut être effectuée à l'avance. De plus les k valeurs de x peuvent faire partie de la clé publique de A, auquel cas le protocole commence directement à la deuxième étape.
Le nombre x peut être remplacé par une valeur f(x) où f est une fonction, par exemple égale à (ou incluant) une fonction de hachage
cryptographique, auquel cas l'équation de vérification devient : f (Yevc(mod n)) ≈ x. On peut combiner tout ou partie des modifications précédentes.
De façon remarquable, le calcul de Y peut également être effectué par tout autre entité que A, et ce sans perte de sécurité. Dans ce cas A ne calcule que y et fournit y à cette entité. D'une part, la connaissance de y ne fournit aucune information sur s, puisque le produit se est « masqué » par le nombre aléatoire r. D'autre part, il est pratiquement impossible pour un fraudeur de fabriquer Y de toutes pièces puisque, étant donné n,e, v, x et c, il est infaisable de trouver une valeur de Y qui satisfasse l'équation de vérification de la quatrième étape, si la factorisation est un problème difficile.
Selon une deuxième option expliquée en référence à la figure 2, la clé publique est le quadruplet (n, e, g, v) et l'authentification de l'entité A par l'entité B se déroule en itérant k fois le protocole suivant. C désigne une entité quelconque autre que A. Le procédé se déroule de façon identique à celle décrite en référence à la figure 1 jusqu'à l'étape 13. En référence à la figure 2, l'étape 13 est modifiée en ce que l'entité A envoie l'image y de clé privée à une entité intermédiaire C. Comme vu précédemment, l'image y ne donne aucune information sur la clé privée. Une réception par l'entité C de l'image y, valide une transition 14 qui active alors la quatrième étape 15.
Dans l'étape 15, c'est ici l'entité intermédiaire C qui calcule le deuxième élément de preuve Y = gy (mod n) et envoie Y à B.
Le procédé se poursuit alors de façon identique à celle décrite en référence à la figure 1 par la transition 16 et l'étape 17.
Physiquement, l'entité intermédiaire C est par exemple mise en œuvre dans une puce, non nécessairement sécurisée, contenue dans le dispositif de sécurité du prouveur tel qu'une carte à puce, dans le dispositif de sécurité du vérificateur tel qu'un terminal de paiement, ou encore dans un autre dispositif tel qu'un ordinateur. La sécurité réside dans le fait que l'entité C ne peut
trouver par elle-même une valeur Y qui convienne, c'est-à-dire telle que l'équation de vérification soit satisfaite.
Selon une troisième option, décrite en référence à la figure 3, le calcul de Y est partagé entre les entités A et C. Il y a une grande variété de façons de partager ce calcul. Ici encore, le procédé se déroule de façon identique à celle décrite en référence à la figure 1 jusqu'à l'étape 13. De façon avantageuse en étape 13, l'image y est décomposée selon la formule : y ≈ y'+2u y" . Dans cette formule, u est un nombre entier positif et y' est un nombre entier inférieur à 2U. La décomposition est facile à réaliser. Dans un mot informatique qui représente l'image y, la première image partielle y' est représentée par les u bits de poids faible de ce mot. La deuxième image partielle est représentée par les bits de poids fort restants de ce mot informatique. La quatrième étape pour calculer le deuxième élément de preuve, est ici décomposée en deux sous étapes 18 et 25.
La première sous étape 18 est exécutée par l'entité A directement à la suite de l'étape 13. Dans la sous étape 18, l'entité A calcule une première composante Y' de deuxième élément de preuve selon la formule: Y' ≈ gy' (mod n)
Le calcul de la première composante Y' nécessite nettement moins de ressources que le calcul complet du deuxième élément de preuve car la première image partielle y' est de valeur nettement inférieure à l'image y en choisissant une valeur de u relativement faible, par. exemple de l'ordre de huit ou seize.
Dans la sous étape 18, l'entité A calcule aussi une deuxième composante g' de deuxième élément de preuve selon la formule:
g' ≈ g2u(mo n) Le calcul de la première composante g' nécessite peu de ressources de
se faisant sur le deuxième nombre entier g puis chaque élévation au carré suivante se faisant sur le résultat de l'élévation au carré précédente modulo n. En fin de sous étape 18, l'entité A envoie à l'entité intermédiaire C les deux composantes g', Y' et la deuxième image partielle y". La sécurité est renforcée par le fait que l'image de clé privée n'est pas communiquée en totalité. La charge de calcul de l'entité A est réduite par le fait que le deuxième élément de preuve n'est pas calculé en totalité par l'entité A.
Une réception par l'entité C des deux composantes g', Y' et de la deuxième image partielle y", valide alors la transition 14 pour activer la deuxième sous étape 25 dans l'entité intermédiaire C.
Dans la sous étape 25, l'entité C calcule Y = Y'g'γ" (mod n) et envoie le deuxième élément de preuve ainsi généré Y à l'entité B.
Le procédé se poursuit alors de façon identique à celle décrite en référence à la figure 1 par la transition 16 et l'étape 17. Avantageusement, avant validation de la transition 16, l'entité B exécute une étape 19 dans laquelle est calculé un nombre z pour faciliter le calcul de V en étape 17: z ≈ vc (mod n) L'étape 19 peut aussi être introduite avant la transition 16 dans les exemples des figures 1 , 2 et 4.
On remarque là encore qu'il est aussi possible de partager le calcul de Y entre l'entité C et le vérificateur B.
Les protocoles précédemment décrits peuvent être transformés en protocoles d'authentification de messages ou en schémas de signature numérique.
La figure 4 montre des étapes de procédé qui permettent d'authentifier qu'un message M reçu par la première entité B, a été émis par le deuxième entité A.
Dans une première étape 20, l'entité A génère un premier nombre entier aléatoire r très supérieur à s et calcule x = Gr (mod n) comme dans l'étape 9.
x' en appliquant au message M conjointement avec le nombre x une fonction h, par exemple égale à une fonction de hachage cryptographique ou incluant une fonction de hachage cryptographique tel que: x' = h(x, M). L'entité A envoie ensuite le message M et le premier élément de preuve x' à l'entité B.
Une réception par l'entité B du premier élément de preuve x, valide une transition 21 qui active alors une deuxième étape 11. Le procédé se poursuit ensuite de façon identique à celle décrite en référence à l'une des figures 1 à 3.
Dans l'étape 11 , l'entité B choisit au hasard un nombre entier c dans un intervalle [0,t - 1] dit de sécurité et envoie le nombre c à l'entité A. Ainsi, le nombre c, généré en association avec le premier élément de preuve par l'entité B, est commun aux entités A et B et aussi à toute autre entité s'infiltrant dans le dialogue entre les entités A et B.
Une réception par l'entité A du nombre commun c, valide une transition 12 qui active alors une troisième étape 13.
Dans l'étape 13, l'entité A calcule y = r + se. Ainsi, l'entité A génère une image y de la clé privée sous forme de combinaison linéaire du nombre r et du nombre s dont le coefficient multiplicatif est le nombre commun c. Le nombre aléatoire r étant très grand et non communiqué, une connaissance de l'image y ne permet pas de retrouver le produit se et par conséquent, ne permet pas de retrouver le nombre s de clé privée qui reste donc gardé secret par l'entité A. Seule l'entité A ayant connaissance du nombre s, seule l'entité A peut générer une image qui intègre le nombre commun c. Sur l'exemple de la figure 4, l'entité A envoie l'image y de clé privée à une entité intermédiaire C. Comme vu précédemment, l'image y ne donne aucune information sur la clé privée.
Une réception par l'entité C de l'image y, valide une transition 14 qui active alors la quatrième étape 15. Dans l'étape 15, c'est ici l'entité intermédiaire C qui calcule le deuxième
Une réception par l'entité B du deuxième élément de preuve Y, valide une transition 16 qui active alors une cinquième étape 22.
Dans l'étape 22, l'entité B calcule comme dans l'étape 17 une valeur de vérification V au moyen de la formule: V = Yevc(mod n) puis vérifie la concordance du deuxième élément de preuve avec le premier élément de preuve au moyen de l'équation de vérification: h(V,M) = x'. Dans la variante utilisant une fonction f, l'équation de vérification devient h(f(Yevc(mod n)), M) = x'.
A la différence de l'authentification de message, la signature de message est indépendante de l'émetteur. La signature d'un message M par l'entité A reste valable si l'entité B reçoit le message M de toute autre entité. En référence à la figure 5, dans une première étape 1 , l'entité A génère un premier nombre entier aléatoire r très supérieur à s et calcule x = Gr (mod n) comme dans l'étape 9. Le premier élément de preuve x ainsi généré n'a pas besoin d'être envoyé à l'entité B car il n'est pas nécessaire d'authentifier un dialogue entre les unités A et B pour vérifier une signature.
Dans une deuxième étape 23 directement à la suite de l'étape 1 , l'entité A génère un nombre commun c', en appliquant au message M conjointement avec le nombre x une fonction h, par exemple égale à une fonction de hachage cryptographique ou incluant une fonction de hachage cryptographique tel que: c' = h(x, M). Dans une troisième étape 24 directement à la suite de l'étape 23, l'entité
A calcule y = r + se. Ainsi, l'entité A génère une image y de la clé privée sous forme de combinaison linéaire du nombre r et du nombre s dont le coefficient multiplicatif est le nombre commun c. Le nombre aléatoire r étant très grand et non communiqué, une connaissance de l'image y ne permet pas de retrouver le produit se et par conséquent, ne permet pas de retrouver le nombre s de clé privée qui reste donc gardé secret par l'entité A. Seule l'entité A ayant
connaissance du nombre s, seule l'entité A peut générer une image qui intègre le nombre commun c'. Comme vu précédemment, l'image y ne donne aucune information sur la clé privée. Le couple (c',y) constitue une signature du message M car ce couple intègre à la fois le message M et un élément de clé privée qui garantit que l'entité A est à l'origine de cette signature.
L'entité A envoie ensuite le message M et la signature (c',y) à l'entité B ou à toute autre entité.
Une réception par l'entité B du message M avec sa signature (c',y), en provenance de l'entité A ou de toute autre entité valide une transition 2. Une réception par l'entité C de l'image y, valide une transition 4 qui active alors une quatrième étape 5.
Dans l'étape 5, c'est ici l'entité intermédiaire C qui calcule le deuxième élément de preuve Y = gy (mod n) et envoie Y à B.
Une réception par l'entité B du deuxième élément de preuve Y, valide une transition 7 qui active alors une cinquième étape 8.
Dans l'étape 8, l'entité B calcule comme dans l'étape 17 une valeur de vérification V au moyen de la formule:
V = Yevc'(mod n) puis vérifie la concordance du deuxième élément de preuve avec le premier élément de preuve au moyen de l'équation de vérification: h(V,M) ≈ c'. Ici, la concordance avec le premier élément de preuve, est vérifiée par cette égalité du fait que le nombre commun c' généré en étape 23, concorde lui même avec le premier élément de preuve. Dans la variante utilisant une fonction f, l'équation de vérification devient h(f(YV(mod n)), M) = x*.
La réception par l'entité C de l'image y qui valide la transition 4 peut résulter d'une réception du message M avec sa signature (c'.y) en provenance de l'entité A ou de toute autre entité. En référence à la figure 5, la réception par l'entité C de l'image y résulte d'une étape 3 activée par la transition 2.
Dans l'étape 3, l'entité B extrait l'image y de la signature pour l'envoyer à l'entité C.
Dans une étape 6 exécutée avant validation de la transition 7, l'entité B extrait le nombre commun c' de la signature pour obtenir un nombre z égal à vc' qui facilite le calcul de V en étape 8.
En référence à la figure 6, les entités A, B et C décrites précédemment sont matérialisées respectivement dans un dispositif prouveur 30, un dispositif vérificateur 31 et un dispositif intermédiaire 32. Le dispositif prouveur 30 est par exemple une carte à microprocesseur telle qu'une carte de crédit, une carte d'identification d'abonné d'un téléphone mobile. Le dispositif vérificateur 31 est par exemple un terminal bancaire ou un serveur de commerce électronique, un équipement d'opérateur de télécommunication mobile. Le dispositif intermédiaire 32 est par exemple une extension de carte à microprocesseur, un terminal de lecture de carte de crédit ou une carte électronique de téléphone mobile.
Le dispositif prouveur 30 comprend des moyens de communication 34 et des moyens de calcul 37. Le dispositif prouveur 30 est protégé contre les intrusions. Les moyens de communication 34 sont agencés pour émettre le premier élément de preuve x conformément à l'étape 9 décrite en référence aux figures 1 à 3, l'image y de clé privée conformément à l'étape 13 décrite en référence aux figures 2 et 4, le deuxième élément de preuve Y conformément à l'étape 15 décrite en référence à la figure 1 , la première image partielle Y' avec les deux composantes d'image de clé privée g' et y" conformément à l'étape 18 décrite en référence à la figure 3, le message M conformément aux étapes 20 ou 24 décrites en référence aux figures 4 et 5 ou le nombre commun c conformément à l'étape 24 décrite en référence à la figure 5 selon la version du procédé à mettre en oeuvre. Les moyens de communication 34 sont aussi agencés pour recevoir le nombre commun c conformément à la transition 12 décrite en référence aux figures 1 à 4 lorsque des versions du procédé à mettre en œuvre correspondent à l'authentification. Pour une version de procédé à mettre en œuvre correspondant à une signature, les
moyens de communication 34 n'ont pas besoin d'être agencés pour recevoir le nombre commun c.
Les moyens de calcul 37 sont agencés pour exécuter les étapes 9, 13 et 15 décrites en référence à la figure 1, les étapes 9 et 13 décrites en référence à la figure 2, les étapes 9, 13 et 18 décrites en référence à la figure 3, les étapes 20 et 13 décrites en référence à la figure 4 ou les étapes 1, 23 et 24 décrites en référence à la figure 5 selon la version de procédé à mettre en œuvre. De façon connue, les moyens de calcul 37 comprennent un microprocesseur et des microprogrammes ou des circuits combinatoires dédiés aux calculs précédemment décrits.
Le dispositif vérificateur 31 comprend des moyens de communication 35 et des moyens de calcul 38. Les moyens de communication 35 sont agencés pour émettre un ou plusieurs nombres communs c conformément à l'étape 11 décrite en référence aux figures 1 à 4 lorsque des versions du procédé à mettre en œuvre correspondent à l'authentification. Pour une version de procédé à mettre en œuvre correspondant à une signature, les moyens de communication 35 n'ont pas besoin d'être agencés pour émettre de nombre commun c. Les moyens de communication 35 sont aussi agencés pour recevoir les deux éléments de preuve x et Y conformément aux transitions 10 et 16 décrites en référence aux figures 1 à 3, un message M avec le premier élément de preuve x' et le deuxième élément de preuve Y conformément aux transitions 21 et 16 décrites en référence à la figure 4 ou le deuxième élément de preuve et le message M avec un ou plusieurs nombre communs c' et l'image y de clé privée conformément aux transitions 2 et 8 décrites en référence à la figure 5. Eventuellement pour version de procédé à mettre en œuvre correspondant à une signature, les moyens de communication 35 sont agencés pour retransmettre l'image y de clé privée conformément à l'étape 3 décrite en référence à la figure 5.
Les moyens de calcul 38 sont agencés pour exécuter les étapes 11, 17 et 19 décrites en référence aux figures 1 à 3, les étapes 11 et 22 décrites en
selon la version de procédé à mettre en œuvre. De façon connue, les moyens de calcul 38 comprennent un microprocesseur et des microprogrammes ou des circuits combinatoires dédiés aux calculs précédemment décrits.
Le dispositif intermédiaire 32 comprend des moyens de communication 36 et des moyens de calcul 39. Les moyens de communication 36 sont agencés pour émettre le deuxième élément de preuve Y conformément à l'étape 15 décrite en référence aux figures 2 et 4, à l'étape 25 décrite en référence à la figure 3 ou à l'étape 5 décrite en référence à la figure 5. Les moyens de communication 36 sont aussi agencés pour recevoir l'image y de clé privée conformément à la transition 14 décrite en référence aux figures 2 et 4, l'image y de clé privée conformément à la transition 4 décrite en référence à la figure 5 ou l'image partielle y" de clé privée et les deux composantes g' et Y' de deuxième élément de preuve conformément à la transition 14 décrite en référence à la figure 3. Les moyens de calcul 39 sont agencés pour exécuter l'étape 15 décrite en référence aux figures 2 ou 4, l'étape 25 décrite en référence à la figure 3 ou l'étape 5 décrite en référence à la figure 5. selon la version de procédé à mettre en œuvre. De façon connue, les moyens de calcul 39 comprennent un microprocesseur et des programmes ou des circuits combinatoires dédiés aux calculs précédemment décrits.
De façon améliorée, les moyens de calcul et de communication précédemment décrits sont agencés pour répéter k fois l'exécution des étapes précédemment décrites, chaque fois pour un premier élément de preuve et un deuxième élément de preuve distincts.