B ă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ăTỐNăTRONG S ăH Că NGăD NG
TĨMăT TăLU NăV NăTH CăS ăTỐNăH C
Chun ngành: Ph ng pháp tốn s c p
Mã s : 8 46 01 13
HÀăN I,ă2018
Cơng trình đ căhồnăthànhăt i:
Tr ngăđ iăh căTh ngăLong
NG
IăH
NGăD NăKHOAăH C
GS TSKH HÀ HUY KHOÁI
Ph năbi nă1:
Ph năbi nă2:
Lu n v n đ
c b o v tr
Tr
c H i đ ng ch m lu n v n t i:
ng đ i h c Th ng Long
Vào h i 09 gi 00 ngày 28 tháng 12 n m 2018
Contents
Trang
M đầu
1
Ch
ng 1 Thuật toán và t duy thuật toán
1.1 Thuật toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Đ ph c tạp c a thuật toán . . . . . . . . . . . . . . . . . . . . .
1.3 T duy thuật toán . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2
2
3
Ch
ng 2 M t s thuật toán s h c th ng d ng
2.1 Ki n th c c bản . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 T nh chia h t . . . . . . . . . . . . . . . . . . . . .
2.1.2 S nguy n t . . . . . . . . . . . . . . . . . . . . .
2.1.3 Đ ng d . . . . . . . . . . . . . . . . . . . . . . . .
2.1.4 H thặng d và l p thặng d . . . . . . . . . . . .
2.1.5 Phân s li n t c . . . . . . . . . . . . . . . . . . .
2.2 M t s thuật toán t m c chung l n nhất . . . . . . . . .
2.2.1 Thuật toán Euclid . . . . . . . . . . . . . . . . . .
2.2.2 Thuật toán J.Stein . . . . . . . . . . . . . . . . . .
2.2.3 Thuật toán Euclid m r ng . . . . . . . . . . . . .
2.2.4 Đ nh l Fermat nh . . . . . . . . . . . . . . . . .
2.3 M t s thuật toán phân t ch s nguy n thành t ch các th
nguy n t đặc bi t . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Phân t ch s nguy n bằng sàng Erathostenes . . .
2.3.2 Pollard s rho method . . . . . . . . . . . . . . . . .
2.3.3 Đ ng cong Eliptic . . . . . . . . . . . . . . . . . .
2.3.4 Ph ng pháp c a Fermat . . . . . . . . . . . . . .
2.3.5 Ph ng pháp Squfof . . . . . . . . . . . . . . . . .
2.3.6 Thuật toán Dixon . . . . . . . . . . . . . . . . . .
2.3.7 Thuật toán Sàng bậc hai-Quadratic Sieve . . . . .
.
.
.
.
.
.
.
.
.
.
.
4
4
4
5
5
6
6
7
7
7
7
9
.
.
.
.
.
.
.
.
11
11
11
13
15
16
16
17
iii
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
as
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
Ch
ng 3 H mã kh a RSA, ch k s và hàm băm
3.1 H mã h a RSA . . . . . . . . . . . . . . . . . . . . .
3.2 Tạo kh a, mã h a, giải mã c a h RSA . . . . . . .
3.3 Ch k đi n t -Ch k s . . . . . . . . . . . . . . .
3.4 Hàm băm . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 Ph ng th c mã h a MD5 . . . . . . . . . .
3.4.2 Ph ng th c mã h a SHA1 . . . . . . . . . .
mật
. . .
. . .
. . .
. . .
. . .
. . .
mã
. . .
. . .
. . .
. . .
. . .
. . .
.
.
.
.
.
.
19
19
19
20
21
21
25
K t luận
31
Tài li u tham khảo
32
iv
M đầ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ày
nay 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 đ n
tậ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ậ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. Luận văn đ c chia
là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.
3. Ch ng 3: H mã kh a RSA và ch k s tr nh bày m t s 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ào
mật mã và tạo ch k s .
1
Ch
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:
1. T nh h u hạn
2. T nh xác đ nh
3. T nh hi u quả
4. T nh ph d ng
1.2
Đ
Đ ph c tạp c a thuật toán
cl
ng đ ph c tạp c a thuật toán, ta d ng kh a ni m bậc O-l n
Đ nh ngh a 1.2. Giả s f(n) và g(n) là hai hàm xác đ nh tr n tập h p các s
nguy n d ng. Ta n i f(n)c bậc O-l n c a g(n) và vi t: f(n)= O(g(n)) hoặc
f=O(g), n u t n tại s C ̸= 0, sao cho v i n đ l n, các hàm f(n) và g(n) đ u
d
f (n)
= C.
n→+∞ g(n)
ng và lim
2
N 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 n
nhắ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
nhi u tham s ngẫu nhi n. Nh ng thuật toán này, v nguy n tắc kh ng
đ 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:
Lx [u; v] = exp(v(lnx)u .(lnlnx)1−u ). Trong su t luận văn hàm Ln đ c d ng đ
t nh th i gian chạy.
Ta c : Ln [0; v] = exp(v(lnlnn)) = (lnn)v và Ln [1; v] = exp(v(lnn)) = nv . Th i
gian chạy Ln [u, v] v i u < 0 và v là hằng s là th i gian m (subexponential
time.)
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 c
nă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 t
giả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án
cho 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 t
thuậ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 t
quả).
C t nh k t th c T duy thuật toán là cách suy ngh đ nhận th c, đ giải
quy 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]
3
Ch
ng 2
M t s thuật toán s h c th ng
d ng
Ch ng này tr nh bày nh ng ki n th c c bản c a s h c và m t s thuật
toán s h c th ng d ng. N i dung c a ch ng này c bản đ c h nh thành t
các tài li u [2] và [3].
2.1
Ki n th c c bản
M c này tr nh bày m t s khái ni m c bản s h c nh t nh chia h t, s
nguy n t , đ ng d , thặng d , ... cần thi t cho n i dung c a luận văn.
2.1.1 T nh chia h t
Đ nh ngh a 2.1. Ch ng ta k hi u: N: tập h p c a các s t nhi n.
Z+ = {0, 1, ...}: tập các s nguy n kh ng âm.
Z: tập các s nguy n.
Q: tập các s h u t .
R, R1 : tập các s th c.
Đ nh ngh a 2.2. V i hai s nguy n a, b, a ̸= 0 ta n i a chia h t b đ i v i s
nguy n c nào đ , n u b = ac và k hi u a|b. Ta c ng n i b chia h t cho a, hay
.
là b i c a a và vi t b..a.
Đ nh l 2.1. V i m i s nguy n d
kh ng âm (q, r) sao cho:
ng a, b t n tại duy nhất cặp s nguy n
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).
4
Nhậ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,
sao cho
b = aq + r,
0 ≤ r < |a|.
2.1.2 S nguy n t
Đ nh ngh a 2.4. S nguy n t là s nguy n l n h n 1, kh ng chia h t cho s
nguy n d ng nào ngoài 1 và ch nh n . S nguy n l n h n 1 kh ng phải s
nguy n t đ c g i là h p s .
Các t nh chất c a s nguy n t :
Đ nh l 2.2. (Euclid)
i) 2 là s nguy n t nh nhất và là s chẵn duy nhất.
ii) S các s nguy n t là v hạn.
√
Đ nh l 2.3. M i h p s n đ u c
c nguy n t kh ng v
V i m i s th c d ng x cho tr
kh ng v t quá x. Khi đ , ta c :
c, ta k hi u π(x) là s các s nguy n t
Đ nh l 2.4. lim
n→+∞
π(x)
x
logx
t quá
n.
=1
Nh vậy, s các s nguy n t kh ng v
t quá
√
n là vào khoảng
√
n
√
log n
=
√
2 n
logn .
Đ nh l 2.5. M i s nguy n t l n h n 1 đ u phân t ch đ c m t cách duy
nhất thành t ch các th a s nguy n t , trong đ , các th a s vi t v i th t
kh ng giảm.
2.1.3 Đ ng d
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).
H th c tr n g i là đ ng d th c. Nh vậy, a ≡ b(mod n) khi và ch khi t 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 ng
chia 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 u a..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).
5
Đ 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 .
2.1.4 H thặng d và l p thặng d
Đ nh ngh a 2.9. Giả s m và r là s t nhi n và 0 ≤ r ≤ m − 1. K hi u Ar
là tập h p tất cả các s nguy n đ ng d v i r theo modulo m và đ c g i là l p
thặng d modulo m. M i phần t c a Ar đ c g i là m t thặng d modulo m.
2.1.5 Phân s li n t c
Đ nh ngh a 2.10. Cho a, b là các s nguy n, b > 0. Th c hi n thuật toán
Euclid ta đ c:
a = ba0 ,
0 ≤ c0 < b
b = c 0 a1 + c 1 ,
···
0 ≤ c1 < c 0
cn−3 = cn−2 an−1 + cn−1 ,
cn−2 = cn−1 an .
Nh vậy, phân s
a
b
= a0 +
c0
b
= a0 +
a
b
1
b
c0
0 ≤ cn−1 < cn−2 ,
c th vi t:
= · · · = a0 +
1
a1 +
1
···+an−1 + a1
n
Cách vi t tr n đ c g i là bi u di n s h u t
.
a
b
d
i dạng phân s li n t c.
Ch ng ta quan tâm đ n các đ nh l sau(phần ch ng minh xem [1])
Đ nh l 2.6. Giả s a0 , a1 , · · · , an , · · · là các s th c, trong đ a1 , · · · , an > 0.
Đặt b0 = a0 , b1 = a1 b0 + 1, q0 = 1, q1 = a1 , và v i m i k ≥ 2,
bk = ak bk−1 + bk−2 ,
qk = ak qk−1 + qk−2 .
Khi đ , i) Ck = [a0 ; a1 , · · · , ak ] = qbkk .
ii) V i m i k ≥ 1, ta c bk qk−1 − bk+1 qk = (−1)k+1 .
Đ nh l 2.7. Giả s n là s kh ng ch nh ph ng và qbkk là các phân s h i t
√
√
ri ng c a n. Ta đặt α0 = n, và các s αk , Qk , Pk đ c đ nh ngh a nh sau:
√
Pk + n
,
αk =
Qk
ak = [αk ],
Pk+1 = ak Qk − Pk ,
Qk =
2 )
(n − Pk+1
.
Qk
6
Khi đ , ta c : b2k − nqk2 = (−1)k+1 Qk+1 .
H quả 2.1. Giả s n là s t nhi n kh ng ch nh ph ng. G i qbkk là các phân
√
s h i t ri ng c a n. Th th , đ ng d b2k mod n lấy theo thặng d tuy t đ i
√
bé nhất, c giá tr tuy t đ i bé h n 2 n.
2.2
M t s thuật toán t m
c chung l n nhất
2.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.
function gcd(a,b)
begin
while b ̸= 0 do
begin
r := a mod b; a := b; b := r;
end;
Result:=a
end;
2.2.2 Thuật toán J.Stein
Năm 1967 J.Stein xây d ng m t thuật toán khá thuận ti n đ t m UCLN
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
tr n nh ng nhận xét đ n giản sau:
1. gcd(a, 0)=a trong tr
ng h p đặc bi t th gcd(0, 0) = 0
)
(
2. N u a, b là các s chẵn th (a, b) = 2 a2 , 2b ;
( )
3. N u a chẵn, b l , th (a, b) = a2 , b ;
4. N u a, b đ u l th a − b chẵn và | a − b |< max (a, b) . (a, b) = (a − b, b)
Đ nh l 2.9. N u N c các
√
th s ≤ N .
c kh ng tầm th
ng s, t v i N = s.t và s ≤ t,
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)
7
Đ 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).
K hi u
a−1 ≡ x(mod b)
hoặc
x−1 ≡ a(mod b).
T m ngh ch đảo c a a theo modulo b. Ta c :
.
(ax − 1) .. b ⇔ ax − 1 = by ⇔ ax − by = 1.
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
Vi c xác đ nh các s nguy n x và y v i ax + by = gcd(a, b) đ
là thuật toán Euclid m r ng. Ta c :
c bi t đ n nh
gcd(x, 0) = x.
gcd(x, z) = gcd(z, x mod z) n u z ̸= 0.
N u x ≥ z và phần d kh ng âm nh nhất đ c thay th , cặp m i (z, x
mod z) là nh h n so v i cặp c (x, z).
Cho hai s nguy n kh ng âm u,v t m (u1 ; u2 ; u3 ) sao cho:
(u, v) = u3 = uu1 + uu2 .
Trong t nh toán, ta th m các ẩn ph (v1 ; v2 ; v3 ), (t1 ; t2 ; t3 ) và lu n c trong
m i b c các đẳng th c sau:
ut1 + vt2 = t3 , uv1 + vv2 = v3 ; uu1 + vv2 = v3
Đặt (u1 ; u2 ; u3 ) ← (1, 0, u), (v1 ; v2 ; v3 ) ← (0, 1, v)
Ki m tra v3 = 0 thuật toán k t th c.
[ ]
Đặt:q ← uv33 , và sau đ ta đặt
(t1 ; t2 ; t3 ) ← (u1 ; u2 ; u3 ) − q (v1 ; v2 ; v3 ) ,
(u1 ; u2 ; u3 ) ← (v1 ; v2 ; v3 ) ,
(v1 ; v2 ; v3 ) ← (t1 ; t2 ; t3 ) và quay v b
c 2.
Giả s rằng, 0 ≤ x < z ch ng ta c : r1 = 0, s1 = z, r2 = 1, và s2 = x.
8
D ng th (i + 1) theo sau t th (i − 1) và i bằng cách khấu tr lần th i
cà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
quả c a d ng th (i + 1) là âm. Quá tr nh chấm d t ngay khi m t s si = 0;
n u sk = 0 sau đ sk−1 = gcd(x, z) và n u sk−1 = 1, th (rk−1 ≡ x1 mod z)
Thuật toán Euclid m r ng: Cho a, b kh ng đ ng th i bằng 0, trả v cặp
(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);
Begin
(xa , ya ) := (1, 0);
(xb , yb ) := (0, 1);
while
b ̸= 0
do
Begin
[a]
q :=
b
r := a mod b; a := b; b := r
(xr , yr ) := (xa , ya ) − q.(xb , yb )
(xa , ya ) := (xb , yb );
(xb , yb ) := (xr , yr );
end
result := (xa , ya )
end
2.2.4 Đ nh l Fermat nh
Đ nh l 2.10. N u p là m t s nguy n t , th v i s nguy n a bất k , kh ng
chia h t cho p th ap−1 − 1 s chia h t cho p hay ap−1 ≡ 1 mod p.
Đ 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.
• Gần đây đã ch ng minh đ c c v s s Carmichael. C t nhất x 7 trong
s ch ng ≤ x, m t khi x đ l n. Đi u này làm mất hi u l c c a phép
th d a tr n đ nh l nh Fermat: Cho m t s Carmichael p th ngh m
ap−1 ≡ 1 mod p kh ng bao gi thất bại, n u p và a nguy n t c ng nhau,
và do đ kh ng bao gi ch ng minh đ c p là h p s . Nh ng nh giải
thuật ki m tra Miler-Kabin-thuật toán xác suất đ ki m tra t nh nguy n
t .
2
9
Ki m tra Miler-Rabin:
B đ 2.1. V i p là s nguy n t , x là s nguy n: x2 ≡ 1( mod p) khi và ch
khi
x ≡ 1(
hoặc
mod p)
x ≡ (p − 1)(
mod p).
B đ 2.2. V i p là s nguy n t , x là s nguy n: x2 ≡ 1( mod p) khi và ch
khi
x ≡ 1( mod p) hoặc x ≡ (p − 1)( mod p).
p là s nguy n t vi t lại p d
s nguy n d
i dạng p = 2k .q + 1 trong đ q là s l , a là
ng bé h n p. Ta c :
• Hoặc aq ≡ 1( mod p).
• Hoặc trong dãy s aq ; a2q ; a4q ; · · · ; a2
(p − 1) mod p.
k−1
q
t n tại m t s mà đ ng d v i
Thuật toán Miller-Rabin ki m tra t nh nguy n t c a s nguy n p.
Đ 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
j
s b, n u hoặc bt ≡ 1 mod n hoặc b2 .t ≡ −1 mod n v i j nào đ , 0 ≤ j ≤ s − 1.
INPUT S t nhi n l N.
OUTPUT N là s nguy n t : TRUE/FALSE.
MR1.(Xuất phát): Phân t ch
Đặt q ← N − 1, t ← 0 và n u q chẵn ta đặt q ← 2q , t ← t + 1 (bây gi ta c )
N − 1 = 2t .q , q l . Sau đ , đặt c ← 20.
MR2.(Ch n a m i): Ch n ngẫu nhi n s t nhi n a trong khoảng 1 < a < N.
Đặt e ← 0, b ← aq mod N . N u b = 1, chuy n sang MR4.
MR3.(B nh ph ng): N u b ̸≡ ±1( mod N ) và e < t − 2 ta đặt b :=
2
b 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 ng
bá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 n
nà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 .
10
Đ nh l 2.11. N u p là m t h p s d ng l th t n tại kh ng quá p−1
4 c s
b, 1 ≤ b ≤ p − 1 sao cho p trải qua đ c ki m tra Miler đ i v i các c s đ .
(xem [1])
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
2.3.1 Phân t ch s nguy n bằng sàng Erathostenes
Theo đ nh l 2.4 ch ng I đ t m m t c s nguy n t c a m t h p s
√
N ta phải chia N cho các s nguy n t kh ng v t quá N.
•
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
c các c nguy n t nh : 88% s nguy n d ng c m t c nguy n t
< 100, và gần 92% c
c nguy n t < 1000.
• Nh c đi m: đ ph c tạp quá l n. B i v , theo đ nh l (s nguy n
π(x) là các s nguy n t kh ng v t
t ): limx→∞ ( π(x)
x ) = 1. trong đ
lnx
√
quá
√ x. Nh vậy, s các s nguy n t kh ng v t quá n là vào khoảng
√
n
√ = ln2 √nn . Ch ng ta cần O(log2 n. log2 m) phép t nh bit đ chia n cho
ln n
m. Nh vậy, s các phép t nh bit cần thi t đ phân t ch s n vào khoảng
√
√
2 n
ln n .C. log2 n = C n. N u n vào c khoảng 100 ch s thập phân, th
s các phép t nh phải d ng c 1050 . V i nh ng máy t nh th c hi n 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
đ n giản nhất th a
ta ch sinh ra m t
đ c sinh d a tr n
m t hàm giả ngẫu nhi n đ sinh dãy x1 ; x2 ; · · · ; xk . Hàm
mãn ch nh là: f (x) = x2 + 1 mod N (1). Nh vậy, ch ng
s x1 hoàn toàn ngẫu nhi n và các phần t c n lại s
hàm f (x). Dãy s ngẫu nhi n ta thu đ c cu i c ng là:
x1 ; x2 = f (x1 ); x3 = f (x2 ); · · · ; xk = f (xk−1 )(2). Do dãy x2 ; x3 ; · · · ; xk đ c sinh
b i hàm f(x), n u t n tại xi ≡ xj mod p th ta d dàng suy ra: xi+1 ≡ xj+1
mod p, xi+2 ≡ xj+2 mod p, · · · (3).
11
N 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 ng nh h nh v v ng li n k t tr n). Nh ng t ng này c th đ c k t
h p thành m t thuật tốn theo cách sau:
• Ch n f (x) = x2 + 1
• Ch n m t giá tr x0 nào đ và t nh theo phép lặp b i ánh xạ f dãy sau:
x1 = f (x0 ), x2 = f (x1 ), · · · , x( j + 1) = f (xj ), j = 0; 1; 2; · · · Sau đ , xét hi u
gi a các xj v i hi v ng t m thấy xj , xk nào đ sao cho: xj ∈
/ xk ( mod n)
nh ng xj ≡ xk ( mod n), trong đ d là m t c kh ng tầm th ng nào
đ c a n. Khi đ , bằng cách t nh (xj − xk , n) ta thu đ c m t c th c
s c a n.
ρ
Figure 2.1: rho
Thuật toá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.
OUTPUT:
c th c s (̸= 1; ̸= n) c a n hoặc kh ng th c hi n đ
1)x ← 2; y ← 2; d ← 1
2)While d = 1
• x ← f (x)
• y ← f (f (x))
• d ← gcd(| x − y |, n)
3) N u d = n, return (kh ng th c hi n).
4)Else, return d.
12
c
Thành c ng đáng ch
nhất c a ph ng pháp rho c a Pollard cho t i nay
là khám phá vào năm 1980 b i Brent và Pollard v vi c phân t ch nhân t s
8
Fermat th tám (xem [2]): 22 + 1 = 1238926361552897.p62 trong đ p62 bi u
th s nguy n t 62 ch s .
Pollard s p − 1 method
Giả s cần phân t ch s nguy n n và p là m t c nguy n t c a n. N u
p − 1 kh ng c các
c nguy n t l n th thuật toán p − 1 c a Pollard là rất
hi u quả.
Thuật toán
1) Ch n m t s k sao cho n chia h t cho hầu h t các s nguy n nh h n
m t s B nào đ . Chẳng hạn k là B! hoặc k là b i chung nh nhất c a tất cả
các s t 1 đ n B .
2) Ch n ngẫu nhi n m t s nguy n a trong khoảng t 2 đ n n − 2.
3) T nh ak ( mod n) (bằng thuật toán b nh ph ng li n ti p).
4) T nh (ak − 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).
Nh c đi m c a ph ng pháp (p − 1) c a Pollard là n làm vi c c hi u
quả n u th a s c a n c y u t p : p − 1 là B -m n n n ph ng pháp này ch
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
năm 1980 tr n th c t là s t ng quát h a c a ph ng pháp p − 1 Pollard.
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 ng
cầ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
v i m t s nguy n t c a n là B− m n.
2.3.3 Đ
ng cong Eliptic
Đ ng cong elliptic đ c Lenstra đ xuất, và đ ph c tạp c a ph ng pháp
1
này là e((2+o(1)) log p log log p) 2 .
Phép c ng:
Đ xác đ nh đi m R(xR ; yR ) = P (xP ; yP ) + Q(xQ ; yQ ) ta t nh xR và yR nh
sau:
λ=
yQ − yP
xQ − xP
mod n
xR = (λ2 − xP − xQ )
mod n
yR = (λ(xP − xQ ) − yP )
13
mod n
-Đ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
đi m đ . Ngh a là :∀P ∈ E, P + O = O + P = P
-Đi m đ i x ng c a P (xP ; yP ) ∈ E là −P (xP ; yP ) ∈ E th a mãn các đi u
ki n: yP′ ∈ ZP sao cho (yP′ + yP ) mod n;P + (−P ) = 0
Phép nhân đ i: -Đ xác đ nh đi m R(xR ; yR ) = 2P (xP ; yP ) v i yP ̸= 0, ta
t nh xR và yR nh sau:
3x2P + a
mod p.
2yP
xR = (λ2 − 2xP ) mod p.
λ=
yR = (λ(xP − xR ) − yP )
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:
• Lấy P
• Tăng gấp đ i đ đ
c 2P
• Th m P vào 2P đ đ
• Nhân đ i 2P đ đ
• Th m vào đ đ
c 21 P + 2 0 P
c 22 P
c 22 P + 2 1 P + 20 P
• Gấp đ i 22 P đ đ
c 23 P
• Gấp đ i 23 P đ đ
c 24 P
• Th m n vào k t quả tr
cđ đ
c 24 P + 2 3 P + 22 P + 21 P + 20 P
•
• Cu i c ng ch ng ta t nh toán 151P th c hi n ch bảy lần nhân đ i và b n
phép c ng b sung
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 = k1 .k2 khi đ ta c th t nh kP = k1 (k2 P ).
Đầu vào c a thuật toán là s t nhi n n và các tham s v; w ∈ N , ph thu c
vào n. C ng nh a; x; y ∈ Zn , sao cho P (x; y; 1) ∈ Vn t y 2 = x3 + ax + b ⇔ b ≡
y 2 − x3 − ax( mod n) th a mãn đi u ki n (4a3 + 27b2 ∈ Zn. )
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
s r ∈ N,
√
e(r) = max {m |∈ Z≥0 , rm ≤ v + 2 v + 1}, và sau đ :
14
k=
∏
re(r) (r là s nguy n t ; e(r) là m t s nguy n d
ng)2 ≤ r ≤ w ch ng
ta giả s :
Giả s P (x : y : 1) ∈ Vn .Khi đ ,P nằm tr n đ ng cong Eliptic Ea;b ttrong
vành Zn , đ c xác đ nh b i ph ng tr nh y 2 = x3 + ax + b. Ch ng ta t nh đi m
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
ta 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 ch
thà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 y 2 =
x3 + ax + b, trong đ a, b ∈ Z và (4a3 + 27b2 , n) = 1. Giả s P1 và P2 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 ̸= −P2 . 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 mod P 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 F nhận đ c bằng
cách lấy đ ng d r t g n modulo p các h s c a ph ng tr nh y 2 = 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 = k1 .k2 khi đ ta c th t nh kP = k1 (k2 P ).
Đầu vào c a thuật toán là s t nhi n n và các tham s v; w ∈ N , ph thu c
vào n. C ng nh a; x; y ∈ Zn , sao cho P (x; y; 1) ∈ Vn t y 2 = x3 + ax + b ⇔ b ≡
y 2 − x3 − ax( mod n) th a mãn đi u ki n (4a3 + 27b2 ∈ Zn. )
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
s r ∈ N,
√
e(r) = max {m |∈ Z≥0 , rm ≤ v + 2 v + 1}, và sau đ :
∏
k = re(r) (r là s nguy n t ; e(r) là m t s nguy n d ng)2 ≤ r ≤ w
Giả s P (x : y : 1) ∈ Vn . Khi đ , P nằm tr n đ ng cong elliptic Ea;b trong
vành Zn , đ c xác đ nh b i ph ng tr nh y 2 = x3 + ax + b. Ch ng ta t nh đi m
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
ta 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 ch
thành nhân t kh ng thành c ng.
Thuật toán k t th c.
2.3.4 Ph
ng pháp c a Fermat
T nh gcd(n; xy) t nh c s chung l n nhất c a n và xy . N u n là h p s ,
kh ng phải là s nguy n t , và x, y là các s nguy n ngẫu nhi n th a mãn
15
x2 ≡ y 2 th c
t nhất 50% c h i cho gcd(x − y; n) và gcd(x + y; n) các th a s
kh ng nh c a n.
Thuật toán Phân t ch h p s n
√
1) Ch n s nguy n x > n.
2) Ki m tra xem x2 − n c là s ch nh ph
• N u x2 − n kh ng là s ch nh ph
tr c a x.
• N u x2 − n là s ch nh ph
ng kh ng?
ng, th ta quay lại b
ng y 2 , th ta chuy n sang b
c 1 và tăng giá
c sau.
3) n = x2 − y 2 = (x − y)(x − y).
2.3.5 Ph
ng pháp Squfof
Squfof là t vi t tắt c a square form factorization phân t ch các dạng
ch nh ph ng.
Ta xuất phát t nhận xét sau đây: N u ta t m đ c các s x, y sao cho:x −
y ̸= 1 và x2 − y 2 = n th ta t m đ c
c s kh ng tầm th ng c a n v
2
2
n = x − y = (x + y)(x − y). Bây gi , ta c k t quả y u h n:
Giả s c x, y : x2 ≡ y 2 ( mod n) và 0 < x < y < n, x + y ̸= n khi đ n là m t
c c a t ch (x + y)(x − y) và r ràng n kh ng là c c a x + y c ng nh x − y
và do đ d1 = gcd(x − y, n) và d2 = gcd(x + y, n) là các c s kh ng tầm th ng
c a n. Các c s này đ c t m nhanh ch ng th ng qua thuật toán Euclid.
T đ nh l 2.9 cho ta ph ng pháp t m x, y cần thi t.
Ta c p2k ≡ (−1)k+1 Qk+1 ( mod n) nh vậy, ta phải t m đ c các Qk+1 v i ch
.
s chẵn và là s ch nh ph ng y 2 th x2 ≡ y 2 ( mod n). Khi đ , (xk +y)(xk −y)..n.
Nh vậy, các c s chung l n nhất d1 = (xk + y, n) và d2 = (xk − y, n) , c nhi u
khả năng là các c kh ng tầm th ng c a n, v các s xk + y, xk − y, kh ng
nhất thi t bé h n n.
2.3.6 Thuật toán Dixon
Thuật toán:
INPUTS: S nguy n n cần ki m tra.
B c 1: Ch ng ta cần t m các s m1 , · · · , mk+1 bằng cách l a ch n ngẫu
nhi n sao cho:
1 < mi < n
α
α
Q(mi ) = p1 i,1 ...pk i,k
m2i ≡ Q(mi )(
16
mod n).
Các giá tr c a pi là chẵn lần, và v i i = 1, ..., k + 1. K hi u:
−
→
v = (αi,1 , · · · , αi,k ) ∈ Z k .
B
c 2: Giải h ph
ng tr nh tuy n t nh:
→
→ −
→
v−
v1 + ... + xk+1 −
x1 −
k+1 ≡ 0 (
Trong kh ng gian vecto Z2k , ch ng ta t m đ
mod 2).
c tập
x1 , ..., xk+1 ∈ {0, 1},
tập này kh ng bao g m các giá tr 0(b i v s l ng ph
s ẩn).
B c 3: Đ t m đ c x1 , ..., xk+1 ,ta c bi u th c sau:
∑k+1
x
k+1 2
(mx1 1 ...mk+1
) ≡ p1
i=1
xi αi,1
∑k+1
...pk
i=1
xi αi,k
(
ng tr nh k nh h n
mod n).
K hi u
x1
X = (m1 ...mk+1
xk+1
), Y =
k
∏
(
∑k+1
pj
i=1
xi αi,j )/2
j=1
s
((
k+1
∑
xi αi,j )/2)
i=1
là s nguy n xác đ nh theo xi . Ch ng ta nhận đ c bi u th c t ng ng
X 2 ≡ Y 2 ( mod n). Ti p t c ta ki m tra đi u ki n : 1 < gcd(X ± Y, n) < n. N u
thành c ng ta đã phân t ch n thành th a s . Trong tr ng h p kh ng thành
c ng th ch ng ta quay lại b c 1 và t nh các giá tr khác c a mi
K t th c thuật toán.
Giả s ch ng ta c m t tập B = p1 , ..., pB nhân t và tập V các m i quan
h trong b c thu thập d li u.
X l d li u: Giả s C l n h n B và giả s C c đ ng d th c:
α
α
α
x2j ≡ p1 1j .p2 2j ...pBBj ( mod n) v i 1 ≤ j ≤ C . V i m i j vecto:
−
→
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
các xj t ng ng s s d ng m i nhân t trong B m t s chẵn lần.
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à: Ln 12 ; 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,
ch ng ta xây d ng bi u th c X 2 ≡ Y 2 ( mod n) và ki m tra bất đẳng th c:
17
1 < 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
giá tr c a Q(x) là các giá tr nguy n, r ràng ch ng là s ch nh ph ng theo
modulo n. Trong c s nhân t ch ng ta c th xem p0 = −1 và tất cả các s
nguy n t pi , p1 ≤ B sao cho: pni = 1. Sau đ , v i s gi p đ c a sàng, ch ng
∏
ta t m giá tr xi mà: Ai = Q(xi ) = p∈S pαip ngh a là Q(xi ) phân t ch trong c
s nhân t c a ch ng ta. Ta k hi u: Bi = H(xi ) ta nhận đ c đ ng d th c
Bi2 ≡ Ai (modn) ta t ch l y s l ng đ l n các bi u th c nh th ch ng ta th c
hi n loại b các bi n và xây d ng bi u th c X 2 ≡ Y 2 ( mod n)
Đi u ki n np = 1 v i p là s nguy n t c a c s nhân t lấy t đ ng d
√
th c (x + ⌊ n⌋)2 ≡ n( mod p), mà đ ng d cần th a mãn đ i v i m t s giá
tr c a x ∈ Z.
Giá tr xi ∈ Z đ i v i Q(xi ) đ c xác đ nh nh sau:
1) Đ i v i t ng s nguy n t p t c s nhân t , ch ng ta t m nghi m r1( p)
và r2( p) c a ph ng tr nh Q(x) ≡ 0( mod p).
2) Sau đ , ch ng ta thay đ i x trong khoảng đ l n [−M ; M ],M ∈ N , ch ng
ta đ a đ n m t ma trận A, mà n đ c đánh s th t bằng giá tr c a x.
3) Trong m i phần t c a ma trận v i s th t c a x ta đặt A log | Q(x) | .
4) Sau đ , đ i v i t ng giá tr p t c s nhân t S ch ng ta th c hi n quá
tr nh sàng nh sau: T m i phân t cuả ma trận (A [x]), s th t c a n nằm
trong cấp s c ng
x ≡ r1p ( mod p)
và
mod p),
x ≡ r2p (
ch ng ta t nh toán giá tr c a log p.
Th i gian chạy c a thuật toán là
Ln
[1 ]
2
;1 .
18
Ch
ng 3
H mã kh a RSA, ch k s và
hàm băm mật mã
N i dung ch y u c a ch
3.1
ng này đ
c h nh thành t tài li u [4].
H mã h a RSA
Thuậ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
là: Ron Rivest, Adi Shamir và Len Adleman m tả lần đầu ti n vào năm 1977
tại H c vi n C ng ngh Massachusetts (MIT) và đ c MIT đăng k bằng sáng
ch tại Hoa K vào năm 1983(s đăng k 4405829.)
t ng ch nh đảm bảo t nh an tồn c a thuật tố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)
• Kh a b mật ( Private Key)
3.2
Tạo kh a, mã h a, giải mã c a h RSA
Các b
c tạo kh a:
1. Ch n 2 s nguy n t l n p và q ,v i p ̸= q ,l a ch n ngẫu nhi n và đ c lập.
2. T nh n = p.q .
3. T nh : Giá tr hàm s
le φ(n) = (p − 1)(q − 1).
4. Ch n m t s t nhi n e sao cho:1 < e < φ(n), và là nguy n t c ng nhau
v i φ(n).
19
5. T nh : d sao cho
hay
d.e ≡ 1(
d=
mod φ(n)).
x.φ(n) + 1
e
Kh a c ng khai:(e,n).
Kh a b mật:(d,n).
Cá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
Kh a b mật d th ng là m t s rất l n đ c gi b mật B c 1: A nhận
kh a c ng khai c a B
B c 2: A chuy n bản r M thành s t nhi n m sao cho m và n nguy n
t c ng nhau và 0 < m < n.
B c 3: Mã h a m thành c
mod n
c ≡ me
và c là bản mã chuy n cho ng i nhận.
B c 4: G i c cho B
B c 5: Giải mã: Ng i nhận s chuy n bản mã t c đ c m ta làm nh
sau:cd ≡ med ≡ m mod n
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 kpr và kpub
Nhập th ng đi p (sign message: s = sigkpr (x))
G i th ng đi p và ch k s (x,s) cho Alice
Alice xác minh ch k s verify signature: verkpr,B (x, s)=true/false
20
3.4
Hàm băm
Ch ng ta s nghi n c u tại sao hàm băm đ
ch k s ?
c y u cầu trong các l
cđ
Đ 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:
- D dàng t m đ c digest c a m t chu i bất k
- Kh ng th t m đ c th ng đi p g c c a digest
- Kh ng th đi u ch nh đ c th ng đi p mà kh ng làm thay đ i digest c a
n
- Kh ng th t m đ c hai th ng đi p khác nhau c c ng digest.
3.4.1 Ph
ng th c mã h a MD5
MD5 Là m t phi n bản tăng c ng c a M D4, đ c đ xuất b i giáo s
Rivest vào năm 1991. Cả hai hàm băm t nh toán đầu ra 128 bit, t c là ch ng
c s c đ kháng va chạm khoảng 264 . M D5 là m t loạt các giải thuật đ ng
h a th ng tin v i các thuật toán đ c thi t k t y ch nh.
ng d ng: -Trong ch k đi n t .
-D ng trong các ng d ng bảo mật.
-Ki m tra t nh toàn v n c a tập tin đ c truy n đi.
-l u tr mật khẩu.
Đặc đi m :
-T m t đoạn văn bản đầu vào s tạo ra m t chu i g i là Message Digest
hay c n g i là MD5 hasd c đ dài c đ nh cho tr c đ c mã h a d i dạng
hexa.
-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ăn
bả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 .
Output: Giá tr băm c đ dài 128 bits.
B c 1: Nh i d li u:
-Nh i th m các bits sao cho d li u c đ dài là l ≡ 448 mod 512 hay
l = n.512 + 448 (v i l, n nguy n).
21