FR 3054054 A1 20180119 FR 1656776 A 20160713 1 DOMAINE TECHNIQUE GENERAL La présente invention concerne de manière générale l'authentification sécurisée d'individus, l'authentification étant réalisée par comparaison d'une donnée d'un individu que l'on souhaite identifier à une donnée de même nature d'individus répertoriés, cette donnée étant stockée dans une base. L'invention s'applique notamment à l'authentification biométrique d'un individu, dans laquelle les données comparées de l'individu et de la base de données sont des informations biométriques relatives par exemple à l'iris, ou la forme du visage du porteur. ETAT DE L'ART Dans le domaine de l'authentification et de la biométrie par exemple, il est courant de comparer deux données : une donnée d'enrôlement, préalablement enrôlée, et une donnée de test, qui est une image obtenue auprès de la personne qui souhaite s'authentifier. L'individu est authentifié quand la donnée d'enrôlement correspond à la donnée de test avec un niveau de similarité suffisamment important. On parlera dans la suite de correspondance entre les données. Les données biométriques étant des données sensibles, il faut ne pas les révéler pendant l'authentification. Pour cela, il est possible d'effectuer l'authentification à l'aide d'un calcul sécurisé multipartite, (connu sous l'acronyme anglais SMC pour Secure Multi-Party Computation, voir référence [SMC] en fin de description), qui consiste à réaliser un calcul entre plusieurs participants détenant chacun une ou plusieurs entrées d'une fonction à calculer, de sorte que les participants apprennent à l'issue du calcul uniquement le résultat du calcul, et n'obtiennent aucune information sur les entrées détenues par les autres participants. 3054054 2 Parmi les protocoles de SMC, le protocole de Yao (voir référence [YAO] et référence [SAD] qui met en oeuvre un tel protocole et référence [SNY] qui le présente), qui met en oeuvre des circuits confus (appelés en anglais garbled circuits), propose une méthode efficace. 5 Cette méthode sera explicitée dans la description. Malheureusement la mise en oeuvre d'une seule comparaison entre la donnée d'enrôlement et une unique donnée de test ne suffit pas toujours pour permettre l'authentification, car la donnée de test peut être acquise dans de mauvaises conditions et la comparaison peut 10 échouer alors même que l'utilisateur qui cherche à s'authentifier correspond réellement à l'utilisateur enrôlé. Il est alors souvent nécessaire de redonner une chance ou plusieurs à l'utilisateur lors d'un rejet. La vidéo est de plus en plus utilisée pour résoudre ce problème. La méthode consiste à prendre une courte vidéo au lieu de 15 prendre uniquement une photo, de sélectionner les meilleurs images de la vidéo et ensuite de comparer une par une les images sélectionnées de la vidéo avec la donnée d'enrôlement jusqu'à obtenir une correspondance. Malheureusement, les circuits confus ne sont pas réutilisables 20 pour comparer successivement plusieurs données. En effet, dès lors qu'un même circuit est utilisé deux fois de suite, l'entité l'exécutant peut alors en déduire certains bits d'entrée de l'autre partie. La confidentialité des données n'est plus respectée. Par conséquent, l'implémentation du protocole de Yao à partir 25 d'une vidéo de test à la place d'une unique image de test implique l'utilisation d'un circuit confus pour chaque image de la vidéo, ce qui est trop coûteux en temps de calcul, y compris pour un serveur délocalisé. Quelques articles scientifiques (voir référence [GE] et [GO]) présentent des circuits confus réutilisables mais les méthodes proposées 30 ne sont pas encore suffisamment efficaces pour des cas pratiques. En effet, ces circuits réutilisables sont basés sur de la cryptographie asymétrique alors que les circuits confus classiques sont basés sur de la cryptographie symétrique. 3054054 3 Il existe donc un besoin pour authentifier un individu à partir d'une donnée biométrique de façon sécurisée, et de façon plus rapide et moins coûteuse en capacité de calcul que dans les solutions déjà 5 proposées. PRESENTATION DE L'INVENTION 10 Pour cela, l'invention propose un procédé d'authentification d'un utilisateur mis en oeuvre à l'aide d'un système comprenant : - une première unité client comprenant une mémoire dans laquelle est stockée une donnée biométrique de référence, - une deuxième unité client comprenant des moyens d'acquisition 15 d'au moins une donnée biométrique de test, et - un serveur, configuré pour générer des circuits confus d'évaluation de fonctions, chaque circuit confus ayant pour entrées un ensemble de clés de chiffrement de bits de données d'entrée de la fonction à évaluer et pour sortie les clés de 20 chiffrement correspondant aux bits du résultat de la fonction évaluée, et dans lequel les étapes de calcul de la fonction sont décomposées sous forme d'opérations logiques élémentaires, chaque circuit confus comprenant en outre un ensemble de clés de codage de chacune des entrées et sorties possibles de chaque 25 opération logique élémentaire, le procédé comprenant la comparaison d'un nombre C de données de test acquises sur l'utilisateur par la deuxième unité client à la donnée de référence, ladite comparaison comprenant le calcul, au moyen de circuits confus, d'une distance entre la donnée de référence et chaque 30 donnée de test, caractérisé en ce que la comparaison comprend la mise en oeuvre des étapes suivantes : 3054054 4 - à partir d'un ensemble S comprenant des indices des données de tests, tels que la valeur du bit de chaque donnée de test associé à un indice de l'ensemble S est invariante sur toutes les C données de test, le serveur décompose la fonction à évaluer en : 5 une sous-fonction fs qui comprend toutes les opérations logiques dont la sortie dépend uniquement de bits d'entrée dont l'indice appartient audit ensemble S et génère pour l'évaluation de cette sous-fonction fs un unique circuit confus dit invariant, une sous-fonction fg qui comprend toutes les opérations logiques 10 de la fonction f non-évaluée par la sous-fonction fs et génère, pour chacune des C données de test , un circuit confus dit variant pour l'évaluation de la sous-fonction fg, - le serveur génère aléatoirement les clés de codage pour l'unique circuit confus invariant et pour les C circuits confus variants, 15 - le serveur envoie les circuits confus à l'une des unités clients, - les deux unités clients récupèrent auprès du serveur par transfert inconscient: des clés de codages correspondant aux valeurs des bits des entrées de la fonction à évaluer en fonction des données de référence et 20 des C données de test respectivement à leur disposition, la première unité client récupérant un ensemble de clés relatives à la donnée biométrique de référence et la deuxième unité client récupérant un ensemble de clés comprenant une clé pour chaque bit associé à un indice appartenant à l'ensemble S et C clés pour chaque bit associé à un 25 indice n'appartenant pas à S, et - l'unité client ayant reçu les circuits confus récupère les clés de codages auprès de l'autre unité client, et évalue la fonction pour chacune des C données tests, avec comme entrées les clés récupérées, en exécutant les circuits confus, 30 - en fonction desdites évaluations de f, authentification ou non de l'utilisateur ou de l'objet. 3054054 5 On profite ainsi de la redondance entre les C données biométriques de test pour limiter la puissance et le temps de calcul. Le procédé peut comprendre les caractéristiques suivantes, prises 5 seules ou en combinaison : - l'ensemble d'indices est déterminé dans une étape préalable par la deuxième unité client par analyse des bits invariants entre les C données de test. 10 - l'ensemble d'indices comprend un nombre fixé d'indices, les indices étant choisis d'une façon quelconque, la deuxième unité client applique une permutation aux bits de chaque donnée invariants entre les C données de test pour que lesdites 15 indices desdits bits invariants correspondent aux indices de l'ensemble d'indices, et les clé de codage sont récupérées pour les bits permutés. - le nombre fixé d'indices de l'ensemble d'indices est déterminé au 20 préalable par une analyse de base de données, le nombre fixé d'indices de l'ensemble d'indices étant choisi pour être inférieur au nombre réel de bit invariants entre les C données de test. - les étapes de décomposition de la fonction à évaluer, de génération 25 des clés de codage et d'envoi des circuits confus à l'une des unités de clients sont mises en oeuvre préalablement à l'acquisition des données tests ou à l'application de la permutation auxdites données. - les deux unités client forment un seul terminal-client, ou en variante le 30 serveur et l'une des deux unités client forment une unique entité, et dans lequel l'autre unité client reçoit les circuits confus, 3054054 6 - le serveur envoie aussi à l'unité client une table de concordance des sorties de chaque circuit confus, de sorte que l'unité client qui évalue la fonction f puisse connaitre la valeur des clés de sortie de l'évaluation. 5 - en variante, le procédé comprend une étape au cours de laquelle l'unité client ayant évalué la fonction envoie au serveur les clés de sortie de l'évaluation et le serveur en déduit, à partir de la table de concordance des sorties de chaque circuit confus, les évaluations de la fonction f. 10 - les données sont des codes binaires d'iris, - la fonction à évaluer comprend le calcul de la distance de Hamming normalisée entre la donnée biométrique de référence et chacune des C 15 données biométriques de test et comprend la comparaison de cette distance à un seuil. - le circuit confus invariant est évalué une seule fois pour les C données de test. 20 L'invention propose aussi un système d'authentification d'individus, comprenant : - une première unité client comprenant une mémoire, - une deuxième unité client comprenant des moyens d'acquisition 25 d'au moins une donnée de test, et - un serveur, configuré pour générer des circuits confus d'évaluation de fonctions, chaque circuit confus ayant pour entrées un ensemble de clés de chiffrement de bits de données d'entrée de la fonction à évaluer et pour sortie les clés de 30 chiffrement correspondant aux bits du résultat de la fonction évaluée, et dans lequel les étapes de calcul de la fonction sont décomposées sous forme d'opérations logiques élémentaires, chaque circuit confus comprenant en outre un ensemble de clé de 3054054 7 codage de chacune des entrées et sorties possibles de chaque opération logique élémentaire, le système étant caractérisé en ce qu'il est configuré pour mettre en oeuvre le procédé tel que décrit précédemment. 5 L'invention propose aussi un serveur, comprenant un calculateur adapté pour générer des circuits confus d'évaluation d'une fonction comprenant la comparaison d'une donnée de référence à une pluralité C de données de test, 10 le serveur étant caractérisé en ce qu'il est adapté pour, à partir d'un ensemble S comprenant des indices de données de tests, tels que la valeur du bit de chaque donnée de test associé à un indice de l'ensemble S est invariant sur toutes les C données de test, décomposer la fonction à évaluer en : 15 une sous-fonction fs qui comprend toutes les opérations logiques dont la sortie dépend uniquement de bits d'entrée dont l'indice appartient audit ensemble S, et une sous-fonction fg qui comprend toutes les opérations logiques de la fonction f non-évaluée par la sous-fonction fs, 20 et pour générer un unique circuit confus dit invariant pour l'évaluation de la sous-fonction fs, et pour chacune des C données de test, un circuit confus dit variant pour l'évaluation de la sous-fonction fs. L'invention propose aussi un produit programme d'ordinateur, 25 comprenant des instructions de code pour la mise en oeuvre d'un procédé comprenant la génération de circuits confus d'évaluation d'une fonction comprenant la comparaison d'une donnée de référence à une pluralité C de données de test, ladite génération comprenant : à partir d'un ensemble S comprenant des indices de données de tests, 30 tels que la valeur du bit de chaque donnée de test associé à un indice de l'ensemble S est invariant sur toutes les C données de test, la décomposition de la fonction à évaluer en : 3054054 8 une sous-fonction fs qui comprend toutes les opérations logiques dont la sortie dépend uniquement de bits d'entrée dont l'indice appartient audit ensemble S, et une sous-fonction fg qui comprend toutes les opérations logiques 5 de la fonction f non-évaluée par la sous-fonction fs , et la génération : - d'un unique circuit confus dit invariant pour l'évaluation de la sous-fonction fs, et, - pour chacune des C données de test, d'un circuit confus dit variant 10 pour l'évaluation de la sous-fonction fg, quand il est exécuté par un calculateur. PRESENTATION DES FIGURES 15 D'autres caractéristiques, buts et avantages de l'invention ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés, sur lesquels : - la figure 1 illustre un système pour l'authentification d'un utilisateur auprès d'une unité client, 20 - les figures 2a à 2e illustrent un exemple de réalisation d'un circuit confus, - le figure 3 illustre une décomposition en opérations élémentaires d'une fonction à évaluer, où la fonction est par ailleurs une distance de Hamming normalisée suivie d'une comparaison du 25 résultat de la distance de Hamming à un seuil, - la figure 4 illustre un schéma simplifié d'une décomposition de la fonction en deux sous-fonctions, chacune associé à un circuit confus, - les figures 5 et 6 détaillent deux variantes d'un procédé conforme 30 à l'invention. DESCRIPTION DETAILLEE 3054054 9 En référence à la figure 1, on a représenté un système permettant d'authentifier un utilisateur. Le système comprend une première unité client 10, un serveur 20 et une deuxième unité client 30. La première unité client 10 et la deuxième unité client 30 peuvent 5 être formées par un même terminal-client, tel qu'un smartphone. Les unités clients 10, 30 et le serveur 20 peuvent communiquer entre eux soit directement, par exemple par signal radiofréquence, soit par le biais d'un réseau 40. 10 Les unités clients 10, 30 se présentent sous la forme d'un téléphonique mobile performant tel qu'un smartphone, ou bien une tablette numérique, ou encore d'un ordinateur. Chaque unité client 10, 30 comprend une unité de calcul 12, 32 dotée notamment d'une mémoire 14, 34 et d'un calculateur 16, 36. 15 Chaque unité client 10,30 peut soit être utilisée par un utilisateur légitime, à qui il appartient, c'est-à-dire un utilisateur non frauduleux, ou bien par un utilisateur mal intentionné, c'est-à-dire un utilisateur frauduleux. Cet utilisateur frauduleux peut soit être une personne, soit être une entité numérique. 20 La mémoire 14, 34 peut être sous la forme d'une mémoire flash, ou bien d'une mémoire morte, type ROM, ou encore d'une mémoire vive RAM. La mémoire 14, 34 peut aussi être sous la forme d'un stockage dit externe, configuré pour être connecté physiquement à l'unité de calcul 12, 32, par exemple par un port USB. 25 Le calculateur 16, 36 est un microprocesseur, un processeur, ou un microcontrôleur apte à effectuer des calculs et en particulier à mettre en oeuvre des calculs cryptographiques. Le calculateur 16, 36 est notamment configuré pour exécuter des lignes de codes issues d'un programme d'ordinateur. 30 La première unité client 10 comprend dans sa mémoire au moins une donnée biométrique b relative à l'utilisateur qui peut être légitimement authentifié. 3054054 10 Avantageusement, la deuxième unité client 30 comprend des moyens d'acquisition de données biométriques 38, dites « test ». Ces moyens 38 permettent d'acquérir une donnée biométrique à partir d'un iris ou d'un visage par exemple. On peut citer par exemple un capteur 5 d'image couplé à un module logiciel d'extraction d'une donnée biométrique. Les moyens d'acquisition de données biométriques 38 peuvent être intégrés à l'unité client 30 ou externes, mais connectables à ce dernier. On connait pour cela des dispositifs d'acquisition reliés en filaire 10 à un ordinateur. Les moyens d'acquisition 38 sont adaptés pour acquérir une image brute d'un trait biométrique qui est ensuite traitée pour obtenir une donnée biométrique exploitable pour la mise en oeuvre d'une authentification. Par donnée biométrique, on entend donc une donnée 15 directement exploitable dans un procédé d'authentification. Les procédés de traitement de l'image brute sont connus et ne seront pas détaillés ici. Le serveur 20 comprend lui aussi une unité de calcul 22 dotée notamment d'une mémoire 24 et d'un calculateur 26. Le serveur 20 est 20 typiquement un serveur de coud, c'est-à-dire délocalisé. La mémoire 24 peut être sous la forme d'une mémoire flash, ou bien d'une mémoire morte, type ROM, ou encore d'une mémoire vive RAM. La mémoire 14 peut aussi être sous la forme d'un stockage dit externe, configuré pour être connecté physiquement à l'unité de calcul 25 22, par exemple par un port USB. Le calculateur 26 est un microprocesseur, un processeur, ou un microcontrôleur apte à effectuer des calculs et en particulier à générer des circuits confus et à générer des clés aléatoires pour chaque valeur de bit. Le calculateur 26 est notamment configuré pour exécuter des 30 lignes de codes issues d'un programme d'ordinateur. Les trois unités de traitement 12, 22, 32 comprennent avantageusement des interfaces de communication 11, 21, 31 à 3054054 11 distance pour l'envoi et la réception de données, notamment par le réseau 40. Le réseau 40 est soit un réseau internet, filaire (Ethernet) ou sans-fil (Wi-Fi), soit un réseau téléphonique GPRS, EDGE, 3G ou 4G ou 5 autre, soit un réseau local, soit un réseau par signal radiofréquence. Les interfaces de communication 11, 21, 31 sont adaptées pour permettre la communication en fonction du réseau 40 concerné. Les deux unités client 10, 30 peuvent faire partie de la même entité. 10 Le serveur 20 peut être la même entité qu'un des deux clients 10 ou 30. Deux variantes E, F d'un procédé d'authentification vont être décrit. Ce procédé utilise les similitudes entre plusieurs images issues 15 d'une vidéo pour éviter de calculer sur des données redondantes. Dans le cadre de la présente invention, la première unité client 10 a en mémoire une donnée biométrique de base b. Pour la suite de la description, on prendra l'exemple d'une donnée de référence d'iris, obtenue à partir d'une image d'iris (le trait biométrique). La deuxième 20 unité client 30 a quant à elle la possibilité d'acquérir une vidéo du trait biométrique - par exemple l'iris d'un utilisateur qui souhaite être authentifié. Par vidéo, on entend une succession d'images capturées à moins de dix centièmes de seconde l'une de l'autre. De cette vidéo est sélectionné et extrait un ensemble de C images, ou plus généralement C 25 données biométriques dites données de test. Ces données appartenant toutes au même utilisateur, elles comprennent des similitudes et notamment un ensemble de bits en commun. Les circuits confus (garbled circuit) du protocole de Yao 30 Transferts inconscients 3054054 12 Le protocole de Yao met en oeuvre des transferts inconscients (connus en anglais sous le nom « oblivious transfers »), qui sont des opérations de calcul entre deux unités P1 et P2. Dans ce type d'opération, P1 dispose d'une liste de N éléments 5 indexés X,, et P2 connaît le nombre N d'éléments de la liste et choisit un indice i entre 1 et N. Par transfert inconscient, P2 récupère le ième élément de Pl, c'est-à-dire l'élément de P1 indexé par i. P1 n'apprend aucune information sur l'indice de l'élément récupéré par P2. 10 P2 ne récupère quant à lui aucune information sur les autres éléments de la liste détenus par Pl. La référence [Ra] présente le principe des transferts inconscients. Circuits confus 15 Le protocole de Yao met également en oeuvre des circuits confus (connus en anglais sous le nom « garbled circuits »). Les figures 2a à 2e illustrent un exemple de réalisation d'un tel circuit confus. Un circuit confus, dont un schéma est représenté à titre d'exemple en figure 2a, est un circuit binaire crypté obtenu à partir 20 d'un circuit booléen représentant une fonction f à évaluer, ce circuit étant décomposé en une succession de portes logiques élémentaires (AND ou XOR par exemple). Le schéma du circuit booléen illustré en figure 2a ne comprend que la fonction élémentaire « AND », qui comporte deux entrées x et y, chacune pouvant prendre la valeur 25 binaire 0 ou 1, et une sortie z, pouvant également prendre la valeur binaire 0 ou 1. De manière traditionnelle, à chaque porte logique est attribuée une table de vérité, ou de concordance, établissant le lien logique entre les sorties et les entrées. On a illustré à titre d'exemple en figure 2b la 30 table de vérité de la fonction logique « AND ». Pour assurer la sécurisation de l'évaluation de la fonction f, chaque entrée et chaque sortie possibles de chaque porte logique élémentaire sont chiffrées par le créateur du circuit confus (ici le serveur 3054054 13 20), au moyen de paires de clés de chiffrement aléatoires, correspondant aux deux valeurs booléennes possibles, propres à chaque entrée ou sortie. On a par exemple en figure 2c remplacé les valeurs binaires 0 et 1 que peut prendre x par des clés correspondantes k'oc et klc, 5 et de même pour les valeurs prises par y et z. Ceci permet d'obtenir une table de concordance où les valeurs binaires d'entrées et de sorties sont remplacées par des clés de chiffrement. Les sorties de chaque porte logique sont ensuite cryptées par les 10 clés de chiffrement des valeurs des entrées correspondantes, pour obtenir une table de vérité cryptée ou confuse (« garbled ») en figure 2d. Ainsi par exemple, dans le cas de la fonction AND, la clé de chiffrement kô correspondant à la valeur 0 de z apparaît dans tous les 15 cas où x et y ne sont pas égaux à 1. En revanche, cette clé kô n'est pas cryptée de la même manière selon les valeurs prises par x et y : en effet, si x et y valent tous deux 0, la clé kô est cryptée au moyen des clés k'oc et kY0 : on note cette clé cryptée Enckuk30,(kp. Enfin, on retire les clés d'entrée de la table, et les clés obtenues 20 pour chaque sortie sont réordonnées de façon aléatoire comme en figure 2e, la table de vérité cryptée et brouillée ainsi obtenue est ce que l'on appelle véritablement le circuit confus. Pour pouvoir évaluer la fonction f du circuit à partir des clés de chiffrement, une table de concordance T entre les clés de chiffrement du 25 résultat de la fonction qu'on évalue et les valeurs correspondantes des bits est générée par le créateur du circuit. Protocole de Yao Enfin, le protocole de Yao est une méthode de calcul sécurisé dans 30 laquelle plusieurs parties souhaitent réaliser un calcul à partir de données dont elles disposent, sans communiquer entre elles la teneur de ces données. 3054054 14 Pour ce faire, l'une des parties (ici le serveur 20) crée un circuit confus d'évaluation d'une fonction f , comme décrit ci-dessus, ainsi que des paires de clés de chiffrement (une pour la valeur binaire 0 et une pour la valeur binaire 1) pour chacun des bits d'entrées et de sorties des 5 portes logiques du circuit. Le créateur du circuit confus génère également une table de concordance T entre les clés de chiffrement du résultat de la fonction et le résultat lui-même. Le créateur du circuit confus envoie ensuite à l'autre partie le circuit confus, et les clés de chiffrement des bits des données d'entrée 10 appartenant au créateur. En d'autres termes, le serveur 20 envoie le circuit confus à uniquement une parmi les deux unités clients. Si le serveur 20 et l'unité client 10 (ou 30 respectivement) sont une même entité, le circuit confus est envoyé à l'unité client 30 (ou 10 respectivement) 15 Ainsi, pour chaque bit x d'entrée du créateur du circuit égal à 0 (respectivement 1), le créateur envoie uniquement la clé de chiffrement k'oc (respectivement kn. Comme ces clés sont aléatoires, l'utilisateur du circuit confus ne peut obtenir aucune information sur les bits correspondant des données détenues par le créateur. 20 En outre, l'utilisateur du circuit confus récupère auprès du créateur, par transfert inconscient, les clés correspondant aux bits des données d'entrée de la fonction qu'ils possèdent. Ainsi, pour chaque bit y d'entrée de l'utilisateur, le créateur prépare une liste à deux éléments composée de g et kYi et l'index choisi 25 par l'utilisateur pour le transfert inconscient est la valeur du bit y. Le recours à la méthode du transfert inconscient permet que le créateur n'obtienne aucune information sur les valeurs des bits des données de l'utilisateur du circuit. Enfin, l'utilisateur du circuit confus peut évaluer la fonction à l'aide 30 des clés qu'il a obtenues afin d'obtenir les clés de sortie correspondant au résultat de l'évaluation de la fonction f. Soit le créateur du circuit confus envoie la table de concordance T à l'utilisateur qui en déduit le résultat de la fonction. Soit l'utilisateur envoie au créateur du circuit 3054054 15 confus la ou les clé(s) de sortie et le créateur du circuit confus en déduit le résultat de la fonction à l'aide de la table de concordance. L'identification par codes binaires d'iris 5 La donnée biométrique d'iris comprend deux vecteurs IC = (I, M) de bits de longueur L, où L vaut généralement 2048. On parle ainsi de codes binaires d'iris (appelé IrisCode, voir référence [IRIS]). Le vecteur I correspond à l'image acquise (par exemple par les moyens 10 d'acquisition 38) et le vecteur M est un masque qui correspond aux bits fiables du premier vecteur I. Par ailleurs, un bit du vecteur M qui vaut 0 représente un effacement (cil, flou, zone cachée par la paupière, etc.). Si un bit du masque M vaut 0, par convention le bit associé à l'image est fixé à 0 aussi. 15 Pour comparer deux codes binaires d'iris M1) et (I2, M2), une distance de Hamming normalisée NHD est communément utilisée : NHD((l1,M1),(12,M2)) = HW (M1andM2) Où pour tout vecteur a, HW(a) représente le poids de Hamming de a. 20 Cette distance de Hamming normalisée NHD est ensuite comparée à un seuil t. Si la distance normalisée NHD est inférieure au seuil t, c'est une authentification ; autrement c'est un rejet. 25 On appelle f la fonction consistant à calculer cette distance de Hamming et à la comparer au seuil t. La fonction f se décompose en une série d'opérations booléennes élémentaires et peut donc être utilisée dans le cadre d'un circuit confus tel que décrit précédemment. 30 Pour des raisons pratiques de virgule flottante, la comparaison NHD REVENDICATIONS1. Procédé d'authentification d'un utilisateur mis en oeuvre à l'aide d'un système comprenant : - une première unité client (10) comprenant une mémoire (14) dans laquelle est stockée une donnée biométrique de référence (b), - une deuxième unité client (30) comprenant des moyens d'acquisition d'au moins une donnée biométrique de test (b'), et - un serveur (20), configuré pour générer des circuits confus (GC) d'évaluation de fonctions (f), chaque circuit confus (GC) ayant pour entrées un ensemble de clés de chiffrement de bits de données d'entrée de la fonction (f) à évaluer et pour sortie les clés de chiffrement correspondant aux bits du résultat de la fonction (f) évaluée, et dans lequel les étapes de calcul de la fonction (f) sont décomposées sous forme d'opérations logiques élémentaires, chaque circuit confus (GC) comprenant en outre un ensemble de clés (k) de codage de chacune des entrées et sorties possibles de chaque opération logique élémentaire, le procédé comprenant la comparaison d'un nombre C de données de test (b'1, ... , 13'c) acquises sur l'utilisateur par la deuxième unité client (30) à la donnée de référence (b), ladite comparaison comprenant le calcul, au moyen de circuits confus (GC), d'une distance entre la donnée de référence (b) et chaque donnée de test (3'1, ... , 13'c), caractérisé en ce que la comparaison comprend la mise en oeuvre des étapes suivantes : - (E3, F3) à partir d'un ensemble S comprenant des indices des données de tests (13'1,...,13'c), tels que la valeur du bit de chaque donnée de test associé à un indice de l'ensemble S est invariante sur toutes les C données de test (b'1, ... , 13'c), le serveur décompose la fonction à évaluer en : une sous-fonction fs qui comprend toutes les opérations logiques dont la sortie dépend uniquement de bits d'entrée dont l'indice 3054054 28 appartient audit ensemble S et génère pour l'évaluation de cette sous-fonction fs un unique circuit confus (GCs) dit invariant, une sous-fonction fg qui comprend toutes les opérations logiques de la fonction f non-évaluée par la sous-fonction fs et génère, pour 5 chacune des C données de test (3'1, ...,13'c), un circuit confus dit variant (GCis.,...,GCès.) pour l'évaluation de la sous-fonction fg, - (E4, F4) le serveur (20) génère aléatoirement les clés de codage (ks,q,...,kn pour l'unique circuit confus invariant (GCs) et pour les C circuits confus variants (GCis.,...,GCès.), 10 - (E5, F5) le serveur envoie les circuits confus (GCs,GCis.,...,GCès.) à l'une des unités clients (10, 30), - (E6, F6) les deux unités clients récupèrent auprès du serveur (20) par transfert inconscient (OT) : des clés de codages (kb,kb,) correspondant aux valeurs des bits 15 des entrées de la fonction (f) à évaluer en fonction des données de référence (b) et des C données de test (b') respectivement à leur disposition, la première unité client (10) récupérant un ensemble de clés (kb) relatives à la donnée biométrique de référence (b) et la deuxième unité client (30) récupérant un ensemble de clés (kb,) comprenant une 20 clé pour chaque bit associé à un indice appartenant à l'ensemble S et C clés pour chaque bit associé à un indice n'appartenant pas à S, et - (E7, F7) l'unité client (10, 30) ayant reçu les circuits confus récupère les clés de codages (kb,kb,) auprès de l'autre unité client (10, 30), et (E8, F8) évalue la fonction (f) pour chacune des C 25 données tests, avec comme entrées les clés récupérées, en exécutant les circuits confus (GCS, Ga ..., GCn, - (E9, F9) en fonction desdites évaluations de f, authentification ou non de l'utilisateur ou de l'objet. 30 2. Procédé selon la revendication 1, dans lequel l'ensemble (S) d'indices est déterminé dans une étape préalable (El) par la deuxième unité 3054054 29 client (30) par analyse des bits invariants entre les C données de test (13'1, ...,13'c). 3. Procédé selon la revendication 1, dans lequel 5 l'ensemble (S) d'indices comprend un nombre fixé d'indices (L- Ism'1), les indices étant choisis d'une façon quelconque, la deuxième unité client (30) applique une permutation (n) aux bits de chaque donnée (b',) invariants entre les C données de test pour que lesdits indices desdits bits invariants correspondent aux indices de 10 l'ensemble d'indices (S), et les clés de codage sont récupérées pour les bits permutés. 4. Procédé selon la revendication 3, dans lequel le nombre fixé d'indices de l'ensemble d'indices (S) est déterminé au préalable par une analyse 15 de base de données, le nombre fixé d'indices de l'ensemble d'indices étant choisi pour être inférieur au nombre réel de bits invariants entre les C données de test. 5. Procédé selon l'une des revendications 3 ou 4, dans lequel les étapes 20 de décomposition de la fonction à évaluer, de génération des clés de codage et d'envoi des circuits confus à l'une des unités clients sont mises en oeuvre préalablement à l'acquisition des données tests ou à l'application de la permutation auxdites données. 25 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel les deux unités clients (10, 30) forment un seul terminal-client. 7. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel le serveur (20) et l'une des deux unités clients (10, 30) forment une 30 unique entité, et dans lequel l'autre unité client (30, 10) reçoit les circuits confus. 3054054 30 8. Procédé selon l'une quelconque des revendications précédentes, dans lequel le serveur (20) envoie aussi à l'unité client (10, 30) une table de concordance (T) des sorties de chaque circuit confus (C), de sorte que l'unité client (10, 30) qui évalue la fonction f puisse connaitre la valeur 5 des clés de sortie de l'évaluation (kôut)- 9. Procédé selon l'une des revendications 1 à 8, comprenant en outre une étape au cours de laquelle l'unité client (10,30) ayant évalué la fonction envoie au serveur (20) les clés de sortie de l'évaluation (kLt) et 10 le serveur en déduit, à partir de la table de concordance des sorties de chaque circuit confus, les évaluations de la fonction f. 10. Procédé selon l'une quelconque des revendications précédentes, dans lequel les données (b, , b'c) sont des codes binaires d'iris. 15 11. Procédé selon l'une quelconque des revendications précédentes, dans lequel dans lequel la fonction (f) à évaluer comprend le calcul de distance de Hamming normalisée entre la donnée biométrique de référence (b) et chacune des C données de test (b'l, , b'c) et comprend 20 la comparaison de cette distance à un seuil (t). 12. Procédé selon l'une quelconque des revendications précédentes, dans lequel le circuit confus invariant (GCS) est évalué une seule fois pour les C données de test. 25 13. Système d'authentification d'individus, comprenant : - une première unité client (10) comprenant une mémoire (14), - une deuxième unité client (30) comprenant des moyens d'acquisition d'au moins une donnée de test (b'1, , Wc), et 30 - un serveur (20), configuré pour générer des circuits confus (GC) d'évaluation de fonctions (f), chaque circuit confus (GC) ayant pour entrées un ensemble de clés de chiffrement de bits de données d'entrée de la fonction (f) à évaluer et pour sortie les 3054054 31 clés de chiffrement correspondant aux bits du résultat de la fonction (f) évaluée, et dans lequel les étapes de calcul de la fonction (f) sont décomposées sous forme d'opérations logiques élémentaires, chaque circuit confus comprenant en outre un 5 ensemble de clé (k) de codage de chacune des entrées et sorties possibles de chaque opération logique élémentaire, le système étant caractérisé en ce qu'il est configuré pour mettre en oeuvre le procédé selon l'une des revendications 1 à 12. 10 14. Serveur (20), comprenant un calculateur (26) adapté pour générer des circuits confus (GC) d'évaluation d'une fonction (f) comprenant la comparaison d'une donnée de référence à une pluralité C de données de test, le serveur (20) étant caractérisé en ce qu'il est adapté pour, à partir 15 d'un ensemble S comprenant des indices de données de tests, tels que la valeur du bit de chaque donnée de test associé à un indice de l'ensemble S est invariant sur toutes les C données de test (13'1,...,13'c), décomposer la fonction (f) à évaluer en : une sous-fonction fs qui comprend toutes les opérations logiques 20 dont la sortie dépend uniquement de bits d'entrée dont l'indice appartient audit ensemble S, et une sous-fonction fg qui comprend toutes les opérations logiques de la fonction f non-évaluée par la sous-fonction fs, et pour générer un unique circuit confus (GCs) dit invariant pour 25 l'évaluation de la sous-fonction fs, et pour chacune des C données de test (b'1, ...,13'c), un circuit confus dit variant (GCis.,...,GCès.) pour l'évaluation de la sous-fonction fg, 15. Produit programme d'ordinateur, comprenant des instructions de 30 code pour la mise en oeuvre d'un procédé comprenant la génération de circuits confus (GC) d'évaluation d'une fonction (f) comprenant la comparaison d'une donnée de référence à une pluralité C de données de test (b'1, , 13'c), ladite génération comprenant : 3054054 32 à partir d'un ensemble S comprenant des indices de données de tests, tels que la valeur du bit de chaque donnée de test (13'1,...,13'c) associé à un indice de l'ensemble S est invariant sur toutes les C données de test (3'1, , 13'c), la décomposition de la fonction (f) à évaluer en : 5 une sous-fonction fs qui comprend toutes les opérations logiques dont la sortie dépend uniquement de bits d'entrée dont l'indice appartient audit ensemble S, et une sous-fonction fs qui comprend toutes les opérations logiques de la fonction f non-évaluée par la sous-fonction fs , 10 et la génération : - d'un unique circuit confus (GCs) dit invariant pour l'évaluation de la sous-fonction fs, et, - pour chacune des C données de test (3'1, ,13'c), d'un circuit confus dit variant (GCis.,...,GCès.) pour l'évaluation de la sous-fonction fg, 15 quand il est exécuté par un calculateur (26).