Verifiable Identity-based Encryption

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Cet article présente des problèmes à corriger.

Vous pouvez aider à l'améliorer ou bien discuter des problèmes sur sa page de discussion.

  • Il ne cite pas suffisamment ses sources. Vous pouvez indiquer les passages à sourcer avec {{référence nécessaire}} ou {{Référence souhaitée}}, et inclure les références utiles en les liant aux notes de bas de page. (Marqué depuis novembre 2020)
  • Il ne s’appuie pas, ou pas assez, sur des sources secondaires ou tertiaires. (Marqué depuis novembre 2020)
Trouver des sources sur « Verifiable Identity-based Encryption » :
  • Archive Wikiwix
  • Bing
  • Cairn
  • DuckDuckGo
  • E. Universalis
  • Gallica
  • Google
  • G. Books
  • G. News
  • G. Scholar
  • Persée
  • Qwant
  • (zh) Baidu
  • (ru) Yandex
  • (wd) trouver des œuvres sur Wikidata

Verifiable Identity-based Encryption (VIBE) est un chiffrement basé sur l'identité développé et breveté (aux États Unis, en Europe et en Chine) par la société VIBE Cybersecurity International LLC. Ce chiffrement est une version améliorée[En quoi ?] de celui de Boneh et Franklin[1], qui utilise une application bilinéaire nommée optimal ATE pairing[2] agissant sur des courbes elliptiques. Ce type d'application a été analysé par l'organisme de standardisation américain NIST[3].

L'algorithme de VIBE (décrit dans le brevet[4]) permet de vérifier rapidement la cohérence entre les paramètres publics et une clé secrète, augmentant la confiance entre les utilisateurs et les administrateurs du système[pas clair]. De plus, VIBE permet une authentification de l'envoyeur du message pour un coût de communication négligeable[réf. nécessaire].

VIBE en particulier a été analysé[5] par le maitre de conférences de l'Université de Limoges Olivier Blazy. Ce dernier y rédige sa propre preuve de sécurité, il explique aussi que le schéma VIBE possède des avantages indéniables : il est prouvé sûr, les chiffrés sont courts, le nombre de calculs lourds est réduit et la propriété intrinsèque de vérifiabilité augmente la confiance envers tous les acteurs du système[source secondaire nécessaire].

Description du protocole

Setup

L'administrateur des clés du système (appelé Trusted Centre TC d'identité Id T C {\displaystyle {\textsf {Id}}_{TC}} ), choisi une application bilinéaire et trois groupes sur une courbe elliptique compatible avec cette application (respectivement e , G 1 , G 2 , G T {\displaystyle e,{\mathcal {G}}_{1},{\mathcal {G}}_{2},{\mathcal {G}}_{T}} ). Il choisit ensuite aléatoirement un entier s Z p {\displaystyle s\in {\mathcal {Z}}_{p}^{*}} et fixe sa clé maître secrète: msk = s {\displaystyle {\textsf {msk}}=s} ( p {\displaystyle p} étant le cardinal du plus petit groupe choisi sur la courbe: G 1 {\displaystyle {\mathcal {G}}_{1}} ).

4 fonctions de hachage sont choisies en vérifiant les conditions suivantes :

  • H 1 {\displaystyle {\mathcal {H}}_{1}} (respectivement H 2 {\displaystyle {\mathcal {H}}_{2}} ) prend en entrée une chaîne binaire de taille arbitraire et retourne un élément du groupe G 1 {\displaystyle {\mathcal {G}}_{1}} (respectivement G 2 {\displaystyle {\mathcal {G}}_{2}} ).
  • H 3 {\displaystyle {\mathcal {H}}_{3}} prend en entrée une chaîne binaire de taille arbitraire et retourne un élément de Z p {\displaystyle {\mathcal {Z}}_{p}^{*}} .
  • H {\displaystyle {\mathcal {H}}'} prend en entrée un élément de G T {\displaystyle {\mathcal {G}}_{T}} et retourne une chaîne binaire (cette dernière fonction de hachage peut être implémentée par SHA3 par exemple).

L'élément publique P u b {\displaystyle Pub} est calculée comme suit :

  • P u b = s H 1 ( id T C ) {\displaystyle Pub=s\cdot {\mathcal {H}}_{1}({\textsf {id}}_{TC})}

Les paramètres publics sont ensuite publiés : mpk = ( G 1 , G 2 , G T , H 1 , H 2 , H 3 , H , e , P u b ) {\displaystyle {\textsf {mpk}}=({\mathcal {G}}_{1},{\mathcal {G}}_{2},{\mathcal {G}}_{T},{\mathcal {H}}_{1},{\mathcal {H}}_{2},{\mathcal {H}}_{3},{\mathcal {H}}',e,Pub)}

Extraction

La clé publique d'un utilisateur est son identité id {\displaystyle {\textsf {id}}} , sa clé privée est calculée comme suit :

usk [ id ] = ( usk [ id ] 1 , usk [ id ] 2 ) = ( s 1 H 1 ( id ) , s 1 H 2 ( id ) ) {\displaystyle {\textsf {usk}}[{\textsf {id}}]=({\textsf {usk}}[{\textsf {id}}]_{1},{\textsf {usk}}[{\textsf {id}}]_{2})=(s^{-1}\cdot {\mathcal {H}}_{1}({\textsf {id}}),s^{-1}\cdot {\mathcal {H}}_{2}({\textsf {id}}))}

Vérification des Paramètres Publics

La vérification rapide de la cohérence entre les paramètres publics et une clé secrète se fait en vérifiant l'égalité suivante :

e ( P u b , u s k [ i d ] 2 ) == e ( H 1 ( i d T C ) , H 2 ( i d ) ) {\displaystyle e(Pub,{\mathsf {usk}}[{\mathsf {id}}]_{2})==e({\mathcal {H}}_{1}({\mathsf {id}}_{TC}),{\mathcal {H}}_{2}({\mathsf {id}}))}

Chiffrement

Le message M {\displaystyle M} pour le receveur d'identité i d R {\displaystyle {\mathsf {id}}_{R}} est chiffré en C = ( U , V , Y ) {\displaystyle {\mathsf {C}}=(U,V,Y)} par l'envoyeur d'identité i d S {\displaystyle {\mathsf {id}}_{S}} en calculant les valeurs suivantes :

r H 3 ( M ) {\displaystyle r\leftarrow {\mathcal {H}}_{3}(M)}

U = M H ( e ( H 1 ( i d T C ) , H 2 ( i d R ) ) r ) {\displaystyle U=M\oplus {\mathcal {H}}'(e({\mathcal {H}}_{1}({\mathsf {id}}_{TC}),{\mathcal {H}}_{2}({\mathsf {id}}_{R}))^{r})}

V = r P u b {\displaystyle V=r\cdot Pub}

Y = H ( e ( H 1 ( i d R ) , u s k [ i d S ] 2 ) r ) {\displaystyle Y={\mathcal {H}}'(e({\mathcal {H}}_{1}({\mathsf {id}}_{R}),{\mathsf {usk}}[{\mathsf {id}}_{S}]_{2})^{r})}

Y {\displaystyle Y} est la valeur qui sert au receveur à authentifier l'envoyeur du message.

Déchiffrement

Le message chiffré C = ( U , V , Y ) {\displaystyle {\mathsf {C}}=(U,V,Y)} est déchiffré en un message clair M {\displaystyle M} par le receveur en calculant :

M = U H ( e ( V , u s k [ i d R ] 2 ) ) {\displaystyle M=U\oplus {\mathcal {H}}'(e(V,{\mathsf {usk}}[{\mathsf {id}}_{R}]_{2}))}

r H 3 ( M ) {\displaystyle r\leftarrow {\mathcal {H}}_{3}(M)}

L'authentification se fait en vérifiant l'égalité suivante : Y == H ( e ( u s k [ i d R ] 1 , H 2 ( i d S ) ) r ) {\displaystyle Y=={\mathcal {H}}'(e({\mathsf {usk}}[{\mathsf {id}}_{R}]_{1},{\mathcal {H}}_{2}({\mathsf {id}}_{S}))^{r})}

Sécurité

La sécurité du chiffrement basé sur l'identité VIBE repose sur une hypothèse classique[En quoi ?] de sécurité cryptographique proche du Problème Calculatoire de Diffie-Hellman[réf. nécessaire]. Ce problème[En quoi ?] se situe dans un contexte asymétrique, ce qui améliore la rapidité des algorithmes et la taille des objets mathématiques à manipuler[pas clair].

Notes et références

  1. Dan Boneh and Matthew K. Franklin, Identity-Based Encryption from the Weil Pairing Advances in Cryptology - Proceedings of CRYPTO 2001 (2001)
  2. Frederik Vercauteren, Optimal Pairings, IEEE Transactions and Information Theory, 2009
  3. https://nvlpubs.nist.gov/nistpubs/jres/120/jres.120.002.pdf
  4. VIBE Patent
  5. Analyse de VIBE par Olivier Blazy

Liens externes

  • icône décorative Portail de la cryptologie