Techniques actuelles

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.

  1. Les procédés de cryptage
    1. Cryptages par blocs
    2. Cryptages asymétriques
    3. Restrictions stratégiques
  2. Signature électronique
  3. Certificats électroniques
  4. Identification
  5. Datation

Les procédés de cryptage

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.

Cryptages par blocs

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.

DES

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.

Méthode
Le cryptage DES de base utilise une clef de 56 bits. Il s'effectue en 16 passes de rotation et 3 transpositions sur des mots de 64 bits.
Fiabilité
En presque vingt ans, cet algorithme a fait l'objet de nombreuses tentatives de forçage.
La méthode brutale (essai de toutes les clefs) requiert évidement 2^55 essais en moyenne ce qui la rend impraticable à l'heure actuelle. On est parvenu à le percer en 1994 en partant d'un échantillon connu de 2^43 mots (512 To. !!).
Performance
Sur implantation matérielle, l'algorithme DES est capable de crypter ou décrypter entre 300 Mbits et 3 Gbits/sec. Il est donc éligible pour (dé)crypter sans surcoût des échanges permanents tels les échanges sur un réseau ou sur un bus. On l'envisage pour le cryptage du téléphone ou d'un signal vidéo haute définition (1,5 Gbits/sec.).
Références
[NBS 1977 ]. Cet algorithme est décrit en détail dans [Tanenbaum 1988].

Autres Cryptages par blocs

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:

Triple DES
On pratique de plus en plus souvent un « triple DES » pour acheminer une clef privée ou même pour un cryptage de données. Le triple DES est réalisé par trois cryptages successifs, employant deux clefs différentes:
Cryptage1 -> Cryptage2 -> Cryptage1
Il est démontré que cela renforce le cryptage.
IDEA [Lai et al. 1992 ]
IDEA (International Data Encryption Algorithm) est une initiative de développement ouvert qui a abouti à un algorithme de cryptage (presque) symétrique, fiable et performant. Les bases théoriques ont été largement diffusées et les développements ont été effectués au grand jour. Il est aussi performant que DES et s'implante bien sur des composants matériels.
SAFER [Massey 1993]
SAFER (Secure And Fast Encryption Routine) est un algorithme du domaine public, qui opère des transformations sur des octets. C'est une particularité qui le prédestine pour les implantations sur les cartes à puce. Il a l'inconvénient de ne pas être symétrique.
Skipjack (Confidentiel)
Skipjack est un algorithme confidentiel mis au point par la NSA et implanté sur un composant, le Clipper Chip. Étant confidentiel, on est pas en mesure de le mettre autant à l'épreuve qu'un algorithme public, ce qui fait dire aux mauvaises langues qu'il ne serait peut-être pas si sûr que cela.
Blowfish [Schneier 1993]
Blowfish est un algorithme symétrique. Il se décompose en opérations XOR et additions sur des mots de 32 bits, ce qui le rend bien plus rapide que DES sur des architectures 32 bits.
RC2, RC4 et RC5 (Confidentiels)
Ces algorithmes sont confidentiels et propriété de RSA Data Security. Il sont très adaptables pour des compromis fiabilité / performance.

Modes

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

Cryptages asymétriques

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.

Avantage: Clef publique

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

Inconvénient: Performance

Comparaison de performance entre un représentant de chaque type d'algorithme, RSA et DES:
Source: [RSA ]

RSA
Le logiciel BSAFE 3.0 de RSA Data Security crypte avec une clef de 512 bits à un débit de 21,6 Kbits/sec. sur un Pentium à 90 Mhz. Une implantation matérielle actuelle offre 300 Kbits/sec.
DES
En logiciel, l'algorithme DES est 100 fois plus rapide que le cryptage RSA. Sur une implantation matérielle, il est entre 1000 et 10.000 fois plus rapide (entre 300 Mbits et 3 Gbits/sec.).

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

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.

Méthode

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

Fiabilité

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.

Autres algorithmes asymétriques

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

Restrictions stratégiques

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.

Seuil faible / fort

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.

Dérogations

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.

Signature électronique

Principe

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.

Empreintes électroniques

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.

Fonctions de hachage

Plusieurs fonctions de hachage sont couramment employées. Les qualités demandées à une fonction de hachage pour réaliser des empreintes sont:

Grande dispersion
Un petit écart entre deux documents doit créer un grand écart entre deux messages.
Absence de collisions
Deux documents différents ne doivent avoir qu'une chance infime de donner la même empreinte. Il doit être impossible du point de vue informatique, de générer deux documents ayant la même empreinte (pseudo-collision).
Inversion impossible
Il ne faut pas que l'on puisse recréer le document à partir de l'empreinte.

Deux fonctions parmi les plus populaires:
Référence: [Preneel_1993]

MD5
Message Digest (Version 5) est un algorithme créé en 1991 par Ron Rivest des RSA Laboratories , mais qui est disponible dans le domaine public.
MD5 produit une empreinte sur 128 bits. Il est rapide sur des machines 32 bits et est très employé pour effectuer des checksums anti-virus sur les systèmes de fichiers.
SHA-1
Le Secure Hash Algorithm (Revision 1) a été développé en 1993 par le NIST et révisé en 1994.
Il réalise des empreintes sur 160 bits, ce qui le rend plus robuste que MD5, mais également plus lent.
Il est prévu pour travailler sur des documents de 264 bits de longueur (ou moins…).
Cet algorithme réalise une dispersion telle que de changer un bit du document, change en moyenne la moitié des bits de l'empreinte. La probabilité que deux documents aient la même empreinte est de 10-48.

Certificats électroniques

Présentation

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.

Usage

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:

Standards

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.

Émission

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 .

Identification

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:

  1. Identité certifiée: On utilise les concepts de certification d'identité électronique présentés précédemment pour initier un échange.
  2. Identification par le réseau: Un système informatique est mis en place sur le réseau pour identifier les participants lors de leur connexion. Kerberos est un exemple d'un tel système.

Identité certifiée

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.

  1. Bob (par exemple) expédie à Alice un document qu'il crée pour l'occasion et qu'on appelle un défi (challenge en anglais). Soit D ce défi.
  2. Alice va signer D par sa clef secrète. C'est à dire qu'elle génère une empreinte E(D), qu'elle crypte avec sa clef secrète sA pour former la signature SA(D) = CsA(E(D)).
  3. Alice génère une clef symétrique c, avec laquelle elle crypte la signature de D, soit Cc(SA(D)).
  4. Elle expédie à Bob, le cryptage précédent accompagné de la clef symétrique c, cryptée par la clef publique de Bob. Soit l'ensemble {Cc(SA(D)), CpB(c)}. La portion CpB(c) est appelée l'enveloppe électronique du message.
  5. Bob décrypte l'enveloppe par sa clef publique et y trouve la clef c avec laquelle il est en mesure de crypter le document signé. Il peut vérifier l'identité de son interlocuteur en employant la clef publique d'Alice pour décrypter la signature et vérifier qu'il obtient bien l'empreinte du défi.
  6. Bob renvoie D à Alice, crypté par la clef symétrique c, soit Cc(D), démontrant ainsi qu'il est bien celui qu'il prétend.

Après cet échange, Bob et Alice peuvent communiquer secrètement par des messages cryptés selon c.

Kerberos

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.

Datation

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]


Notes

NSA
National Security Agency.
La très mystérieuse agence gouvernementale américaine, dépendante du département de la défense. Elle est, entre autres, chargée du décodage de toutes les communications qui intéressent la sécurité américaine.
NIST
National Institute of Standards and Technology.
Agence gouvernementale américaine dépendant du département du commerce. Le NIST publie des Federal Information Processing Standards (FIPS) pour être employés dans l'administration et l'industrie américaines.
Alice et Bob
Personnages incontournables de toute littérature sur le cryptage. Personnellement, je propose au lecteur francophone les personnages de Roxanne et Cyrano, lequel aurait peut-être connu un meilleur succès sur Internet.