La cryptographie quantique
QDS Quantum Digital Signatures est la version quantique de la signature digitale.
Évidemment, une fois que nos clés sont finalisées, éventuellement avec de la QKD, on peut se demander ce que vient faire le quantique dans cette histoire, pas besoin de trucs en plus.
Dans le cas classique, on utilise des fonctions à sens unique (les fonctions de hashing). Dans le monde quantique, on a cette notion de "diode" assez naturellement : l'effondrement de la fonction d'onde effectue ce genre de choses, et il ne faut pas se gourer de base orthonormée pour obtenir un résultat non aléatoire dans le cas des qubits intriqués, par exemple.
Du coup, c'était tentant de trouver un équivalent quantique aux histoires de signatures.
Pour rappel, avec la signature digitale, on veut :
- Authentifier un message (=être certain de l'identité de l'expéditeur)
- S'assurer de son intégrité (=le message n'a pas été altéré)
- Et que l'auteur ne puisse pas répudier son message (=c'est forcément l'expéditeur qui l'a écrit)
Tout ça se fait généralement en 3 étapes :
- Génération d'une paire de clés, publique et privée
- Usage de la clé privée pour signer un message, avec un algorithme ad-hoc. Cette signature est jointe au message (message qui n'a pas besoin d'être chiffré)
- Le récipiendaire, avec la clé publique et un algorithme ad-doc, vérifie que le message correspond bien à la signature jointe.
Gottesman-Chuang scheme
La première proposition de protocole quantique est la suivante (Gottesman-Chuang scheme). L'article original ne contient aucun schéma et est assez aride à lire.
Alice envoie un message à Bob constitué d'une série de bit. Alice va signer chaque bit individuellement. Il va donc falloir se peler la procédure pour chaque bit du message, mais du coup, inutile d'utiliser une fonction de hashing.

Pour un seul bit b :
- Alice génère deux séries de nombres qui vont constituer la clé privée, soit M paires de clés privées :
- Une série de M fois k0 : k01 k02 k03
- Une série de M fois k1 : k11 k12 k13
- Une fonction f permet de transformer un bit en une fonction d'onde
- Alice convertit ses paires de clés privées en fonction d'onde.
- Si b=0, elle envoie la moitié "0" de sa clé privée, et toutes les fonctions d'ondes.
La clé privée peut être 4 états possibles, qui correspondront plus tard à un photon HV ou diagonal.

Pour valider tout ça :
- Bob recalcule toutes les fonctions d'ondes à partir de la demi-clé privée
- Bob réalise ensuite un test de swap pour chaque fonction d'onde, afin de voir s'il obtient la même chose. Ce test présente une certaine probabilité de réussite.
- Le seuil r est évidemment un paramètre de sécurité important, et il vaut mieux avoir M grand.
Le test de swap permet de comparer deux fonctions d'onde pour savoir si ce sont les mêmes. Cela peut être fait en utilisant une fonction d'onde auxiliaire symétrique, suivie d'une porte de Fredkin puis d'Hadamard des trucs courants quand on discute ordinateur quantique.

Toute cette histoire est un peu plus compliquée qu'il n'y parait, et pour avoir bien mal à la tête, on se reportera au papier original.
Sans mémoire quantique
Une méthode sans utilisation de mémoire quantique a été proposée ah ben ça tombe bien, vu qu'on ne sait pas faire de mémoire quantique pour l'instant, qui utilise un troisième larron (pour pouvoir lire les états non orthogonaux, puisqu'une lecture effondre la fonction d'onde et que si ce n'était pas la bonne base, il faut recommencer. La mémoire est remplacée par une copie (intriquée).

In a quantum digital signature protocol, the sender Alice generates a private key Pk and a corresponding public key |Qk〉, which is a sequence of coherent states (laser pulses) drawn from a set of four nonorthogonal states: |a〉,|b〉,|c〉,|d〉. Bob and Charlie each receive a copy of |Qk〉 that they send into a shared symmetrization station, which checks that the copies are identical (and therefore can't be repudiated). At the same time, the recipients take a symmetrized version of |Qk〉 and each perform unambiguous state elimination measurements that test whether a state in the sequence is not |a〉, not |b〉, etc. They obtain partial information about the key (identified positions are denoted by a, b, c, d, unidentified cases by ?). After this initial distribution stage, Alice sends a message to Bob signed with the private key, e.g., (0; P0). Bob compares the signature to the partial information he obtained from his elimination measurements. If the match is good enough, he accepts the signature and forwards (0; P0) to Charlie who does the same comparison.
Mise en œuvre (et c'est simplifié):

C'est bien le genre de remarque finale qui vous achève, non ? Mortel.
Je ne vous en veux pas si vous avez lâché l'affaire ici, car c'est vraiment pointu. D'ailleurs, moi-même, je ne suis pas certain d'avoir bien compris. Mais il y a pire. Juste après.