La distribution quantique des clés (QKD)

En juin 2017, le gouvernement chinois a réussi à envoyer des clés de chiffrements entre une base terrestre et un satellite sur 1200 km tout en garantissant son inviolabilité. Cet exploit, même s’il est remarquable, n’a pas grand chose à avoir avec l’informatique quantique (et ses difficultés) expliqué dans ce blog. Voyons pourquoi.

(c) Science & avenir

Qu’est ce que la Quantum Key Distribution ?
L’échange de clé cyrptographique est une étape essentielle dans les communications cryptées. Dans le cas des symétriques, la question de savoir comment Alice et Bob s’échangent leur clé (pour ensuite déchiffrer les communications) est une vraie question.
En 1984, Charles Bennett et Gilles Brassard ont formalisé le premier protocole de cryptographie quantique, le BB84 du nom des 2 concepteurs et de l’année (Voir l’article wikipedia sur le protocole BB84)
Le principe est assez simple à comprendre et est très bien détaillé en vidéo sur le blog Science étonnante, [23].
Il repose sur le principe de la polarisation de la lumière. Un photon peut être émis avec une polarisation suivant un axe déterminé. Sa « lecture » se fera via un filtre correspondant au même angle.

polarisation de la lumiere

(c) physinfo.org

Le concept réside dans le choix partagé entre Alice et Bob de deux bases inclinées de 45° entre elles (arbitraires, parmi tous les angles possibes) et que nous noterons + et x (le + et le x illustre bien cet angle de 45°)
Voyons comment Alice et Bob vont créer une clé de chiffrement et la partager

  1. Pour chaque photon émis, Alice tire au hasard une base (x ou +) et la valeur d’un bit (0 ou 1)
  2. Pour chaque photon reçu, Bob tire au hasard une base (x ou +).
    a) dans 50% des cas, Bob tire la même base qu’Alice, et recevra donc la bonne valeur du bit
    b) dans 50% des cas, Bob choisit l’autre base et aura 50% de chances de trouver un 0 ou un 1 (car les 2 bases sont perpendiculaires, cf la projection d’un axe à 45° sur les axes 0° et 90°)
  3. Les opérations 1 et 2 sont répétées suffisamment de fois. Au final, on aura un résultat du type :
  4. Alice et Bob s’échangent ensuite (publiquement)  la liste des bases utilisées. Aucune information ne peut en être déduite.
  5. Alice et Bob ne conservent alors que les bits dont les 2 bases sont identiques : cela constitue leur clé de chiffrement commune (ici : 0001101)

Comment ne pas être espionné ?

Si Eve écoute la communication, elle va utiliser le même protocole que Bob.

  1. Pour chaque bit écouté, elle tire au sort une base.
  2. Si cette base est la bonne, alors elle peut lire le bit sans être détectée (50% des cas)
  3. Si ce n’est pas la bonne base, alors elle a 50% de mesurer (projeter) le bon bit
    a) si elle a le bon bit, Bob qui vient après elle, l’aura aussi et ne détectera pas l’écoute (25% des cas)
    b) si elle ne projette pas le bon bit, Bob qui vient après elle, ne l’aura pas non plus, pourtant sa base sera bonne. Quand il comparera ses bases avec Alice, il s’apercevra de cette anomalie : même base mais bits différents. Ils seront alors qu’ils ont été espionnés (en rouge sur le tableau)  (25% des cas)

Au final, les bits écoutés seront détectés dans 25% des cas. Mais cela est suffisant.

Et l’attaque Man in the Middle ?
Le principe de cette attaque est d’intercaler une personne dans une communication et de lui faire jouer un rôle de proxy ou de relais. Alice croit envoyer à Bob. Eve intercepte le message, le décode et le reenvoie à Bob qui pense qu’il vient d’Alice.
Cette attaque classique n’est pas possible en quantique car un qubit ne peut pas être cloné (voir Les bases #2) : Sans cela Eve aurait très bien créer une dérivation en clonant le qubit reçu et en l’analysant.
L’autre option pour Eve serait, une fois le bit lu, de le réémettre un nouveau photon avec une machine : mais là encore, ne connaissant pas la base, on retomberait sur le même problème que le cas d’écoute et elle se ferait démasquer.

Programmons tout cela en Scratch !

Pour vous prouver que tout cela est très simple, voici un petit programme Scratch, téléchargeable ici.
Alice et Bob vont échanger 6 bits et essayer de créer une clé crypto.
A1..A6 représente les 6 bits d’Alice avec leur base, idem pour B1..B6.

Dans ce premier exemple, Eve n’espionne pas. En comparant les bases, on supprime (d=discard) les bases différentes et on récupère la clé avec les bits restants (110).

 


Dans ce second exemple, Eve espionne. Les bits (s) sont écoutés sans que l’on s’en aperçoive. Les bits marqués s trahissent Eve, Les bits marqués (s) sont ceux espionnés avec succès. La clé 000 n’est plus de confiance.

Voici un exemple du code (bit B1 de bob)

Page mise à jour le 12/07/2019