Ce chapitre décrit d'un point de vue technique les solutions évoquées au chapitre précédent. Le lecteur pressé peut s'en dispenser et aborder directement les conclusions.
Les procédés de cryptages se divisent en deux grandes catégories selon leurs principes, mais aussi surtout selon leurs usages. On a d'un coté les algorithmes de cryptages par blocs, d'un autre les algorithmes asymétriques.
Un « cryptage par blocs (block cipher en anglais) » est un algorithme qui transforme un bloc de données de taille fixe (en général un mot de 64 bits) en un bloc de même longueur. Cette propriété est essentielle pour des applications réclamant une bande passante garantie.
Les algorithmes de cryptage par blocs sont généralement des algorithmes « symétriques », ce qui signifie que le cryptage et le décryptage s'effectuent par la même fonction.
L'algorithme symétrique « Data Encryption Standard » a été élaboré chez IBM, puis fut adopté comme norme de cryptage par l'administration américaine en 1977. C'est à ce jour l'algorithme de cryptage le plus répandu. Il est employé par exemple pour crypter la transmission des NIP depuis les distributeurs bancaires.
Une foule de procédés de cryptages est apparue ces dernières années, qui ont chacun leurs avantages et leurs spécialités. En voici quelque-uns:
Les cryptages par blocs sont réalisés selon des « modes »
dépendant des applications. Dans un flot de données, on ne se
contente généralement pas de crypter les blocs de données
un par un. On utilise souvent les données d'un bloc pour modifier le
suivant. On peut par exemple appliquer un OU exclusif entre les deux.
Cela
complique nettement la tâche d'un éventuel espion, car même
s'il trouve la clef, il doit remonter au départ de l'échange pour
le décrypter.
Référence: Les modes normalisés de DES sont décrits dans [NIST 1993].
Un cryptage asymétrique est un algorithme pour lequel, cryptage et décryptages
sont des fonctions différentes.
Le plus souvent, il s'agit de la même
opération, qui fait intervenir deux clefs différentes.
Les procédés du type DES sont également appelés
procédés « à clef privée » car la
confidentialité des informations est conditionnée au secret qui
entoure la clef de cryptage.
L'inconvénient du procédé
symétrique est que la clef doit être communiquée à
son interlocuteur dès que l'on souhaite transmettre un message crypté.
Il faut donc disposer d'un canal très sur pour la transmission de la
clef. Il faut de plus, changer de clef à chaque nouvel échange.
Les procédés asymétriques sont, par opposition, appelés « à clef publique » car ils sont conçu pour que l'une des deux clefs (la clef « publique ») puisse être révélée sans compromettre l'autre (la clef « secrète »). La clef secrète n'a jamais besoin d'être communiquée par son détenteur. La même clef peut par conséquent être employée pendant longtemps (les spécialistes conseillent d'en changer tous les deux ans).
Comparaison de performance entre un représentant de chaque type
d'algorithme, RSA et DES:
Source: [RSA
]
Au fur des progrès des algorithmes et des composants, la performance de DES progressera plus rapidement que celle de RSA, car DES se compose d'opérations plus purement informatiques.
Du fait de ce rapport de performances, les échanges de données de tous les protocoles de communication sécurisés se feront selon des cryptages symétriques par blocs tels que DES. L'usage des algorithmes asymétriques sera ponctuel, on ne les emploiera que pour transmettre des données courtes (de quelques octets) tels que les clefs privées et les signatures électroniques.
RSA est le plus célèbre et le plus répandu des algorithmes asymétriques. Il a été inventé en 1977 par Ron Rivest, Adi Shamir et Leonard Adleman.
Étant donnés p et
q deux nombres premiers,
n=pq.
On choisit les entiers d et
e tels que : e est
premier avec (p-1)(q-1),
e < n et
(de-1) est multiple de
(p-1)(q-1).
Le cryptage d'un nombre m inférieur à
n est le nombre c=m^e mod n. On retrouve
m par la formule soeur :
m=c^d mod n.
Les couples (n, e) et
(n, d) sont respectivement la clef publique et la
clef privée.
La donnée de n donne théoriquement
accès à
p et q qui sont
simplement les facteurs premiers de n.
Il se
trouve cependant que la factorisation est réputée irréalisable,
quand n est un très grand nombre (par exemple
2^512). Précisons toutefois que la difficulté de la factorisation
n'est pas démontrée à ce jour. La complexité de
cette opération n'est qu'un fait empirique.
Quand on parle de la taille de la clef de RSA, il s'agit de la taille de
n. On voit que c'est elle qui conditionne la
fiabilité du cryptage.
En pratique, on utilise une clef publique (d)
courte et une clef privée (e) longue, ce qui
rend le décryptage plus rapide que le cryptage.
On a vu que la fiabilité de RSA repose sur le problème de la
factorisation des grands nombres. En choisissant un autre problème mathématique
réputé difficile, on peut créer un autre algorithme de
cryptage asymétrique.
L'autre méthode populaire est basée sur le problème du
logarithme discret:
Soit G un groupe d'ordre t, et g un générateur de G. Pour y appartenant à G, il s'agit de trouver x, tel que y = g·x (c'est à dire la composition de g, x fois par lui-même).
L'algorithme ElGamal est basé sur ce problème, il a
donné naissance au DSA / DSS (Digital Signature Algorithm / System
) sélectionné par les agences gouvernementales américaines
NIST et NSA.
La fiabilité
des algorithmes basés sur ce problème dépend de la taille
du nombre t, l'ordre du groupe.
De nombreux
algorithmes asymétriques font chaque année leur apparition lors
des conférences Crypto, Eurocrypt
et Asiacrypt.
Références: [ElGamal 1985] et [NIST 1992].
Les algorithmes de cryptage sont considérés par les autorités américaines comme des technologies sensibles et font l'objet de restrictions à l'exportation dont il est difficile de savoir si elles seront maintenues. Les logiques commerciales et stratégiques s'opposent dans un débat qui est loin de se clore. Il est cependant certain que les cryptages employés dans les applications commerciales seront limités par l'emploi de clefs courtes pour empêcher une opacité totale des échanges.
Les agences gouvernementales américaines (la NSA et le FBI) établissent un seuil à ce qu'elles appellent les cryptages « forts ». Le seuil est actuellement fixé par la formule 40/512 qui indique une longueur maximum de 40 bits pour les clefs de cryptage symétrique et de 512 bits pour le cryptage asymétrique. Ce seuil est supposé correspondre aux puissances de calcul dont dispose la NSA, mais il semble insuffisant à bien des spécialistes même pour des applications commerciales. Ils recommandent plutôt un niveau de 80/768.
Les systèmes réalisant des cryptages « forts »
peuvent néanmoins être diffusés à condition d'être
intégrées à certains types d'applications, parmi lesquelles
les applications strictement financières.
Les producteurs américains
de logiciels pourront donc diffuser mondialement des produits intégrant
ces technologies. Ils en auront d'ailleurs l'exclusivité.
La
compagnie CyberCash
a ouvert la voie en obtenant le droit d'exporter son système qui
incorpore un cryptage RSA à 768 bits.
Le concept de signature électronique a été introduit
par Diffie et Hellman en 1992.
Si le détenteur de clefs asymétriques,
publie une de ses clefs (la clef asymétrique publique) et s'engage à
garder l'autre secrète (la clef asymétrique secrète) - ce
qui lui est possible car il n'a jamais besoin de la révéler - le
cryptage d'un document électronique réalisé par cette clef
asymétrique privée constitue une signature juridiquement
acceptable de ce document.
On authentifie le document en le décryptant
par la clef asymétrique publique. La probabilité d'erreur est
1/p (le plus petit facteur premier de
n). Avec des clefs sur 768 bits, celle-ci est
infime.
Le détenteur d'une clef asymétrique privée peut être
tenu pour responsable de tout cryptage réalisé avec elle : Soit il
en est l'auteur, soit il a commis une imprudence. Dans un cas comme dans
l'autre, il en assume les conséquences. C'est le principe du « non désaveu
» (non-repudiation en anglais).
A contrario, un désaveu
est toujours possible quand la signature n'est pas secrète, comme c'est
le cas avec les numéros de cartes de crédit et même avec les
signatures manuscrites.
La signature électronique d'un document n'est généralement
pas le cryptage de tout le document (qui peut être long), mais d'une forme
abrégée du message, de taille fixe, appelée «
empreinte électronique (digest en anglais) ».
Cette
empreinte est réalisée par une fonction de hachage à sens
unique.
Plusieurs fonctions de hachage sont couramment employées. Les qualités demandées à une fonction de hachage pour réaliser des empreintes sont:
Deux fonctions parmi les plus populaires:
Référence: [Preneel_1993]
La certification d'un document électronique signé débute
par l'examen du « certificat » de l'auteur présumé du
document. Le certificat est un document d'identité électronique
attestant du lien entre une identité et une clef publique.
Un
certificat mentionne au minimum l'identité en question et la clef
publique qui lui est associée. Il peut également mentionner une
date d'expiration et un numéro de série.
Le certificat est signé électroniquement par l'autorité émettrice, qu'on appelle aussi « autorité certifiante » (en anglais « Certifying Authority (CA) »). Cette autorité est un organisme ayant un intérêt quelconque à se porter garant de certaines identités.
Pour vérifier la clef d'un interlocuteur, on va consulter son
certificat, puis vérifier la signature du certificat. Vérifier
cette signature c'est faire usage de la clef publique de l'autorité émettrice
du certificat. Si cette clef n'est pas notoire, on consultera le certificat de
l'autorité émettrice et ainsi de suite jusqu'à aboutir à
un certificat portant la signature d'une autorité digne de foi et dont la
clef publique est notoire.
Pour être crédible, il est donc nécessaire
de joindre à tout document signé, autant de certificats que nécessaire
pour atteindre une autorité bien connue de son correspondant. Exemples:
Le format normalisé CCITT X.509 dans sa version 3 s'est imposé pour la confection de certificats. Ce format est suffisamment libre pour qu'on puisse y incorporer tout type de renseignements. Dans les standards « Public-Key Cryptography Standards (PKCS) » de RSA, et « Privacy-Enhanced Mail (PEM) » d'Internet, chaque signature mentionne le numéro de série du certificat et le nom de l'émetteur. On peut donc retrouver le certificat, puis remonter la chaîne de certification.
La fabrication d'un certificat, se fait à l'initiative de l'intéressé.
Celui-ci fabrique une paire de clefs asymétriques et transmet la clef
publique à l'autorité certifiante. L'autorité s'assure par
un moyen quelconque de l'authenticité de l'identité qui lui
transmet cette clef, et produit en retour un certificat.
Comme tout
document d'identité, les certificats n'ont ni plus ni moins de crédibilité
que l'autorité émettrice. Cette crédibilité tient en
particulier aux méthodes qu'emploie l'autorité pour s'assurer de
l'identité du producteur de la clef et des protections dont elle entoure
sa propre signature (sa clef secrète). La règle veut qu'une
autorité certifiante publie ses procédures d'identification. Elle
peut par exemple ne délivrer de certificat qu'en main propre et sur présentation
d'une pièce d'identité.
Les protections dont on peut entourer
la clef secrète d'une autorité certifiantes n'ont pas de limites.
On s'arrange généralement pour que personne ne l'ait un jour sous
la main. On la découpe alors en tranches que l'on confie aux bons soins
de plus systèmes indépendants (des cartes à puce par
exemple).
Références: Le site de la compagnie VeriSign, Inc. qui propose une gamme de produits reliés aux certificats électroniques. On trouve des protocoles d'émission de certificats dans le System 7.5 de Apple .
Avant d'entamer un échange sécurisé sur un réseau,
on va s'assurer une bonne fois de l'identité de son correspondant et
partager ensuite avec lui une clef symétrique (privée) qui
permettra de crypter par blocs la suite de nos échanges. Les deux se font
dans la même phase, dite d'identification (authentification
en anglais).
Comme mentionné au § 6 «
problèmes à résoudre
», deux méthodes sont possibles pour identifier un
interlocuteur sur un réseau:
On décrit ci-dessous un schéma d'identification de base. Tous les schémas employés sont des variantes de celui-ci.
Partant de deux interlocuteurs (Alice et Bob) qui ont chacun un couple de clefs asymétriques, attestés par des certificats qu'ils se sont échangés.
Après cet échange, Bob et Alice peuvent communiquer secrètement par des messages cryptés selon c.
Le premier système a implanter une identification des participants à
un réseau ouvert fut Kerberos.
Il est d'ailleurs le seul qui soit d'usage courant aujourd'hui. Kerberos fut développé
par l'équipe du projet Athena au MIT, en se basant sur le
protocole de Needham et
Shroeder à clef secrète. Ce protocole, un peu ancien (il date
de 1978) proposait une méthode d'identification basée sur la présence
d'un service central de distribution de clefs, lequel distribue des clefs secrètes
à ses clients.
Ce service reconnaît l'identité des
clients par des méthodes fiables (càd. pas des mots de passe). Il
maintient donc une base de données des identités.
Kerberos a été conçu pour permettre de gérer l'accès à des ressources par des machines non sécurisées à travers un réseau non sécurisé. C'est ainsi qu'il est implanté dans le UNIX du MIT, dans le DCE de OSF, dans le Andrew File System, et certains dérivés de NFS. Avec Kerberos, un client désirant accéder à un serveur va demander au serveur de clefs la recommandation (appelée « ticket de session ») qui lui permettra d'accéder à une ressource donnée pour un temps limité.
Kerberos est « élastique (scalable en anglais) »,
car il comporte une notion de « domaines (realms en anglais) »
dont chacun possède son serveur de clefs qui peuvent se connecter entre
eux pour étendre le service.
Kerberos a la capacité d'étendre
les notions classiques pour un ordinateur unique ou pour un réseau local
de contrôles d'accès et de profils d'usager à un ensemble de
machines sur Internet.
Kerberos n'intègre pas de services de
signature, permettant la certification permanente de documents, il peut néanmoins
être employé pour administrer l'accès à des services.
La nécessité de disposer de serveurs de clefs et de protéger
ceux-ci contre d'éventuelles atteintes à la sécurité,
fait que Kerberos est mieux adapté à un ensemble de domaines
administrés (réseaux locaux et Intranet) qu'au réseau
informe qu'est Internet.
Pour dater un document, on utilise le principe de la signature en aveugle (
blind signature).
Une signature en aveugle est une signature
pratiquée sur un document par une identité qui n'a pas accès
au contenu ce document. On peut ne présenter au signataire aveugle qu'une
empreinte du document. Le signataire va la crypter par sa clef secrète,
ce qui produit une signature valable du document d'origine. Il existe aussi des
procédés pour « voiler » le document, le donner à
crypter, puis retirer ensuite le voile et récupérer ainsi un
document crypté par le signataire aveugle.
Il y a une foule
d'applications, comme les signatures de groupe (celles des autorités
certifiantes par exemple).
Pour dater un document, on va le faire signer en aveugle par un service de
datation. Le cryptage asymétrique de ce service change à chaque
instant et de façon aléatoire. Toutes les clefs publiques
correspondant à chaque époque sont notoires et sont archivées.
Pour vérifier la datation d'un document, il suffit de retrouver
quelle clef publique était en vigueur à la date supposée.
Références: Pour les signatures en aveugle, voir [Chaum 83-5]. Pour les datations, [Bayer et al.1993] et le site de la compagnie Surety Technologies qui proposes des systèmes de datation.
[Chapitre précédent], [Chapitre suivant], [Table des matières]