Mécanisme d'encapsulation de clé

De testwiki
Version datée du 17 juillet 2022 à 00:59 par imported>Qwyvin (Ajout d'espace entre des équations et du texte)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

En cryptologie, un mécanisme d'encapsulation de clé ou KEM[Note 1] (aussi parfois appelé transport de clé) est un protocole permettant de transmettre de manière sûre une clé de session à un interlocuteur au moyen d'un canal non sécurisé[1]. L'encapsulation de clé est l'une des composantes d'un schéma de cryptographie hybride, l'autre étant l'encapsulation de données (au moyen de la clé ainsi transmise)[2]. L'encapsulation sert la même fonction qu'un protocole d'échange de clé, à la différence que la clé est ici entièrement générée par l'une des parties[Note 2]Modèle:,[3]Modèle:,[4], ce qui permet entre autres de commencer à transmettre les données chiffrées directement avec la clé encapsulée[2].

Le mécanisme a été proposé par le cryptologue Victor Shoup autour de 2001, et considéré pour standardisation ISO[5]. Parmi les mécanismes d'encapsulation standardisés (ISO/IEC 18033-2[6]), on compte RSA-OAEP[7] et RSA-KEM[8].

En règle générale, le mécanisme d'encapsulation de clé consiste à chiffrer, au moyen d'une clé publique, un message aléatoire. Le message chiffré est transmis et le destinataire le déchiffre au moyen de la clé privée correspondante. Émetteur et destinataire possèdent alors un même secret partagé, d'où ils peuvent dériver une même clé de session. Ainsi, tout chiffrement à clé publique donne immédiatement un mécanisme d'encapsulation de clé. En pratique, il est également nécessaire de protéger la clé encapsulée contre des manipulations, par exemple en adjoignant un code d'authentification[9]Modèle:,[10]Modèle:,[Note 3]. En combinant chiffrement et authentification, il est possible de construire des encapsulations plus compactes [11]Modèle:,[12]Modèle:,[13]Modèle:,[14].

Définition

Un mécanisme d'encapsulation de clé (KEM) est un triplet d'algorithmes[Note 4] (G,E,D) de syntaxe suivante[15] :

  • L'algorithme de « génération de clés » G prend en entrée un paramètre de sécurité en représentation unaire 1λ et retourne un couple de clés (𝗉𝗄,𝗌𝗄);
  • L'algorithme d'« encapsulation » E prend en entrée le paramètre de sécurité et 𝗉𝗄 et renvoie un couple d'éléments c,k𝒞×𝒦;
  • L'algorithme de « décapsulation » D prend en entrée le paramètre de sécurité, 𝗌𝗄 et un élément c𝒞, et renvoie un élément k𝒦{}.

On demande qu'un KEM satisfasse les propriétés suivantes :

  • Le mécanisme est correct, c'est-à-dire que pour toutes les sorties possibles (𝗉𝗄,𝗌𝗄) de G, et toutes les sorties possibles (c,k) de E(𝗉𝗄), on a D(𝗌𝗄,c)=k.
  • La sécurité sémantique (IND-CPA) est satisfaite, c'est-à-dire que l'avantage d'un adversaire dans le jeu consistant à distinguer un élément k obtenu en sortie de E(𝗉𝗄) d'un élément tiré uniformément au hasard de 𝒦 est négligeable.

Notes et références

Notes

  1. Pour l'anglais key encapsulation mechanism.
  2. En particulier, la confidentialité du canal n'est garantie qu'à condition que l'entité ayant généré la clé soit de confiance. Ce problème ne disparaît pas nécessairement avec un protocole d'échange de clé. Voir notamment (Desmedt 1988) et (Yung 2001).
  3. Cela n'est pas nécessaire si le chiffrement est déjà résistant aux attaques à chiffrés choisis (IND-CCA), voir (Hanaoka et coll. 2012).
  4. C'est-à-dire des machines de Turing probabilistes.

Références

Modèle:Portail