AccueilđŸ‡«đŸ‡·Chercher

Cryptographie symétrique

La cryptographie symĂ©trique, Ă©galement dite Ă  clĂ© secrĂšte (par opposition Ă  la cryptographie asymĂ©trique), est la plus ancienne forme de chiffrement. Elle permet Ă  la fois de chiffrer et de dĂ©chiffrer des messages Ă  l'aide d'un mĂȘme mot clĂ©. On a des traces de son utilisation par les Égyptiens vers 2000 av. J.-C. Plus proche de nous, on peut citer le chiffre de Jules CĂ©sar, dont le ROT13 est une variante.

SchĂ©ma du chiffrement symĂ©trique: la mĂȘme clĂ© est utilisĂ©e pour le chiffrement et le dĂ©chiffrement

Clé et sécurité

L'un des concepts fondamentaux de la cryptographie symétrique est la clé. Une clé est une donnée qui (traitée par un algorithme) permet de chiffrer et de déchiffrer un message. Toutes les méthodes de chiffrement n'utilisent pas de clé. Le ROT13, par exemple, n'a pas de clé. Quiconque découvre qu'un message a été codé avec cet algorithme peut le déchiffrer sans autre information. Une fois l'algorithme découvert, tous les messages chiffrés par lui deviennent lisibles.

Si l'on modifiait le ROT13 en rendant le dĂ©calage variable, alors la valeur de ce dĂ©calage deviendrait une clĂ©, car il ne serait plus possible de chiffrer et dĂ©chiffrer sans elle. L'ensemble des clĂ©s possibles comporterait alors 25 dĂ©calages (26 dĂ©calages si l'on considĂšre le dĂ©calage nul).

Cet exemple montre le rĂŽle et l'importance de la clĂ© dans un algorithme de chiffrement ; et les restrictions qu'elle implique. Auguste Kerckhoffs (La Cryptographie militaire, 1883) Ă©nonce le principe de Kerckhoffs : pour ĂȘtre sĂ»r, l'algorithme doit pouvoir ĂȘtre divulguĂ©. En outre, il faut aussi que la clĂ© puisse prendre suffisamment de valeurs pour qu'une attaque exhaustive — essai systĂ©matique de toutes les clĂ©s — soit beaucoup trop longue pour ĂȘtre menĂ©e Ă  bien. Cela s'appelle la sĂ©curitĂ© calculatoire.

Cette sĂ©curitĂ© calculatoire s'altĂšre avec le progrĂšs technique, et la puissance croissante des moyens de calcul la fait reculer constamment. Exemple : le DES, devenu obsolĂšte Ă  cause du trop petit nombre de clĂ©s qu'il peut utiliser (pourtant 256). Actuellement, 280 est un strict minimum. À titre indicatif, l'algorithme AES, dernier standard d'algorithme symĂ©trique choisi par l'institut de standardisation amĂ©ricain NIST en , utilise des clĂ©s dont la taille est, pour l'une de ses versions, de 128 bits, autrement dit il y en a 2128. Pour donner un ordre de grandeur sur ce nombre, cela fait environ 3,4 Ă— 1038 clĂ©s possibles ; l'Ăąge de l'univers Ă©tant de 1010 annĂ©es, si on suppose qu'il est possible de tester 1 000 milliards de clĂ©s par seconde (soit 3,2 Ă— 1019 clĂ©s par an), il faudra encore plus d'un milliard de fois l'Ăąge de l'univers. Dans un tel cas, on pourrait raisonnablement penser que notre algorithme est sĂ»r, du moins tant qu'il n'y a pas de meilleure attaque que celle par force brute.

Cette notion de sĂ©curitĂ© calculatoire pose la question de la sĂ©curitĂ© absolue. On sait depuis Claude Shannon et son article Communication theory of secrecy system (1949) que le chiffrement de Gilbert Vernam qui consiste Ă  ajouter au message en clair une clĂ© de la mĂȘme longueur (voir XOR) est parfaitement sĂ»r. C'est le seul pour lequel nous soyons capables de prouver une telle chose. L'inconvĂ©nient est que pour chiffrer un message de n bits, il faut au prĂ©alable avoir Ă©changĂ© une clĂ© de n bits avec le destinataire du message, et cela par une voie absolument sĂ»re, sinon chiffrer devient inutile. TrĂšs peu de cas nĂ©cessitent un tel systĂšme, mais c'Ă©tait toutefois le systĂšme utilisĂ© pour le TĂ©lĂ©phone rouge entre le Kremlin et la Maison-Blanche.

Petite taxinomie du chiffrement symétrique classique

Jusqu'aux communications numĂ©riques, les systĂšmes utilisaient l'alphabet et combinaient substitutions — les symboles sont changĂ©s mais restent Ă  leur place — et transpositions — les symboles ne sont pas modifiĂ©s mais changent de place.

La substitution est dite monoalphabĂ©tique quand l'algorithme de codage n'utilise aucun autre paramĂštre que la lettre Ă  coder, de sorte qu'une lettre est toujours remplacĂ©e par la mĂȘme lettre (relation 1→1). C'est le cas d'un algorithme Ă  dĂ©calage simple. Quand l'algorithme de codage utilise un ou plusieurs autres paramĂštres (ex : sa position dans le message), chaque lettre Ă  coder peut alors ĂȘtre remplacĂ©e par plusieurs lettres diffĂ©rentes selon les cas (relation 1→n). On parle alors de substitution polyalphabĂ©tique — e.g. le chiffre de VigenĂšre, Enigma.

La substitution peut utiliser la mĂ©thode du dĂ©calage, oĂč chaque lettre est transformĂ©e en la lettre n positions plus loin dans l'alphabet, en rebouclant, c’est-Ă -dire la lettre suivant 'z' est 'a'. On parle de dĂ©calage simple — est Ă©galement connu sous le nom de chiffre de Jules CĂ©sar- quand le dĂ©calage est identique pour toutes les lettres du message. Avec le chiffre de Blaise de VigenĂšre, on applique un nombre quelconque n de dĂ©calages, le premier dĂ©calage est utilisĂ© pour chiffrer la lettre numĂ©ro 1, puis la 1+n, 1+2n, 
 le second dĂ©calage pour la lettre numĂ©ro 2, 2+n, 2+2n, 
 Usuellement, la valeur de ces dĂ©calages est donnĂ©e par un mot de longueur n dont la ie lettre donne la valeur du ie dĂ©calage. Clarifions par un exemple.

Message clair   : wikipedia
Mot clé         : crypto
Message chiffre : yzixisfzy

Un 'a' dans le mot clĂ© correspond Ă  un dĂ©calage de 0, un 'b' Ă  un dĂ©calage de 1, etc. Dans notre exemple, la clĂ© a 6 lettres, donc les lettres 1 ('w') et 7 ('d') sont chiffrĂ©es par le mĂȘme dĂ©calage, Ă  savoir 2.

La machine Enigma utilisée par les Allemands durant la Seconde Guerre mondiale est également basée sur les substitutions, mais avec un mécanisme beaucoup plus sophistiqué.

Une autre forme de la substitution est le dictionnaire : au lieu de changer les symboles du message un Ă  un, ce sont des mots entiers que l'on remplace.

Pour les transpositions on modifie l'ordre des symboles du texte clair. Une technique consiste à se donner un mot clé, à écrire le message sous ce mot clé et à lire le texte en colonne, par ordre alphabétique.

Message           : wikipediaestuneencyclopedielibre
Mot clé           : crypto
on Ă©crit sous       wikipe
le mot clé          diaest
                    uneenc
                    yclope
                    dielib
                    re****
lettre du mot clé
(ordre alphabétique) coprty
on ordonne les       weiipk
colonnes             dteisa
                     ucenne
                     yeocpl
                     dbliie
                     r**e**


Message chiffré   : wduydr etceb* ieeol* iincie psnpi* kaele*

Les astérisques sont ajoutés pour le déchiffrement et les espaces dans le message chiffré uniquement pour la lisibilité. Le message, s'il était par exemple envoyé à un destinataire qui connaßt le mot clé, serait le suivant :

Message chiffré   : wduydretceb*ieeol*iinciepsnpi*kaele*

Techniques modernes

Depuis l'avĂšnement du numĂ©rique, les paradigmes du chiffrement symĂ©trique ont bien changĂ©. D'une part, la discipline s'est formalisĂ©e, mĂȘme si la conception de systĂšme de chiffrement garde inĂ©vitablement un aspect artisanal. En effet dans ce domaine, la seule chose que l'on sache prouver est la rĂ©sistance face Ă  des types d'attaques connues. D'autre part, la forme du texte chiffrĂ© ayant changĂ©, les mĂ©thodes ont suivi. Les algorithmes modernes chiffrent des suites de bits.

On distingue deux types d'algorithmes, les algorithmes en blocs, qui prennent bits en entrée et en ressortent , et les algorithmes à flots, qui chiffrent bit par bit sur le modÚle du chiffre de Vernam. Dans ce dernier cas, l'algorithme engendre une suite de bits qui est ajouté (cf. XOR) à la suite binaire à chiffrer. Les techniques utilisées pour générer la suite que l'on ajoute -- appelée la suite chiffrante -- sont diverses. Elles peuvent utiliser des registres à décalage à rétroaction linéaire, composés de façon non linéaire (par exemple A5/1 ou E0, mais pas RC4 qui est ou a été trÚs répandu) ... ou utiliser un chiffrement par bloc en mode avec un mode opératoire adapté.

La seconde famille d'algorithmes, ceux en blocs, est en gĂ©nĂ©ral construite sur un modĂšle itĂ©ratif. Ce modĂšle utilise une fonction qui prend une clĂ© et un message de bits. C'est cette fonction qui est itĂ©rĂ©e un certain nombre de fois, on parle de nombre de tours. À chaque tour, la clĂ© utilisĂ©e est changĂ©e et le message que l'on chiffre est le rĂ©sultat de l'itĂ©ration prĂ©cĂ©dente.

;
;


;

Les clés utilisées sont déduites d'une clé maßtre qui est la quantité secrÚte que doivent partager émetteur et destinataire. L'algorithme générant ces clés à partir de est appelé l'algorithme de cadencement de clés.

Pour qu'un tel systĂšme puisse fonctionner, la fonction utilisĂ©e doit ĂȘtre injective par rapport Ă  pour un fixĂ©, c'est-Ă -dire qu'il faut pour toute clĂ© et message pouvoir recalculer Ă  partir de , autrement le dĂ©chiffrement n'est pas possible et par consĂ©quent on ne dispose pas d'un algorithme utilisable. Formellement, cela signifie qu'il existe une fonction vĂ©rifiant

.

La sĂ©curitĂ© d'un tel systĂšme repose essentiellement sur deux points : l'algorithme de cadencement de clĂ©, et la robustesse de la fonction . Si l'algorithme de cadencement est mal conçu, les peuvent ĂȘtre dĂ©ductibles les unes des autres, ou mal rĂ©parties, etc. Dire de la fonction qu'elle est robuste signifie qu'on la suppose difficile Ă  inverser sans connaĂźtre la clĂ© ayant servi dans le calcul de . La propriĂ©tĂ© qui garantit cela est que soit une fonction pseudo-alĂ©atoire, c'est-Ă -dire qu'il n'existe pas de mĂ©thode efficace pour distinguer l'ensemble des sorties possibles de cette fonction de celles d'une fonction dont la sortie est gĂ©nĂ©rĂ©e alĂ©atoirement. Une condition nĂ©cessaire pour cela est que soit surjective; sinon, il existe des Ă©lĂ©ments de l'ensemble d'arrivĂ©e qui peuvent forcĂ©ment ĂȘtre gĂ©nĂ©rĂ© alĂ©atoirement, mais pas par . Comme on a vu infra que est aussi injective par nĂ©cessitĂ© de pouvoir dĂ©chiffrer (existence de ), c'est nĂ©cessairement une bijection, autrement dit, une permutation (puisque son ensemble de dĂ©part est le mĂȘme que son ensemble d'arrivĂ©e).

En d'autres termes, quand est une fonction pseudo-aléatoire, si on connaßt seulement , et , on ne peut pas retrouver le message , si ce n'est en effectuant une recherche exhaustive de la clé , c'est-à-dire en calculant

1) ) ;
2) ;

et cela pour toutes les clĂ©s jusqu'Ă  ce que l'on en trouve une pour laquelle est Ă©gal Ă  . On est alors assurĂ© d'avoir le message qui n'est autre que . Le problĂšme Ă©tant que si est constituĂ© de bits, il faut en moyenne essais. En prenant assez grand, on peut ĂȘtre sĂ»r que cela n'est pas rĂ©alisable en pratique : supposons que l'on puisse essayer 109 (un milliard) clĂ©s par seconde, soit environ 230, il y a 31 557 600 secondes par an, soit 225, en consĂ©quence on peut tester 255 clĂ©s par an. Si on prend pour une valeur de 80 bits, il faudrait 224 ans, plus de 16 millions d'annĂ©es.

Une technique trĂšs rĂ©pandue pour fabriquer des fonctions est celle du schĂ©ma de Feistel. Dans ce schĂ©ma, le message Ă  chiffrer est dĂ©coupĂ© en 2 blocs de n/2 bits, et le message chiffrĂ© est

oĂč le '⊕' est le XOR et est une fonction quelconque, on n'a plus Ă  supposer que c'est une permutation. En effet, on peut retrouver Ă  partir de la clĂ©

1) connaissant , on connaĂźt qui est sa partie gauche,
2) on calcule ,
3) on ajoute le résultat du calcul précédent à la partie droite de , et on retrouve ,

cela sans restriction sur . Clairement, dans ce schéma, la robustesse de repose sur la fonction .

Liste d'algorithmes symétriques communs

Voir aussi

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.