Ch ng 8ươ
M T MÃ KHÓA CÔNG KHAI
8.1 T ng quan v m t mã công khai
Trong ch ng tr c chúng ta đã tìm hi u v m t mã đ i x ng. Chúng ta rõ r ng cácươ ướ
n tham gia c n có m t khóa m t đ mã hóa và gi i . Đi u này đ ng nghĩa v i vi c
trao đ i khóa m t qua kênh. Vi c gi m t khóa m t đ ng nghĩa v i vi c gi m t
thông tin. Nên vi c trao đ i khóa ch di n ra trên kênh m t thì m i đ m b o đ c, th ượ ế
nh ng vi c trao đ i này cung không ph i d đ đ m b o đ an toàn cao. T đây như
thành nên ý t ng c a m t mã công khai. T c không c n ph i trao đ i khóa m t quaưở
nh n a.
Ý t ng c a h m t công khai đ c Diffie Hellman đ a ra năm 1976. Còn vi cưở ượ ư
th c hi n h m t công khai thì do Rivest, Shamir và Adleman đ a ra đ u tiên năm 1977, ư
h đ xu t m t h m t RSA n i ti ng. Và k t đó có m t s h m t khác đ c công ế ượ
b , đ m t c a chúng d a trên bài tính toán kc nhau, nh d a trên đ khó c a bài toán ư
phân tích thành nhân t nh h m t RSA, d a vào đ khó logarithm r i r c nh h m t ư ư
ElGamal, hay d a trên đ ng cong Elliptíc. Chúng ta đi tìm hi u c th c h m t này ườ
trong các ph n sau. Nh ng tr c tiên chúng ta đi tìm hi u s đ ngun t c mã ư ướ ơ
gi i mã c a h m tng khai.
S đ c a h mã công khai đ c cho hình 8.1.ơ ượ
nh 8.1. S đ mã hóang khaiơ
H công khai s d ng hai khóa quan h toán h c v i nhau, t c m t khóa
y đ c nh thành t khóa kia: Ng i mu n nh n b n (Alice) t o ra m t khóaượ ườ
m t (private key) t khóa m t nh ra khóa công khai (public key) v i m t th t c
không ph c t p, còn vi c tìm khóa m t khi bi t khóa công khai i toán khó gi i ế
đ c. Khóa ng khai s đ a đ n cho ng i g i b n tin (Bob) qua kênh công c ng.ượ ư ế ườ
b n tin đ c Bob mã hóa b ng khóa công c ng. B n truy n đ n Alice, đ c ượ ế ượ
gi i mã b ng ka m t.
8.2 H m t RSA
L ch s hình thành
Thu t toán đ c ượ Ron Rivest, Adi Shamir Len Adleman t l n đ u tiên vào
năm 1977 t i H c vi n Công ngh Massachusetts (MIT). Tên c a thu t toán l y t 3
ch cái đ u c a tên 3 tác gi . Đây là thu t toán đ u tiên p h p v i vi c t o ra ch
đi n t đ ng th i v i vi c mã hóa. Nó đánh d u m t s ti n b v t b c c a lĩnh v c ế ượ
m t h c trong vi c s d ng khóa công c ng. RSA đang đ c s d ng ph bi n ượ ế
trong th ng m i đi n tươ đ c cho là đ m b o an toàn v i đi u ki n đ dài ượ khóa đ
l n.
Thu t toán RSA đ c MIT đăng b ng sáng ch t i Hoa Kỳ vào năm ượ ế 1983 (S
đăng 4,405,829). B ng ng ch này h t h n o ngày ế ế 21 tháng 9 năm 2000. Tuy
nhiên, do thu t toán đã đ c ng b tr c khi đăng b o h n s b o h h u ượ ướ
nh không có giá tr bên ngoài Hoa Kỳ. Ngi ra, n u nh công trình c a Clifford Cocksư ế ư
đã đ c công b tr c đó thì b ng sáng ch RSA đã không th đ c đăng ký.ượ ướ ế ượ
Thu t toán d a trên đ khó c a bài tn phân tích m t s thành nhân t .
Quá trình t o khóa cho h m t RSA.
Gi s Alice và Bob c n trao đ i thông tin bí m t thông qua m t nh không an toàn
(ví d nh ư Internet). V i thu t toán RSA, Alice đ u tiên c n t o ra cho mình c p khóa
g m khóang khai và khóa m t theo 6 b c sau: ướ
1. Ch n 2 s nguyên t l n khác nhau p, q th a mãn đi u ki n
qp
2. nh tích c a nó
qpn =
.
3. nh giá tr hàm Phi Euler c a n:
( ) ( )( )
1q1pn =ϕ
.
4. Ch n s nguyên d, sao cho
( )
nd ϕ<
gcd(d,
)(n
ϕ
)=1.
5. nh giá tr e th a mãn đi u ki n:
( )( )
nmod1de ϕ=
.
6. Khóa công khai bao g m: n e. Khóa m t:d còn p,q
)(n
ϕ
th ng xóa sauườ
khi tính toán ka.
Quá trình a:
Gi s Bob mu n g i đo n thông tin m<n cho Alice, thì Bobnh b n mã nh sau. ư
)(modnmc e
=
Cu i cùng Bob g i c cho Alice.
Quá trình gi i mã:
Alice nh n c t Bob khóa m t d. Alice th m đ c ượ m t c theo công th c
sau:
)(modncm d
=
Quá trình gi i mã ho t đ ng vì ta có
Do ed ≡ 1 (mod p-1) và ed1 (mod q-1), theo Đ nh Fermat nh n:
)(mod pmmed
)(modqmm
ed
Do p và q là hai s nguyên t cùng nhau, áp d ng đ nh lý ph n d trung hoa, chúng ta ư
:
)(mod pqmmed
Hay
)(modnmcd
Ví d:
=p
70793
=q
707933
== qpn
50116700869
( ) ( )( )
==ϕ 1q1pn
50115922144
=
d
30483041
=e
5851898625
m
)(modnmc e
=
)(mod
'ncm d
=
30483041 7523619714 30483041
7523619714 38101458113 7523619714
3487987 4469234330 3487987
754553 45262687896 754553
884545 48968540294 884545
46665533 10037623855 46665533
15657 29531681112 15657
95432 4648093185 95432
4545786 38326603863 4545786
777543 38921288996 777543
45673222 21930948547 45673222
M t s chú ý quan tr ng v RSA
An ninh: Đ an toàn c a h th ng RSA d a trên 2 v n đ c a toán h c: bài toán
phân tích ra th a s nguyên t các s nguyên l n bài toán RSA. N u 2 bài toán trên làế
khó (không m đ c thu t toán hi u qu đ gi i chúng) thì không th th c hi n đ cượ ượ
vi c p toàn b đ i v i RSA. Phá m t ph n ph i đ c ngăn ch n b ng các ượ
ph ng pháp chuy n đ i b nan toàn. ươ i toán RSA là bài toán tính căn b c e môđun
n (v i n là h p s ): tìm s m sao cho me=c mod n, trong đó (e, n) chính là khóa công khai
c là b n mã. Hi n nay ph ng pháp tri n v ng nh t gi i bài toán này là pn tích ươ n ra
th a s ngun t . Khi th c hi n đ c đi u y, k t n công s tìm ra s bí m t ượ d
t khóa công khai và có th gi i mã theo đúng quy trình c a thu t toán. N u k t n công ế
m đ c 2 s nguyên t ượ p q sao cho: n = pq thì có th d dàng tìm đ c giá tr ( ượ p-1)
(q-1) qua đó c đ nh d t e. Trong ch ng s h c chúng ta đã bi t ch a m tươ ế ư
ph ng pháp nào đ c tìm ra trên máy tính đ gi i bài toán y trong th i gian đa th cươ ượ
(polynomial-time). Tuy nhiên ng i ta cũng ch a ch ng minh đ c đi u ng c l i (sườ ư ượ ượ
không t n t i c a thu t toán).
T c đ : RSA có t c đ th c hi n ch m h n đáng k so v i các ơ thu t toán hóa
đ i x ng . Trên th c t , Bob s d ng m t thu t toán mã hóa đ i x ng nào đó đ mã hóa ế
văn b n c n g i ch s d ng RSA đ hóa khóa đ gi i (thông th ng khóa ườ
ng n h n nhi u so v i văn b n). Ph ng th c này cũng t o ra nh ng v n đ an ninh ơ ươ
m i. M t ví d c n ph i t o ra ka đ i x ng th t s ng u nhiên. N u kng, k t n ế
ng (th ng ký hi u là Eve) s b qua RSA t p trung vào vi c đoán khóa đ i x ng.ườ
Chi u dài khóa: S n c n ph i có ch th c không nh h n 512 bít. Năm 2006 h ướ ơ
m t RSA đ c cho hi u qu v i kích th c n ph i t 1024. h khuy n cáo ượ ướ ế
t ng lai tchi u dài n ph i t 2024 bít. ươ
Ch n tham s công khai:
Đ nâng cao t c đ mã hóa, thì chúng ta nên ch n e v i giá tr không l n, th ng ườ
3, 7 hay 65537. Các s y khi bi u di n d ng nh phân ch có 2 ch s 1, nên khi th c
hi n l nh lũy th a s gi m đi l nh nn.
Ch n tham s m t .
p và q còn c n đ c ch n không quá g n nhau đ phòng tr ng h p phân tích ượ ườ
n b ng ph ng pháp ươ phân tích Fermat. Ngoài ra, n u ếp-1 ho c q-1 th a s
nguyên t nh thì n cũng th d ng b phân tích theo ph ng pháp p-1 ươ
Pollaid và vì th ếp q cũng c n đ c th đ tránh kh năng này. Cng ta có ượ
th ch n nh sau. Tr c tiên tìm s ngun t p ư ướ 1 sao cho p=2p1+1 cũng s
nguyên t , t ng t ch n s nguyên t l n q ươ 1 sao cho q=2q1+1 cũng s
nguyên t .
Giá tr d c n ph i đ l n. Năm 1990 Michael J. Wiener đã ch ng minh r ng
n u nh ế ư
qpq 2<<
3/
4/1
nd <
, thì có ph ng pháp hi u qu đ tính d theoươ
n và e.
8.3 H m t Elgama
H m t Elgama hình thành trên c s bài toán logarith r i r c. Đ c đ xu t năm ơ ượ
1984. Sau đó chu n ch đi n t c a M và Nga hình tnh trên c s h m t này. ơ
Hình thành ka:
Gi s Alice Bob mu n trao đ i thông tin m t v i nhau b ng h m t Elgamma.
Thì tr c tiên Alice th c hi n qúa trình hình thành khóa nh sau:ướ ư
1. Ch n s nguyên t đ l n p có chi u dài là k sao cho bài toán logarithm trong
p
Z
là k gi i
2. Ch n
*
p
Z
α
ph n t nguyên th y. Ch n x là s ng u nhn sao cho 1<x<p.
3. nh giá tr y th a mãnng th c:
( )
pmody x
α=
Khóa m t là x, còn khóa m 3 s (
α
,p,y).
Quá trình a b n tin T:
1. Ch n s ng u nhiên
R
. (ch n k)
2. nh:
( )
pmodC R
α=
. (
( )
pr kmod
α
=
)
3. S d ng khóa m tính:
( )
pmodTyC R
=
, (
( )
pTyC kmod=
)
4. Bob g i b n mã g m
( )
C,C
đ n Alice (C,r)ế
Quá trình gi i mã:
1. nh giá tr:
( )
( )
Rx
x
R
x
CZ α=α=
=
. (
( )
( )
kx
x
k
x
rZ
αα
===
)
2. nh gía tr ngh ch đ o c a Z:
( )
( )
pmodZ
1
Rx1
α=
. (
( )
( )
pZ kx mod
1
1
=
α
)
3. Gi i mã theo b n
C
: