support de cours et accompagnement cryptographie et ...fpommereau/teaching/crypto-m1.pdf ·...

17
1 / 87 Cryptographie et compression Franck Pommereau http://goo.gl/satt [email protected] Master 1, Universit´ e d’ ´ Evry Val d’Essonne 2 / 87 Support de cours et accompagnement http://goo.gl/satt demande d’inscription support de cours compl´ ements de cours forum Introduction 3 / 87 Objectifs compression eduire la taille d’un message chiffrement cacher le contenu d’un message hachage cr´ eer une empreinte unique d’un message st´ eganographie cacher l’existence d’un message signature prouver l’origine d’un message Cryptographie et s´ ecurit´ e confidentialit´ e respect des autorisations d’acc` es chiffrement int´ egrit´ e preuve de non alt´ eration hachage authentification preuve d’identit´ e signature, d´ echiffrement non-r´ epudiation preuve d’une transaction signature disponibilit´ e acc` es l´ egitime possible Introduction 4 / 87 ef´ erences A. J. Menezes, P. C. van Oorschot, S. A. Vanstone. Handbook of Applied Cryptography. CRC Press, 1996. B. Schneier. Cryptographie appliqu´ ee. Vuibert, 1996. K. Sayood. Introduction to data compression. Morgan Kaufmann publishers, 2000. E. Incerti. Compression d’images, algorithmes et standards. Vuibert, 2003.

Upload: others

Post on 18-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

1 / 87

Cryptographie et compression

Franck Pommereau

http://goo.gl/satt

[email protected]

Master 1, Universite d’Evry Val d’Essonne

2 / 87

Support de cours et accompagnement

http://goo.gl/satt

demande d’inscriptionsupport de cours

complements de cours

forum

Introduction 3 / 87

Objectifs

• compression reduire la taille d’un message

• chiffrement cacher le contenu d’un message

• hachage creer une empreinte unique d’un message

• steganographie cacher l’existence d’un message

• signature prouver l’origine d’un message

Cryptographie et securite

• confidentialite respect des autorisations d’acces chiffrement

• integrite preuve de non alteration hachage

• authentification preuve d’identite signature, dechiffrement

• non-repudiation preuve d’une transaction signature

• disponibilite acces legitime possible 8

Introduction 4 / 87

References

I A. J. Menezes, P. C. van Oorschot, S. A. Vanstone. Handbook ofApplied Cryptography. CRC Press, 1996.

I B. Schneier. Cryptographie appliquee. Vuibert, 1996.

I K. Sayood. Introduction to data compression. Morgan Kaufmannpublishers, 2000.

I E. Incerti. Compression d’images, algorithmes et standards. Vuibert,2003.

Page 2: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Introduction 5 / 87

Avertissement

I la cryptographie et la compression sont des sujets complexes

I les techniques sont justifiees mathematiquement

I ce cours est destine a des non-mathematiciensI il ne donne donc qu’une vision partielle du sujet

8 attention aux fausses bonnes idees8 attention a la mise en œuvre4 toujours suivre les recommandations4 faire appel aux specialistes en case de doute

Outils de base Steganographie 9 / 87

Steganographie : cacher l’existence d’un message

I existe depuis toujours esclave tatoue, encre sympathique, micro-point, . . .

I le numerique offre de nouveaux supportsI bits de poids faible dans les images, le sonI bourrage et bits reserves dans les protocolesI alignement dans les programmes compilesI fins de clusters inutiliseesI etc.

I combinable a la cryptographie

Application : tatouage numerique

I vente de musiques/images sans DRMI resistance aux transformations

I compression avec perteI redimensionnement d’imageI extraction d’une partie

Outils de base Generateurs d’alea 11 / 87

Determinisme et pseudo-alea

• suite aleatoire le prochain element ne peut etre predit

• nonce valeur “fraıche” en pratique : aleatoire et assez longue

Probleme

Tout algorithme est deterministe

I generateur pseudo-aleatoire :I g une graineI fonction random : gn 7→ (gn+1, rn)I la suite (r0, r1, . . . ) est indistinguable d’une suite aleatoireI mais elle est reproductible si g0 est connu

I nouveau probleme (plus simple) : trouver une graine aleatoireI sources d’alea : le materiel frappes au clavier, bruit thermique, . . .

+ collecte par l’OS sous Unix : /dev/random et /dev/urandom

I le generateur d’alea et un composant critique

Outils de base Generateurs d’alea 12 / 87

YarrowJ. Kelsey, B. Schneier, N. Ferguson (1999)

alea reseed

graine

randomcpt sortie

a

g h(g · a)

g

c

c + 1

〈c〉g

h : hachage cryptographique

〈m〉k : chiffrement

Autres algorithmes

Blum-Blum-Shub, STRANDOM, MUGI, Fortuna, . . .

Page 3: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Outils de base Hachage 14 / 87

Empreintes numeriques (hash)

donneestaille

quelconque

condensetaille fixe

hashd h(d)

h(d)d

I non reversibleI sans collisions

8 d1 6= d2 ⇒ h(d1) 6= h(d2)4 d1 ' d2 ⇒ h(d1) 6' h(d2)

I garantie statistique

+ condense sur n bits ⇒ probabilite de collision = 1/2n

Outils de base Hachage 15 / 87

Controle d’integrite

A

h(A)

A′

h(A)′

h(A′)

?=

Toute erreur de copie est detectee

4 A = A′ et h(A)′ = h(A′)

8 A 6= A′ ou h(A) 6= h(A)′ et alors h(A)′ 6= h(A′)

Outils de base Hachage 16 / 87

Gestion des mots de passedans les systemes Unix

......

...login salt h(salt · passwd)

......

...

/etc/shadow

h(salt · passwd ′)

?=

I meme empreinte ⇒ passwd = passwd ′

I le mot de passe n’est jamais stocke

I mots de passe identiques ⇒ empreintes differentes

Outils de base Hachage 17 / 87

Secure Hash Algorithm-256 (SHA-256)National Security Agency (2001)

I serie SHA-2I SHA-256 : empreintes de 256 bitsI SHA-512 : empreintes de 512 bits

I remplace SHA-1 (160 bits) et MD5 (128 bits)

I recommande jusqu’en 2012 date prevue pour SHA-3

Phases de fonctionnement

1. InitialisationI completion de l’entree MI decoupage de M en blocs de 512 bits

2. Pour chaque bloc WI expansion du bloc : 512 → 2048 bitsI boucle principale

Page 4: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Outils de base Hachage 18 / 87

SHA-256. . .suite (1/3)

Completion de l’entree et decoupage en blocs

donnee initiale M 100 . . . m

m bits 64 bits

k × 512 bits

M1 Mk

Expansion d’un bloc ⇒ 64× 32 bits

Mi

w [ ]0 1 14 15 16 63

Ex

Outils de base Hachage 19 / 87

SHA-256. . .suite (2/3)

Traitement des blocs

constante expansion

h0, . . ., h7 A, . . ., H

8 × 32 bits

A′, . . ., H ′

w [0..63]

64 × 32 bits

empreinte finale

� Loop

Outils de base Hachage 20 / 87

SHA-256. . .suite (3/3)

Boucle principale (0 ≤ t < 64)

A′ B ′ C ′ D ′ E ′ F ′ G ′ H ′

A B C D E F G H

Ch

Σ1

Ma

Σ0

��

��

�w [t]

k[t]

Chiffrement Principes 23 / 87

Principes generaux

Alice BobEspion

k1 k2

Familles et techniques

• blocs (de)chiffrement mot a mot tailles fixee par l’algo

• flux (de)chiffrement bit a bit

• substitution remplacement de blocs/bits ex : ROT13

• transposition echange de blocs ex : endianess swap

I but : texte chiffre indistinguable d’un texte aleatoire

Page 5: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Chiffrement Chiffrement a clef secrete partagee 25 / 87

Chiffrement a clef secrete partagee

I une seule clef par communication, echangee au prealable

I n participants ⇒ ' n2 clefs

I probleme pour l’echange des clefs

I symetrique ⇐⇒ chiffrement et dechiffrement identiques

Chiffrement Chiffrement a clef secrete partagee 26 / 87

Le telephone rouge

c ©N

izar

,www.toonpool.com

I message M[ ] suite de m bits

I clef K [ ] suite de k bits

I chiffrement : C [i ] = M[i ]⊕ K [i % k] pour 0 ≤ i < m

I dechiffrement : M ′[i ] = C [i ]⊕ K [i % k] pour 0 ≤ i < m symetrique

I inviolable si la clef est :I aleatoire de qualite cryptographiqueI a usage unique masque jetableI de la longueur du message k = m

I utilise entre les Etats-Unis et l’Union sovietique

+ les clefs voyageaient par valises diplomatiques

Chiffrement Chiffrement a clef secrete partagee 27 / 87

RC4R. Rivest (1987)

I chiffrement xor par flux utilisant un generateur pseudo-aleatoire

I simple et rapide y compris par logiciel

I clefs de 40 a 2048 bits 5 a 256 octets

I toujours largement utilise WEP, WPA, SSL/TLS, . . .

I faiblesses reconnues

+ il est preferable de ne plus l’utiliser

Deux phases

1. Expansion de la clef key schedule

2. Generation du flux pseudo-aleatoire

Chiffrement Chiffrement a clef secrete partagee 28 / 87

RC4. . . suite

Expansion de la clef

byte i = 0byte j = 0byte S [256] = [0, . . . , 255]for 0 ≤ i ≤ 255 :

j = (j + S [i ] + K [i % k]) % 256swap S [i ], S [j ]

Generateur pseudo-aleatoire

i = j = 0loop :

i = (i + 1) % 256j = (j + S [i ]) % 256swap S [i ], S [j ]output S [(S [i ] + S [j ]) % 256]

Faiblesses

I expansion de la clef et generateur pseudo-aleatoire

I correlations clef / flux pseudo-aleatoire

Page 6: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Chiffrement Chiffrement a clef secrete partagee 29 / 87

BlowfishB. Schneier (1994)

I (de)chiffrement par blocs de 64 bits

I clefs de 32 a 448 bits

I econome en calcul et en memoire

I resistant aux attaques

I librement utilisable

Trois phases

1. Expansion de la clefI 18 P-boxes de 32 bitsI 4 S-boxes de 256× 32 bits

2. Reseau de Feistel a 16 tours

3. Tour final255

1

0

32 bits

...

Chiffrement Chiffrement a clef secrete partagee 30 / 87

Blowfish. . . suite (1/4)

Reseau de Feistel a 16 tours

32 bits 32 bits

⊕Pi

32 bits

F ⊕

32 bits

32 bits 32 bits

pour1 ≤ i ≤ 16

Chiffrement Chiffrement a clef secrete partagee 31 / 87

Blowfish. . . suite (2/4)

Tour final

32 bits 32 bits

32 bits 32 bits

32 bits 32 bits

⊕ ⊕P18 P17

Chiffrement Chiffrement a clef secrete partagee 32 / 87

Blowfish. . . suite (3/4)

Fonction F

8 bits 8 bits 8 bits 8 bits

S1 S2 S3 S4

32 bits 32 bits 32 bits 32 bits

�⊕

32 bits

Page 7: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Chiffrement Chiffrement a clef secrete partagee 33 / 87

Blowfish. . . suite (4/4)

Expansion de la clef

18× 32bits 4× (256× 32)bits

decimales de π . . .

K · K . . .

P1,P2 . . .

⊕S1, S2, S3,S4

x = [64 bits a 0]for 1 ≤ i ≤ 521 :

x = blowfish(x)output x

I chaque tour de boucle ⇒ 64 bits des Pi ou Sj

521× 64 = (18× 32) + (4× 256× 32)

Chiffrement Chiffrement a clef publique 35 / 87

Chiffrement a clef publique. . . pour la confidentialite

I chiffre avec PubB ⇒ dechiffrable avec PrivB uniquement

+ n’importe qui peut communiquer confidentiellement avec Bob

I l’espion connaıt PubB mais ne peut pas dechiffrer

Chiffrement Chiffrement a clef publique 36 / 87

Chiffrement a clef publique. . . pour l’authentification (ou la non-repudiation)

I chiffre avec PrivA ⇒ dechiffrable avec PubA uniquement

+ Alice peut s’authentifier aupres de n’importe qui

I l’espion peut dechiffrer et authentifier Alice

I combinable avec la technique precedente

Chiffrement Chiffrement a clef publique 37 / 87

Comparaison avec le chiffrement a clef secrete

Avantages

I moins de clefs necessaires n contre n2

I pas de secret partage publique ou prive

I confidentialite, authentification et non-repudiation

Inconvenients

I beaucoup plus lent facteur ∼ 1000

I il faut authentifier les clefs publiques certificats

Clefs de sessions

I clef secrete aleatoire, jamais reutilisee nonce

I echangee par cryptographie a clef publique

Page 8: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Chiffrement Chiffrement a clef publique 38 / 87

Signature

hashB

Avantages sur le chiffrement du texte complet

I empreinte plus petite ⇒ chiffrement plus rapide

I controle d’integrite

I condense authentifie

I n’importe qui peut verifier l’authenticite

Chiffrement Chiffrement a clef publique 39 / 87

Certificatsnorme X.509

4 autorite de certification (CA)

4 identite certifiee

4 date limite de validite

4 niveau de certification

4 algorithmes utilises

4 clef publique certifiee CA

I les autorites de certifications se certifient entre elles

I leurs certificats sont largement distribues navigateurs, OS, . . .

I niveau de certification ⇐⇒ qualite des verifications . . . et prix

Chiffrement Chiffrement a clef publique 40 / 87

Authentification par challengesans mot de passe

login : Bobnonce

4

8

Chiffrement Chiffrement a clef publique 41 / 87

RSAR. Rivest, A. Shamir, L. M. Adleman (1978)

I premier systeme a clef publique

I toujours tres majoritairement utilise

Generation des clefs

I quatre nombres p, q, e et d tels queI p et q sont de grands nombres premiers et p 6= qI e est premier avec (p − 1)× (q − 1)I (e × d = 1) mod (p − 1)× (q − 1)

+ (e × d − 1) multiple de (p − 1) × (q − 1)

I on prend n = p × q

I clef publique = (n, e)

I clef privee = (n, d)

Page 9: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Chiffrement Chiffrement a clef publique 42 / 87

RSA. . . suite (1/2)

Chiffrement et dechiffrement

I message M < n decoupage en blocs si necessaire

I chiffrement avec une clef (n, x) x ∈ {e, d}I calcul de C = Mx % n

I dechiffrement avec l’autre clef (n, y) y ∈ {e, d} \ {x}I calcul de D = C y % nI theoreme d’Euler ⇒ D = M % nI M < n ⇒ D = M

I chiffrement et dechiffrement symetriques

I mais avec deux clefs complementaires

Chiffrement Chiffrement a clef publique 43 / 87

RSA. . . suite (2/2)

Pour l’attaquant

I connaıt n, e et C

8 resolution de C = Me % n8 factorisation de n = p × q et deduction de d

I tailles de clefs recommandees : 1024 ou 2048 bits

•768

•663

•576

•512

•430

1996 1998 2000 2002 2004 2006 2008 2010

400

500

600

700

tailles des clefs factorisees (concours RSA)$50 000

2000 ans de calculpour 1 CPU a 2.2Ghz

Chiffrement Mise en œuvre 45 / 87

Hash-based Message Authentication Code (HMAC)RFC 2104

Complete les chiffrements a clefs secretes :

I integriteI authentification pas de non repudiation

I meme clef

Fonctionnement

clef 00 . . .

h(clef)

0x5c5c . . .

0x3636 . . .

outer padding

inner padding

ou

h(• · h(• ·message)) ⇒ HMAC

Chiffrement Mise en œuvre 46 / 87

Initialization vectors (IV)

8 il est dangereux de reutiliser une clef secrete

4 mais on peut l’alterer avec un nonce

Exemple : Wired Equivalent Privacy (WEP – 802.11)

I nonce IV de 24 bits

I clef secrete K 40/104/232 bits ⇒ 64/128/256 bits

I K · IV ⇒ clef RC4

I IV envoye en clair avant le texte chiffre

8 WEP n’est pas securise pas du tout !

8 24 bits ⇒ repetitions frequentes8 vulnerabilites de RC48 injections de paquets8 . . .

I utilisable aussi avec les chiffrements par blocs voir la suite

Page 10: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Chiffrement Mise en œuvre 47 / 87

Electronic CodeBook (ECB)

I chiffrement bloc a bloc

8 preservation des regularites

4 utiliser d’autres modes operatoires voir la suite

c ©[email protected]

Chiffrement Mise en œuvre 48 / 87

Cipher-Block Chaining (CBC)

Chiffrement ↓ Dechiffrement ↑

IV

bloc 1

K

chiffre 1

bloc 2

K

chiffre 2

bloc 3

K

chiffre 3

. . .

. . .

I propagation des changements

I mode operatoire le plus utilise meme s’il y en a d’autres

Attaques sur la cryptographie Force brute et dictionnaires 51 / 87

La force brute

I recherche de toutes les possibilites ex : toutes les clefsI la combinatoire peut rendre cette attaque impraticable

8 DES : clefs de 56 bits ⇒ moins d’un jour > 20× 109 clefs/s4 Blowfish : clef de 448 bits ⇒ 276 353 796 896 297 200 451 485 844 334

398 205 983 651 385 537 892 936 476 470 147 936 137 126 911 464 488353 750 715 971 452 747 954 594 864 143 166 071 siecles

age de l’univers : 150 000 000 siecles

I +1 bits ⇒ temps de calcul ×2

Attaque par dictionnaire

I recherche uniquement des clefs probables

I utilisation d’un dictionnaire liste de mots

I combinaisons et transformations mot de passe ⇒ m0T 2 p4Ss3 !

un mot de passe ne doit jamais etre un mot

Attaques sur la cryptographie Force brute et dictionnaires 52 / 87

Contre mesures

I exploiter la combinatoire quand c’est possibleI clefs plus longuesI clefs plus variees majuscules, minuscules, chiffres, ponctuations

I augmenter le cout de l’echecI cartes bancaires blocage apres trois echecsI codes PIN des mobiles idemI delai apres un login errone de plus en plus long

I jamais rien de previsibleI pas de mot existant login, ”password”, 1234, . . .I attention a l’ingenierie sociale date de naissance, nom du chien, . . .

Mots de passe simples et solides

« 1Svqcdl’H » ⇒ « une souris verte qui courrait dans l’herbe »

Page 11: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Attaques sur la cryptographie Attaques mathematiques 54 / 87

Attaques mathematiques

Cryptanalyse statistique

Recherche de proprietes statistiques du chiffre, liees a celle du texte enclair

+ regularites des chiffrements mise en œuvre avec ECB

Cryptanalyse lineaires

Recherche d’approximations des fonctions de chiffrement par des fonctionsaffines

+ attaques sur FEAL et DES

Cryptanalyse differentielle

Recherche de comportements non aleatoires par analyse de la propagationde perturbations du texte en clair dans le texte chiffre

+ attaques sur FEAL et Blowfish a 4 tours

Attaques sur la cryptographie Canaux auxiliaires 56 / 87

Attaques par canaux auxiliaires

Exploitation de caracteristiques de l’implantation d’un systemecryptographique logicielle ou materielle

+ temps d’executions, consommation electrique, chauffe, emissionselectromagnetiques, prediction de branchement, . . .

Attaque temporelle de RSA dans OpenSSL

I dechiffrement de g ⇒ calcul de gd % n

I plus long si g < q que si g > q n = q × p

I optimisations des algorithmes d’exponentiation modulaire

I q approchable par essais successifs en partant du bit de poids fort

I clef privee de taille k ⇒ 1000× k essais 1024 bits en 2h

Attaques sur la cryptographie Canaux auxiliaires 57 / 87

Masquage de RSARSA blinding

I protection contre les attaques temporelles

I sans supprimer les optimisations d’algorithmes

I sans introduire de nouveaux canaux auxiliaires

Principe

I dechiffrement de x = r e × g % n r aleatoire

I extraction du resultats par xe/r % n

I le deroulement du calcul ne depend plus de g

I surcout de 2%

4 technique generale en cryptographie pour supprimer les canauxauxiliaires

Attaques sur la cryptographie Choix du texte en clair 59 / 87

Attaque par choix du texte en clair

Attaque de RSA en mode signature

I Alice veut faire signer M par Bob

I genere r aleatoire et calcule M ′ = (M × r)e % n

I demande a Bob de signer M ′ message anodin

I Bob renvoie S ′ = (M ′)d % n

I Alice calcule S = S ′/r % n ⇒ signe de M facile a calculer

I en pratique, necessite aussi une attaque sur un hachage

4 ne jamais signer un texte choisi par un tiers

+ introduction d’un nonce

Page 12: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Attaques sur la cryptographie Man-in-the-middle 61 / 87

Attaque man-in-the-middle

Le protocole de Needham-Schroeder (a clefs publiques)

〈A,Na〉PubB

〈Na,Nb〉PubA

〈Nb〉PubB

8 17 ans sans que personne ne trouve de faille

8 cette faille existe !

4 decouverte par l’utilisation de methodes formelles G. Lowe (1995)

Attaques sur la cryptographie Man-in-the-middle 62 / 87

Attaque man-in-the-middlesur le protocole de Needham-Schroeder

〈A,Na〉PubC 〈A,Na〉PubB

〈B,Na,Nb〉PubA〈B,Na,Nb〉PubA8

〈Nb〉PubC 〈Nb〉PubB〈Nb〉PubC 〈Nb〉PubB

4 correction en ajoutant a chaque message l’identite de l’emetteur

I faille logique du protocole sessions correctes

Attaques sur la cryptographie Autres attaques 64 / 87

Encore des attaques. . .

• rejeu renvoi de donnees interceptees auparavant

+ injection de paquets ARP (68 octets) dans WEP

• contournement attaque de l’infrastructure de la cryptographie

+ non effacement du texte en clair, compromission de la machine,ingenierie inverse, ingenierie sociale, . . .

• clefs faibles affaiblissent la cryptographie, ou devinables

+ certaines clefs DSA de OpenSSL sur Debian/Linux entre 2006(v.0.9.8c-1) et 2008 (v.0.9.8g-9), affaiblissement des S-boxes deBlowfish sur un nombre reduit de tours

• generateur d’aleas sa faiblesse peut entraıner des failles

+ cassage de DSA dans le J2SDK, clefs faibles OpenSSL, contournementdes canaris (stack cookies) dans XP-SP2

• biais proprietes imprevues du crypto-systeme

+ factorisation de n = p × q si |p| ' |q|

Compression Generalites 67 / 87

Theorie de l’informationC. Shannon (1948)

I modele statistique des communicationsI source et destinationI canal bruite

• quantite d’information performance d’un compresseur optimal

+ un signal aleatoire contient plus d’information qu’un texte

• codes convention de representation de l’information

+ doit permettre le decodage

Consequences sur la compression

I limites d’efficacite theoriques

I compresseur universel vs compresseur specialise

I compression offline vs compression online a la volee

I simplifier l’information ameliore la compressionI compression conservative vs non conservative sans/avec perte

Page 13: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Compression Generalites 68 / 87

Quantite d’information et detection de similarite

œuvre A œuvre B

A

a bits

B

b bits

A · B

AB

c bits

I A ' B ⇒ c ' a ' b

+ ajouter B a A n’ajoute presque pas d’information

I A 6' B ⇒ c ' a + b

+ A · B contient l’information de A plus celle de B

Compression Generalites 69 / 87

Compression et chiffrement

4 compression avant chiffrementI securite amelioree

+ suppression des regularites du texte

I (de)chiffrement plus rapide

8 compression apres chiffrementI securite inchangeeI mauvaise compression

+ texte chiffre ∼ aleatoire

I perte de temps et d’espace

Compression Compression sans perte 71 / 87

Compression de HuffmanD. A. Huffman (1952)

Principes

I compresseur universel

I blocs de taille fixe 7→ codes de tailles variables

I bloc frequent ⇒ code de petite taille

Compression en deux passes

1. Analyse statistique de l’entreeI table d’occurrence des blocsI construction d’un arbre binaire pour le codage

2. Compression de l’entree

I transmission de l’arbre au decompresseur

Compression Compression sans perte 72 / 87

Compression de Huffman. . . suite (1/4)

Table d’occurrences

h e l l o _ w . . .input

for x in input :occ[x ] = occ[x ] + 1

xa

b

c...

occ[ ]

occ[x ]++

Construction de l’arbre : tri par poids

h1

l2

w2

o4

e14

_20

. . . . . . . . .

Page 14: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Compression Compression sans perte 73 / 87

Compression de Huffman. . . suite (2/4)

Construction de l’arbre : agregations

h1

l2

w2

o4

e14

_20

. . . . . . . . .

1 + 2 = 3

w2

o4

e14

_20

. . . . . . . . .3

h1

l2

2 + 3 = 5

Compression Compression sans perte 74 / 87

Compression de Huffman. . . suite (3/4)

Interpretation de l’arbre

a

a

w0

m1

0r

1 code[w] = 00code[m] = 01code[r] = 1

I blocs moins/plus frequents⇒ agreges en premier/dernier⇒ codes longs/courts

Compression Compression sans perte 75 / 87

Compression de Huffman. . . suite (4/4)

Compression et decompression

for x in blocks(input) :output code[x ]

node = tree.rootfor b in bits(input) :

node = node.child [b]if node.leaf :output node.datanode = tree.root

I necessite de lire/ecrire bit a bit

I il faut gerer la fin de fichier ⇒ nombre entier d’octets

Compression Compression sans perte 76 / 87

Compression de Huffman dynamique

Limites et inconvenients :

I compression offline uniquement

I transfert de l’arbre ⇒ augmente la taille pour de petits fichiers

Construction dynamique de l’arbre

I ajouter un bloc fictif �I demarrer d’un arbre ne contenant que �I etendre et mettre a jour en cours de compressionI pour chaque nouveau bloc x

I emettre �I emettre x

I adapter la decompression en consequence

8 plus complexe, difficultes a definir �

Page 15: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Compression Compression sans perte 77 / 87

Compression LZWA. Lempel, J. Ziv (1978) ; T. Welch (1984)

Principes

I compresseur universel

I blocs de tailles variables 7→ codes de taille fixe plus petite

I compresse les repetitions

I construction dynamique d’un dictionnaire de blocs

Variante

I augmentation progressive de la taille des codes

4 inutile de gerer la saturation du dictionnaire4 compression plus efficace generalement8 necessite un code pour indiquer l’augmentation

Compression Compression sans perte 78 / 87

Compression LZW. . . suite (1/2)

Compression

table = [caracteres 7→ codes ascii]code = 255word = ∅ for c in chars(input) :

if word · c ∈ table :word = word · c

else :table[word · c] = code = code + 1output table[word ]word = c

output table[word ]

Compression Compression sans perte 79 / 87

Compression LZW. . . suite (2/2)

Decompression

table = [codes 7→ caracteres ascii]code = 255read c from inputoutput cword = c

for c in codes(input) :if c ∈ table :

buffer = table[c]else :

buffer = word + word [0]output buffercode = code + 1table[code] = word + buffer [0]word = buffer

c = prochain code⇒ commence par word

Compression Compression avec perte 81 / 87

Principes

I diminuer la quantite d’information ⇒ ameliorer la compressionI exploiter les limites de la perception

+ faible “resolution” des perceptions sonores sur les forts volumes

+ 1 ligne NTCS : 350 pixels de luminosite (Y ), 150 pixels de bleu/orange(I ) et 50 pixels de vert/magenta (Q)

c ©Tonyle

Page 16: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Compression Compression avec perte 82 / 87

Compression JPEGJoint Photographic Experts Group (1992)

I nom du comite qui definit une norme de compression algorithmes

I les normes de codage sont independantes formats de fichiers

+ EXIF et JFIF sont les plus repandus

Phases de fonctionnement

1. codage selon la luminance et la chrominance 1+2 canaux

2. decoupage en blocs 8 pixels le plus souvent

3. DCT (discrete cosine transform) et quantificationI la quantification est la seule phase avec perte

4. compression du bloc transforme variante de Huffman, arbre predefini

Compression Compression avec perte 83 / 87

DCT : discrete cosine transformExtraction des frequences verticales et horizontales

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

100 100 100 100 100 100 100 100

100 100 100 100 100 100 100 100

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

−261.3 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

−108.2 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

200.0 0.0 −261.3 0.0 200.0 0.0 −108.2 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

100 100 100 200 200 100 100 100

100 100 100 200 200 100 100 100

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

0 0 0 100 100 0 0 0

400.0 0.0 −261.3 0.0 200.0 0.0 −108.2 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

−261.3 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

−108.2 0.0 0.0 0.0 0.0 0.0 0.0 0.00.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

c ©F

elix

H,

Ste

ph

an

tom

Compression Compression avec perte 84 / 87

DCT : discrete cosine transformPriorite a la regularite

0 30 60 90 90 60 30 0

30 60 90 120 120 90 60 30

60 90 120 150 150 120 90 60

90 120 150 180 180 150 120 90

90 120 150 180 180 150 120 90

60 90 120 150 150 120 90 60

30 60 90 120 120 90 36 30

0 30 60 90 90 60 30 0

717.0 3.5 −269.3 −0.8 3.0 −4.2 −15.1 −2.43.5 −4.1 1.9 1.0 −3.5 4.9 −4.6 2.8

−269.3 1.9 −0.9 −0.4 1.6 −2.3 2.1 −1.3−0.8 1.0 −0.4 −0.2 0.8 −1.1 1.1 −0.7

3.0 −3.5 1.6 0.8 −3.0 4.2 −3.9 2.4−4.2 4.9 −2.3 −1.1 4.2 −5.8 5.4 −3.3−15.1 −4.6 2.1 1.1 −3.9 5.4 −5.1 3.1−2.4 2.8 −1.3 −0.7 2.4 −3.3 3.1 −1.9

c ©F

elix

H,

Ste

ph

an

tom

Compression Compression avec perte 85 / 87

Quantification JPEG

I exploite la priorisation de la DCTI matrice de quantification Q

+ M[i , j ]← round(M[i , j ]/Q[i , j ]) ∗ Q[i , j ]

Quantifications recommandees par le JPEG

16 11 10 16 24 40 51 61

12 12 14 19 26 58 60 55

14 13 16 24 40 57 69 56

14 17 22 29 51 87 80 62

18 22 37 56 68 109 103 77

24 35 55 64 81 104 113 92

49 64 78 87 103 121 120 101

72 92 95 98 112 100 103 99

luminance

17 18 24 47 99 99 99 99

18 21 26 66 99 99 99 99

24 26 56 99 99 99 99 99

47 66 99 99 99 99 99 99

99 99 99 99 99 99 99 99

99 99 99 99 99 99 99 99

99 99 99 99 99 99 99 99

99 99 99 99 99 99 99 99

chrominance

Page 17: Support de cours et accompagnement Cryptographie et ...fpommereau/teaching/crypto-m1.pdf · Introduction 5 / 87 Avertissement I la cryptographie et la compression sont dessujets complexes

Compression Compression avec perte 86 / 87

Quantification JPEGExemple

0 30 60 90 90 60 30 0

30 60 90 120 120 90 60 30

60 90 120 150 150 120 90 60

90 120 150 180 180 150 120 90

90 120 150 180 180 150 120 90

60 90 120 150 150 120 90 60

30 60 90 120 120 90 36 30

0 30 60 90 90 60 30 0

DCT

717.0 3.5 −269.3 −0.8 3.0 −4.2 −15.1 −2.43.5 −4.1 1.9 1.0 −3.5 4.9 −4.6 2.8

−269.3 1.9 −0.9 −0.4 1.6 −2.3 2.1 −1.3−0.8 1.0 −0.4 −0.2 0.8 −1.1 1.1 −0.7

3.0 −3.5 1.6 0.8 −3.0 4.2 −3.9 2.4−4.2 4.9 −2.3 −1.1 4.2 −5.8 5.4 −3.3−15.1 −4.6 2.1 1.1 −3.9 5.4 −5.1 3.1−2.4 2.8 −1.3 −0.7 2.4 −3.3 3.1 −1.9

quantification

714 0 −264 0 0 0 0 00 0 0 0 0 0 0 0

−264 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0

IDCT

3 28 64 89 89 64 28 3

28 54 89 115 115 89 54 28

64 89 125 150 150 125 89 64

89 115 150 175 175 150 115 89

89 115 150 175 175 150 115 89

64 89 125 150 150 125 89 64

28 54 89 115 115 89 54 28

3 28 64 89 89 64 28 3

Compression Compression avec perte 87 / 87

Autres techniques

I transformations d’espaces similaires a la DCT

+ transformee de Fourier pour le son

I compression predictive : differentiel avec les donnees precedentes

c ©N

AS

AJP

L

I compression fractale : extraction des structures fractalesI disparition des pixelsI fonctionne bien pour les images naturelles

I ondelettes : codage multi-echelles

c ©S

bru

nn

er/

GF

DL