Ressources

News

La cryptographie pour le stockage et l’échange de données sécurisés – Partie 1

Chiffrement, hachage, empreinte : petit lexique technique

La cryptographie désigne les procédés mathématiques permettant de sécuriser des données en les rendant illisibles pour toute personne ne disposant pas du secret permettant le déchiffrement. Dans le milieu de la sécurité informatique, nous l’utilisons constamment.

Par exemple :

  • Pour stocker des données sensibles dans une base de données, que seuls certains utilisateurs pourront consulter,
  • Pour échanger des données entre plusieurs acteurs, sans qu’une personne malveillante se trouvant entre ces acteurs (on parle de « Man-in-the-Middle ») ne puisse prendre connaissance des données,
  • Pour conserver les mots de passe des utilisateurs dans une application web, sans pour autant que l’administrateur ne puisse en prendre connaissance,
  • Etc.

Pour comprendre les différentes spécificités techniques employées en pratique pour répondre à chaque besoin, il convient de définir précisément tout un ensemble de termes et concepts :

  • Chiffrement
    • Symétrique
      • Échange de clé
    • Asymétrique
      • Certificat
      • Signature/Empreinte
  • Hachage
    • Contrôle d’intégrité
    • Sel

Dans ce premier article, nous nous focaliserons sur la notion de chiffrement. Dans le prochain nous parlerons principalement de signature et de certificats, puis dans un dernier nous détaillerons l’utilisation de la cryptographie dans le stockage sécurisé des mots de passe.

1. Le chiffrement symétrique

Le chiffrement est le procédé permettant de rendre un message « en clair » (c’est-à-dire non chiffré, comme par exemple cet article !) incompréhensible à toute personne ne disposant pas de la clé de déchiffrement.

Plaçons-nous dans le cas d’usage trivial suivant :

Alice souhaite envoyer un message à Bob sans que Charlie ne puisse en prendre connaissance.

Principe du chiffrement - Coralium Cybersécurité
Figure 1 – Principe du chiffrement

Physiquement, on pourrait imaginer qu’Alice place une lettre dans un coffret, qu’elle verrouille le coffret à clé et qu’elle l’envoie à Bob. Si Bob possède aussi la clé, il peut ouvrir le coffre.

Ce procédé s’appelle le chiffrement symétrique : la même clé est utilisée pour sécuriser le message (le chiffrer) et pour le récupérer en clair (le déchiffrer).

Dans le cas des échanges informatiques, Alice et Bob ne peuvent évidemment pas s’envoyer un coffre physique à chaque échange.

1.1.    Code de César

Prenons un exemple trivial de chiffrement symétrique utilisable en informatique pour fixer les choses.

Si Alice veut envoyer à Bob le mot « secret » de manière privée et confidentielle, elle peut utiliser l’algorithme de chiffrement symétrique de César, ou Code de César, qui consiste à décaler les lettres de l’alphabet d’un certain nombre de position. Si elle choisit la clé « c » qui est la 3ème lettre de l’alphabet, alors le mot « aaaaab » deviendra « ddddde », puisque « d » se trouve 3 positions après « a » dans l’alphabet, et « e » 3 positions après « b », etc. Ce message est dit « chiffré » : il n’est pas compréhensible par quelqu’un ne disposant pas de la clé (« c ») et de l’algorithme de chiffrement utilisé (code de César). Pour le déchiffrer, le procédé inverse doit être appliqué avec la même clé.

Ainsi, si Bob reçoit le code « vhfuhw », il lui suffira de décaler toutes les lettres de 3 positions dans le sens inverse. Ici, « v » est 3 positions derrière « s », « h » 3 positions après « e », etc., ce qui donne le mot « secret » une fois déchiffré entièrement.

1.2.    Chiffre de Vigenère

Complexifions légèrement l’exemple précédent. Avec le Code de César, toutes les lettres sont déplacées du même nombre de position, donc toutes les occurrences d’une même lettre sont systématiquement changées pour le même caractère dans le texte chiffré. Dans notre exemple précédent, les deux « e » de « secret » deviennent deux « h » dans « vhfuhw ». C’est l’une des principales failles de cette méthode de chiffrement : lorsqu’on connaît les fréquences d’apparition de chaque caractère, une personne malveillante peut décoder le message sans connaître la clé. Par exemple en français, la lettre « E » est utilisée en moyenne 12 fois sur 100 caractères, donc on se doute que le « h » du mot envoyé est un « e ».

Pour parer à cette faiblesse, l’algorithme de chiffrement symétrique de Vigenère, ou Chiffre de Vigenère, complexifie la découverte de la clé en la rendant plus longue. Par exemple en utilisant « abc ». La 1ère lettre du texte à chiffrer ne sera pas décalée puisque « a » correspond à la position 1, la 2ème lettre sera décalée d’une position, la 3ème de deux, la 4ème sera conservée, etc. On décale donc de la position de la lettre de la clé « moins un ».

Illustrons avec l’exemple suivant :

Alice souhaite envoyer le message « il fait beau aujourd’hui » à Bob, et leur clé commune est « meteo ».

La première lettre « i » est à la 9ème position de l’alphabet, et la première de « meteo », le « m » est à la 13ème place. Le « i » est donc décalé de 12 positions, et devient un « u ». En appliquant cela à toute la phrase, on obtient le résultat suivant :

Exemple du Chiffre de Vigenère - Coralium Cybersécurité
Figure 2 : Exemple du Chiffre de Vigenère

Dans le texte chiffré « upyewffxeimycsidhayw », les mêmes lettres ne correspondent pas systématiquement aux mêmes lettres dans le texte en clair. Les deux « ff » correspondent en effet par exemple à un « t » et un « b » du texte initial.

Dans la pratique et grâce à l’informatique, les clés utilisées sont beaucoup plus longues, et les algorithmes beaucoup plus complexes. Car c’est la limite des deux précédents exemples : ils ne résistent pas à la cryptanalyse qui est l’analyse mathématique visant à découvrir le message sans en posséder initialement la clé.

Néanmoins, même si l’on utilise des clés longues et des algorithmes complexes, il reste une étape à franchir pour qu’Alice et Bob puissent discuter en toute discrétion : partager la même clé de chiffrement.

1.3.    Echange de clés

Afin que la communication soit sécurisée, la clé échangée doit évidemment rester secrète. Alice et Bob doivent donc trouver une manière de s’échanger cette information initiale de manière privée. Dans un exemple « physique », ils pourraient vérifier que personne ne les écoute, et simplement s’échanger cette clé à l’oral.

Sur Internet, c’est plus compliqué. Il convient alors de créer une clé commune de manière sécurisée, afin qu’un attaquant, même s’il écoute l’ensemble des communications, ne puisse pas retrouver la clé.

Pour comprendre en pratique comment cela se passe, illustrons avec des couleurs.

Alice et Bob s’accordent sur une couleur de départ connue, le jaune. Chacun choisit ensuite une couleur secrète : Alice le bleu, Bob le rouge.

Ils vont ensuite chacun de leur côté procéder au mélange de leurs deux couleurs. Alice mélangera le jaune avec son bleu et obtiendra un vert, Bob le jaune avec son rouge et obtiendra un orange.

En disposant de ce vert ou de cet orange et de la couleur initiale (le jaune), il est très difficile pour un attaquant de retrouver la couleur secrète utilisée par Bob ou Alice. Il serait en effet nécessaire de tester minutieusement des milliers de teintes de rouge ou de bleu jusqu’à trouver exactement la bonne.

Alice transmet son vert à Bob, qui lui transmet son orange. Chacun ajoute sa couleur secrète au mélange, et obtient donc la couleur finale marron qui correspond pour chacun à l’ajout des trois couleurs utilisées : jaune, bleu et rouge.

principe de Diffie-Hellman - Coralium Cybersécurité

Figure 3 : Illustration du principe de Diffie-Hellman avec des couleurs

Par un procédé de ce type, il est alors possible d’échanger une clé de chiffrement, afin de pouvoir commencer à échanger de manière sécurisée. Nous détaillons dans la partie suivante le fonctionnement mathématique équivalent à cet exemple.

1.4.    Diffie-Hellman

L’algorithme de Diffie-Helman utilise le principe du logarithme discret. Ce principe mathématique stipule qu’il est facile de multiplier de très nombreuses fois un très grand nombre et d’en faire la division avec un nombre premier, mais qu’il est très complexe de retrouver le nombre initial en ne disposant que des résultats des calculs. Plus précisément :

  • Alice et Bob choisissent un très grand nombre entier p et un grand nombre q, premier avec p.
  • Alice choisit un nombre a, et calcule le nombre A=p^a [q] (p, à la puissance a, modulo q). Quelle que soient la taille de q et p, cette opération est triviale avec les puissances de calcul disponibles aujourd’hui.
  • Bob choisit un nombre b, et calcule de son côté B=p^b [q].
  • Chacun envoie son résultat à l’autre.
  • Alice calcule alors B^a [q], et Bob calcule A^b [q]. Ces deux résultats sont identiques et valent K=p^ab [q], qui est la clé qu’Alice et Bob peuvent désormais utiliser.
Principe de l'échange de clé Diffie-Hellman - Coralium Cybersécurité
Figure 4 – Principe de l’échange de clé Diffie-Hellman

Même si Charlie intercepte tous les échanges, il n’aura à sa disposition que p, q, A et B, qui sont insuffisants pour aboutir à la clé. Utiliser de très grands nombres rend impossible (ou très, très, très long) de retrouver a à partir de A (p^a [q]), même en connaissant p et q.

Aujourd’hui, des améliorations à ce protocole existent, utilisant notamment les courbes elliptiques.

Pour plus d’informations : https://fr.wikipedia.org/wiki/%C3%89change_de_cl%C3%A9

1.5.    Conclusion

Le chiffrement symétrique dispose de l’avantage d’être très rapide pour le chiffrement et le déchiffrement, il est donc très utilisé pour les échanges nécessitant de la fluidité, comme par exemple les communications sur Internet.

Néanmoins, il pose de nombreux problèmes dès que plus de deux utilisateurs veulent s’échanger des informations secrètes. En effet, si plusieurs utilisateurs veulent se partager un message secret, ils doivent tous posséder la même clé. C’est le cas par exemple quand une personne souhaite envoyer un document chiffré en pièce jointe d’un mail, la clé sera envoyée par un autre biais (SMS ou appel) aux différents destinataires.

Si ces utilisateurs doivent partager un autre document, mais que la liste des utilisateurs n’est plus la même, alors une nouvelle clé doit être partagée pour que les utilisateurs non destinataires ne puissent pas avoir accès au message. Il faut donc une clé unique pour chaque groupe d’utilisateurs distincts, ce qui se complexifie très vite dès que le nombre d’utilisateurs dépasse 3 ou 4 :

  • Pour deux utilisateurs A et B : 1 clé (AB)
  • Pour trois utilisateurs A, B et C : 4 clés : (AB), (AC), (CB) et (ABC)
  • Pour quatre utilisateurs A, B, C et D : 11 clés (AB), (AC), (AD), (BC), (BD), (CD), (ABC), (ABD), (ACD), (CBD) et (ABCD)
  • Etc.

Dans le prochain article, nous aborderons le chiffrement asymétrique qui permet de régler le problème du grand nombre d’utilisateurs, puis les certificats numériques.

Article rédigé par : Florence H. , consultante chez Coralium

Si vous voulez en savoir davantage sur nos offres, en lien avec le sujet de l’article, nous vous proposons de découvrir : Politique de Sécurité des Systèmes d’Information (PSSI)