Vous êtes ici : Accueil Glossaire / Cryptage

Bienvenue dans le monde du cryptage

Méthode de cryptage

¨     Les méthodes de cryptographie actuelle

 Le chiffrement actuel
Le chiffrement est l'action de transformer une information claire, compréhensible de tout le monde, en une information chiffrée, incompréhensible. Le chiffrement est toujours associé au déchiffrement, l'action inverse. Pour ce faire, le chiffrement est opéré avec un algorithme à clé publique ou avec un algorithme à clé privée.

Les algorithmes à clé privé ou à clé secrète
Les algorithmes à clé privée sont aussi appelés algorithmes symétriques. En effet, lorsque l'on crypte une information à l'aide d'un algorithme symétrique avec une clé secrète, le destinataire utilisera la même clé secrète pour décrypter. Il est donc nécessaire que les deux interlocuteurs se soient mis d'accord sur une clé privée auparavant, par courrier, par téléphone ou lors d'un entretien privé. La cryptographie à clé publique, quant à elle, a été inventée par Whitfield Diffie et Martin Hetlman en 1976 pour éviter ce problème d'échange de clé secrète préalable.

Les algorithmes à clé publique
En effet, les algorithmes à clé publique sont aussi appelés algorithmes asymétriques. C'est à dire que pour crypter un message, on utilise la clé publique (connue de tous) du destinataire, qui sera à priori le seul à pouvoir le décrypter à l'aide de sa clé privée (connue de lui seul).

La préparation au cryptage
Une information de type texte, ou n'importe quel autre type d'information a besoin d'être codée avant d'être cryptée à l'aide d'un algorithme à clé publique ou privée. En d'autres termes, il faut fixer une correspondance entre une information et un nombre, puisque les algorithmes à clé (publique ou privée) ne peuvent crypter que des nombres. Le problème se résout facilement, puisque la plupart du temps, ce type de cryptographie est essentiellement utilisé sur des machines. Et comme de toute façon les informations sur une machine sont une suite de nombres, le problème est déjà très simplifié.

La préparation au cryptage avec DES
L'algorithme DES ne crypte que des blocs de 64 bits. Il nous suffira donc de diviser nos informations à crypter en blocs de 8 octets.

La préparation au cryptage avec RSA
L'algorithme RSA, lui, ne crypte que des nombres inférieurs au nombre n qui est un élément de sa clé publique. On pourra utiliser le standard ASCII, plus communément appelé "table ASCII" qui code chaque octet (ou chaque caractère) de 000 à 255, pour transformer partie par partie l'information à crypter en nombres (tous inférieurs à n).

 
DES et triple DES

¨     L'algorithme DES

  Histoire de DES
D.E.S., pour Data Encryption Standard ("standard de cryptage de données"), est un algorithme très répandu à clé privée crée à l'origine par IBM en 1977. Il sert à la cryptographie et l'authentification de données. Il a été jugé si difficile à percer par le gouvernement des Etats-Unis qu'il a été adopté par le ministère de la défense des Etats-Unis qui a contrôlé depuis lors son exportation. DES a été pensé par les chercheurs d'IBM pour satisfaire la demande des banques. Il a été conçu pour être implémenté directement en machine. En effet puisque les étapes de l'algorithme étaient simples, mais nombreuses, il était possible à IBM de créer des processeurs dédiés, capables de crypter et de décrypter rapidement des données avec l'algorithme DES. Cet algorithme a donc été étudié intensivement depuis les 15 dernières années et est devenu l'algorithme le mieux connu et le plus utilisé dans le monde à ce jour.
Bien que DES soit très sûr, certaines entreprises préfèrent utiliser le "triple-DES". Le triple-DES
n'est rien d'autre que l'algorithme DES appliqué trois fois, avec trois clés privées différentes.

 

Description de l'algorithme DES

L'algorithme DES est un algorithme de cryptographie en bloc. En pratique, il sert à crypter une série de blocs de 64 bits (8 octets).
Le cryptage avec l'algorithme DES
DES utilise une clé secrète de 56 bits, qu'il transforme en 16 "sous-clés" de 48 bits chacune. Le
cryptage se déroule sur 19 étapes.

  • 1ère étape.

La première étape est une transposition fixe (standard) des 64 bits à crypter.

  • 16 étapes suivantes

Les 16 étapes suivantes peuvent être divisées en 2 "sous-étapes" chacune.  

Dans un premier temps, le bloc de 64 bits est découpé en 2x32 bits, et une substitution est effectuée entre ces deux blocs, en fait, ces deux blocs seront tout simplement échangés l'un avec l'autre.
 Dans un second temps, le bloc de 32 bits ayant le poids le plus fort (le bloc qui va du bit n°32 au bit n°63) subira une transposition contrôlée par la sous-clé correspondant à l'étape en cours.

  • Etape 18 et 19

Les deux dernières étapes sont deux transpositions.

 

Le décryptage avec l'algorithme DES
Pour décrypter un document auparavant crypté avec DES, il suffit d'effectuer l'algorithme à
l'envers avec la bonne clé. En effet, il n'est pas nécessaire d'utiliser un algorithme différent ou une clé différente puisque DES est comme nous l'avons vu un algorithme symétrique. Il est donc totalement et facilement réversible, si l'on possède la clé secrète.

Les modes opérationnels utilisés avec DES
Comme nous l'avons vu, l'algorithme DES ne permet que de crypter des blocs de 64 bits. Pour
crypter ou décrypter un document complet, il faut donc utiliser DES en série dans un "mode opérationnel". Il existe beaucoup de modes opérationnels, nous n'allons voir que le mode ECB et le mode CBC.

  • Le mode opérationnel ECB

ECB signifie Electronic Code Book ("catalogue électronique de codes"). Dans ce mode, on découpe le document à crypter ou à décrypter en blocs de 64 bits qu'on crypte les uns indépendamment des autres. Puisque, à chaque bloc en clair correspond un bloc crypté, pour une clé donnée, cela peut faire penser à un "catalogue de codes".

  • Le mode opérationnel CBC

CBC signifie Chain Block Cipher ("Cryptogramme à blocs chaînés"). Comme nous l'avons vu précédemment, le mode opérationnel ECB ne protège pas contre la présence de blocs redondants, puisqu'ils sont cryptés indépendamment les uns des autres. La seconde faiblesse est qu'un bloc en clair, hors contexte, et codé toujours avec la même clé, produira toujours le même bloc crypté.
Le CBC lui, répond à ces deux problèmes. Pour ce faire, avant de crypter un bloc en clair, on va effectuer un "ou-exclusif" entre ce bloc en clair et le bloc précédemment crypté. Cela nous donnera un nouveau bloc en clair que l'on cryptera.
En plus de posséder une clé secrète en commun, les deux interlocuteurs doivent dorénavant se mettre d'accord sur un bloc de 64 bits de départ qu'on appellera "vecteur de départ", ou "vecteur
initial".

 

 

RSA (Rivest-Shamir-Adleman)

¨     L'algorithme RSA

Histoire de RSA
R.S.A. signifie Rivest-Shamir-Adleman, en l'honneur de ses inventeurs : Ron Rivest, Adi Shamir et Leonard Adleman qui l'ont inventé en 1977. Le brevet de cet algorithme appartient à la société américaine RSA Data Security, qui fait maintenant partie de Security Dynamics et aux Public Key Parteners, (PKP à Sunnyvale, Californie, Etats-Unis) qui possèdent les droits en général sur les algorithmes à clé publique. RSA est un algorithme à clé publique qui sert aussi bien à la cryptographie de documents, qu'à l'authentification. Grâce au fait qu'il était à clé publique, et au fait qu'il était très sûr, l'algorithme RSA est devenu un standard de facto dans le monde.

Description de l'algorithme RSA

Tout le principe de RSA repose sur le fait (qui n'a toujours pas été prouvé !) qu'il est très difficile et très long de factoriser un très grand nombre en deux facteurs premiers.

La génération des clés publiques et privées

Pour commencer, il nous faut choisir deux nombres premiers p et q très grands (de l'ordre de 100 chiffres). Il y a des algorithmes de génération aléatoire de nombres premiers qui existent. Ensuite on trouve le nombre n facilement : n=p.q . Ensuite il nous faut trouver un entier e compris entre 2 et .(n). .(n) est la fonction indicatrice d'Euler, c'est en fait le nombre d'entiers inférieurs à n qui sont premiers avec lui, on a .(n)=(p-1)(q-1) . .(n) se calcule très facilement ici, puisque l'on a p et q. Maintenant que l'on a n et e, nous sommes prêts à crypter. Les nombres n et e forment ici notre clé publique que l'on notera [n,e].

Il nous faut calculer le nombre d qui sera nécessaire au décryptage. Selon la théorie de RSA, nous devons avoir d tel que (e.d-1) soit divisible par .(n). Pour trouver d nous devons alors résoudre l'équation diophantienne d+k..(n)=1 à l'aide de l'arithmétique. Comme e et .(n) sont premiers entre eux, le théorème de Bezout prouve qu'il existe d et k dans Z tel que e.d+k..(n)=1

On pourra résoudre l'équation grâce à l'algorithme d'Euclide. Après résolution, on arrivera à une classe de solution de la forme d=r..(n)+d0 (où r appartient à Z) puisque e a été choisi premier avec .(n). L'ensemble des solutions d à l'équation diophantienne e.d+k..(n)=1 est une classe de congruence modulo .(n), il y a donc une unique solution d comprise entre 2 et .(n), donc d=d0.

Nous voilà prêts à décrypter. Le nombre d est notre clé privée.
Nous pouvons à présent rendre publique notre clé publique
[n,e] et garder secrète notre clé privée. Quant aux nombres p, q, et .(n), on doit, soit les conserver secrets, soit les détruire car ils ne serviront plus.

Le cryptage avec l'algorithme RSA
Pour crypter un document que l'on aura auparavant transformé en un nombre m inférieur à n il nous faut effectuer l'opération c=me mod n . c est ici notre nombre n une fois crypté. La première opération peut être très longue à effectuer à la main, l'utilisation d'un ordinateur et d'un programme spécial est fortement conseillée.

Le décryptage avec l'algorithme RSA
Pour décrypter un document c, il nous faut effectuer l'opération m=cd mod n . m sera bel et bien notre nombre décrypté, qu'il ne restera plus qu'à retransformer en texte ou en autre chose. La preuve de cette algorithme de chiffrement est faite avec le théorème de Fermat et le théorème chinois des restes connus depuis quelques siècles !

 

L'authentification de documents

L'authentification d'un document, c'est le fait d'être sûr de l'identité de l'auteur d'un document.
Cette authentification peut s'avérer indispensable pour la justice lors d'un litige sur un contrat par
exemple. L'authentification se fait toujours sur un contrat papier par une signature manuscrite, à priori infalsifiable. Le problème de l'authentification d'un document "informatique", est l'impossibilité physique d'y apposer une signature manuscrite à sa fin. On va donc y apposer une signature "digitale". Pour ne pas être falsifiable, on va crypter cette signature par exemple avec l'algorithme RSA.

Les signatures digitales avec RSA

Pour bien prouver qu'un document a été composé par nous, il nous suffira de crypter par exemple notre Nom, Prénom et fonction ou n'importe quoi d'autre, avec notre clé privée (en théorie connue de nous seul). Ainsi, quiconque qui voudra vérifier l'auteur de ce document, n'aura qu'à utiliser notre clé publique pour le décryptage. Et si le décryptage fonctionne, cela veut bien dire que la signature a été "forgée" avec notre clé privée.

Tableau récapitulatif de la gestion des clés avec RSA

Pour ... on utilise ... de qui ?
Envoyer un document crypté à quelqu'un la clé publique du destinataire
Envoyer une signature cryptée à quelqu'un la clé privée de l'expéditeur
Décrypter un document la clé privée du destinataire
Décrypter une signature la clé publique de l'expéditeur

 

Cours de Cryptologie

Consultant en sécurité informatique