39
Mémento de Cryptologie Zoubida Jadda et Patrice Parraud Ecoles Militaires de saint Cyr Coëtquidan Centre de Recherche des Ecoles de Coëtquidan Unité de Recherche MACCLIA [email protected] [email protected]

Mémento de Cryptologie

Embed Size (px)

Citation preview

Mémento de Cryptologie

Zoubida Jadda et Patrice Parraud

Ecoles Militaires de saint Cyr CoëtquidanCentre de Recherche des Ecoles de Coëtquidan

Unité de Recherche MACCLIA

[email protected]@st-cyr.terre-net.defense.gouv.fr

Table des matières1 Introduction 2

1.1 Histoire de la cryptographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Protéger, quoi, comment et à quel prix ? . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Les prérogatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Les garants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 Les protocoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.6 Les moyens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.7 Techniques Cryptographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Systèmes cryptographiques historiques 42.1 Chiffrement par décalage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Chiffrement par substitution monoalphabétique . . . . . . . . . . . . . . . . . . . . . 52.3 Chiffrement de Vigenère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.4 Vernam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.5 Cryptographie Militaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.5.1 Quelques codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.5.2 La machine Enigma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Systèmes asymétriques 83.1 Quelques chiffrements à clé publique : . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1.1 Code RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1.2 Code Rabin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.1.3 Codes ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.2 Signature Numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2.1 Caractéristiques d’une signature . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2.2 Fonction de hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2.3 Signature RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.4 Signature ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.3 Organisation de PKI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Systèmes symétriques 154.1 Chiffrement par Blocs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.1.1 Réseau de Feistel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.1.2 DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.1.3 IDEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.1.4 AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2 Chiffrement par Flot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.2.1 GPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.2.2 LFSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.2.3 LFSRs combinés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.3 Comparaison des chiffrements par Blocs et par Flots . . . . . . . . . . . . . . . . . . . 364.4 La loi française et le chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364.5 Exemple de la carte bancaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5 Bibliographie 38

1 Z.JADDA & P.PARRAUD

1 IntroductionLa cryptologie, du grec «cruptos», la science du secret contient deux composantes : la cryptogra-

phie et la cryptanalyse.La stéganographie, du grec «steganos», couvert et «graphein», écrire vient compléter ces notions.

– La cryptographie construit des outils pour le chiffrement des messages en préservant le secretdes données lors des transmissions.

– La cryptanalyse consiste à analyser les faiblesses de ces constructions et à proposer des attaquespour compromettre la sécurité d’un système.

– La stéganographie est l’art de dissimuler. Dissimuler ne signifie pas que l’information est codée,il s’agit alors de cryptographie. Il signifie que la présence de l’information n’est pas perceptibleparce que enfouie dans une autre information.

1.1 Histoire de la cryptographie

– La cryptographie remonte certainement aux origines de l’homme.– les méthodes cryptographiques utilisées restèrent rudimentaires jusqu’au début du vingtième

siècle.– La cryptographie connut une réelle expansion avec les deux guerres mondiales.– Depuis la fin de la seconde guerre mondiale, la cryptographie connaît une avancée considérable

avec l’apparition de la carte bleue, d’internet et des téléphones portables.

1.2 Protéger, quoi, comment et à quel prix ?

– nature : texte (document papier), numérique (donnée, image, son).– caractère : anodin (message), sensible (classifié).– durée de vie : limitée (mot de passe, clé), infinie (identifiant).– moyens de protection : coût (financier, matériel, humain).

– risque évalué :menace× vulnérabilité

parade.

1.3 Les prérogatives

La cryptologie moderne a développé de nouveaux buts à atteindre :– Confidentialité : assurer que les données concernées ne pourront être dévoilées qu’aux personnes

autorisées. Lors d’une communication, il s’agit d’empêcher un tiers de prendre connaissanced’un message transmis sur un canal non sécurisé.

– Intégrité : assurer que les données ne sont pas altérées (volontairement ou pas) pendant leurtransmission ou leur stockage.

– Authentification : prouver l’origine d’une donnée ou la validité d’un objet crypté (moyen depaiement, clé, ...) ou identifier une personne ou authentifier une machine dans le cadre relationclient-serveur.

– Non-Répudiation : c’est un mécanisme qui empêche de nier un contrat. Cela consiste à prouverpar exemple qu’un message a bien été mis par son expéditeur ou a bien été reçu par sondestinataire.

– Signature : permet à une personne de prendre part à un contrat avec impossibilité de renierensuite ses engagements. Comme la signature pour le vote électronique ou le porte-monnaieélectronique par exemple.

2 Z.JADDA & P.PARRAUD

– Certification : la validation d’une information par une entité connue, digne de confiance appelée"autorité de certification".

– Contrôle d’accès : l’accès à certaines ressources est limité aux personnes autorisées. Exemple :connexion à un ordinateur, retrait d’argent ...

– Gestion des clés : c’est la génération, distribution, stockage, intégrité, utilisation des clés dansles systèmes cryptographiques (clés privées, clés publiques).

1.4 Les garants

– Techniques mathématiques complexes : théorie de la Complexité des algorithmes.– Problèmes mathématiques complexes : théorie des nombres, théorie de Galois, géométrie algé-

brique.– Problèmes NP et aléas fort.– Séquences pseudo-aléatoires et Fonctions booléennes.– Factorisation et Primalité de grands nombres : décomposition en produits de facteurs premiers :

test de la primalité.– Logarithme discret : soit l’équation a = bemod p dans un groupe d’ordre p − 1 : trouver econnaissant a.

– Groupe des points d’une courbe elliptique : 2163 points et p doit avoir un facteur premierq > 2160

1.5 Les protocoles

La grande problématique du développement des moyens de communication est la sécurité.Il y a des protocoles certifiés qui sont utilisés. Ce sont des systèmes construits en utilisant destechniques cryptographiques de base, qui définissent les modalités d’échanges de données entre diversparticipants et qui sont capables d’assurer une sécurité globale.Par exemple :

– SSH (Secure SHell), pour l’accès sécurisé à des machines distantes.– Kerberos, pour l’accès à des informations sur différents serveurs.– Station To Station, protocole pour gérer des communications téléphoniques chiffrées.– SSL (Secure Socket Layer), pour sécuriser les communications entre clients et serveurs.– PGP (Pretty Good Privacy), pour le courrier électronique et les transactions commerciales.

1.6 Les moyens

3 Z.JADDA & P.PARRAUD

1.7 Techniques Cryptographiques

– Le chiffrement consiste à transformer un texte clair en texte chiffré en utilisant une clé dechiffrement.

– Le déchiffrement est l’opération qui consiste à retrouver le texte clair à partir du texte chiffrési l’on dispose de la clé de déchiffrement.

– Le décryptage consiste à retrouver le texte clair à partir du chiffré si l’on ne connaît pas la clé.

Définition 1 Un système cryptographique est la donnée de :

1. un ensemble fini P appelé l’espace des textes clairs (P laintexts),2. un ensemble fini C appelé l’espace des textes chiffrés (Cipher texts),3. un ensemble fini K appelé l’espace des textes des clés (Keys),4. Pour chaque clé k on donne :

– une fonction de chiffrement ek (encryption) avec ek : P −→ C,– une fonction de déchiffrement dk (decryption) avec dk : C −→ P ,On doit avoir dk ◦ ek = IdP et ek ◦ dk = IdC .

2 Systèmes cryptographiques historiques– Chiffrement par décalage.– Chiffrement par substitution monoalphabétique.– Chiffrement de Vigenère (1586).– vernam ou one-time pad ou masque jetable (1926).

2.1 Chiffrement par décalage

A chaque lettre de l’alphabet, on associe le numéro de son rang.

A B C D E F G H I J K L M0 1 2 3 4 5 6 7 8 9 10 11 12N O P Q R S T U V W X Y Z13 14 15 16 17 18 19 20 21 22 23 24 25

Le message chiffré se déduit du message en clair par un décalage circulaire deslettres de l’alphabet.

Le décalage de 3 rangs est appelé chiffre de César.

P = C = K = Z26,

ek(x) = x+ k

et

dk(y) = y − k

4 Z.JADDA & P.PARRAUD

L’espace des clés ne contient que 26 éléments. Le système n’est donc pas sûr !

2.2 Chiffrement par substitution monoalphabétique

On remplace chaque lettre par une lettre 6= dans un ordre quelconque. On augmente donc lenombre de clés.

P = C = Z26, K = l’ensemble des permutations de Z26, ∀k ∈ K, ek = k et dk = k−1

Exemple 1 MAGERH

chifré par k =

(2 14 15 17 19 2412 7 4 0 17 6

)

Déchiffrage :

A B C D E F G H I J K L M0 1 2 3 4 5 6 7 8 9 10 11 12N O P Q R S T U V W X Y Z13 14 15 16 17 18 19 20 21 22 23 24 25

MAGERH = (12, 0, 6, 4, 17, 7)

k =

(2 14 15 17 19 2412 7 4 0 17 6

)message clair = k−1(12, 0, 6, 4, 17, 7)

= (2, 17, 24, 15, 19, 14) = CRYPTO.

2.3 Chiffrement de Vigenère

Blaise de Vigenère (1523− 1596) : diplomate français.Le chiffrement de Vigenère est une amélioration du chiffrement de César. On choisit un mot de n

lettres qui va définir la clé.le texte en clair est d’abord découpé en blocs de n symboles et on chiffre chaque bloc par le mot clé.

Donc la même lettre peut être chiffré avec des lettres différentes.

P = C = K = Zn26

Soit k = (k1 , ..., kn) ∈ K alors

ek (x1 , ..., xn) = (x1+k1, ..., xn+kn),et

dk (y1 , ..., yn) = (y1 − k1, ..., yn−kn).

5 Z.JADDA & P.PARRAUD

Exemple 2 pour n = 3 et k = CLE = (2, 11, 4)

Chiffré E C C R E S N Z K K P4 2 2 17 4 18 13 25 10 10 15

Clé C L E C L E C L E C L2 11 4 2 11 4 2 11 4 2 11

Déchiffrage2 17 24 15 19 14 11 14 6 8 4Clair C R Y P T O L O G I E

2.4 Vernam

Vernam ou one-time pad ou masque jetable (1926). C’est l’aboutissement de la cryptographietraditionnelle.En 1949 Shannon a montré qu’il garantit une confidentialité "parfaite" (perfect secrecy).C’est le système qui a été utilisé pour le téléphone rouge : Kremlin-Maison Blanche.

Identique au chiffrement de Vigenère mais la clé n’est utilisée qu’une seule fois (one-time) cequi contraint à choisir une clé aussi longue que le message à transmettre qu’on jettera par la suite(masque jetable).

2.5 Cryptographie Militaire

"La sécurité d’un système doit reposer sur la robustesse de sa cléet non pas sur le fait que le système de chiffrement est inconnue del’ennemi." Principe de Kerckhoffs, 1883, Journal des Sciences militaires

2.5.1 Quelques codes

– La règlette de Saint Cyr.

La réglette de Saint-Cyr utilisée par l’Académie mili-taire au 19eme siècle est un instrument qui facilite l’utilisation du chiffre de Vigenère. Elle seprésente sous la forme d’une règle à calculer, avec une partie fixe, le stator, et une partie mo-bile, le coulisseau. Sur le stator est écrit l’alphabet, et sur le coulisseau on trouve deux foisl’alphabet. Pour chiffrer une lettre, on ajuste le coulisseau pour que sous le A du stator setrouve la lettre de la clé. Sous la lettre du message clair écrite sur le stator, on trouve la lettredu message chiffré.

– Le code Navajo.

6 Z.JADDA & P.PARRAUD

En 1941 pendant la bataille du Pacifique la langue des navajos qui constituent le plus grandpeuple amerindien des Etats Unis a été utilisé à des fins militaires. c’est l’un des rares codesde l’histoire à n’avoir jamais été brisé.

– Le morse.

2.5.2 La machine Enigma

La machine Enigma ou le tournant de la Seconde Guerre mondiale.Enigma est la machine à chiffrer et déchiffrer qu’utilisèrent les armées allemandes du début des annéestrente jusqu’à la fin de le Seconde Guerre Mondiale. Elle automatise le chiffrement par substitution.Elle ressemble à une machine à écrire. Quand on presse sur une touche, deux choses se passent.Premièrement, une lettre s’allume sur un panneau lumineux : c’est la lettre chiffrée. Deuxièmement,un mécanisme fait tourner le rotor de droite d’un cran ; toutes les 26 frappes, le deuxième rotortourne d’un cran, toutes les 676 frappes (262 ), c’est un autre rotor qui tourne d’un cran. Ces rotorstournants modifient les connexions électriques dans la machine, ce qui fait que la touche ”A” allumerapeut-être le ”B” la première fois, mais le ”X” la deuxième, le ”E” la troisième, etc. Un "tableaude connexions" et un "réflecteur" complique encore le système. Le côté génial de cette machine estque même si elle tombe entre les mains ennemies, sa sécurité n’est pas compromise. En effet, c’est lenombre faramineux de réglages de la machine qui fait sa force et les réglages changeaient évidementchaque jour. On peut en effet changer l’ordre de rotors, leur orientation initiale et les branchementdu tableau de connexions. Par exemple, on pouvait spécifier la clef du jour. Après plusieurs annéesde recherche, des chercheurs cassèrent les codes d’Enigma. En 1943, les Alliés pouvaient suivre deprès les mouvements allemands sur terre, sur mer et dans les airs. Les Alliés purent garder ça secret,les Allemands continuèrent donc à croire que le code Enigma était toujours incassable.

7 Z.JADDA & P.PARRAUD

26x26x26 = 17′576 combinaisons l’orientation des chacun des trois brouilleurs6 combinaisons possibles l’ordre des brouilleurs

100′391′791′500 branchements possibles les six paires de lettres dans le tableau de connexions10′000′000′000′000′000 combinaisons différentes ! ! !

3 Systèmes asymétriquesPour le chiffrement asymétrique ou à clé publique chaque utilisateur A dispose de 2 clés, une clé

publique kp qui donne une fonction de chiffrement connue de tous (chacun peut chiffrer un message)et une clé, privée, secrète ks qui n’est connue que de A qui donne une fonction de déchiffrement dks .Cela suppose que la connaissance de kp ne donne pas ks facilement.

3.1 Quelques chiffrements à clé publique :

1. RSA2. RABIN3. ELGAMAL

8 Z.JADDA & P.PARRAUD

3.1.1 Code RSA

Conçu en 1977 par Ron Rivest, Adi Shamir et Léonard Adleman.Ce système est basé sur la difficulté de factoriser un nombre qui est produit de 2 nombres premierstrès grands.A l’heure actuelle, la méthode RSA est considérée comme la méthode de chiffrement à clé publique laplus sûre. Elle protège en particulier les cartes bancaires.Mais les progrès en matière de factorisation d’entiers la mettent en danger.

Génération des 2 clés par Bob :

1. Choix de 2 grands nombres premiers p et q et calcul de n = pq et ϕ(n) = (p− 1)(q − 1)

2. Choix de e premier avec ϕ(n) et d inverse de e modulo ϕ(n) c.à.d. ed ≡ 1[ϕ(n)]

3. Publication du couple (n, e) et mise en secret p, q et d.On appelle e l’exposant de chiffrement, d l’exposant de déchiffrement et n le modulus.

Chiffrement d’un message par Alice :

1. Recherche dans l’annuaire la clé de chiffrement publique de Bob.2. Représentation du message sous forme d’un entier m dans Zn3. calcul du message chiffré c par c ≡ me[n].

Déchiffrage du message c par Bob : cd = med ≡ m [n].

La sécurité du chiffrement RSA :La sécurité du système RSA repose sur la difficulté de trouver p et q premiers en ne connaissant

que n = pq.

A l’heure du e-commerce, c’est le système RSA qui est le plus utilisé aujourd’hui. La taille évolueconstamment en fonction de la puissance des processeurs.Jusqu’à 1997, la taille des clés pour la carte bancaire était de 320 bits (96 chiffres). Mais une attaquepar l’ingénieur mathématicien Serge Humpich qui est parvenu à trouve p et q et a conçu une " yes-card " qui répond à n’importe quel code a poussé le GIE, en novembre 1999, a rajouté sur les cartesbancaires une valeur d’authentification rallongée de 768 bits.

Challenge RSA :

en mars 1991 La société RSA a lancé le Challenge RSA qui consiste à un défi de trouver des chiffresRSA assez grands (voir tableau ci-dessous). La compétition a été annulée en mai 2007.

Compétition Prix Statut DateRSA-576 10 000 $ Factorisé 3-12-2003RSA-640 20 000 $ Factorisé 2-11-2005RSA-704 30 000 $ Annulé -RSA-768 50 000 $ Annulé -RSA-896 75 000 $ Annulé -RSA-1024 100 000 $ Annulé -RSA-1536 150 000 $ Annulé -RSA-2048 200 000 $ Annulé -

9 Z.JADDA & P.PARRAUD

Par exemple : La factorisation de RSA-200 en mai 2005 après 18 mois de calcul :

RSA-200=2799783391 1221327870 8294676387 2260162107 0446786955 4285375600 09929326128400107609 3456710529 5536085606 1822351910 9513657886 3710595448 2006576775 09858055761357909873 4950144178 8631789462 9518723786 9221823983=3532461934 4027701212 7260497819 8464368671 1974001976 2502364930 3468776121 25367942320005854795 6528088349x7925869954 4783330333 4708584148 0059687737 9758573642 1996073433 0341455767 87281815213538140930 4740185467

La société RSA elle-même estime que les clés RSA à 1024 bits devraient arriver en fin de vie auxenvirons de 2010, et qu’il faudra alors avoir basculé sur des clés à 2048 bits.Ces dernières devraient permettre, peut-être, d’être tranquilles jusqu’en 2030 seulement.

Le challenge continue avec les chercheurs :

Des chercheurs de l’EPFL, Lausann, Suisse, de l’université de Bonn, Département Mathématiques,

Allemagne, du Japonais NTT, de l’Inria équipe Caramel Nancy, France, de Microsoft Research, USA

sont et du CWI ( Centre de Maths-Info), Amsterdam, Pays-bas travaillent ensemble depuis des années

pour casser des nombres RSA.

– En mai 2007, l’équivalent d’une clé RSA de 700 bits en 11 mois de calcul intensif de 100 à 300

machines de type Pentium 3Ghz.

– En janvier 2010, l’équivalent d’une clé RSA de 768 bits, composée de 232 chiffres en deux ans et

demi et avec l’aide de 425 machines. Cela a exigé la combinaison de plusieurs méthodes de calcul,

notamment l’exploitation d’un système de calcul distribué qui s’appuie sur l’infrastructure

Grid’5000 qui a sollicité 1700 coeurs parmi les 5000 disponibles, sur une période équivalente à

un an.

les chercheurs ont annoncé qu’il leur faudrait entre 3 et 4 ans pour faire tomber le RSA 1024.

Le dernier nombre RSA cassé :

factorisation de RSA768, 768-bit, 232-digits en 2 facteurs de 384 bits et 116 digits :

1230186684530117755130494958384962720772853569595334792197

3224521517264005072636575187452021997864693899564749427740

6384592519255732630345373154826850791702612214291346167042

9214311602221240479274737794080665351419597459856902143413

=

3347807169895689878604416984821269081770479498371376856891

2431388982883793878002287614711652531743087737814467999489

× 3674604366679959042824463379962795263227915816434308764267

10 Z.JADDA & P.PARRAUD

6032283815739666511279233373417143396810270092798736308917

Conclusion sur RSA :

La méthode RSA est considérée sûre à condition que la taille des clés soit suffisante. Cependant

cette méthode a 2 inconvénients :

- RSA requiert des clés de plus en plus longues du fait de l’amélioration des méthodes de factori-

sation et de la vitesse des ordinateurs.

- RSA est plus lent que le cryptosystème à clé secrète (voir section 4) d’un facteur supérieur à

mille.

3.1.2 Code Rabin

Conçu en 1979 par Michael Rabin.

Ce système repose sur la difficulté du calcul d’une racine carrée modulo un nombre écrit sous la

forme de 2 grands nombres premiers.

Génération des 2 clés par Bob :

1. Choix 2 grands nombres premiers p et q et calcul de n = pq.

2. Publication du nombre n = pq et mise en secret de p et q.

Chiffrement d’un message par Alice :

1. Représentation du message sous forme d’un entier m dans Zn.

2. Calcul de c = m2[n].

Déchiffrage du message c par Bob :

1. Calcul des 2 racines carrées de c modulo p et des 2 racines carrées de c modulo q et

déduction des 4 racines carrées m1,m2,m3 et m4 de c modulo n.

2. Le message est l’un des mi, i = 1, 2, 3 ou 4.

Remarque :

Un inconvénient du schéma de Rabin est la nécessité de faire un choix de textes entre 4 possibilités.

Cela peut être surmonté en rajoutant une redondance aux textes clairs avant le chiffrement ( par

exemple, on peut répéter un certain nombre des derniers bits du message). Avec une grande probabi-

lité, une seule racine carrée à ces redondances. Si aucune n’en possède, le message est rejeté en tant

que frauduleux.

3.1.3 Codes ElGamal

Conçu en 1985 par Taher El Gamal.

Ce système est basé sur la difficulté du problème du logarithme discret.

11 Z.JADDA & P.PARRAUD

C’est la base du système DSA, standardisé par NIST (National Institute of Standards and Techno-

logy).

Il existe 2 codes ElGamal : le code de base et le code modifié qui différent par la fabrication de la clé

publique.

Pour le code de base : Génération des 2 clés par Bob :

1. Choix d’un grand nombre premier p et d’un élément primitif g de Z∗p.

2. Choix de s, 1 ≤ s ≤ p− 2 et calcul de h = gs[p].

3. Publication de(p, g, h) et mise en secret de s.

Pour le code modifié : Génération des 2 clés par Bob :

1. Choix de 2 grands nombres premiers p et q tel que q est un diviseur de p− 1 et g un élément

de Z∗p d’ordre q.

2. Choix de s, 0 ≤ s ≤ q − 1 et calcul de h ≡ gs[p]

3. Publication de la clé (p, q, g, h)(suivant le code) e tmise en secret de s.

Chiffrement d’un message par Alice :

1. Représentation du message comme un entier m.

2. Choix d’un entier a aléatoire tel que 1 ≤ a ≤ p− 1 ou 1 ≤ a ≤ q − 1.

3. Calcul de c1 ≡ ga [p] et c2 ≡ m ha[p].

4. Envoie du chiffré c = (c1, c2) à Bob.

Déchiffrage du message c par Bob :

Bob calcule c2(cs1)−1[p] qui est égale à m.

Partage de la clé de déchiffrement : Secret de Bob : s1, secret de Taher : s2 .

Soit h1 = gs1 et h2 = gs2

Clé publique commune de Bob et Taher = (p, q, g, h = h1h2)

Chiffré : c = (c1, c2) = (ga,m ha),

Clair : m = c2(cs11 cs21 )−1.

Malléabilité du code ElGamal :

Soit (p, g, h) clé publique ElGamal.

Re-chiffrement sans connaissance de la clé privée :

C = (ga,m ha)→ C ′ = (gagr,m hahr) avec 1 ≤ a+ r ≤ p− 2

Application : Vote électronique.

12 Z.JADDA & P.PARRAUD

Attaque sur ElGamal :

En septembre 2005 l’Universitéde Versailles-Saint Quentin en Yvelines et le Celar ont établi un

nouveau record dans le calcul de logarithmes discrets pour des nombres de 613 bits. Ce record a été

établi sur TeraNova, un cluster composéde 20 serveurs de 16 processeurs Itanium 2 d’Intel. Il a fallu

13 jours de traitement continu à 64 processeurs pour résoudre ce problème.

( 99840h/CPU )

3.2 Signature Numérique

Le problème n’est plus lié à la confidentialité d’un message mais le but est de garantir l’intégrité

d’un document électronique et d’en authentifier l’auteur, par analogie avec la signature manuscrite

d’un document papier.

3.2.1 Caractéristiques d’une signature

Un mécanisme de signature numérique doit être :

– Authentique : l’identité du signataire doit pouvoir être retrouvée de manière certaine.

– Infalsifiable :la signature ne peut pas être falsifiée. Quelqu’un ne peut se faire passer pour un

autre.

– Non réutilisable : la signature n’est pas réutilisable. Elle fait partie du document signé et ne

peut être déplacée sur un autre document.

– Inaltérable : un document signé est inaltérable. Une fois qu’il est signé, on ne peut plus le

modifier.

– Irrévocable : la personne qui a signé ne peut le nier.

3.2.2 Fonction de hachage

La technique "Hash-And-Sign" :

Au lieu de signer en utilisant le message M très long, un condensé (ou empreinte ou haché) du

message est calculé avec une fonction de hachage publique h. Le message M est transformé en un

message m = h(M) de longueur fixée.

Propriétés de la fonction de hachage : h doit être :

– à sens unique (résistance au calcul de la pré-image) : étant donnée une sortie y, il est difficile

de trouver x tel que h(x) = y.

– Résistante au second calcul de la pré-image (faible résistance aux collisions) : étant donnée une

entrée x et son image h(x), il est difficile de trouver x0 tel que h(x0) = h(x).

– Résistante forte aux collisions : il est difficile de trouver x 6= x0 tel que h(x) = h(x0).

13 Z.JADDA & P.PARRAUD

contrôle de l’intégrité d’un message :

Alice envoie à Bob un messageM et puis son empreinte h(M). Bob calcule à son tour l’empreinte

du message qu’il reçoit puis la compare avec celle qu’il a reçue. Si ce sont les mêmes, le message n’a

pas été modifié. Sinon il y a un problème d’intégrité du massage.

On peut voir une analogie avec les empreintes digitales.

Exemples de fonctions de hachage :

– Fonctions MD∗ : Message Digest, conçues par R.Rivest en 1991 −→ empreinte de 128 bits.

Depuis 2005, MD2, MD4 et MD5 sont moins utilisées à cause de faiblesse sur les collisions.

– Fonctions SHA∗ : Secure HAsh Algorithm, proposées par le NIST.

– SHA-0 et SHA-1 −→ empreinte de 160 bits. Attaque théorique et faiblesse sur les collisions

en 2005.

– SHA-2 contient les fonctions de hachage SHA-224, SHA-256, SHA-384 et SHA-512, qui

produisent des empreintes de taille différente.

– SHA-3 est en cours de développement après une compétition lancée par le Nist en 2008 qui

doit finir en 2012.

5 finalistes ont été sélectionnés en décembre 2010.

Stratégie pour une signature : Bob, qui veut signer un message M , commence par en faire un

condensé m = h(M), puis il calcule, grâce à sa clé privée, l’appendice s = S(dA,m). Il peut alors

transmettre à Alice son message signé (M, s) . Alice utilise la fonction de vérification ν qui à la clé

publique Kp de Bob, et à un message signé (M, s) par Bob fait correspondre ν(Kp,M, s), valant

"vrai" si (M, s) correspond bien à un message signé par Bob et "faux" sinon.

3.2.3 Signature RSA

Le système RSA peut être utilisé dans un mode signature.

Il suffit d’inverser le rôle de e et de d. Bob peut signer un message M en prouvant qu’il détient d

sans le divulguer.

Pour cela, il envoie en même temps que le message m = h(M), la signature md.

Alice vérifie à l’aide de e que (md)e = m.

La signature RSA associée à l’encodage PSS (Probabilistic Signature Scheme) a été retenue par le

projet NESSIE (New European Schemes for Signatures, Integrity and Encryption) en 2003.

3.2.4 Signature ElGamal

Ce système est surtout utilisé en signature. Il est à l’origine de l’algorithme DSA (Digital

Signature Algorithm) qui fait partie du standard DSS ( Digital Signature Standard ).

14 Z.JADDA & P.PARRAUD

Signature ElGamal avec le codede base :

Clé publique (p, g, h). Clé secrète : s ∈ [0, p− 2].

Pour une signature, on choisit k ∈ [0, p− 2] (différent pour chaque signature). Le message M est

signé : (r, a), avec r = gk mod p et a = k−1(h(M)− sr) mod (p− 1).

Si la signature est correcte, elle doit vérifier : rahr = gh(M) mod p.

(r, a) est appelé l’appendice.

Signature ElGamal avec le codede modifié :

Clé publique (p, q, g, h), clé secrète : s ∈ [0, p− 2].

Signature : (r, a) d’un message M tel que m = h(M) avec :

r = (gk mod p) mod q et a = k−1(m− sr) mod q, k ∈ [0, q − 2] (différent pour chaque signature).

Si la signature est correcte, elle doit vérifier : rahr = (gm mod p) mod q.

3.3 Organisation de PKI

La PKI (Public Key Infrastucture) est le système de gestion des clefs publiques.

Organisation d’une PKI :

L’infrastructure est en règle générale composée de trois entités distinctes :

1. L’autorité d’enregistrement qui se charge des formalités administratives (l’identité des deman-

deurs, la gestion des demandes, ....).

2. L’autorité de certification qui se charge des tâches techniques de création de certificats. L’auto-

rité de certification est ainsi chargée de la signature des demandes de certificat et de révocations.

3. L’Autorité de dépôt qui conserve en sécurité les certificats.

Pour plus de renseignements voir le site de l’ANSSI (Agence nationale de la sécurité des systèmes

d’information).

www.ssi.gouv.fr/fr/index.html

4 Systèmes symétriques

Pour le Chiffrement symétrique ou à clé secrète, l’expéditeur et le destinataire partagent une

même clé privée qui est utilisée pour le chiffrement et le déchiffrement. Elle doit donc rester secrète

et ne pas être divulgué à une tiers personne.

15 Z.JADDA & P.PARRAUD

Il existe deux types de chiffrements symétriques :

1. Chiffrements par blocs : le message m est divisé en blocs de taille fixe et on chiffre un bloc à la

fois.

2. Chiffrements par flots (Appelé aussi chiffrement de flux) : il opère individuellement sur chaque

bit du texte clair en utilisant une transformation qui varie en fonction de la place du bit d’entrée.

4.1 Chiffrement par Blocs

Définition 2 ( Chiffrement itéré ) Dans un chiffrement par blocs itéré à r tours, le chiffré est

calculé par application itérée au texte clair d’une fonction de tour g telle que : Ci = g(Ci−1, ki), i =

1, . . . r avec C0 = m le message clair, ki une clé de tour et Cr le chiffré final. g étant inversible pour

chaque ki.

Pour déchiffrer, il suffit d’inverser l’équation précédente.

Remarque 1 ( Choix de paramètres ) L’augmentation de la taille des bloc, la taille des clés, le

nombre de cycles ainsi que la complexité de l’algorithme des générateurs de clés renforce la sécurité.

4.1.1 Réseau de Feistel

Réseau de Feistel C’est une construction utilisée dans les algorithmes de chiffrements par blocs,

conçu par le cryptologue d’IBM, Horst Feistel en 1970. Dans ce système de chiffrement, un bloc de

texte en clair d’un nombre pair de bits est découpé en deux ; la transformation de ronde est appliquée

à une des deux moitiés, et le résultat est combiné avec l’autre moitié par un XOR. Les deux moitiés

sont alors inversées pour la ronde suivante.

16 Z.JADDA & P.PARRAUD

Exemple de chiffrage par réseau de Feistel

Chiffrage par un réseau de Feistel à deux rondes d’un message constitué de 4 bits, ce qui revient

à construire une bijection de 4 bits vers 4 bits à partir de deux fonctions f1 et f2 de 2 bits vers 2

bits. On considère que pour une certaine clé entrée, ces fonctions sont les suivantes :

Exemple de chiffrage par réseau de Feistel

entrée f1 sortie00 → 0101 → 1110 → 1011 → 01

entrée f2 sortie00 → 1101 → 0010 → 0011 → 01

les chiffrements obtenus des 16 messages possibles :

message résultat0000 01000001 11000010 10100011 01110100 00110101 10010110 11110111 0000

message résultat1000 11011001 01011010 00011011 11101100 10001101 00101110 01101111 1011

Quelques chiffrements par bloc :

1. DES

2. IDEA

3. AES

17 Z.JADDA & P.PARRAUD

4.1.2 DES

Data Encryption Standard.

C’est un chiffrement de Feistel.

Conçu en 1970 par IBM. Il a été standardisé en 1977. C’est ce chiffrement qui est encore en

vigueur pour chiffrer les mots de pass sur les systèmes Unix.

Fonctionnement :

L’algorithme DES est un algorithme itéré à 16 tours dont les 16 clés k1, . . . k16 de 48 bits sont

calculées par un algorithme de séquencement sur une clé principale K de 64 bits.

L’algorithme DES :

Entrée : un message m de 64 bits et une clé de 64 bits dont 56 seulement sont utilisés, les 8

autres sont au bout de chaque octet pour contrôler la parité de l’octet.

Sortie : un chiffré C de 64 bits.

18 Z.JADDA & P.PARRAUD

L’algorithme fait subir à m une permutation initiale (IP) qui donne m′.

m′ est divisé en 2 blocs de 32 bits : L0 la partie gauche et R0 la partie droite. DES exécute 16

itérations de la fonction f ( la fonction itérative ). Elles combinent substitution, transposition et

expansion. Les parties gauche et droite sont modifiées de la manière suivante :

Li = Ri−1

Ri = Li−1 ⊕ f (Ri−1, ki), 1 ≤ i ≤ 16, ( ⊕ = XOR ) et f est définie en utilisant 8 permutations

appelées S-boxes (S=substitution) qui associent à un bloc de 6 bits en entrée un bloc de 4 bits en

sortie.

Le pré-chiffré C ′=(R16, L16) subit la permutation inverse de IP et donne le chiffré final C.

La permutation initiale du DES

58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7

Fonction itérative du DES

19 Z.JADDA & P.PARRAUD

Fonction itérative du DES f(Ri−1, ki) = P (S(E(Ri−1) ⊕ ki)) avec E une fonction d’expan-

sion/permutation fixe qui renvoie Ri−1 de 32 bits sur 48 bits en plaçant le 32eme bit en 1er , le 1er en

2eme et ainsi de suite selon la table :

L’expansion dans la fonction itérative du DES

32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1

On additionne ce mot à la clé ki par ⊕. On subdivise le mot obtenu en 8 blocs de 6 bits. Chacun

est transformé en un bloc de 4 bits en utilisant les S-boxes. Les 8 blocs ainsi obtenus sont concaténés

pour former un mot de 32 bits auquel on applique une permutation P selon la table suivante (16 en

1ere position, 7 en 2eme . . . ) :

La permutation dans la fonction itérative

16 7 20 2129 12 28 171 15 23 265 18 31 102 8 24 1432 27 3 919 13 30 622 11 4 25

Les S-boxes

S1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 71 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 82 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 03 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

S2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 101 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 52 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 153 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

S3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 81 13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 12 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 73 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

S4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 151 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 92 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 43 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

S5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 91 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 62 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 143 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

S6 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 111 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 82 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 63 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 11 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 62 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 23 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

S8 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 150 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 71 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 21 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 81 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

20 Z.JADDA & P.PARRAUD

Calcul avec les S-box :

Aux 8 blocs (Bj)1≤j≤8 de 6 bits, chacune des 8 S-box associé, transforme le bloc en un bloc de 4

bits.

Pour cela, si Bj = b5b4b3b2b1b0, l’entier b5b0 sélectionne une ligne de Sj et l’entier b4b3b2b1 sélectionne

une colonne. La valeur de Sj(Bj) est l’entier dans la Sj-box à cette position.

Construction des clés de tours :

à chacune des 16 itérations de l’algorithme, on utilise une clé différente ki de 48 bits obtenue à partir

de la clé initiale K.

On applique une permutation PC1 au 56 bits de la clé K après avoir enlevé les 8 bits de parités.

21 Z.JADDA & P.PARRAUD

57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13 5 28 20 12 4

Permutation PC1

Le résultat PC1(K) est séparé en 2 blocs C et D de 28 bits. Les 2 blocs subissent un décalage à

gauche d’un cran aux étapes 1, 2, 9 et 16 et de 2 crans pour les autres.

A l’ étapes i on obtient une clé partielle ki de 48 bits en appliquant la règle d’extraction-

permutation PC2 à CiDi

14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32

Règle d’extraction-permutation PC2 les bits 9, 18, 22, 25, 35, 38, 43 et 48 sont extraits.

Le déchiffrement DES

Il est effectué par le même algorithme en inversant l’ordre d’utilisation des clés de tour. On utilise

k16 à la 1ere itération, k15 à la 2eme et ainsi de suite.

Attaque sur DES :

Si on connaît un texte clair et son chiffré, une recherche exhaustive de la clé est théoriquement

possible.

En 1999 une clé a été retrouvée en 22h par la machine Deep Crack lors de l’attaque des labo RSA

contre DES.

Contre Attaque :

Le triple DES enchaîne 3 applications successives de l’algo DES sur le même bloc de données de

64 bits avec 2 ou 3 clés de DES différentes.

Soient k1 et k2 deux clés DES :

Triple DESk1,k2 = DESk1◦DESk2◦DESk1.

Une clé Triple DES fait 112 bits. C’est le système utilisé en combinaison avec RSA pour les cartes

bancaires.

22 Z.JADDA & P.PARRAUD

4.1.3 IDEA

International Data Encryption Algorithm :

Développé en Suisse par Xuejia Lai et James Massey en 1992. Il effectue des opérations du même

genre que celles du DES avec des blocs de 64 bits et une clef de 128 bits.

L’algorithme :

Entrée : un message m de 64 bits et une clé de 128 bits.

Sortie : un chiffré C de 64 bits.

L’algorithme divise m en 4 blocs (mi)1≤i≤4 de 16 bits chacun et la clé en 8 blocs (ki)1≤i≤8 de 16

bits chacun et effectue 8 rondes.

A chaque ronde, les 4 blocs sont combinées par des XOR (⊕), des additions modulo 216 (�) et

des multiplications modulo 216 + 1(⊗) entre eux et avec les 8 blocs de la clé ( qui changent suivant

les rondes, voir diversification de la clé). Entre chaque ronde, le 2eme et 3eme bloc sont échangés (sauf

à la dernière ronde).

23 Z.JADDA & P.PARRAUD

m1 � k1 = M1 M1 ⊕M3 = M5 M8 � k6 = M9 M2 ⊕M10 = M13

m2 � k2 = M2 M2 ⊕M4 = M6 M7 �M9 = M10 M4 ⊕M10 = M14

m3 � k3 = M3 M5 � k5 = M7 M1 ⊕M9 = M11

m4 � k4 = M4 M6 �M7 = M8 M3 ⊕M9 = M12

La sortie de la 1ere ronde est formée des 4 blocs M11,M13,M12,M14 qui va constituer l’entrée de

la ronde suivante.

Après la 8eme ronde on obtient les 4 blocs X1, X2, X3, X4 et les 8 blocs (K9i )1≤i≤8 de la clé. On

applique une transformation finale :

X1 �K91 = Y1 X2 �K9

2 = Y2 X3 �K93 = Y3 X4 �K9

4 = Y4

Le chiffré est donc : C = Y1Y2Y3Y4

Diversification de la clé IDEA :

Pendant les 8 rondes et la transformation finale, on génère 52 blocs différents de 16 bits ( 6 pour

chacune des 8 rondes et 4 pour la transformation finale ) :

La clé de 128 bits est divisée en 8 blocs (ki)1≤i≤8 de 16 bits.

k1, ...k6 sont utilisés dans la 1ere ronde.

k7 et k8 au début de la 2eme ronde.

Ensuite la clé subit une permutation circulaire de 25 bits vers la gauche et est encore divisée en

8 blocs (k′i)1≤i≤8 ,

k′1, ...k′4 sont utilisés dans la 2eme ronde et k′5, ...k′8 par la 3eme. La clé subit à nouveau une

permutation circulaire de 25 bits vers la gauche et est encore divisée en 8 blocs et ainsi de suite

jusqu’à la fin de l’algorithme.

Déchiffrement IDEA : Le déchiffrement suit le même fonctionnement que le chiffrement sauf

que les blocs de clé de déchiffrement sont l’inverse de la clé de chiffremnt pour l’addition et la

multiplication. (Par convention, 0 est l’inverse de 0 pour la multiplication).

Le tableau ci-dessous donne les blocs de la clé de déchiffrement correpondant aux blocs de la clé

de chiffrement.

Les blocs de la clé de déchiffrement IDEA Kji désigne le ieme bloc de la clé à la j eme ronde et à la

phase finale avec 1 ≤ i ≤ 6 et 1 ≤ j ≤ 9.

Ronde

24 Z.JADDA & P.PARRAUD

1 (K91 )−1 −K9

2 −K93 (K9

4 )−1

2 (K81 )−1 −K8

3 −K82 (K8

4 )−1 K85 K8

63 (K7

1 )−1 −K73 −K7

2 (K74 )−1 K7

5 K76

4 (K61 )−1 −K6

3 −K62 (K6

4 )−1 K65 K6

65 (K5

1 )−1 −K53 −K5

2 (K54 )−1 K5

5 K56

6 (K41 )−1 −K4

3 −K42 (K4

4 )−1 K45 K4

67 (K3

1 )−1 −K33 −K3

2 (K34 )−1 K3

5 K36

8 (K21 )−1 −K2

3 −K22 (K2

4 )−1 K25 K2

6Finale (K1

1 )−1 −K12 −K1

3 (K14 )−1 K1

5 K16

Pour casser IDEA, la clé étant de longueur 128, il faudrait effectuer 2128 = 1038 combinaisons.

4.1.4 AES

Advanced Encryption Standard

Mis au point par Joan Daeman et Vincent Rijmen en 2000, appelé aussi Rijndael.

L’algorithme procéde par blocs de 128 bits ( 16 octets ), 192 bits ( 24 octets ) ou 256 bits (32

octets ) avec une clé de même taille également.

Chaque bloc subit une séquence de 5 transformations répétées Nr fois. Nr = 10 , 12 ou 14 suivant

la longueur de la clé.

Les octets des données sont placés dans des tableaux de 4 lignes et 4, 6 ou 8 colonnes.

Algorithme AES avec des blocs à 128 bits

A partir de la clé initiale K, le système génère Nr + 1 ( ici = 11) clés de tours : TK[i], 0 ≤ i < 11

avec TK[0] = K.

AES(St,K)Entrée : Le tableau St (le clair ) et la clé KSortie : Le tableau St modifié ( le chiffré )débutExpandedKey (K,TK) ;AddRoundKey (St,TK[0]) ;pour(i=1 ; i<10 ; i++)Round (St,TK[i]) ;FinalRound(St,TK[10]) ;fin

25 Z.JADDA & P.PARRAUD

Round(St,T)Entrée : Le tableau d’état St et une clé de tour TSortie : Le tableau St modifiédébutSubBytes(St) ;ShiftRow(St) ;Mixcolumns(St) ;AddroundKey (St,T) ;fin

FinalRound(St,T)Entrée : Le tableau d’état St et une clé de tour TSortie : Le tableau St modifiédébutSubBytes(St) ;ShiftRow(St) ;AddRoundKey (St,T) ;fin

– Addition de la clé secrète par un XOR .

– Transformation non linéaire d’octets : les 128 bits sont répartis en 16 blocs de 8 bits , eux-même

dispatchés dans un tableau 4× 4. Chaque octet est transformé par une fonction non linéaire S

(ByteSub).

– Décalage dans les lignes (ShiftRow) : les 3 dernières lignes sont décalées cycliquement vers la

gauche : la 2eme ligne est décalée d’une colonne, la 3eme ligne de 2 colonnes, et la 4eme ligne de

3 colonnes.a11 a12 a13 a14

a21 a22 a23 a24

a31 a32 a33 a34

a41 a42 a43 a44

est transformée en

a11 a12 a13 a14

a22 a23 a24 a21

a33 a34 a31 a32

a44 a41 a42 a43

– Brouillage des colonnes (MixColumn) : Chaque colonne est transformée par combinaisons li-

néaires des différents éléments de la colonne (ce qui revient à multiplier la matrice 4 × 4 par

une autre matrice 4 × 4). Les calculs sur les octets de 8 bits sont réalisés dans le corps à 28

éléments.

– Addition de la clé de tour : A chaque tour, une clé de tour est générée à partir de la clé secrète

par un sous-algorithme (dit de séquencement). Cette clé de tour est ajoutée par un XOR au

dernier bloc obtenu.

Calculs pour ByteSub et MixColumn :

26 Z.JADDA & P.PARRAUD

Les opérations de l’AES sont définies soit au niveau de l’octet, soit sur des mots de 32 bits.

Un octet est représenté comme un élément du corps fini F256 et un mot comme un polynôme à

coefficients dans F256.

Soit le polynôme P (X) = X8+X4+X3+X+1. Il est à coefficients dans F2 = {0, 1} et irréductiblesur ce corps.

On considère le corps F256 comme le corps quotient F2[X]P (X)

.

Calculs pour ByteSub et MixColumn :

Les 256 éléments de F256 vont être considérés comme des polynômes b(X) = b7X7 +b6X

6 +b5X5 +

b4X4 + b3X

3 + b2X2 + b1X + b0

ou des octets b7b6b5b4b3b2b1b0.

L’addition (⊕) se fait bit à bit et la multiplication (⊗) se fait modulo P (X).

Tout élément admet un inverse et on admet que 0 a pour inverse 0.

Opérations dans F256 :

F256 = F2[X]P (X)

, avec P (X) = X8 +X4 +X3 +X + 1.

Dans cette structure un élément de base est un polynôme de F2[X] de degré ≤ 7.

Le calcul se fait en binaire ou en hexadécimal.

Décimal 10 11 12 13 14 15Binaire 1010 1011 1100 1101 1110 1111

Hexadécimal A B C D E FAddition :

(X6 +X4 +X2 +X + 1)⊕ (X7 +X + 1) = X7 +X6 +X4 +X2

= (01010111)⊕ (10000011) = 11010100 = (D4)H

Multiplication modulo P (X) = X8 +X4 +X3 +X + 1 :

(01010111)⊗ (10000011) = (x6 + x4 + x2 + x+ 1)⊗ (x7 + x+ 1) modP (X)

= x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 modP (X)

= (x5 + x3)P (X) + x7 + x6 + 1modP (X)

27 Z.JADDA & P.PARRAUD

= x7 + x6 + 1

La transformation S ou " Boîte-S " ou " ByteSub " : C’est elle qui donne la robustesse au sys-

tème.

– Chaque octet du tableau est changé par son inverse dans le corps F256 .

– On applique la transformation suivante sur chaque octet ( b7b6b5b4b3b2b1b0 ) résultant de l’opé-

ration précédente :

1 0 0 0 1 1 1 11 1 0 0 0 1 1 11 1 1 0 0 0 1 11 1 1 1 0 0 0 11 1 1 1 1 0 0 00 1 1 1 1 1 0 00 0 1 1 1 1 1 00 0 0 1 1 1 1 1

b0

b1

b2

b3

b4

b5

b6

b7

11000110

Brouillage des colonnes : " MixColumn " :

On notera {n} l’écritue Exadécimal de n.

soit a(X) = a3X3 + a2X

2 + a1X + a0 = {03}X3 + {01}X2 + {01}X + {02} un polynôme fixe.

A part au dernier tour, chaque colonne de 4 octets

c0

c1

c2

c3

, vue comme un polynôme c3X3 + c2X

2 +

c1X + c0 de F256[X] est multiplié modulo (X4 + 1) par le polynôme a(X).

Ce qui revient à faire le calcul matriciel :d0

d1

d2

d3

=

a0 a3 a2 a1

a1 a0 a3 a2

a2 a1 a0 a3

a3 a2 a1 a0

c0

c1

c2

c3

Algorithme de séquencement de clé :

A partir de la clé initiale K, 11 clés (Ki )0≤ i≤10 sont créées.

1ere étape : la clé initiale K de 16 octets, stockée dans une matrice ( 4, 4) est étendue en une clé

W de 176 octets, stockée dans une matrice ( 4, 44) . Au ieme tour, la clé Ki est donnée par les 4

colonnes de W : 4i, 4i+ 1, 4i+ 2 et 4i+ 3.

Construction de la clée étendue W "Expanded Key" :

28 Z.JADDA & P.PARRAUD

Entrée : la clé K (sous forme de matrice)Sortie : La clé étendue W (sous forme de matrice)

ExpandedKey (K,W)débutpour (j = 0; j < 4; j + +)

pour (i = 0; i < 4; i+ +) W [i, j] = K[i, j];pour (j = 4; j < 44; j + +)

si (j ≡ 0mod(4))alors

W [0, j] = W [0, j − 4]⊕ S (W [1, j − 4])⊕RC[ j4

];pour (i = 1; i < 4; i+ +)

W [i, j] = W [i, j − 4]⊕ S (W [i+ 1mod4, j − 1]);sinon

pour ((i = 0; i < 4; i+ +)W [i, j] = W [i, j − 4]⊕W [i, j − 1]);

finsi ;fin

S est la transformation ByteSub et RC[i] = αi avec α = X = {02} dans F256

Déchiffrement :

Le déchiffremnt se fait en remplaçant chaque opération par son inverse.

pour S :

on calcule

0 0 1 0 0 1 0 11 0 0 1 0 0 1 00 1 0 0 1 0 0 11 0 1 0 0 1 0 00 1 0 1 0 0 1 00 0 1 0 1 0 0 11 0 0 1 0 1 0 00 1 0 0 1 0 1 0

b′0

b′1

b′2

b′3

b′4

b′5

b′6

b′7

10100000

puis son inverse dans F256.

Pour le brouillage des colonnes on utilise

a(X)−1 = {0B}X3 + {0D}X2 + {09}X + {0E}

(a(X) = {03}X3 + {01}X2 + {01}X + {02})

Quelques applications de l’AES :

– SONET (Synchronous Optical NETwork)

– Routeurs Internet

– Switch Ethernet ATM (Asynchronous Transfert Mode)

– Communications Sattelites

– VPN (Réseaux privés virtuels)

– Téléphonie mobile

29 Z.JADDA & P.PARRAUD

4.2 Chiffrement par Flot

Définition 3 Le chiffrement par flot (ou stream cipher ou chiffrement de flux) est un chiffrement

à clé secrète qui opère individuellement sur chaque symbole ( ou bit) du texte clair en utilisant une

transformation qui varie en fonction de la place du symbole d’entrée. La transformation d’un symbole

mi est le plus souvent une combinaison avec un symbole ki produit par un générateur pseudo-aléatoire.

Remarque 2 La sécurité donc dépend de la qualité du générateur.

si ki = 0 pour tout i, c = m.

Mais si la séquence des clés ki est infinie et complètement aléatoire, on a un One-Time-Pad.

En pratique, on se situe entre ces 2 extrémités.

4.2.1 GPA

Définition 4 Un générateur pseudo-aléatoire de symboles (GPA) est un automate à nombre fini

d’états qui, à partir de la donnée d’un nombre fini de symboles ( état initial ) produit une suite de

symboles qui a l’apparence d’une suite aléatoire. Dans un système de chiffrement à flot, l’état initial

est calculé à partir de la clé K et d’un vecteur d’initialisation.

Définition 5 Un GPA est un GPACS (GPA Cryptographiquement Sûr) s’il passe le test du prochain

bit ;càd si aucun algorithme polynomial ne peut prédire le keme bit de la suite en connaissant les (k−1)

précédents avec une probabilité supérieur à 12.

Exemple d’un GPACS :Générateur BBS ( Blum-Blum-Shub )Paramètres : n = pq, p et q premiers congrus à 3 (mo4).Etats : [[1, n− 1]]Algo : pour produire r bits k1...kr, choisir un état g premier avec n,calculer x0 = g2 (mod n)pour i variant de 1 à r fairexi = x2

i−1 (mod n)ki = xi (mod 2)Fin pourretourner k1...kr

Remarque 3 BBS est un GPACS, mais très coûteux à cause des opérations pour produire un bit,

donc non facilement utilisable en pratique pour le chiffrement à flot.

4.2.2 LFSR

Le LFSR (Linear Feedback Shift Register) est générateur pseudo-aléatoire de clés.

C’est un registre à décalage avec rebouclage linéaire.

30 Z.JADDA & P.PARRAUD

LF : Linear Feedback : rebouclage linéaire par un XOR entre certains bits du registre en replaçant

le résultat du calcul dans le bit le plus à gauche.

S : Shift : décalage vers la droite d’une position à chaque nouveau bit.

R : Register : registre où sont stockées des suites binaires (clés).

Définition 6 Un registre LFSR de longueur L est constitué de L sections, d’une fonction de retour

Feedback définie par XOR et d’une horloge qui contrôle le mouvement des données.

Les L sections sont aussi appelées étapes, éléments de retard, cases mémoires ou flip-flops, nu-

mérotées de 0 jusqu’à L− 1, contenant chacune 1 bit (état interne). Pendant chaque unité de temps

les opérations suivantes sont effetuées :

1. Le contenu de l’étape 0 constitue la sortie.

2. Le contenu de l’étape i est déplacé vers l’étape i− 1.

3. Le nouveau contenu de l’étape L − 1 est le bit de rebouclage obtenu par un XOR entre les

contenus précédents d’un sous-ensemble fixe d’étapes.

Périodicité :

– Les bits (s0, · · · , sL−1) forment l’état initial du registre.

– La suite (sn)n≥0 de longueur L produite par un LFSR est une suite à récurrence linéaire

homogène d’ordre L.

– Inversement ce type de suite peut toujours être produite par un LFSR.

– Ces suites sont ultimement périodiques (i.e. il existe i0 tel que si = si+T pour tout i ≥ i0).

Autremnet dit, la suite est périodique si on ignore un nombre fini de bits initiaux.

Toute suite (sn) binaire à récurrence linéaire homogène d’ordre L est ultimement périodique. Sa

période T est inférieure ou égale à 2L − 1.

Définition 7 (polynôme de rétroaction) Soit un LSFR de longueur L et de sous ensembles fixes

de rebouclage {i1, ...ip}, 0 ≤ p ≤ L−1, on appelle polynôme de rétroaction d’un tel LFSR, le polynôme

R(X) =

p∑j=1

XL−ij + 1.

31 Z.JADDA & P.PARRAUD

Notation :

Un LFSR de longueur L et de polynôme de rétroaction R(X) sera noté LFSR (L,R(X)).

Exemple 3 Soit le LFSR de longueur 3 dont les sections de rebouclage sont les 2 premières.

Son polynôme de rétroaction est P (X) = X3 +X2 + 1

Définition 8 ( Complexité linéaire) La complexité linéaire d’une suite est la taille du plus petit

LFSR permettant de produire cette suite. S’il n’existe pas de LFSR l’engendrant, sa complexité est

infinie.

Définition 9 (Polynôme de rétroaction minimal) le polynôme de rétroaction minimal f0 du re-

gistre (ou de la suite générée) est le polynôme unitaire de plus bas degré parmis tous les polynômes de

rétroaction de tous les LFSRs générant cette suite . C’est un diviseur des polynômes de rétroaction

de ces LFSRs.

Quelques résultats :

– Si le polynôme de rétroaction est irréductible, alors la suite engendrée par le LFSR quelle que

soit son initialisation (à part l’état nul) ne peut être engendrée par un LFSR plus court.

– la complexité linéaire de la suite s = (sn)n≥0 (ou du LFSR produisant la suite) est Λ(s) =

deg(f0).

Calcul du polynôme minimal :

– Soit (sn)n une suite binaire à rétroaction linéaire d’ordre L dont l’état initial est non nul. Son

polynôme de rétroaction minimal est l’unique polynôme unitaire f0 de F2[X] tel qu’il existe

g0 ∈ F2[X] vérifiant s(X) =g0(X)

f0(X), deg(g0) < deg(f0) et pgcd(g0, f0) = 1.

– Une suite (sn)n≥0 est produite par un LFSR dont le polynôme de rétroaction f(X) = 1+c1X+

· · ·+ cLXL si et seulement si son développement en série formelle est

s(X) =∞∑n=0

snXn =

g(X)

f(X)

32 Z.JADDA & P.PARRAUD

où g est un polynôme de F2[X] déterminé par

g(X) =L−1∑i=0

X i

i∑j=0

ci−jsj

avec deg(g) < deg(f).

Un exemple :

Soit (sn)n≥0 la suite produite par le LFSR suivant :

(sn) = (100100 . . .).

Le polynôme de rétroaction est : f(X) = X10 +X7 +X4 +X3 +X + 1

Le polynôme relatif à l’état initial est : g(X) = X7 +X + 1

On a s(X) = X7+X+1X10+X7+X4+X3+X+1

= 1X3+1

Le polynôme de rétroaction minimal est alors f0(X) = X3 + 1

La suite (sn)n≥0 peut être générée par le LFSR :

de complexité linéaire 3.

Algorithme de Berlekamp-Massey :

– E. Berlekamp de 1968 : décodage des codes BCH

– J. Massey en 1969 : trouver le plus petit LFSR générant une suite s de complexité Λ(s) à

partir des 2Λ(s) premiers bitsAlgorithme de Berlekamp-MasseyEntrée : une suite sn = s0, . . . , sn−1

Sortie : La complexité linéaire Λ(sn)Initialisation : f(X) = 1; Λ = 0;m = −1; g(X) = 1;N = 0Déroulement : Tant que N ≤ n− 1 faire

d = sN +Λ∑i=1

cisN−i mod 2

avec f(X) = 1 +

Λ∑i=1

ciXi

si d = 1 alorst(X) = f(X)f(X) = f(X) + g(X)XN−m

si 2Λ ≤ N alorsΛ = N + 1− Λm = Ng(X) = t(X)

N = N + 1Retourner Λ

33 Z.JADDA & P.PARRAUD

Le constat :

– l’algorithme de Berleamp-Massey détermine l’unique LFSR de longueur Λ(s)qui génère la suite

(sn)n≥0 à partir de n’importe quelle sous-suite de longueur 2Λ(s)

– LFSR : longueur = complexité linéaire

– problème résolu avec f irréductible

Sécurité des LFSR :

– La période doit être la plus longue possible.

– Le flux de sortie doit être le plus aléatoire possible.

– La clé K servant d’initialisation doit être la plus longue possible ( au moins 128 bits) et rester

secrète.

– Les LFSR ne sont pas des GPACS. L’algorithme de Berlekamp-Massey, permet de retrouver

un polynôme engendrant une suite finie en un temps quadratique.

Celà conduit à l’utilisation de LFSR combinés.

4.2.3 LFSRs combinés

On utilise n LFSRs donnant chacun un bit de sortie. On applique une fonction booléenne à ces

sorties qui donne le bit de sortie final.

Exemple 1 d’utilisation : A5/1

Système de chiffrement à flot synchrone utilisé par le GSM (Global System for Mobile Communi-

cations).

34 Z.JADDA & P.PARRAUD

Le GPA de A5/1 est constitué de 3 LFSRs de longeurs 19, 22 et 23 bits et de polynômes de

rétroaction :

P1(X) = X19 +X18 +X17 +X14 + 1.P2(X) = X22 +X21 + 1.P3(X) = X23 +X22 +X21 +X8 + 1.

On regarde la cellule 11 pour LFSR 1, la cellule 12 pour LFSR 2 et 13 pour LFSR 3. Les LFSRs

dont le bit est majoritaire sont décalés. La sortie est obtenue par un XOR des 3 sorties des LFSRs.

Exemple 2 d’utilisation : E0

Système de chiffrement par flot utilisé par le protocole Bluetooth pour protéger les transmis-

sions.

Le GPA de E0 est constitué de 4 LFSRs de longeurs 25, 31, 33 et 39 bits et de polynômes de rétro-

action :

P1(X) = X25 +X20 +X12 +X8 + 1.P2(X) = X31 +X24 +X16 +X12 + 1.P3(X) = X33 +X28 +X24 +X4 + 1.P4(X) = X39 +X36 +X28 +X4 + 1.

Principe de E0 :

Au neme top de l’horloge, les 4 LFSR sont décalés et produisent chacun un bit xin, 1 ≤ i ≤ 4. On

génère aussi 2 états internes cn−1 et cn de 2 bits chacun avec cn−1 = c1n−1c

0n−1 et cn = c1

nc0n, l’écriture

binaire.

Le bit sortant des LFSR est zn =4∑i=1

xin + c0n mod 2.

L’état interne cn+1 est construit de la manière suivante :

Soit sn+1 = E(

4∑i=1

xin + cn

2) avec + l’addition des entiers,

35 Z.JADDA & P.PARRAUD

E la partie entière et s1n+1s

0n+1 l’écriture binaire de sn+1.

c0n+1 = s0

n+1 ⊕ c0n ⊕ c0

n−1 ⊕ c1n−1 et

c1n+1 = s1

n+1 ⊕ c1n ⊕ c0

n−1

4.3 Comparaison des chiffrements par Blocs et par FlotsPar Blocs Par Flots

Avantages Réutilisation des clés - Rapidité- Moins de codes d’implémentation

Inconvénients 2 utilisations d’une même clé facilite la cryptanalyseApplications Transfert de fichiers Chiffrement de canal de communication

4.4 La loi française et le chiffrement

L’usage de PGP , a longtemps été interdit en France, car considéré jusqu’en 1996 comme une

arme de guerre de deuxième catégorie. La législation française s’est ensuite assouplie.

Le chiffrement est libre tant que cela reste personnel. Sinon c’est soumis à autorisation. C’est l’Agence

nationale de la sécurité des systèmes d’information (ANSSI) créée en 2009 qui assure la mission

d’autorité nationale en matière de sécurité des systèmes d’information. www.ssi.gouv.fr

4.5 Exemple de la carte bancaire

La carte à puce française est une sorte de petit ordinateur, elle possède :

– un processeur (assez peu puissant) qui permet d’effectuer des calculs,

– une mémoire "vive" pour enregistrer l’historique des transactions,

– une mémoire "morte" où sont stockées les informations nécessaires à l’authentification et au

chiffrement des données (dont une partie est en lecture seule et l’autre en lecture cachée).

Authentification de la carte : Une valeur de signature V S est calculée lors de la fabrication de la

CB à partir d’informations relatives au propriétaire (nom, numéro de carte, date de validité...) et de

S la partie secrète de la clé RSA associée à la carte.

On calcule d’abord une valeur numérique Y = f(info) déduite des informations écrites dans la

carte.

La V S est alors calculée en utilisant la clé secrète S du GIE CB (Groupement interbancaire) :

V S = S(Y ). La fabrication et l’écriture des VS sur la puce se fait dans des locaux très sécurisés, car

S doit rester secret.

Paiement par carte :

36 Z.JADDA & P.PARRAUD

– Si la transaction est d’un montant faible,

Le terminal compare Y 1 et Y 2.

Si Y 1 = Y 2, on tape le code confidentiel qui est stocké (sous forme chiffrée) à la fois dans la

puce et sur la piste magnétique de la carte. Dans ce cas c’est la puce de la carte qui elle-même

vérifie si le code entré est le bon, et transmet sa réponse au terminal.

– Si la transaction est d’un gros montant, ( affichage de "Autorisation" su l’écran du terminal)

Le terminal interroge un centre de contrôle à distance, qui envoie à la carte une valeur aléatoire

x. La carte calcule y = f(x,K), où K est une clé secrète, inscrite dans la partie illisible de la

carte, et f est la fonction de chiffrement du Triple DES. La valeur y est retransmise au centre,

qui lui-même calcule f(x,K), et donne ou non l’autorisation.

– Pour un paiement via Internet, l’internaute paie en donnant des informations sur sa carte de

crédit. Cette demande est chiffrée à l’aide de la clé publique de la société, puis envoyée. Seule

la société visée, peut déchiffrer ce message, avec sa clé privée.

37 Z.JADDA & P.PARRAUD

5 Bibliographie

– Algèbre discrète et codes correcteurs, O. Papini, J. Wolfmann, Spring. Verl., Math. & App.20

– Finite Fields, R. Lidl, H. Niederreiter, Cambridge

– HandBook of Coding Theory I & II, V. Pless, W.C. Huffman, North Holland

– The Theory of Error-Correcting Codes, F.J. MacWilliams, N.J.A. Sloane, North Holland

– Cryptography Theory and Practice, D.R. Stinson, Chapman & Hall/CRC

– HandBook of Applied Cryptography, A.J. Menezes, P.C. Van Oorschot, S.A. Vanstone, CRC

– Applied Cryptography, B. Schneier, Wiley

– Coding Theory and Cryptography, H. Niederreiter, SUP 1

– Programmation en C sous Linux, C. Blaess, Eyrolles

– Introduction à la Cryptographie, J. Buchman, Dunod, Sciences Sup

– Algèbre et Protection de l’Information, A. Poli, P. Guillot, Hermes, Lavoisier

– Cryptographie, P. Barthelemy, R. Rolland, P. Veron, Hermes, Lavoisier

– Codage, cryptologie et applications, B. Martin, Colect. Tech. Scient. Telecom, PPUR

– Introduction à la cryptographie, J. Buchmann, Dunod, Sciences Sup

38 Z.JADDA & P.PARRAUD