Upload
dangtuyen
View
216
Download
0
Embed Size (px)
Citation preview
Plan de cours
1. Cryptographie ?
2. Un peu d'histoire
3. Cryptographie symétrique
4. Fonctions de hachage
5. Cryptographie asymétrique
6. Attaques
7. Implémentations
8. Infrastructures de gestion de clés
9. Réseaux de confiance
10. Conclusion
Objectifs
● Comprendre– les problématiques de sécurité de l'information– le rôle de la cryptographie dans la protection de l'information– les fonctionnalités cryptographiques fondamentales
● Connaître– des exemples de mécanismes cryptographiques– leur usage– leur statut de sécurité actuel
Contexte
● Notre problème :– Protection d'un système d'information
● Information numérique● Communications sur des canaux publics● Machines reliées par un réseau● Multi-utilisateurs
– Protection des informations
Besoins en sécurité
● Disponibilité– Déni de service
● Intégrité (cryptographique)– Altération du contenu
● Authentification– Usurpation d'identité
● Confidentialité– Espionnage
● Traçabilité / preuve– Répudiation du message
Intégrité
Propriété assurant que des données n’ont pas été modifiées ou détruites de façon non autorisée.
Garantie que le système et l'information traitée ne sont modifiés que par une action volontaire et légitime.
Authentification
L'authentification a pour but de vérifier l'identité dont une entité se réclame. Généralement l'authentification est
précédée d'une identification qui permet à cette entité de se faire reconnaître du système par un élément dont on l'a
doté.
Identification : permet de connaître l'identité
Authentification : vérifie cette identité– À l'aide : d'un secret, d'un objet, d'un caractère (photo,
biométrie), d'un savoir faire (signature)
Confidentialité
Propriété d’une information qui n’est ni disponible, ni divulguée aux personnes, entités ou processus non
autorisés.
En résumé :● protection contre une divulgation non autorisée● seulement vous et l'expéditeur connaissent
l'information
Traçabilité / preuve:
La non-répudiation est le fait de ne pas pouvoir nier avoir participé à des échanges, totalement ou en partie.
Deux formes de non-répudiation :– la « non-répudiation de l’origine » garantit que
l’émetteur d’informations ne peut pas nier impunément avoir envoyé les informations
– la « non-répudiation de la réception » garantit que le destinataire des informations ne peut pas nier impunément avoir reçu les informations
La science du secret● Définition [Source : TLFi, ́ http://frantext.atilf.fr/]
Cryptographie (crypto-, du grec κρυπτoς, « caché »)● Étude, science des écritures secrètes, des
documents chiffrés
● Applications :– SSL/TLS, ssh, gpg, etc.– Carte bleue, téléphone portable, Wi-Fi, etc.
Cryptologie● Étude de la protection de l'information sous forme
numérique contre des accès ou manipulations non-autorisées
Cryptologie = cryptographie + cryptanalyse
● Cryptographie : conception des algorithmes crytographiques
● Cryptanalyse : évaluation de la sécurité des algorithmes cryptographiques
Un empilement de couches
Primitives
Modes / padding / encapsulation
Mécanismes cryptographiques
Protocoles
Lois
Impl
émen
tatio
ns
Mat
érie
l
Impl
émen
tatio
ns
Mise en oeuvre globale
Mécanismes fondamentaux
● Contrôle d'intégrité cryptographique– Fonction de hachage
● Génération de clés– Générateurs d'aléa
● Authentification de l'origine– Code d'authentification de message (MAC) ou signature
● Confidentialité– Chiffrement
Modèle de communication
● Communication par canaux (Shannon)
SourceCodeur
de sourceCodeurde canal
Décodeurde canal
Canal bruité PuitsDécodeurde source
Communication sans bruit
SourceCodeur
de source
Emetteur
Codeurde canal
Décodeurde canal
Canal bruité
Canal de communication public
PuitsDécodeurde source
Récepteur
Communication cryptographique
SourceCodeur
de source
Emetteur
Codeurde canal
Décodeurde canal
Canal bruité
Canal de communication public
PuitsDécodeurde source
Récepteur
Tra
item
en
t cr
ypto
gra
ph
iqu
e
Dé
-tra
item
en
t cr
ypto
gra
ph
iqu
e
Attaque active Attaque passive
Communication cryptographique
● Version « folklorique »
Alice Canal de communication public Bob
Tra
item
en
t cr
ypto
gra
ph
iqu
e
Dé
-tra
item
en
t cr
ypto
gra
ph
iqu
e
Charlie Eve
Besoins des clés
● Un algorithme– Est long à concevoir– Doit être transmis aux utilisateurs– Doit être pouvoir implémenté sur du matériel– Doit être maintenu
● Les algorithmes doivent-ils être secrets ?– Si non, quel est le secret ? Pour qui ?
Authentification : réalisable par l'émetteur uniquement, vérifiable par n'importe qui
Chiffrement : chiffrement réalisable par n'importe qui, déchiffrement uniquement par le récepteur
Cryptographie sans clé
● Plusieurs mécanismes de cryptographie publics et sans clé– Générateurs d'aléa– Fonctions de hachage
Vocabulaire● Chiffrer / déchiffrer : on possède la clé
– Crypter / encrypter / cryptage● Décrypter (décryptage) : lire le contenu d'un message
chiffré sans posséder la clé de déchiffrement● Obscurcissement / Brouillage
– Obfuscation / obfusquer● Forgerie / contrefaçon
– Forgery● Malveillant
– Malicieux
Vocabulaire
● Encodage ≠ chiffrement– Transformation réversible– Sans secret / clé– Exemple : encodage en base 64
Historique
Première Guerremondiale
Seconde Guerremondiale
1976 : Diffie-Hellman1977 : DES1978 : RSA1992 : MD51995 : SHA-11998 : AES2001 : SHA-22013 : SHA-3
Antiquité
XVIè siècle
XIXè siècle
Cryptographie « classique »
● Méthodes de chiffrement antiques– Manuelles (« papier et crayon »)– Parfois utilisant une aide mécanique (scytale de
Sparte)● Algorithmes très simples
– Substitutions (remplacements ou décalages)– Transpositions (création d'anagrammes)
Quelques exemples
● Scytale de Sparte (~ 400 avant JC)– Chiffrement par transposition– La clé est le diamètre de la scytale
● Atbash (~ -500 avant JC)– Chiffrement par décalage (cas particulier de substitution)–
–
● Cesar (~ -50 avant JC)– Chiffrement par décalage–
–
– Exemple : J'AIME LA CRYPTOGRAPHIE, décalage : 5● Résultat : OFNRJ QFHWD UYTLW FUMNJ
● ROT13 !
En(x)=(x+n)mod 26Dn(x )=(x−n)mod 26
Clair A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Chiffré Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
Chiffrement par substitution :cryptanalyse
● Cas monoalphabétique– Analyse de fréquences
● Attaque sur chiffré seul● Inférence de la langue et
de l'alphabet utilisés
– Calcul de l'indice de coïncidence● Probabilité de répétitions des lettres du message chiffré● Déduction du type de chiffrement et longueur probable de la clé
● Formule de calcul : IC=∑q=A
q=Z nq(nq−1)
n (n−1)
Chiffrement par transposition : cryptanalyse
● La transposition (ou permutation) ne change pas les fréquences ni l'IC
● Attaque par clair-connu (Known-plaintext)– On connait des textes clairs et leurs chiffrés– On retrouve la longueur de la clé puis la clé
Jusqu'au XVIème siècle
● Cryptanalyse des substitutions monoalphabétiques vers 800– Besoin d'améliorer les techniques pour
complexifier les attaques– XVIème siècle très prolifique en ce sens
● Arrivée des chiffrements polyalphabétiques– Objectif : empêcher les analyses fréquentielles
Chiffre de Vigenère (1586)
● Substitution polyalphabétique :– Version généralisée du chiffrement de César– Génération d'une clé de plusieurs caractères– Au lieu d'utiliser le même décalage pour chaque lettre, on utilise un
décalage dépendant de chaque caractère de la clé– La sécurité dépend de la longueur de la clé
● Présenté au XVIè siècle, il n'a pas été cassé avant le XIXè !– Cassé publiquement par l'officier prussien Friedrich Kasiski qui a publié sa
méthode en 1863, confirmé par Charles Babbage– En réalité, créé par Giovan Battista Bellaso en 1533.
Chiffre de Vigenère : exemple
Texte clair : J'AIME LA CRYPTOGRAPHIE
Clé : IIENS
Texte chiffré : RIMZW TIGEQ XBSTJ IXLVW
Clair J A I M E L A C R Y P T O G R A P H I E
Clé I I E N S I I E N S I I E N S I I E N S
Décalage 8 8 4 13 18 8 8 4 13 18 8 8 4 13 18 8 8 4 13 18
Chiffré R I M Z W T I G E Q X B S T J I X L V W
Chiffre de Vigenère : cryptanalyse
● Cryptanalyse statistique :– Trouver la longueur de la clé par recherche de
motifs● Recherche du PGCD des écarts entre les motifs● Efficace surtout sur de longs textes
– Retour à un cas de substitution monoalphabétique● Analyse de fréquence pour chaque caractère de la clé
Du 19è siècle à la Seconde Guerre mondiale
● Les utilisations militaires se multiplient● Formalisation des mécanismes
cryptographiques– Principes de Kerckhoffs (1883)
● Améliorations des techniques existantes :– Algorithme « Playfair », basé sur la substitution
polyalphabétique de digrammes– Chiffre de Vernam
Principes de Kerckhoffs (1883)
● Traité de Kerckhoffs : « desiderata de la cryptographie militaire » :– Le système doit être matériellement, sinon mathématiquement, indéchiffrable– Il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvénient tomber entre
les mains de l’ennemi – La clef doit pouvoir en être communiquée et retenue sans le secours de notes
écrites, et être changée ou modifiée au gré des correspondants– Il faut qu’il soit applicable à la correspondance télégraphique– Il faut qu’il soit portatif, et que son maniement ou son fonctionnement n’exige pas
le concours de plusieurs personnes– Enfin, il est nécessaire, vu les circonstances qui en commandent l’application, que
le système soit d’un usage facile, ne demandant ni tension d’esprit, ni la connaissance d’une longue série de règles à observer
● Maxime de Shannon : « L'ennemi connaît le système »
Chiffre de Vernam (1917)● Principe du masque jetable
– Clé à usage unique de la taille du message en clair– Tirage aléatoire renforce encore le système (Mauborgne – 1918)
● Problèmes pratiques– Transmission de la clé ?
● Par un canal sécurisé périodiquement● Utilisation d'un « livre de codes »● Génération simultanée des deux côtés par un algorithme prédéfini
– Aléa de la clé ?● Très rarement utilisé
– Téléphone rouge– Chiffrement manuel par les espions– Utilisé entre Fidel Castro et le Che Guevara dans les années 60
Seconde Guerre mondiale
● Industrialisation de la cryptographie– Utilisation de machines électromagnétiques
● Basées sur des chiffrements polyalphabétiques● Sous forme de machines à écrire
● Exemples– 1939-44 : Enigma
● Cassée en 1940 par les Alliés pour gagner un à deux ans de guerre...
– 1930-60 : Machines Hagelin● Utilisées pas les Français pendant la Seconde Guerre mondiale et
après
Cryptographie moderne
● Depuis 1950, les moyens de calcul s'améliorent– Arrivée des ordinateurs– Explosion des capacités des processeurs
● Nouveaux canaux de communication– Arrivée d'Internet– Besoin d'échanger en temps réel– Les volumes à chiffrer explosent également...
Principes● Un secret est partagé entre les deux parties :
– Opérations symétriques– Mécanisme de chiffrement
● Problématique– Nécessité de disposer d'un canal de confiance
pour échanger ce secret– Authentification préalable ?
● On parle de clé secrète
Principe de fonctionnement
DéchiffrementChiffrement Texte chiffré
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Bob
● Alice souhaite écrire à Bob– Partage d'un secret préalable obligatoire
Familles
● Deux familles de chiffrement symétrique– Chiffrement par flot– Chiffrement par bloc
● Très proches en fait...
Chiffrement par flot● Principe :
– Flot de données de taille arbitraire, possiblement infini– Clé secrète de taille finie échangée sur un canal sécurisé– Génération simultanée, des deux côtés, d'un flot
pseudo-aléatoire de bits● Algorithme de génération initialisé par la clé secrète● A rapprocher du chiffrement de Vernam, mais le secret ici est la clé,
pas le flot pseudo-aléatoire
● Opérations cryptographiques simples– Le flux généré est combiné au clair, bit à bit, à l'aide d'une
opération réversible (XOR ou équivalent)– Très peu coûteux pour les implémentations matérielles
Exemple● Algorithme RC4 (1987)
– Deux sous-algorithmes :● KSA (Key-scheduling algorithm)
– Permutation dans un tableau S de 256 octets– La clé sert à la permutation initiale (en général 40 à 128 bits, jusqu'à 2048 bits)
● PRGA (Pseudo-random generation algorithm)– A chaque itération, modification de l'état du tableau– Application de la fonction de chiffrement (XOR ou addition dans un groupe)
– Très employé● Dans SSL/TLS, car très performant● Dans le WEP (Wi-Fi)
– Considéré faible maintenant
i j
0 1 2 S[i]+S[j] i j 253 254 255
S
S[i] S[j]
S[i]+S[j]K
Chiffrement par flot : attaques● Réutilisation de flot
– A et B sont deux messages d'une même longueur, chiffrés avec la même clé
– Soit C le flot pseudo-aléatoire généré par l'algorithme. Ce flot est de la même longueur que A et B.
●
●
– Si un attaquant intercepte E(A) et E(B) alors :● XOR est commutative●
E ( A)=A xor C
E ( A) xor E (B)=(A xor C) xor(B xor C)
=A xor B xor C xor C=A xor B
E (B)=B xorC
X xor X =0
Faiblesses du WEP
● Wired Equivalent Privacy– Algorithme de sécurité pour les réseaux 802.11– Basé sur RC4
● Secret de 64 ou 128 bits– En fait clé de 40/104 bits + IV de 24 bits– 24 bits 50 % de chance de répétition tous les 5000 →
paquets– Cas de réutilisation de flot, avec des contenus de
paquets prédictibles (voire injectés) !
Chiffrement par bloc● Principe :
– Opérations sur un flot généralement fini– (dé)chiffrement sur des blocs de taille fixe
● Découpage du flot selon la taille du bloc– Il faut parfois rajouter du padding
M1 M2 M3 M4 M5 M6 padding
EK
C1 C2 C3 C4 C5 C6
EK EK EK EK EK
Modes opératoires
● Opérations de (dé)chiffrement sur les blocs variés– En fonction des performances– De la sécurité– De la propagation d'erreurs au cours du
chiffrement● Plusieurs modes existent :
– ECB, CBC, CFB, OFB, CTR, CTS, XTS...
CBC - « Cipher Block Chaining »● Chaînage des blocs● Ajout d'un IV pour rendre chaque message
unique
Les algorithmes par bloc● Historique : DES (Data Encryption Standard) en 1977
– Clef de 56 bits, blocs de 64 bits– Basé sur des réseaux de Feistel– Attaques : recherche exhaustive avec du matériel dédié (FPGA)
● EFF « Deep Crack » (1998) : 56 heures, 250 000$● COPACOBANA (2006) : 6,4 jours de moyenne, 10 000$● RIVYERA S3-5000 (2008) : moins d'une journée, 128 FPGA Xilinx Spartan-3
5000
– Variante : 3DES● Basé sur 2 ou 3 clés DES (112 à 168 bits)● Chiffrement (clé 1) Déchiffrement (clé 2) Chiffrement (clé 1 ou 3)→ →
Les algorithmes par bloc
● Algorithmes actuels :– Advanced Encryption Standard (Rijndael) en 1998
● Clés de 128, 192, 256 bits● Blocs de 128 bits● Très rapide
– Blowfish / Twofish– TEA / XTEA / XXTEA
Bilan● Avantages :
– Rapidité d'exécution– Facilité d'implémentation
● Logiciellement : substitution ou opérations simples● Matériellement : Intel fournit même des instructions « aes » dans
ses derniers processeurs
● Inconvénients :– Les deux parties doivent connaître la clef
● Nécessite un canal auxiliaire de confiance
– Les communications à N parties nécessitent clésn (n−1)
2
Fonctions de hachage ● Principes :
– Fonction à sens unique : prend une entrée de taille quelconque et donne une sortie de taille fixe
– Doit être facile et rapide à calculer– Pas de clé
● Vocabulaire– Hash function en anglais– Empreinte numérique ou condensat souvent rencontrés
● Usages courants :– Vérification d'intégrité (MIC)– Authentification (MAC et signature)– Stockage de mots de passe
Fonctions de hachage : propriétés● Soit H une fonction de hachage, alors H doit
résister aux attaques par calcul de– Premier antécédent (préimage) :
● étant donné y, il est difficile de trouver x tel que y = H(x)
– Deuxième antécédent (seconde préimage) :● étant donné (x, H(x)) il est difficile de trouver x' tel que
H(x') = H(x)
– Collisions :● il est difficile de trouver un x et un x' tels que
H(x') = H(x)
MIC - « Message Integrity Check »
Texte en clair
67afbec7c704e5497d100766b16708bf3ff977a1
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
● Mécanisme d'intégrité
Bob
67afbec7c704e5497d100766b16708bf3ff977a1
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Canal de communication 1
Canal de communication 2?
MAC - « Message Authentication Check »
Texte en clair
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
● Mécanisme d'authentification et d'intégrité– Appelé aussi parfois « scellement »
Bob
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
?
67afbec7c704e5497d100766b16708bf3ff977a1
67afbec7c704e5497d100766b16708bf3ff977a1
HMAC (RFC 2104)● Implémentation de MAC●
– H est une fonction de hachage– K est la clé secrète– m le message à authentifier– opad et ipad des constantes hexadécimales
● Exemples :– HMAC-MD5– HMAC-SHA1-96– HMAC-SHA256-128
HMAC (K , m)=H ((K⊕opad )∥H ((K⊕ ipad )∥m))
Algorithmes● Usuels
– MD5 (128 bits) : cassé !● Collisions (2008) et attaques en préimage (2009)
– SHA-1 (160 bits) : ne plus utiliser si possible● Collisions (2008) et attaques sérieuses
● Recommandés :– SHA-2 (256, 384 ou 512 bits) et bientôt SHA-3
● Note : HMAC-{MD5,SHA-1} ne souffrent pas des vulnérabilités précitées et sont toujours utilisables, bien que peu recommandés
Utilisations courantes● Stockage de mots de passe
– Unix : historiquement DES (crypt()), puis FreeBSD MD5– Hachage avec une graine dans tous les cas– phpass (http://www.openwall.com/phpass/)
● PBKDF2 (Password-Based Key Derivation Function 2)– Dérivation d'une clé secrète basée sur un mot de passe
● DK = PBKDF2(PRF, Password, Salt, c, dkLen)● WPA2 : DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)● Utilisation par Microsoft DPAPI, TrueCrypt, Apple iOS, FileVault, Zend
Framework, Android, etc.
Utilisation courantes
● Authentification– Protocoles par défi-réponse
● Signature numérique– cf. partie cryptographie asymétrique
Générationd'un défi « ds »
Générationd'un défi « dc »
Validation del'authentificationdu client
hash(dc || ds || secret)
connexion
ServeurClient
Validation del'authentification
du server
hash(ds || dc || secret)
ds
Cryptographie asymétrique
● 1976 : W. Diffie et M. Hellman publient « New directions in cryptography »– “In public key cryptosystem enciphering and deciphering are governed
by distinct keys.”– Deux clés entrent en jeu :
● une clé de chiffrement, publique● une clé de déchiffrement, privée
● Conséquences :– Plus besoin d'un canal assurant la confidentialité pour échanger un
secret, seule l'authentification est nécessaire– Principe de la signature numérique, impliquant la non-répudiation
Quelques dates
● 1976 : Diffie-Hellman● 1978 : RSA (Rivest, Shamir et Adleman)
– 1983 : RSA est breveté– 2000 : RSA entre dans le domaine public
● 1984 : ElGamal● 1991 : DSA/DSS● 2004 : ECC (courbes elliptiques)
Mathématiques utilisées● Problèmes difficiles utilisés couramment :
– Logarithme discret (Diffie-Hellman, DSA, ElGamal)– Factorisation des grands entiers (RSA)– Logarithme discret sur les courbes elliptiques
(ECDSA)
● Autres problèmes (pour information) :– Schémas multivariés (HFE)– Réseaux géométriques
RSA
● Fonctionnement :– Soit où p et q deux grands premiers et – Soit e tel que tel que – On en déduit d tel que– Chiffrement :– Déchiffrement :
● Attaque :– Factorisation de N, p et q donnant d– Record public de factorisation : module RSA de 768 bits en 2009– Recommandé d'utiliser des clés de 2048 bits au minimum
N= p⋅q φ(N )=( p−1)(q−1)
1<e<φ(N )
m≡cd mod N
c≡me mod N
d⋅e≡1mod φ(N )
pgcd (e ,φ(N ))=1
Utilisation : chiffrement
DéchiffrementChiffrement Texte chiffré
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Bob
● Alice souhaite écrire à Bob– Bob a envoyé sa clé publique à Alice– Bob utilise sa clé privée pour déchiffrer
Clé publiquede Bob
Clé privéede Bob
Signature numérique
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
● Mécanisme d'authentification et d'intégrité– Principe de non-répudiation
Bob
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
67afbec7c704e5497d100766b16708bf3ff977a1
Clé privéed'Alice
67afbec7c704e5497d100766b16708bf3ff977a1
Chiffrement
Texte en clair
Signature numérique
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Bob
● Vérification avec la clé publique de l'émetteur
67afbec7c704e5497d100766b16708bf3ff977a1
67afbec7c704e5497d100766b16708bf3ff977a1 Déchiffrement
Clé publiqued'Alice
67afbec7c704e5497d100766b16708bf3ff977a1
Comparaison des empreintes
Authentification ≠ signature● L'authentification permet de répondre à la question :
Qui a émis le message ?
● Pour savoir si on peut parler de signature, il faut savoir qui pose la question– MAC : l'autre possesseur de la clé secrète, donc deux
personnes peuvent émettre– Signature : un possesseur de la clé publique, donc tout le
monde peut vérifier, mais une seule personne peut émettre● Principe de non-répudiation !
Utilisation : transport de clé
DéchiffrementChiffrement
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Bob
● Problématique du transfert du secret...
Texte chiffré
Utilisation : transport de clé
DéchiffrementChiffrement
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Bob
● On chiffre une clé secrète pour la transmettre
Clé publiquede Bob Clé privée
de Bob
Texte chiffré
Échange de clés : Diffie-Hellman
K b=Ab mod p=(ga)
bmod p=g a⋅b mod p=(gb)
a mod p=Ba mod p=K a
BobAlice
K b=Ab mod p
K a=Ba mod p
Génération de a , g et pCalcul de A=g a mod p
Calcul de B=g bmod p
Envoi de A , g et p
Envoi de B
Diffie-Hellman
● Échange de secrets sans canal préalable– Vulnérable à une attaque man-in-the-middle– Nécessite d'être réalisé sur un canal authentifié
● Permet la Perfect Forward Secrecy– Renouvellement fréquent des secrets– En cas de compromission d'une conversation, une
conversation antérieure ne pourra être déchiffrée
Bilan● Avantages :
– Pas besoin de canal de confiance, la clé est publique– Permet de faire :
● de la signature numérique avec non-répudiation● de l'échange de clé
● Inconvénients :– Opération extrêmement lentes
● On ne peut chiffrer que des informations petites
– Comment déterminer si l'on possède la bonne clé publique ?Problème de l'authentification du canal
Bilan comparatif
Clé secrète Clé publique
Gestion ● Clé identique et secrète aux deux extrémités● Nombre de clés en O(n²)● Canal auxiliaire authentifié et confidentiel
● Seule la clé privée est secrète● Nombre de clés en O(n)● Canal auxiliaire authentifié seulement
Sécurité Pas de preuve formelle de sécurité
Repose sur des problèmes mathématiques difficiles
Performances Très rapides(10-100 Mbits/s)
Très lentes (10-100 Kbits/s)
Performances : symétrique
Type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
DES 64.88 MB/s 67.64 MB/s 68.70 MB/s 66.54 MB/s 61.73 MB/s
3DES 24.30 MB/s 26.63 MB/s 26.60 MB/s 26.92 MB/s 26.75 MB/s
Blowfish 114.44 MB/s 122.11 MB/s 123.68 MB/s 124.54 MB/s 124.99 MB/s
AES-128 95.68 MB/s 103.62 MB/s 107.47 MB/s 109.22 MB/s 109.76 MB/s
AES-192 83.20 MB/s 89.19 MB/s 90.42 MB/s 91.00 MB/s 91.53 MB/s
AES-256 71.99 MB/s 76.27 MB/s 76.91 MB/s 78.04 MB/s 78.14 MB/s
Performances : hachage
Type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
MD5 57.66 MB/s 172.00 MB/s 382.61 MB/s 581.56 MB/s 648.30 MB/s
SHA1 61.54 MB/s 174.90 MB/s 379.71 MB/s 517.75 MB/s 595.43 MB/s
SHA256 44.36 MB/s 96.29 MB/s 163.41 MB/s 200.46 MB/s 210.24 MB/s
SHA512 37.72 MB/s 142.84 MB/s 214.53 MB/s 299.46 MB/s 340.85 MB/s
Performances : asymétrique
Type Signatures /s Vérifications /s
RSA 512 11511.5 175923.7
RSA 1024 3546.3 59771.5
RSA 2048 541.4 17104.0
RSA 4096 72.3 4536.9
DSA 512 14294.7 14184.9
DSA 1024 6036.9 5307.3
DSA 2048 1806.5 1507.7
ECDSA 256 7331.6 2913.3
ECDSA 384 2498.8 1113.4
Comparatif des forces de clés
Longueur de clé secrète
Algorithme symétrique
Diffie-Hellman RSA ECC
128 AES-128 3072 3072 256-383
192 AES-192 7680 7680 384-511
256 AES-256 15360 15360 512+
Taille des clefs recommandées● Algorithmes symétriques :
– 128 bits minimum● Algorithmes asymétriques :
– RSA : 2048 bits recommandés● Record (public) de factorisation : 768 bits (environ 68 bits en
symétrique)
– DSA : 2048 bits également● Similarités avec la factorisation
– Courbes Elliptiques (ECDSA) : 256 bits● Fonctions de hachage :
– Sortie de 256 bits (SHA-256)
Catégories d'attaques● Cryptanalyse
– Attaque sur l'algorithme directement– Ou sur une de ses propriétés– But : « casser » l'algorithme ou découvrir la clé
● Recherche exhaustive de clé– Peut-être infiniment long sans cryptanalyse...
● Attaques protocolaires– Cible : mécanismes cryptographiques– But : attenter aux besoins en confidentialité, intégrité,
authentification ou non-répudiation
Cryptanalyse : classification● Selon les clairs/chiffrés disponibles :
– Attaque à chiffré seul (COA)– Attaque à clair connu (KPA)
● Connaissance de clairs et de leurs chiffrés
– Attaque à clair choisi (CPA)● Connaissance de clairs et accès au chiffreur en boîte noire● Toujours possible pour les chiffrements à clé publique
– Attaque à chiffré choisi (CCA)● Connaissance de chiffrés et accès au déchiffreur en boîte
noire
Cryptanalyse : classification● Cryptanalyse « classique »
– Attaques fréquentielles● Substitution monoalphabétique
– Indice de coïncidence● Substitution {mono,poly}alphabétique
– Attaque par dictionnaire– Attaque par force brute
Cryptanalyse : classification
● Cryptanalyse « moderne »– Cryptanalyse linéaire– Cryptanalyse différentielle– Cryptanalyse quadratique– etc.
Contextes d'attaques● Selon les spécifications disponibles
– Cryptanalyse en boîte noire● L'implémentation et parfois l'algorithme sont inconnus
– Cryptanalyse structurelle● Cf. slide précédent
● Selon l'accès au matériel chiffrant disponible :– Cryptanalyse par canaux secondaires/auxiliaires
● Par consommation électrique● Par temps d'utilisation● Par émissions électromagnétiques● Par injection de fautes
Un système sûr ?● La sécurité inconditionnelle
– But : obtenir une confidentialité parfaite– La connaissance du message chiffré n'apporte
aucune information sur le message clair● Ni sur sa longueur● Ni sur son probable contenu
– La seule attaque est la recherche exhaustive– Nécessite une clé aléatoire et au moins aussi
longue que le texte clair... cf. Vernam !
Sécurité calculatoire● Les systèmes utilisés dans la pratique sont
théoriquement cassables.● En pratique :
– la connaissance du message chiffré ne permet de retrouver ni la clé ni le message clair en un temps humainement raisonnable
– La cryptographie à clé publique est rendue possible par la sécurité pratique
– RSA 512 : 1 mois sur un seul coeur en 2012– RSA 768 : 2 ans et 3 mois de calcul sur plusieurs dizaines de
coeurs en 2009– RSA 1024 et + : ?
Recherche exhaustive de clé secrète
● Clé de n bits : 2^n clés possibles● Retrouver la clé : 2^(n-1) essais en moyenne● DES (1977), clé secrète : 56 bits 2^55 (→ ~ 10^17)
– 1997 : 39 jours sur 10 000 Pentium– 1998 : EFF DES Cracker
● $250 000 : 2.5 jours● $1 000 000 : 35 minutes en théorie● $10 000 000 : 3.5 minutes en théorie
– 2006 : COPACABANA (reprogrammable)● $10 000 : 7 jours
Man-in-the-middle (ou attaque du singe intercepteur)
DéchiffrementChiffrement
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Bob
● Soit une situation normale
Clé publiquede Bob Clé privée
de Bob
Texte chiffré
Man-in-the-middle (ou attaque du singe intercepteur)
DéchiffrementChiffrement
Cher Bob,
Rendez-vous à13h chez moi.Charlie ne doitrien en savoir.
Signé : Alice
Alice
Cher Bob,
Tout est finientre nous. Jesuis navrée.
Signé : Alice
Bob
● La même en moins normale
Clé privéede Bob
Texte chiffré
Charlie
Cher Bob,
Tout est finientre nous. Jesuis navrée.
Signé : Alice
Clé publiquede Charlie
Clé publiquede Bob
Clé privéede Charlie
Texte chiffré
Déchiffrement Chiffrement
Implémentation● L'utilisation correcte d'algorithmes est très difficile !
– De nombreuses précautions à prendre : padding, choix des paramètres, détection de clés faibles
– L'utilisation d'un aléa de qualité est extrêmement important
● Conseil :– Utiliser des bibliothèques reconnues voire certifiées si
possible :● OpenSSL● DPAPI Microsoft● PolarSSL
Erreurs d'implémentation● OpenSSL Debian (2008) :
– « Optimisation » entraînant une baisse de l'aléa disponible à seulement... 15 bits par clé !
– Utilisé par OpenSSH / OpenVPN et plein d'autres !● Compromission des clefs faibles● Perte de la PFS !
– Attaques pratiques : ● ssh_decoder, plugin wireshark pour SSL
● GnuTLS : chaîne de validation des certificats biaisée (2008... et 2014) :
The _gnutls_x509_verify_certificate function in lib/x509/verify.c in libgnutls in GnuTLS before 2.6.1 trusts certificate chains in which the last certificate is an arbitrary trusted, self-signed certificate, which allows man-in-the-middle attackers to insert a spoofed certificate for any Distinguished Name (DN).
IGC - Infrastructure de gestion de clés
● Autres noms :– Infrastructures de clés publiques– Public-key infrastructures (PKI)
● Principe élémentaire de sécurité :– L'utilisation d'une clé publique pour chiffrer se fait
uniquement quand on est sûr de son origine– Sinon... possibilité d'attaque de type
man-in-the-middle !
Problématiques
● Cryptographie symétrique– Comment échanger un secret ?
● Il faut un canal chiffré● Il faut un canal authentifié
● Cryptographie asymétrique– Comment échanger un secret ?
● Il faut un canal authentifié
– La cryptographie asymétrique peut jouer le rôle de canal chiffré pour le secret symétrique
● Authentification du canal ?– On ne peux pas utiliser de la cryptographie..– … sinon le serpent se mordra la queue !
Authentification
● Plusieurs mécanismes cryptographiques– MAC– Signature numérique
● Utilisation d'un canal « hors-bande »– Transmission de secrets hors-ligne– Utilisation d'un autre protocole pour faire l'échange– Disposer d'une preuve de l'identité de la machine distante
avant de valider une connexion● Dans tous les cas, il faut pré-partager quelque chose...
Certificats et confiance
● IGC basées sur le standard X.509 (1988)– Définition d'un système hiérarchique de confiance– Basé sur des « Autorités de certification » (AC) et des « Certificats »
● Le certificat– Associe une clé publique à une identité– Permet à un utilisateur d'authentifier un service
● L'autorité de certification – Est garante de la sécurité du système– Sa clé privée signe les certificats et les listes de révocations
● Problèmes essentiels : la révocation et la confiance en cette autorité...
Opérations fondamentales● Il y a deux opérations fondamentales dans
toute IGC – La vérification
● Processus permettant de relier une valeur de clé publique à
– un individu– une organisation– ou tout autre entité
● Utilisé lors de la génération du certificat– La validation
● Processus de vérification de la validité du certificat● Utilisé lors de l'utilisation du certificat
Certificat X.509
● Unité de base reliant– Une identité– Une clé publique– Une période de validité– Un usage
● Sous la forme d'une structure de données– Codage en ASN.1– Stocké en binaire (DER) ou base64 (PEM)
● Participe à l'authentification des parties en garantissant l'authenticité des clés publiques impliquées
Certificat X.509$ openssl x509 -in www.iiens.net.crt -noout -textCertificate: Data: Version: 3 (0x2) Serial Number: 47 (0x2f) Signature Algorithm: sha1WithRSAEncryption Issuer: C=FR, ST=France, L=Evry, O=ARISE, OU=ARISE, CN=ARISE/[email protected] Validity Not Before: May 18 17:23:18 2013 GMT Not After : May 18 17:23:18 2014 GMT Subject: C=FR, ST=France, O=ARISE, OU=ARISE, CN=*.iiens.net/[email protected] Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:aa:81:53:0d:86:00:40:58:a2:4a:f0:a3:ea:16: [...] d4:9d Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: ARISE - OpenSSL Generated Certificate X509v3 Subject Key Identifier: 2B:88:77:7D:A2:D7:71:38:01:B3:E0:1D:CF:AE:AD:8D:38:09:6F:E0 X509v3 Authority Key Identifier: keyid:06:DB:EB:57:CA:73:A2:2B:18:05:F2:54:DB:BF:0A:C2:6D:3D:A1:0DDirName:/C=FR/ST=France/L=Evry/O=ARISE/OU=ARISE/CN=ARISE/[email protected] serial:A9:61:E9:81:AB:E2:90:45
Signature Algorithm: sha1WithRSAEncryption 6d:3c:0f:1a:ca:f8:94:ee:66:2f:28:7b:53:32:7f:3e:a0:ee:
[...] 95:81:3f:41
Extensions X.509v3
● subjAltName– Identité par défaut : champ « Subject » (champ CN)
● Subject: C=FR, ST=France, O=ARISE, OU=ARISE, CN=*.iiens.net/[email protected]
– On rajoute des champs complémentaires :● « DNS : » - « email : » - « IP : »
● CA Pathlen– Permet de limiter la longueur de la chaîne de certification
● keyUsage et extendedKeyUsage– Restriction de l'usage des clés– Authentification client, authentification serveur, signature de CRL,
signature de certificats, signature de code, etc.
Usages de clés
extendedKeyUsage (EKU) keyUsage
serverAuthAuthentification d'un serveurTLS
digitalSignaturekeyEncipherment ou keyAgreement
clientAuthAuthentification d'un client TLS
digitalSignature et/ou keyAgreement
emailProtectionMessagerie sécurisée (S/MIME)
digitalSignaturenonRepudiation et/ou (keyEncipherment ou KeyAgreement)
codeSigningSignature des codes mobiles
digitalSignature
timeStamping digitalSignaturenonRepudiation
Listes de révocation$ openssl crl -inform DER -in crl_acDILA_Infra-4.crl -noout -textCertificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: /C=FR/O=Gouv/OU=Direction Information Legale Administrative/OU=0002 13000918600011/CN=AC DILA Infra Last Update: Nov 5 09:17:01 2013 GMT Next Update: Dec 5 09:17:01 2013 GMT CRL extensions: X509v3 Authority Key Identifier: keyid:CF:61:E9:72:A3:2E:D8:28:A5:06:0A:54:A5:94:E0:21:2F:E9:F2:DB
X509v3 CRL Number: 5487Revoked Certificates: Serial Number: E7 Revocation Date: Dec 5 12:45:43 2011 GMT Serial Number: E8 Revocation Date: Dec 5 12:45:28 2011 GMT[...] Revocation Date: Aug 22 12:09:37 2013 GMT Serial Number: 0197 Revocation Date: Aug 22 12:09:28 2013 GMT S ignature Algorithm: sha1WithRSAEncryption be:04:78:d2:b6:70:b6:7e:1c:40:7e:84:75:9d:95:82:a5:0e: [...] 1f:db:dd:36:72:da:91:d2:48:0d:60:7f:07:9c:ad:f6:34:db: 76:1a:32:00
Chaîne de certification
● De la racine au certificat terminal– Souvent 2 à 3 maillons jusqu'à la racine– Parfois aucun, on parle de certificat « auto-signé »– Validation de proche en proche, de bas en haut
● D'abord le certificat final● Puis les intermédiaire● Enfin l'autorité racine
(dans le navigateur)
– Le serveur doit fournir l'intégralitéde la chaîne de certificats au client
Validation d'un certificat
● Pour chaque certificat d'une chaîne, sont vérifiés– La validité de la signature de la clé publique– Les dates de validité– Le statut de révocation– Le nom de l'entité ayant émis le certificat (doit être égal au « subject »
du certificat au-dessus dans la chaîne)– Diverses contraintes et politiques applicables sur les certificats– Si la longueur maximum du chemin n'est pas dépassée (« PathLen »)– Que l'usage des clés est respecté
Services d'une IGC● Plusieurs services autour de la certification :
– L’enregistrement d’un utilisateur– La génération de certificats– Le renouvellement de certificats– La distribution de certificats– La révocation de certificats– L’archivage de certificats– Le séquestre de clés privées
Les « briques » d'une IGC
● Les services précédents sont gérés par :– Une autorité de certification– Une autorité d'enregistrement– Une autorité de dépôt et de distribution– Une autorité de séquestre
Autorité de certification (CA/AC)● Est une autorité de confiance● Chargée de signer
– Des certificats– Des listes de révocations
● Élément central dans une IGC– Possède les secrets nécessaires au maintien de la
chaîne de confiance– A protéger le plus possible– Le plus souvent déconnectée de tout réseau...– … voire gérée sur du matériel dédiée (HSM)
Autorité d’enregistrement (RA/AE)● Point de contact entre l'utilisateur et l'autorité de certification.
– Interface de demande de nouveau certificat– Transmission à la CA– Récupération et publication du certificat signé
● Enregistrement ?– Validation de l'identité du certificat
● Peut-être une personne : pièce d'identité● Un nom de domaine : contact auprès de « postmaster@domaine » ou du registrar
– Demande d'un périmètre● www.example.com● {mail,smtp}.example.com● *.example.com
– Vérification d'unicité
Autorité de dépôt et de distribution
● Rôle : publications des certificats et CRL– Ces données sont publiques...– … et doivent être connues !
● Souvent dans un annuaire– Composant critique d’une IGC – Basé sur LDAP
● Parfois un simple serveur HTTP
Autorité de séquestre● La plupart du temps, les clés privées sont
générées par les clients● On peut conserver la clé privée côté IGC
également :– Pour séquestre, au cas où l'utilisateur la
perd– Pour l'enrôlement de cartes à puces– Pour simplifier la génération pour
l'utilisateur (attention !)
Liste d'autorités « connues »
● Sociétés privées– VeriSign, Thawte, Comodo, DigiCert, GlobalSign– Quasiment toutes américaines...
● États– De très nombreux pays, pour usage national– IGC/A en France, publiée par SGDSN/ANSSI
● Plusieurs centaines enregistrées par défaut dans les navigateurs !
Principe● Utilisation de cryptographie asymétrique
– N'importe qui peut générer sa paire de clés– Publication des clés publiques dans un annuaire
● Pas d'autorité de certification centralisée– D'autres personnes après vérification de l'identité
signent votre clé :● Key signing party● Vérification de l'empreinte + vérification de l'identité
– Et la republient sur l'annuaire● Plus une clé est signée, plus elle est a priori de
confiance
En pratique● Utilisé pour les clefs PGP/GPG :
– Annuaires publiques– Différents niveaux de vérification– Différents niveaux de confiance
● Autres utilisations :– CACert– Thawte Web of Trust (jusqu'en 2009)
● Fourniture de certificats pour la protection des messageries● Utilisation du principe de réseau de confiance
● Problèmes :– Clés perdues / compromises ?– Il faut révoquer ces clés !– Pas de « liste de révocation » centralisée, il faut que chacun publie sa révocation...– … mais celle-ci doit être signée au préalable par la clé révoquée !
Conclusion● La cryptographie est la science du secret● Elle permet de résoudre certains problèmes
dus au format numérique des documents● Les services de sécurité garantis sont :
– La confidentialité– L'authenticité de l'origine des messages– L'intégrité des messages– La non-répudiation
Références● Référentiel général de sécurité (ANSSI)● Handbook of Applied Cryptography. (PDF :
http://www.cacr.math.uwaterloo.ca/hac/)
● Cryptographie Appliquée (Bruce Schneier)● The Emperor's Codes: The Breaking of Japan's Secret
Ciphers (Michael Smith)● http://blog.cryptographyengineering.com/