Chiffrement RSA

Chiffrement

Le système RSA est un système de chiffrement asymétrique implémenté en 1978 et basé sur l'utilisation de paires de clés publiques et privées.
Le nom est formé des initiales de ses trois inventeurs, les cryptologues Ronald Rivest, Adi Shamir et Leonard Adleman, travaillant alors au MIT.

Le chiffrement.

On notera respectivement \(C^{\text{pub}}\) et \(C^{\text{priv}}\) les clés publiques et privées. L'une permet de chiffrer le message \(m\) et l'autre permet de le déchiffrer.

La façon dont sont générées les clés est complexe et repose sur des théorèmes d'arithmétique bien connus, comme le petit théorème de Fermat étudié en option mathématiques expertes. Retenez que les deux clés sont liées de la façon suivante :

  • \(C^{\text{pub}}(C^{\text{priv}}(m)) = C^{\text{priv}}(C^{\text{pub}}(m)) = m\)
  • connaissant \(C^{\text{pub}}\) il est impossible de trouver \(C^{\text{priv}}\) et réciproquement
  • il est impossible de trouver \(m\) en connaissant \(C^{\text{pub}}(m)\) ou \(C^{\text{priv}}(m)\)

En utilisant ces deux clés, Alice va pouvoir envoyer un message à Bob de manière chiffrée :

Étape 1 : Bob fabrique deux clés :

  • sa clé publique \(C^\text{pub}_\text{Bob}\), qu'il envoie à Alice,
  • et sa clé privée \(C^{\text{priv}}_\text{Bob}\), qu'il ne divulgue à personne.
RSA étape 1

Étape 2 : Alice utilise la clé publique de Bob pour chiffrer son message \(m\) puis envoie ce message \(C^{\text{pub}}_\text{Bob}(m)\) à Bob.

RSA étape 2

Étape 3 : Bob utilise sa clé privée pour déchiffrer le message d'Alice : $$C^\text{priv}_\text{Bob}(C^\text{pub}_\text{Bob}(m))=m$$.

RSA étape 3

Ainsi, si Ève intercepte le message d'Alice à l'étape 2, elle ne pourra rien en faire car elle ne connaît pas la clé privée de Bob : la communication est donc sécurisée.

RSA étape 2 man in the middle

Vous remarquerez que si Bob veut communiquer avec Alice, il suffit à cette dernière de générer une clé publique et une clé privée, et Bob n'a plus qu'à utiliser la clé publique d'Alice pour chiffrer ses messages et seule Alice pourra les déchiffrer avec sa clé privée.

remarque

Pour la petite histoire, Rivest, Shamir et Adleman voulaient démontrer qu'il était impossible de trouver un algorithme implémentant le protocole décrit ci-dessus. Ils ont donc démontré l'inverse de ce qu'ils souhaitaient au départ. En réalité, c'est le mathématicien et cryptographe britannique Clifford Cocks qui aurait découvert "RSA" trois ans auparavant mais son travail était classé secret et n'a été rendu public qu'en 1997.

En réalité, le chiffrement RSA demande des calculs assez lourds pour chiffrer et déchiffrer des messages. Ces calculs ralentissent les échanges, ce qui le rend en pratique difficilement utilisable lorsque les données à échanger sont volumineuses (par exemple, de la vidéo en temps réel).

Mais on peut très bien l'utiliser avec le même objectif que l'échange de clé de Diffie-Hellmann : on utilise RSA pour s'échanger une clé symétrique de manière sûre et ensuite le reste des communications peut se poursuivre avec un chiffrement symétrique beaucoup plus efficace, comme AES. Pour cela, Alice choisit comme message \(m\) une clé symétrique (AES), la chiffre à l'étape 2 avec la clé publique de Bob et la lui transmet de manière sécurisée. Bob la déchiffre à l'étape 3 avec sa clé privée. Alice et Bob ont alors à disposition une clé symétrique leur permettant de poursuivre les échanges avec un chiffrement symétrique.

L'authentification

Le chiffrement RSA est l'un des plus utilisé actuellement car, en plus d'assurer des communications sécurisées, il permet également de gérer l'authentification des participants.

Attaque man in the middle

Le protocole d'échange de clés de Diffie-Hellmann, ainsi que la version présentée de RSA dans le paragraphe précédent ne permettent pas d'être sûr de l'identité des participants à la communication.

En effet, si Ève est malveillante, elle peut se faire passer pour Bob auprès d'Alice (et aussi pour Alice auprès de Bob si elle le souhaite). Il existe plusieurs manières pour un attaquant de se faire passer pour l'un des correspondants (phishing, imposture ARP, DNS Poisoning, analyse de traffic, déni de service, etc.) mais nous n'en parlerons pas ici.

On se retrouve alors dans la situation où Ève se situe entre Alice et Bob et aucun des deux ne peut savoir que le canal de communication a été compromis. On parle d'attaque de l'homme au milieu.

RSA man in the middle

Une façon de contourner ce problème s'appelle l'authentification qui assure que chacun s'adresse à la bonne personne.

Certificats et autorités de certification

Pour prouver son identité, un participant présente ce qu'on appelle un certificat qui est délivré par une autorité de certification, qui est une entité en laquelle tous les participants font confiance (en pratique ce sont des entreprises spécialisées, des états, des associations à but non lucratif). Ces tiers de confiance produisent des certificats numériques à partir des clés RSA publiques et privées des participants de la manière suivante :

Étape 1 : Bob demande un certificat à une autorité de certification (AC), qui :

  • vérifie qu'il s'agit bien de Bob (on ne détaille pas ici les manières de procéder)
  • chiffre la clé publique de Bob avec sa clé privée : \(s = C^{\text{priv}}_{\text{AC}}(C^{\text{pub}}_\text{Bob})\)

Le fichier \(s\) obtenu s'appelle le certificat, que Bob peut communiquer à ses interlocuteurs pour justifier qu'il s'agit bien de lui.

Étape 2 : Alice veut communiquer avec Bob, elle le contacte et Bob lui fourni :

  • sa clé publique \(C^{\text{pub}}_\text{Bob}\)
  • le certificat \(s\)

Étape 3 : Alice récupère la clé publique de AC, en qui elle a aussi confiance, et l'applique au certificat : $$C^{\text{pub}}_\text{AC}(s)=\underbrace{C^{\text{pub}}_\text{AC}(C^{\text{priv}}_\text{AC}}_{\text{s'annulent}}(C^{\text{pub}}_\text{Bob}))=C^{\text{pub}}_\text{Bob}$$

Si le résultat du calcul précédent correspond à la clé publique que Bob lui a transmise, alors Alice est certaine que Bob est bien l'expéditeur du message précédent.

Étape 4 : Alice peut alors initialiser la communication avec Bob en chiffrant une clé symétrique avec la clé publique de Bob ou en utilisant le protocole de Diffie-Hellmann pour se mettre d'accord sur une clé partagée.

Remarque

Lorsque l'autorité de certification chiffre la clé publique de Bob avec sa clé privée, on dit qu'elle signe la clé publique de Bob, d'où le nom \(s\).
Ce mécanisme est aussi utilisé pour les signatures électroniques.