Dans la première partie de cette série, nous avons présenté le protocole TLS / SSL? Dans cette partie de la série, nous décrirons certaines des terminologies TLS / SSL.
Avant de plonger plus profondément dans le protocole, jetons d’abord un coup d’œil sur les bases. Comprendre ce qui suit vous aidera à mieux comprendre les sujets discutés et analysés plus tard.
Chiffrement
La cryptographie est le processus dans lequel un message lisible par l’homme (texte en clair) est converti en un format crypté, non lisible par l’homme (texte chiffré). L’objectif principal du cryptage est de s’assurer que seul un récepteur autorisé pourra déchiffrer et lire le message original. Lorsque des données non cryptées sont échangées entre deux parties, sur un support quelconque, une tierce partie peut intercepter et lire la communication échangée.
Si l’échange contient des informations sensibles, cela implique une perte de confidentialité. En outre, si le tiers peut intercepter et lire les messages, il peut également altérer les données, ce qui signifie qu’il peut modifier les informations échangées, compromettant ainsi l’intégrité du message.
Imaginez envoyer un paiement sur un canal non crypté. Le paiement comprend vos coordonnées bancaires ainsi que le montant que vous avez autorisé. Un hacker pourrait utiliser une attaque man-in-the-middle pour altérer l’information et changer le montant de 100 $ à 10 000 $. La banque reçoit les données altérées du tiers au lieu de vous, ce qui signifie qu’il n’y a pas d’authenticité. En utilisant le cryptage, un hacker peut toujours être capable d’intercepter le trafic, mais il ne pourra pas lire ou altérer les données.
Chiffrement symétrique
Le cryptage symétrique est le processus dans lequel la même clé est utilisée pour le cryptage et le décryptage des données.
Si Thomas veut envoyer des informations à Bob, il utilisera une clé partagée pour crypter les données et Bob les déchiffrera en utilisant la même clé.
Le plus gros problème avec le chiffrement à clé symétrique est que les données échangées doivent être chiffrées et décryptées avec la même clé. Cela signifie que toutes les parties qui échangent des données doivent avoir la clé partagée.
L’inconvénient majeur de ceci est que si la clé partagée est exposée, un hacker serait capable de déchiffrer toute la communication cryptée avec cette clé. C’est pourquoi la répartition des clés partagées entre les parties doit être effectuée sur un canal de communication crypté sécurisé déjà établi. Un autre inconvénient est que vous ne pouvez pas authentifier l’expéditeur d’un message, ce qui compromet l’authenticité.
Avantages du chiffrement symétrique
- Rapide, faible utilisation des ressources.
- Opération simple.
- Fiable.
Inconvénients du chiffrement symétrique
- Même clé utilisée pour le chiffrement / décryptage.
- La distribution des clés doit être effectuée sur un canal sécurisé déjà établi.
- Une clé différente est nécessaire pour différentes parties – gestion / distribution des clés.
- Impossible d’authentifier les utilisateurs.
Chiffrement asymétrique
Contrairement au cryptage à clé symétrique, le cryptage asymétrique (également appelé cryptographie à clé publique) utilise une paire de clés, une clé publique et une clé privée. Ces clés cryptographiques sont uniquement liées, ce qui signifie que tout ce qui est chiffré avec une clé peut être déchiffré avec l’autre. La clé publique, comme son nom l’indique, peut être partagée avec n’importe qui. La clé privée doit être connue uniquement du serveur.
Le cryptage asymétrique peut être utilisé pour l’authentification de l’expéditeur. Si Bob signe et crypte un message à l’aide de sa clé privée, quiconque le décrypte avec la clé publique de Bob peut être certain que Bob est l’expéditeur.
C’est pourquoi garder une clé privée sécurisée est essentiel.
Avantages du chiffrement asymétrique
La distribution des clés est facile.
Authenticité.
Intégrité.
Garantir.
Inconvénients du chiffrement asymétrique
Cryptage plus lent que celui symétrique.
Besoin de plus de ressources.
Les Ciphers (ou techniques de chiffrements)
Les Ciphers sont des méthodes / algorithmes utilisés pour chiffrer et déchiffrer des données.
Chiffrement par bloc
Dans ce procédé, les données sont divisées en blocs de longueur fixe, puis cryptées (par exemple des blocs de 64 bits ou de 128 bits). Si le dernier bloc des données est inférieur à la longueur de bloc spécifiée, le remplissage sera utilisé pour remplir l’espace « vide ». Les chiffrements de blocs populaires incluent AES, Blowfish, 3DES, DES et RC5.
Le Padding
Les chiffrements par bloc ont une longueur fixe spécifiée et la plupart d’entre eux exigent que les données d’entrée soient un multiple de leur taille. Il est courant que le dernier bloc contienne des données qui ne répondent pas à cette exigence. Dans ce cas, un remplissage (généralement des données aléatoires) est utilisé pour l’amener à la longueur de bloc requise.
Vecteur d’initialisation (IV)
Un vecteur d’initialisation est une entrée de taille fixe aléatoire (ou pseudo-aléatoire) utilisée dans les méthodes de cryptage. Si cette entrée n’est pas répétitive sur chaque message, alors elle est aussi appelée nonce, ce qui signifie qu’elle ne peut être utilisée qu’une seule fois.
Le but principal d’un IV est de démarrer une méthode de cryptage. Dans les modes Cipher, comme CBC (Cipher Block Chaining), où chaque bloc est XORed avec le bloc précédent, dans le premier bloc il n’y a pas de bloc précédent à XOR avec, donc un vecteur d’initialisation est utilisé comme entrée pour le premier bloc pour commencer hors du processus.
Un nonce est également utilisé pour empêcher les hacker de déchiffrer tous les messages en devinant l’IV. Un nonce, qui devrait être aléatoire et imprévisible, permet au même message d’être chiffré avec la même clé et pourtant avoir un résultat différent (texte chiffré).
XOR (Exclusif Ou)
XOR est une fonction logique facile à implémenter qui est utilisée en cryptographie (parmi ses nombreuses autres utilisations). XOR prend des motifs à deux bits et il ne retourne vrai que si les deux entrées sont différentes.
Voici un exemple d’opération de chiffrement XOR.
Voici un exemple d’opération de décryptage XOR.
Les algorithmes de chiffrement par blocs
Livre de code électronique (ECB)
Chaque bloc de données est chiffré séparément et concaténé à la fin. Un inconvénient majeur de la BCE est que si le même bloc de données est chiffré, il générera toujours le même texte chiffré. Le traitement parallèle est possible car les blocs ne dépendent pas les uns des autres.
Chaînage de blocs de chiffrement (CBC)
Chaque bloc est XORed avec le texte chiffré précédent avant le chiffrement. Un vecteur d’initialisation est nécessaire pour le premier cryptage de bloc en clair. Le traitement parallèle n’est pas possible car les blocs sont chaînés.
Boucle de retour de chiffrement (CFB Ciphers feedback)
Transforme un chiffrement par blocs en chiffrement de flux en sélectionnant un nombre de bits à XOR à chaque itération.
Mode compteur (CTR)
Chaque bloc possède un compteur de nonce et un compteur d’itération qui est d’abord chiffré, puis XOR avec un bloc de texte en clair. Puis le nonce change et le compteur s’incrémente à chaque itération.
Ciphers de flux
Les chiffrements de flux sont des chiffrements qui utilisent une méthode de chiffrement qui chiffre les données un bit ou un octet à la fois. Chaque bit est chiffré avec une clé différente. Alors que les chiffrements de flux ne sont pas beaucoup utilisés dans la cryptographie moderne, un exemple populaire de chiffrement de flux est le chiffrement RC4.
Code d’authentification du message (MAC)
Le code d’authentification de message (ou checksum cryptographique) est une méthode qui est utilisée pour vérifier l’authenticité ainsi que l’intégrité d’un message. Il accepte deux paramètres d’entrée, une clé secrète et un message de longueur arbitraire, et le résultat est appelé une étiquette.
Si la balise MAC de l’expéditeur et la balise MAC calculée du récepteur correspondent, cela signifie que le message n’a pas été falsifié. Si elles ne correspondent pas, cela signifie que le message a été modifié pendant la transmission.
Code d’authentification de message basé sur le hachage (HMAC)
HMAC est un type de MAC qui utilise une fonction de hachage. Il accepte deux paramètres d’entrée, une clé secrète et un message de longueur arbitraire.
Voici un exemple de fonction HMAC utilisant l’algorithme de hachage SHA256.
L’illustration suivante montre le fonctionnement de la fonction HMAC.