Vous êtes sur la page 1sur 27

Chiffre de

McEliece
Sommaire
I. Historique de la cryptographie......................................................................2
II. Prsentation du systme de McEliece............................................................2
1. Posons le problme......................................................................................2
2. Construction des paramtres du code..........................................................3
3. Le chiffrement..............................................................................................5
4. Le dchiffrement...........................................................................................5
III. Sret du systme de McEliece......................................................................7
5. Une premire attaque...................................................................................7
6. Une mthode probabiliste............................................................................8
7. En conclusion.............................................................................................10
Annexes.................................................................................................................11
1. Nombre moyen de tirages avant de trouver une matrice inversible........11
2. Construction des corps finis....................................................................11
3. Trouver un lment primitif..................................................................13
4. Trouver P un polynme irrductible.......................................................14
5. Calcul explicite dans un corps fini..........................................................16
6. Complexit de la mthode du pivot de Gauss..........................................17
7. Dtermination de k colonnes indpendantes...........................................19
8. Primalit et factorisation.........................................................................21
9. Quelques procdures crites sous Maple................................................22
10. Dmonstration des thormes.................................................................24
11. La loi franaise sur la cryptographie......................................................26
Bibliographie........................................................................................................27
Cryptographie Chiffre de McEliece
La cryptographie peut tre dcrite par limage suivante : Bob veut envoyer un message secret (en gnral Bonjour )
Alice mais pour cela il doit utiliser un canal public. Seulement, Oscar espionne et coute tous les changes qui se font par
lintermdiaire de ce canal. Lide naturelle est donc de chiffrer le message afin que seul Alice puisse le dchiffrer.
Formellement, on peut rsumer tout cela par le schma suivant :
Les cls que nous voyons apparatre sur le schma sont des paramtres personnels que lon prend en compte lors des
tapes de chiffrement et de dchiffrement et qui permettent dapporter une diversit quasiment infinie.
Nous allons dans ce mmoire prsenter principalement un systme de chiffrement particulier propos par McEliece. Nous
expliquons dans un premier temps son fonctionnement et nous testons par la suite (ce qui est indispensable pour tout systme
cryptographique) la scurit quil fournit. Nous nous sommes efforcs par ailleurs dtudier en Annexes les problmes
pratiques que lon rencontre avec McEliece et galement de prsenter quelques procdures.
Signalons finalement que, dans un souci de clart, nous avons adopt le code suivant : les thormes sont annoncs par un
trait bleu en marge et sont dmontrs en Annexes, les exemples sont annoncs par un trait rouge en marge et les quelques
dmonstrations isoles sont annonces par un trait vert en marge.
I. Historique de la cryptographie
Les systmes cryptographiques sont utiliss depuis trs longtemps et rpondaient lorigine des besoins militaires. On
sait par exemple que Jules Csar utilisait le chiffre suivant : chaque lettre du message transmettre tait remplace par celle
qui la suivait dans lalphabet. Par exemple, le mot BONJOUR tait cod par CPOKPVS. Lutilisation de cls est galement
apparue rapidement et le chiffrement de Jules Csar a alors fait place au chiffrement de Vigenre. Toutefois tous ces systmes
utilisaient une cl prive, cest--dire que la cl de chiffrement et la cl de dchiffrement taient en ralit identiques. Ceci
prsente un dfaut important : avant de pouvoir discuter en toute scurit, Bob et Alice devaient stre mis daccord sur la cl
commune, et cela en utilisant forcment un canal public. Oscar pouvait alors intercepter facilement le renseignement et puis
dchiffrer tous les messages par la suite.
La grande rvolution de la cryptographie moderne a t lintroduction des systmes cl publique, par Diffie et Hellman,
pour lesquels la cl de chiffrement et la cl de dchiffrement ne sont pas identiques. Ainsi, Alice peut informer Bob
publiquement (en pratique par lintermdiaire dun annuaire ou dun serveur de cls) de la cl de chiffrement sans pour autant
compromettre la scurit du chiffre. Bien sr, il y a un revers la mdaille : comme il existe forcment un lien entre les cls de
chiffrement et de dchiffrement, pour que ces mthodes puissent tre utilises, il doit tre calculatoirement difficile de reformer
la cl de dchiffrement partir celle de chiffrement, alors que lopration inverse doit tre aise. De tels problmes trouvent
gnralement leur solution dans les mathmatiques et notamment en arithmtique, par exemple pour RSA.
Cette nouvelle ide a apport de nouvelles perspectives la cryptographie et trs vite de nombreux systmes
cryptographiques cl publique sont ns. Cependant, trs souvent dans la prcipitation, les systmes crs se sont avrs peu
efficaces soit parce que trop compliqus mettre en uvre, soit parce que noffrant pas assez de scurit. Le systme de
McEliece est lun dentre eux et, comme nous allons le voir, illustre bien cette priode hsitante et rvolutionnaire.
II. Prsentation du systme de McEliece
Dans tout ce qui suit F2 dsigne lensemble {0,1} que lon munit dune structure de corps.
Attention ! Pour crire les messages qui seront reprsents par des vecteurs en ligne et non en colonne, nous allons
transposer toutes les matrices.
1. Posons le problme
Donnons-nous un entier n strictement positif et posons E=F2
n
. E est alors un espace vectoriel sur F2 que lon peut munir de
la norme suivante que lon appelle le poids :
( ) ) ( ) ( , ,...,
1
1
R dans x x w pose on E x x x
n
i
i n


La distance dfinie par cette norme est appele distance de Hamming.
Page 2
Cryptographie Chiffre de McEliece
Soit maintenant F un sous-espace vectoriel de E de dimension k. On appelle distance minimale de F la quantit suivante :
( ) { } { } 0 , min F x x w d
i)On a alors la proprit suivante :
Si x est un lment de E, alors il existe au plus un couple (x,e) vrifiant ( )
( )

'

+
<
e x x
d
e w F x
S
'
2
,
:
Sil existe, le vecteur e est alors appel le vecteur derreur.
Et rciproquement si pour tout x lment de E, il existe au plus un couple (x,e) vrifiant ( )
( )

'

+

e x x
t e w F x
S
'
,
: ' o t est
un entier, alors la distance minimale de F est strictement suprieure (2t).
Le problme est alors le suivant : Si on se donne x, existe-t-il un couple solution et sil existe, comment peut-on le
trouver ?
Ce problme est en gnral difficile mais il se trouve que si F a une structure particulire (que nous qualifierons de
sympathique), alors on peut trouver des algorithmes efficaces pour rpondre la question. Cest sur cette remarque que repose
le principe du systme de McEliece.
Avant dexposer celui-ci, nous allons remarquer que lon peut trouver une application linaire de F2
k
dans E, qui ralise une
bijection de F2
k
dans F. Appelons alors G la matrice canonique de cette application. La donne de G entrane bien videmment
celle de F (on dit que F est le code engendr par G), cest--dire au lieu de se donner un sous-espace vectoriel de E de
dimension k, on peut se donner une matrice de taille (k,n) (Attention, on transpose !) coefficients dans F2; cest ce que nous
ferrons par la suite.
Exposons donc maintenant le principe du systme de McEliece. Alice choisit une matrice sympathique G de taille (k,n),
une matrice inversible S de taille (k,k) et une matrice de permutation P de taille (n,n), calcule ensuite le produit G=SGP. Elle
rend ensuite publique la matrice G et le nombre maximal derreurs, que lon notera t, quelle sait corriger avec un algorithme
simple.
Bob veut alors envoyer le message m Alice. Pour cela, il calcule le produit de m par G auquel il ajoute un vecteur
derreur de poids convenable (infrieur ou gal au nombre publi). Il envoie alors Alice le vecteur calcul que lon appellera
x. Mathmatiquement cela scrit ( ) t e w o e G m x + ' . ' .
Lorsque Alice reoit x, elle calcule ( ) t e w P e w o P e G S m P x +

) . ( . . . '.
1 1 1
. Comme G est une matrice
sympathique, elle peut facilement liminer le vecteur derreur et donc retrouver G S m . . . Connaissant S et G, elle retrouve
ensuite le message original m.
Oscar, quant lui, est confront au problme difficile puisquil ne connat que G (qui nest pas une matrice sympathique),
ainsi il ne peut pas a priori liminer lerreur et retrouver le message.
2. Construction des paramtres du code
Bien que pratiquement, la construction des paramtres doive obligatoirement dbuter par la construction de G, nous
prsentons ici un ordre diffrent gradu par la difficult que revt chaque construction.
Notons galement que nous utiliserons ici un code sympathique de la classe BCH, alors que McEliece avait suggr un
code sympathique de la classe de Goppa. Ceci ne change en rien ltat desprit du systme de chiffrement.
1. Construction de la matrice S
Il sagit ici de construire une matrice de taille (k,k) inversible et alatoire. La premire ide consiste gnrer une premire
matrice alatoire. On regarde ensuite si elle est inversible (par la mthode du pivot de Gauss qui est rapide lorsque les
coefficients sont dans F2 voir Annexe 6). Si cest le cas, on a trouv une matrice S convenable, sinon on ritre le procd
jusqu russite. Toutefois, pour que cette mthode soit raisonnable, il faut sassurer que le nombre de matrices que lon va
gnrer ne soit pas trop grand mme pour des valeurs de k leves.
On montre (voir Annexe 1) que le nombre moyen de matrices gnrer nexcde pas quatre. Ainsi cette mthode est
satisfaisante.
La procdure 1 prsente en Annexes renvoie une matrice inversible et son inverse.
2. Construction de la matrice P
Construire la matrice P revient gnrer une permutation de lensemble {1,2,,n}. La premire ide simpliste consisterait
engendrer un nombre alatoire entre 1 et n. On le compare ensuite ceux engendrs prcdemment : sil est distinct de tous,
on passe llment suivant, sinon on essaye avec un autre nombre. Il est clair que cette mthode devient rapidement trs
lente.
On peut proposer lalgorithme suivant plus efficace :
Page 3
Cryptographie Chiffre de McEliece
1. On dfinit la liste LST par LST(i)=i et r par r=0
2. On gnre un nombre alatoire a entre 1 et n-r (r dfinit ltape en cours)
3. On place en (r+1) position de la permutation le nombre LST(a)
4. On remplace alors LST(a) dj choisi par LST(n-r) pas encore choisi
On remarque que les LST(i) (i n-r) ne pourront plus tre choisis par la suite
5. On ajoute 1 r
6. On recommence ltape 2 jusqu ce que la permutation soit toute gnre (i.e. r=n)
La procdure 2 prsente en Annexes renvoie une matrice de permutation et son inverse.
3. Construction de la matrice G
Nous allons prsenter ici une catgorie de matrices sympathiques. Notre tude repose en particulier sur la thorie
mathmatique des corps finis dont nous prsentons les bases en Annexes. Dautre part, afin de ne pas noyer un lecteur non
averti dans des formules simplement thoriques, nous allons accompagner notre expos dun exemple.
Tout dabord choisissons un entier r strictement positif et un entier t strictement positif et pas trop grand .
Posons alors n=2
r
1 et dfinissons sur
nZ
Z
, la relation binaire suivante :
( ) ( ) y x N k y x
nZ
Z
y et x
k
2 / ,
Cette relation est une relation dquivalence. On peut alors poser


1 2
1
+


t
l
t
l .
POUR NOTRE EXEMPLE, CHOISISSONS r=4 ET t=1. ON A ALORS n=15 ET { } { }

9 , 12 , 6 , 3 8 , 4 , 2 , 1 .
Considrons maintenant un lment primitif du corps fini r
F
2
(voir Annexes 2 & 3) et formons le polynme
( ) ( )



t
i
i
t
X X A
ii) On a alors la proprit suivante : At est un polynme coefficients dans F2.
SUR NOTRE EXEMPLE, CELA DONNE
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
9 12 6 3 8 4 2
. . . . . . . X X X X X X X X X A
SELON LLEMENT PRIMITIF CHOISI, ON PEUT TROUVER PLUSIEURS POLYNOMES (QUI CONVIENNENT TOUS). ON PEUT PAR EXEMPLE PARVENIR
(VOIR ANNEXE 5) SI ON CHOISIT
1
2
+
:
( )
8 4 2
1 X X X X X A + + + +
Considrons maintenant lapplication linaire
[ ] [ ]

,
_



P A P
X F X F
t
n k
.
:
1 2 1 2

o k est dfini par ( ) 1 deg 1 + k A n


t
soit ( )
t
A n k deg
Alors la matrice canonique de est une matrice sympathique. Autrement dit, on a construit G.
SUR NOTRE EXEMPLE, ON A deg(A)=8 DO ON TROUVE k=7.
AINSI EST DFINIE PAR
[ ] [ ]
( ) ( )

,
_

+ + + +

8 4 2
14 2 6 2
1 .
:
X X X X X P P
X F X F

.
CE QUI NOUS DONNE G (ATTENTION, ON TRANSPOSE !) :

,
_

1 0 0 0 1 0 1 1 1 0 0 0 0 0 0
0 1 0 0 0 1 0 1 1 1 0 0 0 0 0
0 0 1 0 0 0 1 0 1 1 1 0 0 0 0
0 0 0 1 0 0 0 1 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0 1 0 1 1 1 0 0
0 0 0 0 0 1 0 0 0 1 0 1 1 1 0
0 0 0 0 0 0 1 0 0 0 1 0 1 1 1
G
La procdure 3 prsente en Annexes gnre une matrice G sympathique.
Page 4
Cryptographie Chiffre de McEliece
4. En conclusion
Nous verrons plus loin, lorsque nous tudierons le dchiffrement que lon peut corriger facilement jusqu t erreurs. Cest
donc la valeur que lon doit rendre publique avec la matrice G.
On notera galement que cest seulement lors de la gnration de G que lon peut dterminer le paramtre k. Ainsi, il est
ncessaire de construire G avant de construire S.
CELA DIT, REPRENONS LEXEMPLE PRCDENT ET CONSTRUISONS S ET P.
ON PEUT PAR EXEMPLE CHOISIR

,
_

1 1 1 0 1 1 1
1 1 0 1 1 1 1
1 0 1 0 0 0 1
0 1 0 0 0 0 1
0 0 0 0 1 1 0
1 1 0 0 0 0 1
0 0 0 0 0 1 0
S
ET POUR P LA MATRICE DE PERMUTATION ASSOCIEE A (3,11,4,6,13,5,14,2,10,9,12,7,8,1,15).
ALICE PUBLIE

,
_

1 0 1 0 0 1 0 1 0 0 1 1 1 0 1
1 1 1 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 0 1 0 0 1 1 1 1 0
0 1 1 0 1 1 1 0 0 0 1 1 1 1 1
0 1 1 1 1 0 1 0 0 0 1 0 0 0 0
1 0 1 1 1 0 1 0 0 0 1 1 1 0 1
0 0 0 0 1 0 1 0 0 1 1 1 0 0 0
' G ET t=1.
Il ne reste plus qu vrifier que G na pas une tte trop sympathique, mais l il nexiste pas, notre connaissance, de
veritables critres (car il peut toujours exister un cas facile que lon na pas encore tudi).
3. Le chiffrement
Le chiffrement est facile mettre en uvre : il sagit tout dabord de mettre son message sous forme dune suite de bits.
Ensuite, on dcoupe celui-ci en blocs de k bits. On multiplie chacun deux par la matrice G qui est publique et on ajoute au
rsultat obtenu un vecteur derreur alatoire de poids infrieur la valeur publie. On met alors bout bout tous les blocs de n
bits obtenus pour obtenir le message chiffr transmettre.
SUPPOSONS QUE BOB VEUILLE ENVOYER ALICE LE MESSAGE SECRET
m = (1,0,1,0,1,1,0).
IL CALCULE ALORS LE PRODUIT m.G (TOUJOURS DANS F2). IL OBTIENT
c = m.G = (1,0,0,1,0,0,1,1,0,1,1,0,0,0,0).
IL CHOISIT UN VECTEUR DERREUR DE POIDS INFERIEUR OU EGAL A 1. PAR EXEMPLE,
e = (0,0,0,0,0,0,0,0,0,0,1,0,0,0,0).
IL ENVOIE ENSUITE LE MESSAGE C ALICE.
c = c + e = (1,0,0,1,0,0,1,1,0,1,0,0,0,0,0).
La procdure 4 prsente en Annexes permet de chiffrer un message. On notera le paralllisme entre les procdures de
construction dun vecteur derreur alatoire et dune matrice de permutation alatoire.
4. Le dchiffrement
dsigne toujours llment primitif de r
F
2
choisi lors que la construction de la matrice G.
Tout dabord, prcisons que si p=(p0, , pd), on notera ( )

d
i
i
i
X p X P
0
de telle sorte que p reprsente les coordonnes
de P dans la base canonique. Dautre part, on gardera les notations employes dans le paragraphe prcdent. Le dchiffrement
se dcompose alors en quatre tapes.
En premier lieu, on calcule
' . . . '. '
1 1
e r P e G S m P c r + +

puis le polynme suivant, appel polynme
syndrome :
( ) ( )

t
i
i i
Z R Z S
2
1
1
. '
Page 5
Cryptographie Chiffre de McEliece
ALICE RECOIT LE MESSAGE ENVOYE PAR BOB ET CALCULE r=(0,0,1,0,0,0,0,0,1,0,0,1,1,1,0).
ELLE DETERMINE ALORS ( )
13 12 11 8 2
' X X X X X X R + + + +
PUIS ELLE CALCULE ENSUITE ( ) ( ) ( ) Z Z S . 1
2 3 2
+ + + + (VOIR ANNEXE 5)
On applique alors lalgorithme dEuclide tendu aux polynmes Z
2t
et S(Z) mais on sarrte non pas au dernier reste non
nul mais au premier reste de degr strictement infrieur t. On obtient ainsi lgalit :
( ) ( ) ( ) ( )
( )
( )

'

<

+

t R
t R
avec Z S Z B Z Z A Z R
i
i
i
t
i i
deg
deg
. .
1 2
ICI t=1. LALGORITHME DEUCLIDE ETENDU DONNE (VOIR ANNEXE 5) :
( )
( ) ( )
( ) ( ) ( )
2 3 3 2 3
2 2 3
2
2
. 1 1 1 . 1
1 0 1 .
0 1


+ + + + + + + +
+ + + +
Z Z
Z
Z
Z S en t Coefficien Z en t Coefficien Reste Quotient
DO ON TIRE LGALITE SUIVANTE : ( ) ( ) [ ] ( ) Z S Z Z . 1 1
2 3 2 3
+ + + + + + .
Notons maintenant le nombre derreurs contenues dans le message. On a par hypothse t.
Dfinissons alors les (rj) par lgalit suivante :
( )


1
'
j
r
j
X X E
.
iii) On a alors la relation suivante : ( ) { }

j B Zros
j
r n
i
1 ,
Ainsi, ayant calcul le polynme Bi, on trouve facilement les (rj) simplement en essayant successivement toutes les
puissances de .
POUR NOTRE EXEMPLE, ALICE CALCULE (VOIR ANNEXE 5) :
( )
( )
( )
( ) 1 0 1 1
15 14 13 12
1 1
11 10 9 8
1
7 6 5 4
1 1
3 2 1
2 3 3
3 2 2 3 2
3 2 3 2 3 3
2
+ + + + +
+ + + + + + +
+ + + +
+




m
i
m
i
m
i
m
i
B
m
B
m
B
m
B
m
AINSI LE COEFFICIENT ERRON EST CELUI DU MONME EN X.
ALICE RETROUVE AINSI ( )
13 12 11 8 2
X X X X X X X R + + + + +
ALICE AURAIT BIEN SR DU SARRTER LORSQUELLE A DCOUVERT LA RACINE PARCE QU'ELLE SAIT QUE LE MESSAGE ENVOY RENFERME
UNE UNIQUE ERREUR ET EVITER AINSI LE CALCUL DE BI(
15
).
On effectue finalement la division exacte de R par At. Le quotient de cette division est le vecteur de coordonnes m.S.
Comme on connat linverse de S, on dtermine facilement m.
Remarquons toutefois que si on a calcul auparavant le quotient Ct de la division exacte de (X
n
+ 1) par At, on a alors :
( ) ( )
( )
( )
( ) ( )
( )
( )
( )
( )
k
A
R
et
X A
X R
X
X A
X R
X A X C
X A
X R
X C X R
t t
n
t
t t
t
t
<

,
_

+ deg . . . . . Donc, le quotient de la division


exacte de R par At sobtient plus simplement en ne gardant dans le produit de R par Ct que les monmes de degr strictement
infrieur k.
On notera que le fait que lon puisse retrouver le message initial et donc que lon puisse corriger t erreurs prouve que la
distance minimale du code engendr par G est suprieure ou gale (2t+1).
Page 6
Cryptographie Chiffre de McEliece
ON SUPPOSE QUALICE A PRALABLEMENT CALCUL ( )
7 3
8 4 2
15
1
1
1
X X X
X X X X
X
X C + + +
+ + + +
+
.
AINSI, ELLE CALCULE ( ) ( ) ... .
5 4 3
+ + + + X X X X X C X R
DO ELLE TROUVE m.S = (0,1,0,1,1,1,0) ET PUIS m = (1,0,1,0,1,1,0), CE QUI EST BIEN LE MESSAGE ORIGINAL ENVOY PAR BOB.
La procdure 5 prsente en Annexes permet de dchiffrer un message reu.
III. Sret du systme de McEliece
Dans tout ce chapitre, nous poserons E=F2
n
et F dsignera le code engendr par la matrice publique G.
Pour Oscar, le problme est le suivant : il connat G et le message chiffr c quil a intercept et il doit trouver le couple
(m,e) qui vrifie :
( )

'

+
t e w
e G m c ' . '
.
La mthode de dchiffrement a pr
ouv lexistence et lunicit de ce couple mais comment peut-on faire pour le dterminer ?
5. Une premire attaque
5. Un peu dalgbre linaire
Dfinissons tout dabord sur E, ce qui pourrait sapparenter un produit scalaire par : Y X y x
t
. (dans F2) o X et Y
sont les coordonnes respectives de x et de y dans la base canonique (attention, on transpose !).
On dit, toujours par analogie, que x et y sont orthogonaux si 0 y x et on note y x .
Nous insistons bien sur le fait que ceci nest pas un vritable produit scalaire. Par exemple le fait que x soit orthogonal
lui-mme ne veut pas dire quil est nul mais seulement quil est de poids pair.
On note ensuite si G est un sous-espace vectoriel de E : { } y x G y E x G

, / .
iv) On a alors la proprit suivante :

G
est un sous-espace vectoriel de E de codimension la dimension de G. De l dcoule
( ) F F

.
Dfinissons alors la matrice H en crivant en ligne les vecteurs dune base de

F
. On a alors :
( ) ( ) ( ) ( ) F F x F de base une toute orthogonal est x H x
t



0 .
On dispose ainsi dun test permettant de reconnatre si x est un lment du code. La quantit
H x
t
.
sappelle le syndrome
de x (on notera quil dpend de H, mais sa nullit nen dpend pas).
6. Dtermination de H
G est par hypothse de rang maximal. Donc on peut trouver k colonnes qui forment une famille libre. Autrement dit, on
peut trouver M une matrice de permutation (voir Annexe 7) telle que : ( )
2 1
'. G G M G o G1 est une matrice inversible de
taille (k,k) et G2 une matrice quelconque de taille (k,n-k).
Posons alors ( ) ( ) M Id G G H
t
k n
t
. .
2
1
1

et vrifions que H ainsi dfinie convient. Notons que linversion de la


matrice G1 est une opration relativement rapide (voir Annexe 7).
La prsence de la matrice identit dordre (n-k) prouve que les vecteurs ligne forment une famille libre. Dautre part, ils
sont au nombre de (n-k). Il ne reste donc plus qu sassurer quils appartiennent tous

F
.
Pour cela, calculons ( ) 0 . 2 . .
.
. . '.
2 2 2
1
1 1
2
1
1 1
2 1
+

,
_

G G G G G
Id
G G
M M G G H G
k n
t
, ce qui assure le
rsultat annonc
POUR NOTRE EXEMPLE, OSCAR PEUT PARVENIR :
Page 7
Cryptographie Chiffre de McEliece

,
_

0 0 0 0 0 0 0 0 1 1 0 1 1 0 0
0 1 0 1 1 0 1 1 0 0 0 0 1 0 0
1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 1 0 1 1 0 0 0 1 0 1 0 1 0 0
0 1 0 0 1 0 0 1 1 0 0 1 0 1 0
0 0 1 0 1 0 0 1 1 0 0 1 1 0 0
0 1 0 1 0 0 0 1 0 0 0 0 0 0 1
0 0 0 1 1 1 0 1 0 0 0 1 1 0 0
H
REMARQUONS QUE OSCAR NE DOIT EFFECTUER CE TRAVAIL SEULEMENT LORSQUE ALICE PUBLIE LA MATRICE G ET PAS CHAQUE FOIS
QUIL VEUT DCHIFFRER UN MESSAGE.
7. Algorithme dattaque
On raisonne sur les valeurs que peut prendre le vecteur derreur. Il y en a

t
i
i
n
C
0
. On a en gnral une approximation
suffisante de ce nombre en prenant la valeur
t
n
C .
On dresse alors un tableau o lon met en correspondance tous les vecteurs derreur possibles et leur syndrome. Cette
opration ne doit tre effectue, comme la prcdente, quune seule fois.
OSCAR DRESSE ALORS LE TABLEAU SUIVANT ( COMPLTER) :
( ) ( )
( ) ( )
( ) ( ) 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
' Syndrome erreur d Vecteur
CE TABLEAU COMPTE NORMALEMENT 16 LIGNES.
Lorsque lon intercepte le message chiffr, on calcule alors son syndrome. Le vecteur derreur est le seul lment en
correspondance dans le tableau prcdent avec le syndrome calcul. On retrouve alors le message clair.
En effet, on a par hypothse e G m c + ' . ' do c et e ont le mme syndrome car m.G est un mot du code. Il reste voir
que deux vecteurs derreur distincts ont des syndromes distincts. Mais, si tel ntait pas le cas, alors la diffrence de ces deux
vecteurs aurait un syndrome nul et serait donc un mot du code. Seulement, le poids de cette diffrence serait infrieur (2t),
mais on a vu que la distance minimale du code est suprieure (2t+1), ce qui est contradictoire. Ceci fonde lalgorithme
propos.
LORSQUE OSCAR INTERCEPTE C = (1,0,0,1,0,0,1,1,0,1,0,0,0,0,0), IL CALCULE SON SYNDROME.
IL TROUVE ALORS ( ) 0 1 1 1 1 1 0 1 '. H c
t
IL CHERCHE ENSUITE DANS LE TABLEAU LE VECTEUR DERREUR CORRESPONDANT, AINSI IL OBTIENT LE MESSAGE CORRIGE : C =
(1,0,0,1,0,0,1,1,0,1,1,0,0,0,0).
IL PEUT ALORS ECRIRE : ( ) ( ) ( )
2 1
1
2
1
1
1
2 1
. . . . . . ' . C C c M G m M G m M G G m G m

DO IL TROUVE ( ) 0 1 1 0 1 0 1 . .
1
1 1


G M C m , CE QUI EST BIEN LE MESSAGE CLAIR.
8. En conclusion
On a pu remarquer sur lexemple prcdent que cet algorithme est trs efficace pour de petits codes (cest dire pour des
valeurs de n et de t suffisamment petites).
Cependant dans la pratique les valeurs de n et de t sont suffisamment grandes. Supposons, ce qui est plus raisonnable (ce
sont les quantits suggres par McEliece), que n=1024 et que t=50. Alors, le nombre de vecteurs derreur possibles est
monstrueux, de lordre de
86
10
. Ainsi, le calcul de tous les lments du tableau de dchiffrement serait pratiquement
impossible, car trop long, et le stockage de toutes ces informations demanderait beaucoup plus de mmoire que ne peuvent en
contenir un milliard de milliards de disques durs de 10 Gigaoctets.
On peut essayer de fixer une limite raisonnable : cette approche devient totalement impraticable ds que lon choisit n
suprieur 150.
Page 8
Cryptographie Chiffre de McEliece
6. Une mthode probabiliste
Nous allons prsenter ci-dessous lalgorithme dattaque :
1. (Voir Annexe 7) On permute les colonnes de G pour obtenir la matrice ( )
2 1 0
G G G o G1 est une matrice
inversible de taille k. On sait que cela est possible car G est de rang maximal.
2. On effectue la mme permutation sur le message capt c et on obtient ( ) ' ' '
2 1 0
c c c .
3. On calcule le produit
' .
1
1
G G T

.
4. Pour chaque vecteur derreur e de longueur k et de poids infrieur , on calcule la quantit suivante :
( ) ' . ' '
0
r T e c e + + . Si le poids de ce vecteur est infrieur ou gal t, alors le message clair est donn par
( )
1
1 0
. '

+ G e c m .
5. Si aucun succs na t rencontr, on recommence ltape 1 (avec une autre permutation).
Remarquons tout de suite que la mthode prcdente est le cas particulier un peu amlior o lon prendrait =t. Nous
verrons plus loin que cest un trs mauvais choix.
Vrifions maintenant, le rsultat nonc ltape 4. Les galits crites fournissent ' ' . ' e G m c + avec ( ) t e w ' . Or nous
avons vu que cette dcomposition est unique, ce qui permet de conclure.
Nous allons essayer de dterminer la vitesse de cet algorithme en fonction de . Pour cela, appelons
1
t le temps ncessaire
une vrification (cest--dire ltape 4 en ne considrant quun vecteur derreur) et
2
t le temps ncessaire lexcution des
tapes 1, 2 et 3. On pourra considrer ltape 5 comme trs rapide.
Le temps ncessaire pour excuter ltape 4 vaut alors

0
1 1
.
i
i
k
C t T do on en dduit le temps ncessaire pour effectuer
un cycle :

0
1 2
.
i
i
k
C t t T .
Calculons le nombre moyen de cycles que lon va devoir effectuer avant de russir. Il est clair que la russite passe par un
choix judicieux de la permutation. Pour tre plus clair, lalgorithme russit si et seulement si les k bits retenus dans le vecteur
'
1
c contiennent moins de erreurs. Dterminons alors la probabilit de cet vnement (en considrant que le fait que lon ne
tire que des groupes de colonnes indpendantes ninfluence pas le rsultat).
Nous allons supposer en outre pour simplifier les calculs que le message intercept contient exactement t erreurs, ce qui est
le cas le plus dfavorable pour cet algorithme probabiliste.
Le nombre de tirages de k bits parmi n bits vaut :
k
n
C .
Le nombre de tirages contenant exactement i erreurs est donn par :
i k
t n
i
t
C C

. .
On en dduit que la probabilit recherche vaut :
k
n
i
i k
t n
i
t
C
C C

0
.
. On peut montrer alors que dans ces conditions (voir Annexe
1) le nombre moyen de tirages est gal linverse de la probabilit, soit :
( )

0
.
i
i k
t n
i
t
k
n
C C
C
m
Finalement le temps dexcution moyen de lalgorithme vaut :
( ) ( )
,
_


0
1 2
0
. .
.
.
i
i
k
i
i k
t n
i
t
k
n
C t t
C C
C
T m
Essayons alors de dterminer une relation entre t1 et t2. Pour cela, on appellera opration toute addition, multiplication ou
comparaison entre deux bits.
Prcisons galement que dans les calculs qui vont tre faits, nous ne garderons chaque fois que le terme dominant dans un
souci de simplification.
Page 9
Cryptographie Chiffre de McEliece
On peut montrer (voir Annexe 7) que ltape 1 ncessite environ ( ) k n k + . 4 .
2
oprations. Les tapes 2 et 5 sont trs
rapides. Il est facile de voir que ltape 3, demande environ
2
. . 2 k n
oprations. De mme ltape 4 requiert environ k n. . 2
oprations. Ainsi on peut raisonnablement penser que :
( )
n
k
k
k n
k n k n k
t
t
. 2
. 3
. . 2
. . 2 . 4 .
2 2 2
1
2
+
+ +

Donc le temps dexcution scrit ( )

+ +


0
0
2
.
.
. 2
. 3
.
i
i k
t n
i
t
i
i
k
C C
C
n
k
k
K o K est une constante positive ne dpendant pas de .
On peut alors chercher optimiser ce temps.
Prenons maintenant des valeurs numriques. Comme la suggr McEliece, testons la rapidit de notre algorithme avec
n=1024, k=534 et t=50. La fonction dfinie ntant pas spcialement facile tudier, construisons plutt le tableau suivant :
( )
05 , 236 47 , 280 55 , 285 52 , 287 48 , 288 81 , 288 16 , 287 log
50 10 5 3 2 1 0
10

,
_

On constate que lalgorithme le plus rapide correspond =1.


Toutefois, si lon calcule le nombre doprations ncessaires son excution, on trouve un nombre encore beaucoup trop
grand, de lordre de
23
10
.
On peut galement ici essayer de fixer une limite raisonnable : pour n infrieur 400, cet algorithme dattaque est
relativement adapt mais pour des valeurs de n beaucoup plus grandes, il devient extrmement lent (tout en restant quand
mme plus rapide que la premire mthode prsente).
7. En conclusion
On a pu constater quil est difficile de casser le systme de chiffrement de McEliece ds que Alice choisit pour n des
valeurs suprieures 500 (pour tre tranquille). Cela signifie-t-il pour autant que ce systme de chiffrement est sr ?
En fait, pratiquement tous les systmes de chiffrement deviennent incassables , ds que la longueur de la cl est
suffisamment importante. Le chiffre de Vigenre, par exemple, est totalement sr si lon choisit une cl aussi longue que le
message, retrouvant ainsi le chiffre de Vernan. Et cest pourtant un systme cryptographique assez primitif.
Or le systme de McEliece nest sr que si lon choisit une cl de plus de cent mille bits, ce qui est norme (voir Annexe
11). Donc, bien que lon nait pas encore trouv dalgorithme qui permette de casser McEliece coup sr, la remarque
prcdente suffit se convaincre que lon a ici affaire un systme dune sret toute relative.
Pour finir, faisons la remarque suivante. Une attaque qui serait base sur la recherche de S et de P (comme ils sont dfinis
dans la prsentation du systme de McEliece) se heurtera trs vite au problme de la reconnaissance dune matrice
sympathique. En effet, comme nous lavons dj voqu, il existe plusieurs classes de matrices sympathiques : nous avons
utilis la classe BCH, McEliece suggrait la classe de Goppa mais rien ne peut empcher une Alice malicieuse de choisir une
matrice sympathique dun autre genre, relative par exemple un code de Golay. Il nest donc finalement pas trs intressant de
poursuivre dans cette direction.
Comme nous lavons dj signal, le systme cryptographique de McEliece a pris naissance une poque o la
cryptographie connaissait un bouleversement avec lapparition de la cl publique. Quelques autres systmes qui reprennent
lide dutiliser un cas particulier simple dun problme complexe et de le dguiser sont mettre en parallle avec le systme
cryptographique de McEliece. Citons par exemple le chiffre de Merkle-Hellman qui met profit le problme du sac dos qui
est le suivant : tant donns un sac dos de volume donn et divers objets dont on connat galement le volume, est-il possible
(et si oui, comment) de remplir exactement le sac dos. Toutefois, le systme cryptographique propos par Merkle-Hellman
est loin dtre sr puisque lon connat aujourdhui des mthodes dattaque permettant de le casser quelle que soit la longueur
de la cl utilise. A ct de cela, le chiffrement RSA par exemple ne rsulte pas de la particularisation dun problme difficile.
Contrairement aux systmes prcdents, pour dchiffrer RSA il faut connatre absolument la cl de dchiffrement et il ny a
pas dautre moyen (ce qui faisait en partie la faiblesse des systmes prcdents, ce quil tait tout fait possible de casser le
chiffre sans chercher dterminer cette cl simplement en essayant de rsoudre le problme gnral). Signalons quand mme
que laffirmation prcdente est en ralit une conjecture mais qui semble convaincre tout le monde. Concrtement, la cl de
dchiffrement se compose de deux nombres premiers alatoires dune soixantaine de chiffres et la cl de chiffrement nest
autre que le produit de ces deux nombres. Ainsi la scurit de RSA repose sur la difficult pratique que lon a factoriser un
nombre de plus de cent cinquante chiffres (voir Annexe 8). En conclusion, lexprience semble montrer que cette seconde
approche conduit des systmes plus srs : le chiffrement RSA est de nos jours largement rpandu.
Page 10
Cryptographie Chiffre de McEliece
ANNEXeS
1. Nombre moyen de tirages avant de trouver une matrice inversible
Fixons pour le moment un entier k strictement positif et calculons la probabilit de tomber sur une matrice inversible
lorsque lon gnre une matrice a priori quelconque coefficients dans F2.
Pour cela, dnombrons les matrices de taille (k,k) : il y en a bien sr
2
2
k
.
Pour dnombrer les matrices inversibles de taille (k,k), il faut remarquer qu chacune dentre elles correspond une et une
unique base de F2
k
. Il sagit donc de dnombrer les bases de F2
k
.
Pour que la famille ( )
k
x x ,...,
1
soit une base, il faut et il suffit que :
{ } ( )
1 1
,..., , ,..., 2 , 1


p p
x x Vect x k p
.
On a dautre part ( )
1
1 1 2
2 ,..., 2


p
p
k k
x x Vect Card et F Card .
On en dduit que le nombre de matrices inversibles est
( )

k
p
p k
1
1
2 2
.
Ainsi, la probabilit de tomber sur une matrice inversible vaut :
( )

,
_

,
_

k
p
p
k
p
p k
k
k
p
p k
k
u
1 1
1
1
1
2
1
1
2
1
1
2
2 2
2
Calculons alors le nombre moyen de tirages effectuer dfini par ( ) m u u t
k
m
m
k k
. . 1
1
1


Or aprs drivation justifie par une convergence normale sur tout compact de la fonction drive, on a le rsultat suivant :
] [
( )

,
_


,
_


1
2
1
1
1
1
1
. , 1 , 1
m m
m m
x
x
x
dx
d
x
dx
d
x m x
Donc il vient
( ) ( )
( ) ] [ ( ) 1 , 1 1
1
1 1
2

k
k
k
k
k
u a on car
u
u
u
t
Posons maintenant
( )

,
_


k
p
p
k k
u v
1
2
1
1 ln ln
. On a alors la minoration suivante :
( ) ( ) x x x . 2 ln . 2 1 ln ,
2
1
, 0
1
]
1

(par concavit de la fonction)


Do, il vient
( )
( ) ( ) 2 ln . 2
2
1
2 ln
2
2 ln . 2
,
0 1



,
_


p
p
k
p
p
k
v N k
Et finalement
4
1
4
1
,
k
k
k
t
u
donc et u N k
Le nombre moyen de tirages est donc infrieur quatre.
On notera que lon a dmontr au passage le rsultat suivant que lon rutilisera plus loin : si lors dun tirage alatoire, p
dsigne la probabilit pour que lobjet tir convienne, alors le nombre moyen de tirages avant de tomber sur un objet adquat
vaut
p
1
.
2. Construction des corps finis
On considre K un corps fini commutatif de caractristique 2.
On a alors les rgles de calcul suivantes :
( ) x x encore ou x x x K x + + 0 1 1 . ,
( ) ( )
2 2 2 2 2 2
. . 2 , , y x y y x x y x K y x + + + +
Page 11
Cryptographie Chiffre de McEliece
On en dduit, par une rcurrence immdiate, que :
( ) ( )
r r r
y x y x N r K y x
2 2 2 2
, , , + +
9. Extension algbrique
On considre dsormais un polynme P coefficients dans K et irrductible dans K.
On dfinit la relation binaire suivante :
( ) [ ] ( ) ( ) ( ) ( ) R Q divise P R Q X K R Q , ,
2
Cette relation est une relation dquivalence et on notera
[ ]
P
X K
son ensemble quotient.
Nous allons montrer que
[ ]
P
X K
peut tre muni dune structure de corps qui prolonge celle de K.
La fait que lon ait limplication suivante :
( ) ( )
( ) ( )

'

+ +

'

' '. .
' '
'
'
R Q R Q
R Q R Q
R R
Q Q
permet de dfinir laddition et la
multiplication dans
[ ]
P
X K
.
Lassociativit, la commutativit, lexistence dlments neutres et dun oppos sont des proprits immdiates. Le seul
point dlicat est linversibilit de tout lment non nul.
Soit alors
[ ]
P
X K
Q

tel que 0 Q

(ie Q nest pas un multiple de P). Comme P est irrductible, P et Q sont alors
premiers entre eux. Le thorme de Bezout permet dcrire :
( ) [ ] ( ) ( ) ( ) ( ) ( ) 1 . . / ,
2
+ X Q X V X P X U X K V U et donc 1 . Q V

Donc Q

est inversible et
[ ]

,
_

+ , , '
P
X K
K est bien un corps.
Finalement, remarquons quil sagit encore dun corps commutatif de caractristique 2 et que le sous-corps de K1 form des
polynmes constants est isomorphe K (ainsi K1 prolonge bien K).
Dautre part si K compte n lments alors K en dnombre
( ) P
n
deg
.
Enfin, notons
X


. On a videmment P divise P et donc si on considre P comme polynme coefficients dans K, il
vient P()=0 et donc [ ] ( ) ( ) ( ) X P X X P X K P
1 1
. / ' .
10. Construction
Prenons maintenant un entier strictement positif r et K=F2.
Posons alors n = 2
r
- 1 et
( ) X X X X X P
n
r

+1 2
.
Nous allons montrer par rcurrence quil existe un sur-corps K de K tel que P soit scind dans K
Lhypothse de rcurrence est la suivante :
( ) ( ) [ ] ( ) ( )

+

i
k
k i
i
i i i
X Q X P X K Q et K et K de surcorps K i HR
0
1
0
. / ,..., :
On a ( ) ( ) 1 .
n
X X X P , ce qui initialise notre rcurrence.
Si on suppose HR(i-1), pour i compris entre 1 et n, alors le polynme Q est de degr suprieur ou gal 1. On peut donc
trouver un polynme irrductible Q0 divisant Q. Le rsultat de lextension algbrique prouve alors HR(i) et donc lhrdit.
Le rsultat annonc correspond HR(n) et est donc dmontr.
Considrons maintenant lensemble suivant : { } x x K x F
n
r

+1
2
/ ' . Il sagit dun sous-corps de K de cardinal 2
r
.
En effet, on a bien
.
2

r
F
De plus, si x et y sont des lments de r
F
2
, alors, comme K est commutatif et de
caractristique 2, les rgles de calcul permettent dcrire :
( ) ( ) y x y x y x y x y x
r r r r
+ + +
2 2 2 2
et
( ) y x y x y x
r r r
. . .
2 2 2

Page 12
Cryptographie Chiffre de McEliece
Dautre part
( ) ( ) ( ) 1 . . .
2
1
2
1 2
2
1


r r
r
r
y y y y y y
do
( )
1
2
1
y y
r
.
Finalement r
F
2
est bien un sous-corps de K.
Reste montrer quil est de cardinal 2
r
. Pour cela, calculons ( ) 1 1 . 2 '
n r
X X P . On en dduit que P ne sannule
pas et donc les racines de P sont simples. Comme P est scind dans K, il en a 2
r
, ce qui revient dire que r
F
2
est bien de
cardinal 2
r
.
Finalement, on a bien construit un corps de cardinal 2
r
(qui existe donc). On peut montrer en outre que ce corps est unique
un isomorphisme prs, ce qui justifie la notation r
F
2
.
On peut remarquer enfin que lon a montr que r
F
2
est un corps de caractristique 2.
3. Trouver un lment primitif
r dsigne toujours un entier strictement positif et on a n = 2
r
1. On dsigne par r
F
2
le corps fini 2
r
lments (voir Annexe
2) et par
*
2
r
F ce corps priv de llment nul. On se propose dans un premier temps de dmontrer que ( ) ,
*
2
r
F est un groupe
cyclique.
Remarquons tout dabord que ( ) ,
*
2
r
F est un groupe fini de cardinal n.
Notons alors
d
d
p p n

...
1
1
o les pi sont des nombres premiers deux deux distincts et les i sont des entiers
strictement positifs.
Soit { } d i ,..., 2 , 1 . Posons
( ) 1
i
i
p
X X P

. On a alors
( )
1
. '

i
i i
p
i
X p X P

.
Or n est un nombre impair, car il prcde un nombre pair, donc
i
i
p

aussi.
Comme r
F
2
est de caractristique 2 (voir Annexe 2), on en dduit que
( )
1
'

i
i
p
X X P

.
Do P nadmet que 0 comme racine et donc les racines de P sont toutes simples.
Il vient alors { }
i
i
i
r
i
p
p x F x Card

1 /
*
2
. Et de mme { }
1 *
2
1 /
1



i
i
i
r
i
p
p x F x Card

.
Or on a
1
>
i i
i i
p p

do on en dduit que :

'



1
1
/
1
*
2 i
i
i
i
r
p
i
p
i
i
x
x
F x

.
Autrement dit, pour tout i, il existe un lment xi dordre
i
i
p

.
Le produit de tous les xi fournit alors un lment dordre n, ce qui prouve que ( ) ,
*
2
r
F est un groupe cyclique
Les lments qui engendrent ( ) ,
*
2
r
F sont appels les lments primitifs.
Comment dterminer un lment primitif quelconque ? Une premire ide consiste gnrer un lment alatoire et
vrifier sil est primitif. Sil ne lest pas, on recommence le procd jusqu russite. Vrifions si cet algorithme est acceptable.
Pour cela, il faut dnombrer le nombre dlments primitifs. Or si est lun dentre eux, on peut crire :
{ }
1 2 *
2
,..., , , 1

n
r
F et
) , (
) (
i n PGCD
n
ordre
i

.
Ainsi, il y a autant dlments primitifs que de nombres la fois infrieurs n et premiers avec n. La fonction indicatrice
dEuler que lon note calcule ce nombre et on a la relation suivante :
( )

,
_


d
i i
d
p
n n Alors p p n Si
d
1
1
1
1 . ...
1


On en dduit (voir Annexe 1) que le nombre moyen de tirages effectuer est donn par :
Page 13
Cryptographie Chiffre de McEliece

,
_

d
i i
n
p
t
1
1
1
1
Or un rsultat danalyse prouve que

,
_

premier p
p
1
est une srie divergente, ce qui assure que la suite (tn) prend
malheureusement des valeurs aussi grandes que lon veut lorsque n dcrit lensemble des entiers naturels. Toutefois, on peut
regarder les valeurs prises par tn lorsque r est compris entre 1 et 15 (ce qui regroupe largement toutes les applications
pratiques).
214 , 1 32767 15 705 , 1 1023 10 033 , 1 31 5
548 , 1 16383 14 183 , 1 511 9 875 , 1 15 4
000 , 1 8191 13 992 , 1 255 8 167 , 1 7 3
370 , 2 4095 12 008 , 1 127 7 500 , 1 3 2
057 , 1 2047 11 750 , 1 63 6 000 , 1 1 1
n n n
t n r t n r t n r
Les rsultats obtenus sont rassurants. Pour se convaincre pleinement, la procdure suivante crite sous Maple prouve que
pour excder le nombre de 10 tirages, il faut choisir r suprieur 343.
minr :=
proc(emax)
local n,nb,e;
e := 1;
nb := 0;
n := 1;
while e < emax do n := nextprime(n); nb := evalf(nb+log(n));
e := evalf(e/(1-1/n)) od;
floor(nb/log(2))+1
end
Il reste vrifier que tester si un lment est primitif est une opration rapide.
Supposons que lon vienne de gnrer llment alatoire . Il suffit, pour le tester, de calculer les exponentielles i
p
n

pour i allant de 1 d et de vrifier que chacun des nombres calculs est diffrent de lunit. Essayons alors de majorer d.
d est dfini par
d
d
p p n

...
1
1
donc on en dduit que
d
d
r
p p n 2 ... 2
1
> et donc 1 r d .
Notons que cette majoration est trs grossire et quen gnral d est bien plus petit que cela. Toutefois, elle permet de
conclure que le nombre de calculs effectuer est trs rduit.
Enfin, on dispose dalgorithmes puissants pour effectuer une exponentielle (voir Annexe 5) donc lalgorithme propos est
efficace.
Remarquons cependant que la dtermination de la dcomposition en facteurs premiers de n nest pas toujours facile si n est
grand, mais dans la pratique n nexcde que trs rarement 10 000.
4. Trouver P un polynme irrductible de F
2
[X]
r dsigne toujours un entier strictement positif et on a n = 2
r
1. On dsigne par r
F
2
le corps fini 2
r
lments (voir Annexe
2). Appelons un lment primitif de r
F
2
(voir Annexe 3) et considrons le polynme suivant : ( ) X X X P
r

2
. P se
dcompose en produits de polynmes irrductibles sur F2[X] de la faon suivante:
k
P P P ...
1
. Or annule P donc
( ) 0 /
i
P i et par hypothse Pi est un polynme irrductible. Montrons que Pi est un polynme de degr r.
Page 14
Cryptographie Chiffre de McEliece
Pour cela, notons ( )
i
P r deg ' et considrons
[ ]
i
P
X F
K
2
(voir Annexe 2). Alors K est un corps de cardinal 2
r
et
donc si on note encore
X


, on a

'
2
r
, ce qui scrit galement X X divise P
r
i

'
2
. Comme annule Pi, on en
dduit que

'
2
r
ou encore
1
1 2
'

, ce qui prouve que . ' r r


Dautre part, notons
{ } S S K S E
r

2
/
. Par hypothse E et on a vu que E est stable par addition et par
multiplication. On en dduit que K E , cest dire
S S K S
r

2
,
. Ceci prouve que r r ' (car sinon un lment
primitif de K ne pourrait satisfaire la condition).
On a bien dmontr le rsultat annonc.
Ainsi, on a prouv que dans F2[X], il existe des polynmes irrductibles de tout degr. Comment peut-on les dterminer ?
On pourrait l encore gnrer des polynmes jusqu lobtention dun qui convient. Pour savoir si cette mthode est
raisonnable, il faut essayer de dnombrer les polynmes irrductibles de degr r.
On peut affiner le thorme prcdent et montrer quen fait P est gal au produit de tous les polynmes irrductibles de
degr divisant r. Donc si on note (k) le nombre de polynmes irrductibles de degr k, on a lgalit suivante obtenue en
raisonnant sur les degrs :
( ) k k
m k
m
. 2

Ainsi, on en dduit que ( )


m
m m N m 2 . *, . Puis en rinjectant dans lgalit prcdente, il vient :
( ) ( ) ( )
1
2
2
1
2 . 2 . 2 . 2
+

+ + +

r
r
m
m
r m
r m
m r
r r m m r r
Donc il vient
( )
r
r
r
r
1
2
2 2
+


. Ainsi le nombre de tirages moyen est infrieur
2
1
2 1
r
r

ds que r est suprieur


3. En particulier pour r suprieur 4, le nombre de tirages reste infrieur (2r). Pour les valeurs de r infrieures 3, on peut
vrifier que ce rsultat reste vrai.
Comme les valeurs de r sont dans la pratique trs petites, la mthode propose est de ce point de vue efficace.
Il faut maintenant trouver un algorithme qui permette de tester assez rapidement si un polynme donn R est irrductible ou
non. Pour cela, on aura besoin du rsultat suivant : un polynme de degr r est irrductible si et seulement sil divise
X X
r

2
et sil est premier avec tous les
X X
q
r

2 o q est un facteur premier de r.


En effet, si R est un polynme irrductible de degr r alors on a vu quil divise
X X
r

2
.
Considrons maintenant q un facteur premier de r. Si R ntait pas premier avec
X X
q
r

2 , alors il le diviserait, mais on a


vu que tous les diviseurs de
X X
q
r

2 sont de degr infrieur


q
r
, ce qui nest pas le cas. On a ainsi la premire
implication.
Rciproquement, supposons que R soit un polynme de degr r qui divise
X X
r

2
et qui est premier avec tous les
X X
q
r

2 o q est un facteur premier de r.


Si R ntait pas irrductible, alors on pourrait trouver un polynme R0 irrductible qui diviserait R et qui serait de degr d
strictement infrieur r. R0 diviserait alors
X X
r

2
do on dduirait que d est un diviseur de r et puis un diviseur strict.
Mais alors on pourrait trouver q un facteur premier de r tel que d divise
q
r
, ce qui impliquerait que R0 divise
X X
q
r

2 ,
do la contradiction. Ainsi, on a bien dmontr le thorme.
On peut alors proposer lalgorithme suivant :
Soit R un polynme de degr r. On crit tout dabord
d
d
r r r

...
1
1
o les ri sont des nombres premiers deux deux
distincts et les i sont des entiers strictement positifs. Cette opration est relativement rapide si r nest pas trop grand.
Remarquons galement quil nest pas ncessaire de la rpter pour chaque polynme R que lon doit tester.
Page 15
Cryptographie Chiffre de McEliece
On calcule ensuite les Qi, reste de la division euclidienne de
i
r
X
2
par R. Il existe des algorithmes puissants (voir Annexe 5)
pour effectuer ces calculs et dautre part on a 1 r d (voir Annexe 3), donc relativement peu de divisions effectuer. Ainsi
cette tape est globalement rapide.
On vrifie enfin si tous les polynmes ( ) X X Q
i
sont premiers avec R (simplement en appliquant lalgorithme
dEuclide) et puis si
X X
r

2
est un diviseur de R (en calculant le reste de la division euclidienne de
r
X
2
par R). Le thorme
prcdent prouve que si cest le cas R est irrductible, sinon il ne lest pas.
En conclusion, pour des valeurs de r par trop grandes (ce qui est en gnral le cas), on peut considrer que la mthode
propose est trs acceptable.
5. Calcul explicite dans un corps fini
Soit r un entier strictement positif et le corps fini de cardinal 2
r
, r
F
2
(voir Annexe 2). Considrons dautre part un
polynme irrductible de degr r coefficients dans F2 dindtermine (voir Annexe 4). Alors r
F
2
est isomorphe
[ ]
P
K

(voir Annexe 2). Nous allons donc considrer que les lments de r
F
2
sont des polynmes rduits modulo P, laddition et la
multiplication se dfinissent alors de faon naturelle.
CHOISISSONS PAR EXEMPLE r=4 ET ( ) 1
2 3 4
+ + + + P (COMME CEST GALEMENT LE CAS DANS TOUT LE MMOIRE)
ET CONSIDRONS ( ) 1
3
+ + X ET ( ) +
2
Y .
ON PEUT ALORS CALCULER :
( ) ( ) 1
2 3
+ + + Y X
( ) ( ) ( ) [ ] P Y X
2 3 4 5
. + + +
On remarquera que pour laddition la rduction modulo P est dj faite alors que pour une multiplication, il est ncessaire
de pratiquer une division euclidienne.
11. Calcul de linverse
Supposons que lon veuille calculer linverse de X qui est non nul modulo P. Comme P est irrductible, X et P sont alors
premiers entre eux et lalgorithme dEuclide permet alors de trouver des polynmes U et V qui vrifient P.U+X.V=1. Cette
galit rduite modulo P prouve alors que V est linverse de X.
CONSIDRONS TOUJOURS LES MMES PARAMTRES ET CALCULONS LINVERSE DE LLMENT ( ) 1
3
+ X . LALGORITHME DEUCLIDE
SE PRSENTE ALORS COMME SUIT :
( )
1 1
1 1
1 1
0 1
2
2
3
2 3 4
+ +
+ +
+
+ + + +


X en t Coefficien Reste Quotient
VRIFIONS EN CALCULANT ( ) ( ) ( ) [ ] P X 1 1 1 .
2 3 4 5 2
+ + + + + + +
12. Calcul de puissances
Soit X un lment de r
F
2
et n un entier relatif. Une ide innocente pour calculer lexponentielle modulaire X
n
serait la
suivante : si n est positif, on multiplie X par lui-mme n fois, ce qui fournit le rsultat, sinon, on calcule linverse de X (par
lalgorithme dEuclide) que lon multiplie par lui-mme (-n) fois. Il est assez vident que cette mthode sera fort lente si n
atteint de trop grandes valeurs.
Si X est nul, le calcul est vite fait. On supposera donc par la suite X non nul. On sait qualors
1
1 2

r
X
. Ainsi, si on note
m le reste de la division euclidienne de n par (2
r
-1), on a
m n
X X
et donc il suffit en fait de calculer X
m
pour avoir le
rsultat. Lintrt est double. Tout dabord, bien sr, les valeurs prises par m sont relativement petites et donc le calcul pourra
Page 16
Cryptographie Chiffre de McEliece
tre acclr. Mais galement, m est par dfinition toujours positif, ainsi on a dtourn le calcul de linverse si n tait au dpart
ngatif.
Ecrivons ensuite m en base 2 :

i
i
m 2
. Le plus grand lment de est alors [ ] ( ) r m E d + 1 log
2
. On calcule
alors, par lvations au carr successives, les quantits suivantes pour i allant de 0 d :
i
X X
i
2
. Remarquons que le fait
que r
F
2
soit de caractristique 2 et que donc on ait ( )
2 2 2
y x y x + + prouve quune lvation au carr est une opration
simple effectuer. Lexponentielle cherche est alors gale

i
i
n
X X
.
Ce qui est encore plus intressant, cest que lon peut effectuer de manire simple la dcomposition en base 2 en mme
temps que le calcul. En effet 0 est un lment de veut simplement dire que m est impair, ce qui suggre lalgorithme suivant :
1. On affecte m la valeur du reste de la division euclidienne de n par (2
r
-1).
2. On affecte la valeur 1 la variable RES (pour rsultat).
3. On pose X0=X et i=0.
4. Si m est impair, on substitue RES le produit de RES par Xi.
5. On calcule Xi+1=Xi
2
.
6. On ajoute 1 i.
7. On enlve m le dernier chiffre de son criture binaire. Autrement dit, on remplace m par la partie entire de sa moiti.
8. Si m est non nul, on reprend ltape 4. Sinon, RES renferme le rsultat de lopration demande
On obtient sous Maple, la procdure suivante o MULT est une procdure externe qui effectue la multiplication des
polynmes et la rduit modulo P.
puis := proc(p,n)
local res,c,m;
res := 1;
c := p;
m := mods(n,15);
while 0 < m do
if m mod 2 = 1 then res := mult(res,c) fi;
m := floor(1/2*m); c := mult(c,c)
od;
res
end
Pour effectuer cette mthode, il faut donc faire une division euclidienne, moins de r lvations au carr et moins de r
multiplications. Il sagit donc dune mthode rapide.
On remarquera finalement que pour (n=-1), on obtient ici une autre mthode du calcul de linverse plus rapide si r est grand
mais moins efficace si r est petit.
CALCULONS LINVERSE DE LLMENT ( ) 1
3
+ X AVEC CETTE NOUVELLE MTHODE.
COMME r=4, IL SAGIT EN FAIT DE CALCULER X
14
, ON CRIT ALORS 8 4 2 14 + + . ON CALCULE ALORS :
( ) 1
3
0
+ X
( ) 1 1
6
1
+ + X
( ) 1
2
2
+ X
( ) + + +
2 3 4
3
1 X
ON TROUVE ENFIN : 1 . .
2 3 4 6
3 2 1
1
+ + + + +

X X X X .
ON RETROUVE BIEN LE MME RSULTAT.
6. Complexit de la mthode du pivot de Gauss
Comme les oprations vont seffectuer dans le corps F2, nous allons considrer que laddition, la multiplication et la
comparaison des nombres sont aussi rapides les unes que les autres. Ainsi, on ne dnombrera que le nombre doprations
effectuer pour excuter la mthode du pivot de Gauss.
Donnons-nous une matrice carre M de taille n, inversible ou non.
Page 17
Cryptographie Chiffre de McEliece
On cherche tout dabord construire une suite (Pi) telle que lon ait chaque tape : ( )
i i i
N M P o

'

M N M et inversible est N
m alors l k et i l si
i i i
l k l k
1
, ,
.
, 1
On part de la position initiale ( )
n
I M P
0
.
Voyons comment on peut passer de Pi-1 Pi pour i suprieur ou gal 1.
Remarquons tout dabord que permuter deux colonnes dune matrice A ou remplacer une colonne de A par la somme
delle-mme et dune autre peut tre fait au moyen de la multiplication droite de A par une matrice inversible. Ainsi, on
pourra se contenter de faire des oprations sur les colonnes.
Ceci dit, posons
( )
l k i
m M
, 1

et appelons
l
C les colonnes de
1 i
M . Lalgorithme est alors le suivant :
On cherche un entier l0 (par la mthode exhaustive) vrifiant :

'


1
0
,
0
l i
m
n l i
.
Si aucun entier ne convient, alors les i premires lignes de
1 i
M sont lies et donc
1 i
M nest pas inversible, ce qui
prouve, par l mme que M nest pas inversible. Ainsi, on a termin le test.
Si on a trouv un entier convenable, on permute les colonnes
i
C et
0
l
C
et on obtient ainsi une nouvelle matrice
( )
l k
m M
,
' '
. Ensuite, pour l variant de (i+1) n, on remplace la colonne
l
C par
l i
C C + si le coefficient
l i
m
,
'
est non nul
de sorte que lon obtienne finalement une matrice
i
M satisfaisant la condition souhaite.
On a vu que toutes ces oprations peuvent se rsumer par lcriture suivante : S M M
i i
.
1
o S est une matrice
inversible. Dfinissons alors
i
N par S N N
i i
.
1
(ce qui revient effectuer les mmes oprations sur
1 i
N que celles que
lon a effectues sur
1 i
M ). Alors on a bien
i
N inversible, comme produit de deux matrices inversibles et la relation :
( ) ( ) M N M S N S M N M
i i i i i i



1
1 1
1
1 1
1
. . . . .
Si on est arriv construire Pn, alors il est clair que M est une matrice inversible (car Mn est inversible). Ainsi, on est ce
moment capable de rpondre la question de linversibilit de M.
Comptons alors le nombre doprations maximum que lon a du effectuer. Pour la i tape, on a au plus :
( ) 1 . 2 + i n comparaisons
n . 6 oprations dues la permutation des deux colonnes
( ) i n n . . 2 additions
Ainsi le nombre doprations est certainement major par ( ) ( ) [ ] ( )

+ + +
1
0
3 2
4 . 2 . 2 2 . 8 . 2
n
i
n i n n n
Si on veut de plus calculer linverse de M dans le cas o il sagit dune matrice inversible, on limine alors successivement
les 1 superflus de la matrice
n
M qui ne se trouvent pas sur la diagonale.
Pour cela, on procde encore par rcurrence. Il sagit de construire cette fois une suite ( )
i i i
N M Q ' ' qui vrifierait

'

,
_

M N M et inversible est N
frieure in re triangulai est A o
I
A
M
i i i
i
i
i
i
1
' . ' '
0
'
Le couple ( )
n n
N M Q
1
qui convient permet dinitialiser la rcurrence.
Supposons que lon ait construit le couple
i
Q . Alors, en remplaant successivement la (n-i) colonne par la somme des (n-
i) et k colonne si le coefficient
( )
i n k i
M
,
'
est gal 1, pour k variant de (n-i+1) n, on obtient la matrice
1
'
+ i
M . De mme
que prcdemment, on construit la matrice
1
'
+ i
N et on a ainsi lhrdit de la rcurrence.
Finalement la matrice
n
M' nous donne linverse de M.
Comptons le nombre doprations que demande cet algorithme. Pour ltape i, il faut au plus :
Page 18
Cryptographie Chiffre de McEliece
i comparaisons
i n. . 2 additions
Ainsi le nombre doprations pour cette tape est infrieur ( )
3
1
1
1 . 2 . n n i
n
i
+

.
Si on regroupe les deux rsultats, on obtient le rsultat suivant : le nombre doprations ncessaires pour tester si une
matrice est inversible et le cas chant pour linverser est infrieur ( )
3
2 . 2 + n
.
On remarque alors que lalgorithme du pivot de Gauss est raisonnablement rapide mme lorsque n prend des valeurs
grandes.
Pour se convaincre de la rapidit de cet algorithme, valuons le nombre doprations quil est ncessaire de faire pour
multiplier deux matrices carres de taille n. Pour le calcul de chaque coefficient, il faut faire n multiplications et (n-1)
additions. Comme il y a n
2
coefficients calculer, le nombre cherch vaut ( ) 1 . 2 .
2
n n qui est de lordre de grandeur du
nombre calcul pour linversion.
Ainsi lorsque les coefficients sont dans F2, inverser une matrice est presque aussi rapide que, par exemple, llever au
carr ! Signalons toutefois que le pivot de Gauss demande un effort de gestion assez important, ce qui ralentit quelque peu
le calcul.
7. Dtermination de k colonnes indpendantes
Donnons-nous des entiers n et k vrifiant n k 1 et une matrice M de taille (k,n) de rang maximal. Notons Ci les
colonnes de M. Le problme est de trouver ( )
k
,...,
1
tel que la matrice
( )
k
C C

...
1
soit inversible. Ce qui revient en
fait chercher deux matrices G et H telles que G soit une matrice inversible de taille k et que la juxtaposition de G et de H
fournisse une permutation des colonnes de M.
Nous allons prsenter un algorithme permettant darriver au rsultat. Nous insistons sur le fait quil sinspire grandement de
lalgorithme du pivot de Gauss prsent prcdemment. Cest pourquoi nous lappellerons algorithme du pivot de Gauss
tendu.
On se donne tout dabord une permutation de lensemble { } n ,..., 1 , que lon peut facilement gnrer comme nous
lavons dcrit dans le mmoire.
Nous allons alors construire G et H.
Pour cela, on construit par rcurrence une suite
( )
p p p p p
H S A G u , , ,
vrifiant les conditions suivantes :
( )
( )
( )
( ) ( )
( )
( )
( ) ( )
( )

'

>

prs colonnes des n permutatio une C C H G


tes indpendan sont colonnes ses et imal rang de est G
C C rang G rang
A G S
A alors m l Si
F GL S
p p p
p
p p
p p p
m l
p
k p


...
max
...
.
0 ,
1
1
,
2
On initialise la rcurrence en posant ( ) ( ) ( ) ( ) , , ,
0 k
I u (qui convient).
Examinons maintenant lhrdit de la rcurrence. Supposons que lon ait russi construire up ( ) 1 1 n p et
considrons alors la matrice
( ) 1
.
+

p p
C S C

(que lon calcule dans la pratique).
Appelons L le nombre de colonnes de Gp.
On cherche alors par la mthode exhaustive un entier l0 vrifiant :
( )

'

+
1
1
0
0
l
C
k l L
.
Deux cas se prsentent alors. Si lon na trouv aucun entier convenable, alors la matrice
( ) C A
p
nest pas de rang
maximal. Linversibilit de Sp, lgalit
( )
( )
( )
1
.
+

p p p p
C G S C A

et le fait que Gp soit de rang maximal prouvent que
Page 19
Cryptographie Chiffre de McEliece
( ) ( )
( ) ( )
( ) ( )
( )
p p p
C C rang G rang C C rang

... ...
1 1 1

+
. Ainsi lon peut dfinir up+1 de la faon suivante :
( )
( )
1 1 1 1 1
; ; ;
+ + + + +

p p p p p p p p p
C H H S S A A G G

.
Si lon est parvenu trouver un l0 convenable, posons
( ) C A A
p

et permutons dans A les lignes l0 et (L+1) pour


obtenir la matrice A. On limine ensuite les 1 superflus de la dernire colonne en additionnant, si besoin est, avec la ligne
(L+1). Autrement dit, pour tout 1 + > L l , on effectue la substitution
1 +
+
L l l
L L L si et seulement si
( ) 1 '
1 ,

+ L l
A
. On
obtient finalement la matrice
1 + p
A
.
On a vu que mathmatiquement cela peut scrire
A S A
p
.
1

+
(o S est une matrice inversible). Dfinissons alors
( )
( )
p p p p p p p
H H S S S C G G
+ + + + 1 1 1 1
; . ;

. Le calcul du produit de matrices seffectue en oprant sur Sp les


mmes transformations que sur A. On vrifie successivement que toutes les conditions imposes sont vrifies.
Dans tous les cas, on a bien construit le terme suivant.
Intressons-nous maintenant au terme un. Gn est alors une matrice indpendante de rang k. Comme elle compte k
colonnes, il sagit dune matrice carre inversible. La dernire condition assure que la juxtaposition des matrices Gn et Hn
fournit bien une permutation des colonnes de M. Finalement, on a trouv le rsultat recherch.
On remarquera que le choix de la permutation initiale permet de rendre le caractre alatoire de lalgorithme. Autrement
dit, deux excutions de cet algorithme ne fournissent pas a priori le mme rsultat, ce qui est invitable pour lapproche
probabiliste.
Essayons maintenant dvaluer le temps dexcution de cet algorithme, en comptant le nombre doprations quil effectue
au maximum.
Pour ltape p on dnombre :
( ) 1 . 2 . k k oprations pour le calcul de
( ) 1
.
+ p p
C S

k L k comparaisons
( ) k L . 6 1 . 6 + oprations dues la permutation des deux colonnes
( )
2
. 2 1 . . 2 k L k k additions
k oprations pour juxtaposer les matrices
Ainsi le nombre doprations total reste infrieur ( ) 2 . . . 4 + k k n , ce qui reste encore relativement rapide. On pourra
retenir que, pour des grandes valeurs de k et de n, ce nombre est de lordre de grandeur de
2
. . 4 k n
.
Si lon veut de plus calculer linverse de G, on peut remarquer que lalgorithme prsente ici permet de commencer
directement la deuxime tape lors de lexcution du pivot de Gauss puisquil fournit le couple ( )
n
t
n
t
S A Q
1
qui
permet dinitialiser la rcurrence (voir Annexe 6) qui fournira la transpose de linverse recherch. Remarquons que nous
avons transpos toutes les matrices pour rester cohrent mais dans la pratique, il nest nullement ncessaire de la faire.
Ainsi lopration dinversion demande un nombre doprations infrieur
3
k
.
Finalement, trouver k colonnes indpendantes et inverser la matrice obtenue en juxtaposant celles-ci est une opration
rapide qui demande environ ( ) k n k + . 4 .
2
oprations.
Lalgorithme suivant programm sous Maple renvoie les matrice G et H mais dans un souci de simplicit, nous navons
pas prsent linversion de la matrice G.
indep := proc(m)
local lst,chx,i,g,s,h,v,L,tst,j,v0,k,n;
lst := matrix([[seq(i,i = 1 .. n)]]);
s := array(identity,1 .. k,1 .. k);
L := 0; k:=rowdim(m); n:=coldim(m);
g := matrix([seq([0],i = 1 .. k)]);
h := matrix([seq([0],i = 1 .. k)]);
for i from 0 to n-1 do
chx := (rand() mod (n-i))+1;
v0 := convert(col(m,lst[1,chx]),matrix);
v := z2(s &* v0);
Page 20
Cryptographie Chiffre de McEliece
tst := false;
for j from L+1 to k while not tst do
tst := evalb(v[j,1] = 1) od;
if tst then
s := swaprow(s,L+1,j-1);
v := swaprow(v,L+1,j-1);
for j from L+2 to k do
if v[j,1] = 1 then s := addrow(s,L+1,j) fi od;
g := concat(g,v0);
L := L+1
else h := concat(h,v0)
fi;
lst[1,chx] := lst[1,n-i]
od;
g := delcols(g,1 .. 1); h := delcols(h,1 .. 1);
[evalm(g),evalm(h)]
end
Cette procdure fonctionne aprs avoir charg le package LINALG.
8. Primalit et factorisation
Ces deux problmes apparemment trs proches sont tous deux prsents dans le systme de chiffrement RSA. Toutefois, la
scurit de ce dernier repose sur la difficult pratique de factoriser de grands nombres entiers et pourtant, il est ncessaire pour
lutiliser de gnrer de grands nombres premiers. Il semble y avoir l un paradoxe mais en ralit on peut trouver des
algorithmes efficaces qui permettent de sassurer quun nombre est compos sans dterminer le moindre diviseur strict.
Ces algorithmes sont bass sur les proprits remarquables des nombres premiers. Nous allons en prsenter un lmentaire
mais dj trs efficace.
Donnons-nous un nombre n impair et suprieur ou gal 9 (ce qui est loin d'tre restrictif) et crivons n sous la forme
r n
s
. 2 1
(o r est un nombre impair).
Dfinissons alors la proposition suivante (pour a compris entre 1 et n-1) :
[ ] ( ) { } [ ] ( ) n a s i ou n a P
r r
a
i
1 / 1 ..., , 1 , 0 1 :
2

On a alors le rsultat suivant : si n est un nombre premier, alors pour tout a compris entre 1 et n-1, la proposition Pa est
vraie.
En effet, supposons n premier et impair. Par hypothse le nombre a est non nul modulo n. La structure de corps de
Z n
Z
.
permet alors daffirmer que :
[ ] n a a
r n
s
1
2 1

Si l'on suppose en outre que


{ } [ ] n a s i
r
i
1 , 1 ..., , 1 , 0
2

, on en dduit par une rcurrence descendante et en
utilisant toujours la structure de corps que [ ] n a
r
1 .
Ce qui correspond bien au rsultat annonc.
Intressons nous la contrapose : elle nous dit que si on parvient trouver un entier a qui mette en dfaut la proposition
prcdente, alors n est compos. Cest ce que allons rechercher.
Pratiquement, on engendre a un entier alatoire compris entre 1 et n-1, et on vrifie ou on infirme la proposition Pa. Dans
un des deux cas, on peut conclure comme le montre l'exemple ci-dessous. On notera quon connat des algorithmes rapides
pour calculer des telles exponentielles.
PAR EXEMPLE PRENONS n = 42 115 916 893. DONC r n
s
. 2 223 899 052 1 . 2 1
2

ON CALCULE ALORS :
[ ] n
r
1 388 448 83 1 24 2
[ ] n
r
1 052 296 1471 16 2
. 2

ON EN DDUIT QUE n EST COMPOS MAIS ON NA AUCUN RENSEIGNEMENT SUR SES DIVISEURS.
Si l'on na pas russi infirmer la proposition Pa, on recommence avec un autre nombre alatoire a et ainsi de suite.
Page 21
Cryptographie Chiffre de McEliece
Nous voyons que cet algorithme a lnorme inconvnient de ne pas pouvoir assurer que n est premier sil lest. Toutefois, il
est lgitime de penser quau bout dune cinquantaine dessais infructueux (cest dire qui nont pas russi mettre en dfaut la
primalit de n), le nombre n que lon teste a de fortes chances dtre rellement premier. Vrifions ce point.
Cette tude sappuie principalement sur le thorme de Rabin et que nous nonons et admettons ici. Si n est un nombre
impair compos et suprieur ou gal 9, alors il existe au plus
4
1 n
entiers qui satisfont la proposition Pa et en ralit
cette majoration est souvent trs grossire.
Pour faire un calcul rigoureux, il est alors ncessaire de dfinir les vnements suivants :
C : Le nombre n est compos.
Tk : La proposition est vraie pour k valeurs de l'entier a.
Le thorme de Rabin permet alors dcrire en supposant que les k tests soient indpendants (ce qui nest en ralit pas le
cas) : ( )
k
k
C T P

,
_

4
1
. La probabilit qui nous intresse, cest ( )
k
T C P .
Pour la dterminer, il nous faut auparavant calculer P(C). Un rsultat darithmtique permet dapporter une rponse
satisfaisante. Celui-ci dit que si N est grand, alors le nombre de nombres premiers infrieurs N est de lordre de
N
N
ln
.
Fixons nous donc une borne suprieure N aux nombres alatoires que lon gnre. On a ainsi le rsultat suivant :
( )
N
C P
ln
1
1
. Les thormes classiques de probabilit permettent dcrire :
( ) ( ) ( ) ( ) ( ) ( )
N N
C T P C P C T P C P C T P T P
k k k k
ln
1
ln
1
1 . . . +

,
_

+
et ( ) ( ) ( ) ( )

,
_


N
C T P C P C T P C T P
k k k
ln
1
1 . .
Do on trouve aisment la probabilit recherche :
( )
( )
( ) ( ) ( ) N
N
N C T P T P
C T P
T C P
k
k k
k
k
ln 1 4
1 ln
1 ln . 1
1
1
+

Pratiquement pour le systme RSA, on souhaite obtenir des nombres premiers dune soixantaine de chiffres, ce qui
correspond peu prs ( ) 140 1 ln N . Ainsi aprs cinquante essais infructueux, la probabilit que le nombre test soit
compos est infrieure
28
10

, ce qui est vraiment ridicule . A titre de comparaison, on a autant de chance davoir laisser
passer miraculeusement un nombre compos que de gagner au Loto quatre fois daffile.
Pratiquement, pour gnrer de grands nombres premiers alatoires dune centaines de chiffres, on gnre des nombres
impairs dune centaine de chiffres et on teste leur primalit par lalgorithme prcdent. Ltude ci-dessus prouve alors que le
nombre moyen de tirages effectuer est de lordre de 115, et donc il sagit ici dune mthode rapide et relativement sre.
La factorisation, elle, est beaucoup plus complique. En effet, il sagit de trouver des diviseurs stricts sans se contenter de
dire seulement quils existent. Bien sr, on connat des mthodes plus labores que la recherche exhaustive qui consisterait
tester tous les ventuels diviseurs jusqu en trouver un. Ces algorithmes sont bass sur des thories assez complexes comme
par exemple l'tude des courbes elliptiques mais ont des temps d'excution qui croissent rapidement avec la taille du nombre
tester et qui utilisent des mthodes probabilistes certes plus rapides mais moins sres (c'est--dire que l'on est pas sr a priori
de parvenir un rsultat). En effet, le nombre le plus grand factoris ce jour ne compte pas plus de 129 chiffres et il a fallu de
nombreux ordinateurs travaillant nuit et jour pour arriver ce rsultat.
9. Quelques procdures crites sous MAPLE
Toutes ces procdures fonctionnent aprs avoir charg le package LINALG.
Procdure 1 : Gnration dune matrice inversible alatoire et de son inverse
has2 := proc() rand() mod 2 end
Page 22
Cryptographie Chiffre de McEliece
findinv := proc(k)
local dt;
global s,invs;
dt := 0;
while dt mod 2 = 0 do s := randmatrix(k,k,entries = has2);
dt := det(s) od;
invs := inverse(s)*dt;
invs := z2(invs);
[evalm(s),evalm(invs)]
end
On notera que cette procdure fait appel la sous-procdure Z2 qui permet de rester avec des coefficients dans F2.
Procdure 2 : Gnration dune matrice de permutation et de son inverse
perm := proc(n)
local lst,chx,i,j,r;
global pm,invpm;
lst := matrix([[seq(i,i = 1 .. n)]]);
pm := matrix([seq([seq(0,i = 1 .. n)],j = 1 .. n)]);
for r from 0 to n-1 do
chx := (rand() mod (n-r))+1;
pm[r+1,lst[1,chx]] := 1; lst[1,chx] := lst[1,n-r]
od;
invpm := transpose(pm);
[evalm(pm),evalm(invpm)]
end
Procdure 3 : Gnration dune matrice sympathique et du couple (n,k)
gencode :=
proc(err,r)
local a2,i,j,cf,i1,j1;
global grp,alpha,a,n,k,t,ainv,g;
t := err;
readlib(GF);
grp := GF(2,r); (Cette opration construit le corps fini de cardinal 2
r
)
a := 1;
alpha := grp[PrimitiveElement]();
a2 := grp[`^`](alpha,2);
cf := alpha;
for i by 2 to (2*t+1) do
for j to r do a := mult(a,x+cf); cf := grp[`^`](cf,2) od;
cf := grp[`*`](cf,a2)
od;
n := 2^r-1;
k := n-degree(a,x);
ainv := diveuc(x^(n-1)+1,a)[1];
g := matrix([seq([seq(coeff(expand(a*x^j1),x,i1),i1 = 0 .. n-1)],j1 = 0 .. k-1)])
end
On notera que cette procdure fait appel la sous-procdure DIVEUC qui effectue la division euclidienne de deux
polynmes et renvoie la liste [Quotient, Reste] et la sous-procdure MULT qui multiplie deux polynmes.
Procdure 4 : Chiffrement du message MES
erreur := proc()
local lst,err,chx,i;
lst := matrix([[seq(i,i = 1 .. n)]]);
err := matrix([[seq(0,i = 1 .. n)]]);
for i from 0 to t-1 do
Page 23
Cryptographie Chiffre de McEliece
chx := (rand() mod (n-i))+1;
err[1,lst[1,chx]] := 1; lst[1,chx] := lst[1,n-i]
od;
evalm(err)
end
codage := proc(mes)
local cod;
cod := z2(mes &* gp + erreur()); evalm(cod)
end
Procdure 5 : Dchiffrement du message MES
decodage := proc(mes)
local xs,i,msg,yp;
yp := z2(mes &* invpm);
xs := finderr(sum(yp[1,i+1]*x^i,i = 0 .. n-1));
xs := matrix([[seq(coeff(xs,x,i),i = 0 .. k-1)]]);
msg := z2(xs &* invs);
evalm(msg)
end
finderr :=
proc(p)
local val,i,s,err,dec;
val := alpha;
s := 0;
for i from 0 to 2*t-1 do
s := s+calcul(p,val)*x^i; val := grp[`*`](val,alpha) od;
s := algo(s);
val := alpha;
err := 0;
dec := p;
for i to n while err < degree(s,x) do
if calcul(s,val) = 0 then dec := moins(dec,x^(n-i));
err := err+1 fi;
val := grp[`*`](val,alpha)
od;
multn(dec,ainv)
end
On notera que cette procdure fait appel la sous-procdure ALGO qui met en uvre lalgorithme dEuclide et renvoie le
polynme Bi dfini prcdemment et la sous-procdure MULTN qui multiplie deux polynmes modulo X
n
.
10. Dmonstration des thormes
13. Thorme i)
( ) Si (x1,e1) et (x2,e2) sont deux couples qui vrifient (S), alors on a lgalit suivante :
2 2 1 1
' e x e x x + + et donc F x x e e
2 1 1 2
Mais on a galement ( ) ( ) ( ) d e w e w e e w < +
2 1 1 2
. Do on en dduit que 0
1 2
e e .
Ainsi on a bien dmontr lunicit voulue.
( ) Pour la rciproque, raisonnons par labsurde. Si ( ) t x w F x . 2 /
0 0
, alors on pourrait crire :
( )
( )

'

+
t x w
t x w
avec x x x
2
1
2 1 0
.
Ce qui fournit deux dcompositions distinctes et convenables pour le vecteur x2 (x2=x0+x1 et x2=0+x2), ce qui est
suppos faux.
Page 24
Cryptographie Chiffre de McEliece
14. Thorme ii)
Remarquons tout dabord que la structure de
t
permet de dfinir lapplication

,
_


x x
t t
. 2
:

. Cette application est


clairement injective et le fait que
t
soit un ensemble fini prouve quelle est bijective. On en dduit lgalit suivante en
appliquant galement les rgles de calcul (voir Annexe 2) :
( ) ( ) ( ) ( ) ( ) [ ]
2
2
. 2 2 2 2
X A X X X X A
t
i
i
i
i
i
i
t
t t t

,
_




.
Ecrivons maintenant ( )

d
i
i
i t
X X A
1
. . La relation prcdente devient alors, toujours en appliquant les mmes rgles
de calcul :
{ }
2
2
1
. 2 2
1
. 2
, ,..., 1 . . F soit d i donc et X X
i i i
d
i
i
i
d
i
i
i




Autrement dit, At est un polynme coefficient dans F2.
15. Thorme iii)
On peut montrer facilement laide dune rcurrence que :
( ) ( ) ( )
1 1 1
deg . 2 deg 1 . .
+ +

i i
i
i i i i
R t B et B A B A
On peut alors en dduire que Ai et Bi sont premiers entre eux et que ( ) t B
i
deg .
Posons alors
( ) ( )


1
. 1
j
r
Z Z
j
et remarquons que :
{ } ( ) ( ) ( ) ( )
i i i i
E E R R t i ' ' ' , . 2 ,..., 1 +
Calculons alors ( ) ( ) ( )

,
_

,
_


1
. 2
. . 2
. 2
1 1
1
. 2
1
1
. 1
. 1
. . . . '
j
r
t
r t
r
t
m j
r
m
r
t
m
m m
Z
Z
Z Z R Z S
j
j
j j j
.
Posons alors
( ) ( ) ( )

,
_


k j
j k
k
r
r
r
j
r
r
Z Z
Z
Z
k
j
k
j
j
1 1 1 1
. 1 . . 1 .
. 1
1
.
de sorte que lon ait :
( ) ( ) ( ) [ ]
t
Z Z Z Z S
. 2
. . On remarquera que ( ) t < 1 deg et ( ) t deg
Dautre part lgalit fournie par lalgorithme dEuclide permet dcrire : ( ) ( ) ( ) [ ]
t
i i
Z Z R Z B Z S
. 2
. .
Do, il vient ( ) ( ) ( ) ( ) ( ) ( ) ( ) [ ]
t
i i i
Z Z Z R Z B Z Z S Z B Z
. 2
. . . . .
Mais on a dautre part ( ) t R B
i i
. 2 . . deg < do on trouve . .
i i
R B .
est scind et ses racines sont les
j
r

et on a
( ) ( ) 0 1 .
1



j k
k
r r r r
j k j j


. Ceci prouve que les polynmes et
sont premiers entre eux et donc le thorme de Gauss permet de prouver lexistence dun polynme Q vrifiant

'

.
.
Q R
Q B
i
i
. Lgalit fournie par lalgorithme dEuclide scrit alors :
( ) ( ) ( ) ( ) ( ) ( ) Z S Z Z Q Z Z A Z Z Q
t
i
. . . .
. 2
+
On en dduit que Q est un diviseur commun Ai et Bi. Mais on a vu que ces polynmes sont premiers entre eux. Ainsi, Q
est un polynme constant non nul (car Ri ne peut tre nul). Donc les racines de Bi sont exactement celles de , ce qui dmontre
le rsultat voulu.
16. Thorme iv)
On vrifie que lon a bien

G 0
et
E G

. Si maintenant x et y sont des lments de

G
, alors :
( ) ( ) ( )

+ + + G y x donc g y g x g y x G g 0 ,
Page 25
Cryptographie Chiffre de McEliece
Ceci prouve que

G
est un sous-espace vectoriel de E. (On remarquera quil nest pas utile de prendre un scalaire, comme
lhabitude, qui ne pourrait valoir ici que 0 ou 1).
Notons d la dimension de G et considrons dsormais ( )
d G
e e B ,...,
1
une base de G. Dfinissons alors :
{ } ( ) ( ) ( ) ( ) x e x e x u et e x x e d i
d i i
* *
1
*
,..., : : , ,..., 1
Toutes ces applications sont linaires et on a immdiatement u Ker G

.
Dautre part si 1,, d sont des scalaires vrifiant

d
i
i i
e
1
*
0 .
, alors
0 . ,
1

,
_

d
i
i i
e x E x
do on dduit que

d
i
i i
e
1
0 . puis que 0 ...
1

d
. Autrement dit, la famille ( )
* *
1
,...,
d
e e est libre dans E
*
. Un thorme de cours
prouve alors de ( ) d G codim u Ker codim

, ce quil fallait dmontrer.
Dautre part, si F x , alors y x F y

, do on trouve
( )

F x
. Lgalit des dimensions des deux sous-
espaces vectoriels prouve finalement que
( )

F F
.
11. La loi franaise sur la cryptographie
Il est intuitivement vident que la sret dun chiffre repose principalement sur la longueur de la cl que lon utilise. Bien
sr, cela dpend galement du systme cryptographique. On value en gnral la scurit dun systme cryptographique en
calculant la taille minimale dune cl qui le rend calculatoirement inviolable. Par cette dfinition, nous voyons que le systme
de chiffrement de McEliece est peu sr.
Le tableau suivant rpertorie les systmes cryptographiques prsents dans ce mmoire et la taille minimale dune cl le
rendant sr.
500
000 100
000 1
) (
RSA
Hellman Merkle
McEliece
Vigenre
bits en nimale mi Taille Systme

Le symbole infini signifie que lon connat des algorithmes rapides pour casser le chiffre quelle que soit la longueur de
la cl.
Nous constatons aisment quune cl de quarante bits apparat comme ridicule. Ctait pourtant la limite fixe par la loi
franaise jusqu lanne dernire. Il y a bien sr des raisons politiques tout cela mais nous nallons pas nous attarder l-
dessus.
Voyons plutt ce que reprsentent quarante bits.
Pour le chiffre de Vigenre, il sagit dun mot de cinq lettres. Un systme dattaque statistique base sur une tude de la
frquence des lettres dans un langage donn permet de retrouver la cl en un temps record dautant plus rapide que le message
chiffrer est long.
Pour le systme de McEliece, signalons simplement que lexemple ridicule qui est prsent dans ce mmoire utilise dj
une cl de 128 bits.
Pour le chiffrement de Merkle-Hellmann, il sagit au maximum dune suite de cinq nombres infrieurs 250, et donc
retrouver le message original par une tude exhaustive est encore une opration plus rapide que celle du dchiffrement.
Pour le chiffrement RSA, quarante bits correspondent un modulus denviron douze chiffres, un nombre plutt simple
factoriser mme avec une vulgaire calculatrice programmable.
Signalons enfin que la mme restriction est en vigueur aux Etats-Unis sur le rseau Internet. Outre par cette pratique qui
nassure plus aucune confidentialit tous les particuliers et toutes les socits utilisant le rseau, la socit amricaine RSA
Data Security a organis un concours afin de dnoncer ce scandale . Une offre de cinquante mille dollars tait faite ceux
qui seraient capables de dcrypter des messages chiffrs avec des cls allant de 40 256 bits. La rponse ne sest pas fait
attendre : trois heures et demi plus tard, le premier chiffre utilisant une cl de quarante bits a t cass, il disait : Voil
pourquoi vous devez utiliser une clef plus longue .
Page 26
Cryptographie Chiffre de McEliece
BIBLIOGRAPHIE
Douglas Stinson, Cryptographie Thorie et Pratique, pages 1 35
Douglas Stinson, Cryptographie Thorie et Pratique, pages 101 111
Douglas Stinson, Cryptographie Thorie et Pratique, pages 132 137
Douglas Stinson, Cryptographie Thorie et Pratique, pages 170 178
Andr Warusfel, Structures algbriques finies, pages 190 202
Michel Demazure, Cours dalgbre, pages 47 51
Michel Demazure, Cours dalgbre, pages 60 64
Michel Demazure, Cours dalgbre, pages 89 92
Michel Demazure, Cours dalgbre, pages 195 246
Science&Vie, Juin 1997, La clef du secret, page 180
Cours de M. Bruno Martin, professeur lESSI, Complexit & Thorie des codes
Page 27