Je tente de lister ici ce qui - à mon humble avis - représente les plus belles inventions ou réalisations en informatique. Avec leurs applications. J'ai essayé dans cette page d'être accessible: Les spécialistes me pardonneront donc les approximations effectuées au nom de la compréhension.
On ne dit pas "Crypter un fichier avec un mot de passe" car c'est incorrect: On dit chiffrer un fichier avec une clé.
Instinctivement, on se doute bien qu'on prend la même clé pour chiffrer et déchiffrer le fichier.
Mais il existe des algorithmes pour lesquels la clé de déchiffrement est différente de la clé de chiffrement, et on ne peut pas déduire une clé de l'autre. Cela paraît presque magique, mais c'est possible. Typiquement, l'algorithme RSA (basé sur les nombres premiers) permet cela.
Imaginez: Je peux distribuer ma clé de chiffrement à tout le monde. Elle est publique. Tout le monde est ainsi capable de chiffrer les messages qui me sont destinés. Mais moi seul peut les déchiffrer avec ma clé de déchiffrement (qui est privée). (Pour un exemple concret, voir cette page).
L'algorithme RSA (ainsi que bien d'autres tel que Diffie-Hellman) sont à la base de toute la sécurité informatique moderne. Typiquement, votre navigateur l'utilise quand vous avez une adresse en https://...
À quoi ça sert ?
Sans les algorithmes de chiffrement asymétriques, nous ne pourrions pas échanger de manière sûr des données avec des personnes que nous n'avons jamais rencontrées. Il nous faudrait trouver préalablement un canal d'échange sûr pour échanger les clés de chiffrement, ou même devoir rencontrer en personne vos interlocuteurs avant tout échange, ce qui rendrait les choses bien plus compliquées.
Le hashage est une fonction qui prend des données de n'importe quelle taille en entrée, et qui donne en sortie une courte suite de chiffres appelée empreinte (ou hash), de taille fixe. Elle a une particularité intéressante:
Les mêmes données en entrée donneront toujours le même hash en sortie. Un hash est donc comme une empreinte digitale des données.
Il existe différentes fonctions de hashage (md5, sha1, sha256…). Faisons un essai avec md5. Vous pouvez par exemple tester sur ce site: http://www.md5.cz/
données en entrée | hash (md5) |
---|---|
bonjour | f02368945726d5fc2a14eb576f7276c0 |
Bonjour | ebc58ab2cb4848d04ec23d83f7ddf985 |
Les hommes naissent et demeurent libres et égaux en droits. Les distinctions sociales ne peuvent être fondées que sur l'utilité commune. | a38d001561c8dc8c7304a6de7dc085f6 |
Les hommes naissent et demeurent libres et egaux en droits. Les distinctions sociales ne peuvent être fondées que sur l'utilité commune. | 7c42315c80eaa481e7d5db348bb2fdce |
Comme vous pouvez le voir:
Et plus particulièrement, les fonctions de hashage ont les propriétés suivantes:
(Ces deux dernière affirmations sont généralement vraies, si on excepte les quelques faiblesses découvertes dans certaines fonctions de hashage).
Il existe différentes fonctions de hashage, ayant une sortie plus ou moins longue. md5 et sha1 sont très courantes, mais tout le monde passe de plus en plus à d'autres fonctions comme sha256. Exemples:
Données en entrée | Bonjour |
md5 | ebc58ab2cb4848d04ec23d83f7ddf985 |
sha1 | f30ecbf5b1cb85c631fdec0b39678550973cfcbc |
sha256 | 9172e8eec99f144f72eca9a568759580edadb2cfd154857f07e657569493bc44 |
sha512 | c447dff0d671f62ad580b255b64f7a8f6a30d1b828569cee08b7c861239f8d4856ef38a1166718b045a9713876336c1f623619f6a78fc891d48d0b98c703def3 |
Tiger | ebbd658136f1711d56d80b6aa8e2b55244518c4d5ca42894 |
À quoi ça sert ?
Ça sert, par exemple
90f700358946c85c6dd5244c34c5304810bd9d28
. Vous retrouvez ce hash dans les liens Magnet: magnet:?xt=urn:btih:90f700358946c85c6dd5244c34c5304810bd9d28&dn=linuxmint-19.3-mate-64bit.iso
Voici ce que je considère comme étant les plus belles inventions en informatique. Notez que je ne prétends absolument pas être exhaustif.