Tonelli Shanks Algorithm

Download Report

Transcript Tonelli Shanks Algorithm

Tonelli-Shanks Algorithm
C# implementation
Introduction
• Daniel Shanks(1917-1996) 1973
• Alberto Tonelli(1849-1921) 1891
Χρήση του Αλγορίθμου
• Όπου χρειάζεται υπολογισμός της
τετραγωνικής ρίζας a(mod p).
• Κρυπτοσύστημα Rabin
• Υπολογισμός σημείων σε Ελλειπτικές
Καμπύλες
Ισοδυναμία (mod p)
• Δυο αριθμοί a,b λέγονται ισοδύναμοι (mod p)
αν ισχύει :
a  b (m od p )
Αυτό σημαίνει ότι:
p | (a  b)
Το a αποκαλείται βάση και το b υπόλειμμα.
Τετραγωνική Ρίζα (mod p)
• Εαν έχουμε την ισοδυναμία:
x  a (mod p )
2
Τότε το x είναι η τετραγωνική ρίζα του
a(mod p).
Ταξη του a(mod m)
• Τάξη του a(mod m), είναι το μικρότερο j για
το οποίο ισχύει:
a  1(m od m )
j
Συμβολίζεται :
O rd m a  j
Παράδειγμα:
O rd 7 2  3  2  1(m od 7 )
3
Θεώρημα Fermat-Euler-Lagrange
Αν ισχύουν:
• a,m είναι σχετικά πρώτοι μεταξύ τους ,
• p μονός πρώτος ,
• a,p σχετικά πρώτοι.
Τότε:
(1) O rd m a πάντα υπάρχει.
(2) (Μικρό Θεώρημα Fermat) a p 1  1(m od p )  O rd p ( a ) | ( p  1)
(3) Αν j  O rd m ( a ), k  Z τότε O rd m ( a k ) | j
( p  1)
(4) (Κριτήριο Euler) a 2  1ή (  1)(m od p ) σημαίνει ότι έχει ή δεν
έχει ρίζα ο α(mod p).
Λήμμα 1
• Αν p πρώτος και ισχύει :
y  1(m od p )
2
• Έχει ώς συνέπεια:
y   1(m od p )
Αλγόριθμος
1) Επιλέγουμε έναν αριθμό a και έναν πρώτο
p>2 , με gcd(a,p) = 1.
Θέλουμε να υπολογίσουμε το a (m o d p ) .
Από το Μικρό Θεώρημα του Fermat έχουμε ότι:
p 1
2
a
p 1
 1(m od p )
Άρα από το λήμμα 1 βρίσκουμε ότι:
p 1
a
2
  1(m o d p )
Αλγόριθμος
2) Αν το πρόσημο της παραπάνω αναλογίας είναι
-1 τότε βάσει του κριτηρίου του Euler το a δεν
έχει τετραγωνική ρίζα (mod p). Ο αλγόριθμός
σταματάει εδω.
Αλγόριθμος
3) Αν όμως το πρόσημο του 1 είναι + τότε
παραγοντοποιούμε το p με τον εξής τρόπο:
p 1  s  2
Με s περιττό και e θετικό.
e
Αλγόριθμος
4) Εύρεση ενός αιρθμού n ο οποίος δεν έχει ρίζα
(mod p) δηλαδή:
p 1
n
2
  1(m o d p )
Αλγόριθμος
5) Αρχικοποιούμε τις παρακάτω μεταβλητές
(όλες οι αναλογίες είναι (mod p)) :
p 1
xa
2
(πρώτη πρόβλεψη για την τετραγωνική ρίζα)
ba
s
(πρώτη πρόβλεψη για τον fudge factor)
g n
s
(οι δυνάμεις του g θα ανανεώνουν τα x και b)
r e
(θα μειώνεται με κάθε ανανέωση του αλγορίθμου)
Αλγόριθμος
6) Από το 3ο σημείο στο θεώρημα FEL υπάρχει
ένας ακέραιος m για τον οποίο ισχύει:
0  m  r 1
και
b
2
m
 1(m od p )
Εύρεση m για το οποίο ισχύει :
O rd p ( b )  2
m
Αλγόριθμος
7) Αν το m είναι 0 τότε τελιώσαμε,επιστρέφουμε
την τιμή του x .
Αλγόριθμος
8) Αν m > 0 τότε ανανεώνουμε τις μεταβλητές :
x  (x * g
2
b  (b * g
2
g  g
r m
2
rm
r  m 1
) m od p
rm
) m od p
Αλγόριθμος
9) Πάμε πίσω στο βήμα 6 με την νέα τιμή του r
που είναι η παλιά τιμή του m.
To m μειώνεται σε κάθε loop μέχρι να γίνει 0
και να σταματήσει στο βήμα 7.
Πηγή:
http://www.math.vt.edu/people/ezbrown/doc/s
qrts.pdf