Cours
Cours
1.1 Motivation
Le triangle opposé existe également. Il porte le nom de DAD, pour Disclosure, Alteration,
Disruption : Divulgation, Altération et Perturbation.
1.2.2. Le contrôle d’accès : Le protocole AAA
Le modèle CIA n’intègre pas explicitement la vérification de l’identité des parties communicantes .
Le contrôle d’accès se fait en 4 étapes.
● Identification : Qui êtes-vous ?
● Authentification : Prouvez-le !
● Autorisation : Avez-vous les droits requis ?
● Accounting/Audit : Qu’avez-vous fait ?
Dans le protocole AAA, les deux premières étapes sont fusionnées. Dans certaines situations, on
scindera la dernière étape. On parlera d’Accounting lorsque le fait de comptabiliser des faits sera
demandé, et d’Audit lorsque des résultats plus globaux devront être étudiés.
L’authentification, visant à prouver l’identité d’un individu peut se faire de plusieurs manières :
● Ce que vous savez : mot de passe, code PIN, etc.
● Ce que vous avez : carte magnétique, lecteur de carte, etc.
● Ce que vous êtes : empreintes digitales, réseau rétinien, etc.
La sécurité en parallèle
Dans ce modèle, plusieurs mécanismes de sécurité protégeant un système possèdent le même rôle.
Le niveau de protection du système est équivalent à celui du mécanisme le moins sûr. Par exemple,
on peut déverrouiller un ordinateur portable soit par un mot de passe, soit par la biométrie
(empreinte digitale, ).
La sécurité en série
Dans ce modèle, plusieurs mécanismes de sécurité qui protègent un système et ont des rôles
complémentaires. On parlera de « défense en profondeur ». Citons par exemple le réseau d’une
entreprise où :
● Le réseau est sécurisé par un Firewall hardware,
● Les liaisons entre machines sont protégées,
● Les machines individuelles sont munies d’un Firewall software,
● Les accès aux machines se font par empreinte biométrique,
● Le logiciel à utiliser est accessible par mot de passe,
● etc.
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
Chapitre 2 : Introduction à la cryptographie
Remarques :
● Décryptage : Action permettant de retrouver le texte clair sans connaître la clef de
déchiffrement.
● Cryptage : Action de chiffrer un message.
● Encryptage et Encryptement : Ce sont des anglicismes dérivés du verbe "to encrypt"
2.2 Notations
En cryptographie, la propriété de base est que le déchiffrement d’un chiffrement de M doit être égal
à M. Le déchiffrement doit permettre de retrouver le message initialement chiffré :
M = D(E(M))
où
– M représente le texte clair,
– C est le texte chiffré,
– K est la clé (dans le cas d’un algorithme à clé symétrique)
– E est la fonction de chiffrement (E(x) désigne le chiffrement, x)
– D est la fonction de déchiffrement (D(x) désigne le déchiffrement de x) .
Ce principe implique aucun secret ne doit résider dans l’algorithme mais plutôt dans la clé.
Sans celle-ci, il doit être impossible de retrouver le texte clair à partir du texte chiffré. Par contre, si
on connaît K, le déchiffrement est immédiat.
Algorithme secret
● Nécessité de protéger la sémantique de l’algorithme contre le reverse-engineering : Le
reverse-engineering est une technologie permettant de retrouver les mécanismes et
opérations d’un algorithme à la suite d’une série d’exécution du dit algorithme.
● La cryptanalyse est olus difficile : Non seulement, il faut retrouver la clé secrète, il faut
aussi retrouver toutes les opérations/traitements/mécanismes secrets de l’algorithme.
● Petit nombre d’utilisateurs : Moins il y a de monde l’utilisant, moins il y a d’intérêts à le
casser, moins l’algorithme est éprouvé, moins l’algorithme est amélioré.
● Diffusion limitée de l’algorithme : Ceci permet de limiter le nombre d’utilisateurs en vue
de réduire la probabilité de découverte des secrets de l’algorithme et de limiter les attaques.
Algorithme publié
● Tout le monde à accès à l’algorithme : Aucun(e) mécanisme/traitement/opération ne peut
constituer un secret puisque tout le monde y a accès. De ce fait, la cryptanalyse repose
uniquement sur la découverte de la clé.
● Sécurité améliorée : Comme tout le monde à accès à l’algorithme, les failles (laissées
intentionnellement ou non par les concepteurs) peuvent être plus facilement découvertes et
corrigées.
● Pas besoin de protéger la sémantique de l’algorithme contre le reverse-engineering : La
protection de la sémantique de l’algorithme n’est pas nécessaire puisque tous ses
mécanismes, et traitements (opérations) sont connus.
● Large diffusion de l’algorithme : Large nombre d’implémentations de l’algorithme dans
des logiciels peuvent donc être réalisé[Link] mondial.
● Standardisation de l’algorithme: C’est possible si tout le monde utilise la même version
publique.
2.5 Les principaux concepts cryptographiques
Caractéristiques :
● Une seule clé est nécessaire : les clés chiffrement (notée KE) et de déchiffrement (notée KD)
sont identiques: KE = KD = K
● La clé K doit rester secrète,
● Les algorithmes les plus répandus sont le DES, AES, 3DES, ...
● Les clés sont générées aléatoirement dans l’espace des clés,
● Les opérations des algorithmes sont des transpositions et substitutions des bits du texte
clair en fonction de la clé,
● Le DES en utilise des clés de 56 bits, mais l’AES peut aller jusque 256,
● L’avantage principal de ce mode de type de cryptosystème est sa rapidité dans les
opérations de chiffrement et de déchiffrement,
● Le principal désavantage réside dans la distribution des clés : pour une meilleure sécurité, on
préfèrera l’échange manuel. Malheureusement, pour de grands systèmes, le nombre de clés
peut devenir conséquent. C’est pourquoi on utilisera souvent des échanges sécurisés pour
transmettre les clés. En effet, pour un système à N utilisateurs, il y aura autant de clés que de
pairs d’utilisateurs, c’est à dire N.(N − 1)/2 clés.
Caractéristiques :
● Deux clés sont nécessaires : une clé publique PK (symbolisée par la clé verticale) et une clé
privée secrète SK (symbolisée par la clé horizontale),
● Propriété mathématique 1: La connaissance de la clé PK ne permet pas de déduire la clé
SK ,
● Propriété mathématique 2: Le déchiffrement via la clé privée SK du chiffrement d’un
message M par la clé public PK est égal à M : DSK (EPK (M )) = M ,
● L’algorithme de cryptographie asymétrique le plus connu est le RSA,
● Le principe de ce genre d’algorithme est qu’il s’agit d’une fonction unidirectionnelle à
trappe. Une telle fonction à la particularité d’être facile à calculer dans un sens, mais
difficile voire impossible dans le sens inverse. La seule manière de pouvoir réaliser le calcul
inverse est de connaître une trappe. Une trappe pourrait par exemple être une faille dans le
générateur de clés. Cette faille peut être soit intentionnelle de la part du concepteur
(définition stricte d’une trappe) ou accidentelle.
● Les algorithmes se basent sur des concepts mathématiques tels que l’exponentiation de
grands nombres premiers (RSA), le problème des logarithmes discrets (ElGamal), ou encore
le problème du sac à dos (Merkle-Hellman).
● La taille des clés s’étend de 512 bits à 2048 bits en standard. Dans le cas du RSA, une clé de
512 bits n’est plus sûre au sens "militaire" du terme, mais est toujours utilisable de
particulier à particulier.
● Au niveau des performances, le chiffrement par voie asymétrique est environ 1000 fois plus
lent que le chiffrement symétrique.
● Cependant, à l’inverse du chiffrement symétrique où le nombre de clés est le problème
majeur, ici, pour un système à N utilisateurs, seules n paires sont nécessaires. En effet,
chaque utilisateur possède une paire de clés (SK , PK) et tous les transferts de message ont
lieu avec ces clés.
● La distribution des clés est grandement facilitée car l’échange de clés secrètes n’est plus
nécessaire. Chaque utilisateur 2 conserve sa clé secrète sans jamais la divulguer. Seule la clé
publique devra être distribuée.
Ces cryptosystèmes sont basés sur des problèmes dits NP-complets. Ce sont des problèmes pour
lesquels il n’existe pas d’algorithme de performance raisonnable pour les résoudre. Leur résolution
implique une consommation prohibitive de ressource (temps et mémoire). La cryptanaylse, le
déchiffrement sans la connaissance de la clé privée, implique la résolution d’un problème NP-
Complet. RSA repose le problème d’exponentiation de grands nombres premiers. Le cryptosystème
d’ElGamal repose sur le problème des logarithmes discrets, celui de Merkle-Hellman repose sur le
problème du sac à dos. Tous ces problèmes sont NP-Complets.
Il est bien entendu que le terme “impossible” n’est pas toujours à prendre au pied de la lettre ! Il
s’agit ici de concepts théoriques. La réalité est quelque peu différente. Ainsi, pour le caractère “sans
collision”, dans les faits, cela est “très difficile” dans le meilleur des cas, mais jamais impossible,
comme le bon sens le laisse penser
Un protocole est un ensemble de règles qui régissent la communication entre plusieurs entités. Un
protocole est dit cryptographique s’il utilisent des opérations cryptographiques pour sécuriser les
communications.
La sécurisation des échanges implique au moins trois services : la confidentialité, l’intégrité et
l’authentification. Signalons la distinction entre “services” (confidentialité, intégrité,
authentification, etc.) et “mécanismes” (les moyens utilisés : chiffrement, déchiffrement,
signature, hachage, etc.).
[Link] Confidentialité
[Link] Intégrité
Au niveau des parties communicantes : Chaque entité impliquée dans la communication voudrait
se rassurer qu’il communique bien avec son homologue et qu’il n’y a pas usurpation d’identité.
Au niveau du message :
Par l’utilisation d’un MAC (Message Authentication Code) généré à l’aide d’un cryptosystème à
clé symétrique où le MAC est constitué des derniers digits de C, ou généré à l’aide d’une fonction
de hachage, la clé secrète K utilisée étant partagée par les deux entités A et B.
Dans le cas symétrique, si le MAC du message en clair reçu (M) est égal au MAC reçu, B est
convaincu que le MAC reçu a été fabriqué avec la clé symétrique qu’il partage uniquement avec A.
Dans le cas asymétrique, en cas d’égalité entre le MAC reçu et la MAC fabriqué par B, ce
dernier est convaincu que le MAC reçu a été fabriqué avec la clé avec la clé privée de A.
Par l’utilisation d’une signature digitale. Parmi les propriétés remarquables de ces signatures, on
peut dire qu’elles doivent être authentiques, infalsifiables, non-réutilisables, non-répudiables, et
inaltérables. Ici, on fait abstraction de la confidentialité. C’est l’authentification qui importe.
[Link] Synthèse
La signature électronique permet de signer en quelques secondes et sans contact physique des
documents essentiels au bon fonctionnement des entreprises, tels que :
• les contrats de travail
• les factures
• les bons de commande
• les mandats et les compromis de vente
• les devis
• les documents comptables
• les documents juridiques
• les actes notariés
Selon le code civil, seule cette signature est l’équivalent de la signature manuscrite. Plus lourde
à mettre en œuvre et plus onéreuse, la signature qualifiée est généralement réservée aux
documents pour lesquels l'authentification est fondamentale, par exemple, dans le cas de
production d'actes notariés (notaires, huissiers…) ou dans le contexte des marchés publics (de
l'appel d'offre à la facture). Elle nécessite l’acquisition d’un certificat de signature électronique et un
dispositif de création de signature électronique.
Clair A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Chiffré D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Si on connait l’algorithme utilisé (ici César), la cryptanalyse par force brute est très facile. En
effet, dans le cas du chiffre de César, seules 25 clés sont possibles. L’intrus va appliquer
successivement les différentes clés possibles au message jusqu’à obtenir un message
compréhensible.
Pour le Français, l’Allemand, l’Anglais et l’Espagnol, la lettre la plus fréquente est « e ». L’intrus
exploite ces statistiques en considérant que la lettre de plus grande fréquence dans le texte chiffré
corresponds à « e ». dans le texte en clair.
Cependant, il existe également des cas où cette analyse ne fonctionne pas, comme pour « De
Zanzibar à la Zambie et au Zaïre, des zones d’ozone font courir les zèbres en zigzags zinzins »..
Pour éviter ce type d’attaque sur un texte chiffré, il existe différents moyens. On peut par exemple
chiffrer le message par digrammes, trigrammes, etc. Cependant l’intrus peut exploiter les
statistiques sur les bigrammes et trigrammes.
Pour échapper à l'analyse de fréquences, une solution consiste à remplacer une lettre non pas par un
symbole unique, mais par un symbole choisi au hasard parmi plusieurs. Dans sa version la plus
sophistiquée, on choisira un nombre des symboles proportionnel à la fréquence d'apparition de la
lettre; on parle alors de renversement des fréquences. Ce type de substitution est appelé
substitution homophonique (on dit aussi substitution à représentations multiples). On peut
situer l'âge d'or de la substitution homophonique entre 1500 et 1750.
On peut remarquer que si a = 1, alors on retrouve le chiffre de César où b est le décalage (le k du
chiffre de César). Si a = 1 et b = 0, aucun décalage n’a lieu, l’alphabet de départ se retrouve chiffré
par lui même, et donc ne subit aucune modification.
La fonction de déchiffrement de c(x) = (ax + b) mod 26 est c-1(y) = a−1 ∗ (y − b) mod 26, (y − b) mod 26, où a−1
désigne l’inverse de a modulo 26, c’est à dire que a*a−1 mod 26 = 1..
Exemple :
Soient la clé (a , b) = (3, 11).
Transformation de chiffrement est : c(x) = (3x + 11) mod 26
a−1 = 3−1 mod 26 = 9 car 3 ∗ 9 mod 26 = 27 mod 26 1=1. 9 mod 26 = 27 mod 26 1=1.
Transformation de déchiffrement est :c-1(y) = 9 (y − 11) mod 26,
Étape 1 : Etablir la fréquence relative de chaque lettre du texte chiffré, par analyse de fréquence.
Supposons que le texte chiffré est ; « HGAHY RAEFT GAGRH DGAGM OEHIY RAAOT
ZGAGJ GKFDG AZGSB INNTG KGRHE NNIRG ». On dénombre 12 fois la lettre G et 8 fois la
lettre A. Supposons que le langage original du texte est le français.
En appliquant cette fonction au message chiffré, on obtient le message initial (message en clair) :
« TESTONSAPRESENTLESEQUATIONSSURDESEXEMPLESDECHIFFREMENTAFFINE »
Clair A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1er
alphabet 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 01 02 03 04 05 06 07 08 09 10 11
chiffrant
2ème
alphabet 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 27 28
chiffrant
3ème
alphabet 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
chiffrant
4ème
alphabet 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 00
chiffrant
Méthode de chiffrement
On chiffre le texte par groupes de deux lettres (des bigrammes) en appliquant les règles suivantes:
1. Si les deux lettres sont sur les coins d'un rectangle, alors les lettres chiffrées sont sur les deux
autres coins. Exemple OK devient VA, BI devient DC, GO devient YV. La première des
deux lettres chiffrées est sur la même ligne que la première lettre claire.
2. Si deux lettres sont sur la même ligne, on prend les deux lettres qui les suivent
immédiatement à leur droite: FJ sera remplacé par US, VE par EC. La notion de
successeur est cyclique comme dans une anneau (ou un tore).
3. Si deux lettres sont sur la même colonne, on prend les deux lettres qui les suivent
immédiatement en dessous: BJ sera remplacé par JL, RM par ID.
4. Si le bigramme est composé de deux fois la même lettre, on insère une lettre représentant nul
(usuellement le X) entre les deux pour éliminer ce doublon.
Pour déchiffrer, on applique les règles ci-dessus à l'envers. Pour former les grilles de chiffrement,
on utilise un mot-clef secret pour créer un alphabet désordonné avec lequel on remplissait la grille
ligne par ligne.
Ce qui signifie, pour fixer les idées, que les deux premières lettres du message clair (P 1 et P2) seront
chiffrées (C1 et C2) selon les deux équations suivantes:
Exemple de chiffrement
Alice prend comme clef de cryptage la matrice pour chiffrer le message "je vous aime" .
Après avoir remplacé les lettres par leur rang dans l'alphabet (a=1, b=2, etc.), elle obtiendra:
Elle fera de même avec les 3e et 4e lettres, 5e et 6e, etc. Elle obtiendra finalement:
Lettres j e v o u s a i m e
Rangs (Pk) 10 5 22 15 21 19 1 9 13 5
Rangs chiffrés (Ck) 6 7 24 7 5 4 19 16 7 22
Lettres chiffrées F G X G E D S P G V
Remarque
Certains auteurs posent "A"=1, "B"=2, ..., "Z"=0. On a utilisé ici cette convention. Cependant,
d'autres auteurs posent "A"=0, "B"=1, ..., "Z"=25. Les deux conventions se défendent. L'essentiel
est que les protagonistes se mettent d'accord avant d'échanger des messages. On pourrait même
imaginer de prendre un alphabet désordonné, par exemple "A"=15, "B"=6, etc., ce qui constituerait
un surchiffrement.
Déchiffrement
Pour déchiffrer, le principe est le même que pour le chiffrement: on prend les lettres deux par deux,
puis on les multiplie par une matrice.
Cette matrice doit être l'inverse de matrice de chiffrement (modulo 26). Ordinairement l'inverse
de la matrice est:
Mais que cela signifie-t-il dans le contexte Z26? Reprenons notre exemple.
Exemple de déchiffrement
Pour déchiffrer le message d'Alice, Bob doit calculer
Comme pgdc(43,26)=1, (43)-1 existe dans Z26 et (43)-1 égale 23 . Bob a donc maintenant la matrice
de déchiffrement:
Bob prend donc la matrice pour déchiffrer le message "FGXGE DSPGV". Après avoir
remplacé les lettres par leur rang dans l'alphabet (A=1, B=2, etc.), il obtiendra:
Lettres chiffrées F G X G E D S P G V
Rangs chiffrés (Ck) 6 7 24 7 5 4 19 16 7 22
Rangs (Pk) 10 5 22 15 21 19 1 9 13 5
Lettres j e v o u s a i m e
C H I F F R E D E V I G E N E R E
Clef B A C H E L I E R B A C H E L I E
Décalage 1 0 2 7 4 11 8 4 17 1 0 2 7 4 11 8 4
Chiffré D H K M J C M H V W I I L R P Z I
La grande force du chiffre de Vigenère est que la même lettre sera chiffrée de différentes manières.
Par exemple le E du texte clair ci-dessus a été chiffré successivement M V L P I, ce qui rend
inutilisable l'analyse des fréquences classique. Comparons les fréquences des lettres d'une fable
de la Fontaine (Le chat, la belette et le petit lapin) chiffrée avec une substitution simple et celles de
la même fable chiffrée avec le chiffre de Vigenère:
Substitution simple Chiffre de Vigenère
On voit bien que l'histogramme n'a plus rien à voir avec celui d'une substitution simple: il est
beaucoup plus "plat". Ce chiffre, qui a résisté trois siècles aux cryptanalystes, est pourtant
relativement facile à casser, grâce à une méthode mise au point indépendamment par Babagge et
Kasiski. Une autre méthode complètement différente a été encore mise au point plus tard par le
commandant Bazeries.
Si la clef est aussi longue que le texte clair, et moyennant quelques précautions d'utilisation, le
système est appelé masque jetable.
Exemple
Soit le cryptogramme
BILKO PFFGM LTWOE WJCFD SHKWO NKSEO VUSGR LWHGW FNVKW GGGFN
RFHYJ VSGRF RIEKD CCGBH RYSXV KDIJA HCFFG YEFSG ZWG
qui est supposé renfermer le mot ATTAQUE.
En soustrayant ATTAQUE à la séquence débutant à la première position du cryptogramme, on
obtient:
Chiffré B I L K O P F
Clair A T T A Q U E
Décalage -0 -19 -19 -0 -16 -20 -4
Clef B P S K Y V B
Chiffré I L K O P F F
Clair A T T A Q U E
Décalage -0 -19 -19 -0 -16 -20 -4
Clef I S R O Z L B
ce qui ne semble pas meilleur. On continue ainsi jusqu'à la position 25 où l'on voit apparaître:
Chiffré O N K S E O V
Clair A T T A Q U E
Décalage -0 -19 -19 -0 -16 -20 -4
Clef O U R S O U R
Le mot OURS est apparu. C'est le mot-clef que l'on cherchait. En utilisant cette clef, le
déchiffrement donne:
NOUS AVONS SUBI UNE VIOLENTE ATTAQUE CE MATIN. PERTES
IMPORTANTES. DEMANDONS PILONNAGE DES POSITIONS ENNEMIES.
Cette technique consiste à chercher des séquences de lettres qui apparaissent plus d’une fois dans le
texte. En effet, dans ce cas, il n’y aura que deux possibilités :
● soit la même séquence de lettres du texte clair a été chiffrée avec la même partie de la clef,
● soit deux suites de lettres différentes dans le texte clair auraient par pure coïncidence
engendré la même suite dans le texte chiffré (probabilité faible).
Le 1er cas étant le plus probable, il en déduit le nombre de facteurs de la clef puis par une méthode
de fréquence de distribution des lettres cryptées il en déduit les lettres du texte clair.
En prenant par exemple la clef KILO, la lettre E peut être chiffrée en O, M, P ou S selon que K, I, L
ou O sont utilisés pour la chiffrer. Ainsi le mot thé peut être chiffré en DPP, BSS, EVO ou HRM.
Exemple :
K I L OK I L OK I L OK I L O K I L O K I L O K
t h e r u s s e t h e j a s m i n t h e c h i n e
D P P F E AD S D P P XKAXWXB S S M P T B O
Dans cet exemple THE est chiffré en DPP la première et la deuxième fois, et en BSS la troisième.
C'est pourtant la faiblesse du chiffre de Vigenère: ces répétitions apparaissent parce que dans
l'original, les mêmes séquences de lettres sont chiffrées avec la même partie de la clef.
[Link] Cryptanalyse de Friedman
Le test de Friedman (aussi appelé test kappa) s'appuie sur la métrique appelée Indice de
Coïncidence (IC). Il a pour premier objectif de déterminer si un texte a été chiffré avec un chiffre
monoalphabétique ou polyalphabétique. Comme second bénéfice, il suggère la longueur du
mot-clef si le chiffre est polyalphabétique. L’Indice de Coïncidence (IC) est défini comme la
probabilité que deux lettres choisies aléatoirement dans un texte soient identiques. Elle permet de
déterminer la langue et la taille de la clef.
Voici quelques indices calculés sur des textes contemporains dans différentes langues.
Soit le message suivant, chiffré avec Vigenère (369 lettres):
PERTQ UDCDJ XESCW MPNLV MIQDI ZTQFV XAKLR PICCP QSHZY DNCPW EAJWS
ZGCLM QNRDE OHCGE ZTQZY HELEW AUQFR OICWH QMYRR UFGBY QSEPV NEQCS
EEQWE EAGDS ZDCWE OHYDW QERLM FTCCQ UNCPP QSKPY FEQOI OHGPR EERWI
EFSDM XSYGE UELEH USNLV GPMFV EIVXS USJPW HIEYS NLCDW MCRTZ MICYX
MNMFZ QASLZ QCJPY DSTTK ZEPZR ECMYW OICYG UESIU GIRCE UTYTI ZTJPW
HIEYI ETYYH USOFI XESCW HOGDM ZSNLV QSQPY JSCAV QSQLM QNRLP QSRLM
XLCCG AMKPG QLYLY DAGEH GERCI RAGEI ZNMGI YBPP
On remarque que quand l'intervalle est de 5, l'IC correspond plus ou moins avec l'IC
caractéristique du français (en tout cas, c'est cette ligne qui s'approche le plus de 0.074, les autres
lignes étant plutôt proches de 0.038). La longueur de la clef utilisée est donc probablement 5.
Pour découvrir la clef elle-même, on peut ensuite procéder comme le faisait Kasiski (ceci est laissé
en exercice.
L'indice de Coïncidence (IC) : Un peu de théorie
L'indice de Coïncidence (IC) est la probabilité que deux lettres choisies aléatoirement dans un
texte soient identiques. Il fut inventé par William Friedman et publié en 1920, dans l'article "The
Index of Coincidence and its Applications in Cryptography", Riverbank Publications Number 22.
Pour calculer cet indice, soient:
n = nombre de lettres du texte
n1 = nombre de A dans le texte
n2 = nombre de B dans le texte
n3 = nombre de C dans le texte
...
n26 = nombre de Z dans le texte
La probabilité de tirer deux "A" parmi les n lettres d'un texte (clair ou crypté) est:
Pour calculer la probabilité de tirer deux lettres identiques, il faut faire la somme des 26 possibilités:
Remarques importantes
1. Pour un langage de 26 lettres où chaque lettre a la même fréquence (1/26), IC = 0.038
(vérifiez ce résultat avec la formule ci-dessus).
2. Pour tout chiffre monoalphabétique, la distribution des fréquences est invariante, donc l'IC
sera le même que pour le texte clair. Idem pour les chiffres de transposition.
3. Donc, si on calcule l'IC d'un texte chiffré avec un chiffre monoalphabétique, on devrait
trouver un IC "proche" de 0.074 (en français). Si l'IC est beaucoup plus petit (p. ex. 0.050),
le chiffre est probablement polyalphabétique.
3.4.2 Chiffre de Beaufort
Le chiffre de l'amiral anglais Sir Francis Beaufort (1774-1857) fut publié après sa mort par son
frère. Il semblerait que ce chiffre ait en fait été inventé par Jean Sestri vers 1710.
Le chiffre de Beaufort est une variante du chiffre de Vigenère. Il utilise le carré de Vigenère d'une
autre manière. Au lieu d'additionner la clef au message clair, Beaufort soustrait le message clair de
la clef. Une propriété intéressante de ce chiffre est qu'il est réversible: si on chiffre deux fois de
suite un message, on retrouve le message original.
Exemple
Chiffrons le texte "CHIFFRE DE BEAUFORT" avec la clef "BACHELIER" (les couleurs
correspondent ici à celles utilisées dans le carré de Vigenère).
Clef B A C H E L I E R B A C H E L I E
Clair C H I F F R E D E B E A U F O R T
Décalage -2 -7 -8 -5 -5 -17 -4 -3 -4 -1 -4 0 -20 -5 -14 -17 -19
Chiffré Z T U C Z U E B N A W C N Z X R L
3.5 Transpositions
Un chiffre de transposition consiste à changer l'ordre des lettres, donc à construire des anagrammes.
Cette méthode est connue depuis l'Antiquité. Une analyse statistique sur les chiffrements par
transposition n'est pas utile, puisque seul l'ordre des symboles est différent; les symboles restent les
mêmes. Donc, les symboles les plus fréquents dans le message clair resteront évidemment les plus
fréquents dans le message chiffré.
Pour de très brefs messages, comme un simple mot, cette méthode est peu sûre car il n'y a guère de
variantes pour redistribuer une poignée de lettres. Par exemple un mot de trois lettres ne peut être
tourné quand dans 6 (=3!) positions différentes. Ainsi "col" ne peut se transformer qu'en "col",
"clo", "ocl", "olc", "lco" ou "loc". Bien entendu, lorsque le nombre de lettres croît, le nombre
d'arrangements augmente rapidement et il devient quasiment impossible de retrouver le texte
original sans connaître le procédé de brouillage.
Chiffrement
Chiffrons le message "LE LOUP EST DANS LA BERGERIE". Nous avons prévenu au préalable
notre destinataire que nous allions utiliser le mot-clef ENIGME, qui correspond au chiffre-clef
164352 (on numérote les lettres du mot-clef selon l'ordre alphabétique). Note: dans l'exemple ci-
dessous, les deux nuances de vert sont simplement là pour aider à comprendre le mécanisme de
chiffrement.
La première opération consiste à réécrire les colonnes horizontalement, en suivant leur
numérotation (on recopie la colonne 1, puis la 2, etc.). On peut ensuite ajouter n nulles (3 dans
l'exemple ci-dessous: J, V et Q), puis on répète la première opération une seconde fois.
E N I G M E E N I G M E E N I G M E
E N I G M E
1 6 4 3 5 2 1 6 4 3 5 2 1 6 4 3 5 2
1 6 4 3 5 2
L E L O U P L E S G P N L R T E V N
L E S G P N
E S T D A N R O D B I L L E J G B U
R O D B I L
S L A B E R T A R U A E L S D R S P
T A R U A E
G E R I E E E S L E J I A E E O A
E E S L E
V Q E Q
Le message chiffré est donc: LRTEV NLEJG BULSD RSPIA EEOAE Q.
Déchiffrement
Pour déchiffrer, on réécrit au préalable le message ligne par ligne dans une grille qui a autant de
colonnes qu'il y a de lettres dans le mot-clef. La première opération consiste à lire les lignes du
message de haut en bas et recopier les lettres colonne par colonne, en suivant leur
numérotation, et en ne remplissant que les cases vertes (on remplit d'abord la colonne 1, puis la
2, etc.). On supprime dans un deuxième temps les nulles (les n dernières lettres du tableau), puis on
répète la première opération une seconde fois pour retrouver le message clair.
E N I G M E
E N I G M E
1 6 4 3 5 2 E N I G M E E N I G M E
1 6 4 3 5 2
L R T E V N 1 6 4 3 5 2 1 6 4 3 5 2
L E S G P N
L E J G B U L E S G P N L E L O U P
R O D B I L
L S D R S P R O D B I L E S T D A N
T A R U A E
I A E E O A T A R U A E S L A B E R
E E S L E J
E Q E E S L E G E R I E
V Q
Un cas particulier d'algorithmes de chiffrement par blocs avec itération est la famille des chiffres de
Feistel. Dans ce système de chiffrement, un bloc de texte en clair 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 ou exclusif. Les deux moitiés sont alors inversées pour l'application de la ronde suivante.
Un avantage de ce type d'algorithmes est que chiffrement et déchiffrement sont
structurellement identiques.
À titre d'exemple, nous allons chiffrer par un réseau de Feistel à deux rondes un message constitué
de quatre bits (24 = 16 possibilités de messages), ce qui revient à construire une bijection de quatre
bits vers quatre bits à partir de deux fonctions f1 et f2 de deux bits vers deux bits.
Nous considérerons que pour une certaine clef entrée, ces fonctions sont les suivantes:
Chapitre 4 : Cryptographie moderne
Rappel de Logique :
1. OU Inclusif : Aussi appelé disjonction inclusive :A + B est vrai si l’un des deux argument
est vrai et faux dans tous les autres cas.
2. OU Exclusif : Aussi appelé XOR (eXclusive OR) ou disjonction exclusive :A ⊕ B est vrai
si l’un des deux argument est vrai et faux dans tous les autres cas.
3. ET Logique :AB est vrai si l’un les deux arguments sont est vrais et faux dans tous les
autres cas.
4. Négation Logique : La valeur de la négation de A est l’opposé de A.
Notons que ni f1 ni f2 ne sont des bijections. À titre d'exemple, chiffrons le message 1101. G
désigne la moitié gauche du message à chiffrer, D la moitié droite. Le schéma du réseau de
Feistel (à deux rondes) obtenu à partir de f1 et f2 est donné à droite en y illustrant le
chiffrement de 1101. Les chiffrements obtenus des 16 messages possibles sont dans le tableau
(à gauche)..
Message en Chiffrement
clair du message
0000 0100
0001 1100
0010 1010
0011 0111
0100 0011
0101 1001
0110 1111
0111 0000
1000 1101
1001 0101
1010 0001
1011 1110
1100 1000
1101 0010
1110 0110
1111 1011
Théorème de Sécurité des Réseaux Feistel (Luby-Rackoff, 1985): Si une fonction aléatoire sûre
est utilisée pour trois tours de Feistel avec trois clés indépendantes, on obtient alors une fonction
pseudo aléatoire avec des permutations pseudo aléatoire .
Présentation de DES :
Histoire du DES :
1. 1970: Chiffrement par bloc « Lucifer » développé par IBM : k=128 et m=128
2. 1973: DES (Data Encryption Standard) Adopté comme standard US par le Bureau National
des Standards Américains NBS (FIPS 46-2) pour le chiffrement par blocs
3. 1975: DES a été choisi comme norme au Etats-Unis est devenu le système cryptographique
le plus utilisé dans le monde.
4. 1976: Le DES, un variant de Lucifer, est adopté comme ce standard : Taille de bloc = 64
bits, k = 56 bits, m = 64
5. 1997: Le DES commence à être critiqué à cause de la taille trop faible de sa taille de clés k =
56
6. 1997: DES cassé par la recherche exhaustive (AES en 2000.)
7. 1998 : Le défi « DES Challenge » a été lancé pour casser DES: la machine “Deep Crack”
(spécialement conçu pour attaquer DES) a réussi en quelques jours à retrouver la clé par une
attaque exhaustive.
Suite supercroissante
Une suite supercroissante est une suite croissante de n nombres tels que pour j compris
entre 2 et n. Cela signifie que le jème terme doit être plus grand que la somme des j-1 termes qui le
précèdent dans la suite.
Le problème du sac à dos est homogène : on ne change pas les solutions en multipliant
(ou en divisant) tous les poids Pi et le but T par un même entier p.
Les multiplications peuvent être effectuées modulo un entier m. Alors, même si la suite de poids
initiale est supercroissante, la nouvelle suite ainsi obtenue ne le sera en général pas. En pratique, on
choisit m supérieur à la somme des poids initiaux.
Exemple. On part de la suite supercroissante 1, 3, 6. Tous les calculs sont faits modulo 12. En
multipliant tous les poids par 7 on obtient la suite non supercroissante 7, 9, 6. Grâce à la propriété
d'homogénéité, on voit que la même solution (b 1, b2, b3) permet de réaliser le but T avec les poids
1, 3, 6 et le but Tx7 avec les poids 7, 9, 6. Le tableau ci-dessous donne la correspondance entre les
buts et les solutions:
T Tx7 b1, b2, b3
0 0 0, 0, 0
1 7 1, 0, 0
3 9 0, 1, 0
4 4 1, 1, 0
6 6 0, 0, 1
7 1 1, 0, 1
9 3 0, 1, 1
10 10 1, 1, 1
Pour chiffrer un bloc de k bits, on calcule simplement le poids T résultant du sac. Pour garantir que
le déchiffrement avec la même clef est impossible, on chiffre avec la suite non supercroissante.
Pour déchiffrer, on doit déterminer les poids dont la somme réalise le but T. L'idée consiste à revenir
à la suite supercroissante initiale, sans changer la solution. Il suffit pour cela de diviser tous les
poids et le but T par p. La suite non supercroissante constitue la clef publique. La suite
supercroissante initiale, avec p et m, forment la clef privée.
Premier exemple de chiffrement/déchiffrement
La clef privée de Bob est [1, 3, 6], avec p = 7 et m = 12.
Avec la clef publique [7, 9, 6] fournie par Bob, Alice chiffre ainsi la chaîne 101: T = 7x1 + 9x0 +
6x1 = 13. Elle envoie donc le message "13" à Bob.
Pour déchiffrer le message, Bob utilise sa clef privée (notez que 7 est son propre inverse modulo
12), et il applique l'algorithme glouton. Il obtient:
13x7-1 (mod 12) = 91 (mod 12) = 7 (mod 12) = 1x1 + 3x0 + 6x1. Le message clair est donc
101.
Plus généralement, pour que p soit inversible modulo m, il suffit de le choisir premier avec m.
Il est important de noter qu'un texte chiffré avec la clef privée ne pourra pas être déchiffré avec la
clef publique, puisqu'elle n'est pas supercroissante: les deux clefs du chiffre de Merkle-Hellman ne
peuvent pas être permutées.
Deuxième exemple de chiffrement/déchifrement
En utilisant 5 bits, on peut coder 25 = 32 caractères. Supposons que l'on utilise la table des 30
caractères suivants (ce tableau vous rappelle peut-être l'alphabet bilitère de Bacon):
a 00000 g 00110 m 01100 s 10010 y 11000
b 00001 h 00111 n 01101 t 10011 z 11001
c 00010 i 01000 o 01110 u 10100 , 11010
d 00011 j 01001 p 01111 v 10101 . 11011
e 00100 k 01010 q 10000 w 10110 ? 11100
f 00101 l 01011 r 10001 x 10111 11101
La clef privée de Bob est [3, 4, 9, 19, 38, 77], avec p = 27 et m = 155. Il peut maintenant calculer la
clef publique avec laquelle Alice chiffrera son message: [3x27 (mod 155), 4x27 (mod 155), 9x27
(mod 155), 19x27 (mod 155), 38x27 (mod 155), 77x27 (mod 155)], ce qui donne [81, 108, 88, 48,
96, 64].
Alice veut transmettre le mot "baby" à Bob. Elle devra donc, en se référant à la table ci-dessus,
chiffrer la chaîne 00001 00000 00001 11000. Comme la clef publique de Bob comporte 6 nombres,
elle devra ensuite regrouper ces bits par paquets de 6, et au besoin ajouter des bits aléatoires pour
obtenir un nombre de bits multiple le 6: 000010 000000 001110 001101
Le premier bloc de 6 bits sera chiffré : 81x0 + 108x0 + 88x0 + 48x0 + 96x1 + 64x0 = 96.
Le deuxième bloc de 6 bits sera chiffré : 81x0 + 108x0 + 88x0 + 48x0 + 96x0 + 64x0 = 0.
Le troisième bloc de 6 bits sera chiffré : 81x0 + 108x0 + 88x1 + 48x1 + 96x1 + 64x0 = 232.
Le quatrième bloc de 6 bits sera chiffré : 81x0 + 108x0 + 88x1 + 48x1 + 96x0 + 64x1 = 200.
Le message chiffré est donc: [96, 0, 232, 200]
Pour déchiffrer, Bob calcule d'abord l'inverse modulo 155 de 27, qui vaut 23. Il utilise ensuite sa
clef privée et applique l'algorithme glouton. Il obtient alors:
Le message déchiffré est donc [000010, 000000, 001110, 001101], ce qui est bien le message
qu'avait envoyé Alice. Pour retrouver le mot, Bob n'a plus qu'à regrouper les bits par paquets de 5 et
consulter le tableau de conversion.
Il est important que le nombre de bits par paquet soit différent de la longueur de la clef. En
effet, si ce n'était pas le cas, on pourrait attaquer le texte chiffré par une analyse des
fréquences, car chaque lettre serait chiffrée par le même nombre.
Il est clair que plus la clef est longue, plus le message sera difficile à décrypter. Dans la pratique, on
utilise au moins 250 nombres dans la clef et le module m est choisi pour avoir une longueur
comprise entre 100 et 200 bits.
Algorithme glouton
Pour i = n à 1 faire
Si T Pi alors
T = T - Pi
bi = 1
sinon
bi = 0
Si T = 0 alors {b1, ..., bn} est solution sinon il n'y a pas de solution.
Il est basé sur le calcul exponentiel. Sa sécurité repose sur la fonction unidirectionnelle suivante : le
calcul du produit de 2 nombres premiers est aisé. La factorisation d’un nombre en ses deux facteurs
premiers est beaucoup plus complexe.
Il s’agit du système le plus connu et le plus largement répandu, basé sur l’élévation à une puissance
dans un champ fini sur des nombres entiers modulo un nombre premier. Le nombre
d’exponentiation prend environ O((log n)3) opérations ce qui est rapide et facile. Il emploie de
grands nombres entiers (par exemple représentés sur 1024 bits).
On appellera Bob la personne qui désire recevoir un message chiffré, et Alice la personne qui
envoie le message.
Choix de la clef
Bob choisit deux grands entiers naturels premiers p et q (d'environ 100 chiffres chacun ou plus) et
fait leur produit n = p·q. Puis il choisit un entier e premier avec (p-1)·(q-1). Enfin, il publie dans un
annuaire, par exemple sur le web, sa clef publique: (RSA, n, e).
Chiffrement
Alice veut donc envoyer un message à Bob. Elle cherche dans l'annuaire la clef de chiffrement qu'il
a publiée. Elle sait maintenant qu'elle doit utiliser le système RSA avec les deux entiers n et e
(prenons par exemple n=5141=53*97 et e=7, premier avec 52*96=4992). Elle transforme en
nombres son message en remplaçant par exemple chaque lettre par son rang dans l'alphabet.
"JEVOUSAIME" devient : "10 05 22 15 21 19 01 09 13 05".
Puis elle découpe son message chiffré en blocs de même longueur représentant chacun un nombre
plus petit que n. Cette opération est essentielle, car si on ne faisait pas des blocs assez longs (par
exemple si on laissait des blocs de 2 dans notre exemple), on retomberait sur un simple chiffre
de substitution que l'on pourrait attaquer par l'analyse des fréquences.
Son message devient : "010 052 215 211 901 091 305"
Un bloc B est chiffré par la formule C = Be mod n, où C est un bloc du message chiffré qu'Alice
enverra à Bob. Après avoir chiffré chaque bloc, le message chiffré s'écrit :
"0755 1324 2823 3550 3763 2237 2052".
Déchiffrement
Bob calcule à partir de p et q, qu'il a gardés secrets, la clef d de déchiffrage (c'est sa clef privée).
Celle-ci doit satisfaire l'équation e·d mod ((p-1)(q-1)) = 1. Ici, d=4279.
Chacun des blocs C du message chiffré sera déchiffré par la formule B = Cd mod n.
Il retrouve : "010 052 215 211 901 091 305"
Sécurité de la méthode
Tout l'intérêt du système RSA repose sur le fait qu'à l'heure actuelle il est pratiquement impossible
de retrouver dans un temps raisonnable p et q à partir de n si celui-ci est très grand (ou alors, si c'est
possible, les cryptanalystes qui ont trouvé la méthode la gardent secrète). Bob est donc le seulà
pouvoir calculer d dans un temps court. De plus, il n'a jamais à transmettre les entiers p et q, ce qui
empêche leur piratage.
Le nombre a est pris tel que a ∈ {0,1} (0...p − 1) et ∀ k ∈ (1...p − 2) : k ∈ {0,1} (1...p − 2) :
ak <> 1 mod p
Soit un message M , avec M < p. On détermine un nombre aléatoire k qui n’est connu que de celui
qui chiffre et différent à chaque message. On calcule alors
C1 = ak mod p
C2 = [Link] mod p
On obtient alors le message chiffré C = (C1 , C2). Le message chiffré est alors deux fois plus long
que le message original
Principe du déchiffrement
A la réception, on calcule
R1 = (C1)s mod p
= ask mod p
= Pk mod p
Le destinataire possède la clé privée (s). Ayant Pk , on divise C2 par cette valeur :
DK(C) = C2 /(R1)
= ([Link] mod p)/(Pk mod p)
=M
k
P est donc considéré comme un masque appliqué sous forme multiplicative à M. Pour décrypter le
message, il faudra soit trouver directement un masque jetable, soit trouver la clé privée s, solution
de P = as mod p (et donc trouver le logarithme discret).
Efficacité et sécurité
El Gamal est 2 fois plus lent que le RSA. L’inconvénient majeur reste la taille des données
chiffrées qui représente 2 fois celle des données en clair.
La recherche de la clé privée (s) à partir de la clé publique est équivalente au problème du
logarithme discret (NP). MAIS il n’est pas prouvé que la cryptanalyse d’un message chiffré avec El
Gamal est équivalente au logarithme discret. En d’autres termes, si le problème du logarithme est
résolu polynomialement, alors El Gamal sera cassé. Cependant, rien ne prouve qu’il n’est pas
cassable par un autre moyen.
Soit n le produit de deux nombres premiers distincts p et q tels que p et q soient congrus à 3
modulo 4 (nous verrons plus loin le pourquoi de cette condition). Soit le nombre B compris entre 0
et n-1. Le nombre chiffré y (compris entre 0 et n-1) s'obtient à partir du nombre clair x (compris
entre 0 et n-1) par la formule:
On notera que les opérations arithmétiques sont effectuées dans Zn, et que la division par 2 ou 4 est
en fait la multiplication par 2-1 et 4-1 modulo n, respectivement.
Cette fonction de chiffrement n'est pas injective. Il existe en effet quatre nombres clairs qui peuvent
se chiffrer en le même nombre chiffré. Le destinataire du message n'a aucun moyen pour distinguer
le bon nombre parmi les quatre qu'il trouvera. On verra dans un exemple complet comment
remédier à ce problème.
Exemple
Supposons que p = 7, q = 11 (clefs privées), n = pq = 77 et B = 9 (clefs publiques).
La formule de chiffrement est:
(en effet, d'après l'algorithme d'Euclide étendu, 4-1 mod 77 = 58 et 92·58 mod 77 = 1. De même, 2-1
mod 77 = 39 et 9·39 mod 77 = 43).
On va donc calculer:
23(1/2) mod 7 = 23(7+1)/4 mod 7 = 232 mod 7 = (23 mod 7)2 mod 7 =22 mod 7 = 4
23(1/2) mod 11 = 23(11+1)/4 mod 11 = 233 mod 11 = (23 mod 11)3 mod 11 =13 mod 11 = 1
Il ne reste qu'à résoudre le système d'équations ci-dessous avec le théorème des restes chinois:
x mod 7 = 4
(*)
x mod 11 = 1
On calcule successivement:
M = 77, M1 = 11, M2 = 7,
y1 = 11-1 mod 7 = 2 et y2 = 7-1 mod 11 = 8 (valeurs trouvées avec l'algorithme d'Euclide
étendu)
donc x = 4·11·2 + 1·7·8 = 144 mod 77 = 67
67 est donc la première des 4 racines carrées de 23 modulo 77. Les trois autres racines carrées se
trouvent en résolvant le système (*) avec respectivement a1 = -4 et a2 = 1, a1 = 4 et a2 = -1, et enfin
a1 = -4 et a2 = -1. Vous pourrez vérifier en exercice qu'elles valent respectivement 45, 32 et 10.
Un exemple complet
Pour voir comment le chiffre de Rabin fonctionne, nous allons utiliser l'alphabet ordinaire + le
symbole "*" que nous chiffrerons ainsi:
Alphabet A B C D E F G H I J K L M N O P Q R S T U V W X Y Z *
Codes 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Rappelons que 4 textes clairs correspondront au texte chiffré que recevra le destinataire. Afin qu'il
puisse facilement retrouver le bon, le symbole * débutera chaque bloc de texte.
Nous utiliserons des blocs de quatre caractères et pour simplifier, nous avons choisi B = 0. Avec ces
choix, le plus grand nombre possible est *ZZZ=26252525. Nous devons choisir n plus grand que
cela, et, de plus, n doit être le produit de deux nombres premiers congrus à 3 modulo 4. Soient p =
6911 et q = 6947 (on peut vérifier que p et q sont deux nombres premiers de la forme 4 k + 3). Ces
deux valeurs sont la clef privée et ne doivent pas être rendues publiques. On calcule ensuite que n =
6911·6947=48010717.
Les valeurs n = 48010717 et B = 0 constitue la clef publique que l'envoyeur utilisera pour chiffrer
son message.
Chiffrement
La fonction de chiffrement est:
Alice désire envoyer un message secret à Bob. Ce dernier lui a fait connaître ses clefs publiques et
elle va les utiliser pour chiffrer le texte suivant:
JE T'AIME
Elle le décompose d'abord en blocs de trois caractères chacun,
JET AIM EKK
puis elle marque chacun des blocs en ajoutant le symbole * au début de chaque bloc:
*JET *AIM *EKK
puis les caractères sont convertis en leurs équivalents numériques (les zéros sont importants):
26090419 26000812 26041010
Elle chiffre d'abord le premier bloc: C1 = 260904192 mod 48010717 = 46850914
Le deuxième bloc est chiffré comme suit: C2 = 260008122 mod 48010717 = 5842871
Et le troisième ainsi: C3 = 260410102 mod 48010717 = 12031786
Le message chiffré transmis par Alice est la suite de nombres:
46850914 5842871 12031786
Déchiffrement
La formule de déchiffrement est:
Bob, qui n'a communiqué à personne sa clef privée, à savoir les deux nombres p = 6911 et q =
6947, sera le seul à pouvoir déchiffrer le message (bien sûr, dans notre exemple, n = 48010717 est
facilement factorisable en n=6911·6947; en réalité, nous utiliserions des tailles de blocs beaucoup
plus grandes et des nombres premiers beaucoup plus grands).
Pour déchiffrer le premier bloc, Bob doit résoudre la congruence
P1 = 46850914(1/2) (mod 48010717)
D'après le théorème des restes chinois, résoudre l'équation ci-dessus revient à résoudre le système
d'équations:
x = 46850914(1/2) (mod 6911)
(*)
x = 46850914(1/2) (mod 6947)
Il va donc calculer tout d'abord les racines carrées (par exemple avec la fonction Mathematica
PowerMod):
46850914(1/2) mod 6911 = 46850914((6911+1)/4) mod 6911 = 1394
46850914(1/2) mod 6947 = 46850914((6947+1)/4) mod 6947 = 2513
•
Il ne lui reste plus qu'à résoudre, avec le théorème des restes chinois:
x mod 6911 = 1394
(*)
x mod 6947 = 2513
La bonne valeur est celle qui commence par 26, donc 26090419. Une fois décodé, ce nombre donne
les lettres *JET.
En procédant de la même façon avec les deux derniers blocs, il retrouvera le message complet.
Les spécialistes en cryptographie font de plus en plus appel à une technique qui s'appuie sur des
courbes elliptiques, proposée indépendamment par Victor Miller et Neal Koblitz en 1985. La théorie
des courbes elliptiques en général est un domaine riche et a donné de nombreux résultats, dont la
preuve du dernier théorème de Fermat par Andrew Wiles. Une courbe elliptique est un objet très
simple mais qui a des propriétés tout à fait surprenantes. Elles ont normalement la forme suivante:
y2+a1xy+a3y=x3+a2x2+a4x+a6
Pour leur usage en cryptographie, a1, a2 et a3 doivent être égaux à 0. Comme les cryptographes ont
l'habitude de renommer a4=a et a6=b, on obtient :
y2=x3+ax+b
dont le discriminant
−(4a3 + 27b2)
est non nul. Pour la dessiner, pour a et b fixés, on calcule y tel que
y = (x3 + ax + b)1/2
Un exemple typique de courbe elliptique est donné sur la figure ci-dessous. Son
équation est y2=x3-5x2+3.
Addition de deux points
Prenons deux points A et B sur cette courbe. En général, la courbe passant par A et B recoupe la
courbe en un troisième point de coordonnées (x, y). Son symétrique (x, -y) est lui aussi sur la
courbe et on le désigne par A+B pour signifier qu'il est construit à l'aide de A et B. La chose
surprenante est que cette opération "+" possède toutes les propriétés de l'addition des
nombres. C'est-à-dire que l'on peut faire tous les calculs de type addition, soustraction et division
avec un reste entier que nous faisons sur la droite des nombres réels sur cet objet tordu que constitue
une courbe elliptique.
Il est possible, comme l'ont démontré Miller et Koblitz, de coder avec cette opération bizarre
au lieu de travailler avec l'addition usuelle. Il en résulte une plus grande complexité des calculs
qui fait dire aux spécialistes que le chiffrement par la méthode des courbes elliptiques avec une clef
de 192 bits assure le même niveau de sécurité qu'une clef de 1024 bits pour la méthode RSA. Il
est donc probable que cette méthode sera de plus en plus utilisée pour transmettre les clefs.
Règles de l'addition
Soit la courbe elliptique cryptographique y2 mod p = (x3 + ax + b) mod p. On reconnaît l'équation
déjà vue ci-dessus, sauf que l'on travaille modulo p. Le nombre p doit être un nombre premier. Lors
des calculs, il arrive parfois que l'on doit faire une division par 0. Quand cela arrive, le point résultat
sera appelé "infini".
1. infini + infini = infini
2. (x1,y1) + infini = (x1,y1)
3. (x1,y1) + (x1,-y1) = infini
4. Si x1 x2, (x1,y1) + (x2,y2) = (x3,y3), avec
x3 = (k2-x1-x2) mod p
y3 = (k(x1-x3)-y1) mod p
où k = (y2-y1) · (x2-x1)-1 mod p
5. Si y1 0, (x1,y1) + (x1,y1) = 2(x1,y1) = (x3,y3), avec
x3 = (k2-2x1) mod p
y3 = (k(x1-x3)-y1) mod p
où k = (3x12+a) · (2y1)-1 mod p
On remarque que pour calculer k, on doit trouver l'inverse d'un nombre modulo p. Pour trouver cet
inverse, on utilise l'algorithme d'Euclide étendu.
Exercice : vérifiez les calculs de 2·P et 3·P! Ces points appartiennent-ils à la courbe elliptique
donnée?
Remarque : Contrairement à ce que l’on peut croire à première vue, il ne s’agit pas de travailler à
partir d’ellipses. La raison en est que les équations utilisées (équations cubiques) sont similaires à
celles permettant de déterminer la circonférence d’une ellipse.
Définition géométrique
Soit une opération (l’addition, +) pour l’ensemble E(a, b) tel que a et b répondent à la condition du
discriminant. Si 3 points sur une EC sont alignés, leur somme vaut O (point à l’infini).
1. O est l’identité pour l’addition : O = −O.
2. Pour n’importe quel point P + O = P .
3. L’opposé d’un point P (x, y) est P (x, −y)
4. Pour additionner 2 points P et Q, on trace la droite les reliant. Cela nous donne un point
d’intersection R. On définit l’addition telle que P + Q = −R. En conséquence, on définit P +
Q comme étant l’opposé de ce point R.
On note Ep (a, b) l’ensemble des couples d’entiers (x, y) qui satisfont cette équation. On parle de
groupe elliptique.
Exemple : Soient p = 23 et la courbe elliptique y2 = x3 + x + 1. On est donc dans E23 (1, 1). Comme
nous travaillons dans Zp , les couples (x, y) répondant à l’équation sont donnés dans le suivant :
3. Si P = (xP , yP) et Q = (xQ , yQ) avec P <> −Q, alors on détermine R = P + Q = (xR , yR)
comme suit :
xR = (λ2 − xP − xQ) mod p
yR = (λ(xP − xR ) − yP) mod p
où
λ = (yQ − yP)/(xQ − xP) mod p si P <> Q
λ = (3x²P + a)/2yP mod p si P <> Q
Échange de clefs
Alice et Bob se mettent d'accord (publiquement) sur une courbe elliptique E(a,b,p), c'est-à-dire
qu'ils choisissent une courbe elliptique y2 mod p = (x3+ax2+b) mod p. Ils se mettent aussi d'accord,
publiquement, sur un point P situé sur la courbe.
Secrètement, Alice choisit un entier dA, et Bob un entier dB. Alice envoie à Bob le point dAP, et Bob
envoie à Alice dBP. Chacun de leur côté, ils sont capables de calculer d A(dBP)=dB(dAP)=(dAdB)P,
qui est un point de la courbe, et constitue leur clef secrète commune.
Sécurité
Si Eve a espionné leurs échanges, elle connaît E(a,b,p), P, dAP et dBP. Pour pouvoir calculer dAdBP,
il faut pouvoir calculer dA connaissant P et dAP. C'est ce que l'on appelle résoudre le logarithme
discret sur une courbe elliptique. Or, actuellement, si les nombres sont suffisamment grands, on
ne connaît pas de méthode efficace pour résoudre ce problème en un temps raisonnable.
Inconvénients
• La théorie des fonctions elliptiques est complexe, et encore relativement récente. Il n'est pas
exclu que des trappes permettent de contourner le problème du logarithme discret.
• La technologie de cryptographie par courbe elliptique a fait l'objet du dépôt de nombreux
brevets à travers le monde. Cela peut rendre son utilisation très coûteuse!