Support de Cours de Cryptographie et Sécurité informatique
Support de cours de cryptographie et sécurité informatique
...
Chapitre 1 Introduction
1.1 Motivation
A l’heure actuelle, les besoins en matière de sécurité sont grandissants, et la tendance n’est certainement pas à la baisse. Mais pourquoi ? Tout d’abord parce que le matériel informatique est omniprésent. En effet, d’une part le matériel est accessible à un prix très abordable, et d’autre part, les logiciels tendent à se simplifier (au niveau de l’utilisation !) et permettent une prise en main rapide. D’un autre coté, les entreprises, elles aussi informatisées, nécessitent un réseau sécurisé pour le transfert des données, que ce soit entre les machines de cette entreprise, ou avec des machines externes, distantes de plusieurs milliers de kilomètres. Si on observe la sécurité d’une manière plus générale, elle est d’ailleurs présente à plusieurs niveaux, qu’il s’agisse des différentes portées de l’information comme l’illustre la figure 1.1 ou les stades de vie de l’information, tels qu’illustrés à la figure 1.2.
...
On assiste également à une évolution constante des techniques, qu’il s’agisse des techniques visant à sécuriser l’échange de ces données ou des techniques mises au point pour contourner ces systèmes sécurisés. D’une manière générale, la sécurité des données tend à s’améliorer. La raison principale est qu’aujourd’hui, l’étude des contournements possibles est simultanée à l’étude des protections. La tendance actuelle veut que les résultats découverts, tous domaines confondus, soient publiés. Dans le cadre de la sécurité informatique, cela permet de découvrir plus rapidement les failles et/ou avantages de certaines techniques.
... ...
Avec la popularité grandissante des réseaux, des échanges de données, et donc des transmissions entre individus, de nombreuses menaces émergèrent. Parmi celles-ci, on trouve diverses catégories :
– Les menaces accidentelles
– Les menaces intentionnelles :
– passives
– actives
Les menaces accidentelles ne supposent aucune préméditation. Dans cette catégorie, sont repris les bugs logiciels, les pannes matérielles, et autres défaillances "incontrôlables". Les menaces intentionnelles quant à elles, reposent sur l’action d’un tiers désirant s’introduire et relever des informations. Dans le cas d’une attaque passive, l’intrus va tenter de dérober les informations par audit, ce qui rend sa détection relativement difficile. En effet, cet audit ne modifie pas les fichiers, ni n’altère les systèmes. Dans le cas d’une attaque active, la détection est facilitée, mais il peut être déjà trop tard lorsque celle-ci a lieu. Ici, l’intrus aura volontairement modifié les fichiers ou le système en place pour s’en emparer.
Les menaces actives appartiennent principalement à quatre catégories (illustrées à la figure 1.5) :
– Interruption = problème lié à la disponibilité des données
– Interception = problème lié à la confidentialité des données
– Modification = problème lié à l’intégrité des données
– Fabrication = problème lié à l’authenticité des données
Les auteurs de ces attaques sont notamment les hackers (agissant souvent par défi personnel), les concurrents industriels (vol d’informations concernant la stratégie de l’entreprise ou la conception de projets), les espions, la presse ou encore les agences nationales. Nous en reparlerons dans un prochain chapitre.
1.2 Différents modèles de sécurité
Tout en restant très générale, cette section présente par l’intermédiaire de quelques schémas la manière avec laquelle peut être appréhendée la notion de sécurité. Même si le concept n’est pas neuf, il a subi plusieurs modifications au cours du temps.
1.2.1 CIA (1987)
Le triangle CIA est le pilier immuable présentant les grands axes de la sécurité. La plupart des autres modèles utilisent cette représentation en tant que base.
Le triangle opposé existe également. Il porte le nom de DAD, pour Disclosure, Alteration, Disruption.
On peut définir les différents termes employés comme suit :
– Confidentialité : l’information n’est connue que des entités communicantes
– Intégrité : l’information n’a pas été modifiée entre sa création et son traitement (en ce compris un éventuel transfert)
– Disponibilité : l’information est toujours accessible et ne peut être bloquée/perdue
1.2.2 Le contrôle d’accès : Le protocole AAA
On peut en effet se demander pourquoi la vérification de l’identité des parties communicantes n’est pas traitée dans ce premier modèle. Celui-ci est en réalité la base de tous les systèmes existants. Il fut complété au fil des années, mais reste historiquement la première modélisation de la sécurité d’un système.
Le contrôle d’accès se fait en 4 étapes :
- Identification : Qui êtes-vous ?
- Authentification : Prouvez-le !
- Autorisation : Avez-vous les droits requis ?
- Accounting/Audit : Qu’avez-vous fait ?
On parle du protocole AAA (les deux premières étapes sont fusionnées). Dans certaines situations, on scindera la dernière étape. On parlera d’Accounting lorsque le fait de comptabiliser des faits sera demandé, et d’Audit lorsque des résultats plus globaux devront être étudiés. Notons également que l’authentification, visant à prouver l’identité d’un individu peut se faire de plusieurs manières :
– Ce que vous savez (mot de passe, code PIN, etc.)
– Ce que vous avez (carte magnétique, lecteur de carte, etc.)
– Ce que vous êtes (empreintes digitales, réseau rétinien, etc.)
L’authentification forte résultera de la combinaison de 2 de ces facteurs.
Le pentagone de confiance (2006)
Défini par Piscitello en 2006, il précise la notion d’accès à un système. Indépendamment des notions définies dans le triangle CIA, le modèle de Piscitello précise la confiance que peut/doit avoir l’utilisateur en présence d’un système informatisé.
On y retrouve les notions d’authentification, de disponibilité, d’autorisation et d’intégrité (Authenticity). Mais on y découvre un nouveau thème : l’admissibilité : La machine sur laquelle nous travaillons, à laquelle nous nous connectons, est-elle fiable ? En d’autres termes, peut-on faire confiance à la machine cible ?
1.2.3 Parkerian Hexad (2002)
Ce modèle, initié par Donn Parker, ajoute la nuance d’utilité (une information chiffrée pour laquelle on a perdu la clé de déchiffrement n’est plus d’aucune utilité, bien que l’utilisateur y ait accès, que cette information soit confidentielle, disponible et intègre).
1.2.4 McCumber Cube (1991)
On y retrouve les trois piliers de la sécurité (CIA), mais deux autres dimensions apparaissent :
– L’état des données : le stockage, la transmission, l’exécution
– Les méthodes : les principes et règles à adopter pour atteindre le niveau de sécurité souhaité
1.2.5 Autres définitions
1.2.5.1 La sécurité en parallèle
On parle de sécurité en parallèle lorsque plusieurs mécanismes de sécurité protégeant un système possèdent le même rôle. Dans ce cas, le niveau de protection du système est équivalent à celui du mécanisme le moins sûr.
En tant qu’exemple, citons un ordinateur portable que l’on peut déverrouiller par mot de passe, dongle ou empreinte digitale.
1.2.5.2 La sécurité en série
Plusieurs mécanismes de sécurité protègent un système et ont des rôles différents. On parlera de « défense en profondeur ».
Citons par exemple le réseau d’une entreprise où :
– Le réseau est sécurisé par un FW hardware,
– Les liaisons entre machines sont protégées,
– Les machines individuelles sont munies d’un FW software,
– Les accès aux machines se font par empreinte biométrique,
– Le logiciel à utiliser est accessible par mot de passe,
– etc.
Chapitre 2 Introduction à la cryptographie
La cryptographie utilise des concepts issus de nombreux domaines (Informatique, Mathématiques, Electronique). Toutefois, les techniques évoluent et trouvent aujourd’hui régulièrement racine dans d’autres branches (Biologie, Physique, etc.)
2.1 Vocabulaire de base
Cryptologie : Il s’agit d’une science mathématique comportant deux branches : la cryptographie et la cryptanalyse
Cryptographie : La cryptographie est l’étude des méthodes donnant la possibilité d’envoyer des données de manière confidentielle sur un support donné.
Chiffrement : Le chiffrement consiste à transformer une donnée (texte, message, ...) afin de la rendre incompréhensible par une personne autre que celui qui a créé le message et celui qui en est le destinataire. La fonction permettant de retrouver le texte clair à partir du texte chiffré porte le nom de déchiffrement.
Texte chiffré : Appelé également cryptogramme, le texte chiffré est le résultat de l’application d’un chiffrement à un texte clair.
Clef : Il s’agit du paramètre impliqué et autorisant des opérations de chiffrement et/ou déchiffrement. Dans le cas d’un algorithme symétrique, la clef est identique lors des deux opérations. Dans le cas d’algorithmes asymétriques, elle diffère pour les deux opérations.
Cryptanalyse : Opposée à la cryptographie, elle a pour but de retrouver le texte clair à partir de textes chiffrés en déterminant les failles des algorithmes utilisés.
Cryptosystème : Il est défini comme l’ensemble des clés possibles (espace de clés), des textes clairs et chiffrés possibles associés à un algorithme donné.
L’algorithme est en réalité un triplet d’algorithmes :
– l’un générant les clés K,
– un autre pour chiffrer M, et
– un troisième pour déchiffrer C.
Remarque : On parle de "décryptage" pour désigner l’action permettant de retrouver le texte clair sans connaître la clef de déchiffrement. On emploie également parfois les termes "cryptage" et "crypter" pour qualifier l’action de chiffrer un message. Les mots "encryptage" et "(en)cryptement" sont des anglicismes dérivés du verbe "to encrypt".
2.2 Notations
En cryptographie, la propriété de base est que
M = D(E(M))
où
– M représente le texte clair,
– C est le texte chiffré,
– K est la clé (dans le cas d’un algorithme à clé symétrique), Ek et Dk dans le cas d’algorithmes asymétriques,
– E(x) est la fonction de chiffrement, et
– D(x) est la fonction de déchiffrement.
Ainsi, avec un algorithme à clef symétrique,
M = D(C) si C = E(M)
2.3 Principe de Kerckhoff
La sécurité du chiffre ne doit pas dépendre de ce qui ne peut pas être facilement changé.
En d’autres termes, aucun secret ne doit résider dans l’algorithme mais plutôt dans la clé. Sans celle-ci, il doit être impossible de retrouver le texte clair à partir du texte chiffré. Par contre, si on connaît K, le déchiffrement est immédiat. On parle aussi de la Maxime de Shannon, dérivée du principe énoncé ci-dessus : L’adversaire connait le système.
Remarque : Il faut distinguer les termes "Secret" et "Robustesse" d’un algorithme. Le secret de l’algorithme revient à cacher les concepts de celui-ci, ainsi que les méthodes utilisées (fonctions mathématiques). La robustesse quant à elle désigne la résistance de l’algorithme à diverses attaques qui seront explicitées dans la suite de ces notes.
2.4 La publication des algorithmes
Selon l’endroit où réside le secret, on peut parler d’algorithme secret ou d’algorithme publié1. Chacun possède ses atouts et inconvénients.
2.4.1 Algorithme secret
– La cryptanalyse, souvent basée sur le secret de la clé, doit ici en plus retrouver l’entièreté de l’algorithme (mécanisme de récupération).
– Souvent, de tels algorithmes sont utilisés par un plus petit nombre d’utilisateurs. Et comme souvent dans ce cas, moins il y a de monde l’utilisant, moins il y a d’intérêts à le casser.
– De tels algorithmes sont rarement distribués par delà les frontières, afin de garder un nombre d’utilisateurs restreint.
2.4.2 Algorithme publié
– Puisque l’algorithme est publié, tout le monde a le droit de l’explorer. Ainsi, les failles (laissées intentionnellement ou non par les concepteurs) peuvent être plus facilement découvertes. La sécurité en est donc améliorée.
– Comme la publication est autorisée, il n’est pas nécessaire de chercher à protéger le code contre le reverse-engineering.
– Cette publication permet d’étendre les travaux sur l’algorithme au niveau mondial. Toute une série d’implémentations logicielles peuvent donc être réalisées.
– Tout le monde utilise la même version publique ce qui permet une standardisation générale.
En conséquence, on préférera les algorithmes publiés, souvent plus sûrs pour les raisons explicitées ci-dessus.
2.5 Les principaux concepts cryptographiques
2.5.1 Cryptosystème à clé symétrique
Caractéristiques :
– Les clés sont identiques : KE = KD = K,
– La clé doit rester secrète,
– Les algorithmes les plus répandus sont le DES, AES, 3DES, ...
– Au niveau de la génération des clés, elle est choisie aléatoirement dans l’espace des clés,
– Ces algorithmes sont basés sur des opérations de transposition et de substitution des bits du texte clair en fonction de la clé,
– La taille des clés est souvent de l’ordre de 128 bits. Le DES en utilise 56, mais l’AES peut aller jusque 256,
– L’avantage principal de ce mode de chiffrement est sa rapidité,
– Le principal désavantage réside dans la distribution des clés : pour une meilleure sécurité, on préfèrera l’échange manuel. Malheureusement, pour de grands systèmes, le nombre de clés peut devenir conséquent. C’est pourquoi on utilisera souvent des échanges sécurisés pour transmettre les clés. En effet, pour un système à N utilisateurs, il y aura N.(N − 1)/2 paires de clés.
2.5.2 Cryptosystème à clé publique
Fig. 2.4 – Chiffrement asymétrique
Caractéristiques :
– Une clé publique PK (symbolisée par la clé verticale),
– Une clé privée secrète SK (symbolisée par la clé horizontale),
– Propriété : La connaissance de PK ne permet pas de déduire SK,
– DSK (EPK (M)) = M,
– L’algorithme de cryptographie asymétrique le plus connu est le RSA,
– Le principe de ce genre d’algorithme est qu’il s’agit d’une fonction unidirectionnelle à trappe. Une telle fonction à la particularité d’être facile à calculer dans un sens, mais difficile voire impossible dans le sens inverse. La seule manière de pouvoir réaliser le calcul inverse est de connaître une trappe. Une trappe pourrait par exemple être une faille dans le générateur de clés. Cette faille peut être soit intentionnelle de la part du concepteur (définition stricte d’une trappe) ou accidentelle.
– Les algorithmes se basent sur des concepts mathématiques tels que l’exponentiation de grands nombres premiers (RSA), le problème des logarithmes discrets (ElGamal), ou encore le problème du sac à dos (Merkle-Hellman).
– La taille des clés s’étend de 512 bits à 2048 bits en standard. Dans le cas du RSA, une clé de 512 bits n’est plus sûre au sens "militaire" du terme, mais est toujours utilisable de particulier à particulier.
– Au niveau des performances, le chiffrement par voie asymétrique est environ 1000 fois plus lent que le chiffrement symétrique.
– Cependant, à l’inverse du chiffrement symétrique où le nombre de clés est le problème majeur, ici, seules n paires sont nécessaires. En effet, chaque utilisateur possède une paire (SK, PK) et tous les transferts de message ont lieu avec ces clés.
– La distribution des clés est grandement facilitée car l’échange de clés secrètes n’est plus nécessaire.
Chaque utilisateur2 conserve sa clé secrète sans jamais la divulguer. Seule la clé publique devra être distribuée.
2.5.3 Fonction de hachage
Il s’agit de la troisième grande famille d’algorithmes utilisés en cryptographie. Le principe est qu’un message clair de longueur quelconque doit être transformé en un message de longueur fixe inférieure à celle de départ. Le message réduit portera le nom de "Haché" ou de "Condensé". L’intérêt est d’utiliser ce condensé comme empreinte digitale du message original afin que ce dernier soit identifié de manière univoque. Deux caractéristiques (théoriques) importantes sont les suivantes :
- Ce sont des fonctions unidirectionnelles :
A partir de H(M) il est impossible de retrouver M.
- Ce sont des fonctions sans collisions :
A partir de H(M) et M il est impossible de trouver M0
6= M tel que H(M0) = H(M).
Il est bien entendu que le terme “impossible” n’est pas toujours à prendre au pied de la lettre ! Il s’agit ici de concepts théoriques. La réalité est quelque peu différente. Ainsi, pour le caractère “sans collision”, dans les faits, cela est “très difficile” dans le meilleur des cas, mais jamais impossible, comme le bon sens le laisse penser.
2.5.4 Protocoles cryptographiques
Dès que plusieurs entités sont impliquées dans un échange de messages sécurisés, des règles doivent
déterminer l’ensemble des opérations cryptographiques à réaliser, leur séquence, afin de sécuriser la communication C’est ce que l’on appelle les protocoles cryptographiques.
Lorsque l’on parle de “sécuriser un échange”, on souhaite prêter attention aux 3 services suivants : la confidentialité, l’intégrité et l’authentification.
Signalons la distinction entre “services” (confidentialité, intégrité, etc.) et “mécanismes” (les moyens utilisés : chiffrement, signature, hachage, etc.).
2Pour désigner un utilisateur, on emploiera également