Luận văn trình bày một số thuật toán số học và ứng dụng; thuật toán phân tích một số nguyên ra các thừa số nguyên tố bắt đầu từ sàng Eratosthennes, phương pháp RHO của Pollard, phân tích Fermat, phương pháp Squfof, thuật toán Dixon, thuật toán sàng bậc hai.
Trang 1B ăGIÁOăD CăVÀă ÀOăT O
TR NGă IăH CăTH NGăLONG
NGUY NăTH ăTHANHăHUY N
M TăS ăTHU TăTOÁNăTRONG S ăH Că NGăD NG
TÓMăT TăLU NăV NăTH CăS ăTOÁNăH C
Chuyên ngành: Ph ng pháp toán s c p
Mã s : 8 46 01 13
HÀăN I,ă2018
Trang 2Công trình đ căhoànăthànhăt i:
Tr ngăđ iăh căTh ngăLong
NG IăH NGăD NăKHOAăH C
Trang 3Trang
Ch ng 1 Thuật toán và t duy thuật toán 2
1.1 Thuật toán 2
1.2 Đ ph c tạp c a thuật toán 2
1.3 T duy thuật toán 3
Ch ng 2 M t s thuật toán s h c th ng d ng 4 2.1 Ki n th c c bản 4
2.1.1 T nh chia h t 4
2.1.2 S nguy n t 5
2.1.3 Đ ng d 5
2.1.4 H thặng d và l p thặng d 6
2.1.5 Phân s li n t c 6
2.2 M t s thuật toán t m c chung l n nhất 7
2.2.1 Thuật toán Euclid 7
2.2.2 Thuật toán J.Stein 7
2.2.3 Thuật toán Euclid m r ng 7
2.2.4 Đ nh l Fermat nh 9
2.3 M t s thuật toán phân t ch s nguy n thành t ch các th a s nguy n t đặc bi t 11
2.3.1 Phân t ch s nguy n bằng sàng Erathostenes 11
2.3.2 Pollard s rho method 11
2.3.3 Đ ng cong Eliptic 13
2.3.4 Ph ng pháp c a Fermat 15
2.3.5 Ph ng pháp Squfof 16
2.3.6 Thuật toán Dixon 16
2.3.7 Thuật toán Sàng bậc hai-Quadratic Sieve 17
Trang 4Ch ng 3 H mã kh a RSA, ch k s và hàm băm mật mã 19
3.1 H mã h a RSA 19
3.2 Tạo kh a, mã h a, giải mã c a h RSA 19
3.3 Ch k đi n t -Ch k s 20
3.4 Hàm băm 21
3.4.1 Ph ng th c mã h a MD5 21
3.4.2 Ph ng th c mã h a SHA 1 25
Tài li u tham khảo 32
Trang 5M đầu
S h c là m t m n khoa h c l th , hấp dẫn nh ng ng i h c và làm toán,các giáo vi n, h c sinh tr n khắp th gi i Mặc d khoa h c k thuật ngàynay rất phát tri n nh ng c nh ng bài toán t th i c đại vẫn c n giá tr đ ntận bây gi và vi c đi t m m t thuật toán phân t ch s nguy n ra t ch các th a
s nguy n t là m t trong nh ng thuật toán nh vậy Ch nh nh đ kh c a
vi c phân t ch s nguy n thành t ch các th a s nguy n t đã là c s cho s
ra đ i c a mật mã h c
Luận văn này tr nh bày m t s thuật toán s h c và ng d ng Thuậttoán phân t ch m t s nguy n ra các th a s nguy n t bắt đầu t sàngEratosthennes, ph ng pháp RHO c a Pollard, phân t ch Fermat, ph ngpháp Squfof, thuật toán Dixon, thuật toán sàng bậc hai Luận văn đ c chialàm ba ch ng:
1 Ch ng 1: Thuật toán và t duy thuật toán tr nh bày nh ng khái ni m
c bản v thuật toán, đ ph c tạp và t duy thuật toán
2 Ch ng 2: M t s thuật toán th ng d ng tr nh bày m t s ki n th c c
bản v m t s thuật toán s h c th ng d ng
c a thuật toán phân t ch s nguy n thành t ch các th a s nguy n t vàomật mã và tạo ch k s
Trang 6Ch ng 1
Thuật toán và t duy thuật toán
Ch ng này tr nh bày nh ng khái ni m c bản v thuật toán, đ ph c tạp
và t duy thuật toán N i dung c a ch ng này đ c h nh thành t tài li u[1]
1.1 Thuật toán
Đ nh ngh a 1.1 Thuật toán là m t quy tắc, thao tác đ v i nh ng d li u
ban đầu đã cho, ta t m đ c l i giải cho bài toán sau m t khoảng th i gian h u hạn.
Trong thuật toán cần c :
Đầu vào: input
Đầu ra: output
Thuật toán phải bao g m nhi u b c và phải th a mãn y u cầu sau:
Trang 7N u thuật toán c th i gian th c hi n f(n) = O(g(n)) ta n i th i gian th c
hi n là cấp g(n).
Ch ng ta cần l u th m m t đi m sau đây Trong th c t ch ng ta c nnhắc đ n thuật toán xác suất t c là thuật toán ph thu c vào m t hay
đ c g i là thuật toán, v ch ng c th , v i xác suất quá bé, kh ng bao gi
k t th c Tuy nhi n, th c nghi m ch ra rằng, các thuật toán xác suất th ng
h u hi u h n các thuật toán tất đ nh Thậm ch , trong rất nhi u tr ng
h p, ch c các thuật toán nh th là s d ng đ c Ta đ nh ngh a th m:
L x [u; v] = exp(v(lnx) u (lnlnx)1ưu). Trong su t luận văn hàm L n đ c d ng đ
t nh th i gian chạy
Ta c : L n [0; v] = exp(v(lnlnn)) = (lnn) v và L n [1; v] = exp(v(lnn)) = n v Th igian chạy L n [u, v] v i u < 0 và v là hằng s là th i gian m (subexponentialtime.)
1.3 T duy thuật toán
T duy thuật toán là s t ng h p các năng l c t duy đ giải quy t vấn đtheo m t quy tr nh xác đ nh h ng đ n m t tác nhân t ng th ch (tác nhânđây mu n n i là con ng i, máy t nh, hay bất c m t thi t b nào c ch cnăng t nh toán t đ ng c th hi u và th c hi n đ c thuật toán)
T duy thuật toán lu n đ nh h ng vào vi c m ra m t con đ ng l n, m tgiải pháp vạn năng cho vi c giải quy t hàng loạt vấn đ T duy thuật toán
gi p làm thay đ i quan đi m nh n nhận vấn đ và thay đ i th i quen làm toáncho h c sinh thay v làm theo m o m c bi n đ i th s làm toán theo c bản
và c t nh ng d ng r ng rãi, t ng quát cho nhi u tr ng h p
Thuật toán c các đặc đi m[1]:
Đ là m t dãy h u hạn các b c sắp x p theo m t tr nh t nhất đ nh
M i b c là m t thao tác s cấp, tr ng h p đặc bi t c ng c th là m tthuật toán đã bi t Các b c r ràng, thao tác ch nh xác (trong c ng m t đi u
ki n, hai b x l c ng th c hi n m t thuật toán th phải cho ra c ng m t k tquả)
C t nh k t th c T duy thuật toán là cách suy ngh đ nhận th c, đ giảiquy t vấn đ m t cách c tr nh t (sắp x p lần l t, th t tr c sau).[1]
Trang 8Đ nh l 2.1 V i m i s nguy n d ng a, b t n tại duy nhất cặp s nguy n
kh ng âm (q, r) sao cho:
b = aq + r, r < a.
Đ nh ngh a 2.3 Trong đ nh l tr n, khi a là s chia h t b th s q đ c g i là
th ng(quotient) S r đ c g i là s d (remainder).
Trang 9Nhận xét 2.1 Thuật toán chia c th m r ng ra tập s nguy n Z nh sau.
V i m i s nguy n a, b, a ̸= 0, t n tại duy nhất cặp s nguy n (q, r) ∈ Z×Z,
Trong phần này ch ng ta hi u các ch k hi u thay s là các s nguy n
Đ nh ngh a 2.5 Giả s n là m t s nguy n d ng Ta n i, hai s nguy n
a, b là đ ng d v i nhau theo modulo n n u a − b chia h t cho n và k hi u
a ≡ b(mod n).
tại s nguy n k, sao cho: a = b + kn. N u a ̸≡ b(mod n) c ngh a làa − b kh ngchia h t cho n
Đ nh ngh a 2.6 N u a ≡ 0(mod n) th ta n i a chia h t cho n và k hi ua n.
Ch ng ta c ng n i n là c c a a. c chung l n nhất c a hai s a, b đ c k
hi u là gcd(a, b).
Trang 10Đ nh ngh a 2.7 (Nguy n t c ng nhau) Hai s nguy n a, b đ c g i là nguy n t c ng nhau n u gcd(a, b) là 1.
Đ nh ngh a 2.8 (Phần t ngh ch đảo) N u hai s nguy n a và n nguy n t
c ng nhau, t n tại s nguy n x sao cho: a.x ≡ 1(mod n) th ta g i x là phần t ngh ch đảo c a a trong phép modulo cho n và k hi u là a −1
Q k ,
Trang 112.2.1 Thuật toán Euclid
Đ nh l 2.8 V i m i s nguy n a ≥ 0; b > 0 th gcd(a, b) = gcd(b, a mod b).
Thuật toán Euclid:a hoặc b bằng 0 trả v gcd(a,b)= 0.
2.2.2 Thuật toán J.Stein
trong tr ng h p các s đã cho vi t d i dạng nh phân Thuật toán tr n d a
2.2.3 Thuật toán Euclid m r ng
Thuật toán Euclid m r ng h n thuật toán Euclid đi m trong tr ng h p
a và b nguy n t c ng nhau gcd(a, b) = 1 v i b ≥ a > 0 th thuật toán cho bi t
th m a −1 c a a trong phép chia modulo b t c là: a.a −1 ≡ 1(mod b)
Trang 12Đ nh ngh a 2.11 N u s nguy n d ng a và s nguy n b nguy n t c ng
nhau th t n tại duy nhất m t s x ∈ {0, 1, 2, · · · , b − 1} sao cho ax ≡ 1(mod b).
S x này đ c g i là ngh ch đảo c a a theo modulo b (hoặc ng c lại, n i a là ngh ch đảo c a x (mod b).
Vậy, ngh ch đảo c a a theo modulo b t n tại khi và ch khi gcd(a, b) = 1.
Thuật toán Euclid m r ng
Trang 13D ng th (i + 1) theo sau t th (i − 1) và i bằng cách khấu tr lần th icàng nhi u càng t t t lần th (i − 1), mà kh ng làm cho ph a tay phải c a k t
n us k = 0 sau đ sk−1 =gcd(x, z) và n u sk−1 = 1, th (rk−1 ≡ x1 mod z)
(x,y): a.x + b.y = gcd(a, b) V t t ng là quá tr nh t nh cặp s (x, y) vào trong
v ng lặp ch nh c a thuật toán Euclid
function Extended gcd(a, b);
]
r := a mod b; a := b; b := r (x r , y r ) := (x a , y a ) − q.(x b , y b ) (x a , y a ) := (x b , yb);
Đ nh ngh a 2.12 S Carmichael: H p s n là s Carmichael n u n là s
giả nguy n t Fermat v i m i c s a: CLN (a, n) = 1.
thuật ki m tra Miler-Kabin-thuật toán xác suất đ ki m tra t nh nguy n
t
Trang 14x ≡ 1( mod p) hoặc x ≡ (p − 1)( mod p).
p là s nguy n t vi t lại p d i dạng p = 2k.q + 1 trong đ q là s l , a là
• Hoặc trong dãy s aq; a2q; a4q; · · · ; a2k−1q t n tại m t s mà đ ng d v i
(p − 1) modp.
Đ nh ngh a 2.13 Giả s n là s nguy n d ng l n − 1 = 2s.t trong đ s là s nguy n kh ng âm, t là s nguy n d ng l Ta n i n đ c ki m tra Miller c
s b, n u hoặc bt ≡ 1 mod n hoặc b2j.t ≡ −1 mod n v i j nào đ , 0 ≤ j ≤ s − 1.
MR2.(Ch n a m i): Ch n ngẫu nhi n s t nhi natrong khoảng1 < a < N.
Đặt e ← 0, b ← aq mod N N u b = 1, chuy n sang MR4
b2 mod N , e ← e + 1 N u b ̸= N − 1,in ra th ng báo n là h p s và k t
th c thuật toán
MR4 Đặt c ← c − 1 N u c > 0, chuy n sang MR2.N u c = 0 in ra th ngbáo N là s nguy n t Trả l i FALSE K t th c
Đ i v i s l n c th ch ng minh rằng m t s nguy n ngẫu nhi n đ c
ch n m t ∈ (2, 3, , n − 1) c c h i t nhất 75% kh ng th a mãn các đi u ki nnày và do đ là m t ch ng minh cho t nh h p nhất c a n xem [38,49]); xem
th m [3] Đi u này ch ng t n là h p s
Trang 15• u đi m: sàng c a Erathostenes cho ta thuật toán xác đ nh m i s nguy n
t kh ng v t quá m t s cho tr c
Đ i v i hầu h t các con s , n rất hi u quả v hầu h t các con s đ u
ln√n = ln √n2√n. Ch ng ta cần O(log2n.log2m) phép t nh bit đ chia n cho
2 √n
ln n.C.log2n = C √
m t tri u phép t nh m t giây, th i gian cần thi t s vào khoảng 3, 1.1036
năm.(xem [1]) V vậy, ch ng ta t d ng đ xác đ nh xem m t s c phải
s nguy n t hay kh ng?
2.3.2 Pollard s rho method
Pollard s d ng m t hàm giả ngẫu nhi n đ sinh dãy x 1 ; x 2 ; · · · ; x k Hàm
x1; x 2 = f (x 1 ); x 3 = f (x 2 ); · · · ; x k = f (xk−1)(2). Do dãy x2; x 3 ; · · · ; x k đ c sinh
b i hàm f(x), n u t n tại x i ≡ x j mod p th ta d dàng suy ra: x i+1 ≡ x j+1
modp, x i+2 ≡ x j+2 mod p, · · · (3).
Trang 16N i cách khác, ta s c m t v ng trong các dãy s b i f(x) khi lấy mod p
gi a các x j v i hi v ng t m thấy x j , x k nào đ sao cho: x j ∈ x / k ( mod n)
INPUTS: n là s nguy n cần phân t ch
f(x) là hàm tạo s giả ngẫu nhi n
Trang 17Thành c ng đáng ch nhất c a ph ng pháp rho c a Pollard cho t i nay
Pollard s p − 1 method
hi u quả
Thuật toán
3) T nh ak( modn) (bằng thuật toán b nh ph ng li n ti p)
4) T nh (a k − 1, n) (Bằng thuật toán Euclid.)
5) N u d = (ak− 1, n) kh ng phải là m t c th c s c a n, ta lặp lại quá
tr nh tr n v i m t s a khác, hoặc k khác(hoặc cả a và k khác)
hi u quả khi c ch t may mắn
Thuật toán đ ng cong elliptic mạnh h n đ c Lesntra xây d ng vào nh ng
Ph ng pháp đ ng cong eliptic khắc ph c hoàn toàn đ c nh c đi m
tr n Trong bất k th nghi m nào trong đ m i lần th nghi m bất k kh ngcần y u t may mắn M t th nghi m thành c ng n u m t s ngẫu nhi n gần
λ = yQ− y P
x Q − x P mod n
xR = (λ2− x P − x Q ) mod n
y R = (λ(x P − x Q ) − y P ) mod n
Trang 18-Đi m tại v c ng O là đi m c ng v i bất k đi m nào c ng s ra ch nh
x R = (λ2− 2x P ) mod p.
yR = (λ(x P − x R ) − y P ) mod p.
M r ng ra,phép nhân kP nhận đ c bằng cách th c hi n k lần phép c ng.Thuật toán nhân đ i và th m cho ta cách làm nh sau:
Thuật toán nhân t h a v i m t đ ng cong elliptic Cho k là h p s
sao cho k = k 1 k2 khi đ ta c th t nh kP = k 1 (k 2 P ).
vào n C ng nh a ; x; y ∈ Z n, sao cho P (x; y; 1) ∈ V n t y2 = x3+ ax + b ⇔ b ≡
y2− x3− ax( mod n) th a mãn đi u ki n (4a3+ 27b2∈ Z n.)
Thuật toán t m ki m c s t nhi n d c a s n: 1 < d < n Đ i v i t ng
e (r) = max {m |∈ Z ≥0 , rm ≤ v + 2√v + 1}, và sau đ :
Trang 19ta phân t ch đ c n ra th a s và thuật toán d ng.N u nh t m đ c kP và
kh ng t m đ c d th thuật toán d ng và th ng báo và thuật toán phân t chthành nhân t kh ng thành c ng.Thuật toán k t th c
Đ nh l 2.12 Giả s E là đ ng cong elliptic cho b i ph ng tr nh y2 =
x3+ ax + b, trong đ a, b ∈ Z và (4a3 + 27b2, n) = 1. Giả s P 1 và P 2 là hai
đi m tr n E c mẫu s c a các t a đ nguy n t c ng nhau v i n, đ ng th i
P1 ̸= −P 2 Khi đ đi m P1+ P2 c t a đ v i mẫu s nguy n t c ng nhau v i
n n u và ch n u kh ng t n tại c nguy n t nào c a n, p | n v i t nh chất sau đây Các đi m P1 modP và P2 mod P tr n E mod p c t ng là đi m
O mod p ∈ E mod p. (E mod p là đ ng cong tr n tr ng Fp nhận đ c bằng cách lấy đ ng d r t g n modulo pcác h s c a ph ng tr nh y2 = x3+ ax + b.)
Thuật toán nhân t h a v i m t đ ng cong elliptic Cho k là h p
s sao cho k = k 1 k 2 khi đ ta c th t nh kP = k 1 (k 2 P )
vào n. C ng nh a ; x; y ∈ Z n, sao cho P (x; y; 1) ∈ V n t y2 = x3+ ax + b ⇔ b ≡
y2− x3− ax( mod n) th a mãn đi u ki n (4a3+ 27b2∈ Z n.)
Thuật toán t m ki m c s t nhi n d c a s n : 1 < d < n. Đ i v i t ng
kP, n u trong quá tr nh t nh toán t m đ c c c a s n, 1 < d < n, th ch ng
Trang 20n = x2− y2 = (x + y)(x − y) Bây gi , ta c k t quả y u h n:
Giả s c x, y : x2≡ y2( mod n) và 0 < x < y < n, x + y ̸= n khi đ n là m t
và do đ d 1 = gcd(x − y, n)và d 2 = gcd(x + y, n) là các c s kh ng tầm th ng
Ta c p2k ≡ (−1)k+1Qk+1( mod n)nh vậy, ta phải t m đ c cácQk+1 v i ch
s chẵn và là s ch nh ph ngy2 th x2≡ y2( mod n).Khi đ ,(x k +y)(x k −y) n.
Nh vậy, các c s chung l n nhất d 1 = (x k + y, n)vàd 2 = (x k − y, n), c nhi u
1 < m i < n Q(m i ) = pαi,11 pαi,kk
m2i ≡ Q(m i )( mod n).
Trang 21∑k+1 i=1 xiαi,k
→aj = (α1j mod 2, α 2j mod 2, , α Bj mod 2) ∈ (Z2 )B N u c th t m đ c
m t tập con các − →aj sao cho t ng các modulo 2 là vecto (0, 0, , 0) th t ch c a
2.3.7 Thuật toán Sàng bậc hai-Quadratic Sieve
Đ ph c tạp c a thuật toán là: L n[1
2 ; 1] l nh s h c
Ch ng ta m tả s đ thuật toán ban đầu c a sàng bậc hai Đầu ti n,
Trang 221 < gcd(X ± Y, n) < n đ làm đ c đi u này ch ng ta xem xét đa th c: Q(x) = (x + ⌊√n ⌋)2− n ≡ H(x)2( mod n). đây, H (x) = x + ⌊√n ⌋ D nhận thấy các
nguy n t p i , p 1 ≤ B sao cho: n
trong cấp s c ng
x ≡ r 1p( mod p)
và
x ≡ rp2 ( mod p),
ch ng ta t nh toán giá tr c a logp.
Th i gian chạy c a thuật toán là
Trang 23Thuật toán RSA đ c lấy t ba ch cái đầu c a t n ba tác giả thuật toán
tại H c vi n C ng ngh Massachusetts (MIT) và đ c MIT đăng k bằng sáng
t ng ch nh đảm bảo t nh an toàn c a thuật toán d a tr n đ kh c a
vi c phân t ch s nguy n l n thành t ch các th a s nguy n t Thuật toán RSA
c b n b c ch nh là:tạo kh a, chia s key, mã h a và giải mã,c hai kh a:
• Kh a c ng khai( Public Key)
Trang 24Các s nguy n t đ c ch n theo ph ng pháp th xác suất.
B c b n ,năm đ c th c hi n bằng thuật giải Euclide m r ng
Mã h a và giải mã: Bản r (th ng tin tr c khi mã h a )k hi u m
Bản mã (th ng tin sau khi mã h a )k hi u là c
m là th ng tin nhận đ c
Đ an toàn c a thuật toán RSA ph thu c vào hai bài toán: bài toán phân
t ch m t s ra t ch các th a s nguy n t và bài toán RSA Hi n nay, ch a t m
đ c m t ph ng pháp nào tr n máy t nh giải quy t đ c bài toán này trong
th i gian đa th c
3.3 Ch k đi n t -Ch k s
M t s đ ch k s c hai phần: Thuật toán k và thuật toán xác minh.Giao th c ch k s đ n giản
Bob tạo ra m t cặp kh a m t kh a c ng khai k pr và kpub
Nhập th ng đi p (sign message: s = sigk pr (x))
G i th ng đi p và ch k s (x,s) cho Alice
Alice xác minh ch k s verify signature: verk pr,B (x, s)=true/false
Trang 253.4 Hàm băm
Ch ng ta s nghi n c u tại sao hàm băm đ c y u cầu trong các l c đ
ch k s ?
Đ nh ngh a 3.1 Hàm băm mật mã là hàm nhận vào chu i k t c đ dài
bất k (Message) k t xuất ra m t chu i c đ dài xác đ nh(digest) g i là giá tr băm và k t quả tạo ra c dung l ng nh h n chu i đầu vào Hàm băm c các thu c t nh:
h a th ng tin v i các thuật toán đ c thi t k t y ch nh
-T m t đoạn văn bản đầu vào s tạo ra duy nhất m t hash cho m t vănbản
-T m t hash đầu ta s kh ng bao gi suy ng c đ c plantext (bản r )ban đầu
Giải thuật: G m 5 b c:
Input: chu i c đ dài bất k
l = n.512 + 448 (v i l, n nguy n)