Avec la numérisation permanente de notre société, la gestion des mots de passe et des certificats est devenue un point essentiel de notre sécurité.
Cet article est le deuxième d’une série de billets sur le sujet :
- Robustesse d’un mot de passe ;
- Le chiffrement, symétrie et asymétrie ;
- La gestion des mots de passe.
Je vous recommande la lecture de l’article précédent avant de commencer celui-là. Je pars du principe que les concepts y étant énoncés sont acquis pour cette partie.
Je recommande également la lecture de mon article sur les systèmes de numération en informatique. Nous ferons peu de conversions ici mais vous allez voir du binaire et de l’hexadécimal. Savoir ce que c’est ne sera pas superflu.
# Définition
Le chiffrement est un procédé de cryptographie grâce auquel on souhaite rendre la compréhension d’un document impossible à toute personne qui n’a pas la clé de (dé)chiffrement.
Contrairement aux mots de passe, nous avons peu conscience du chiffrement sur Internet. Malgré cela, vous l’utilisez tous les jours, des dizaines de fois, sans le savoir.
Comme d’habitude, je pars du principe qu’il est important de comprendre comment les choses fonctionnent, surtout celles que nous utilisons tous les jours.
# Petite précision de vocabulaire
# Cryptographie
La cryptographie est la discipline dont le but est de protéger la transmission de messages, en rendant impossible de comprendre et de modifier leur contenu tout en garantissant leur authenticité.
# Chiffrer
Comme nous le verrons plus loin dans cet article, l’action de chiffrer et de déchiffrer consiste à modifier un message dans le but de le rendre lisible uniquement par son destinataire présumé. Elle nécessite de choisir un algorithme ainsi qu’une clé de chiffrement.
# Crypter
Sans vouloir faire de la grammaire prescriptive, j’aime bien utiliser les mots pour ce qu’ils veulent dire et surtout éviter de changer le sens de mots déjà existants.
Contrairement à ce qu’on entend régulièrement, il n’est pas possible de crypter quelque chose. En français, la notion de “cryptage” comprend les actions relatives au chiffrement pour lesquelles on ne connaît pas la clé de chiffrement. Il paraît inenvisageable de coder un message sans avoir l’information de comment le coder.
On peut donc uniquement utiliser le terme décrypter et ce dans le cadre où nous voulons retrouver le texte original d’un message chiffré sans avoir connaissance de la clé de chiffrement.
# Algorithme
Un algorithme est une suite finie et non ambiguë d’opérations ou d’instructions permettant de résoudre une classe de problèmes1.
Dans notre cas c’est la somme des transformations à appliquer au message dans le but de le rendre illisible.
# Clé de chiffrement
Une clé est un paramètre utilisé en entrée d’un algorithme cryptographique. Elle peut être très simple ou très complexe, comme nous le verrons par la suite.
# Les fonctions de hachage
Les fonctions de hachage ont pour but de calculer l’empreinte numérique d’un message. On utilise cette empreinte pour identifier rapidement des mots de passe ou des fichiers.
Ces fonctions sont dites à sens unique, c’est-à-dire qu’il est rapide et simple de calculer une empreinte alors qu’il est impossible2 de faire le calcul inverse.
# Fonction de hachage simple
Un exemple très simple de fonction de hachage serait d’utiliser la taille d’un fichier. Si vous voulez savoir rapidement si l’un de vos fichiers a été modifié, vous pouvez comparer les tailles des deux versions. Si la taille est différente, vous savez que le fichier a été modifié. Si la taille est identique alors il y a des chances que le fichier soit identique, mais il y a également des chances que les modifications faites n’aient pas augmenté le nombre de caractères (dans le cas d’un fichier texte par exemple). Dans ce cas on parle de collisions.
# L’algorithme MD5
Un autre exemple avec l’algorithme MD5 , bien qu’actuellement considéré comme dépassé et donc déconseillée pour de la cryptographie, elle est encore largement utilisée pour vérifier la provenance d’un fichier.
Cette fonction va générer une empreinte de 128 bits, soit 32 caractères en notation hexadécimale. Si ce mot ne vous parle pas pensez à aller lire mon article sur le sujet.
Sans entrer dans les détails du fonctionnement de cet algorithme, car c’est beaucoup trop complexe, son but est de garantir que les messages similaires en entrée donnent des empreintes complètement différentes. Le but est de permettre de vérifier l’authenticité d’un message.
Par exemple,
en hachant le texte intégral de 20 000 lieues sous les mers et
une version modifiée, le 10e caractère de la 1000e
ligne est remplacé par le caractère *
on obtient respectivement :
Version originale
730da858e0c7be81d27d8c0ffacd6b03
--------------------------------
4e9cad9bb7b0db7b37c7364ee39ab8c4
Version modifiée
On voit clairement ici que deux fichiers similaires donnent des empreintes totalement différentes. Très concrètement, si je veux vous partager ce livre, je peux le mettre en téléchargement sur mon site. Je peux également vous fournir son empreinte, calculée sur mon ordinateur. Lorsque vous allez télécharger le fichier, vous êtes capables de calculer son empreinte sur votre ordinateur et de comparer les deux empreintes. Si elles sont identiques, le texte n’a pas été modifié. En revanche, si les empreintes ne correspondent pas, le fichier a vraisemblablement été modifié, par erreur ou par un acte malveillant.
# Collisions
Le but d’une fonction de hachage est de donner une empreinte unique pour chaque message. Cette empreinte est de taille fixe, par exemple 128 bits pour le cas de MD5. Il n’est pas nécessaire d’avoir fait un doctorat en math pour comprendre qu’avec un nombre de message presque infini et un nombre d’empreintes fini ( environ 400 sextillions ). plusieurs messages peuvent donner la même empreinte. Pour pouvoir utiliser efficacement ces fonctions, on s’arrange pour que deux messages similaires donnent une empreinte totalement différente. Ainsi, deux messages totalement différent risquent de collisionner mais nous avons sécurisé la modification (volontaire ou non) du message.
L’algorithme MD5, utilisé précédemment comme exemple, a été cassé.
En mars 2005,
un article démontrant la possibilité de le casser à été publié.
Concrètement, cela veut dire que deux fichiers différents donnent
la même empreinte 79054025255fb1a26e4bc422aef54eb4
.
Le comparatif des deux fichiers
Fichier 1:
d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f89
55ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5b
d8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70
Fichier 2:
d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f89
55ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5b
d8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70
Premièrement, une petite précision, si vous voulez tester cela il faut vous munir d’un éditeur hexadécimal. Le texte que vous voyez n’est pas le texte affiché dans un éditeur de texte, c’est le code binaire (affiché en hexadécimal) du fichier.
Ensuite, quel peut être le risque pour l’utilisateur ? Cet exemple est une preuve de collision, il n’a pas grand intérêt. En revanche, dans le cas où nous voulons garantir la provenance d’un programme, s’il est possible de créer un autre programme avec la même empreinte alors nous ne pouvons plus avoir aucune garantie de sécurité. Il est envisageable d’avoir un programme qui affiche une image, et avec la même empreinte un programme qui efface tout votre disque dur. Pour plus d’informations, je vous renvoie à l’article Peter Selinger sur les collisions MD5.
# Le stockage des mots de passes
Mise à part sur certaines plateformes problématiques comme celle de l’École-Club Migros, j’en ai parlé dans ce billet, on n’enregistre jamais un mot de passe directement dans une base de données. Il est important d’utiliser une fonction de hachage pour cela. Grâce à elle, il est possible d’enregistrer uniquement l’empreinte et donc de ne pas avoir connaissance du mot de passe. Il suffit ensuite de comparer l’empreinte enregistrée avec l’empreinte générée pour le mot de passe entré et de valider la connexion en fonction du résultat.
Par exemple, si mon mot de passe est t56aniIM346p69xaSs
,
lorsque je créé mon compte sur mon site préféré,
ce dernier va exécuter une fonction de hachage sur le mot de passe,
par exemple MD5, ce qui nous donne l’empreinte suivante
de71fc6f767ee3a5cfe20836e79fae97
.
C’est cette empreinte qui sera enregistrée dans la base de données.
Lors de ma prochaine connexion, lorsque j’entre mon mot de passe,
le logiciel va calculer mon empreinte et la comparer à la valeur
qui est stockée en base de données.
Si je me suis trompé et que j’ai tapé r56aniIM346p69xaSs
,
l’empreinte sera 6f046c252e083c30dcafc1299a5f0d45
et
ma tentative de connexion sera refusée.
Ainsi, sauf volonté malveillante de conserver mon mot de passe, la plateforme garde uniquement une empreinte qui ne lui permet pas de retrouver mon mot de passe.
# Les algorithmes recommandés
Comme je l’ai déjà dit, l’algorithme MD5 est actuellement considéré comme dépassé, mais il permet d’expliquer les problématiques auxquelles les algorithmes actuels nous exposent.
Dans le but d’éviter les collisions, qui reste le problème le plus important à gérer, d’autres algorithmes générant une empreinte plus longue sont actuellement utilisés :
- SHA-2, l’évolution de SHA-1. Les tailles d’empreinte possibles sont 224, 256, 384 et 512 bits. N’oubliez pas que le nombre de possibilité est exponentiel, donc en comparaison à MD5, 224 bits permettent d’avoir 296, soit environ 10 quadrilliards, 1 suivi de vingt-huit 0, fois plus d’empreintes différentes ;
- Bcrypt génère des empreintes de 184 bits et est l’algorithme utilisé par défaut sur beaucoup de système GNU/Linux ;
- Argon2 a remporté la compétition Password Hashing Competition en 2015. Cette compétition avait, entre autres, pour but de sensibiliser la communauté informatique au besoin de fonctions de hachages solides pour protéger le stockage des mots de passes, dans le but d’éviter une fuite.
Cette liste n’est évidemment pas exhaustive, si vous voulez creuser le sujet, vous aurez toute la lecture qu’il faut sur Internet.
# Le chiffrement symétrique
Comme énoncé précédemment, le but du chiffrement est de rendre incompréhensible un message pour tout le monde sauf pour le destinataire. Contrairement au hachage, il est ici nécessaire de pouvoir faire l’opération inverse, le but étant de pouvoir transmettre un message. Cette première option du chiffrement, symétrique, est la plus ancienne forme utilisée. Elle consiste en l’utilisation d’une unique clé de chiffrement et d’un algorithme. La contrainte est sur la clé qui doit absolument rester secrète, connue uniquement de l’émetteur et du ou des destinataires.
# Le chiffre de César
Le chiffre de César, ou chiffrement par décalage, était utilisé, entre autres, par Jules César pour envoyer des messages secrets. C’est l’une des plus anciennes utilisations du chiffrement symétrique3.
Son fonctionnement, ou algorithme, est très simple. Il consiste à décaler chaque lettre d’un certain nombre en suivant l’ordre de l’alphabet. Voici un exemple avec une clé, donc un décalage, de 3 vers la droite.
clair : JE SAIS CHIFFRER PAR DECALAGE
chiffré : MH VDLV FKLIIUHU SDU GHFDODJH
Dans sa version de base, cet algorithme ne fonctionne qu’avec des majuscules et sans aucun caractère accentué.
# Sécurité
Cet algorithme est exposé à deux problèmes majeurs. Le premier est lié au nombre de clés possibles. En utilisant un alphabet latin il n’y a que vingt-six possibilités. Il est donc facile de faire une attaque par force brute afin de trouver quelle était la clé utilisée.
Le second est l’attaque par analyse des fréquences.
Il est possible de classer chaque lettre en fonction de sa fréquence
d’apparition pour une langue donnée.
En français par exemple, la lettre e
apparaît à 12 %,
suivie du a
à 7 % et du i
à 6.5 %.
Lors de l’utilisation du chiffre de César, la fréquence n’est pas modifiée,
seulement déplacée.
Par exemple, si j’utilise la phrase suivante :
Je sais chiffrer par decalage, personne ne pourra me comprendre!
Une fois chiffré avec une clé de 5, cela donne :
Oj xfnx hmnkkwjw ufw ijhfqflj, ujwxtssj sj utzwwf rj htruwjsiwj!
Si nous analysons la fréquence d’apparition des caractères, nous obtenons la liste suivante :
Lettre | Fréquence |
---|---|
e | 12.1 % |
a | 7.1 % |
i | 6.6 % |
s | 6.5 % |
n | 6.4 % |
r | 6.1 % |
t | 5.9 % |
o | 5.0 % |
Fréquences en français
Chiffré | Fréquence | Original |
---|---|---|
j | 18.9 % | e |
w | 15.1 % | r |
f | 9.4 % | a |
u | 7.6 % | p |
s | 7.6 % | n |
x | 5.7 % | s |
h | 5.7 % | c |
t | 5.7 % | o |
Fréquences du message
Évidemment, ce morceau de texte n’est pas représentatif du français et
la fréquence d’apparition des différents caractères ne correspond pas
au français.
Mais on peut quand même se douter que la lettre la plus représentée est
un e
, ce qui facilite déjà grandement le décryptage.
Plus un texte sera long et plus la fréquence d’apparition se rapprochera
de la moyenne pour la langue française.
Il est donc assez aisé d’en déduire le décalage effectué.
# Le chiffre de Vigenère
Le chiffre de Vigenère est une amélioration du chiffre de César.
Cet algorithme a été formalisé pendant le XVIe siècle.
Contrairement à la précédente,
cette méthode de chiffrement n’utilise pas un unique décalage comme clé.
Cette fois, la clé est un mot complet, par exemple bateau
.
La lettre a
représente aucun décalage vers la droite,
la lettre b
un décalage de 1 symbole vers la droite,
la lettre c
un décalage de 2, etc.
À chaque nouvelle lettre du message, on avance également sur la clé.
Et lorsque nous sommes au bout de la clé, on recommence au début.
message : Je sais chiffrer avec Vigenere!
clé déroulée : ba teau bateauba teau bateauba
-------------------------------
résultat : Ke leim dhbjflfr tzew Wizinyse!
Cette fois-ci il n’y a plus de problème de fréquence d’apparition des caractères vu que deux caractères identiques ne donnent pas forcément le même caractère une fois chiffré.
Et pour décoder, il suffit de faire l’opération en sens inverse.
Malheureusement, cette méthode a été cassée en 1863 et n’est donc plus utilisable dans un cadre sécurisé, sauf si la clé fait la même longueur que le message à chiffrer. Il en a été tiré des règles pour définir une clé incassable : le chiffre de Vernam.
# Le chiffre de Vernam
Le chiffre de Vernam, ou masque jetable, peut être vu comme une adaptation du chiffre de Vigenère avec une clé dont les contraintes sont les suivantes :
- elle est de la même longueur que le message à chiffrer ;
- elle est parfaitement aléatoire ;
- elle est utilisée pour le chiffrement d’un unique message, elle est ensuite détruite.
Ainsi, avec l’exemple précédent, j’ai un chiffre de Vernam si j’augmente la longueur de ma clé, que je la génère de manière totalement aléatoire et que je la jette après usage.
message : Je sais chiffrer avec Vigenere!
clé unique : tb osoz lwzgnqkf qvyh ykxgltjt
-------------------------------
résultat : Cf gswr ndhlshow qqcj Tsdkyxax!
# Les techniques actuelles
Maintenant que nous avons accès à des ordinateurs, les techniques se sont formalisées et les capacités de calcul ont étés décuplées. Les algorithmes ont donc dû être adaptés pour résister aux attaques malveillantes.
# Le système binaire
Vu qu’actuellement tous les algorithmes de chiffrement nécessitent
des ordinateurs pour fonctionner, il est nécessaire de réfléchir comme eux.
Je le rappelle, les ordinateurs utilisent un système de notation binaire.
C’est-à-dire qu’ils ont accès à uniquement deux symboles, 0
et 1
.
Pour nous qui fonctionnons avec une liste de près de cent symboles
dans la vie de tous les jours, ça peut paraître limitant,
mais cela simplifie grandement les opérations que nous allons faire ensuite.
Il faut donc transformer en binaire le texte que nous voulons chiffrer et ensuite seulement nous pourrons faire fonctionner nos algorithmes. Cette première étape est de toute façon faite lorsque vous créez un fichier sur un ordinateur, ce dernier ne sachant pas fonctionner autrement.
Pour essayer de donner un exemple concret, je vais utiliser la norme de codage ASCII qui est apparue dans les années soixante. Cette norme ne contient pas tous les caractères possibles mais est plus simple à utiliser pour cette explication que les récentes normes Unicode.
La norme ASCII code chaque symbole sur 7 bits4. Elle permet donc d’identifier 128 symboles différents (27, et oui, comme la robustesse d’un mot de passe). Toutes les combinaisons possibles de ces 7 bits permettent de coder un symbole différent, en voici quelques exemples (vous pouvez voir la liste complète, entre autres, sur l’article Wikipedia):
Code binaire | Symbole | Décimal | Hexadécimal |
---|---|---|---|
010 0000 | espace | 32 | 20 |
010 1000 | ( | 40 | 28 |
011 0000 | 0 | 48 | 30 |
011 0001 | 1 | 49 | 31 |
011 1001 | 9 | 57 | 39 |
100 0001 | A | 65 | 41 |
100 0010 | B | 66 | 42 |
101 1010 | Z | 90 | 5A |
110 0001 | a | 97 | 61 |
110 0011 | c | 99 | 63 |
110 0101 | e | 101 | 65 |
110 0111 | g | 103 | 67 |
110 1000 | h | 104 | 68 |
111 0010 | r | 114 | 72 |
111 0100 | t | 116 | 74 |
111 1010 | z | 122 | 7A |
Quelques exemples de codes ASCII
Si vous êtes intéressés par la conversion de base, j’en parle dans mon article sur la numération.
# Le chiffrement XOR
Le XOR , ou ou exclusif, est un opérateur logique simple, en général noté avec le symbole ⊕. On l’utilise en général avec deux opérandes binaires. Il est défini par la table de vérité suivante :
A | B | R=A⊕B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Table de vérité de XOR
On peut voir que le résultat vaut 1, si et seulement si un seul opérande vaut 1, sinon il vaut 0.
Maintenant que nous avons un opérateur binaire,
il est simple de l’appliquer à un groupe de bits,
par exemple si, en codage ASCII, nous voulons faire chat
⊕ greg
:
message c h a t
message 110 0011 110 1000 110 0001 111 0100
clé ⊕ 110 0111 111 0010 110 0101 110 0111
g r e g
-------------------------------------
résultat = 000 0100 001 1010 000 0100 001 0011
Nous pourrions écrire le résultat en utilisant le codage ASCII,
malheureusement aucuns de ces caractères sont des symboles affichables…
Pour celles et ceux qui voudraient quand même l’avoir,
le résultat est EOT SUB EOT DC3
.
Il est en revanche utile, car plus court, de l’écrire en hexadécimal:
résultat 000 0100 001 1010 000 0100 001 0011
résultat 0 8 1 A 0 8 1 3
Nous avons maintenant notre nouvel algorithme. Un de ses énormes avantages est qu’il est réversible sans rien modifier. Par exemple si on prend le résultat précédent avec la même clé, on obtient le message de départ.
message 000 0100 001 1010 000 0100 001 0011
clé ⊕ 110 0111 111 0010 110 0101 110 0111
-------------------------------------
résultat = 110 0011 110 1000 110 0001 111 0100
message c h a t
Cet algorithme, bien que facilement mis en place avec des ordinateurs, nécessite toujours les mêmes contraintes sur la clé pour obtenir un chiffre de Vernam. Pour éviter de rendre cet article trop velu, on peut simplifier la réflexion et se dire qu’il y a des algorithmes qui se rapprochent du chiffre de Vernam, en utilisant des clés de longueur fixe. Certains sont meilleurs que d’autres. Ce qu’il faut retenir c’est qu’avec une clé de longueur fixe, le message est découpé en blocs de même taille que la clé et chaque bloc est chiffré. S’il n’y a aucun lien entre ces chiffrements alors on pourra détecter des répétitions et casser le chiffrement. Heureusement tous les algorithmes actuels se protègent contre ces attaques.
# La longueur de la clé
Quel que soit l’algorithme utilisé, plus la clé est longue et meilleur sera le chiffrement. Pour les algorithmes de chiffrement symétriques actuels, à savoir AES et IDEA , celle-ci varie entre 128 et 256 bits. Ce grand nombre de possibilités permet de se protéger contre une attaque par force brute.
# Le chiffrement asymétrique
Comme nous l’avons vu précédemment, le chiffrement symétrique nécessite la mise en place d’une unique clé utilisée pour le chiffrement et pour le déchiffrement. Le chiffrement asymétrique consiste à l’utilisation de clés différentes, une pour chiffrer et une autre pour déchiffrer.
# Les algorithmes
Malheureusement, cette fois les algorithmes sont plus compliqués. Entre la décomposition en très grands nombres premiers et des courbes elliptiques, les non-mathématiciens comme moi risquent de rien comprendre. Je vous propose d’aller jeter un œil aux algorithmes RSA et ECC vous-même pour en savoir plus.
# Utilisations
Globalement, le fonctionnement des algorithmes repose sur une paire de clés. Ces clés sont générées en même temps et il est impossible de déduire une des deux à partir de l’autre. Si ce n’était pas le cas alors il n’y aurait plus aucun intérêt à avoir une paire de clés.
Lors de la création, on a pour habitude de nommer les deux clés :
- clé privée ;
- clé publique.
Elles sont bien évidemment interchangeables, il est possible de chiffrer avec la clé privée et déchiffrer avec la clé publique ou l’inverse. La notion de publique et privée est dans notre utilisation de ces clés. La clé privée doit absolument rester secrète, stockée sur notre ordinateur dans un espace sécurisé et sera en général protégée par un mot de passe, cette dernière étape n’étant pas du tout obligatoire mais fortement recommandée. À l’inverse, la clé publique sera partagée avec tout le monde. C’est uniquement notre utilisation de chaque clé qui permet de définir son statut.
# Chiffrer un message
Maintenant que nous avons choisi un algorithme et que nous avons généré des clés, il est possible de chiffrer un message.
Pour cela, il nous faut connaître la clé publique du destinataire. C’est avec cette clé que nous allons chiffrer le message, rendant le déchiffrement uniquement possible avec la clé privée associée et donc uniquement faisable par notre destinataire.
# Signer un message
Il est également possible de signer un message, à savoir authentifier sa provenance. Pour cela, l’usage habituel est de générer une empreinte et de chiffrer cette empreinte avec notre clé privée.
Le destinataire du message va pouvoir générer l’empreinte du message reçu, de préférence avec le même algorithme sinon il n’est pas possible de les comparer. Il va ensuite déchiffrer la signature reçue, avec la clé publique de l’émetteur, la seule pouvant déchiffrer la signature. Si les deux empreintes sont identiques, la provenance est garantie, l’émetteur étant la seule personne capable de chiffrer avec sa propre clé privée.
# Les avantages et inconvénients
Je pense que nous pouvons résumer les différences entre le chiffrement symétrique et le chiffrement asymétrique, en termes d’utilisation, aux trois points suivants :
- Le chiffrement asymétrique ne nécessite pas de canal secret pour l’échange de clés. En revanche, il faut une solution pour pouvoir garantir l’authenticité des clés publiques que vous recevrez ;
- Le chiffrement symétrique est beaucoup plus rapide. C’est en majorité dû à la complexité des algorithmes asymétriques ;
- La gestion des clés est beaucoup plus simple avec le chiffrement asymétrique.
Il est nécessaire d’avoir deux clés par personne,
2n
, contrairement au chiffrement symétrique où, si l’on veut chiffrer avec des clés différentes pour chaque intervenant·e, il faut avoirn(n-1)/2
clés. Comme exemple, pour une association de trente personnes, il faut 60 clés asymétriques alors qu’il en faut 435 pour un chiffrement symétrique.
# Les utilisations dans la vie courante
Dans la vie de tous les jours, nous sommes exposés sans le savoir à beaucoup de chiffrement.
# HTTPS / Le Web
Lorsque vous naviguez sur internet, votre navigateur vous indique si la page sur laquelle vous êtes est sécurisée ou non. En général c’est symbolisé par un petit cadenas dans la barre d’adresse.
Cette sécurité utilise les deux types de chiffrement, symétrique et asymétrique.
La partie symétrique est pour garantir que personne ne peut lire les données échangées entre le navigateur et le serveur. Pour cela, les deux appareils se mettent d’accord sur un algorithme et une clé et ensuite chiffrent toutes les informations à envoyer.
La partie asymétrique est utilisée pour authentifier le serveur. Grâce à une méthode assez complexe, votre navigateur peut s’assurer que la page que vous visitez, par exemple cette page, est bien fournie par mon serveur. Le but est d’éviter le hameçonnage, ou phishing.
# Les mots de passes
J’en ai déjà parlé, normalement vos mots de passes ne sont pas enregistrés sur les serveurs, c’est son empreinte qui l’est, permettant de valider la connexion sans stocker les mots de passes.
# Les mails
Vous êtes peu à utiliser le chiffrement de mail mais il est assez simple à mettre en place.
Tous mes mails sont signés, authentifiés. Vu que l’authentification nécessite uniquement ma clé privée et la mise à disposition de ma clé publique. En revanche, sauf si vous avez mis en place de quoi chiffrer et déchiffrer sur votre client de messagerie, il m’est impossible de vous envoyer un mail chiffré, cette étape nécessite que je possède votre clé publique du destinataire, rappelez-vous. Mais une fois que vous m’aurez communiqué votre clé publique, alors nous pourrons échanger de manière chiffrée sans même nous en rendre compte, le logiciel se chargera de tout.
# Les disques dur
Il est possible de chiffrer le disque dur de son ordinateur ou de son téléphone. Chaque système d’exploitation propose des algorithmes différents, je m’étendrai donc pas sur le sujet ici.
En revanche, c’est ce qu’utilisent les logiciels rançonneurs, en anglais ransomware. Ces logiciels font chiffrer une partie de vos documents et demanderont une rançon pour que vous puissiez récupérer les documents. Comme nous l’avons vu précédemment, les méthodes de chiffrement actuelles sont très difficiles à casser et il est donc préférable de partir du principe que des données chiffrées ne sont pas récupérables sans la clé. Un jour je ferai un article sur ces logiciels précisément, en attendant sachez que la seule défense valable contre ce genre d’attaques est d’avoir une sauvegarde, backup, de ses données.
# Conclusion
Les mots de passes peuvent-être semblables à du chiffrement symétrique, selon leurs utilisations. Ils nécessitent que les deux protagonistes le connaissent, ou au moins connaissent son empreinte dans le cas de la sécurisation d’un accès, et donc rendent nécessaire la mise en place de protocoles d’échanges. Lorsqu’un ami vous envoie un document protégé par un mot de passe, il est impératif que vous vous soyez mis d’accord sur lequel utiliser.
Grâce au chiffrement asymétrique on peut maintenant mettre en place des systèmes sécurisés sans avoir de problème avec l’échange de clés, l’une des deux pouvant (devant) être rendue publique.
Nous nous trouvons maintenant avec des mots de passes sécurisant nos accès à diverses ressources tel que des fichiers, des comptes ou encore des clés de chiffrement. Sachant que tous ces mots de passes doivent être différents, aléatoires et longs, il est aisé d’en arriver à la conclusion que nous n’allons pas pouvoir nous en rappeler. Ça sera le sujet du prochain, et dernier, billet de cette série.
-
Selon la définition de Wikipédia. ↩︎
-
En réalité, il est possible de deviner les fichiers qui pourraient donner l’empreinte considérée, mais ce calcul est tellement long que pour les fonctions de hachage répondant aux normes de sécurités actuelles, on peut partir du principe que ce n’est pas faisable. ↩︎
-
Il semble y avoir des traces de chiffrement précédant cette période, n’ayant pas pour objectif de faire trop d’histoire ici, nous nous contenterons de dire que cette méthode n’a pas été inventée par les contemporains de Jules César. Apparemment il existe une tablette d’argile, retrouvée en Irak, sur laquelle un potier y avait gravé une recette secrète. Cette tablette date du XVIe siècle avant notre ère. ↩︎
-
Le mot bit vient de la contraction de binary digit. C’est l’unité de numération la plus simple, avec uniquement deux valeurs possibles, en général
0
et1
ou vrai et faux. ↩︎