Protéger ses données est la préoccupation de chacun, et on peut utiliser la méthode que l’on veut, depuis le cadenas sur le carnet intime jusqu’au coffre-fort. Quand les données sont numériques, il faut trouver l’équivalent de ce cadenas ou ce coffre fort. Et cet équivalent, c’est le chiffrement.
Dans ce cas on ne met pas notre message dans une boîte, mais on fait en sorte, grâce à un programme, de transformer notre message en quelque chose d’illisible... Mais pas non plus en n’importe quoi. Car il faut bien que le destinataire de notre message, ou la personne qui va lire ces données un jour (qui peut d’ailleurs être simplement nous-même ) soit capable, à l’aide d’une “clé”, de récupérer le message de départ (oui parce que si personne ne peut lire le message c’est tout de suite moins intéressant).
Il ne faut bien sûr pas croire que l’on a attendu d’avoir des ordinateurs pour ça. On retrouve des traces de techniques pour chiffrer des documents datant du XVIème siècle… avant J.C. En fait dès que les gens ont su écrire/dessiner des messages et ont eu envie de les rendre secrets, ils ont cherché et trouvé des solutions pour le faire, inventant sans le savoir la cryptographie… pendant que d’autres gens ont inventé la cryptanalyse : l’art de déchiffrer des messages sans avoir la clé !
Et les méthodes ont été très variées, depuis le message tatoué sur la tête de l’émissaire, caché par la repousse des cheveux, jusqu’aux bandelettes à enrouler sur un bâton (la scytale) pour lire un message, en passant par le fait de supprimer les voyelles des mots.
Mais avant de continuer, essayez donc de comprendre ce que dit ce message :
BREVU VUYS EVIZ DICHOFFRI LI MISSEGI !
Avez-vous retrouvé le message d’origine ? Et avez-vous compris quelle méthode de chiffrement a été utilisée ? Bravo, vous venez de passer votre premier test de cryptanalyse avec succès…
Rendons à César ce qui lui appartient
Oui bon je l’avoue, le code ci-dessus n’était pas des plus compliqués : les consonnes sont conservées, et les voyelles transformées en la suivante dans l’ordre alphabétique. Mais on peut trouver dans cette méthode les deux ingrédients du chiffrement :
l’algorithme de chiffrement : ici décaler les voyelles et conserver les consonnes
la clé : ici de combien de place on décale les voyelles.
Parmi les méthodes de chiffrement simples, il en existe une relativement connue : le chiffrement par substitution. L’un des premiers, et certainement le plus célèbre utilisateur de ce système, était Jules César, d’où le nom de “chiffre (ou code) de César”. Comme vous allez le voir dans la vidéo suivante, il est assez simple à mettre en oeuvre… mais également à attaquer par cryptanalyse. Il aurait cependant continué à être utilisé par certaines armées jusqu’au 19ème siècle !
Mais trêve de suspense, découvrez-donc comment il fonctionne.
Qui a réussi à casser le code d’Enigma ?
On a vu que pour casser les systèmes de chiffrement par substitution il ne fallait pas forcément ni beaucoup d’efforts, ni beaucoup de temps. Dans les années 20 a été commercialisée une machine portable de chiffrement appelée Enigma. Elle allait être, au gré de modifications et d’améliorations, l’outil majeur de chiffrement de l’armée nazie pendant la seconde guerre mondiale, et l’objet d’étude de nombreux cryptanalystes alliés, en Pologne, en France puis en Angleterre.
Vous allez à présent découvrir comment elle fonctionnait, et comment Alan Turing (avec qui vous aviez déjà fait connaissance dans le premier module Class’Code) et ses collègues ont réussi à partiellement la percer à jour.
Choisissez de bons mots de passe
C’est la même idée pour les mots de passe. Il est très facile de trouver sur le Net des listes des mots de passe les plus utilisés. En tête : 123456 et ses variantes à plus ou moins de chiffres, qwerty (ou azerty pour les gens ayant un clavier francophone), mais aussi password, iloveyou ou des déclinaisons du début de l’alphabet.
Mais quel est le problème si mon mot de passe est utilisé par plein d’autres gens ?
En soi rien, c’est un mot de passe comme un autre. Mais c’est juste qu’un hacker qui essaie de pirater des comptes va essayer d’être le plus rapide possible. Et quoi de plus rapide que de tenter en premier les mots de passe les plus habituels (comme ceux ci-dessus), des prénoms, des dates de naissance, ou des mots du dictionnaire ? Justement, cela s’appelle d’ailleurs une attaque par dictionnaire. Et rien qu’en testant cela, il va déjà récupérer plein de comptes sans trop d’efforts. Il aurait donc tort de s’en priver.
Comment je choisis mon mot de passe alors ? Tirer des caractères au hasard c’est très bien... mais je ne m’en souviendrai jamais.
Il existe des conseils, comme par exemple ceux de Mozilla que je vous traduis ci-dessous :
Choisissez une phrase que vous pouvez retenir facilement, par exemple
Je choisis un mot de passe
Transformez en chiffres les mots qui s’y prêtent
Je choisis 1 mot 2 passe
Ne gardez que l’initiale des autres mots
Jc1m2p
Rajoutez des caractères spéciaux
(Jc1m2p#
Choisissez une règle pour personnaliser votre mot de passe pour chaque site. Par exemple ajouter au début de votre mot de passe la deuxième lettre du nom du site en minuscule, et la troisième en majuscule. Pour Class’code et Pixees cela donne respectivement lA(Jc1m2p# et iX(Jc1m2p#
C’est déjà beaucoup moins évident à deviner comme mot de passe. Et pourtant, vous devez juste retenir trois choses : votre phrase, les caractères spéciaux ajoutés, et la règle de personnalisation. Et voilà, non seulement votre mot de passe a plus de chances de résister à une attaque, mais en plus si on trouve un de vos mots de passe sur un site donné, il ne peut pas servir directement à pirater votre compte sur un autre site (ce que les hackers tentent en général, raison pour laquelle il est indispensable de choisir des mots de passe uniques pour chaque site !).
Et si je choisis mon mot de passe comme ça alors cette fois c’est sûr, je ne serai pas attaqué ?
Non, ce n’est pas sûr. C’est comme pour un vélo : mettre un super gros antivol n’empêche pas un voleur très motivé de le casser. Mais comme ça lui prend plus de temps, il risque de se faire surprendre et a toutes les chances de choisir de voler un autre vélo, sans protection ou avec un antivol plus fragile. Pour les données c’est pareil. Si le hacker vous vise particulièrement, il risque de finir par trouver un moyen de vous nuire. Par contre s’il recherche, et c’est souvent le cas, un certain nombre de comptes, peu importe l’identité des utilisateurs, vous avez toutes les chances de passer au travers.
L’attaque par force brute sur un mot de passe, ça prend combien de temps ?
Tout dépend de la longueur du mot de passe justement, et des caractères utilisés. Si on n’utilise que des lettres minuscules pour en faire un mot de passe de 6 lettres, il y a 308 millions de possibilités (26 lettres, le tout à la puissance 6).
Avec un gros ordinateur, mettons 16 processeurs en parallèle, chacun testant un million de mots de passe par seconde, ça prend une vingtaine de secondes. Si, toujours sur 6 caractères, on prend des lettres minuscules et majuscules on en a 19 milliards, ce qui prendrait alors 20 minutes. Si en plus on ajoute des chiffres, des caractères spéciaux et qu’on passe à des mots de passe de longueur 10 et pas 6, ça devient quasi impossible (plus de 300 ans avec les mêmes hypothèses et seulement 80 caractères).
Et quand on sait les dégâts que peut faire un piratage, ça vaut sans doute le coup de réfléchir 5 min à son mot de passe. Non ?
Le chiffrement aujourd’hui, ça ressemble à quoi ?
Oui bon Enigma on a vu que c’était un peu dépassé. Et avec les capacités de calcul actuelles ça ne tiendrait pas longtemps. L’un des problèmes d’Enigma était que la connaissance de la machine (en d’autres mots de l’algorithme de chiffrement) aidait beaucoup pour déchiffrer les messages, même sans clé. Pour éviter que ce problème ne se reproduise, les méthodes de chiffrement actuelles doivent être assez perfectionnées pour que l’algorithme de chiffrement puisse être connu, public, sans pour autant permettre de déchiffrer les messages. En d’autres mots le secret repose donc sur la clé uniquement. Il faut que sans clé ce soit vraiment très très difficile (voire impossible) de déchiffrer le message, mais qu’avec la clé ce soit quasi instantané.
Une méthode très utilisée actuellement est le chiffrement à clé publique, comme dans le système RSA, utilisé pour le commerce en ligne par exemple.
Le principe ? On a un système qui permet de fabriquer des paires de clés particulières, et un algorithme fait en sorte que si on chiffre un message avec une des deux clés, on peut le déchiffrer avec l’autre clé (mais pas avec la première). Du coup on donne à qui la veut l’une des deux clé qu’on appelle “clé publique”, et on garde bien précieusement la deuxième, appelée “clé privée”. Ensuite si quelqu’un veut vous envoyer un message secret, il le chiffre avec votre clé publique et vous êtes le seul, grâce à votre clé privée, à pouvoir le déchiffrer. En comparaison, c’est un peu comme si tout le monde pouvait acheter un cadenas avec votre nom dessus, mais que seul vous aviez la clef pour l’ouvrir.
Et ce système, lui au moins il est sûr ?
La sécurité de ce système de chiffrement tient au fait qu’il est difficile de factoriser les grands entiers, c’est à dire pour un entier n trouver deux autres entiers p et q tels que n = p*q. Et plus l’entier n est grand, plus c’est difficile, d’où le fait encore une fois d’avoir des clés assez grandes. Car pendant ce temps là les cryptanalystes cherchent et trouvent des méthodes pour accélérer la factorisation…
Dans le domaine de la sécurité informatique il faut donc être prêt à se renouveler sans cesse pour permettre de garder toujours un peu d’avance sur les capacités de calculs des machines et l’inventivité de ceux qui voudraient casser le code. Pour cela il faut inventer de nouveaux algorithmes ou autoriser des clés plus grandes, tout en gardant une bonne efficacité. Parce que non, une clef de 2000 chiffres, ce n’est pas possible : certes cela complique la tâche du cryptanalyste et rallonge le temps qu’il faudra pour casser le code, mais cela rallonge également trop le temps de chiffrement et déchiffrement du message avec la clé. Pas très pratique donc !!
En résumé
La cryptographie est l’étude des techniques permettant d’assurer la sécurité de données en les chiffrant (c’est à dire en transformant les données dites “en clair” en données incompréhensibles si on ne possède pas la clé de déchiffrement).
Un système de chiffrement se compose d’un algorithme (qui peut être connu de tous s’il respecte le principe de Kerckhoffs) et d’une clé (que l’on va tout faire pour garder secrète).
La cryptanalyse est le fait de tenter de déchiffrer des message “chiffrés” sans avoir la clé.
Il existe tout plein de systèmes de chiffrement mais tous ne se valent pas en termes de sécurité !
Le chiffrement par substitution, qui consiste à remplacer chaque lettre de l’alphabet par une autre, est simple à mettre en oeuvre mais également facile à attaquer.
La machine de chiffrement Enigma, utilisée lors de la deuxième guerre mondiale, a été la cible de nombreux travaux de cryptanalyse pour déchiffrer à temps les messages.
De nombreux contenus et communications sont aujourd’hui chiffrés sur Internet (pour éviter que l’on intercepte votre code de carte bleue au moment d’une transaction bancaire en ligne par exemple) mais cela nécessite que vous protégiez vos comptes avec des mots de passe sûrs (difficiles à deviner). Et cela tombe bien car il y a des règles simples pour choisir un mot de passe plus sûr.
La méthode de chiffrement RSA est une méthode utilisée actuellement qui repose sur deux clés, l’une publique (que l’on peut donner à tous) et l’autre privée (que l’on garde secrètement).