Notes sur le cours de Cryptographie - 1° partie, Notes de Application informatique
Francine88
Francine8813 janvier 2014

Notes sur le cours de Cryptographie - 1° partie, Notes de Application informatique

PDF (306 KB)
13 pages
505Numéro de visites
Description
Notes de gestion sur le cours de Cryptographie - 1° partie. Les principaux thèmes abordés sont les suivants: La cryptographie, les remarques, le système cryptographique, le principe de kerckhoffs, les trappes, le systèm...
20points
Points de téléchargement necessaire pour télécharger
ce document
Télécharger le document
Aperçu3 pages / 13
Ceci c'est un aperçu avant impression
3 shown on 13 pages
Télécharger le document
Ceci c'est un aperçu avant impression
3 shown on 13 pages
Télécharger le document
Ceci c'est un aperçu avant impression
3 shown on 13 pages
Télécharger le document
Ceci c'est un aperçu avant impression
3 shown on 13 pages
Télécharger le document

La cryptographie est une des disciplines de la cryptologie s'attachant à protéger des messages

(assurant confidentialité et/ou authenticité) que deux personnes souhaitent s'échanger à travers

un canal peu sûr en s'aidant souvent de secrets ou clés.

L'histoire de la cryptographie est déjà longue. Nous rapportons son utilisation en Egypte il y a

4'000 ans. Toutefois, pendant des siècles, les méthodes utilisées étaient restées souvent très

primitives. D'autre part, sa mise en oeuvre était limitée aux besoins de l'armée et de la

diplomatie. Ainsi, les méthodes de chiffrement et de cryptanalyse (le casse de code) ont connu

un développement très important au cours de la seconde guerre mondiale et ont eu une

profonde influence sur le cours de celle-ci.

A la fin du 20ème siècle (en particulier !), avec la prolifération des ordinateurs et des moyens

électroniques de communication, il était devenu de plus en plus important d'utiliser des codes

secrets pour la transmission des données entre les organismes à caractère militaire ou privés.

Ainsi, les ingénieurs ont du chercher à cette même époque des méthodes numériques solides et

dont la mise en oeuvre et l'usage était à portée de presque tout à chacun (nation, entreprise et

individu) tout en faisant en sorte que les attaques extérieures nécessitent des outils hors

d'atteinte d'un individu ou groupe d'individus équipé d'outils informatique standards ou

performants (en puissance de calcul donc). Les ingénieurs et chercheurs se sont alors plongés

dans les mathématiques pour chercher les outils satisfaisant ce cahier des charges et pour les

systèmes les plus connus, les théories mathématiques qui furent optées avaient plus de 200

ans (cryptographie quantique mise à part) d'ancienneté.

Remarques:

R1. Pour aborder les fondements de la théorie de la cryptographie, nous conseillons au lecteur

d'avoir parcouru au préalable les chapitres de Théorie des Ensembles, de Méthodes Numériques

(surtout la partie traitant de la complexité algorithmique), des Systèmes Numériques Formels, de

la Mécanique Statistique (où se trouve la théorie de l'information) et pour la partie de la

cryptographie quantique : le chapitre d'Informatique Quantique du site.

R2. Il faut rester conscient à nouveau que la cryptographie est plus une science de l'ingénieur

qu'une science du physicien (mise à part en ce qui concerne la cryptographie quantique) il ne faut

pas s'étonner alors à voir apparaître des algorithmes tombés un peu de nulle part et adoptés par

l'industrie parce qu'ils marchent bien... par ailleurs il est certain que seulement quelques années

après avoir écrit ce texte il soit déjà considéré comme obsolète (c'est tout l'art de l'ingénierie...)

SYSTÈMES CRYPTOGRAPHIQUES Définitions:

Un "système cryptographique" est composé de :

D1. Un ensemble fini P appelé "l'espace des textes clairs"

D2. Un ensemble fini C appelé "l'espace des textes chiffrés"

D3. Un ensemble fini K appelé "l'espace de clés"

Pour chaque clé , nous cherchons une fonction de chiffrement:

(1)

et une fonction de déchiffrement (decryption) :

(2)

telles que (cf. chapitre de Théorie Des Ensembles) :

(3)

autrement dit, ces deux fonctions doivent être injectives!

Pour arriver à ce résultat, deux types de techniques cryptograhpiques se distinguent ,

englobant toutes les méthodes de cryptage modernes connues (pour les détails voir plus loin) :

1. Les premières concernent les systèmes de chiffrement "symétriques à clé secrète".

Remarque: Les clés publiques font souvent référence au protocole D.E.S. (voir plus loin) : Data

Encryption System.

2. Les secondes concernent les système de chiffrement "aysmétriques à clé publique".

Remarque: Ce type de clé fait souvent référence par exemple au protocole R.S.A., du nom des

personnes à qui on en a attribué le développement : Rivest, Shamir et Adi. Elles sont beaucoup

utilisées de par la rapidité du temps de cryptage et de décryptage ainsi que de leur grande

entropie (voir définition plus loin).

Par nature, ces deux types de clés sont très différentes. Essayons d'en comprendre les raisons:

Un chiffrement symétrique désigne un système où la clé utilisée dans l'opération de chiffrement

est aussi celle utilisée dans l'opération de déchiffrement. Dans ce cas, lors d'un échange

sécurisé (supposé), les deux parties de la correspondance doivent partager un secret : la clé

utilisée ou "clé de session".

Un chiffrement asymétrique désigne un système de chiffrement où la clé utilisée pour le

chiffrement (clé privée de l'expéditeur) diffère de celle utilisée pour le déchiffrement (clé privée

du destinataire). Le seul échange qu'il y a entre les membres du groupe, est la clé publique, qui

permet à chacun des membres d'adapter son chiffrement (ou cryptage) en fonction de la clé

privée des autres membres (parmi les nombreux systèmes asymétrique qui ont été proposés,

l'un des plus répandu en ce début de 21ème siècle est le R.S.A.).

Remarques:

R1. En 2001, MS Internet Explorer (navigateur internet de Microsoft) fonctionnait avec un

système asynchrone de 1024 bits certifié par un système synchrone et Adobe Acrobat (PDF) en

2004 avec un système AES de 128 bits pour les protections basses.

R2. MS Windows et son système E.F.S. (Encryption File System) utilise une clé symétrique

(pour chiffrer le fichier) appelée "File Encryption Key" et la cryptographie asymétrique pour

coder la clé symétrique dans l'en-têtre du fichier selon le schéma suivant:

(4)Source: Wikipedia

R3. Ces méthodes demeurent toujours déchiffrables, à condition que l'intercepteur possède

"assez de temps et de papier" (exception à ce jour pour le cryptage quantique).

PRINCIPE DE KERCKHOFFS

La première fonction de la cryptographie consiste donc à assurer la confidentialité d'un échange

d'informations. Deux parties d'un échange confidentiel s'accordent d'abord sur une convention

secrète pour rédiger leurs messages, et si elles l'ont soigneusement choisie, personne d'autre

ne devrait pouvoir saisir leur échange.

Si le caractère secret de telles conventions est envisageable entre quelques personnes isolées

pour une période limitée, il est inconcevable à grande échelle et pour une durée assez longue.

C'est ce qu'avait compris Auguste Kerchoffs lorsqu'il établit les principes de base de la

cryptographie pratique dont un principe fondamental exige un système de chiffrement: "qui

n'exige pas le secret, et qui puisse sans inconvénient tomber entre les mains de l'ennemi".

Un autre principe précise que: "la clé doit pouvoir être changée ou modifiée au gré des

correspondants".

Le premier de ces deux principes, connu aujourd'hui sous le nom de "principe de Kerckhoffs",

stipule donc que la sécurité d'un système de chiffrement n'est pas fondée sur le secret de la

procédure qu'il suit, mais uniquement sur un paramètre utilisé lors de sa mise en oeuvre: la clé.

Cette clé est le seul secret de la convention d'échange.

Ce principe a cependant été reformulé par Claude Shannon : "l'adversaire connaît le système".

Cette formulation est connue sous le nom de la "maxime de Shannon". C'est le principe le plus

souvent adopté par les cryptologues, par opposition à la sécurité par l'obscurité.

TRAPPES Il existe parfois ce que nous nommons des "trappes" dans le clés publiques et secrètes. Ceci est

du au fait que lors de la génération de la clé, qui doit se faire aléatoirement en respectant

certaines contraintes théoriques prédéfinies, le générateur aléatoire peut avoir un défaut

(parfois le défaut est volontaire de la part du fournisseur... espionnage oblige).

Dans les clés secrètes, les trappes se situent au niveau de "l'entropie de la clé" (cf. chapitre de

Mécanique Statistique), directement liée à l'entropie du générateur aléatoire. Nous pouvons de

manière simpliste définir l'entropie d'un générateur de clés par le nombre moyen optimal de

questions binaires (c'est-à-dire donnant lieu à des réponses du type oui/non) qu'il faut poser à

quelqu'un connaissant une clé produite par ce générateur, pour la déterminer. Plus l'entropie

d'un générateur de clé est élevée, plus il faut de questions pour déterminer cette clé. A

l'inverse, plus l'entropie est faible, moins il faut de questions, de sorte que la recherche d'une

clé est facilitée.

L'introduction de trappes dans les clés de systèmes asymétriques est beaucoup plus difficile,

puisque ce type de clé possède déjà une structure mathématique intrinsèque: leur

constructions n'est pas due au hasard, mais résulte de règles mathématiques. Le hasard est ici

dans le choix des grands nombres premiers utilisés. Le fait que les systèmes asymétriques

puissent être aisément calculés, mais difficiles à inverser font qu'ils sont parfois appellés

"fonctions trappes à sens unique".

Remarque: Si le générateur aléatoire qui engendre ces nombres premiers est biaisé (cf. chapitre

de Statistiques), ce biais facilitera la recherche des nombres premiers ayant servi à l'élaboration

de la clé qu'un attaquant tente de casser.

SYSTÈME DE CHIFFREMENT A CLÉ

SECRÈTE Le "chiffre à usage unique" est un algorithme de chiffrement à clé secrète prouvé

inconditionnellement sûr. Correctement utilisé (et c'est un point important), il fournit un

chiffrement incassable en des temps raisonnables.

Les bases théoriques de ce système de cryptage sont les suivantes:

Soit un message M sous forme binaire à transmettre entre des personnes A (créateur et

expéditeur du message M) et B ( lecteur et destinataire). Nous engendrons une grande quantité

de bits "réellement aléatoires" qui forment une clé secrète K de même taille que le message à

transmettre (les programmes informatiques, déterministes par essence, ne peuvent engendrer

des bits vraiment aléatoires).

Cette clé sera transmise à B par un canal supposé sûr... Un laps de temps donnée après la

transmission de cette clé, A va encoder son message en C en effectuant l'opération:

(5)

où est un opérateur qui doit satisfaire à une loi de groupe (cf. chapitre de Théorie Des

Ensembles) sur un ensemble fini (qui contient un nombre fini d'éléments).

L'intérêt en informatique est d'utiliser la loi de groupe XOR (aussi nommée OU EXCLUSIF)

notée par la suite (cf. chapitre de Systèmes Logiques).

Finalement, l'expéditeur A transmet la version cryptée C de son message par une voie pas

nécessairement sécurisée. B retrouve le message original M en utilisant l'opération

inverse de (l'opérateur XOR est son propre inverse comme le montre sa table de vérité

dans le chapitre de Systèmes numériques). Ainsi B va effectuer l'opération suivante:

(6)

Sous réserve que la clé K ait bien été engendrée de façon totalement aléatoire et que chaque bit

la composant n'ait été utilisé qu'une seule fois pour crypter le message, un intercepteur

n'obtient aucune information sur le message clair M s'il intercepte C . En effet, dans ces

conditions, on ne peut établir aucune corrélation entre M etC sans la connaissance de K.

Même avec de futures ordinateurs quantiques ultra-puissants, le problème est insoluble, car

rien ne relie les informations dont on dispose et le problème à résoudre. En conséquence, le

"chiffre à usage unique" est un algorithme de chiffrement "inconditionnellement sûr". La preuve

de sa sécurité ne fait pas appel à des conjectures mathématiques non démontrées et les

tentatives de déchiffrement d'un intercepteur muni d'une puissance de calcul infinie sont

vaines.

Cependant, chaque étape du chiffrement est possible source d'erreur. En effet, la clé K peut

avoir été mal élaborée. La moindre déviation statistique sur K par rapport à du "vrai" aléatoire

fourni des informations sur les message clair M à partir de sa version cryptée. C'est la raison

pour laquelle les bits de K ne doivent servir qu'une seule fois.

Effectivement, supposons qu'une même clé ait servit à chiffrer les messages de langue

française et et qu'une personne malveillante arrive à intercepter les deux message

correspondants cryptés et . A partir de et l'intercepteur peut facilement obtenir

des informations sur et du fait des particularités des langues. En effet, puisque :

et (7)

alors l'intercepteur connaît un résultat simple qui fait intervenir et , sans la clé K:

(8)

car :

(9)

(au besoin faire la table de vérité pour s'en convaincre). Or, si et sont dans la même

langue, on saura en général, grâce aux redondances des langues (par exemple la lettre "e"

apparait très souvent dans la langue française), retrouver à partir de , chacun des

deux messages (le travail est quand même laborieux).

Imaginons que nous souhaitons envoyer un tout petit message codé en binaire par 1101 et que

nous avons généré une clé aléatoire qui a donné 0101.

Nous avons alors:

et donc:

Evidemment dans ce genre de petites situations on peut deviner sans trop de difficultés M rien

qu'en ayant C si il n'y a comme ici qu'une seule étape de chiffrement. Raisons pour laquelle il

existe des schémas comme nous allons le voir maintenant.

Le problème principal de cette technique est donc la création d'une clé aussi aléatoire que

possible. Pour palier à cela, les mathématiciens font passer la clé par une série de fonctions

imbriquées, dont le résultat, après un grand nombre d'itérations, devient "pseudo aléatoire".

Construire une itération pseudo aléatoire est une chose, construire une bijection pseudo

aléatoire en est cependant une autre. En effet, il faut pouvoir décrypter le message par la suite,

c'est pourquoi l'on a absolument besoin d'un système bijectif (qui a tout élément d'arrivée -

message crypté - fait correspondre un unique élément de départ - message décrypté - et

inversement).

SCHÉMA DE FEISTEL Dans les années 1950, un mathématicien (Feistel) a montré qu'une fonction pseudo aléatoire se

transforme, par une méthode simple, en bijection. Aujourd'hui, la "méthode de Feistel" est la

plus utilisée dans les chiffrements à clé secrète et est aussi à la base du D.E.S. (Data Encryption

System). Comment fonctionne-t-elle ?

En voici le principe:

Le message initial à chiffrer à une taille de 2n bits. On sépare le message M en deux

blocs, G et D, de longueurs égales (G regroupe les n premiers bits et D les suivants) et on

construit la transformation qui associe à G etD les nombres S et T tel que:

et (10)

où le signe représente toujours l'opération XOR bit à bit et une fonction quelconque, pas

nécessairement bijective, de n bits vers n bits qui utilise la clé secrète K.

La transformation est bien bijective, car on remonte de façon univoque

(unique) à partir de S et de T à G et D par les opérations:

et (11)

On ne doit évidemment pas s'arrêter là puisque la partie droite du message, D, n'a pas été

chiffrée, elle est simplement passée à gauche. Cependant, comme est bijective, on peut

réitérer le processus. Un schéma de Feistel où l'on applique n fois la fonction est nommée

"schéma à n étapes".

Exemple:

Nous allons chiffrer par la méthode de Feistel à deux étapes un message constituté de quatre

bits (donc 16 possibilités de messages), ce qui vient à construire une bijection de quatre bits

vers quatre bits à partir de deux fonctions de deux bits vers deux bits. Les

fonctions possèdent en entrée à la fois le message à chiffrer et la clé secrète. Nous

considérerons que pour une certaine clé entrée, ces fonctions sont les suivantes :

Entrée

Sortie Entrée

Sortie

00

01 00

11

01

11 01

00

10

10 10

00

11

01 11

01

Tableau: 1 - Correspondances entrées/sorties de clés par fonctions

Notons que ni , ni ne sont des bijection ( ). A titre

d'exemple, chiffrons le message 1101. G désigne la moitié gauche du message à chiffrer, D la

moitié droite :

(12)

Le résultat est 0010. Nous calculerons l'image des 15 autres messages possible et nous

vérifierions qu'il y ait une correspondance univoque entre chaque message et son image par le

schéma de Feistel : nous avons construit une bijection à partir de deux fonctions qui n'en sont

pas.

Des résultat théoriques complexes garantissent la sécurité cryptographique des schémas de

Feistel à partir de quatre étapes lorsque n est assez grand et lorsque les

fonctions sont indiscernables de fonctions réellement aléatoires. En pratique,

plutôt que d'utiliser quatre étapes et des fonctions qui ont l'air aléatoires, on préfère en

général utiliser plus d'étapes et des fonctions plus simples. Au bout de quelques étapes, la

bijection obtenue devient souvent très difficile à distinguer des bijections aléatoires. Et pour

des paramètres bien choisis, on ne sait plus du tout comment les distinguer de bijections

réellement aléatoires !!!

La plupart des algorithmes à chiffrement à clé secrète utilisés actuellement dans le monde civil

sont des schémas de Feistel. En particulier, l'algorithme D.E.S. (Data Encryption System) qui est

un schéma de Feistel à 16 étapes comme représenté dans la figure ci-dessous et l'algorithme

Triple DES (TDES) qui est un schéma de Feistal à 48 étapes et l'algorithme Blowfish (que nous

n'aborderons pas ici).

Remarque: Il y a, par exemple, dans chaque carte bancaire, une clé DES (ou TDES depuis

octobre 2001).

Rigoureusement le schéma de Feistel est un peu autre car il fait intervenir des clés ce que nous

n'avons pas utilisé dans l'exemple cité précédemment. Voici au fait en un peu plus détaillé en

quoi consiste ce schéma de Feistel (voir figures ci-dessous).

Principe du schéma : Un message à chiffrer est découpé en blocs de 64 bits, chacun d'eux étant

séparé en deux sous-blocs de 32 bits, le bloc de gauche (G) et le bloc de droit (D). A chaque

itération, l'ancien bloc droit devient le nouveau bloc gauche et le nouveau bloc droit résulte de

la combinaison par l'opération XOR de l'ancien bloc droit, dont les bits sont mélangés par une

fonction de confusion, et de l'ancien bloc gauche. On répète l'itération 16 fois.

(13)

La fonction de confusion (f), qui agit sur les blocs de 32 bits, mélange les bits selon les

processus suivant (à droite sur la figure). D'abord, elle transforme le bloc de 32 bits en un bloc

de 48 bits par duplication de certains bits (expansion). Ensuite, elle ajoute à ce bloc, une sous-

clé de 48 bits (clé de tour) extraite de la clé secrète de 56 bits puis elle transforme chaque

ensemble de 6 bits en 4 bits par des transformations locales (transformationS). On aboutit à un

bloc de 32 bits que l'on mélange enfin suivant une permutation fixe.

(14)

SYSTÈME DE CHIFFREMENT A CLÉ

PUBLIQUE

En 1975, W. Diffie et M.E. Hellman révolutionnaient la science de la cryptographie en

démontrant l'existence d'un protocole qui ne pouvait être déchiffré par un intercepteur à moins

que ce dernier ne disposât de conséquentes ressources informatiques. Le plus fascinant dans

leur méthode - dont le principe est encore en usage aujourd'hui - c'est que le code utilisé ne

nécessite pas le camouflage de la méthode employée et qu'il peut servir à maintes reprises sans

aucune modification (principe de Kerchoff). Ils ont à l'époque tout simplement créé le concept

de cryptographie à clé publique, ou cryptographie asymétrique (dont nous avons déjà fait

mention au tout début de ce chapitre), invention qui suscita l'émergence d'une communauté

universitaire et industrielle dyanmique.

Remarque: Contrairement à ce que l'on pourrait croire, la cryptographie à clé publique n'a pas

relégué la cryptographie à clé secrète aux oubliettes, bien au contraire : ces deux types de

cryptographie s'utilisent le plus souvent conjointement dans des cryptosystèmes hybrides où

l'authentification des clés publiées est assurée par une "autorité de certification".

Avant d'exposer dans le détail le protocole de Diffie-Hellmann, rappelons que le protocole

d'échange des "clés secrètes" n'était fiable à l'époque (et ne l'est toujours pas aujourd'hui )

puisqu'il voyage/transite entre les interlocuteurs, l'élément permettant de crypter et donc

décrypter les messages. De plus, même si qu'une seule clé venait à voyager, toute personne

ayant une puissance de calculs suffisante pourrait briser le code. D'où la nécessité qu'il y avait

de changer (malheur de plus!) fréquemment les clés. Deux solutions s'offrent alors :

S1. Ne pas changer de clé (c'est possible mais c'est long comme nous allons le voir dans la

figure ci-dessous)

S2. Echanger une clé secrète utilisant une fonction mathématique non-inversible ou très

difficilement inversible (c'est le protocole de Diffie-Hellmann que nous verrons également dans

une figure plus bas).

Voyons en quoi consiste la première solution et son désavantage flagrant :

(15)

Explication : Alice et Bernard veulent transmettre un message sur une ligne non sécurisée et

sans échanger de clé. Pour cela, Alice met sa lettre dans un coffre qu'elle ferme avec sa clé et

l'envoie à Bernard. Ce dernier renvoie le coffre à Alice où il a ajouté son propre cadenas qu'il a

fermé avec sa propre clé. Quand Alice reçoit le coffre, elle ôte sont cadenas et renvoie à Bernard

un coffre qui ne comprend plus que le cadenas de Bernard fermé avec la clé de Bernard. Celui-

ci n'a donc plus qu'à ouvrir le coffre pour lire la lettre. Cette opération est sûre et ne nécessite

pas d'échange de clé. En revanche, elle requiert plusieurs trajets (l'ensemble est représenté par

les 4 premières transactions de la figure ci-dessus)

commentaires (0)
Aucun commentaire n'a été pas fait
Écrire ton premier commentaire
Ceci c'est un aperçu avant impression
3 shown on 13 pages
Télécharger le document