Mécanisme d'encapsulation de clé
# Mécanisme d'encapsulation de clé

En cryptologie, un mécanisme d'encapsulation de clé ou KEM (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é. 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). 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^,^,,$ ce qui permet entre autres de commencer à transmettre les données chiffrées directement avec la clé encapsulée.

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

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^,^,.$ En combinant chiffrement et authentification, il est possible de construire des encapsulations plus $compactes^,^,^,.$

## Définition

Un mécanisme d'encapsulation de clé (KEM) est un triplet d'algorithmes $(G,E,D)$ de syntaxe suivante :

* 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^{\lambda }$ et retourne un couple de clés $({\mathsf {pk}},{\mathsf {sk}})$;
* L'algorithme d'« encapsulation » $E$ prend en entrée le paramètre de sécurité et ${\mathsf {pk}}$ et renvoie un couple d'éléments $c,k\in {\mathcal {C}}\times {\mathcal {K}}$;
* L'algorithme de « décapsulation » $D$ prend en entrée le paramètre de sécurité, ${\mathsf {sk}}$ et un élément $c\in {\mathcal {C}}$, et renvoie un élément $k\in {\mathcal {K}}\sqcup \{\bot \}$.

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 $({\mathsf {pk}},{\mathsf {sk}})$ de $G$, et toutes les sorties possibles $(c,k)$ de $E({\mathsf {pk}})$, on a $D({\mathsf {sk}},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({\mathsf {pk}})$ d'un élément tiré uniformément au hasard de ${\mathcal {K}}$ est négligeable.
