Les algorithmes pour les nuls…
Un algorithme est une suite finie et non ambiguë d’opérations ou d’instructions permettant de résoudre un problème ou d’obtenir un résultat donné * . Des algorithmes sont aujourd’hui utilisés dans le fonctionnement des ordinateurs, dans la cryptographie, dans le routage d’informations, dans la planification et l’utilisation optimale des ressources, dans le traitement de texte, etc. La série de télévision américaine « NUMB3RS » avait vulgarisé entre 2005 et 2010 la présence des algorithmes dans notre quotidien, le héros s’en servant pour résoudre avec le FBI des enquêtes criminelles**.
Il existe plusieurs types d’algorithmes :
– des algorithmes permettent de calculer des empreintes, c’est-à-dire des éléments résumés représentatifs d’un contenu (fonction unidirectionnelle) : on y trouve les SHA (Secure Hash Algorithm) et les MD (Message Digest). Les plus récents sont les plus résistants au piratage (SHA-2 et MD-6), les plus anciens ayant été cassés suite à des attaques, et ils vont très vite en termes de calculs. Par exemple, le MD4 est utilisé pour chiffrer les mots de passe en NTLM par Microsoft.
– des calculs de MAC (Message Authentification Code)*** permettent d’apporter une garantie d’origine et d’intégrité à un message ou un contenu : seul l’émetteur du message peut avoir produit ce code donc, en plus de la garantie d’origine, le MAC garantit son intégrité grâce à une clé. Les calculs de MAC sont généralement mis en œuvre par des algorithmes de calcul d’empreintes, de type SHA (SHA-2 ou SHA-3) ou MD. Ces algorithmes sont, par exemple, utilisés dans des communications sécurisées, avec un VPN (virtual Private Network) de type IPsec (Internet Protocol Security). Le calcul de MAC reste rapide, contrairement à un calcul de signature via RSA (algorithme asymétrique).
– algorithmes symétriques de chiffrement, tels AES, RC, DES, etc. Ils sont typiquement utilisés pour des calculs de chiffrement dans un but de confidentialité. Il faut déjà avoir partagé une clé entre deux individus ou deux machines, ou utiliser un protocole de négociation de clé (tel que du Diffie et Hellman -DH- en mode connecté).
– algorithmes asymétriques : c’est typiquement le RSA (du nom des cryptographes Rivest, Shamir et Adleman) qui permet de faire de la confidentialité en chiffrant avec une clé dite « publique », le récepteur utilisant quant à lui une clé dite « privée » pour déchiffrer l’information, et de faire de l’authenticité en signant avec la clé privée, le récepteur utilisant la clé publique pour vérifier la signature. L’avantage des algorithmes asymétriques est de pouvoir largement diffuser la clé publique tout en conservant la clé privée par son propriétaire. Malgré une certaine lourdeur, ces algorithmes présentent des avantages en permettant d’échanger des données ou de signer des documents entre des individus non connectés ; le placement d’une signature, par exemple, permet de faire plus tard une vérification « off line ».
Faire de la cryptographie n’est, au final, que la mise en œuvre de ces types d’algorithmes. Encore est-il préférable d’être certifié, par un CESTI par exemple, afin d’apporter l’assurance de leur mise en œuvre…
*Wikipedia
**https://fr.wikipedia.org/wiki/Numbers_%28s%C3%A9rie_t%C3%A9l%C3%A9vis%C3%A9e%29
http://mathworld.wolfram.com/topics/NUMB3RS.html
***https://en.wikipedia.org/wiki/Message_authentication_code