La Cryptologie actuelle

1 Les besoins actuels en cryptographie

De tous temps, les services secrets ont utilisé toutes sortes de codages et de moyens cryptographiques pour communiquer entre agents et gouvernements, de telle sorte que les "ennemis" ne puissent pas comprendre les informations échangées. La cryptologie a alors évolué dans ces milieux fermés qu'étaient les gouvernements, les services secrets et les armées. Ainsi, très peu de gens, voire personne n'utilisait la cryptographie à des fins personnelles. C'est pourquoi, pendant tant d'années, la cryptologie est restée une science discrète.

De nos jours en revanche, il y a de plus en plus d'informations qui doivent rester secrètes ou confidentielles. En effet, les informations échangées par les banques ou un mot de passe ne doivent pas être divulgués et personne ne doit pouvoir les déduire. C'est pourquoi ce genre d'informations est crypté. L'algorithme de cryptographie DES par exemple, est utilisé massivement par les banques pour garantir la sécurité et la confidentialité des données circulant sur les réseaux bancaires. Le système d'exploitation Unix, lui aussi, utilise ce procédé pour crypter ses mots de passe.

Finalement, la cryptologie est de plus en plus utilisée sur le réseau mondial Internet. Avec l'apparition du commerce en ligne, c'est-à-dire la possibilité de commander des produits directement sur Internet, la cryptographie est devenue nécessaire. En effet, si les différents ordinateurs branchés sur Internet sont sécurisés par des mots de passe, c'est-à-dire à priori inaccessibles par un ennemi, les transactions de données entre deux ordinateurs distants via Internet sont, quant à elles, facilement interceptibles. C'est pourquoi lorsque l'on commande un produit sur Internet en payant avec notre carte bancaire, il est beaucoup plus sûr d'envoyer notre numéro de carte bancaire une fois crypté, celui-ci ne pourra à priori, être décrypté que par la société à laquelle on a commandé ce produit.

C'est pour ces mêmes raisons d'insécurité sur Internet, et par un besoin humain d'intimité que la cryptographie à des fins purement personnelles s'est développée sur le réseau : pour la messagerie électronique. En effet lorsque l'on envoie un message électronique par Internet, on peut préférer qu'il reste discret vis à vis de la communauté Internet, voire qu'il ne soit compréhensible que par le destinataire du message. En d'autres termes, la cryptographie peut servir si l'on veut envoyer un message confidentiel, ou un message intime à quelqu'un. Cela est aujourd'hui possible grâce à la formidable distribution de logiciels gratuits permettant d'utiliser de la cryptographie "forte" très facilement. C'est le cas du logiciel PGP (Pretty Good Privacy = "assez bonne confidentialité") qui est distribué gratuitement sur Internet, développé par Philip R. Zimmerman seul, en 1991. Ce sont pour toutes ces raisons que tout d'abord la cryptologie s'est énormément renforcée, et que finalement elle est passé d'un monde fermé comme les armées ou les services secrets à un monde ouvert à tout utilisateur.

2 Les méthodes de cryptographie actuelle

2.1 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.

2.2 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.

2.3 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).

2.4 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é.

2.4.1 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.

2.4.2 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).

3 L'algorithme DES

3.1 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.

3.2 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).

3.2.1 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.

3.2.2 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.

3.2.3 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.

3.2.3.1 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".

3.2.3.2 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".

4 L'algorithme RSA

4.1 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.

4.2 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.

4.2.1 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=n.q . Ensuite il nous faut trouver un entier e compris entre 2 et j(n). j(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 j(n)=(p-1)(q-1) . j(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 j(n). Pour trouver d nous devons alors résoudre l'équation diophantienne d+k.j(n)=1 à l'aide de l'arithmétique. Comme e et j(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.j(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.j(n)+d0 (où r appartient à Z) puisque e a été choisi premier avec j(n). L'ensemble des solutions d à l'équation diophantienne e.d+k.j(n)=1 est une classe de congruence modulo j(n), il y a donc une unique solution d comprise entre 2 et j(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 j(n), on doit, soit les conserver secrets, soit les détruire car ils ne serviront plus.

4.2.2 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.

4.2.3 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 !

5 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.

5.1 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.

5.2 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

6 La cryptanalyse actuelle

La cryptanalyse est l'étude des procédés de décryptage. Ou, plus généralement la science qui étudie la sécurité des procédés cryptographiques. Le cryptologiste est toujours cryptanalyste puisque qu'il doit en créant un algorithme de cryptographie s'assurer de sa sécurité, et pour ce faire, il a besoin de la cryptanalyse. La cryptanalyse tente de tester la résistance d'un algorithme de cryptographie en simulant différents type "d'attaques", qu'un ennemi pourrait effectuer si il interceptait le document crypté. Un ennemi, en cryptologie, est une personne qui tentera, une fois le document crypté intercepté d'opérer une attaque passive, ou une attaque active.

6.1 Les attaques passives

Faire une attaque passive est le fait de tenter de décrypter un document dans le but d'en prendre connaissance uniquement, sans l'altérer.

6.2 Les attaques actives

Faire une attaque active est le fait de tenter de décrypter un document dans le but de pouvoir en prendre connaissance d'une part, et d'autre part dans le but de le modifier, ou d'en modifier la signature pour le falsifier, en général dans son intérêt.

6.3 L'attaque d'un document crypté avec DES

La seule méthode connue à ce jour pour décrypter un message crypté avec DES, est la méthode dite "brute" qui consiste à tester la totalité des différentes clés de 56 bits possibles. Le problème majeur est qu'il y en a 2^56, soit exactement 72 057 595 037 927 936 différentes ! Cela peut prendre un temps considérable. Cependant, les services secrets peuvent avoir les moyens matériels de briser de tels codes, il leur suffit d'avoir une ou des machines extrêmement puissantes, ce qui pourrait tout à fait être possible pour des nations importantes...

6.4 L'attaque d'un document crypté avec RSA

Comme on l'a vu précédemment, la résistance d'un document crypté avec l'algorithme RSA s'appuie sur le fait qu'il est extrêmement difficile de factoriser en deux facteurs premiers un très grand nombre. L'attaque va donc consister à utiliser des algorithmes de factorisation les plus rapides, et les plus puissants possibles, pour factoriser le nombre n extrêmement grand de la clé publique visée. L'attaque d'un tel document et encore beaucoup plus long (pour une taille du nombre n raisonnable) que l'attaque d'un document crypté avec DES. C'est pourquoi, de grandes recherches en mathématiques sur des algorithmes de factorisation de plus en plus rapides sont effectuées partout dans le monde. La méthode RSA, réputée pour sa quasi-invulnérabilité (quand elle est utilisée avec une très grande clé) pourrait s'écrouler si quelqu'un parvenait un jour à écrire un tel algorithme. Car RSA repose sur un principe qui a l'air évident mais qui n'a jamais été prouvé ! Actuellement, il n'y a aucun algorithme/méthode connu, capable de factoriser dans un temps convenable une très grande clé. Avec les algorithmes de factorisation actuels, il faudrait au briseur de code une puissance beaucoup plus importante pour arriver à ses fins. Mais avec une puissance de calcul plus importante, l'utilisateur peut aussi agrandir la taille de la clé de un bit ou deux, par exemple. Or l'augmentation de la taille de la clé de un/deux bits signifie une multiplication par deux/quatre le nombre maximum que peut être la clé ! Par exemple RSA Labs a mis sur le marché il y a quelques mois un processeur dédié à la méthode RSA comportant des instructions dites "de haut niveau" directement implémentées sur le processeur, comme une instruction permettant de calculer le modulo d'un grand nombre avec un autre grand nombre rapidement, et une instruction permettant de factoriser un grand nombre. Ce processeur factorise en effet beaucoup plus vite qu'un ordinateur normal, puisque sur l'un, l'algorithme de factorisation est implémenté en hardware alors que sur l'autre, il est implémenté en software. On peut remarquer que ce processeur avantage plus ou moins également le crypteur que le briseur de code.


F. MARIE

(partie suivante ...)