Chủ đề 4: Chủ đề 4: Mã hóa bất đối xứng Mã hóa bất đối xứng
Mở đầu Mở đầu
trong ccáácc hhệệ ththốốngng mãmã hhóóaa quyquy ưướớcc chung mãmã khkhóóaa kk gigiữữaa ngưngườờii ggửửii A A vvàà
dung ccủủaa mãmã khkhóóaa kk
thông tin tin vvềề mãmã , do đđóó, , ccầầnn ccóó ssựự traotrao đđổổii thông
, A vvàà B B phphảảii traotrao đđổổii vvớớii nhaunhau
VVấấnn đđềề phpháátt sinhsinh trong llàà viviệệcc quyquy ưướớcc chung ngưngườờii nhnhậậnn B. B. TrênTrên ththựựcc ttếế, , nhunhu ccầầuu thaythay đđổổii nnộộii dung llàà ccầầnn thithiếếtt, do khkhóóaa kk gigiữữaa A A vvàà B. B. ĐĐểể bbảảoo mmậậtt mãmã khkhóóaa kk, A trêntrên mmộộtt kênhkênh liênliên llạạcc ththậậtt ssựự an an totoàànn vvàà bbíí mmậậtt. . nhiên, , rrấấtt khkhóó ccóó ththểể bbảảoo đđảảmm đưđượợcc ssựự an an totoàànn TuyTuy nhiên ccủủaa kênhkênh liênliên llạạcc nênnên mãmã khkhóóaa kk vvẫẫnn ccóó ththểể bbịị phpháátt hihiệệnn bbởởii ngưngườờii C! C!
Mở đầu Mở đầu
công ccộộngng đưđượợcc Whitfield DiffieDiffie ttạạii
Martin Hellman ccủủaa Martin
Stanford gigiớớii thithiệệuu vvààoo nămnăm 1976. 1976. phương phpháápp DiffieDiffie--Hellman Whitfield DiffieDiffie đãđã đưđượợcc công
công bbốố. . 1977, trêntrên bbááoo ""The Scientific American
Ronald Rivest
Rivest, , AdiAdi Shamir phương phpháápp RSA, RSA, phương
The Scientific American", ", nhnhóómm Leonard Shamir vvàà Leonard công bbốố phương phương phpháápp công ccộộngng nnổổii titiếếngng vvàà đưđượợcc ssửử ddụụngng rrấấtt trong ccáácc ứứngng ddụụngng mãmã hhóóaa vvàà bbảảoo vvệệ
Ý Ý tưtưởởngng vvềề hhệệ ththốốngng mãmã hhóóaa khkhóóaa công Martin Hellman, Ralph MerkleMerkle vvàà Whitfield Martin Hellman, Ralph ĐĐạạii hhọọcc Stanford SauSau đđóó, , phương Hellman vvàà Whitfield Hellman NămNăm 1977, ttáácc gigiảả Ronald Adleman đãđã công Adleman mãmã hhóóaa khkhóóaa công nhinhiềềuu hihiệệnn nay nay trong thông tintin thông
Mở đầu Mở đầu
công ccộộngng ssửử ddụụngng haihai loloạạii khkhóóaa
MMộộtt hhệệ ththốốngng khkhóóaa công trong ccùùngng mmộộtt ccặặpp khkhóóaa: : trong
công bbốố rrộộngng rãirãi công ccộộngng (public key)
(public key) đưđượợcc công tin, thông tin, trong mãmã hhóóaa thông
riêng (private key)
(private key) chchỉỉ do do mmộộtt ngưngườờii nnắắmm gigiữữ tin đãđã đưđượợcc mãmã thông tin
công ccộộngng. . khkhóóaa công vvàà đưđượợcc ssửử ddụụngng trong khkhóóaa riêng vvàà đưđượợcc ssửử ddụụngng đđểể gigiảảii mãmã thông hhóóaa bbằằngng khkhóóaa công
CCáácc phương phương phpháápp mãmã hhóóaa nnààyy khaikhai ththáácc nhnhữữngng áánhnh xxạạ ff mmàà viviệệcc ththựựcc hihiệệnn áánhnh xxạạ ngưngượợcc f f ––11 rrấấtt khkhóó so so vvớớii viviệệcc ththựựcc hihiệệnn áánhnh xxạạ ff. . ChChỉỉ khikhi bibiếếtt đưđượợcc mãmã khkhóóaa riêng ththìì mmớớii ccóó ththểể ththựựcc hihiệệnn đưđượợcc áánhnh xxạạ ngưngượợcc f f ––11 . . riêng
công ccộộngng MãMã hhóóaa khkhóóaa công Mã hóa khóa công cộng
Phương pháp RSA Phương pháp RSA
1978, R.L.Rivest
L.Adleman đãđã đđềề RSA (hay còncòn A.Shamir vvàà L.Adleman công ccộộngng RSA (hay
) = (pp––1) (1) (qq––1) 1) R.L.Rivest, , A.Shamir NămNăm 1978, xuxuấấtt hhệệ ththốốngng mãmã hhóóaa khkhóóaa công đưđượợcc ggọọii llàà ““hhệệ ththốốngng MITMIT””). ). phương phpháápp nnààyy, , ttấấtt ccảả ccáácc phphéépp ttíínhnh đđềềuu Trong phương Trong đưđượợcc ththựựcc hihiệệnn trêntrên ZZnn vvớớii nn llàà ttííchch ccủủaa haihai ssốố nguyên nguyên ttốố llẻẻ pp vvàà qq khkháácc nhaunhau. . KhiKhi đđóó, , tata ccóó φφ((nn) = (
Phương pháp mã hóa RSA Phương pháp mã hóa RSA
nguyên ttốố llẻẻ phânphân bibiệệtt. .
, nguyên ttốố,
k = (n, p, q, a, b) ) ∈∈ KK, , đđịịnhnh nghnghĩĩaa::
) = xxbb mod mod nn vvàà ddkk((yy) = ) = yyaa mod mod nn, , vvớớii xx, , yy ∈∈ ZZnn
(public key) công bbốố (public key)
n n = = pqpq vvớớii pp vvàà qq llàà haihai ssốố nguyên P = C = ZZn n vvàà đđịịnhnh nghnghĩĩaa:: Cho Cho P = C = KK = {(= {((n, p, q, a, b (n, p, q, a, b): ): n n = = pqpq, , pp, , qq llàà ssốố nguyên 1 (mod φφ((nn))}))} abab ≡≡ 1 (mod VVớớii mmỗỗii k = (n, p, q, a, b eekk((xx) = GiGiáá trtrịị nn vvàà bb đưđượợcc công (private key) GiGiáá trtrịị pp, , qq, , aa đưđượợcc gigiữữ bbíí mmậậtt (private key)
Sử dụng phương pháp RSA Sử dụng phương pháp RSA
nguyên ttốố ccóó gigiáá trtrịị llớớnn pp vvàà qq
) = (p p –– 1) (1) (q q –– 1)1)
nguyên bb (1 < (1 < b b < < φφ((nn)) )) ththỏỏaa
công bbốố ((khkhóóaa công
PhPháátt sinhsinh haihai ssốố nguyên TTíínhnh n n = = pqpq vvàà φφ((nn) = ( nhiên mmộộtt ssốố nguyên ChChọọnn ngngẫẫuu nhiên gcd(gcd(bb, , φφ((nn)) = 1 )) = 1 TTíínhnh gigiáá trtrịị aa = = bb––11 mod mod φφ((nn) () (bbằằngng thuthuậậtt totoáánn Euclide Euclide mmởở rrộộngng)) GiGiáá trtrịị nn vvàà bb đưđượợcc công công ccộộngng) ) riêng)) gigiáá trtrịị pp, , qq, , aa đưđượợcc gigiữữ bbíí mmậậtt ((khkhóóaa riêng
VíVí dụdụ
p=5 & q=7 p=5 & q=7 =(4)*(6) = 24 n=5*7=35 vvàà φφ((nn) ) =(4)*(6) = 24 n=5*7=35 b = 5 b = 5 a = 29 , (29x5 ––1) 1) chiachia hhếếtt chocho 24 24 a = 29 , (29x5 CCặặpp khkhóóaa đưđượợcc xxáácc đđịịnhnh nhưnhư sausau::
KhKhóóaa công KhKhóóaa riêng MãMã hhóóaa ttừừ love
) = (35,5) công ccộộngng: (: (n,bn,b) = (35,5) riêng: (: (n,an,a) = (35, 29) ) = (35, 29) love ssửử ddụụngng công
GiGiảả ssửử ccáácc kýký ttựự Alphabet
công ththứứcc (e = Alphabet nnằằmm trong
(e = xxbb mod n) mod n) trong khokhoảảngng ttừừ 11(cid:198)(cid:198)2626
Plain Text Plain Text
xxbb
ll oo vv ee
Numeric Numeric Representation Representation 1212 1515 2222 55
248832 248832 759375 759375 5153632 5153632 3125 3125
Cipher Text (e = xxbb Cipher Text (e = mod n) mod n) 1717 1515 2222 1010
VíVí dụdụ
GiGiảảii mãmã ttừừ love
love ssửử ddụụngng công
công ththứứcc (d =
(d = yyaa mod n) mod n)
n = 35, a=29 n = 35, a=29
yyaa
Cipher Cipher TextText
(d = yyaa (d = mod n) mod n)
Plain Plain TextText
481968572106750915091411825223072000 481968572106750915091411825223072000
1717
1212
12783403948858939111232757568359400 12783403948858939111232757568359400
1515
1515
2222
852643319086537701956194499721110000000 852643319086537701956194499721110000000
2222
1010
100000000000000000000000000000 100000000000000000000000000000
55
ll oo vv ee
Một số phương pháp tấn công RSA Một số phương pháp tấn công RSA
phương phpháápp RSA RSA ddựựaa trêntrên cơcơ tin đãđã thông tin không ththểể ththựựcc
công bbẻẻ khkhóóaa công ccộộngng đđểể tương ứứngng. . ĐiĐiềềuu quanquan trtrọọngng riêng tương
TTíínhnh chchấấtt an an totoàànn ccủủaa phương ssởở chi chi phphíí chocho viviệệcc gigiảảii mãmã bbấấtt hhợợpp llệệ thông đưđượợcc mãmã hhóóaa ssẽẽ ququáá llớớnn nênnên xemxem nhưnhư không hihiệệnn đưđượợcc VVìì khkhóóaa llàà công công ccộộngng nênnên viviệệcc ttấấnn công phương phpháápp RSA RSA thưthườờngng ddựựaa vvààoo khkhóóaa công phương xxáácc đđịịnhnh đưđượợcc khkhóóaa riêng llàà ddựựaa vvààoo nn đđểể ttíínhnh pp, , qq ccủủaa nn, , ttừừ đđóó ttíínhnh đưđượợcc dd..
Phương pháp sử dụng φ(n) Phương pháp sử dụng φ(n)
công bibiếếtt đưđượợcc gigiáá trtrịị φφ((nn). ). KhiKhi đđóó
2
p
0
−
GiGiảả ssửử ngưngườờii ttấấnn công viviệệcc xxáácc đđịịnhnh gigiáá trtrịị pp, , qq đưđượợcc đưađưa vvềề viviệệcc gigiảảii haihai phương trtrììnhnh sausau phương
phương trtrììnhnh bbậậcc haihai
nn = = pp ⋅⋅ qq ThayThay qq = = nn//pp, , tata đưđượợcc phương phương trtrììnhnh bbậậcc haihai ( ) ( )( )1 nφ p 1 q − = − ) ( ( ) n n np 1 φ − + =+ pp, , qq chchíínhnh llàà haihai nghi nghiệệmm ccủủaa phương nnààyy. . TuyTuy nhiên khkhóó hơnhơn viviệệcc xxáácc đđịịnhnh haihai ththừừaa ssốố nguyên
nhiên vvấấnn đđềề phpháátt hihiệệnn đưđượợcc gigiáá trtrịị φφ((nn) ) còncòn
nguyên ttốố ccủủaa nn. .
Thuật toán phân tích ra thừa số p-1 Thuật toán phân tích ra thừa số p-1
NhNhậậpp nn vvàà BB 1. 1. a a = 2= 2 2. 2. forfor j j = 2 = 2 toto B B dodo a a = = aajj mod mod nn 3. 3. d d = = gcd(gcd(aa −−1, 1, nn)) 4. 4. ifif 1 < 1 < d d < < nn thenthen
dd llàà ththừừaa ssốố nguyên công)) nguyên ttốố ccủủaa n n ((ththàànhnh công
elseelse
nguyên ttốố ccủủaa nn
không xxáácc đđịịnhnh đưđượợcc ththừừaa ssốố nguyên không ((ththấấtt bbạạii))
Thuật toán phân tích ra thừa số p-1 Thuật toán phân tích ra thừa số p-1
Pollard pp--1 (1974) 1 (1974) llàà mmộộtt trong
nguyên ttốố ccáácc ssốố nguyên
nguyên ttốố vvàà gigiáá trtrịị gigiớớii hhạạnn BB. .
nguyên chưa bibiếếtt) ) vvàà BB llàà mmộộtt ssốố nguyên
p
∧≤
−⇒−
trong nhnhữữngng ThuThuậậtt totoáánn Pollard thuthuậậtt totoáánn đơnđơn gigiảảnn hihiệệuu ququảả ddùùngng đđểể phânphân ttííchch rara ththừừaa ssốố nguyên nguyên llớớnn. . ThamTham ssốố đđầầuu vvààoo ccủủaa thuthuậậtt totoáánn llàà ssốố nguyên nguyên ((llẻẻ) ) nn ccầầnn đưđượợcc phânphân ttííchch rara ththừừaa ssốố nguyên GiGiảả ssửử n n = = p.qp.q ((pp, , qq chưa đđủủ llớớnn, , vvớớii mmỗỗii ththừừaa ssốố nguyên nguyên ttốố kk, ,
(
) B !1
( pkBk
) 1
Thuật toán phân tích ra thừa số p-1 Thuật toán phân tích ra thừa số p-1
ỞỞ cucuốốii vòng
vòng llặặpp ((bưbướớcc 2), 2), tata ccóó a a ≡≡ 22BB!! (mod : a a ≡≡ 22BB!! (mod
(mod nn) ) (mod pp) ) Fermat, tata ccóó : : 1 (mod pp) )
1 (mod pp) ) SuySuy rara: Do Do pp||nn nênnên theotheo đđịịnhnh lýlý Fermat, 22pp--11 ≡≡ 1 (mod Do (Do (pp--1)|1)|BB!, !, nênnên ởở bưbướớcc 3 3 ccủủaa thuthuậậtt totoáánn, , tata ccóó: : a a ≡≡ 1 (mod
VVìì ththếế, , ởở bưbướớcc 4: 4: pp|(|(aa −−1) 1) vvàà pp||nn nênnên nnếếuu d d = = gcd(gcd(aa −−1,1,nn) ) ththìì d d = = pp
Thuật toán phân tích ra thừa số p-1 Thuật toán phân tích ra thừa số p-1
VVíí ddụụ: :
180, chchúúngng tata xxáácc
= 11620221425 ởở bưbướớcc 3 3 ccủủaa thuthuậậtt
135978 chchỉỉ ccóó ccáácc
công do do gigiáá trtrịị 135978 nguyên ttốố nhnhỏỏ khikhi phânphân ttííchch rara ththừừaa ssốố
= 15770708441. GiGiảả ssửử nn = 15770708441. ÁÁpp ddụụngng thuthuậậtt totoáánn pp –– 1 1 vvớớii BB == 180, đđịịnhnh đưđượợcc aa = 11620221425 totoáánn vvàà xxáácc đđịịnhnh đưđượợcc gigiáá trtrịị dd = 135979. = 135979. Trong trưtrườờngng hhợợpp nnààyy, , viviệệcc phânphân ttííchch rara ththừừaa ssốố Trong nguyên ttốố ththàànhnh công nguyên ththừừaa ssốố nguyên nguyên ttốố:: nguyên
135978 = 2 ×× 3 3 ×× 131 135978 = 2
173 131 ×× 173 173 ssẽẽ đđảảmm bbảảoo điđiềềuu kikiệệnn
Do Do đđóó, , khikhi chchọọnn BB ≥≥ 173 135978⏐⏐ BB!! 135978
Thuật toán phân tích ra thừa số p-1 Thuật toán phân tích ra thừa số p-1
phương vvàà nhânnhân
Euclide ccóó đđộộ
USCLN ssửử ddụụngng thuthuậậtt totoáánn Euclide ((log nn))33). ).
OO((B B log Trong thuthuậậtt totoáánn p p −− 1 1 ccóó B B −− 1 1 phphéépp ttíínhnh llũũyy ththừừaa Trong modulo, mmỗỗii phphéépp đòiđòi hhỏỏii ttốốii đađa 2log2log22BB phphéépp nhânnhân modulo, modulo ssửử ddụụngng thuthuậậtt totoáánn bbììnhnh phương modulo ViViệệcc ttíínhnh USCLN phphứứcc ttạạpp OO((log NhưNhư vvậậyy, , đđộộ phphứứcc ttạạpp ccủủaa thuthuậậtt totoáánn llàà + (log nn))33)) log BB(log(log nn))2 2 + (log
Thuật toán phân tích ra thừa số p-1 Thuật toán phân tích ra thừa số p-1
n
B ≈ ) ) ththìì gigiảảii nhưng thuthuậậtt totoáánn nnààyy ssẽẽ không không
tương đđốốii nhnhỏỏ vvàà ththỏỏaa điđiềềuu
công, , nhưng
XXáácc susuấấtt chchọọnn gigiáá trtrịị BB tương kikiệệnn llàà rrấấtt ththấấpp. . KhiKhi tăngtăng gigiáá trtrịị BB ((chchẳẳngng hhạạnn nhưnhư thuthuậậtt ssẽẽ ththàànhnh công nhanh hơnhơn gigiảảii thuthuậậtt chiachia ddầầnn nhưnhư trtrììnhnh bbààyy trêntrên.. nhanh
Thuật toán phân tích ra thừa số p-1 Thuật toán phân tích ra thừa số p-1
công phương
phương phpháápp nguyên ttốố pp mmàà trong trưtrườờngng hhợợpp nn ccóó ththừừaa ssốố nguyên
nguyên ttốố rrấấtt nhnhỏỏ
công ccộộngng RSA an
tương ttựự ttììmm qq11 nguyên
GiGiảảii thuthuậậtt nnààyy chchỉỉ hihiệệuu ququảả khikhi ttấấnn công RSA RSA trong ((p p −− 1) 1) chchỉỉ ccóó ccáácc ưướớcc ssốố nguyên ChChúúngng tata ccóó ththểể ddễễ ddààngng xâyxây ddựựngng mmộộtt hhệệ ththốốngng mãmã RSA an totoàànn đđốốii vvớớii gigiảảii thuthuậậtt hhóóaa khkhóóaa công công p p −− 1. 1. CCááchch đơnđơn gigiảảnn nhnhấấtt llàà ttììmm mmộộtt ssốố ttấấnn công nguyên ttốố pp11 llớớnn, , mmàà p p = 2= 2pp11 + 1 + 1 ccũũngng llàà ssốố nguyên nguyên nguyên ttốố, , tương nguyên ttốố llớớnn vvàà qq == 22qq11 ++ 1 1 nguyên ttốố.. nguyên
Bẻ khóa dựa trên các tấn công lặp lại Bẻ khóa dựa trên các tấn công lặp lại
thương Norris: hhệệ ththốốngng RSA RSA ccóó ththểể bbịị ttổổnn thương công llặặpp liênliên titiếếpp. . NNếếuu đđốốii ththủủ bibiếếtt công ccộộngng {{nn, , bb} } vvàà ttừừ khkhóóaa CC ththìì ccóó ththểể
Simons vvàà Norris: Simons khikhi ssửử ddụụngng ttấấnn công ccặặpp khkhóóaa công ttíínhnh chuchuỗỗii ccáácc ttừừ khkhóóaa sausau: :
CC11==CCee ((modmod nn)) ee ((modmod nn)) CC22==CC11 …… CCii==CCii--11
ee ((modmod nn)) NNếếuu ccóó mmộộtt phphầầnn ttửử CCjj trong saosao chocho CCjj = = CC ththìì khi khi đđóó ssẽẽ ttììmm đưđượợcc M M = = CCjj--11 vvìì
ee ((modmod nn))
CCjj = = CCjj--11 C C = = MMee ((modmod nn))
trong chuchuỗỗii CC11, , CC22, , CC33,,……., ., CCii
Bẻ khóa dựa trên các tấn công lặp lại Bẻ khóa dựa trên các tấn công lặp lại
}={35, 17, 3},anhanh ta ta
VVíí ddụụ: : GiGiảả ssửử anhanh ta ta bibiếếtt {{nn, , bb, , CC}={35, 17, 3}, ssẽẽ ttíínhnh::
35) = 33 ) = 317 (modmod 35) = 33 ) = 3317 (mod 35) = 3 (mod nn) = 3317 (mod 35) = 3
CC11 = = CCee ((modmod nn) = 317 ( ee (mod CC22 = = CC11 VVìì CC22 = = CC nênnên M M = = CC11 = 33= 33
Sự che dấu thông tin trong hệ thống RSA Sự che dấu thông tin trong hệ thống RSA
tin không thông tin không phphảảii
= 35. NNếếuu anhanh tata mumuốốnn
865 ththìì hhệệ ththốốngng hohoàànn 109, qq == 97, 97, ee == 865
HHệệ ththốốngng RSA RSA ccóó đđặặcc điđiểểmm llàà thông luôn đưđượợcc cheche ddấấuu. . luôn = 17, n n = 35. GiGiảả ssửử ngưngườờii ggởởii ccóó e e = 17, ggởởii bbấấtt ccứứ ddữữ liliệệuu nnààoo thuthuộộcc ttậậpp sausau {1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34} {1, 6, 7, 8, 13, 14, 15, 20, 21, 22, 27, 28, 29, 34} ththìì kkếếtt ququảả ccủủaa viviệệcc mãmã hhóóaa llạạii chchíínhnh llàà ddữữ liliệệuu ban ban đđầầuu. . NghNghĩĩaa llàà, , MM == MMee modmod nn. . CònCòn khi khi pp == 109, totoàànn không không ccóó ssựự cheche ddấấuu thông thông tin,
tin, bbởởii vvìì:: ∀∀MM, , MM == MM865865 modmod (109*97) (109*97)
Sự che dấu thông tin trong hệ thống RSA Sự che dấu thông tin trong hệ thống RSA
VVớớii mmỗỗii gigiáá trtrịị nn, , ccóó íítt nhnhấấtt 9 9 trưtrườờngng hhợợpp kkếếtt ququảả mãmã hhóóaa chchíínhnh llàà ddữữ liliệệuu ngunguồồnn ban ban đđầầuu. . ThThậậtt vvậậyy, , MM == MMee modmod nn
hayhay: :
MM == MMee modmod pp vvàà MM == MMee modmod q
q (*)(*) (*) ccóó íítt nhnhấấtt baba gigiảảii trong (*)
{0, 1, --1}. 1}. không đưđượợcc cheche ddấấuu ((không không bbịị thaythay đđổổii
VVớớii mmỗỗii ee, , mmỗỗii đđẳẳngng ththứứcc trong phpháápp thuthuộộcc ttậậpp {0, 1, SSốố thông thông điđiệệpp không sausau khi khi mãmã hhóóaa): ):
m m = [1+= [1+gcdgcd((ee--1, 1, pp--1)][1+ 1)][1+gcdgcd((ee--1), 1), qq--1]1]
Nhận xét Nhận xét
thông tin l tin làà ccóó đưđượợcc
, ta ccóó ththểể ddễễ ddààngng ttíínhnh ra ra ) = (pp –– 1)(1)(qq –– 1) 1) vvàà gigiáá trtrịị aa = = bb––11 modmod φφ((nn) )
Euclide mmởở rrộộngng. .
nguyên nn ccóó ththểể đưđượợcc phânphân ttííchch ra ra ththừừaa ssốố
phương phpháápp RSA RSA
MMấấuu chchốốtt đđểể ccóó ththểể gigiảảii mãmã đưđượợcc thông gigiáá trtrịị pp vvàà qq ttạạoo nênnên gigiáá trtrịị nn. . Khi Khi ccóó đưđượợcc haihai gigiáá trtrịị nnààyy, ta đưđượợcc φφ((nn) = ( theotheo thuthuậậtt totoáánn Euclide NNếếuu ssốố nguyên nguyên ttốố, , ttứứcc llàà gigiáá trtrịị pp vvàà qq ccóó ththểể đưđượợcc xxáácc đđịịnhnh nguyên ththìì xemxem nhưnhư ttíínhnh an an totoàànn ccủủaa phương không còncòn đưđượợcc bbảảoo đđảảmm nnữữaa. . không
Nhận xét Nhận xét
phương phpháápp RSA RSA ddựựaa trêntrên chưa đđủủ khkhảả nguyên rrấấtt llớớnn
nguyên ttốố. .
1994, Peter ShorShor, , mmộộtt nhnhàà khoa
nghiệệmm AT&T,
phòng khoa hhọọcc ttạạii phòng AT&T, đãđã đưađưa ra ra mmộộtt thuthuậậtt totoáánn ccóó ththểể nguyên rrấấtt llớớnn
NhưNhư vvậậyy, , ttíínhnh an an totoàànn ccủủaa phương cơcơ ssởở ccáácc mmááyy ttíínhnh ttạạii ththờờii điđiểểmm hihiệệnn ttạạii chưa năngnăng gigiảảii quyquyếếtt viviệệcc phânphân ttííchch ccáácc ssốố nguyên ra ra ththừừaa ssốố nguyên NămNăm 1994, Peter ththíí nghi phânphân ttííchch mmộộtt ccááchch hihiệệuu ququảả ccáácc ssốố nguyên trêntrên mmááyy ttíínhnh lưlượợngng ttửử. .
Vấn đề số nguyên tố Vấn đề số nguyên tố
RSA, ssốố không ththểể ddễễ ddààngng titiếếnn
nguyên ttốố. .
nguyên ttốố đãđã 130 chchữữ nguyên ccóó trêntrên 130
nguyên ttốố pp vvàà qq ccầầnn phphảảii đđủủ llớớnn, , vvíí ddụụ
ĐĐểể bbảảoo đđảảmm an an totoàànn chocho hhệệ ththốốngng mãmã hhóóaa RSA, nguyên n n = = pqpq phphảảii đđủủ llớớnn đđểể không nguyên hhàànhnh viviệệcc phânphân ttííchch nn rara ththừừaa ssốố nguyên HiHiệệnn ttạạii, , ccáácc thuthuậậtt totoáánn phânphân ttííchch ththừừaa ssốố nguyên ccóó ththểể gigiảảii quyquyếếtt đưđượợcc ccáácc ssốố nguyên ssốố ((ththậậpp phânphân). ). ĐĐểể an an totoàànn, , ssốố nguyên nhưnhư trêntrên 100 100 chchữữ ssốố. . VVấấnn đđềề đđặặtt rara ởở đâyđây llàà gigiảảii quyquyếếtt bbààii totoáánn: : llààmm ththếế nnààoo nhanh chchóóngng vvàà chchíínhnh xxáácc mmộộtt đđểể kikiểểmm tratra mmộộtt ccááchch nhanh ssốố nguyên nguyên ttốố hay hay hhợợpp ssốố? ? dương nn llàà ssốố nguyên nguyên dương
Vấn đề số nguyên tố Vấn đề số nguyên tố
dương nn llàà ssốố nguyên dương
dương). ).
n
⎡ ⎣
⎤ ⎦
⎤ ⎦
⎡ ⎣
nguyên ttốố khikhi vvàà chchỉỉ khikhi nn không không 2,..., dương nnààoo thuthuộộcc đođoạạnn
Theo đđịịnhnh nghnghĩĩaa, , mmộộtt ssốố nguyên Theo nguyên ttốố khikhi vvàà chchỉỉ khikhi nn chchỉỉ chiachia hhếếtt chocho 1 1 vvàà nn ((ởở nguyên đâyđây chchỉỉ xxéétt ccáácc ssốố nguyên nguyên dương TTừừ đđóó suysuy rara, , nn llàà ssốố nguyên ccóó ưướớcc ssốố dương . . NhưNhư vvậậyy, , tata ccóó: :
i
2,...,
n
,
i
⇔ ∀ ∈
nn llàà ssốố nguyên nguyên ttốố
( 0 mod
)
( n ¬ ≡
)
⎡ ⎣
⎤ ⎦
⎡ ⎣
⎤ ⎦
Vấn đề số nguyên tố Vấn đề số nguyên tố
nguyên ttốố
dương nn llàà ssốố nguyên nguyên dương phương phpháápp trêntrên ssẽẽ đưađưa rara kkếếtt ququảả hohoàànn totoàànn
nhiên, , ththờờii giangian xxửử lýlý ccủủaa thuthuậậtt totoáánn rõrõ rrààngng llàà rrấấtt
trong không ththểể ththựựcc hihiệệnn đưđượợcc, , trong
ViViệệcc kikiểểmm tratra mmộộtt ssốố nguyên theotheo phương chchíínhnh xxáácc. . TuyTuy nhiên llớớnn, , hohoặặcc ththậậmm chchíí không trưtrườờngng hhợợpp nn tương tương đđốốii llớớnn. .
Thuật toán Miller-Rabin Thuật toán Miller-Rabin
dương nn llàà nguyên dương phương phpháápp thuthuộộcc
TrênTrên ththựựcc ttếế, , viviệệcc kikiểểmm tratra mmộộtt ssốố nguyên ssốố nguyên nguyên ttốố thưthườờngng áápp ddụụngng ccáácc phương Monte Carlo, nhnhóómm thuthuậậtt totoáánn Monte Carlo, vvíí ddụụ: :
Solovay--Strassen Strassen hay hay thuthuậậtt totoáánn MillerMiller--
Robin thưthườờngng đưđượợcc ssửử ddụụngng phphổổ
thuthuậậtt totoáánn Solovay Robin; Robin; thuthuậậtt totoáánn MillerMiller--Robin bibiếếnn hơnhơn. .
Thuật toán thuộc nhóm Monte Carlo Thuật toán thuộc nhóm Monte Carlo
Monte Carlo đưđượợcc ssửử ddụụngng ThuThuậậtt totoáánn thuthuộộcc nhnhóómm Monte Carlo trong viviệệcc khkhẳẳngng đđịịnhnh hay hay phphủủ đđịịnhnh mmộộtt vvấấnn đđềề nnààoo trong đđóó. . ThuThuậậtt totoáánn luôn luôn đưađưa rara câucâu trtrảả llờờii vvàà câucâu trtrảả llờờii (yes) hohoặặcc llàà thuthu đưđượợcc chchỉỉ ccóó khkhảả năngnăng hohoặặcc llàà ““CCóó”” (yes) (no) Không”” (no) ““Không
trong đđóó, , câucâu trtrảả llờờii ““CCóó”” (Yes)
biased Monte Carlo”” llàà thuthuậậtt totoáánn (Yes) luôn luôn (No) ccóó ththểể nhưng câucâu trtrảả llờờii ““Không Không”” (No)
ThuThuậậtt totoáánn ““yesyes--biased Monte Carlo Monte Carlo, trong Monte Carlo, chchíínhnh xxáácc nhưng không chchíínhnh xxáácc không
Thuật toán Miller-Rabin Thuật toán Miller-Rabin
nguyên dương nhanh ((ssốố nguyên
dương nn ccóó ththểể trong ththờờii giangian ttỉỉ llệệ vvớớii loglog22nn, , ttứứcc llàà ssốố trong bibiểểuu didiễễnn nhnhịị phânphân ccủủaa nn) )
không chchíínhnh xxáácc llàà không không caocao. .
ƯuƯu điđiểểmm: : XXửử lýlý nhanh đưđượợcc kikiểểmm tratra trong lưlượợngng ccáácc bit bit trong không hohoàànn totoàànn CCóó khkhảả năngnăng kkếếtt luluậậnn ccủủaa thuthuậậtt totoáánn không chchíínhnh xxáácc, , nghnghĩĩaa llàà ccóó khkhảả năngnăng mmộộtt hhợợpp ssốố nn llạạii đưđượợcc nguyên ttốố, , mmặặcc ddùù xxáácc susuấấtt xxảảyy rara kkếếtt kkếếtt luluậậnn llàà ssốố nguyên luluậậnn không CCóó ththểể khkhắắcc phphụụcc bbằằngng ccááchch ththựựcc hihiệệnn thuthuậậtt totoáánn nhinhiềềuu llầầnn đđểể gigiảảmm khkhảả năngnăng xxảảyy rara kkếếtt luluậậnn saisai xuxuốốngng dưdướớii ngưngưỡỡngng chocho phphéépp (cid:206)(cid:206) kkếếtt luluậậnn ccóó đđộộ tin tin ccậậyy caocao
Thuật toán Miller-Rabin Thuật toán Miller-Rabin
nguyên dương nhiên ssốố nguyên
{1, 2, ..., n n –– 1}1}
dương nn = 2= 2kkmm + 1 + 1 vvớớii m m llẻẻ dương aa ∈∈ {1, 2, ..., nguyên dương
) then 1 (mod pp) then
PhânPhân ttííchch ssốố nguyên ChChọọnn ngngẫẫuu nhiên TTíínhnh bb = = aamm mod mod pp if if bb ≡≡ 1 (mod
KKếếtt luluậậnn ““pp llàà ssốố nguyên
nguyên ttốố”” vvàà ddừừngng thuthuậậtt totoáánn
end if end if for ii = 0 to for
= 0 to kk −− 1 1 if if bb ≡≡ pp −− 1 (mod
) then 1 (mod pp) then nguyên ttốố”” vvàà ddừừngng thuthuậậtt totoáánn
KKếếtt luluậậnn ““pp llàà ssốố nguyên
elseelse
bb = = bb22 mod mod pp
end if end if
end for end for KKếếtt luluậậnn ““pp llàà hhợợpp ssốố””
Thuật toán Miller-Rabin Thuật toán Miller-Rabin
Rabin llàà thuthuậậtt totoáánn MillerMiller--Rabin
biased totoáánn ““yesyes--biased dương nn nguyên dương
ThuThuậậtt Monte Carlo”” đđốốii vvớớii phpháátt bibiếếuu ““ssốố nguyên Monte Carlo llàà hhợợpp ssốố””. . XXáácc susuấấtt xxảảyy rara kkếếtt luluậậnn saisai, , nghnghĩĩaa llàà thuthuậậtt totoáánn đưađưa rara nguyên ttốố”” khikhi nn ththậậtt ssựự llàà hhợợpp ssốố, , kkếếtt luluậậnn ““nn llàà ssốố nguyên 25%. chchỉỉ ttốốii đađa llàà 25%. NNếếuu áápp ddụụngng thuthuậậtt totoáánn kk llầầnn vvớớii ccáácc gigiáá trtrịị aa khkháácc nhaunhau mmàà tata vvẫẫnn thuthu đưđượợcc kkếếtt luluậậnn ““nn llàà ssốố nguyên nguyên ttốố”” ththìì xxáácc susuấấtt chchíínhnh xxáácc ccủủaa kkếếtt luluậậnn nnààyy llàà 11--44--kk (cid:198)(cid:198) 11, , vvớớii kk đđủủ llớớnn. .
Xử lý số học Xử lý số học
i phương phpháápp mãmã hhóóaa quyquy ưướớcc ccóó ưuưu điđiểểmm xxửử lýlý
phương phpháápp mãmã hhóóaa khkhóóaa công
nhanh so so vvớớii ccáácc phương
công CCáácc phương
rrấấtt nhanh
ccộộngng. .
Do Do khkhóóaa ddùùngng đđểể mãmã hhóóaa ccũũngng đưđượợcc ddùùngng đđểể gigiảảii mãmã
dung ccủủaa khkhóóaa vvàà mãmã
nênnên ccầầnn phphảảii gigiữữ bbíí mmậậtt nnộộii dung
(secret key). NgayNgay ccảả
khkhóóaa đưđượợcc ggọọii llàà khkhóóaa bbíí mmậậtt (secret key).
trong trưtrườờngng hhợợpp khkhóóaa đưđượợcc traotrao đđổổii trtrựựcc titiếếpp ththìì mãmã
trong
khkhóóaa nnààyy vvẫẫnn ccóó khkhảả năngnăng bbịị phpháátt hihiệệnn. . VVấấnn đđềề khkhóó
khănkhăn đđặặtt rara đđốốii vvớớii ccáácc phương
phương phpháápp mãmã hhóóaa nnààyy
chchíínhnh llàà bbààii totoáánn traotrao đđổổii mãmã khkhóóaa. . í
h
p
i
h
C K
1 K
2 K
4 4
6 8
2
1 6
5
2 2
1
5 Ñoä daøi maõ khoùa (bits) công hơnhơn khkhóóaa bbíí mmậậtt. . công ccộộngng ddễễ bbịị ttấấnn công thông tin thông điđiệệpp sausau khikhi gigiảảii
thông điđiệệpp ban ban đđầầuu trưtrướớcc khikhi mãmã hhóóaa không llạạii llàà mmộộtt vvấấnn đđềề khkhóó khănkhăn. .
công ccộộngng, , viviệệcc công KhKhóóaa công
ĐĐểể ttììmm rara đưđượợcc khkhóóaa bbíí mmậậtt, , ngưngườờii gigiảảii mãmã ccầầnn phphảảii
tin liênliên quanquan đđếếnn ccáácc đđặặcc ttíínhnh
ccóó thêmthêm mmộộtt ssốố thông
ccủủaa vănvăn bbảảnn ngunguồồnn trưtrướớcc khikhi mãmã hhóóaa đđểể ttììmm rara manhmanh
mmốốii gigiảảii mãmã thaythay vvìì phphảảii ssửử ddụụngng phương
phương phpháápp vvéétt
ccạạnn mãmã khkhóóaa. .
NgoNgoààii rara, , viviệệcc xxáácc đđịịnhnh xemxem thông
mãmã ccóó đđúúngng llàà thông
hay hay không
công phpháá hohoàànn totoàànn
ĐĐốốii vvớớii ccáácc khkhóóaa công
ccóó ththểể ththựựcc hihiệệnn đưđượợcc vvớớii điđiềềuu kikiệệnn ccóó đđủủ ttààii nguyên
nguyên
vvàà ththờờii giangian xxửử lýlý. .downto 0 0
TTíínhnh gigiáá trtrịị ccủủaa bibiểểuu ththứứcc zz = = xxbb mod mod nn
ThuThuậậtt totoáánn ““bbììnhnh phương
phương vvàà nhânnhân””
BiBiểểuu didiễễnn bb ddạạngng nhnhịị phânphân bbll--11bbll--22......bb11bb00, , bbii∈∈{0, 1}, 0
zz = 1= 1
xx = = xx mod mod nn
forfor ii = = ll--1 1 downto
z z = = zz22 mod mod nn
ifif bbi i = 1 = 1 thenthen
z z = = zz××xx mod mod nn
end if
end if
end for
end for
Mã hóa đối xứng VS mã hóa bất đối xứng
Mã hóa đối xứng VS mã hóa bất đối xứng
Mã hóa đối xứng VS mã hóa bất đối xứng
Mã hóa đối xứng VS mã hóa bất đối xứng
Đồ thị so sánh chi phí công phá khóa bí mật
và khóa công cộng
Mã hóa đối xứng VS mã hóa bất đối xứng
Mã hóa đối xứng VS mã hóa bất đối xứng