Cryptographie : Signature numérique et Chiffrement


Algorithmes de cryptographie symétrique

Les algorithmes de chiffrement symétrique se fondent sur une même clé pour chiffrer et déchiffrer un message. Le problème de cette technique est que la clé, qui doit rester totalement confidentielle, doit être transmise au correspondant de façon sûre.
Ces algorithmes sont dit aussi « à clé secrète ».
Les trois algorithmes étudiés précédemment sont bien sur des algorithmes à clé secrète.

Chiffre de Vernam

Le chiffre de Vernam, également appelé masque jetable est un algorithme de cryptographie inventé par Gilbert Vernam en 1917. Bien que simple, ce chiffrement est le seul qui soit théoriquement impossible à casser, même s'il présente d'importantes difficultés de mise en œuvre pratique.

Le chiffrement par la méthode du masque jetable consiste à combiner le message en clair avec une clé présentant les caractéristiques très particulières suivantes : L'intérêt considérable de cette méthode de chiffrement, c'est que si les trois règles ci-dessus sont respectées strictement, le système offre une sécurité théorique absolue.

Le chiffrement à la main par la méthode du masque jetable fut notamment utilisée par Che Guevara pour communiquer avec Fidel Castro.

Exemple :
On veut chiffrer le message «HELLO».
On choisit la clé : X M C K L
Pour cela, on attribue un nombre à chaque lettre, par exemple le rang dans l'alphabet, de 0 à 25.
En suite on additionne la valeur de chaque lettre avec la valeur correspondante dans le masque.
Enfin si le résultat est supérieur à 25 on soustrait 26 (calcul dit "modulo 26") :

Le texte reçu par le destinataire est «EQNVZ».
Le déchiffrement s'effectue de manière similaire, sauf que l'on soustrait le masque au texte chiffré au lieu de l'additionner. Ici encore on ajoute éventuellement 26 au résultat pour obtenir des nombres compris entre 0 et 25 :

On retrouve bien le message initial «HELLO».

Les chiffrements par blocs

Inventé par Horst Feistel (1915-1990) et son chiffrement Lucifer.
C'est un chiffrement à clé privée et algorithme symétriques.
C'est à dire que non seulement on utilise la même clé pour chiffrer et déchiffrer, mais on utilise le même algorithme pour chiffrer et déchiffrer (comme le ROT13)
L'algorithme étant appliqué successivement plusieurs fois pour chiffrer l'information, le nombre de passes étant entendu entre les deux parties, au même titre que la clé privée.

D.E.S. (Data Encryption Standard)

En mai 1973, le National Bureau of Standards américain demande la création d'un chiffrement utilisable par les entreprises. A cette époque, IBM dispose déjà de Lucifer. Mais la NSA demanda à ce que Lucifer soit modifié par ses soins. Ainsi fut créé le DES (Data Encryption Standart), qui fut adopté comme standard en novembre 1976.
Cela suscita des rumeurs selon lesquelles la NSA aurait volontairement affaibli l'algorithme, dans le but de pouvoir le casser : L'algorithme initialement conçu par IBM utilisait une clé de 112 bits. L'intervention de la NSA ramenant la taille de clé à 56 bits.

DES a été l'algorithme « officiel » de l'administration américaine jusqu'en 1999. C'est à dire que tout les documents « confidentiel défense » et « secret défense » étaient chiffrés avec DES.

Le système Unix qui date de cette période utilise encore le DES pour crypter les mots de passe.

Le DES à fait l'objet de très nombreuses attaques. Mais c'est l'augmentation de la puissance des ordinateurs qui l'a rendu obsolète.
Un chiffrage DES offre 254 possibilités de clés. Ce qui représente un nombre de combinaisons « réaliste » pour une grosse puissance de calcul. Ainsi en 1998, Deep Crack, un ordinateur conçu par IBM pour cet usage pouvait casser une clé DES en moins d'une semaine.
Plus tard, grace au calcul distribué sut Internet, donc en utilisant les ordinateurs des particuliers, une clé put être cassée en moins de 24 heures.
De plus, des attaques permettent de réduire le nombre de combinaisons à « seulement » 243 soit plusieurs milliards de fois moins que 254

Le triple D.E.S.

Le Triple DES (aussi appelé 3DES) est un algorithme de chiffrement symétrique enchaînant trois applications successives de l'algorithme DES sur le même bloc de données de 64 bits, avec 2 ou 3 clés DES différentes. Cette utilisation de trois chiffrements DES a été développée par Walter Tuchman. Bien que normalisé, bien connu, et assez simple à implémenter, il est assez lent.

A.E.S (Advanced Encryption Standard)

AES est un algorithme de chiffrement symétrique, choisi en octobre 2000 par le NIST (National Institute of Standards and Technology) pour être le nouveau standard de chiffrement pour les organisations du gouvernement des États-Unis.

L'algorithme prend en entrée un bloc de 128 bits (la clé fait 128, 192 ou 256 bits). Les 128 bits en entrée sont « mélangés » selon une table définie au préalable.
Ces octets sont ensuite placés dans une matrice de 4x4 éléments et ses lignes subissent une rotation vers la droite.
L'incrément pour la rotation varie selon le numéro de la ligne.
Une transformation est ensuite appliquée sur la matrice par un XOr avec une matrice clé.
Finalement, un XOr entre la matrice et une autre matrice permet d'obtenir une matrice intermédiaire.
Ces différentes opérations sont répétées plusieurs fois et définissent un « tour ».
Pour une clé de 128, 192 ou 256, AES nécessite respectivement 10, 12 ou 14 tours.
L'algorithme AES est réputé inviolable.

RC4

RC4 a été conçu par Ronald Rivest (Le 'R' de RSA) en 1987. Officiellement nommé Rivest Cipher 4, l'acronyme RC est aussi surnommé Ron's Code.
Il est utilisé dans des protocoles comme WEP, WPA ainsi que TLS. Les raisons de son succès sont liées à sa grande simplicité et à sa vitesse de chiffrement. Les implémentations matérielles ou logicielles étant faciles à mettre en oeuvre.

La clef RC4 permet d'initialiser un tableau de 256 octets en répétant la clef autant de fois que nécessaire pour remplir le tableau.
Par la suite, des opérations très simples sont effectuées : les octets sont déplacés dans le tableau, des additions sont effectuées, etc. Le but est de mélanger autant que possible le tableau.
Au final on obtient une suite de bits pseudo-aléatoires qui peuvent être utilisés pour chiffrer le message via un Xor (Comme dans le cas d'un masque jetable).

CAST 128 et 256

L'algorithme a été conçu en 1996 par Carlisle Adams et Stafford Tavares. Le terme de « CAST » serait basé sur les initiales des inventeurs.
CAST-128 (appelé aussi CAST5) est un algorithme de chiffrement par bloc utilisé par plusieurs logiciels dont certaines versions de PGP et GNU Privacy Guard.
Il est basé sur un réseau de Feistel de 12 ou 16 tours avec un bloc de 64 bits. La taille de la clé varie entre 40 et 128 bits (par incrément de 8 bits).
La version complète avec ses 16 tours est utilisée quand la clé est supérieure à 80 bits.
L'architecture interne du chiffrement comprend des S-Boxes de 8x32 éléments dont le contenu provient de fonctions dites courbe, des rotations qui varient selon la clé, des additions et des soustractions. Il y a trois types de tours mais ils ne varient que sur le choix exact de l'opérateur (addition, soustraction ou XOR).

CAST-256 (appelé aussi CAST6) a été publié en juin 1998 et fut candidat pour AES. Il utilise les mêmes éléments que CAST-128 avec toutefois des S-Boxes adaptées à une taille de bloc de 128 bits.
Les clés ont une taille qui varie entre 128 et 256 bits (par incrément de 32 bits).
L'algorithme utilise 48 rondes, parfois référencées sous le terme de 12 « quad-rounds », disposée selon un réseau de Feistel équilibré.
Lors de la sélection pour AES, son conservatisme en termes de sécurité se faisait au détriment de la performance et l'empêcha d'aller plus loin dans le concours.

Malgré un brevet déposé par Entrust sur la conception CAST, CAST-128 et CAST-256 sont disponibles partout sans charges pour des applications commerciales ou non-commerciales.