Aller au contenu

IND-CCA2 : Indistinguishability under adaptive Chosen-Ciphertext Attack

Cryptographie

IND-CCA2 : Indistinguishability under adaptive Chosen-Ciphertext Attack, indistinguabilité sous attaque à chiffrés choisis adaptative. « Le chiffrement qui ne livre rien, même à qui peut tout lui faire déchiffrer sauf la seule chose qui l'intéresse », par analogie avec un serrurier qui ouvre complaisamment toutes les boîtes qu'un inconnu lui apporte, toutes sauf une, sans que cette obligeance aide l'inconnu à deviner le contenu de la dernière.

Le jeu : L'adversaire dispose d'un oracle de déchiffrement. Il propose deux messages de même longueur, reçoit le chiffré de l'un d'eux tiré au hasard, et peut continuer à faire déchiffrer tout chiffré autre que celui-là, en adaptant ses questions aux réponses. Le schéma est IND-CCA2 si l'adversaire ne devine pas lequel des deux messages a été chiffré nettement mieux qu'à pile ou face.

Généalogie : La variante non adaptative, CCA1, dite attaque de l'heure du déjeuner, n'autorise les questions qu'avant le défi (Naor et Yung, 1990). La version adaptative est due à Rackoff et Simon (1991). IND-CCA2 implique IND-CPA ; l'inverse est faux.

Pourquoi c'est concret : L'attaque de Bleichenbacher (1998) contre le remplissage PKCS#1 v1.5 de RSA est une attaque à chiffrés choisis : un serveur qui indique seulement si le remplissage est correct suffit à déchiffrer un message. RSA-OAEP, le chiffrement de Cramer et Shoup (1998) ou ML-KEM, obtenu par une transformation de Fujisaki-Okamoto, visent cette notion.

En symétrique : Un AEAD sûr apporte IND-CCA2 : toute modification du chiffré fait échouer le déchiffrement, ce qui rend l'oracle inutile. Le mode CBC seul, IND-CPA avec un vecteur d'initialisation aléatoire, ne l'est pas, comme l'ont rappelé les oracles de remplissage.

Ce qui arrive si on s'en passe

Un schéma seulement IND-CPA placé derrière un serveur qui répond différemment selon que le déchiffrement réussit ou échoue offre à l'attaquant exactement l'oracle que la notion interdit. Les oracles de remplissage sur CBC ou sur PKCS#1 v1.5 ont ainsi permis de déchiffrer des cookies, des sessions TLS et des jetons sans jamais toucher à la clé, en posant des questions et en écoutant les messages d'erreur. Exiger IND-CCA2, en pratique un AEAD ou un KEM conçu pour, ferme ce canal.

Explication de la marmotte

Pour dire qu'un chiffrement est solide, les cryptographes imaginent un jeu contre un attaquant très avantagé : il peut faire déchiffrer presque tous les messages qu'il veut. On lui donne ensuite un message chiffré et il doit deviner lequel de deux textes s'y cache. Si, malgré toute cette aide, il ne fait pas mieux qu'à pile ou face, le chiffrement est dit IND-CCA2. C'est le niveau attendu des chiffrements modernes.

Où ce terme est utilisé

← Tout le glossaire