support de cours et accompagnement cryptographie et ...fpommereau/teaching/crypto-m1.pdf ·...
TRANSCRIPT
1 / 87
Cryptographie et compression
Franck Pommereau
http://goo.gl/satt
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.
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, . . .
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
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
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
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
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
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)
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
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
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 »
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
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
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
. . . . . . . . .
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 �
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
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
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