Imagine un type en sweat à capuche, assis devant un ordinateur à plusieurs écrans. On y voit plein de lettres vertes sur fond noir et peut-être quelques barres de progression qui affichent un pourcentage. C’est le hacker typique des films, un génie de l’informatique. Peu importe que sa cible soit un espion ennemi ou le gouvernement ; avec son expérience et la bonne suite de touches, il finira tôt ou tard par accéder à l’ordinateur de son adversaire et par le compromettre. Mais à quel point est-ce vrai ? Existera-t-il vraiment toujours un point où quelqu’un pourra pirater quelque chose ?
Si on imagine une porte en bois dans une maison, on sait qu’elle empêche la plupart des gens d’entrer ; pourtant, quelqu’un pourrait crocheter la serrure ou, peut-être, quelqu’un de plus désespéré pourrait prendre une hache ou un bélier et entrer de force. Remplace-la par une porte en métal et tu arriveras peut-être à la forcer avec un chalumeau, une meuleuse ou un explosif. Chaque fois que tu renforces la sécurité de la porte, on pourrait trouver une méthode d’attaque plus puissante pour en venir à bout. Est-ce que ça se passe vraiment comme ça en cybersécurité ? Les algorithmes auront beau progresser, y aura-t-il toujours un moyen de les vaincre ?
Dans le monde numérique, on ne peut pas fabriquer des bits plus durs ni des programmes qu’il faudrait frapper plus fort au clavier pour les casser ; ce qu’on a pour se protéger, ce sont les mathématiques, des problèmes si difficiles que même les ordinateurs les plus puissants d’aujourd’hui ne pourraient pas les résoudre.
Au fil de l’histoire, les algorithmes ont changé. Les premiers ordinateurs étaient si lents qu’ils ne pouvaient pas suivre un usage légitime sans un algorithme léger, et avec le temps, ces algorithmes ont fini par être cassés. Certains simplement parce que les ordinateurs sont devenus assez puissants pour les casser rapidement ; d’autres parce qu’on y a trouvé des failles, des raccourcis mathématiques qui permettaient de court-circuiter l’algorithme.
Pourtant, aujourd’hui, on a des algorithmes qu’à notre connaissance ni les ordinateurs actuels ni ceux du futur ne pourraient casser, y compris les ordinateurs quantiques. On en est arrivé à un point où les mathématiques sont si solides que l’attaquant n’a plus intérêt à chercher comment casser les algorithmes, mais comment les contourner. On a des algorithmes pratiquement impossibles à casser, à tel point que la plus grande faille, c’est l’erreur humaine, comme laisser la porte non verrouillée, voire laisser un trou là où il devrait y avoir une porte.
Quand j’étais au lycée, à l’âge d’or des cyber[1], beaucoup de gens se faisaient pirater leur compte. Ils pensaient souvent que c’était une faiblesse inhérente à internet : avec assez de connaissances et de moyens, on devait pouvoir voler n’importe quel compte.
Moi, je savais qu’il y avait trois explications possibles :
-
Ils avaient coché « mémoriser mon mot de passe » sur l’ordinateur du cyber. Quelqu’un avait utilisé cet ordinateur après eux et s’était connecté sans difficulté.
-
Leur mot de passe était tellement simple qu’un proche l’avait deviné : leur date de naissance ou le nom de leur chien.
-
Il y avait un keylogger sur cet ordinateur. Un logiciel qui enregistrait toutes les touches pressées. Ça arrivait plus souvent qu’on ne l’imagine.
Des trois, la première était la plus probable. Mais, au bout du compte, dans les trois cas, le point faible était l’utilisateur ou l’ordinateur qu’il avait utilisé. Le serveur n’avait rien remarqué. Et sur un service bien conçu, même si quelqu’un avait réussi à entrer dans le serveur, le mot de passe n’aurait même pas dû s’y trouver.
Des algorithmes à sens unique
Quand tu crées un compte sur un site bien conçu, le site ne conserve pas ton mot de passe. Il conserve un nombre calculé à partir de celui-ci avec une fonction de hachage.
Inventons-en une toute simple. On attribue à chaque lettre sa place dans l’alphabet : a = 1, b = 2, c = 3, jusqu’à z = 26. Le hash d’un mot, c’est la somme de ses lettres. Gardons les mots espagnols de l’article original pour que les calculs restent les mêmes :
hola → 8 + 15 + 12 + 1 = 36
Change une lettre : hora donne 42. Un nombre différent, sans rapport évident avec le précédent. Pourtant, il y en a bien un.
Maintenant, le point important. Si je te dis « le nombre est 36 », peux-tu retrouver le mot ? Mathématiquement, non. La somme fait perdre de l’information : tu ne sais plus quelles lettres étaient présentes, ni dans quel ordre.
Ces algorithmes à sens unique s’appellent des « fonctions de hachage ». C’est avec eux que les serveurs stockent les mots de passe, ou du moins qu’ils devraient le faire. Si quelqu’un vole la base de données, il verra 36, mais il ne connaîtra pas ton mot de passe. Il devra donc essayer des mots jusqu’à en trouver un qui donne 36.
Le problème, c’est qu’avec notre fonction simplifiée, c’est très facile. Essaie des mots courants comme « hola » et « vida » : ils donnent tous les deux 36. L’un comme l’autre permettrait d’entrer dans ton compte. Quand deux entrées différentes donnent le même résultat, on appelle ça une collision. Et avec cet algorithme, il y en a plein : amor, roma, ramo, mora et pez donnent tous 47. Si ton mot de passe est amor, quelqu’un pourrait se connecter avec pez, puisque les deux donnent le même résultat.
Pour éviter ça, on utilise des algorithmes comme SHA-256, qui suivent la même idée, mais de façon beaucoup plus complexe. Au lieu d’une addition, ils mélangent les bits de l’entrée en 64 tours d’opérations. Le résultat est un nombre de 256 bits. Voici le hash de hola :
b221d9dbb083a7f33428d7c2a3c3198ae925614d70210e28716ccaa7cd4ddb79
Et celui de Hola, avec une majuscule au début :
e633f4fc79badea1dc5db970cf397c8248bac47cc3acf9915ba60b5d76b0e88f
Tu changes une lettre et tu obtiens un résultat complètement différent, sans motif visible. Avec SHA-256, les collisions existent en théorie : il y a une infinité de mots possibles, mais un nombre fini de résultats. Pourtant, personne n’en a trouvé. Il n’existe pas non plus de méthode connue pour partir d’un hash et fabriquer un mot qui le produise. Aujourd’hui, pour les mots de passe, on utilise toutefois des algorithmes encore plus complexes, comme Argon2 et bcrypt. Ils sont plus lents à calculer, volontairement, et ajoutent des éléments aléatoires pour rendre les tentatives par force brute plus difficiles.
Alors, comment le site sait-il que tu as saisi le bon mot de passe s’il ne l’a pas en mémoire ? Il calcule le hash de ce que tu as tapé et le compare à celui qu’il a conservé. S’ils correspondent, c’est toi.
Le site lui-même ne conserve pas ton mot de passe. Si un employé ouvre la base de données, il voit des nombres. Si quelqu’un la vole, pareil. Si le directeur de l’entreprise, ou un gouvernement muni d’une ordonnance, exige ton mot de passe, l’entreprise ne peut pas le leur donner. Ce n’est pas qu’ils refusent : il n’existe nulle part, seul le résultat du hachage existe. Un service bien conçu ne te dit jamais quel était ton mot de passe. Si tu l’oublies, il t’oblige à en créer un nouveau, parce que même lui ne connaît pas l’ancien.
Malheureusement, tous les services ne font pas ça. Une fois, j’ai suivi la procédure de récupération de mot de passe chez Telcel, un opérateur mobile mexicain. Ils m’ont envoyé mon mot de passe tel quel, en clair. Le plus inquiétant ? C’était il y a seulement quelques années.
Cela dit, essayer différentes combinaisons jusqu’à trouver la bonne reste une méthode qui fonctionne. Si ton mot de passe est trop simple, un attaquant peut le deviner très vite. C’est pour ça que sa longueur compte beaucoup. On en parlera dans un autre article.
Accès et chiffrement
Le fait que personne ne puisse récupérer ton mot de passe est une protection importante. Mais un mot de passe n’est qu’une vérification, et une erreur dans le code pourrait permettre de la contourner. C’est là qu’intervient le chiffrement.
Chiffrer, c’est transformer un message en quelque chose d’illisible qu’on ne peut déchiffrer qu’avec une clé. Contrairement au hachage, on peut ici revenir au message original, mais seulement si on possède la clé.
Prenons un autre algorithme simple, aussi vieux que Jules César. La clé est un nombre. Chiffrer consiste à décaler chaque lettre de ce nombre de places dans l’alphabet. Avec la clé 3, hola devient krod : le h devient k, le o devient r, le l devient o et le a devient d. Pour revenir en arrière, on décale les lettres de ces mêmes trois places dans l’autre sens. Sans la clé, krod ne veut pas dire grand-chose.

Est-ce sûr ? Pas du tout. Il n’y a que 25 clés possibles. Quelqu’un qui voit krod sans connaître la clé les essaie toutes. Une seule donne quelque chose de lisible : avec 1, on obtient jqnc ; avec 2, ipmb ; avec 3, hola. Tôt ou tard, il trouvera la clé par essais successifs.
Alors, compliquons les choses. Au lieu d’utiliser un seul nombre pour tout le mot, utilisons-en un différent pour chaque lettre : par exemple 7, 2, 19 et 11. Cette fois, hola devient oqel. L’attaquant ne doit plus essayer 25 clés, mais 26^4, soit près de 457 000 combinaisons. C’est beaucoup plus sûr que le précédent. Pourtant, on peut encore repérer un motif reconnaissable et en déduire plus facilement la clé. Un ordinateur met très peu de temps à résoudre ça.
Ce que font les chiffrements sûrs, c’est augmenter la complexité de l’algorithme jusqu’au point où deviner la clé par essais successifs devient extrêmement difficile. AES ne décale pas des lettres. Il travaille sur des blocs de 128 bits et les mélange en 14 tours d’opérations, avec une clé de 256 bits. C’est tellement complexe qu’on ne voit aucun motif facile à exploiter. Il ne reste qu’à essayer les clés une par une. C’est ce qui protège tes messages, tes photos dans le cloud et ta connexion à ta banque. Voilà pourquoi, même si quelqu’un réussit à entrer dans un compte par la mauvaise porte, il ne trouvera que du bruit si les données sont bien chiffrées et qu’il n’a pas la clé.
Combien de clés y a-t-il ? Dans notre premier petit exemple, il y en avait 25. Dans le deuxième, 26^4. Avec AES-256, une clé peut prendre 2^256 valeurs différentes. Écrit en entier, c’est un nombre de 78 chiffres.
Imagine un ordinateur capable d’essayer un milliard de milliards de clés par seconde : un 1 suivi de 18 zéros. C’est déjà plus que ce que pourrait faire n’importe quel superordinateur actuel. Les essayer toutes lui prendrait environ 3,7 × 10^51 ans. L’univers a quelque 13,8 milliards d’années. Il faudrait donc attendre plus de 10^41 fois son âge entier.
Avec la technologie actuelle, personne ne peut casser le chiffrement AES-256, même avec tous les ordinateurs de la planète. Si tu vois dans un film un hacker casser le chiffrement avancé d’un espion ennemi en tapant pendant quelques minutes, tu sais maintenant que c’est aussi crédible que d’ouvrir un cadenas en pointant une baguette dessus et en prononçant « Alohomora ».
Mais rien n’est garanti pour toujours. Avec les ordinateurs quantiques, certains problèmes très précis pourraient être résolus beaucoup plus vite. Et pour certains algorithmes actuels, leur complexité mathématique devient triviale.
D’après ce qui est connu publiquement, il n’existe pas encore d’ordinateurs quantiques assez grands. Mais une réponse est déjà prête pour le jour où ce sera le cas. En 2024, le NIST a publié les premiers standards de cryptographie conçue pour résister aux ordinateurs quantiques. Certains navigateurs et certaines applications de messagerie les utilisent déjà. Il reste à les déployer partout, mais on n’attend pas les bras croisés. Comment fonctionne un ordinateur quantique et comment s’en protéger ? On verra ça dans un autre article.
Dans le prochain article, on parlera de quelque chose qui est vraiment entre tes mains : tes mots de passe. Et de la raison pour laquelle une longue phrase te protège mieux qu’un mot de passe compliqué comme P@ssw0rd!.
Références
- NIST. FIPS 180-4: Secure Hash Standard (SHS). https://csrc.nist.gov/pubs/fips/180-4/upd1/final
- NIST. FIPS 197: Advanced Encryption Standard (AES). https://csrc.nist.gov/pubs/fips/197/final
- Biryukov, Dinu, Khovratovich et Josefsson. RFC 9106: Argon2 Memory-Hard Function for Password Hashing and Proof-of-Work Applications (2021). https://www.rfc-editor.org/info/rfc9106
- Provos et Mazières. « A Future-Adaptable Password Scheme » (bcrypt). USENIX Annual Technical Conference, 1999. https://www.usenix.org/conference/1999-usenix-annual-technical-conference/future-adaptable-password-scheme
- Planck Collaboration. « Planck 2018 results. VI. Cosmological parameters ». Astronomy & Astrophysics 641, A6 (2020). https://arxiv.org/abs/1807.06209
- Shor, P. W. « Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer ». SIAM Journal on Computing 26(5), 1997. https://arxiv.org/abs/quant-ph/9508027
- NIST. « NIST Releases First 3 Finalized Post-Quantum Encryption Standards » (13 août 2024). https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards
- Chromium Blog. « Advancing Our Amazing Bet on Asymmetric Cryptography » (Chrome 124). https://blog.google/chromium/advancing-our-amazing-bet-on-asymmetric/
- Apple Security Research. « iMessage with PQ3: The new state of the art in quantum-secure messaging at scale » (2024). https://security.apple.com/blog/imessage-pq3/
- Kret et Schmidt. « The PQXDH Key Agreement Protocol », Signal (rév. 3, 2023). https://signal.org/docs/specifications/pqxdh/
Au Mexique, « el cyber » est un local où l’on loue des ordinateurs connectés à internet à l’heure. Parfois, c’était un cybercafé. Mais souvent, c’était simplement la papeterie du coin, avec quelques ordinateurs au fond. ↩︎

