• Aucun résultat trouvé

Un exemple d’un tour du réseau substitution-permutation

1.3.2 Notions de sécurité pour les algorithmes de chiffrement par blocs Il faut préciser que lorsque nous évaluons la sécurité d’un algorithme de chiffrement, nous supposons que le fonctionnement de cet algorithme est connu. En effet, sa sécurité ne doit pas reposer sur le fait que le fonctionnement de celui-ci soit gardé secret.

La plus grande menace entre un algorithme de chiffrement par blocs est de retrou-ver la clé utilisée et ainsi de pouvoir déchiffrer tous les messages chiffrés avec celle-ci. Néanmoins, cette attaque n’est pas l’unique but d’un attaquant. Il existe de nombreux niveaux de sécurité en cryptographie qui s’appliquent aux algorithmes de chiffrement par blocs. Nous donnons ici les définitions des principaux.

Définition 1.2. Non-inversibilité (OW : one-wayness). Soient un algorithme de chiffrement non-inversibleEet un message clairm. Il est impossible de trouvermà partir deE(K, m)sans connaître la cléK.

Définition 1.3. Sécurité sémantique (IND : indistinguishability). Soit un adversaire ayant une puissance de calcul polynomiale, c’est-à-dire qu’il ne peut faire qu’un nombre polynomial de calculs, et un chiffré. Un chiffrement sûr sémantiquement assure que l’attaquant ne peut déduire aucune information sur le clair à partir du chiffré.

Définition 1.4. Non-malléabilité (NM : non-malleability). SoientE un algorithme de chiffre-ment non-malléable, m un message clair et c = E(K, m) le chiffré de m. Aucun attaquant polynomial ne doit être en mesure de dériver un deuxième chiffréc =E(K, m)tel quemet

m soient reliés.

Les propriétés précédentes peuvent être étudiées dans différents contextes, en fonc-tion du type de données qui sont contrôlées par l’attaquant. Nous supposons donc que

l’adversaire, pour monter une attaque, a accès à certains échantillons de messages chif-frés avec une certaine clé. Les différents types d’attaques en fonction des échantillons que l’adversaire possède sont expliqués ci-dessous.

1. Attaque à chiffré seul (Chiphertext only attack). Ce modèle d’attaque suppose que

l’adversaire dispose uniquement d’un certain nombre de messages chiffrés.

2. Attaque à clair connu (Known plaintext attack). Dans ce modèle, l’attaquant a un

peu plus de pouvoir puisque il possède des messages clairs et leurs chiffrés cor-respondants.

3. Attaque à clair choisi (Chosen plaintext attack). Dans ce modèle d’attaque,

l’adver-saire peut choisir les clairs qui seront chiffrés. Ce scénario est un peu plus difficile à réaliser en pratique mais il reste réaliste.

4. Attaque à clair adaptatif choisi (Adaptively chosen plaintext attack). Même type

d’at-taque que l’atd’at-taque à clair choisi ci-dessus mais, ici, l’attaquant a la possibilité de choisir le dernier clair à chiffrer en fonction de chiffrés reçus précédemment.

5. Attaque à chiffré choisi (Chosen ciphertext attack). Ici, l’attaquant a accès à la

ma-chine du déchiffrement et choisit les textes chiffrés à déchiffrer.

6. Attaque à chiffré adaptatif choisi (Adaptively chosen ciphertext attack). Même type

d’attaque que l’attaque à chiffré choisi mais l’adversaire a la possibilité de choisir chaque chiffré à déchiffrer en fonction des résultats obtenus précédemment.

7. Attaque à clair et chiffré choisis (Chosen plaintext and ciphertext attack). Ce modèle

d’attaque, suppose que l’adversaire a la possibilité de chiffrer et de déchiffrer les messages souhaités. Ce cas revient à avoir à sa disposition une boîte noire qui chiffre et qui déchiffre. Comme pour les attaques précédentes, cette attaque peut être adaptative ou non.

Ces différents modèles permettent de créer des classes d’attaques distinctes, qui doivent être envisagées lors du déploiement des cryptosystèmes. Dans tous les cas, comme mentionné précédemment, en suivant les principes de Kerckhoffs, l’attaquant a toujours la possibilité de connaître le mécanisme de chiffrement.

Une fois les échantillons obtenus, l’attaquant essaye de récupérer la clé du système ou de récupérer le message clair (en entier ou non) s’il ne possède que des chiffrés. Si cela est le cas, l’algorithme proposé est considéré comme sûr, sinon il est considéré comme cassé. En outre, après avoir effectué l’attaque, son succès sera mesuré en fonc-tion des ressources qu’elle consomme. Donc, pour évaluer la performance d’une at-taque, nous évaluons la complexité :

1. en temps : le temps nécessaire pour que l’attaque aboutisse. Parfois, par abus, la complexité en temps est la seule exigence.

2. en données : le nombre de messages chiffrés nécessaires à l’attaque. Une attaque peut potentiellement ne pas coûter cher en temps. Cependant, il est possible, qu’elle nécessite un très grand nombre de données. Si le temps nécessaire pour gé-nérer ces données dépasse une utilisation normale du système, l’attaque ne peut pas être considérée comme pratique.

3. en mémoire : la quantité d’espace nécessaire pour le stockage des données uti-lisées. Comme pour la complexité en données, une attaque qui nécessite un très grand espace de stockage, peut ne pas être considérée comme pratique.

L’attaque la plus naïve pour un adversaire est la recherche exhaustive de la clé. Peu importe le niveau de sécurité des briques sur lesquelles la conception de l’algorithme a été basée, l’attaquant a toujours la possibilité de faire ce type d’attaque et la seule façon de se protéger contre elle est d’avoir une clé assez grande. Donc, lors de la conception des algorithmes de chiffrement, le but du cryptographe est de construire un algorithme pour lequel la meilleure attaque dont dispose l’adversaire est la recherche exhaustive de la clé.

1.3.3 Modes opératoires des algorithmes de chiffrement par blocs

En pratique, les messages à chiffrer font rarement la taille du bloc imposée par les al-gorithmes de chiffrement par blocs. Dans le cas où le message à chiffrer est plus petit

que la taille du bloc, il faut ajouter dupaddingpour compléter le message. Dans le cas

contraire, si le message est plus long que le bloc utilisé par l’algorithme de chiffrement, il faut lier les blocs de messages clairs et chiffrer les uns avec les autres dans un mode opératoire.

Définition 1.5. Un mode opératoire définit comment construire, à partir d’une fonction qui opère sur des blocs de taille fixe, une transformation qui permet de chiffrer des messages de longueur arbitraire.

Juste après la standardisation de l’algorithme DES, quatre modes opératoires ont été

définis pour DES dans FIPS81. Les modes décrits dans ce document sont toujours les

modes le plus connus et utilisés. De façon similaire, après que l’AES a été standardisé, le NIST a publié des règles concernant son utilisation (SP800-38A) [NIS01]. Ces recom-mandations incluent les quatre modes précédents et définissent en plus un cinquième mode. Au total, ces cinq modes sont :

2. Cipher Block Chaining Mode (CBC), 3. Cipher Feedback Mode (CFB), 4. Output Feedback Mode (OFB), 5. Counter Mode (CTR).

Les cinq modes définis ci-dessus peuvent être utilisés avec tous les algorithmes de chiffrement par blocs. Cependant, tous les modes opératoires n’apportent pas les mêmes propriétés de sécurité à l’algorithme de chiffrement utilisé, ni les mêmes perfor-mances. Par exemple, quand le mode opératoire ECB est utilisé, chaque bloc de message à chiffrer est traité indépendamment des autres par la fonction de chiffrement. Il s’agît de la façon la plus simple de procéder. Ccependant, ce mode ne devrait jamais être uti-lisé car deux blocs identiques donnent toujours le même chiffré. Cela n’est pas le cas des autres modes opératoires. Dans le cas du CBC par exemple, le chaînage des blocs à chiffrer utilisé crée une dépendance entre un bloc chiffré et tous les blocs chiffrés pré-cédents. Il est donc conseillé de ne pas utiliser ECB mais plutôt un des autres modes proposés.

En outre, ces cinq modes garantissent la confidentialité d’un message, mais pas l’in-tégrité. Néanmoins, il existe des modes opératoires qui garantissent à la fois la confiden-tialité et l’authenticité du message à envoyer. Ces modes sont appelés modes de

chiffre-ment authentifié (Authenticated Encryption (AE)). Dans cette catégorie, nous distinguons

les modes de chiffrement authentifié à une passe, comme par exemple IAPM [Jut00] et OCB [RBB03], et les modes de chiffrement authentifié à deux passes, par exemple CCM [NIS04], EAX [BRW04] et GCM [NIS07].

Paramétrage par un IV. Les modes opératoires CBC, CFB, OFB et CTR nécessitent

tous l’utilisation d’une valeur d’initialisation (Initial Value (IV)). La façon de choisir l’IV

varie en fonction des besoins. Par exemple, le mode CBC est sûr quand l’IV est choisi au hasard, mais ne l’est pas quand elle correspond à un compteur comme c’est le cas du mode CTR. Par ailleurs, pour les modes OFB et CTR, l’utilisation de la même clé

combinée avec la même IV donnera la même keystream et cela a des impacts sur la

sécurité du schéma.

Le remplissage d’un bloc (padding). Les modes CFB et CBC nécessitent que la taille du message à chiffrer soit un multiple de la taille du bloc que l’algorithme de chiffre-ment utilise. Donc, afin d’obtenir la taille entière du bloc, nous appliquons une

trans-formation appeléepadding. Il existe plusieurs façons de compléter un message mais le

choix de ce padding n’est pas anodin pour la sécurité [Vau02, BU02, PY04]. Un padding

couramment employé est la méthode suivante. Le bit1est d’abord ajouté au message,

suivi d’un nombre de bits de 0. Le nombre de 0 ajoutés est choisi de telle sorte que

le message final obtenu ait une taille multiple de la taille d’un bloc mais qu’il soit en même temps le plus petit possible.

1.4 Les algorithmes de code d’authentification de message

(MAC)

Comme nous l’avons vu précédemment, les algorithmes de chiffrement par bloc peuvent garantir la confidentialité d’un message mais aussi son intégrité si un mode opératoire adéquat est utilisé. Néanmoins, pour s’assurer de l’intégrité d’un message un autre composant cryptographique est souvent utilisé : les codes d’authentification de

mes-sage, plus connus sous l’acronyme MAC (Message Authentication Code).

Définition 1.6. Un code d’authentification de message, ou MAC, est une famille de fonctions de hachage paramétrées par une clé secrète. Le but d’un MAC est d’authentifier l’origine des données parmi les détenteurs de la clé et garantir leur intégrité. Pour cela, il prend en entrée un messagemet une clé secrèteK dekbits et donne en sortie un tagτ qui est habituellement annexé àm.

1.4.1 Propriétés de sécurité d’un MAC

Dans ce type de schéma, le but de l’attaquant est de produire un MAC valide et de le faire passer pour légitime. Formellement, nous pouvons distinguer deux façons diffé-rentes pour un adversaire de procéder.

1. Attaque de récuperation de la clé.Ici, l’attaquant essaye de retrouver la clé secrète et, dans ce cas, nous parlons de cassage total du schéma. Plus précisément, étant

donné un ensemble de couples(messages,tags)(m1, τ1), . . . ,(mn, τn), pour un

en-semble de messagesm1, . . . , mnqui peut être choisi de façon adaptative par

l’at-taquant, il ne doit pas être possible de récupérer la cléK qui a été utilisée pour

produire les tags.

2. MAC forgery. Dans le deuxième cas, étant donné un ensemble de couples (mes-sages, tags)(m1, τ1), . . . ,(mn, τn), pour un ensemble de messagesm1, . . . , mnqui peut être choisi de façon adaptative par l’attaquant, il ne doit pas être possible

pour l’adversaire de calculer un couplemessage-tag(m, τ)valide pour un

nou-veau messagem.

Il est évident que le première type d’attaque est plus fort que le deuxième : un adversaire qui arrive à récupérer la clé utilisée, est ensuite capable de forger le MAC de n’importe quel message. Cependant, dans certains schémas, l’attaquant peut forger un

tag pour un nouveau message sans avoir aucune information sur la cléK.

Concernant la complexité de ces propriétés, pour la première, le but des concep-teurs d’un MAC est d’assurer qu’un attaquant ne puisse pas récupérer la clé en faisant

moins que2kopérations oùkest la taille de la cléKutilisée. Pour la deuxième, si le tag

τ atbits, la probabilité de forger un MAC valide pour un message doit être toujours

de2t. En outre, parmi2t/2tags, d’après le paradoxe des anniversaires, il y a une

un MAC. Cependant, ce type d’attaques peut souvent être évité en produisant un tag suffisamment long.

Pour atteindre son but, l’attaquant peut faire soit une attaque à messages connus,

c’est-à-dire qu’il a déjà accès à des couples(m, τ) de messages déjà authentifiés, soit

une attaque à messages choisis, c’est-à-dire qu’il demande le MAC de messages qu’il choisit à un oracle de génération de MACs.

1.4.2 Construction d’un MAC

Généralement, les MAC sont construits à partir d’autres primitives cryptographiques. Les trois principales façons de faire cela utilisent :

1. desfonctions de hachage cryptographiques,

2. duhachage universel,

3. ou unalgorithme de chiffrement par blocs.

Exemples de MAC utilisés. Dans la catégorie des MAC basé sur des fonctions de

ha-chage cryptographiques, l’algorithme plus connu est HMAC (Hash-based Message

Au-thentication Code) [KBC97]. HMAC est définit comme suit : h(K⊕opad||h(K⊕ipad||m))

où h est une fonction de hachage cryptographique, K la clé utilisée, m le message à

authentifier,ipadl’octet0x36répétén/8fois (avecnla taille de la sortie de la fonction

h) etopadl’octet0x5Crépétén/8fois.

Plusieurs MAC utilisent du hachage universel, par exemple UMAC [BHK+99] et

VMAC [Kro06]. L’idée est ici de choisir une fonction de hachage au sein d’une famille de fonctions. Le choix de la fonction ne dépend que de la clé.

Finalement, les MAC basés sur les algorithmes de chiffrement par blocs sont gé-néralement présentés comme un mode opératoire. Le plus connu est le CBC-MAC (fi-gure 1.4) et son fonctionnement est très similaire au mode opératoire CBC.

EK m0 EK m1 . . . IV mn1 EK τ

Documents relatifs