• Aucun résultat trouvé

Dans la cryptographie moderne toute sécurité est basée sur la clé (où les clés), et non dans les détails des algorithmes. Cela signifie qu’un algorithme peut être publié et analysé, mais la clé doit être protégée [90].

Il existe deux axes majeurs d’utilisation de clés : les systèmes cryptographiques symétriques (Sous-Section 2.2.1) ; et ceux asymétriques (Sous-Section 2.2.2).

2.2.1 Cryptographie à Clé Symétrique

Les algorithmes à clé symétrique concernent les méthodes de cryptage dans lesquels l’expéditeur et le récepteur d’un message utilisent la même clé, laquelle a été transmise via un canal sécurisé. Ceci était la seule méthode de cryptage connue jusqu’à 1976.

En effet, la plupart des algorithmes symétriques utilisent des clés identiques, mais certains algorithmes utilisent des clés de cryptage et de décryptage différentes, mais la deuxième peut être calculé de façon simples à partir de la première et vice-versa. Ces systèmes sont aussi connus comme étant à clé secrète, à clé privée où à clé unique.

Le fonctionnement de ce genre d’algorithme dépend du secret de la clé, et par conséquent, présume l’existence d’un canal sécurisé pour le transfert de la clé, à défaut de quoi la sécurité de tout système est compromise. Le cryptage et le décryptage d’un algorithme cryptographique à clé privée est donné par :

Ek(M ) = C

Dk(C) = M

La figure 2.2 illustre ce procédé.

Décryptage Clé Texte en Clair Cryptage Clé Crypté Texte Securisé Canal Texte Original Expéditeur Récepteur

Fig. 2.2: Schéma basique de cryptage et décryptage

Catégories

Algorithmes symétriques sont divisés en deux catégories principales. Quelques uns opèrent sur un seul bit (ou octet) à chaque fois ; il s’agit des algorithmes de cryptage par flot. D’autres agissent

2.2. Types d’algorithmes de Cryptographie 43

sur le texte en clair par ensembles de bits. Ces ensembles sont appelés blocs, d’où la dénomination cryptage par bloc. Dans les algorithme de cryptage par blocs les plus utilisés, ces blocs peuvent varier de 64 à 128bits. Quelques exemples d’algorithmes symétriques par flot sont le RC4[49] et le SEAL[83]. Les algorithmes à clé secrète les plus répandus sont le DES [73], le RC6[81] et le AES[26].

Principe de fonctionnement

La plupart des algorithmes symétriques modernes dérivent d’une méthode attribuée à Horst Feistel, utilisant des itérations répétées (rounds). Un round c’est la permutation des bits du bloc qui va être crypté et qui sont mixées avec quelques bits de la clé. Soit B le bloc de bits qui sera crypté. B est divisé dans deux parties P1 et P2. Pendant que P1 reste inchangé, P2 est additionné

(où ’XORé’) à une fonction de hachage à sens unique appliquée à P1. Les deux résultats sont alors echangés à nouveau : P1, P27→ P2′, P1; de tel façon que :

P′

2 = P2+ f (P1, k)

Étant donné que la sortie de l’itération accède encore à la valeur P1, et que l’addition est une

opération réversible, le round peut être défait, quelque soit la fonction f. Même si un round seul consiste en une opération non sécurisée, la répétition des round avec des sous-clés différentes incrémente de façon considérable la sécurité du système. Pour décrypter il suffit d’appliquer les itérations dans le sens inverse, avec les sous-clés aussi dans le reverse.

L’exemple classique d’un algorithme à clé privée utilisant cette méthode est le DES [73]. Pourtant même les algorithmes que n’utilisent pas la structure de Feistel utilisent des tours afin de promouvoir la diffusion et la confusion3

, comme c’est le cas pour le AES [26].

Performance

Par rapport à la performance, les algorithmes symétriques nécessitent d’une capacité de calcul moins intensive que les algorithmes asymétriques. Cela occasionne une rapidité de cryptage et de décryptage atteignant centaines ou milliers de fois supérieure à celle des algorithmes à clé publique. Pourtant les algorithmes symétriques ont le désavantage de nécessiter le partage de la clé secrète entre les deux points qui veulent se communiquer. Par exemple, dans une population de n individus, pour assurer une communication entre chacun des membres, il est nécessaire d’avoir n ×n−1

2 clés.

Actuellement, l’échange de clés secrètes se donne à travers d’un protocole d’échange basé sur un algorithme de cryptographie asymétrique. Donc, dans une session de communication, il est utilisé un algorithme à asymétrique (lent) pour réaliser le partage de la clé privée.

Les références [90] et [58] présentent plus dans le détail les algorithmes symétriques.

3

Comme décrit Shannon en [92], les principes de sécurité pour un algorithme sont la confusion, la diffusion et l’addition d’une clé.

44 Introduction à la Cryptographie

2.2.2 Cryptographie Asymétrique

Le principal inconvénient des algorithmes privée c’est qu’ils usent la même clé pour crypter et pour décrypter. Cela implique dans la nécessité d’un canal de communication sûr entre l’expéditeur et récepteur du message. L’algorithme est donc vulnerable durant la phase de transport de la clé. En 1976 a été publié un article proposant un schéma de cryptographie faisant usage de deux clés distinctes (pourtant intrinsèquement liées) : l’une pour crypter et l’autre pour décrypter. Même s’il y a un rapport entre les clés, la possession d’une clé ne permet pas de calculer l’autre.

Aussi appelés algorithmes à clé publique, son nom provient du fait qu’une des clés générées doit être effectivement rendue publique : n’importe qui peut s’emparer de la clé publique et crypter un message ; mais seulement une personne spécifique peut le décrypter. Dans ces systèmes, la clé publique est la clé de cryptage et la clé privée est la clé de decryptage. Le procédé de cryptage est dénoté pour :

Ekpu(M ) = C

Dkpr(C) = M

La figure 2.3 illustre ce procédé.

Texte

en Clair Cryptage Décryptage Texte Crypté Texte Original Publique Privée Non−securisé Canal Clé Clé

Fig. 2.3: Schéma basique de cryptage et décryptage

Fonctionnement

Du point de vue conceptuel, un algorithme à clé publique peut être imaginé comme une fonction à sens unique avec une trappe4

. La fonction Ekpudoit être facile à appliquer. Pourtant de décryp-

tage ne doit être possible que pour la personne ayant la clé privée kpr pour utiliser la fonction Dkpr. Dans le contexte de la cryptographie, il est désirable que Ekpusoit un fonction à sens unique

injective, afin que le décryptage puisse avoir lieu. Toutefois, il n’existe que des fonctions injectives supposées être à sens unique : aucune n’est prouvée comme tel. Par exemple, en supposant que n soit le produit de deux grands nombres premiers p et q, et que b soit un entier naturel supérieur à 2, il est possible définir f : Zn → Zn par :

f (M ) = [Mb]n 4

Une trappe s’agissant d’un "Piège à bascule installé au-dessus d’une fosse", emprunte son image à une fonction dont seuls ceux qui connaissent le secret de la trappe peuvent "sortir du piège". Ce concept est traité dans la Section 2.5.1