Qu'est-ce qu'une clé de session ? | Clés de session et mise en liaison TLS

Le protocole SSL / TLS utilise à la fois la clé publique et le chiffrement symétrique. De nouvelles clés de chiffrement symétrique doivent être générées pour chaque session de communication. Ces clés sont appelées « clés de session »

Share facebook icon linkedin icon twitter icon email icon

Clé de session

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

  • Découvrez ce qu'est une session, ce qu'est une clé et quand de nouvelles clés de session doivent être créées
  • Comprendre les différences entre le chiffrement asymétrique et symétrique
  • Découvrez comment le protocole de chiffrement SSL / TLS utilise les deux types de chiffrements
  • Découvrez les 4 types de clés de session utilisées pour le chiffrement symétrique dans SSL / TLS

Qu'est-ce qu'une clé de session ?

Une clé de session est une clé de chiffrement utilisée pour chiffrer symétriquement une seule session de communication. En d'autres termes, il s'agit d'une clé temporaire qui n'est utilisée qu'une seule fois, pendant une durée, pour crypter et décrypter des données ; les conversations futures entre les deux parties seraient cryptées avec des clés de session différentes. Une clé de session est comme un mot de passe qu'une personne réinitialise à chaque connexion.

En SSL / TLS, les deux parties communicantes (le client et le serveur) génèrent 4 clés de session au début de toute session de communication, pendant la mise en liaison TLS. Le RFC officiel de TLS n'appelle pas réellement ces clés « clés de session », mais de manière fonctionnelle c'est exactement ce qu'elles sont.

Qu'est-ce qu'une session ?

Une session est essentiellement une conversation. Une session se déroule sur un réseau et commence lorsque deux appareils se reconnaissent et ouvrent une connexion virtuelle. Elle se termine lorsque les deux appareils ont obtenu les informations dont ils ont besoin l'un de l'autre et envoient des messages « terminés », mettant fin à la connexion, un peu comme si deux personnes s'envoyaient des sms et clôturent la conversation en disant : « À plus tard ». La connexion peut également expirer en raison de l'inactivité, comme si deux personnes s'envoyaient des SMS et cessaient simplement de se répondre.

Une session peut être un ensemble de périodes définies, ou elle peut durer aussi longtemps que les deux parties communiquent. Dans le premier cas, la session expirera après un certain temps ; dans le cadre du chiffrement TLS, les deux appareils devraient alors échanger des informations et générer de nouvelles clés de session pour rouvrir la connexion.

Qu'est-ce qu'une clé cryptographique ?

En chiffrement, une clé est une chaîne de données qui est utilisée pour modifier les messages afin qu'ils soient cryptés. En d'autres termes, pour que les données apparaissent de manière aléatoire ou brouillées. Une clé est également utilisée pour déchiffrer les données ou les traduire de leur forme brouillée à leur forme d'origine. (Pour en savoir plus, voir Qu'est-ce qu'une clé cryptographique ?.)

Qu'est-ce que le chiffrement symétrique ? Qu'est-ce que le chiffrement asymétrique ?

Dans le chiffrement symétrique, la même clé est utilisée des deux côtés d'une conversation, pour le cryptage et le décryptage. Dans une session qui utilise le chiffrement symétrique, plusieurs clés peuvent être utilisées, mais un message chiffré avec une clé est déchiffré avec cette même clé.

Dans le chiffrement asymétrique, il existe deux clés et les données chiffrées avec une clé ne peuvent être déchiffrées qu'avec l'autre clé, contrairement au chiffrement symétrique, lorsque la même clé chiffre et déchiffre à la fois. Il s'agit également du chiffrement à clé publique, car l'une des clés est partagée publiquement.

HTTPS utilise-t-il un chiffrement symétrique ou asymétrique ?

HTTPS, qui est HTTP avec le protocole de cryptage TLS, utilise les deux types de chiffrements. Toutes les communications via TLS commencent par une mise en liaison TLS. Le chiffrement asymétrique est crucial pour que la mise en liaison TLS fonctionne.

Au cours d'une mise en liaison TLS, les deux appareils communicants établiront les quatre clés de session et celles-ci seront utilisées pour le chiffrement symétrique pour le reste de la session. Habituellement, les deux appareils communicants sont un client, ou un appareil utilisateur comme un ordinateur portable ou un smartphone, et un serveur, qui est n'importe quel serveur Web qui héberge un site Web. (Pour en savoir plus, voir Qu'est-ce que le modèle client-serveur ?)

Comment fonctionne une mise en liaison TLS ?

Au cours d'une mise en liaison TLS, le client et le serveur s'envoient des données aléatoires qu'ils utilisent pour effectuer des calculs séparément, puis produisent les mêmes clés de session. Trois types de données générées aléatoirement sont envoyées d'un côté à l'autre:

  • Le « client aléatoire » : il s'agit d'une chaîne aléatoire d'octets que le client envoie au serveur.
  • Le « serveur aléatoire » : il est similaire au client aléatoire, sauf que le serveur l'envoie au client.
  • Le « secret premaster » : c'est encore une autre chaîne de données. Dans certaines versions de la mise en liaison TLS, le client génère cela et l'envoie au serveur chiffré avec la clé publique ; dans d'autres versions, le client et le serveur génèrent eux-mêmes le secret premaster, en utilisant des paramètres d'algorithme convenus pour arriver au même résultat.

La mise en liaison TLS utilise un chiffrement asymétrique soit pour masquer l'aléatoire du serveur contre les pirates (en le chiffrant avec une clé privée), soit pour permettre au serveur de « signer » numériquement l'un de ses messages afin que le client sache que le serveur est bien celui qu'il prétend être (tout comme une signature permet de vérifier l'identité d'une personne dans la vie réelle). Le serveur crypte certaines données avec la clé privée, et le client utilise la clé publique pour les décrypter, prouvant que le serveur a la bonne clé et est légitime.

Quel est le « secret principal » dans une mise en liaison TLS ?

Le secret principal est le résultat final de la combinaison de l'aléatoire du client, du serveur et du secret premaster via un algorithme. Le client et le serveur ont chacun ces trois messages, ils devraient donc arriver au même résultat pour le secret principal.

Le client et le serveur utilisent ensuite le secret principal pour calculer plusieurs clés de session à utiliser dans cette session uniquement (4 clés de session, pour être précis).

Quelles 4 clés de session sont générées à partir du secret principal dans une mise en liaison TLS ?

Les 4 types de clés de session créées dans chaque mise en liaison TLS sont :

  • La « clé d'écriture client »
  • La « clé d'écriture serveur »
  • La « clé d'écriture MAC client »
  • La « clé d'écriture MAC serveur »

La clé d'écriture client est la clé que le client utilise pour crypter ses messages. La clé d'écriture client est une clé symétrique ; elle est en la possession du client et du serveur. Cela permet au serveur de déchiffrer les messages du client à l'aide de la même clé.

La clé d'écriture serveur est identique à la clé d'écriture client, sauf côté serveur. En résumé : les messages du client au serveur sont chiffrés avec la clé d'écriture client et le serveur utilise la clé d'écriture client pour les déchiffrer. Les messages du serveur au client sont chiffrés avec la clé d'écriture serveur et le client utilise la clé d'écriture serveur pour les déchiffrer. (L'ensemble de ce processus est géré par l'appareil ou le navigateur du client ; les utilisateurs eux-mêmes n'ont pas à effectuer de chiffrement ou de déchiffrement.)

Les clés MAC ou de code d'authentification de message sont utilisés pour signer numériquement les messages. Le serveur signe ses messages avec la clé d'écriture MAC serveur et lorsque le client reçoit le message, il peut vérifier la clé MAC utilisée par rapport à son propre enregistrement de la clé MAC du serveur pour s'assurer qu'elle est légitime. Le client signe ses messages avec la clé d'écriture MAC client.

Un ensemble de 4 clés de session entièrement nouvelles est créé à chaque nouvelle session de communication et nouvelle mise en liaison TLS. Il y aura une nouvelle clé d'écriture client, clé d'écriture serveur, etc., mais ces 4 types de clés seront créés à chaque fois.