Brevet FR3047373A1 (20170804)
REVENDICATIONS1. Procédé d'exécution d'un calcul cryptographique mis en oeuvre par deux unités de traitement (P1,P2) comprenant chacune des moyens de traitement, et possédant chacune un vecteur (A,B) comprenant un nombre n de composantes indexées, le procédé comprenant l'évaluation sécurisée d'une fonction F obtenue par l'application à n sous-fonctions f, de plusieurs variables d'une opération dite première opération, avec les vecteurs de chaque unité de traitement comme entrées de la fonction, le procédé étant caractérisé en ce qu'il comprend : - la mise en oeuvre d'une série d'étapes (1001) de calcul sécurisé dans lequel une unité de traitement prend un rôle de client et l'autre unité de traitement prend un rôle de serveur, et - la répétition de la série d'étapes (1002) de calcul sécurisé dans laquelle les rôles de client et de serveur sont échangés entre les deux unités de traitement, chaque série d'étapes (100) comprenant : a) génération aléatoire (110), par le serveur, de n premières données de masquage (r,), dans l'ensemble Zm avec m premier, inversibles pour la première opération, et d'une deuxième donnée de masquage (a) dans l'ensemble Zrn, inversible pour une deuxième opération, différente de la première opération, et distributive par rapport à celle-ci, b) pour chaque sous-fonction f' génération (120) par le serveur d'un ensemble d'éléments, chaque élément étant formé par : o un résultat possible de la sous-fonction f, évaluée en la donnée du client et la donnée du serveur, o masqué par une première donnée de masquage (r,), le masquage étant obtenu par application de la première opération entre le résultat et la première donnée de masquage, et o masqué par la deuxième donnée de masquage (a), le masquage étant mis en oeuvre par application entre le résultat masqué par la première donnée de masquage et la deuxième donnée de masquage de la deuxième opération, c) récupération par transfert inconscient (130), par le client, pour chaque composante de son vecteur, d'une donnée intermédiaire correspondant à 3047373 31 l'un des éléments générés par le serveur et indexé par la valeur de ladite composante, d) génération (140), par le serveur, d'une première partie de résultat (R), par : - le masquage de chaque première donnée de masquage (r,) par la 5 deuxième donnée de masquage (a), et - l'application à toutes lesdites premières données masquées de la première opération, et e) génération (150), par le client, d'une deuxième partie de résultat (T), par application à toutes les données intermédiaires de la première opération, 10 ladite deuxième partie de résultat comprenant une évaluation masquée de la fonction F avec les vecteurs des deux unités de traitement comme entrées, - la mise en oeuvre, par les deux unités de traitement, d'un test d'égalité (200) sur les évaluations masquées de la fonction F obtenues à l'issue de chaque série d'étapes, et 15 - si le test d'égalité est satisfait, le calcul (300), par l'une des deux unités de traitement, de la fonction évaluée avec les données des deux unités de traitement F(A,B) à partir des premières et deuxièmes parties de résultat, et - l'utilisation de la fonction évaluée avec les données des deux unités de traitement dans au moins une application parmi le groupe comprenant une 20 application cryptographique, une application d'identification, et une application d'authentification.\n<CLM>\1\tProcédé selon la revendication 1, dans lequel la mise en oeuvre des deux séries d'étapes est réalisée simultanément.\n<CLM>\1\tProcédé selon l'une des revendications précédentes, dans lequel l'étape de calcul (300) par l'une des deux unités de traitement de F(A,B) comprend l'obtention par une partie, de la partie de résultat détenue par l'autre unité de traitement, et la déduction de F(A,B) à partir des deux parties de résultat.\n<CLM>\1\tProcédé selon l'une des revendications précédentes, dans lequel la fonction à évaluer est une fraction de fonctions, et les étapes de mise en oeuvre et de répétition de la série d'étapes sont effectuées une fois pour le numérateur de la fraction, et une fois pour le dénominateur. 25 30 3047373 32\n<CLM>\1\tProcédé selon l'une des revendications précédentes, dans lequel la première opération est une addition ou une multiplication, et la deuxième opération est respectivement une multiplication ou une mise à la puissance. 5\n<CLM>\1\tProcédé selon la revendication 5, dans lequel la fonction F est une somme des n sous-fonctions f' et la mise en oeuvre de chaque série d'étapes comprend : - lors de l'étape b), chaque élément est formé par la somme d'un résultat possible de la sous-fonction f, évaluée en la donnée du client et la donnée du 10 serveur et d'une première donnée de masquage, et multipliée par la deuxième donnée de masquage, - lors de l'étape d), la première partie du résultat est générée par le serveur par sommation de toutes les premières données de masquage et multiplication par la deuxième donnée de masquage, et 15 - lors de l'étape e), la deuxième partie du résultat est générée par le client par sommation de toutes les données intermédiaires.\n<CLM>\1\tProcédé selon l'une des revendications 5 ou 6, dans lequel la fonction à évaluer est l'une parmi le groupe suivant : 20 - distance de Hamming entre les vecteurs des parties, - distance de Hamming normalisée entre les vecteurs des parties, - produit scalaire entre les vecteurs des parties.\n<CLM>\1\tProcédé selon la revendication 7, dans lequel les vecteurs des unités de 25 traitement sont des données d'identité d'individus, et l'utilisation de la fonction évaluée comprend : - la comparaison (400) de la valeur F(X,Y) à un seuil préétabli en fonction de la nature de la fonction évaluée, et - à partir du résultat de ladite comparaison, la détermination (500) du fait que 30 les données d'identité correspondent ou non à un même individu.\n<CLM>\1\tProcédé selon la revendication 8, dans lequel les données d'identité d'individus sont des données encodées sur des traits biométriques d'individus. 3047373 33\n<CLM>\1\tProcédé selon l'une des revendications 7 à 9, dans lequel chaque sous-fonction f, est une fonction de deux variables, les composantes des données détenues par les unités de traitement sont des entiers compris entre 0 et q-1, et : - l'étape b) comprend la génération par le serveur d'un ensemble comprenant 5 les éléments : (a(ri + fi(0, Y), , a(ri + fi(q - 1,Y))) où Y est le vecteur possédé par le serveur, et - la donnée intermédiaire récupérée lors de l'étape c) est : a(ri + fi (xi, Y))\n<CLM>\1\tProcédé selon l'une des revendications 1 à 5, dans lequel la fonction à évaluer 10 est un produit des n sous-fonctions f' et la mise en oeuvre de chaque série d'étapes comprend : - lors de l'étape b), chaque élément est formé par le produit d'un résultat possible de la sous-fonction f, évaluée en la donnée du client et la donnée du serveur et d'une première donnée de masquage, et mise à la puissance de 15 la deuxième donnée de masquage, - lors de l'étape d), la première partie du résultat est générée par le serveur par produit de toutes les premières données de masquage et mise à la puissance à la deuxième donnée de masquage, et - lors de l'étape e), la deuxième partie du résultat est générée par le client par 20 produit de toutes les données intermédiaires.\n<CLM>\1\tProcédé selon la revendication 11, dans lequel chaque sous-fonction f, est une fonction de deux variables, les composantes des données détenues par les unités de traitement sont des entiers compris entre 0 et q-1, et : 25 - l'étape b) comprend la génération par le serveur d'un ensemble comprenant les éléments : ((ri. fi(0,Y))a , , (ri. fi(q - 1,Y))a) où Y est le vecteur possédé par le serveur, et - la donnée intermédiaire récupérée lors de l'étape c) est : (ri. fi(xi,Y))" 3047373 34\n<CLM>\1\tProduit programme d'ordinateur, comprenant des instructions de code pour l'exécution, par un processeur (10) d'une unité de traitement, d'un procédé comprenant la mise en oeuvre d'une série d'étapes comprenant : - génération aléatoire (110) de n premières données ri dans l'ensemble de Zm 5 avec m premier, et inversibles pour une première opération, et d'une deuxième donnée appartenant à l'ensemble des éléments inversibles de Zm pour une deuxième opération, différente de la première opération et distributive par rapport à celle-ci, - pour chaque i de 1 à n, génération (120) d'un ensemble d'éléments, chaque 10 élément étant formé par : o un résultat possible d'une fonction f, évaluée en une donnée inconnue et une donnée connue, o masqué par une première donnée de masquage (r,), le masquage étant obtenu par l'application de la première opération entre la 15 première donnée et le résultat, et o masqué par la deuxième donnée de masquage (a), le masquage étant mis en oeuvre par application, entre le résultat masqué par la première donnée de masquage et la deuxième donnée de masquage de la deuxième opération, 20 - participation à un protocole de transfert inconscient (130) avec une unité de traitement distincte pour communiquer, pour chaque i de 1 à n, un élément parmi les éléments générés.\n<CLM>\1\tProcédé d'authentification d'un individu, mis en oeuvre par un système 25 d'authentification comportant une première unité de traitement détenant une donnée d'identité de l'individu, et une deuxième unité de traitement détenant une donnée d'identité d'un individu de référence, le procédé comprenant la mise en oeuvre du procédé de traitement de données selon l'une des revendications 1 à 10 par les unités de traitement à partir des deux 30 données d'identité, la fonction à évaluer étant choisie parmi le groupe comprenant : - distance de Hamming entre les vecteurs des parties, - distance de Hamming normalisée entre les vecteurs des parties, - produit scalaire entre les vecteurs des parties. 3047373\n<CLM>\1\tSystème d'authentification d'un individu, comprenant une première unité de traitement et une deuxième unité de traitement, chaque unité de traitement comprenant un processeur (10) et une interface de communication (12), le système étant caractérisé en ce que la première et la deuxième unité de 5 traitement sont adaptées pour mettre en oeuvre le procédé de traitement de données selon l'une des revendications 1 à 10, la fonction à évaluer étant choisie parmi le groupe comprenant : - distance de Hamming entre les vecteurs des parties, - distance de Hamming normalisée entre les vecteurs des parties, 10 - produit scalaire entre les vecteurs des parties.