Par Rick Hayoun – Consultant Sécurité
Comme nous l'avons expliqué dans l'article précédant, il est possible de chiffrer un message pour le rendre inintelligible pour les personnes qui ne sont pas censés le lire et pour y parvenir nous avons besoin de définir une clé de chiffrement. Nous nous étions posé deux grandes questions :
- Comment définir cette clé secrète ?
- Comment s'assurer qu'elle est suffisamment protégée pour se prémunir des attaques.
Définition de la clé secrète
On distingue deux grandes familles concernant le chiffrement : le chiffrement à clé symétrique et le chiffrement à clé asymétrique. Je m'explique...
Chiffrement à clé symétrique
On parle de chiffrement symétrique lorsque l'on utilise la même clé pour chiffrer et déchiffrer le message. Par analogie, on prend souvent l'exemple du cadenas et de la clé que vous connaissez sûrement :
Vous devinez aisément qu'il va falloir communiquer cette fameuse clé à notre interlocuteur pour qu'il puisse déchiffrer le message et ce, de façon sécurisée pour qu'il soit le seul à la détenir. Pour ce faire, on pense évidemment à un canal de communication sécurisé mais... Si l'on peut communiquer une clé par ce canal sécurisé, pourquoi ne pas envoyer directement le message complet dessus?
En effet, nous ne pouvons pas être sûr que le canal est entièrement sécurisé, c'est pourquoi, dans le cas de chiffrement à clé symétrique il sera préférable de donner la clé "en main propre" à son interlocuteur et de communiquer par le biais de message chiffré.
Mais heureusement, il existe une méthode de communication un peu plus sophistiquée, c'est la méthode de chiffrement à clé asymétrique. Elle utilise non pas une, mais deux clés : une pour chiffrer et une pour déchiffrer. Chaque individu doit donc posséder une paire de clés unique que l'on nomme clé publique et clé privée. Ces clés seront générées une et une seule fois par un algorithme de chiffrement que l'on voudra robuste.
Pour garder l'analogie du cadenas et de la clé, dans ce cas de figure, c'est la clé publique qui posera le cadenas tandis que la clé privée sera la clé qui permettra de l'ouvrir.
Chiffrement à clé asymétrique
Maintenant que nous savons cela, voyons à quoi ressemble le processus de chiffrement et déchiffrement à clé asymétrique.
Dans un article précédant nous avions évoqué quatre grands principes : la confidentialité, l'intégrité, l'authentification et la non-répudiation.
Il est à présent plus aisé d'expliquer comment ces principes sont assurés. La confidentialité est évidemment assurée par le chiffrement du message. L'intégrité peut être vérifiée par l'utilisation d'une fonction de hachage comme SHA-2 par exemple (même si nous n'avons pas étudié en détails les fonctions de hachage) qui est encore considéré comme robuste aujourd'hui.
Concernant l'authentification et la non-répudiation, c'est dans le chiffrement asymétrique qu'ils prennent tout leur sens. En effet, un expéditeur peut être en mesure de signer son document avec sa clé privée afin que le destinataire soit sûr qu'il s'agit bien de lui. La vérification s'effectuera par le biais de la clé publique de l'expéditeur.
C'est ce procédé qui est aujourd'hui utilisé pour la plupart des grandes transactions en ligne afin qu'aucun des partis ne puissent nier avoir envoyé ou reçu quoique ce soit.
Pour conclure, voici un schéma récapitulatif
Assurer la protection des clés pour se prémunir des attaques
Les signatures numériques sont composées de deux algorithmes différents, l'algorithme de hachage (ex: SHA-2) et l'algorithme de chiffrement (ex: AES-256). Avec le temps, ces algorithmes, ou les paramètres qu'ils utilisent, doivent être mis à jour pour garantir un niveau de sécurité toujours plus renforcé.
Aujourd'hui les recommandations de ECRYPT de Juin 2018 sont les suivantes :
Algorithmes recommandés :
Algorithme de chiffrement: à court terme, AES-128 et à long terme AES-256.
Fonctions de hachage : à court terme, SHA-256 et à long terme SHA-512 et SHA-3 avec un résultat de 512 bits.
Algorithmes pour le long terme (sécurité sur une durée de vie de 10 à 50 ans) :
Algorithme de chiffrement: AES, Camellia, Serpent
Fonctions de hachage : SHA2 (256, 384, 512, 512/256), SHA3 (256, 384, 512, SHAKE128, SHAKE256), Whirlpool-512, BLAKE (256, 584, 512)
NB: Choisir une clé très grande augmentera la robustesse de l'algorithme mais ralentira les calculs et dont les temps de chiffrement. En effet, il faut six à sept fois plus de temps pour effectuer les calculs si l'on double la taille de la clé.
Lire aussi : Chiffrement - Définition et utilisation