Cryptographie appliquée -...

129
Cryptographie appliquée ENSIIE – Avril 2014 Julien Raeis <julien [at] mingbai.org>

Transcript of 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é– 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

-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

-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

Un peu d'histoire

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...

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

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...

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 clésn (n−1)

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) :

● é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

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)

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)

● 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 + : ?

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)

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é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 !● 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).

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 ?

● 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

● Exemple : https://www.iiens.net/

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 !

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