|
|
 |
| 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.
|
La première étape est une transposition fixe (standard) des 64 bits à
crypter.
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.
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.
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".
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 |
|
|
|
|
|
|
 |
|