La cryptologie — la science du secret — s’est longtemps confondue avec les seuls usages militaires et diplomatiques, là où la confidentialité d’un ordre ou d’une dépêche pouvait sceller le sort d’une bataille. Ce n’est qu’avec l’essor de la société de l’information qu’elle a quitté ce périmètre restreint pour devenir une discipline scientifique à part entière, centrale dès lors qu’il s’agit de garantir la tenue de nos échanges. Il me semble utile, avant d’entrer dans les mécanismes, de fixer le vocabulaire et les intentions qui les gouvernent : c’est l’objet de cette note.

Le principe de Kerckhoffs

Tout l’édifice moderne repose sur une intuition que l’on doit à Auguste Kerckhoffs, et qu’il vaut mieux énoncer dans sa langue :

A cryptosystem should be secure even if everything about the system, except the secret key, is public knowledge.

Autrement dit, la sécurité d’un système ne doit reposer que sur sa clé, jamais sur le secret de sa conception. Ce principe n’est en réalité que le quatrième d’une série de six desiderata de la cryptographie militaire que Kerckhoffs formulait dès 1883 ; je les rappelle car ils demeurent, un siècle et demi plus tard, d’une remarquable actualité1 :

  • le système doit être matériellement, sinon mathématiquement, indéchiffrable ;
  • il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvénient tomber entre les mains de l’ennemi ;
  • la clef doit pouvoir en être communiquée et retenue sans le secours de notes écrites, et être changée ou modifiée au gré des correspondants ;
  • il faut qu’il soit applicable à la correspondance télégraphique ;
  • il faut qu’il soit portatif, et que son maniement ou son fonctionnement n’exige pas le concours de plusieurs personnes ;
  • enfin, il est nécessaire que le système soit d’un usage facile, ne demandant ni tension d’esprit, ni la connaissance d’une longue série de règles à observer.

L’exigence est claire : la robustesse d’un cryptosystème se mesure à ce qu’il résiste à un adversaire qui en connaîtrait tout, hormis la clé. C’est le contraire exact de la sécurité par l’obscurité.

De quoi se compose la cryptologie

La cryptologie traite de la conception, de la sécurité et de l’emploi des mécanismes cryptographiques. Ces mécanismes se déclinent en trois strates :

  • les primitives — fonctions de hachage, chiffrements par bloc, etc. — qui sont les briques élémentaires ;
  • les modes opératoires, qui indiquent comment appliquer une primitive à des données de taille arbitraire ;
  • les protocoles, qui orchestrent le tout au service d’un échange concret.

Selon que l’on se place du côté de celui qui protège ou de celui qui attaque, on parle respectivement de cryptographie et de cryptanalyse.

Cryptographie

La cryptographie étudie la conception de mécanismes assurant des propriétés de sécurité variées — confidentialité, intégrité, authenticité de l’information.

Cryptanalyse

La cryptanalyse étudie ces mêmes primitives en tentant d’en éprouver la robustesse, voire de les mettre en défaut.

Les deux ne s’opposent qu’en apparence : elles fonctionnent en dualité indissociable, chacune se nourrissant des avancées de l’autre. On ne conçoit bien qu’en sachant attaquer.

On distingue par ailleurs deux grandes familles, selon la nature de la clé :

  • la cryptographie à clé secrète, dite classique ou symétrique ;
  • la cryptographie à clé publique, dite asymétrique.

Cette partition procède de l’article fondateur de Diffie et Hellman, qui, en introduisant la seconde, ont levé le prérequis d’un partage de secret préalable entre l’émetteur et le destinataire — geste dont on mesurera plus loin la portée.

Ce que l’on attend d’un système : les services de sécurité

Le secret de l’information ne se réduit pas à la seule confidentialité ; il recouvre en réalité un faisceau d’objectifs distincts :

  • Confidentialité : les données ne sont accessibles qu’aux personnes concernées. Assurée par le chiffrement, mais aussi par des mesures organisationnelles non cryptographiques.
  • Intégrité : l’information ne peut être altérée que par ceux qui y sont autorisés — garantie par les signatures numériques ou les codes d’authentification de message.
  • Authentification de données : les données proviennent bien d’un interlocuteur donné (ce qui présuppose leur intégrité).
  • Authentification d’entités : l’interlocuteur est bien celui qu’il prétend être.
  • Non-répudiation : nul ne peut nier avoir émis, reçu ou transmis un message.

À chacun de ces services répond une catégorie de primitives ; la correspondance est éclairante, et je la reproduis ici2 :

Cette typologie s’inscrit elle-même dans une taxonomie plus large des primitives cryptographiques, distinguant celles qui n’emploient aucune clé, celles à clé symétrique et celles à clé publique3 :

Modéliser l’adversaire

Raisonner sur la sécurité impose de fixer d’abord ce que l’attaquant peut. On gradue classiquement son pouvoir selon l’information dont il dispose :

  • Ciphertext-Only : il ne connaît que le chiffré ;
  • Known-Plaintext : il possède des couples clair / chiffré ;
  • Chosen-Plaintext : il dispose d’une machine à chiffrer et choisit les clairs ;
  • Chosen-Ciphertext : il peut de surcroît faire déchiffrer des chiffrés de son choix.

On distingue également le degré de visibilité qu’il a sur l’exécution du calcul :

  • boîte noire : les calculs sont hors de sa portée ;
  • boîte blanche : il observe chaque étape de l’exécution ;
  • boîte grise : il glane des informations contextuelles — ouvrant la voie aux attaques par canaux auxiliaires.

Les canaux auxiliaires

Initiées par Paul Kocher dans les années 1990, ces attaques ne s’en prennent pas à l’algorithme mais à sa mise en œuvre physique, en mesurant ce qui fuit de son exécution : le temps de calcul (timing attack), la consommation électrique (power attack), le rayonnement électromagnétique, voire l’acoustique du composant. La parade la plus élémentaire contre une attaque temporelle consiste à décorréler le temps de calcul du secret, par exemple en injectant un délai aléatoire ou en rendant l’implémentation constant-time.

Le modèle de Dolev-Yao

Pour raisonner sur les protocoles, on adopte souvent le modèle d’adversaire de Dolev-Yao, généreux quant à ses capacités mais borné quant à ce qui relève de la cryptographie elle-même. On y suppose que l’attaquant :

  • observe l’intégralité des messages circulant sur le réseau ;
  • peut initier une conversation avec n’importe quel membre ;
  • peut se faire passer pour n’importe qui auprès de n’importe qui ;

mais qu’il ne peut ni deviner un entier tiré au hasard, ni retrouver une clé privée à partir de la clé publique correspondante. Le message, dans ce cadre, est traité comme un objet symbolique : la primitive est réputée parfaite, et l’on ne s’intéresse qu’à la logique du protocole.

Ce que peut calculer un attaquant

Reste enfin à mesurer l’effort qu’exigerait une attaque. On en rend compte par le bit de sécurité : un système offre bits de sécurité s’il faut de l’ordre de opérations pour le mettre en défaut. C’est cette grandeur qui, in fine, permet de comparer des mécanismes hétérogènes et de décider ce qui, aujourd’hui, demeure hors de portée d’un adversaire réaliste.

Footnotes

  1. A. Kerckhoffs, « La cryptographie militaire », Journal des sciences militaires, vol. IX, 1883.

  2. Correspondance services de sécurité / primitives, d’après le Guide des mécanismes cryptographiques de l’ANSSI.

  3. Taxonomie des primitives, d’après A. Menezes, P. van Oorschot, S. Vanstone, Handbook of Applied Cryptography, chap. 1.