Académique Documents
Professionnel Documents
Culture Documents
En réalité, Classic McEliece est une nette amélioration de McEliece. Dans le système de
McEliece, la clé publique spécifie un code Goppa binaire aléatoire ; un texte chiffré est un mot de
code plus des erreurs aléatoires. La clé privée permet un décodage efficace : extraction du mot de
code du texte chiffré, identification et suppression des erreurs.
Le système McEliece a été conçu pour être unidirectionnel (OW-CPA), ce qui signifie
qu'un attaquant ne peut pas trouver efficacement le mot de code à partir d'un texte chiffré et d'une
clé publique, lorsque le mot de code est choisi au hasard. Le niveau de sécurité du système
McEliece est resté remarquablement stable, malgré des dizaines de documents d'attaque sur 40
ans. Les paramètres originaux de McEliece ont été conçus pour seulement 2 64 de sécurité, mais le
système évolue facilement jusqu'à des paramètres "surpuissants" qui offrent une marge de
sécurité suffisante contre les progrès de la technologie informatique, y compris les ordinateurs
quantiques.
De plus, il est maintenant bien connu comment convertir efficacement un PKE OW-CPA
(Public Key Encryption, One-Way function, indistingability under Chosen Plaintext Attack) en
un KEM IND-CCA2 (Indistingability Under adaptative Chosen Ciphertext Attack) sécurisé
contre toutes les attaques ROM. Cette conversion est serrée, préservant le niveau de sécurité, sous
deux hypothèses satisfaites par la McEliece PKE : premièrement, la PKE est déterministe (c'est-
à-dire que le déchiffrement récupère tout l'aléatoire qui a été utilisé) ; deuxièmement, le PKE n'a
aucun échec de déchiffrement pour les textes chiffrés valides. Mieux encore, des travaux récents
atteignent une étanchéité similaire pour une classe plus large d'attaques, à savoir les attaques
QROM. Le risque qu'une attaque spécifique à une fonction de hachage soit plus rapide qu'une
attaque ROM ou QROM est traité par la pratique standard consistant à sélectionner une fonction
de hachage "non structurée" bien étudiée, de haute sécurité.
Classic McEliece rassemble tout cela. Il s'agit d'un KEM conçu pour la sécurité IND-CCA2 à un
niveau de sécurité très élevé, même contre les ordinateurs quantiques. Le KEM est construit de
manière conservatrice à partir d'un PKE conçu pour la sécurité OW-CPA, à savoir la version
duale de Niederreiter du PKE de McEliece utilisant des codes binaires Goppa. Chaque niveau de
la construction est conçu pour que les futurs auditeurs cryptographiques puissent avoir confiance
dans la sécurité à long terme du chiffrement à clé publique post-quantique.
Principe
Un code correcteur d'erreurs permet de corriger une information qui se serait altérée lors
de sa transmission via un canal (réseau, CD-ROM, temps, etc). Pour ce faire, un mot (une suite
de symboles) est transformé en un mot du code en rajoutant de l'information (appelée
redondance). À la sortie du canal, la redondance est utilisée pour corriger les erreurs et ainsi
retrouver le mot de code transmis en entrée. Ce mot est alors retransformé pour fournir le mot
original.
L'idée de McEliece est de masquer le mot de code correspondant au message en lui ajoutant
autant d'erreurs que possible tout en gardant la possibilité de corriger celles-ci. Si la méthode de
correction est gardée secrète, alors seul le destinataire sera en mesure de retrouver le message
original. La méthode d'encodage peut, quant à elle, être laissée publique tant qu'elle ne révèle pas
d'information sur le décodage.
Le cryptosystème de McEliece Classique utilise les codes de Goppa. Les codes de Goppa sont
faciles à décoder, mais une fois leur structure masquée par permutation, il est difficile de les
distinguer des codes linéaires. De plus, il est difficile de décoder un code linéaire aléatoire. La
sécurité du système repose donc sur deux problèmes distincts : l'indistingabilité d'un code de
Goppa permuté d'une part et le problème du décodage borné d'autre part.
En 1986, Harald Niederreiter a proposé un autre cryptosystème fondé sur la théorie des codes3.
Le cryptosystème de Niederreiter a été prouvé équivalent à celui de McEliece en 1994 par Li,
Deng et Wang.
2. Codes de Goppa Binaires
C’est ce type de code linéaire qui est utilisé dans le cryptosystème McEliece
Classique. Donc, il nous faut bien comprendre son fonctionnement. Pour ce faire,
nous avons l’obligation de faire un détour sur les codes de Reed-Solomon Généralisés
et les codes alternants.
i) Codes de Reed-Solomon généralisés
Définition
Soient :
x=(x0,……,xn-1) un n-uplet d’éléments de c deux à deux distincts.
y=(y0,….,yn-1) un n-uplet d’éléments non nuls dans Fq
un entier k n
Le code de Reed-Solomon Généralisé GRSk(x,y) est défini par :
GRSk(x,y)={(y0f(x0),……,yn-1f(xn-1)) / f ϵ Fq[z], deg(f) k }
Le vecteur x est appelé le support et le vecteur y le multiplicateur.
Théorème
Les paramètres de GRSk(x,y) sont :
dim GRSk(x,y) = k
dmin GRSk(x,y) = n-k+1
ii) Codes alternants
Définition
Soit C une partie de de (Fqm)n un code sur Fqm . On définit son sous-
code sur un sous-corps par :
C ∩ (Fq)n
Proposition
Si C ⊆ (Fqm)n a pour paramètres [n, n-c, d]qm, alors
· dim C ∩ (Fq)n ≥ n - mc
· dmin C ∩ (Fq)n ≥ d
Définition
Soient x,y ∈ (Fqm)n comme dans la définition de GRS. Le code A r( x , y ) est
défini par :
A r( x , y ) = GRSr(x,y) ⊥ ∩ (Fq)n
Proposition
dim A r( x , y ) ≥ n – mr
dmin A r( x , y ) ≥ r + 1
iii) Codes de Goppa
Définition
Soit x ∈ (Fq ) un support et Г ∈ Fqm[z] tel que pour tout i, Г (xi) ≠ 0, alors le code de Goppa
m n
L’entier x ∈ {0, 1,…, (nt )−1 } correspond à celui ayant pour écriture binaire M ∈ (F ) .
2
l
3.c) Déchiffrement
Comme dans tout système de chiffrement à clé publique, nous avons besoin du texte chiré
à déchirer et de la clé privée pour la phase de déchirement. Le déchirement de Niederreiter est
présenté dans l’Algorithme 4.
Algorithme 4 Déchiffrement
Entrée(s): sk = (Q, H,P, C ) la clé privée, S’ ∈ (Fr) le texte chiffré.
Sortie(s): M ∈ (F2)l le texte clair associé à C’.
1: Calculer S = Q−1 · S’.
2: Décoder S = H · P · tE pour retrouver E’ = P · tE,
//décodage par syndrome.
3: Calculer tE = P −1 · E’.
4: Représenter E comme un message M,
//fonction réciproque de l’encodage en poids constant.
5: Retourner M.
L’algorithme de décodage utilisé à l’étape 2 est dans ce cadre celui de la famille des codes de
Goppa binaires dans laquelle C a été choisi et de l’algorithme de décodage le plus efficace
connu pour celle-ci. Quant à la fonction réciproque de l’encodage en poids constant,
4. Sécurité du cryptosystème