9 KiB
Introduction à la Cryptographie
Responsable : vincent.migliore@insa-toulouse.fr
Definitions
La cryptographie est la science qui vise à écrire les secrets.
Il faut distinguer la Cryptographie de la cryptologie ainsi que de la crpytanalyse.
- La Cryptologie est la science du secret en général et ne concerne pas nécessairement un savoir
- La ccryptanalyse concerne elle la science qui vise à briser les secrets.
Principes de Kerkhoffs
1- Théoriquement un secret parfaitement gardé repose sur un algorithme inviolable. En revanche, on peut se contenter en pratique d'utiliser des algorithmes qui nécessiteraient un temps et des ressources déraisonnés pour être cassés.
2- La construction ainsi que la conception ne doivent pas nécessiter de secret. Le secret de chiffrement est externe à la conception du système. Ainsi, en récupérant un système, on ne peut pas en connaitre le secret et accéder à la donnée.
Cryptographie moderne
- Sécurité basée sur des proobl_èmes mathématiques calculatoirement complexes.
- La domaine est hautement standardisée et les algorithmes de chiffrement sont majoritairement publics
- Il est fortement recommandé d'utiliser des librairies publiques et ne pas s'aventurer à reconstituer un algorithme de chiffrement fait maison, cela pourrait mettre en danger le secret associé.
En revanche, certaines brèches restent encore ouvertes.
- Il existe toujours des failles liées aux attaques physiques
- Injection de fautes
- Side channels | Cannaux de fuites
- Les ordinateurs quantiques sont aujourd'hui une source d'inquiétude puisqu'ils sont capables de résoudre les problèmes mathématiques bien plus rapidement que des ordinateurs quantiques.
- Se pose alors la question de la mise en oeuvre d'algorithmes de protection post-quantiques
Un Algorithme Post quantique est un algorithme capable de tourner dans un temps et avec des ressources raisonnables sur un ordinateur standard, mais qui pour autant n'a pas encore été cassé par un ordinateur quantique.
Les acteurs de la standardisation
Nation Institute of Standards Technology - NIST
Prend en charge la régulation des algorithmes de cryptographie. Les enjeux actuels reposent sur la mise en place d'algorithmes post-quantiques stables.
Internet Engineering Task Force - IETF
Prend en charge la régulation de la sécurité dans les protocoles de l'internet et notamment TCP/IP
ISO
Prend en charge tous les autres domaines spécifiques.
Vocabulaire important
Anglais | Français | Explication |
---|---|---|
Plain Text | Message clair | Message non protégé |
Cipher text | Message chiffré | Message protégé |
Keygen | Keygen | Générateur de clés de chiffrement |
Encryption | Chiffrement | Mécanisme qui chiffre un message clair |
Decryption | Déchiffrement | Mécanisme qui extrait un message à partir d'un chiffré |
Symetric Key | Clé symétrique | Même clé utilisée pour chiffrer et déchiffrer un message |
Asymetriic key | Clé asymétrique | Clé différente est utilisée pour chiffrer et déchiffrer |
Dans le cas de mécanismes asymétriques, on considère en général que la clé de chiffrement est une clé publique et à contrario, qu'une clé de déchiffrement est une clé privée.
On considèrera toujours que c'est Alice qui souhaite communiquer avec Bob
En général, dans un chiffrement symétrique, on parle de many to one encryption - serveur à plusieurs PC.
Propriétés essentielles d'un algorithme de chiffrement
- Confidentialité : Une écoute ne permet pas de comprendre le message
- Intégrité : Le récepteur peut détecter si le message reçu est différent du message émis | i.e. checksum etc
- Authentification : Capacité à reconnaître ses destinataires et éviter les usurpations
- Non répudiation : Avec des clés différentes on peut distinguer qui a émis quelle donnée et ainsi il n'y a pas de doute sur qui a émis telle ou telle donnée
Les différents types de canaux
- Non-Sécurisé : Ecoute possible et modification possible des paquets
- Sécurisé : Ni écoute ni modification possible
- Confidentiel : Pas d'écoute possible
- Authentique : Pas de modification par un tiers grâce par exemple à un contrôle d'intégrité
Notation fonctionnelle
f(message,key) = chiffré
Algorithmes déterministes
Deux entrées identiques mèneront à une clé identique. Dans le cas de la cryptographie, il y a absolue nécessité que Encrypt et Decrypt soient des algorithmes déterministes. Ainsi on peut attester la non déformation des messages lors de leur transport.
Une autre propriété d'Encrypt et Decrypt est appelée la consistance : \forall m \in M, \forall S_k \in K, Decrypt(Encrypt(m,S_k),S_k)=m
Algorithmes aléatoires
Keygen est un algorithme non déterministe, Il peut attribuer une clé avec certaines probabilités en fonction des entrées. On utilise en général deux types de lois : Uniforme pour des algorithmes classiques, et plutôt Gaussienne pour des algorithmes post-quantiques.
Sécurité d'un algorithme de chiffrement/déchiffrement
Il est essentiel que le chiffré ne donne aucune information sur la clé de chiffrement, ainsi personne ne peut, en interceptant le message, avoir des pistes qui pourraient orienter les recherche pour briser le secret.
Est il possible d'avoir un secret parfait ?
Cas du XOR | Ou Exclusif | Addition modulo 2
Cette équation est toujours vraie : x \oplus y \oplus x = y
et XOR est commutatif. Cela permettrait donc de chiffrer de façon symétrique un message très facilement : message \oplus clé = chiffré
et à partir du chiffré, on pourrait facilement faire chiffré \oplus clé = message \oplus clé \oplus clé = message
.
Ce type de chiffrement instaure deux sécurités immédiates :
- Sans connaissance de la clé, un chiffré peut donner n'importe quel autre message en fonction de la pseudo clé qui serait utilisée pour déchiffrer
- La sortie d'un tel chiffrement est totalement uniforme (car la création de la clé serait issue d'un keygen uniforme : message indépendant de la clé
\oplus
clé uniforme = une sortie totalement uniforme).- Cela permet d'empêcher les tentatives d'attaques fréquentielles
Problèmes
On a besoin d'une clé au moins aussi longue que la longueur du message. D'autant que d'après Shanon, on a beosin que la taille de la clé soit à minima supérieure ou égale à celle du message, autrement, il existe un algorithme capable de casser le secret.
En revanche, on peut se servir de ce type de protection dans le cas d'algorithmes one to many, qui correspondent en général à des algorithmes de signatures.
Chiffrements symétrique
Pour optimiser le chiffrement on souhaiterait
- de petites clés
- on accepte de réduire la sécurité sur le secret parfait pour parvenir à avoir de petites clés ET que les ressources nécessaires pour briser le secret sont démesurées
- un temps de chiffrement/déchiffrement raisonnable sur des machines standards.
Chiffrement à flots | basé sur le chiffrement XOR
Chiffrement à blocs
- Messages découpés en blocs de taille fixe n
- La clé est choisie comme une chaine aléatoire de caractères de taille k
- Chaque bloc est chiffré par le même mécanisme de chiffrement avec la clé et produit ainsi des blocs chiffrés de taille n
- Déchiffrement basé sur la même clé et la même taille de blocs
On considère un chiffrement à bloc réussi si
- Les blocs sont assimilables à des permutations
- Un n-bit block chiffré est indistinguable d'un random n-bit block
En pratique, pour valider ce type de chiffrement, on se base sur les propriétés de Shannon :
- Diffusion : Si 1 bit change dans le bloc d'origine, il faut que statistiquement, plus de la moitié du bloc chiffré soit impactée
- Confusion : 1 bit du bloc chiffré doit être lié à plusieurs bits de la clé
Réseau de Substitutions/Permutations
Une autre techinque de chiffrement consiste à faier passer le message dans une chaine de bloc de substitutions permutations :
- Chacune des fonctions de S/P est réversible
- Chaque itération de S/P est appelée un Round
- Plus il y a de round, plus le chiffré en sortie sera uniforme
- Ici, on considère que le niveau de sécurité est proche de celui d'une attaque par force brute qui est une recherche à tatons de la clé de chiffrement
on a donc ici nb_{itération de recherches} = 2^{security level} = 2^{taille de la clé}