Le respect de la confidentialité des données n’est pas un souci qui se limite aux agents secrets. Que vous interrogiez votre banque ou remplissiez votre déclaration d’impôts par internet vous voulez vous aussi être sûr que ces informations ne tomberont pas entre de mauvaises mains. La cryptologie moderne nous montre la solution.
Pour coder un message il faut deux ingrédients : une méthode de codage et une clé. La méthode indique comment transformer les mots. Traditionellement cela peut être de changer l’ordre des lettres, par exemple écrire « otm » au lieu de « mot ». On peut aussi changer les lettres par exemple remplacer les « o » par « z », les « t » par « u » et les « m » par « w », ansi « mot » devient « wzu ». Si on mélange les deux techniques, « mot » devient « zuw ». La méthode de cryptage doit aussi indiquer comment, étant donné un mot de passe (la clé), on code le message. Dans nos exemples la clé indique par quelle lettre remplacer une lettre du message ou bien donne le nouvel ordre dans lequel ranger les lettres. Ce même mot de passe sert inversement au décodage en permettant de faire les opérations inverses.
Les techniques de codages modernes sont mathématiques. La première étape consisteà transformer le texte en un grand chiffre (le « a » devient 1, le « b » devient 2 etc…) puis à lui appliquer des transformations arithmétiques complexes. Mais l’idée de base reste la même : un algorithme de codage et une clé qui paramètre le codage.
Cependant une difficulté demeure et semble incontournable : pour pouvoir communiquer deux personnes doivent se mettre d’accord d’une part sur la méthode employée mais aussi sur la clé utilisée pour le codage. La sécurité des codes secrets modernes repose sur la connaissance de la clé : même si un ennemi connaît précisément la technique de codage mais qu’il n’a pas la clé, il ne doit pas pouvoir décoder le message. Il n’y a donc que sur la clé que les deux personnes doivent s’accorder. La difficulté est la suivante : pour qu’il y ait accord sur la clé il faut que les deux parties puissent communiquer entre elles, que l’une dise à l’autre « la clé est … ». Or la clé doit rester secrète ! Donc pour utiliser un code secret il faut pouvoir communiquer une clé de manière sure… Mais si on peut le faire pour la clé pourquoi ne pas envoyer le message par cette méthode sure ? On est confronté à un problème du type du serpent qui se mord la queue : pour utiliser un code secret (C) il faut un autre code secret (C’) pour envoyer la clé de (C) ; mais il faut faire la même chose pour (C’) etc…
Pour sortir de ce cercle vicieux les mathématiciens ont inventé la cryptographie à clé publique. L’idée est que certaines fonctions mathématiques sont très facile à calculer dans un sens et très dure dans un autre. On parle de fonctions à sens unique. Un exemple de la vie de tous les jours d’une fonction à sens unique est donnée par l’annuaire. Chercher le numéro de téléphone d’un particulier est très facile : l’annuaire est rangé par ordre alphabétique. Maintenant étant donné un numéro de téléphone, trouver la personne qui lui correspond est un problème quasi impossible à résoudre si on ne dispose que d’un annuaire papier (ce qui explique le succès des annuaires inversés payants). Pourtant vous avez tous les paramètres en mains : l’annuaire, le numéro de téléphone et la technique (regarder tous les numéros jusqu’à trouver le bon) ! Vous savez tout mais vous êtes incapable de donner la solution en temps raisonnable.
Le système RSA (initiales du nom de ses inventeurs Rivest, Shamir et Adleman) se base sur le fait que la multiplication est aisée alors que la décomposition en facteurs premiers est dure. Ainsi calculer que 37×13 font 481 est facile. Mais étant donné un chiffre, par exemple 319, trouver qu’il est formé par 29×11 est difficile. On ne sait pas faire beaucoup mieux que d’essayer tous les nombres un par un pour voir s’ils sont facteurs premiers d’un nombre donné. La clé publique du système RSA, n , est le produit de deux nombres premiers, p et q. La clé privée est elle calculée facilement à partir de p et q. Le codage repose sur le petit théorème de Fermat-Euler. La longueur de la clé publique est ce qui permet de mesurer la solidité du codage. Actuellement une clé de 128 bits est considérée comme donnant un niveau de sécurité standard.
Ainsi quand vous souhaitez communiquer de manière sécurisée avec votre banque par internet votre ordinateur personnel génère deux nombres premiers, les multiplie entre eux pour former une clé publique. Cette clé publique est envoyée à votre banque qui s’en servira pour coder la clé qui vous permettra ensuite d’échanger des messages en utilisant un codage « standard ». La magie du système réside en ce que n’importe qui peut coder des messages en utilisant la clé publique mais que personne sauf celui qui possède la clé privée n’est en mesure de les décoder ! Cela changera peut être avec l’avènement des ordinateurs quantiques dont il est prouvé qu’ils peuvent réaliser la factorisation de manière très efficace. Mais il n’y a pas d’inquiétudes à avoir : la mécanique quantique offre de nouvelles possibilités de cryptage encore plus efficaces.