Oubliez le cryptage homomorphique: nous avons maintenant un cryptage fonctionnel



Avez-vous entendu parler du chiffrement fonctionnel (FS)? Peut-être que vous en avez entendu parler et que vous le mettez sur un pied d'égalité avec le cryptage homomorphique , ce qui n'est pas tout à fait faux, mais pas complètement correct.

Jetons un œil à ce que FS est avec vous aujourd'hui, analysons quelques exemples et en quoi il diffère du cryptage entièrement homomorphe (PGS).

Décidons d'abord ce que nous voulons dire lorsque nous parlons de FS. Plus récemment, en 2010, Dan Bonnet, Amit Sahai et Brent Waters ont officialisé le concept de FS. Approximativement FS peut être décrit comme suit: il s'agit d'un schéma de chiffrement avec une clé publique, où différentes clés de déchiffrement permettent à l'utilisateur de se renseigner sur certaines fonctions des données chiffrées.

Ainsi, dans le schéma FS pour la fonction F (·, ·), le chiffreur avec la clé principale génère la clé s k , qui permet de calculer la fonction F (k, ·) à partir des données chiffrées de sorte que le déchiffreur, connaissant le texte chiffré c à partir des données x et la clé s k , est capable de calculer F (k, x) sans pouvoir trouver autre chose que le résultat du calcul d'une fonction à partir de x.

FS vs PGS


Si vous connaissez le concept de PGS, il sera intéressant de faire le parallèle suivant:

À l'aide de PGS, vous pouvez calculer toutes les fonctions des données chiffrées sans déchiffrer ces données. Il s'agit d'une opportunité intéressante pour déléguer l'informatique à des tiers qui n'ont pas confiance. L'inconvénient de cette approche est que le résultat est également chiffré, et pour le déchiffrer, vous devez l'envoyer au propriétaire de la clé privée. Le processus PGS peut être représenté comme suit, où E est le schéma de cryptage et F est la fonction que nous voulons calculer à partir des données cryptées:

E (x_1), E (x_2), ..., E (x_n) → E (F (x_1, x_2, · ·, x_n))

En revanche, avec FS, le résultat est directement disponible pour nous immédiatement après les calculs, c'est-à-dire que nous avons à notre disposition:

E (x_1), E (x_2), · ·, E (x_n) → F (x_1, x_2, · ·, x_n)

Dans un sens, FS est un schéma qui calcule et déchiffre simultanément le résultat, sans fuite de la clé privée et aucune information sur x 1 , x 2 , · · ·, x n sauf le résultat du calcul lui-même.

De toute évidence, nous n'avons pas besoin que tout le monde soit en mesure de calculer la fonction de leur choix, car sinon, il serait facile d'obtenir des informations sur des paramètres individuels en texte clair (par exemple, pour calculer une fonction identique). Par conséquent, seul le propriétaire de la clé privée peut déchiffrer E (x_i) et générer des clés de règlement pour certaines fonctions de son choix. Cela signifie que le FS exige la présence d'une «autorité centrale» délivrant des «clés de règlement» aux personnes chargées des calculs fonctionnels.

Autrement dit, FS est une généralisation de l'idée de chiffrement avec une clé publique, permettant aux utilisateurs de déléguer à des tiers des calculs de certaines classes de fonctions à partir de données chiffrées en générant certaines clés secrètes pour ces fonctions. Contrairement aux schémas de cryptage standard, il vous permet de contrôler plus précisément les capacités de décryptage disponibles pour les tiers.

FS est extrêmement utile car il nous permet de transférer intentionnellement certaines informations sur les données chiffrées à certains utilisateurs. Par exemple, nous pouvons obtenir la valeur moyenne d'un ensemble de données chiffrées sans révéler les données elles-mêmes, ou obtenir plus de statistiques sur cet ensemble. Avec les problèmes de sécurité actuels et les exigences mises en place par de nouvelles lois, telles que le RGPD, la nécessité de schémas FS efficaces devient plus claire, car elle permet à des tiers de traiter des données cryptées sans donner ces données à quiconque sous sa forme pure. Cela signifie que nous pouvons aller plus loin que ne le permet la pseudo-anonymisation des données personnelles, en garantissant une confidentialité plus stricte!

Retour à FS


En raison de sa nature générale, FS embrasse et combine de nombreux autres schémas de cryptage avancés qui ont été précédemment étudiés indépendamment, à savoir: cryptage basé sur l'authentification , cryptage consultable, cryptage vectoriel caché, cryptage basé sur l'identification avec des modèles génériques, cryptage basé sur des attributs , chiffrement fonctionnel avec produit scalaire.

Bien que les programmes FS soient encore très jeunes, beaucoup de choses se sont produites depuis 2010, et il existe déjà beaucoup de programmes intéressants qui vous permettent de faire des choses qui semblaient très compliquées il y a 8 ans. Il est déjà arrivé au point que des rapports sur FS soient organisés lors de certaines conférences cryptographiques!

Examinons plusieurs types différents de schémas FS. Par exemple:

  • Cryptage fonctionnel avec un produit scalaire (FSFS), où le texte en clair est un vecteur, et les données cryptées avec la clé peuvent être utilisées pour calculer le produit scalaire de ce vecteur avec un autre. FSSP a plusieurs options: pour de nombreux clients, pour de nombreuses entrées, décentralisé, avec des fonctions de masquage, etc.
  • Chiffrement basé sur les attributs (SHO), où les données chiffrées sont associées à un ensemble d'attributs et de clés secrètes ainsi qu'à certaines règles qui contrôlent quel texte chiffré peut être chiffré, selon les attributs que nous avons.
  • FS "usage général", qui permet de calculer la fonction f de toute nature à partir des données chiffrées Enc (x).

Cependant, il est important de noter ici que bien que beaucoup de travail ait déjà été fait en se concentrant sur les aspects théoriques des SF afin de développer autant que possible ce domaine, tous les FS à usage général sont trop inefficaces pour une utilisation pratique aujourd'hui. Il s'agit d'un des thèmes de recherche du projet FENTEC ( Functional Encryption Technologies European research program): amener les FS à une applicabilité pratique en concevant et en mettant en œuvre des schémas pratiques pouvant être utilisés à l'échelle industrielle. Dans ce projet, non seulement de nouveaux schémas avec des fonctionnalités plus riches sont développés, mais aussi des coprocesseurs spéciaux qui peuvent accélérer encore plus les calculs requis - tout pour rapprocher la théorie de la pratique. Plus d'informations sur cet équipement peuvent être trouvées dans le blog du projet FENTEC.

Vous souhaitez utiliser FS aujourd'hui? Veuillez utiliser


Mais que faire si vous souhaitez utiliser FS aujourd'hui? Cela ne devrait poser aucun problème! Dans le cadre du projet FENTEC, une équipe de XLAB est impliquée dans la mise en œuvre de nombreux programmes développés par les universités partenaires sous la forme de CiFEr C-library et GoFE Go-library.

Vous pouvez en savoir plus sur les bibliothèques sur le blog FENTEC plus en détail , ou aller directement à Github et commencer à jouer avec les bibliothèques CiFEr et GoFE . Soit dit en passant, nous avons vérifié qu'ils fonctionnent même dans le navigateur via WASM!

Il existe même quelques exemples dans le référentiel Github du projet:


Tous les détails terribles: ce qu'il y a dans le système FS


Parmi les schémas déjà mis en œuvre, vous pouvez trouver de nombreux schémas appelés «chiffrement fonctionnel avec un produit scalaire». Mais que signifie ce nom? Il faut le prendre à la lettre: ces schémas permettent à des tiers de calculer le résultat du produit scalaire de deux vecteurs en utilisant FS.

Supposons que vous vouliez chiffrer un vecteur a et obtenir le résultat de son produit scalaire avec le vecteur y. Pour commencer, nous avons besoin d'une autorité centrale pour mettre en œuvre FS.

Dans ce cas, l'autorité centrale émet une «clé principale publique» mpk, ainsi qu'une clé de règlement z y pour un vecteur y donné. Ensuite, toute personne connaissant la clé publique peut chiffrer le vecteur a, permettant à tout tiers possédant la clé z y de calculer <a, y>, ayant E mpk (a) et ne sachant rien du vecteur a lui-même.

Notez que dans ce schéma FS, le vecteur y correspondant à la clé de calcul z y doit être connu d'un tiers pour calculer le produit scalaire. Autrement dit, seul le vecteur a reste un secret.

Et si vous voulez que les deux vecteurs, a et y restent secrets, mais en même temps pour que des tiers puissent calculer leur produit scalaire?

Heureusement, ce domaine de recherche a également fait des percées majeures ces dernières années. Il est connu sous le nom de «FS avec fonctions de masquage». En fait, le schéma de chiffrement du produit scalaire «cache les fonctions» si les clés et le texte chiffré ne fournissent pas d'informations supplémentaires sur les vecteurs a et y, à l'exception de leur produit scalaire <a, y>. Dans les nouveaux schémas avec FS, les fonctions de masquage sont de plus en plus courantes ( 1 , 2 , 3 ).

Pour résumer


Bien que le cryptage fonctionnel soit apparu récemment, nous pouvons déjà imaginer de nombreuses options pour son utilisation à l'avenir. La possibilité de transférer le processus de prise de décision, basé sur le chiffrement de données de bout en bout, des systèmes dorsaux vers certains systèmes de passerelle dans des réseaux complexes est particulièrement intéressante. Nous appelons cela la «prise de décision locale», et une telle opportunité est un grand pas vers la création de réseaux sécurisés pour «l'Internet des objets» et d'autres réseaux hautement décentralisés qui souhaitent mettre en œuvre un cryptage de bout en bout sans perdre trop de capacité de prise de décision au niveau de la passerelle.

Nous travaillons maintenant sur un prototype de produit qui, en utilisant FS avec un produit scalaire, est capable de détecter les mouvements dans le flux vidéo allant de la caméra au système backend, au niveau de la passerelle, en utilisant ce que l'on appelle «Vecteurs de mouvement» inclus dans la norme AVC H.264 / MPEG-4.


Visualisation des vecteurs de mouvement dans le cadre lors du codage du dessin animé court ouvert H.264 Big Buck Bunny

Veuillez noter à quel point les bons vecteurs de mouvement sont des candidats pour une utilisation dans les schémas avec FS avec un produit scalaire - car un produit scalaire est défini sur les espaces vectoriels! Nous recherchons toujours les meilleures options pour les méthodes de détection de mouvement et espérons obtenir un prototype pleinement fonctionnel utilisant FS pour la reconnaissance de mouvement d'ici la fin de 2020.

Source: https://habr.com/ru/post/fr482790/


All Articles