Logarithme Discret Table des mati` eres Jade Tourteaux & Christophe Boubel

Logarithme Discret
Jade Tourteaux & Christophe Boubel
9 avril 2014
Table des mati`eres
1 Introduction 2
2 Baby Step Giant Step 3
2.1 Lalgorithme ............................. 3
2.2 Baby Step - Pr´e-calcul . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 GiantStep .............................. 3
2.4 Complexit´e .............................. 4
2.5 Avantages - Inconv´enients . . . . . . . . . . . . . . . . . . . . . . 4
2.6 Exemple d’impl´ementation dans (Z/pZ)............. 5
3 Rho-Pollard 7
3.1 Lalgorithme ............................. 7
3.2 Unexemple.............................. 7
3.3 Le Li`evre et la Tortue . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3.1 Pr´esentation de l’agorithme . . . . . . . . . . . . . . . . . 8
3.3.2 Complexit´e .......................... 9
3.4 Complexit´e de Rho Pollard . . . . . . . . . . . . . . . . . . . . . 10
3.4.1 Le paradoxe des anniversaires . . . . . . . . . . . . . . . . 10
3.5 Avantages - Inconv´enients . . . . . . . . . . . . . . . . . . . . . . 11
3.6 Impl´ementation............................ 11
4 Pohlig-Hellman 13
4.1 Lalgorithme ............................. 13
4.2 Complexit´e .............................. 15
4.3 Exemple................................ 15
4.4 Impl´ementation............................ 15
5 Conclusion 16
1
1 Introduction
La cryptographie `a cl´e publique ou cryptographie asym´etrique est une m´ethode
de chiffrement bas´ee sur l’´echange d’une cl´e publique (diffus´ee) et d’une cl´e
priv´ee (secr`ete), l’une permettant le chiffrement, l’autre le d´echiffrement. Elle
repose sur l’existence des fonctions `a sens unique. C’est `a dire la donn´ee d’une
fonction fde chiffrement qui soit rapide `a calculer mais telle que son inverse
f1soit difficile `a trouver. Il faut donc que ´etant donn´e une image par f, il soit
difficile de lui trouver un ant´ec´edent.
Un exemple d’une telle fonction est l’exponentiation. En effet, grˆace `a l’al-
gorithme d’exponentiation rapide, il est tr`es rapide de calculer de grandes puis-
sances enti`eres d’un nombre, mais le calcul de la fonction inverse que l’on appelle
logarithme discret n’est pas si ais´e.
Concr`etement, on consid`ere un groupe cyclique Gd’ordre n(dont la loi est
not´ee multiplicativement), un g´en´erateur gde Get un ´el´ement xG. Le loga-
rithme discret de xen base gest le plus petit entier `Ntel que g`=x.
Pour certains groupes (bien choisis), le calcul du logarithme discret s’av`ere
difficile. Il est notamment utilis´ee dans le protocole d’´echange de cl´es Diffie-
Hellman ou le chiffrement El Gamal.
Na¨ıvement, on pourrait ´enum´erer toutes les puissances de g(puisque Gest
cyclique) jusqu’`a ce qu’on tombe sur le bon r´esultat. Cependant cette m´ethode
n’est pas viable pour de grands groupes Gcar mˆeme si sur le plan m´emoire cette
m´ethode est ´economique, sa complexit´e temporelle est en O(n) op´erations dans
G. Or pour les applications cryptographiques, le logarithme discret cherch´e est
au moins de l’ordre de 160 bits, c’est `a dire x2160. Ce qui nous am`enerait `a
faire au moins 2160 1 multiplications dans G.
Il existe des algorithmes pour calculer le logarithme discret plus efficaces que
la recherche exhaustive que nous allons ´etudier.
Dans toute la suite, on se donne comme hypoth`ese la donn´ee d’un groupe
cyclique Gd’ordre n, d’un g´en´erateur gde Gainsi que d’un ´el´ement xG. Le
but est de trouver `N, 0 ` < n tel que g`=x.
2
2 Baby Step Giant Step
2.1 L’algorithme
Ce premier algorithme de r´esolution du probl`eme du logarithme discret,
d´evelopp´e par Daniel Shanks est bas´e sur l’existence de la division euclidienne
de tout nombre entier.
Pour cela on pose m=dne ∈ N.
Par division euclidienne de `par m, il existe qNet rNtels que
`=qm +ravec 0 r < m
Transformons notre ´egalit´e x=g`:
x=g`=gqm+r
x=gqm+r
gr=x(gm)q
L’algorithme se fait en deux temps, la premi`ere ´etape de pr´e-calcul (baby-step)
qui va calculer et garder en m´emoire tous les grpour tous les rtels que
0r < m. Puis les ”pas de g´eants”, qui vont calculer les x(gm)qdans le but
de v´erifier l’´egalit´e ci-dessus.
2.2 Baby Step - Pr´e-calcul
On stocke l’ensemble B d´efini par
B={(gr, r) : 0 r < m}
dans une table de hachage id´ealement (pour nous, un tableau de taille n).
On est sˆur qu’au moins une des valeurs stock´ees dans le tableau correspond au
v´eritable reste de la division euclidienne.
2.3 Giant Step
Maintenant que l’on a toutes les valeurs possibles pour le reste de la division,
cherchons le quotient.
Posons d=x,
Pour jallant de 0 `a n
m,
On v´erifie si (d, j)B
Si c’est le cas, on a trouv´e le logarithme. En effet, `a l’´etape jde la boucle,
d=x(gm)j. Donc si d=gr, on retrouve l’´egalit´e gr=x(gm)q. On a donc
l=jm +r
Si ce n’est pas le cas, d=dgm
3
2.4 Complexit´e
L’´etape de pr´e-calcul constitue en une boucle de longeur mqui fait mmul-
tiplications dans Get stocke mnombres. Cette ´etape a donc une complexit´e
spatiale en O(mtaille d’un nombre de G) et une complexit´e temporelle de
O(m) op´erations dans G.
Pour les pas de g´eants, plusieurs impl´ementations sont possibles, elles in-
fluencent la complexit´e. Le probl`eme se situe au niveau de la v´erification dB.
Soit on effectue une recherche dans le tableau, ce qui risque d’augmenter la com-
plexit´e de l’algorithme, soit on utilise une table de hachage pour avoir un acc`es
direct aux ´el´ements du tableau. Si on utilise une table de hachage, l’op´eration
”v´erifier si dB” est en O(1). Ainsi, comme on effectue n
mfois cette v´erification,
les pas de g´eants sont en O(n
m).
La complexit´e de l’algorithme est donc en O(m+n
m) op´erations dans G.
Ainsi, si on choisit pour valeur de m,m=n, on obtient une complexit´e en
O(n). Ce qui est beaucoup mieux que la complexit´e en O(n) de la recherche
exhaustive.
2.5 Avantages - Inconv´enients
Avantages :
Cet algorithme est d´eterministe, c’est `a dire que quelque soit les valeurs
donn´ees, l’algorithme est certain de trouver le logarithme discret.
Inconenients :
D’un autre cˆot´e, il n´ecessite de stocker des valeurs, c’est `a dire d’utiliser un
certain espace m´emoire puis de rechercher de mani`ere efficace parmi les valeurs
pour pour effectuer des tests. En pratique l’id´eal est d’utiliser une table de
hachage qui est tr`es pratique pour acc´eder `a des valeurs stock´ees rapidement.
4
2.6 Exemple d’impl´ementation dans (Z/pZ)
Fonction qui retourne l’inverse d’un ´el´ement dans G= (Z/pZ)(pour
calculer gmqui est ´egal `a l’inverse de gm)
i n t i n v e r s e ( i n t a , i n t b ){
i n t r1 = a , r 2 = b , u1 = 1 , u2 = 0 ;
i n t q , rs , us ;
wh i l e ( r2 != 0){
q = r1 / r2 ;
r s = r 1 ; us = u1 ;
r1 = r2 ; u1 = u2 ;
r2 = rsqr2 ;
u2 = usqu2 ;
}
r e t u r n u1 ;
}
Fonction qui calcule les pas de b´eb´e et les stocke
vo id b ab y s tep ( i n t g , i n t m, i n t B [ ] , i n t n ){
i n t cmp = 1 ;
i n t r ;
f o r ( r = 1 ; r <m; r++){
cmp = g ;
cmp = cmp%n ;
B[ cmp ] = r ;
}
Calcule les pas de g´eant et retourne le log discret trouv´e
i n t g i a n t s t e p ( i n t g , i n t m, i n t x , i n t B [ ] , i n t n ){
mpz t bmpz , gmpz , nmpz ;
mp z i n i t (bmpz ) ;
m p z i n i t s e t u i (gmpz , g ) ;
m p z i n i t s e t u i (nmpz , n ) ;
mpz powm ui ( bmpz , gmpz , m, nmpz ) ;
i n t b = ( i n t ) mpz ge t ui ( bmpz ) ;
i n t in v = i n v e r s e (b , n ) ;
inv = n + inv ;
i n t y = x ;
i n t q ;
f o r ( q = 0 ; q <( n/m) ; q++){
i f (B[ y ] != 1) r e t u r n B [ y ] + mq ;
y= inv ;
y = y%n ;
}
5
1 / 16 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !