Cryptographie appliquée

Transcription

Cryptographie appliquée
Cryptographie appliquée
ENSIIE – Avril 2014
Julien Raeis <julien [at] mingbai.org>
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
Cryptographie ?
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é
–
●
Intégrité (cryptographique)
–
●
Usurpation d'identité
Confidentialité
–
●
Altération du contenu
Authentification
–
●
Déni de service
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
Mécanismes cryptographiques
Modes / padding / encapsulation
Primitives
Matériel
Lois
Protocoles
Implémentations
Mise en oeuvre globale
Mécanismes fondamentaux
●
Contrôle d'intégrité cryptographique
–
●
Génération de clés
–
●
Générateurs d'aléa
Authentification de l'origine
–
●
Fonction de hachage
Code d'authentification de message (MAC) ou signature
Confidentialité
–
Chiffrement
Modèle de communication
●
Source
Communication par canaux (Shannon)
Codeur
de source
Codeur
de canal
Canal bruité
Décodeur
de canal
Décodeur
de source
Puits
Communication sans bruit
Source
Codeur
de source
Emetteur
Codeur
de canal
Canal bruité
Décodeur
de canal
Canal de communication public
Décodeur
de source
Puits
Récepteur
Communication cryptographique
Codeur
de source
Emetteur
Codeur
de canal
Attaque passive
Canal bruité
Décodeur
de canal
Canal de communication public
Dé-traitement cryptographique
Source
Traitement cryptographique
Attaque active
Décodeur
de source
Puits
Récepteur
Communication cryptographique
Version « folklorique »
Alice
Eve
Canal de communication public
Dé-traitement cryptographique
Charlie
Traitement cryptographique
●
Bob
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é
–
●
●
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
–
●
Crypter / encrypter / cryptage
Forgery
Malveillant
–
Malicieux
Vocabulaire
●
Encodage ≠ chiffrement
–
Transformation réversible
–
Sans secret / clé
–
Exemple : encodage en base 64
Un peu d'histoire
Historique
Antiquité
XIXè siècle
XVIè siècle
Première Guerre
mondiale
Seconde Guerre
mondiale
1976 : Diffie-Hellman
1977 : DES
1978 : RSA
1992 : MD5
1995 : SHA-1
1998 : AES
2001 : SHA-2
2013 : SHA-3
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)
–
Clair
A B C D E F G H I
–
Chiffré
Z Y X W V U T S R Q P O N M L K J I
Cesar (~ -50 avant JC)
–
Chiffrement par décalage
–
E n ( x)=( x+n) mod 26
D n (x )=( x−n)mod 26
–
–
Exemple : J'AIME LA CRYPTOGRAPHIE, décalage : 5
●
●
J K L M N O P Q R S T U V WX Y Z
Résultat : OFNRJ QFHWD UYTLW FUMNJ
ROT13 !
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é
q=Z
●
Formule de calcul : IC = ∑
q= A
n q (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
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
Texte chiffré : RIMZW TIGEQ XBSTJ IXLVW
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...
Cryptographie symétrique
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
●
Alice souhaite écrire à Bob
–
Partage d'un secret préalable obligatoire
Alice
Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Signé : Alice
Chiffrement
Texte chiffré
Déchiffrement
Signé : Alice
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)
–
–
●
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é
●
●
–
Permutation dans un tableau S de 256 octets
La clé sert à la permutation initiale (en général 40 à 128 bits, jusqu'à 2048 bits)
Dans SSL/TLS, car très performant
Dans le WEP (Wi-Fi)
Considéré faible maintenant
j
i
0
1
2
S[i]+S[j]
i
j
253 254 255
S
S[i]
K
S[i]+S[j]
S[j]
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.
–
●
E ( A)= A xor C
●
E ( B)=B xorC
Si un attaquant intercepte E(A) et E(B) alors :
●
XOR est commutative
●
X xor X =0
E ( A) xor E ( B)=( A xor C) xor(B xor C)
= A xor B xor C xor C
= A xor B
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
EK
EK
EK
EK
EK
C1
C2
C3
C4
C5
C6
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...
ECB - « Electronic Codebook »
●
Quel est le problème ?
ECB - « Electronic Codebook »
●
On peut retrouver les motifs
CBC - « Cipher Block Chaining »
●
●
Chaînage des blocs
Ajout d'un IV pour rendre chaque message
unique
CBC - « Cipher Block Chaining »
●
Impossible à distinguer de l'aléa
CFB - « Cipher Feedback »
●
Permet le chiffrement par flot
CTR - « CounTeR »
●
Permet l'accès aléatoire et le chiffrement par
flot
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 n (n−1) clés
2
Fonctions de hachage
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) :
●
–
Deuxième antécédent (seconde préimage) :
●
–
étant donné y, il est difficile de trouver x tel que y = H(x)
é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 »
●
Mécanisme d'intégrité
Alice
Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Canal de communication 1
Texte en clair
Signé : Alice
Signé : Alice
Canal de communication 2
67afbec7c704e5497d10
0766b16708bf3ff977a1
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
?
67afbec7c704e5497d10
0766b16708bf3ff977a1
MAC - « Message Authentication Check »
●
Mécanisme d'authentification et d'intégrité
–
Appelé aussi parfois « scellement »
Alice
Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Signé : Alice
Texte en clair
Signé : Alice
?
67afbec7c704e5497d10
0766b16708bf3ff977a1
67afbec7c704e5497d10
0766b16708bf3ff977a1
HMAC (RFC 2104)
●
Implémentation de MAC
●
HMAC ( K , m)= H (( K ⊕ opad )∥ H (( K ⊕ ipad )∥ m))
●
–
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
Algorithmes
●
Usuels
–
MD5 (128 bits) : cassé !
●
–
SHA-1 (160 bits) : ne plus utiliser si possible
●
●
Collisions (2008) et attaques sérieuses
Recommandés :
–
●
Collisions (2008) et attaques en préimage (2009)
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
Client
Serveur
connexion
Génération
d'un défi « ds »
ds
Génération
d'un défi « dc »
Validation de
l'authentification
du server
●
hash(dc || ds
|| secret)
c || s
hash(ds || d
ecret)
Signature numérique
–
cf. partie cryptographie asymétrique
Validation de
l'authentification
du client
Cryptographie asymétrique
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 N = p⋅q où p et q deux grands premiers et φ( N )=( p−1)(q−1)
–
Soit e tel que 1<e< φ( N ) tel que pgcd (e ,φ( N ))=1
–
On en déduit d tel que d⋅e≡ 1 mod φ( N )
Chiffrement : c ≡ me mod N
d
m≡
c
mod N
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
Utilisation : chiffrement
●
Alice souhaite écrire à Bob
–
Bob a envoyé sa clé publique à Alice
–
Bob utilise sa clé privée pour déchiffrer
Alice
Clé publique
de Bob
Clé privée
de Bob
Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Signé : Alice
Chiffrement
Texte chiffré
Déchiffrement
Signé : Alice
Signature numérique
●
Mécanisme d'authentification et d'intégrité
–
Principe de non-répudiation
Alice
Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Signé : Alice
Texte en clair
Clé privée
d'Alice
Signé : Alice
67afbec7c704e5497d10
0766b16708bf3ff977a1
67afbec7c704e5497d10
0766b16708bf3ff977a1
Chiffrement
Signature numérique
●
Vérification avec la clé publique de l'émetteur
Bob
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
67afbec7c704e5497d10
0766b16708bf3ff977a1
Comparaison des empreintes
Signé : Alice
67afbec7c704e5497d10
0766b16708bf3ff977a1
Déchiffrement
Clé publique
d'Alice
67afbec7c704e5497d10
0766b16708bf3ff977a1
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é
●
Problématique du transfert du secret...
Alice
Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Signé : Alice
Chiffrement
Texte chiffré
Déchiffrement
Signé : Alice
Utilisation : transport de clé
●
On chiffre une clé secrète pour la transmettre
Clé publique
de Bob
Clé privée
de Bob
Alice
Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Signé : Alice
Chiffrement
Texte chiffré
Déchiffrement
Signé : Alice
Échange de clés : Diffie-Hellman
Alice
Bob
Génération de a , g et p
a
Calcul de A=g mod p
Envoi de A ,
g
et p
b
Calcul de B=g mod p
b
K b = A mod p
Envoi de B
a
K a =B mod p
b
a b
K b = A mod p=( g ) mod p=g
a⋅b
b a
a
mod p=( g ) mod p= B mod p= K a
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
Gestion
Clé publique
● Seule la clé privée est
Clé identique et secrète
aux deux extrémités
secrète
● Nombre de clés en O(n²)
● Nombre de clés en O(n)
● Canal auxiliaire authentifié
● Canal auxiliaire authentifié
et confidentiel
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
●
–
DSA : 2048 bits également
●
–
●
Record (public) de factorisation : 768 bits (environ 68 bits en
symétrique)
Similarités avec la factorisation
Courbes Elliptiques (ECDSA) : 256 bits
Fonctions de hachage :
–
Sortie de 256 bits (SHA-256)
Attaques
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)
●
–
Attaque à clair choisi (CPA)
●
●
–
Connaissance de clairs et de leurs chiffrés
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
●
–
Cryptanalyse structurelle
●
●
L'implémentation et parfois l'algorithme sont inconnus
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 + : ?
Complexité d'une attaque :
ordres de grandeur
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)
Soit une situation normale
Clé publique
de Bob
Clé privée
de Bob
Alice
Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Signé : Alice
Chiffrement
Texte chiffré
Déchiffrement
Signé : Alice
Man-in-the-middle
●
(ou attaque du singe intercepteur)
La même en moins normale
Clé privée
de Charlie
Clé publique
de Bob
Charlie
Alice
Clé publique
de Charlie
Clé privée
de Bob
Cher Bob,
Cher Bob,
Rendez-vous à
13h chez moi.
Charlie ne doit
rien en savoir.
Signé : Alice
Déchiffrement
Chiffrement
Texte chiffré
Tout est fini
entre nous. Je
suis navrée.
Signé : Alice
Bob
Cher Bob,
Tout est fini
entre nous. Je
suis navrée.
Chiffrement
Texte chiffré
Déchiffrement
Signé : Alice
Implémentations
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 !
●
●
–
Attaques pratiques :
●
●
Compromission des clefs faibles
Perte de la PFS !
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).
Erreurs d'implémentation
●
Apple (2014) : goto fail; goto fail;
●
OpenSSL - Heartbleed(2014)
Infrastructures de gestion de clés
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 ?
●
●
●
Cryptographie asymétrique
–
Comment échanger un secret ?
●
–
●
Il faut un canal chiffré
Il faut un canal authentifié
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
●
Exemple : https://www.iiens.net/
Certificat X.509
$ openssl x509 -in www.iiens.net.crt -noout -text
Certificate:
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:0D
DirName:/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)
●
–
On rajoute des champs complémentaires :
●
●
« DNS : » - « email : » - « IP : »
CA Pathlen
–
●
Subject: C=FR, ST=France, O=ARISE, OU=ARISE, CN=*.iiens.net/[email protected]
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
serverAuth
Authentification d'un serveurTLS
digitalSignature
keyEncipherment ou keyAgreement
clientAuth
Authentification d'un client TLS
digitalSignature et/ou keyAgreement
emailProtection
Messagerie sécurisée (S/MIME)
digitalSignature
nonRepudiation et/ou (keyEncipherment ou KeyAgreement)
codeSigning
Signature des codes mobiles
digitalSignature
timeStamping
digitalSignature
nonRepudiation
Listes de révocation
$ openssl crl -inform DER -in crl_acDILA_Infra-4.crl -noout -text
Certificate 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:
5487
Revoked 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
●
●
–
Demande d'un périmètre
●
●
●
–
Peut-être une personne : pièce d'identité
Un nom de domaine : contact auprès de « postmaster@domaine » ou du registrar
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 !
Réseaux de confiance
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
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/
Remerciements
●
●
Marion Videau, Franck Davy, Arnaud Ebalard et
Raphaël Rigo pour une partie du contenu et
l'idée de certains schémas
Aurélien Bordes, Olivier Levillain et Vincent
Strubel pour leur connaissance poussée
d'IPsec et de SSL/TLS

Documents pareils