Calcul de racines carrées dans les corps nis 0. Introduction

publicité
Préparation à l'agrégation 2007/2008
Cours d'Algèbre et Calcul Formel
Mots clés : Congruences. Corps nis.
Le jury n'exige pas une compréhension exhaustive du texte. Vous êtes laissé(e) libre d'organiser votre discussion comme vous l'entendez. Il vous est conseillé de mettre en lumière vos connaissances à partir du l
conducteur constitué par le texte. Le jury demande que la discussion soit accompagnée d'exemples traités sur
ordinateur. Il est souhaitable que vous organisiez votre présentation comme si le jury n'avait pas connaissance
du texte. Le jury aura néanmoins le texte sous les yeux pendant votre exposé.
Calcul de racines carrées dans les corps nis
0. Introduction : Le crypto-système de Rabin
Pour envoyer le message m à Alice, Bob utilise la clé publique d'Alice ; cette clé est un nombre, noté KPA ,
produit de deux grands nombres premiers p et q seulement connus d'Alice. Bob envoie à Alice le nombre
x = m2 modulo KPA . Celle-ci calcule les racines carrées du nombre x modulo p et modulo q et reconstitue
le message m.
Un tiers qui récupère le message x ne doit pas pouvoir le décrypter sans la connaissance de p et q : on
montre que le calcul des racines carrées modulo KPA est aussi dicile que le calcul de la factorisation
KPA = pq . En eet, si on sait calculer les racines carrées de x modulo KPA , soient ±u, ±v , alors KPA divise
u2 − v 2 = (u − v)(u + v), ce qui fournit une factorisation non triviale de KPA . La sécurité du système repose
donc sur la diculté de la factorisation.
Dans ce crypto-système, il est donc nécessaire qu'Alice dispose d'une méthode able pour la détermination
de la racine carrée de x modulo un nombre premier.
Nous allons présenter diérentes méthodes pour calculer les racines carrées dans un corps nis.
1. Racines carrées : les cas faciles.
Dans le cas où q est une puissance de 2 (q = 2m ), tous les éléments de Fq sont des carrés. Si a est un élément
m−1
de F∗q , son unique racine carrée est une puissance de a, plus précisément a2 . Le calcul de cette racine
carrée est alors O(log2 (q)3 ).
Dans le cas où q est congru à 3 modulo 4, si a est un élément de F∗2
q , une de ses racines carrées est aussi une
puissance de a, précisément a(q+1)/4 . Le calcul de cette racine carrée est alors O(log2 (q)3 ).
2. Algorithme de Tonelli.
On décompose q − 1 (q impair) sous la forme 2s t, avec t impair.
Lemme 1 il existe un unique sous-groupe H d' ordre t et une tour de sous-groupes :
h = G0 ⊂ G1 ⊂ · · · ⊂ Gs−1 ⊂ Gs = F∗q ,
où, pour tout i dans {0, ..., s − 1}, Gi+1 /Gi est un groupe d'ordre 2.
Lemme 2 Soit g est un élément de F∗q qui n' est pas un carré dans F∗q . Alors, il existe un entier e ≤ s et un
élément h de H tels que a = g e h.
C. Picaronny
1
E.N.S. de Cachan
Préparation à l'agrégation 2007/2008
Cours d'Algèbre et Calcul Formel
La détermination de e et de h va permettre de calculer une racine carrée de a si possible.
1. On calcule h.
2. On calcule une racine carrée de h, soit u.
3. On calcule e; a est un carré dans F∗q si et seulement si e est pair.
4. Dans ce cas, ug e/2 est une racine carrée de a.
On peut déterminer g en eectuant un tirage au hasard dans F∗q ; la probabilité d'obtenir ainsi un non
carré est alors 1/2. Si le tirage convient, l'algorithme fournit une racine carrée de a en 0(s log2 (q)3 ).
3. Algorithme de Cipolla.
On note σ le morphisme déni par σ(x) = x(q−1)/2 , pour tout x dans F∗q .
Lemme 3 Parmi les q polynômes x2 − tx + a, pout t parcourant Fq , il y en a exactement (q + 1)/2 scindés
sur Fq .
Corollaire 1 La probabilité de tirer t au hasard dans Fq tel que le polynôme x2 − tx + a est irréductible est
1
1
2 − 2q .
On choisit t au hasard dans Fq .
1. Si ∆ = t2 − 4a est un carré dans Fq , l'algorithme ne répond pas.
2. Si ∆ = t2 − 4a n'est pas un carré dans Fq , alors x(q+1)/2 modulo x2 − tx + a est une racine carrée de
a. Il reste à tester si c'est bien un élément de Fq .
Ainsi avec une probabilité égale à
1
2
−
1
2q
, on construit une racine carrée de a, en 0(log2 (q)3 ).
4. Application à la factorisation des entiers : Algorithme de Dixon.
Remarquons que si on sait calculer la racine carrée d'un nombre entier composé, alors on peut l'utiliser
pour le factoriser : N = pq équivaut à N + y 2 = x2 (p = x − y, q = x + y ).
Cette remarque est utilisée dans l'algorithme de factorisation de Dickson : On suppose qu'on s'est xé un
entier B et qu'on a calculé la liste LB (N ) des nombres premiers p tels que p 6 B et N est un carré modulo
p. On dira qu'un entier b est un B -entier si le reste rb de la division euclidienne de b2 par N est un produit
d'éléments dans LB (N ). On note b le vecteur de composantes (v̄p (rb ))p∈LB (N ) dans Fl2 , en désignant par
v̄p (r) la valuation p-adique modulo 2 de l'entier r, pour tout nombre premier p, et par l la longueur de la
liste LB (N ).
√
• On choisit les l premiers entiers b1 , ..., bl qui sont des B -entiers en partant de N + 1.
P
• On calcule une sous-famille (ci ) extraite des (bi ) telle que i (ci ) = 0.
P
Q
Q
• Alors en posant s = ci et t = p∈LB (N ) p( vp (rci ))/2 , on obtient s2 ≡ t2 modulo N .
Cet algorithme peut échouer ; on réessaye alors an modiant la valeur de B ou des (ci ).
C. Picaronny
2
E.N.S. de Cachan
Préparation à l'agrégation 2007/2008
Cours d'Algèbre et Calcul Formel
Suggestions de développements
Soulignons qu'il s'agit d'un menu à la carte et que vous pourrez choisir d'étudier certains points, pas tous,
pas nécessairement dans l'ordre et d'une façon plus ou moins fouillée. Vous pouvez aussi vous poser d'autres
questions que celles indiquées plus bas. Il est très vivement conseillé que vos investigations comportent une
partie traitée sur ordinateur et, si possible, des représentations graphiques de vos résultats.
• Expliquer précisément le crypto système de Rabin:
Comment Alice reconstitue-t'elle le message m ?
Combien obtient-elle de solutions? comment outrepasser ce problème ?
Justier précisément pourquoi le calcul des racines carrées modulo K est aussi dicile que la
factorisation de K , lorsque K est le produit de deux nombres premiers.
• Ecrire précisément l'algorithme qui calcule la racine carrée de a dans le cas où q = 2m et justier son
coût.
• Ecrire précisément l'algorithme qui calcule la racine carrée de a dans le cas où q ≡ 3 modulo 4, et
justier son coût.
• Pour l'algorithme de Tonelli, démontrer les deux lemmes et expliquer comment les calculs de h et de e
peuvent se faire. Tester l'agorithme dans le cas q = 17.
• Pour l'algorithme de Cipolla, justier le lemme. Comment peut-on utiliser σ pour tester la condition
"∆ est un carré"? quel en est le coût? Tester cet algorithme sur un exemple.
C. Picaronny
3
E.N.S. de Cachan
Téléchargement