Introduction
La cryptologie, ou science du secret, a apparemment vu le jour au même moment que l'écriture, soit environ 4000 ans avant JC. C'est en tout cas ce qu'historiens et archéologues conjecturent. La cryptologie est devenue depuis un demi-siècle une discipline scientifique à part entière qui connaît un engouement spectaculaire à la mesure du rôle de plus en plus important que jouent les réseaux de communication au sein de notre société moderne. La cryptographie est l'étude des techniques d'écriture de messages secrets tandis que la cryptanalyse en fait l'analyse pour les valider ou les invalider.
La cryptographie et la cryptanalyse s'appuient sur de nombreuses théories mathématiques et informatiques dont les plus importantes sont
Ce terme est décliné suivant la nature de ces transformations : encodage, codage de source, codage de canal ou codage correcteur, codage secret. Par exemple et respectivement, le American Standard Code for Information Interchangecode ascii est une représentation particulière des lettres et des symboles usuels avec des nombres entiers, le code de Huffman permet de compresser des données, le code de Hamming de les protéger contre des erreurs de transmission, le code de César de les rendre incompréhensibles.
La cryptographie est donc le terme consacré quand le codage a pour finalité de rendre les données secrètes. Les codes correcteurs et les codes secrets peuvent paraître antinomiques à première vue : le codage correcteur s'emploie à rajouter des informations à un message pour le rendre plus intelligible alors que la cryptographie tente au contraire et par tous les moyens de le rendre incompréhensible. En réalité les deux théories se complètent, car le message secret doit être intelligible pour pouvoir être déchiffré. Il est en effet de peu d'intérêt d'employer le javanais au téléphone pour ne pas dévoiler le contenu d'une conversation si votre interlocuteur (qui comprend le javanais) n'entend que de la friture sur la ligne…
La transmission d'une information subit généralement plusieurs codages successifs. Le premier est l'encodage qui permet de représenter des données concrètes en données abstraites, par exemple des triplets d'entiers \((R,V,B)\) pour représenter des couleurs, eux-mêmes compressés (codage de source) pour éventuellement être chiffrés (si l'on veut protéger la transmission d'une photo par exemple) auxquels on ajoute de la redondance (codage correcteur) avant de les transmettre pour resister aux perturbations du canal de transmission.
Les trois grands objectifs de la cryptologie sont :
Plus récemment, des problèmes de partage de secret ont vu le jour. Pour donner une idée de cette nouvelle problématique, imaginons que dans une hypothétique défense européenne, les \(m\) chefs d'états disposent d'une clef leur permettant de déclencher une attaque nucléaire. Tout le monde s'accordera à dire qu'il est inconcevable qu'une seule clef puisse autoriser l'accès à cette ressource. D'un autre coté, il peut être hasardeux de conditionner l'accès à une telle ressource uniquement si les \(m\) clefs sont activées ! On peut donc souhaiter que \(l\) clefs suffisent, avec bien sûr \(1 < l < m\). C'est de ce type de questions que traite le partage de secret.
Deux grandes classes de protocoles sont employés en cryptographie : les protocoles à clef privée ou secrète et les protocoles à clef publique. On parle respectivement de cryptographie symétrique et asymétrique.Ce cours introductif s'adresse aux étudiants de mathématiques ayant le niveau de la licence, mais il est tout à fait accessible à un informaticien ayant une culture mathématique solide. Le volume d'enseignement étant relativement restreint, deux alternatives étaient envisageables pour une introduction à la cryptologie. La première consistait à faire un panorama très superficiel de ce domaine de recherche aujourd'hui très vaste, la seconde était de me restreindre à un petit nombre de protocoles illustratifs de cette théorie.
Pour les protocoles de chiffrement à clef secrète, j'ai choisi principalement le système de Vigenère, qui a l'avantage d'être simple, d'introduire une démarche générale, et qui peut être mise en oeuvre dans un délai raisonnable pour des mathématiciens peu familiarisés avec la programmation. Le des et l'aes sont bien sûr abordés.
Pour les protocoles de chiffrement à clef publique, j'ai choisi le protocole rsa, parce qu'il est largement utilisé et surtout pour illustrer quelques théorèmes fondamentaux d'arithmétique. Je mets également en avant les aspects algorithmiques incontournables quand on veut faire des calculs effectifs.
Le cours est décomposé en 5 chapitres:
Documents pédagogiques
Le polycopié (inachevé) du cours est accessible ici en pdf. Les planches de TD sont ici: