Brevet FR3001848A1 — publié le 20140808

DOMAINE DE L'INVENTION L'invention concerne de manière générale des procédés de chiffrement de données binaires, et leur application pour le calcul sécurisé de distances de Hamming entre deux données. L'invention trouve des applications notamment dans le domaine de l'identification ou de l'authentification biométrique. ETAT DE LA TECHNIQUE De nombreuses techniques d'identification ou d'authentification biométrique sont déjà connues. Généralement, elles sont mises en oeuvre conjointement par un serveur de contrôle d'un individu ou d'un objet, qui peut procéder à l'acquisition d'une donnée biométrique sur un individu ou d'un objet, et par un serveur de gestion d'une base comprenant N données biométriques de même nature. La donnée de l'individu ou de l'objet, acquise par le serveur de contrôle, est comparée à l'ensemble des données de la base afin d'identifier si au moins une donnée de la base correspond à la donnée acquise, et ainsi identifier l'individu ou l'objet comme un individu ou un objet répertorié dans la base. Pour ce faire, il est courant de calculer la distance de Hamming entre la donnée de l'individu et une ou plusieurs données de la base, c'est-à-dire le nombre de bits différents d'une donnée à l'autre. Ce nombre peut classiquement être calculé en réalisant l'opération « OU exclusif » (connu en anglais sous l'acronyme XOR pour « exclusive OR ») entre les deux données, puis en comptant le poids de Hamming, c'est-à-dire le nombre de bits à 1 du résultat obtenu. Une problématique majeure dans ce contexte est d'assurer la confidentialité des données utilisées. En effet, la base de données comporte des informations privées auxquelles le serveur de contrôle ne doit pas pouvoir accéder, et inversement le serveur de gestion ne doit pas obtenir d'informations sur l'individu, et notamment ne doit pas avoir accès la donnée biométrique qui est exploitée. Pour répondre à cette problématique, des techniques de calcul sécurisé ont été développées, qui permettent à des serveurs de réaliser des calculs sur des données chiffrées, de manière à obtenir le résultat des calculs sans déchiffrer les données ou y avoir accès. Notamment, une technique de chiffrement de données et de calcul sécurisé sur les données chiffrées par cette technique a été développée pour réaliser l'opération « OU exclusif » entre deux données. Cette technique est décrite dans la publication de S. Goldwasser et S. Micali, Probabilistic encryption and how to play mental poker keeping secret ail partial information, in H.R. Lewis, B.B Simons, W.A. Burkhard, L.H. Landweber (eds.) STOC, pp. 365-377. ACM (1982). L'inconvénient principal de cette méthode est qu'elle ne permet que de chiffrer les données bit à bit, ce qui allonge considérablement le temps de calcul nécessaire à sa mise en oeuvre. Il existe donc un besoin pour le développement d'une méthode de chiffrement de données permettant le calcul sécurisé d'une distance de Hamming plus rapide. PRESENTATION DE L'INVENTION L'invention a pour but de pallier les insuffisances de l'art antérieur, en proposant un procédé de chiffrement de données et de calcul sécurisé de distance de Hamming sur des données entières, et non plus bit à bit. Un autre but de l'invention est de proposer un procédé d'identification ou d'authentification sécurisé d'un individu. A cet égard, l'invention a pour objet un procédé de chiffrement d'une donnée binaire caractérisé en ce qu'il comprend les étapes consistant à : - générer une clé publique et une clé privée, la clé publique étant une matrice creuse comprenant m lignes et n colonnes, m étant supérieur au nombre I de bits de la donnée binaire, I étant un entier strictement supérieur à 1, et la clé privée étant un ensemble de I ensembles indexés d'entiers compris entre 1 et m tels que pour chaque ensemble, la somme des éléments des lignes de la matrice creuse indexées par les éléments d'un ensemble est nulle, et - générer une séquence binaire b comprenant m bits, telle que b=Mx+e+y où o x est un vecteur binaire aléatoire, o e est un vecteur de bruit binaire aléatoire, et o y est un encodage linéaire de la donnée c. Avantageusement, mais facultativement, le procédé de chiffrement selon l'invention peut en outre comprendre au moins l'une des caractéristiques suivantes : - les éléments du vecteur e de bruit aléatoire sont des variables de Bernoulli. - l'encodage y de la donnée c est configuré pour qu'une connaissance partielle de la donnée codée y ne soit pas décodable. - l'encodage y de la donnée c est un encodage linéaire par classes latérales, c'est-à-dire que y est un élément sélectionné au hasard parmi les éléments vérifiant la relation 1-Ity=c, où H est une matrice de contrôle d'un code linéaire. - la génération de la clé publique et de la clé privée comprend : o la génération de 1 matrices indexées de q lignes et n colonnes, où q est strictement inférieur à m, les lignes de chaque matrice comprenant chacune trois 1 et les colonnes de chaque matrice comprenant chacune zéro ou deux 1, o la génération d'une matrice creuse M comprenant m lignes et n colonnes, o la génération aléatoire de 1 ensembles indexés d'entiers compris entre 1 et m tels que chaque ensemble comprend q éléments dont son index et tels que deux ensembles distincts ne comprennent aucun élément commun, et o pour chaque ensemble indexé, le remplacement des lignes de la matrice creuse M indexées par les éléments de l'ensemble, par les lignes de la matrice indexée correspondante. - la génération de la clé publique et de la clé privée comprend : o la génération de 1 matrices d-creuses indexées 1-1J, où d est un entier pair supérieur à 3, comprenant chacune q lignes et q/3 colonnes, où q est strictement inférieur à m, chaque ligne d'une matrice comprenant d 1, o la génération d'une matrice d-creuse M comprenant m lignes et n colonnes, o la génération aléatoire de 1 premiers ensembles indexés U, j compris entre 1 et 1, d'entiers compris entre 1+1 et m tels que : - chaque ensemble comprend q éléments, et - deux ensembles distincts ne comprennent aucun élément commun, o la génération aléatoire de I seconds ensembles TJ, j compris entre 1 et I, d'entiers compris entre 1 et n, tels que chaque ensemble T, comprend q/3 éléments, o pour tout j compris entre 1 et I, - le remplacement des éléments de M tel que : - -uk,tq = 1,4 pour tout uk e Uj, tg e 7'1, et - Muk,q = 0 si q T, - la permutation de la jème ligne de M avec une ligne de M indexée par un élément de U, qui est la somme des lignes de M indexées par les éléments d'un sous-ensemble \N, de UJ, o la clé publique obtenue étant la matrice creuse M et la clé privée étant l'ensemble, pour j compris entre 1 et I, des unions des ensembles \N, avec le singleton j. L'invention propose également un procédé de déchiffrement d'une donnée chiffrée obtenue par l'application à une donnée binaire du procédé de chiffrement décrit précédemment, le procédé de déchiffrement comprenant : - pour chaque ensemble d'entiers indexés SJ, la sommation binaire des bits de la donnée chiffrée indexés par les éléments de SJ, chaque bit obtenu correspondant au bit indexé par j de la donnée binaire encodée, et l'ensemble des bits indexés obtenus formant la donnée binaire encodée, et - le décodage de la donnée obtenue, la donnée décodée formant la donnée binaire déchiffrée. Une application proposée par l'invention est un procédé de calcul sécurisé de l'opération « ou exclusif » entre deux données binaires chiffrées par la mise en oeuvre du procédé de chiffrement décrit ci-avant, comprenant les étapes consistant a: - déterminer, à partir des données chiffrées, une séquence de bits correspondant au chiffrement, par ledit procédé de chiffrement, du résultat de l'opération « ou exclusif » entre les deux données binaires, et - déchiffrer la séquence de bits obtenue par la mise en oeuvre du procédé de déchiffrement. Une autre application proposée par l'invention est un procédé de calcul sécurisé d'une distance de Hamming entre deux données binaires chiffrées par la mise en oeuvre du procédé de chiffrement décrit ci-avant, le procédé comprenant les étapes consistant à: a) déterminer, à partir des données chiffrées, le résultat correspondant au chiffrement par le procédé de chiffrement, du résultat de l'opération « ou exclusif » entre les deux données non chiffrées, b) appliquer une permutation a aux I premiers bits du résultat obtenu à l'étape a), et c) déchiffrer la séquence de bits obtenue à l'étape b), et déterminer le poids de Hamming de la donnée obtenue. Avantageusement, mais facultativement, le procédé de calcul sécurisé d'une distance de Hamming proposé par l'invention peut en outre comprendre au moins l'une des caractéristiques suivantes : - le procédé est mis en oeuvre conjointement par deux unités de traitement détenant chacune une des deux données binaires et une clé publique, une unité de traitement détenant en outre la clé secrète associée, et dans lequel : o chaque unité de traitement chiffre la donnée qu'elle détient à partir de la clé publique, l'unité détenant la clé secrète transmettant sa donnée chiffrée à la seconde unité, o la seconde unité met en oeuvre les étapes a) et b) et transfère le résultat à la première unité, et o la première unité met en oeuvre l'étape c). - le procédé est mis en oeuvre conjointement par une unité-serveur détenant les deux données chiffrées et la clé publique, et une unité-client détenant la clé publique et la clé privée associée, et dans lequel : o l'unité-serveur met en oeuvre les étapes a) et b) et transfère le résultat à l'unité client, et o l'unité-client met en oeuvre l'étape c). L'invention propose encore un procédé d'authentification ou d'identification d'un individu, comprenant la comparaison d'une donnée binaire acquise sur l'individu à une ou plusieurs données binaire de référence acquises sur des individus répertoriés, chaque comparaison comprenant le calcul de la distance de Hamming entre la donnée de l'individu et une donnée de la base, ledit calcul étant réalisé par la mise en oeuvre du procédé de calcul sécurisé d'une distance de Hamming décrit ci-avant.. Avantageusement, mais facultativement, dans le procédé d'authentification ou d'identification d'un individu, la donnée de l'individu et la ou les données de la base sont des données biométriques obtenues par encodage d'un même trait biométrique sur l'individu et le ou les individus répertoriés. L'invention propose enfin un système d'identification ou d'authentification d'un individu, comportant au moins un serveur de contrôle d'un individu à identifier ou authentifier, et au moins un serveur de gestion d'une base de données de référence d'individus répertoriés, le serveur de contrôle étant adapté pour procéder à l'acquisition d'une donnée binaire biométrique d'un individu, le serveur de contrôle et le serveur de gestion étant adaptés pour : - calculer au moins une distance de Hamming entre la donnée de l'individu et au moins une donnée de la base, par la mise en oeuvre du procédé de calcul sécurisé de distance de Hamming décrit ci-avant, et - déterminer, à partir de la ou des distances de Hamming calculées, une ou plusieurs données de la base présentant des similarités avec la donnée de l'individu excédant un seuil prédéterminé. DESCRIPTION DES FIGURES D'autres caractéristiques, buts et avantages de la présente invention apparaîtront à la lecture de la description détaillée qui va suivre, au regard des figures annexées, données à titre d'exemples non limitatifs et sur lesquelles : - La figure 1 représente les principales étapes mises en oeuvre pour le chiffrement et le déchiffrement de données, - La figure 2 représente les principales étapes mises en oeuvre pour le calcul sécurisé d'une distance de Hamming, - Les figures 3a et 3b représentent deux variantes de réalisation du calcul d'une distance de Hamming entre deux données. DESCRIPTION DETAILLEE D'AU MOINS UN MODE DE MISE EN OEUVRE DE L'INVENTION Contexte et formalisme Dans toute la suite, les opérations sont réalisées sur des données binaires, c'est-à-dire que les calculs doivent être réalisés en numération en base 2. Ainsi notamment, la nullité d'une valeur correspond à la nullité en base 2 de ladite valeur, c'est-à-dire que la valeur doit être congrue à 0 modulo 2. On note également pour la suite la définition suivante : une matrice d-creuse, où d est un entier, est une matrice comprenant, sur chaque ligne, d éléments non-nuls, le reste de la matrice ne comprenant que des O. De plus, on introduit la fonction de chiffrement homomorphe pour une opération o si, avec deux données chiffrées c1 et c2 obtenues par ledit chiffrement respectivement de données m1 et m2, il est possible de déterminer le chiffré c3 d'une donnée m3=m1om2 en connaissant uniquement la clé publique (et pas la clé secrète) du chiffrement employé. Procédé de chiffrement et de déchiffrement de données En référence à la figure 1, on a représenté les principales étapes d'un procédé de chiffrement 1000 et de déchiffrement 2000 de données binaires comprenant chacune I bits, I étant strictement supérieur à 1. Le procédé de chiffrement est un procédé de chiffrement asymétrique, reposant sur l'utilisation d'une clé publique pk accessible à tous et permettant le chiffrement de données, et d'une clé secrète sk accessible seulement au destinataire des données, et nécessaire pour réaliser le déchiffrement des données. Le procédé comporte donc une première étape 100 de génération d'une clé publique pk et d'une clé secrète sk. La clé publique pk est une matrice d-creuse M e t0,1Imxn, c'est-à-dire que la matrice comprend m lignes et n colonnes, m et n étant des entiers, et qu'elle comprend sur chaque ligne d éléments égaux à 1, le reste de la matrice ne comprenant que des 0. d est donc inférieur à n. La clé secrète sk est un ensemble de I ensembles indexés (S1)1,1 tels que pour tout j compris entre 1 et I, j e SI et EiEs j M1 = 0, où M, est la ième ligne de M. La génération de la clé publique et de la clé secrète peut être mise en oeuvre de différentes manières, dont deux modes de mise en oeuvre préférentiels sont décrits ci-après. Selon un premier mode de mise en oeuvre, cette étape 100 comprend la génération 110 de I matrices indexées H, choisies uniformément parmi les matrices comprenant q lignes et n colonnes, et où chaque ligne de la matrice contient exactement trois 1 et chaque colonne contient zéro ou deux 1. Au cours d'une étape 120, on génère une matrice M 3-creuse comprenant m lignes et n colonnes, m étant supérieur à q, les lignes de M étant choisies suivant une loi de distribution uniforme. Au cours d'une étape 130, on génère de façon aléatoire I ensembles indexés Si, j compris entre 1 et I, comprenant chacun q éléments entiers compris entre 1 et m, et tels que pour tout j, j e SI et SI n Sk = 0 pour] # k. Puis, au cours d'une étape 140, on remplace, pour tout j compris entre 1 et I, les lignes de M indexées par les éléments de Si par les lignes de H. La clé publique pk est donc M, et la clé privée sk est l'ensemble des Si On obtient bien par ce procédé les caractéristiques de la clé publique et de la clé secrète décrites ci-avant, et notamment le fait que chaque somme des lignes de la matrice M indexées par les éléments d'un Si est nulle. En effet, pour chaque j, on remplace q lignes de M par les q lignes de la matrice H, correspondante. Or, chaque colonne de H, ne comprend que 0 ou 2 éléments égaux à 1. La sommation de ces lignes est donc nulle (c'est-à-dire congrue à 0 modulo 2). Alternativement, l'étape 100 de génération de la clé publique pk et de la clé privée sk comprend la génération, au cours d'une étape 110', de I matrices d- creuses indexées I-IJ, j compris entre 1 et I, d étant un entier pair supérieur à 3, et les éléments desdites matrices étant choisis selon une loi de distribution uniforme, comprenant chacune q lignes et q/3 colonnes, où q est strictement inférieur à m. Au cours d'une étape 120', on génère une matrice d-creuse M comprenant m lignes et n colonnes. Au cours d'une étape 130', on génère de façon aléatoire I premiers ensembles indexés Ul c tl + 1, ..., ml, j compris entre 1 et I, comprenant chacun q éléments, et tels que deux ensembles distincts U, et Uk ne comprennent aucun élément commun : Ul n Uk = 0. Au cours d'une étape 140', on génère de façon aléatoire I seconds ensembles TJ, j compris entre 1 et I, d'entiers compris entre 1 et n, tels que chaque ensemble T, comprend q/3 éléments. Puis, au cours d'une étape 150', on remplace des éléments de M par des éléments de chaque matrice I-IJ, j compris entre 1 et I, de la façon suivante : M t = H-11c,q pour tout Uk e Uj, tg e T» et Muk,tq = 0 si tq e 7. Au cours d'une étape 160', on identifie une ligne j, de M indexée par un élément de U, qui est la somme des lignes de M indexées par les éléments d'un sous-ensemble \/V, de UJ, et on permute cette ligne avec la jème ligne de M. Cette ligne existe compte-tenu des propriétés des matrices et des ensembles générés au cours des étapes précédentes. La clé publique pk obtenue est la matrice M et la clé privée sk est l'ensembletS1 = u fj}} Le fait que la somme des lignes de M indexées par les éléments des Sj soit nulle provient du fait que la jème ligne de M est égale à la somme des lignes de \/V, et que les additions sont réalisées en binaire. Suite à l'étape 100 de génération de la clé publique et de la clé privée, le procédé de chiffrement comprend l'encodage 200 de la donnée binaire c pour obtenir une donnée encodée y. L'encodage est réalisé au moyen d'un codage linéaire permettant avantageusement de résoudre le problème dit du « wire-tap channel » (pouvant être traduit par « canal à jarretière »), exposé, présenté dans l'article VVyner, A.D. : The wire-tap channel, The Bell System Technical Journal 54(8), 1355-1387. Le problème exposé dans cet article est de proposer un codage linéaire qui permette d'encoder une donnée A, pour obtenir une donnée encodée B telle que, si B parvient à un destinataire via une ligne d'écoute non-bruitée, c'est-à-dire que B parvient à son destinataire sans avoir subi de modifications, le destinataire peut la décoder pour obtenir la donnée A. En revanche, si B parvient à son destinataire via une ligne d'écoute bruitée, c'est-à-dire que le tiers ne dispose que d'une donnée B partielle, ce qui est typiquement le cas d'une attaque par un tiers, il est impossible de la décoder pour obtenir la donnée A. Ce type de codage permet d'assurer que même une connaissance partielle de la donnée encodée B ne permet pas d'obtenir la donnée décodée A. Un codage vérifiant ces propriétés est par exemple le codage du type dit « par classes latérales » (appelé en anglais « coset coding »), également présenté dans l'article. De retour au procédé de chiffrement, l'étape d'encodage 200 de la donnée binaire c est avantageusement réalisée au moyen d'un codage linéaire du type par classes latérales. Ce type d'encodage exploite un code linéaire C de paramètres [n,k,d] avec une matrice de contrôle H de dimensions (n-k)*k. L'encodage d'une donnée m est une donnée x telle que 1-15(=m. Pour décoder la donnée encodée x, on réalise l'opération m=1-1tx. Dans le cas du procédé de chiffrement décrit en référence à la figure 1, y est un vecteur de [0,11/ sélectionné aléatoirement parmi l'ensemble des vecteurs vérifiant H.y = c, où c est la donnée binaire à chiffrer, et H est une matrice de contrôle de dimension r*I du code linéaire sur lequel est basé le codage par classes latérales. Au cours d'une étape 300, on génère une donnée chiffrée b telle que b = M.x + e + (371,...,371,0,...,0), où M est la matrice publique, c'est-à-dire la matrice creuse obtenue à l'étape 100, x est un vecteur en colonne binaire généré aléatoirement, de taille n, e est un vecteur en ligne de bruit binaire généré aléatoirement, de taille m, et les I premiers bits du terme (371,...,371,0, ...,0) sont les éléments de l'encodage y de la donnée c, et les m-I derniers bits sont des 0. Avantageusement, les éléments du vecteur de bruit e sont des variables de Bernoulli, c'est-à-dire qu'ils suivent une loi de Bernoulli de paramètre c: les éléments de e présentent donc la valeur 1 avec une probabilité e. On note e RBeir. De préférence, e est une valeur très faible, de l'ordre de n-0.2 .Le rôle de ce vecteur de bruit est de rendre difficile la recherche de y à partir de b. Le procédé de chiffrement mis en oeuvre présente un niveau de sécurité élevé, notamment grâce à l'encodage de la donnée c par un codage vérifiant les propriétés du « wire-tap channel ». En effet, comme indiqué précédemment, ce codage permet qu'un tiers qui obtiendrait une connaissance partielle de la donnée encodée y ne parviendrait pas à la décoder. En l'espèce, un tiers qui obtiendrait la donnée chiffrée b ne pourrait donc pas parvenir à la déchiffrer car, même s'il obtient des informations partielles sur y, celles-ci ne lui donnent aucune information sur la donnée c. La donnée chiffrée b obtenue comprend donc m bits. On va maintenant décrire le déchiffrement 2000 d'une donnée b, comprenant m bits, obtenue par la mise en oeuvre du procédé décrit ci-avant. Pour ce faire, il est nécessaire de disposer de la clé secrète sk, c'est-à-dire de l'ensemble des ensembles indexés S. On calcule alors, au cours d'une étape 2100, la somme des bits de b indexés par les éléments de S,, pour chaque j compris entre 1 et I, ce qui correspond à un bit y, de la donnée encodée y. La séquence des y, constitue la donnée encodée Y= (Y1,...,30. En effet, la sommation des éléments de M.x indexés par les éléments de S, est nulle, du fait du choix des S. La sommation des éléments de b indexés par S, donnera donc y,, additionné à un terme d'erreur négligeable. Par conséquent, les bits obtenus par la sommation des éléments de b, indexés par les ensembles sont les bits de y, au bruit près. Au cours d'une étape 2200, on décode la donnée y obtenue en appliquant le décodage du code linéaire de type par classes latérales, c'est-à-dire c=H.y, où c est la donnée binaire déchiffrée. Le procédé de chiffrement proposé présente l'avantage d'être homomorphe pour l'opération « XOR » (OU exclusif) symbolisée par l'opérateure, c'est-à-dire que pour deux messages c1 et c2 de I bits à chiffrer, on peut obtenir le chiffré de c1ec2 à partir de b1 et b2, les données obtenues respectivement par le chiffrement de ci et C2. En l'occurrence, le ou-exclusif de b1 et b2 est un chiffré possible de c1ec2 par le procédé de chiffrement 1000, c'est-à-dire que la mise en oeuvre de l'opération ou exclusif entre b1 et b2 correspond au chiffrement de c1ec2 par le même procédé de chiffrement 1000 avec les mêmes paramètres. Cette propriété découle du caractère linéaire du code par classes latérales employé. Procédé de calcul sécurisé de distance de Hamming Le procédé de chiffrement et de déchiffrement décrit ci-avant permet la mise en oeuvre d'un calcul sécurisé 3000 de distances de Hamming entre deux données binaires c1 et c2, ce calcul étant mis en oeuvre conjointement par deux unités de traitement U1 et U2. La notion de calcul « sécurisé » indique que le résultat du calcul doit être obtenu sans que chaque unité de traitement puisse avoir accès aux données détenues par l'autre. Ce calcul peut être mis en oeuvre selon deux variantes représentées respectivement en figures 3a et 3b, les étapes communes auxdites variantes étant représentées en figure 2. En référence à la figure 2, le calcul sécurisé d'une distance de Hamming entre deux données binaires c1 et c2 est mis en oeuvre entre les chiffrés b1 et b2 correspondant auxdites données, obtenus par la mise en oeuvre du procédé de chiffrement décrit ci-avant. On notera par la suite b,=E(c,) pour indiquer qu'une donnée b, est le chiffré d'une donnée c, par ce procédé de chiffrement. Le procédé de calcul comprend l'obtention 3100 du chiffré du résultat de l'opération OU exclusif entre les données binaires non chiffrées E(c1ec2), ce résultat étant obtenu par la mise en oeuvre de l'opération « OU exclusif » entre les chiffrés :b1eb2 = E(c1)eE(c2), d'après les propriétés homomorphes du procédé de chiffrement pour l'opération OU exclusif décrites ci-avant. Le procédé comprend ensuite la permutation 3200 des I premiers bits du résultat obtenu à l'étape précédente, par la mise en oeuvre d'une permutation a choisie aléatoirement. Le résultat obtenu correspond au chiffré de la permutation du résultat de l'opération « OU exclusif » entre les deux données c, non chiffrées, c'est- à-dire E(0-(clec2)). Or la permutation ne modifie pas le poids de Hamming d'une séquence de bits. Donc le message 0-(c1ec2) présente le même poids de Hamming que c1ec2, ce poids de Hamming correspondant donc à la distance de Hamming entre c1 et c2. Il suffit donc, au cours d'une étape 3300 de déchiffrer le message E(0-(c1ec2)) et déterminer le poids de Hamming du résultat obtenu pour obtenir la distance de Hamming entre c1 et c. Comme indiqué ci-avant, plusieurs implémentations de ce procédé par des unités de traitement U1 et U2 sont possibles. Selon un premier mode de mise en oeuvre, illustré en figure 3a, chaque unité de traitement U1 et U2 dispose respectivement d'une donnée binaire cl, c2 et d'une clé publique pk du type employé dans le procédé décrit ci-avant. La clé secrète correspondante sk est détenue par une seule des deux unités, par exemple U1. Au cours d'une première étape 3010, chaque unité de traitement chiffre la donnée qu'elle détient par la mise en oeuvre du procédé de chiffrement 1000 décrit ci-avant. L'unité U1 détenant la clé secrète transfère ensuite sa donnée chiffrée E(ci) à l'autre unité U2 au cours d'une étape 3020. Puis, l'unité U2 met en oeuvre l'opération OU exclusif 3100 entre les deux données chiffrées, choisit et effectue la permutation a 3200 des I premiers bits du résultat obtenu pour obtenirE(o-(c1ec2)). L'unité U2 transfère ce résultat à l'unité U1 au cours d'une étape 3210 et l'unité U1 déchiffre le résultat, par la mise en oeuvre du procédé de déchiffrement 2000, grâce à la clé secrète sk qu'elle détient, pour obtenir 0-(c1ec2) et compte son poids de Hamming, pour obtenir la distance de Hamming entre c1 et c2. Optionnellement, le résultat de la distance de Hamming entre les données peut être communiqué par l'unité U1 à l'unité U2. Selon un mode de mise en oeuvre alternatif, représenté en figure 3b, l'unité de traitement U1 dispose à l'origine des deux données déjà chiffrées E(ci) et E(c2) et de la clé publique pk. L'unité de traitement U2 dispose quant à elle de la clé publique Pk et de la clé privée 5k. Cette situation s'applique notamment au cas du traitement dématérialisé de données (en anglais, « cloud computing »), où l'unité U1 est un serveur distant qui stocke des données confidentielles d'individus et ne doit pas y avoir accès. Dans cette situation, c'est l'unité U1 qui effectue l'opération OU exclusif 3100 entre les deux données chiffrées, qui choisit et qui applique 3200 la permutation a des I premiers bits du résultat obtenu. Puis, au cours d'une étape 3210, l'unité U1 transfère E(0-(clec2)) obtenu à l'étape 3200 à l'unité U2. Au cours d'une étape 3300, l'unité U2 déchiffre, par application du procédé 2000, grâce à la clé secrète qu'elle détient, la donnée reçue de l'unité U2 pour obtenir la donnée 0-(c1ec2), compte son poids de Hamming et obtient ainsi la distance de Hamming entre c1 et c. Optionnellement, l'unité U2 peut également transférer la distance de Hamming entre les données c, à l'unité U1. Application à l'identification ou à l'authentification sécurisée Cette méthode 3000 de calcul d'une distance de Hamming est avantageusement appliquée à l'identification (comparaison d'un individu à une pluralité d'individus candidats pour détecter une correspondance entre l'individu et un des candidats) ou l'authentification (comparaison d'un individu avec un individu candidat pour détecter une correspondance) biométrique d'un individu. On compare alors une donnée biométrique d'un individu à une (dans le cas de l'authentification) ou plusieurs (dans le cas de l'identification) données d'individus répertoriés, chaque comparaison étant réalisée par calcul de la distance de Hamming entre les données. Les données biométriques sont des encodages numériques de traits biométriques d'individus. Elles doivent correspondre à un même trait biométrique pour pouvoir être comparables : ce trait peut être un ou deux iris, une ou plusieurs empreintes digitales, la forme du visage, la forme du réseau veineux, l'ADN, les empreintes palmaires, etc. Un système d'identification ou d'authentification biométrique 1 d'un individu adapté pour la mise en oeuvre du procédé 3000 comprend avantageusement un serveur de contrôle SC d'un individu à identifier et un serveur de gestion SG d'une base de données biométriques, ladite base comprenant au moins une donnée biométrique de référence c, acquise sur un individu répertorié. Le serveur de contrôle SC comporte avantageusement des moyens pour acquérir une donnée biométrique b sur un individu à identifier ou authentifier. Il peut s'agir par exemple d'un lecteur d'empreintes digitales ou de document d'identité biométrique, ou d'un appareil photo. Les serveurs de contrôle SC et de gestion SG sont avantageusement configurés pour mettre en oeuvre l'une ou l'autre des variantes de mise en oeuvre du procédé 3000 décrit ci-avant. Dans la mise en oeuvre représentée en figure 3a, l'unité de traitement U1 correspond avantageusement au serveur de contrôle SC qui acquière une donnée b sur un individu à identifier et compare ladite donnée à une ou plusieurs données c, détenues par le serveur de gestion pour obtenir, pour chaque c' la distance de Hamming entre la donnée b et la donnée c,. Typiquement, si une distance de Hamming entre b et une des données c, est inférieure à un seuil prédéterminé, une correspondance est détectée entre l'individu sur qui a été acquise la donnée b et l'individu de référence sur qui a été acquise la donnée c,. Dans la mise en oeuvre représentée en figure 3b, l'unité de traitement U2 correspond avantageusement au serveur de contrôle SC. Dans ce cas, les données de référence stockées dans la base sont déjà chiffrées, de sorte que le serveur de gestion SG ne puisse accéder qu'aux données chiffrées, et le serveur de contrôle chiffre la donnée b acquise sur l'individu avant de la transmettre au serveur de gestion. Au terme du procédé 3000, le serveur de contrôle obtient la distance de Hamming entre la donnée b et une ou plusieurs données c, de la base, et peut de la même manière détecter une correspondance entre l'individu et un ou plusieurs individus répertoriés. On a donc présenté un procédé de chiffrement permettant de calculer de manière sécurisée une distance de Hamming sur des données entières, et non plus bit à bit, ce calcul pouvant en outre être appliqué à l'identification ou l'authentification biométrique.5 REVENDICATIONS1. Procédé de chiffrement d'une donnée binaire (c) caractérisé en ce qu'il comprend les étapes consistant à : générer une clé publique (pk) et une clé privée (sk), la clé publique étant une matrice (M) creuse comprenant m lignes et n colonnes, m étant supérieur au nombre I de bits de la donnée binaire, I étant un entier strictement supérieur à 1, et la clé privée étant un ensemble de I ensembles indexés (Si) d'entiers compris entre 1 et m tels que pour chaque ensemble, la somme des éléments des lignes de la matrice creuse indexées par les éléments d'un ensemble est nulle, et - générer une séquence binaire b comprenant m bits, telle que b=Mx+e+y où o x est un vecteur binaire aléatoire, o e est un vecteur de bruit binaire aléatoire, et o y est un encodage linéaire de la donnée c. 2. Procédé de chiffrement d'une donnée binaire selon la revendication précédente, dans lequel les éléments du vecteur e de bruit aléatoire sont des variables de Bernoulli. 3. Procédé de chiffrement d'une donnée binaire selon l'une des revendications 1 ou 2, dans lequel l'encodage y de la donnée c est configuré pour qu'une connaissance partielle de la donnée codée y ne soit pas décodable. 4. Procédé de chiffrement d'une donnée binaire selon l'une des revendications 1 à 3, dans lequel l'encodage y de la donnée c est un encodage linéaire par classes latérales, c'est-à-dire que y est un élément sélectionné au hasard parmi les éléments vérifiant la relation Hty=c, où H est une matrice de contrôle d'un code linéaire. 5. Procédé de chiffrement selon l'une des revendications 1 à 4, dans lequel la génération de la clé publique et de la clé privée comprend :la génération de 1 matrices indexées (Hl) de q lignes et n colonnes, où q est strictement inférieur à m, les lignes de chaque matrice comprenant chacune trois 1 et les colonnes de chaque matrice comprenant chacune zéro ou deux 1, - la génération d'une matrice creuse M comprenant m lignes et n colonnes, la génération aléatoire de 1 ensembles indexés (S1) d'entiers compris entre 1 et m tels que chaque ensemble comprend q éléments dont son index et tels que deux ensembles distincts ne comprennent aucun élément commun, et pour chaque ensemble indexé, le remplacement des lignes de la matrice creuse M indexées par les éléments de l'ensemble, par les lignes de la matrice indexée correspondante. 6. Procédé de chiffrement selon l'une des revendications 1 à 4 dans lequel la génération de la clé publique et de la clé privée comprend : - la génération de I matrices d-creuses indexées Hj, où d est un entier pair supérieur à 3, comprenant chacune q lignes et q/3 colonnes, où q est strictement inférieur à m, chaque ligne d'une matrice comprenant d 1, la génération d'une matrice d-creuse M comprenant m lignes et n colonnes, la génération aléatoire de 1 premiers ensembles indexés Uj, j compris entre 1 et 1, d'entiers compris entre 1+1 et m tels que : o chaque ensemble comprend q éléments, et o deux ensembles distincts ne comprennent aucun élément commun, - la génération aléatoire de 1 seconds ensembles Tj, j compris entre 1 et I, d'entiers compris entre 1 et n, tels que chaque ensemble Tj comprend q/3 éléments, pour tout j compris entre 1 et 1, o le remplacement des éléments de M tel que : - 114uk,tq = pour tout uk E Uj, tg E 7'1, et - - - Muka = 0 si q eo la permutation de la en' ligne de M avec une ligne de M indexée par un élément de UJ qui est la somme des lignes de M indexées par les éléments d'un sous-ensemble W, de UJ, - la clé publique obtenue étant la matrice creuse M et la clé privée étant l'ensemble, pour j compris entre 1 et I, des unions des ensembles W, avec le singleton j. 7. Procédé de déchiffrement d'une donnée chiffrée obtenue par l'application à une donnée binaire du procédé selon l'une des revendications précédentes, le 10 procédé comprenant : pour chaque ensemble d'entiers indexés Sj, la sommation binaire des bits de la donnée chiffrée indexés par les éléments de SJ, chaque bit obtenu correspondant au bit indexé par j de la donnée binaire encodée, et l'ensemble des bits indexés obtenus formant la donnée binaire 15 encodée, et - le décodage de la donnée obtenue, la donnée décodée formant la donnée binaire déchiffrée. 8. Procédé de calcul sécurisé de l'opération « ou exclusif » entre deux données 20 binaires chiffrées par la mise en oeuvre du procédé selon l'une des revendications 1 à 6, comprenant les étapes consistant à: - déterminer, à partir des données chiffrées, une séquence de bits correspondant au chiffrement, par ledit procédé de chiffrement, du résultat de l'opération « ou exclusif » entre les deux données binaires, et 25 déchiffrer la séquence de bits obtenue par la mise en oeuvre du procédé selon la revendication 7. 9. Procédé de calcul sécurisé d'une distance de Hamming entre deux données binaires chiffrées par la mise en oeuvre du procédé selon l'une des revendications 1 30 à 6, le procédé comprenant les étapes consistant à: a) déterminer, à partir des données chiffrées, le résultat correspondant au chiffrement par le procédé selon l'une des revendications 1 à 6, du résultat de l'opération « ou exclusif » entre les deux données non chiffrées,b) appliquer une permutation a aux I premiers bits du résultat obtenu à l'étape a), et c) déchiffrer la séquence de bits obtenue à l'étape b), et déterminer le poids de Hamming de la donnée obtenue. 10. Procédé de calcul sécurisé d'une distance de Hamming selon la revendication précédente, le procédé étant mis en oeuvre conjointement par deux unités de traitement détenant chacune une des deux données binaires et une clé publique, une unité de traitement détenant en outre la clé secrète associée, et dans lequel : - chaque unité de traitement chiffre la donnée qu'elle détient à partir de la clé publique, l'unité détenant la clé secrète transmettant sa donnée chiffrée à la seconde unité, - la seconde unité met en oeuvre les étapes a) et b) et transfère le résultat à la première unité, et la première unité met en oeuvre l'étape c). 11. Procédé de calcul sécurisé d'une distance de Hamming selon la revendication 9, le procédé étant mis en oeuvre conjointement par une unité-serveur détenant les deux données chiffrées et la clé publique, et une unité-client détenant la clé publique et la clé privée associée, et dans lequel : - l'unité-serveur met en oeuvre les étapes a) et b) et transfère le résultat à l'unité client, et - l'unité-client met en oeuvre l'étape c). 25 12. Procédé d'authentification ou d'identification d'un individu I, comprenant la comparaison d'une donnée binaire acquise sur l'individu à une ou plusieurs données binaire de référence acquises sur des individus répertoriés, caractérisé en ce que chaque comparaison comprend le calcul de la 30 distance de Hamming entre la donnée de l'individu et une donnée de la base, ledit calcul étant réalisé par la mise en oeuvre du procédé selon l'une des revendications 9à 11. 13. Procédé selon la revendication 12, dans lequel la donnée de l'individu et la ou les données de la base sont des données biométriques obtenues par encodage d'un même trait biométrique sur l'individu et le ou les individus répertoriés. 14. Système d'identification ou d'authentification d'un individu, comportant au moins un serveur de contrôle d'un individu à identifier ou authentifier, et au moins un serveur de gestion d'une base de données de référence d'individus répertoriés, le serveur de contrôle étant adapté pour procéder à l'acquisition d'une donnée binaire biométrique d'un individu, le système étant caractérisé en ce que le serveur de contrôle et le serveur de gestion sont adaptés pour : - calculer au moins une distance de Hamming entre la donnée de l'individu et au moins une donnée de la base, par la mise en oeuvre du procédé selon l'une des revendications 9 à 11, et - déterminer, à partir de la ou des distances de Hamming calculées, une ou plusieurs données de la base présentant des similarités avec la donnée de l'individu excédant un seuil prédéterminé.