Một số thuật toán phục vụ cho tính toán số lớn

Một phần của tài liệu vấn đề an toàn cảu các hệ mật mã khóa công khai (Trang 42)

G ỉa sử n có k bit trong biểu diễn nhị phân, tức k = L log2n J +1. Sử dụng các kỹ thuật ở bậc trung học, dễ dàng thấy rằng:

M ột phép cộng hai số nguyên k bit có thể thực hiện trong thời gian O(k). Một phép trừ hai số nguyên k bit có thể thực hiện trong thời gian O(k). M ột phép nhân hai số nguyên k bit có thể thực hiện trong thời gian 0 ( k 2). M ột phép chia hai số nguyên k bit có thể thực hiện trong thời gian 0 ( k 2).

M ột phép rút gọn m ột số nguyên theo m odulo n có thể thực hiện trong thời gian 0 ( k 2) (để thực hiện phép chia và tìm phần dư).

M ột phép nhân m odulo xy m od n, thực hiện trong thời gian 0 ( k 2).

Bây giờ ta xét phép lấy luỹ thừa theo m odulo, tức tính hàm dạng y= X e m od n. V iệc t ín h Xe m o d n c ó th ể đ ư ợ c th ự c h iệ n b ằ n g c -1 p h é p n h â n m o d u lo , t u y nhiên khi c lớn th ì cách tính này rất kồng kềnh. Sử dụng biện pháp "bình p h ư ơ n g v à n h â n " sẽ là m g iả m s ố p h é p n h â n m o d u lo c ầ n t h iế t đ ể t ín h Xe m o d n nhiếu nhất là 21, trong đó 1 là số các bit trong biểu diễn nhị phân của c. V ì l<k nên có thể coi Xe m od n được thực hiện trong thời gian 0 ( k 3).

T rong thuật toán "bình phương và nhân", ta coi rằng số m ũ c được biểu diễn

dạng nhị phân như sau:

c=c02 0+ C | 2 ' + . . . +c m2m

trong đó C j = 0 hoặc Cj=l, 0 < i < 1 - 1 .

Thuật toán bình phương và nhân để tính y=xc mod n được m ô tả như sau: Input: X, c, n

O utput: y=xc m od n M ethod:

Begin

y:=i;

for i:= l-l dow n to 0 do begin

y := y 2 m od n;

if Cj=l then y:=yx mod n;

end; End;

V iệc tìm ước chung lốn nhất của hai số nguyên a, b, với a<b, và a có k bit trong biểu diễn nhị phân thì thuật toán E uclide có độ phức tạp tính toán là 0 ( k 3).

T huật toán E uclide được thực hiện như sau: Input: a, b khác không.

O utput: d=U C LN (a,b). M ethod:

Begin

r:= a m od b; w hile r o O do

begin a:=b; b:=r; r:=a m od b; end; d:=b; End;

T a m ới chỉ biết rằn g phần tử b e z*n đều có n g h ịch đảo, song việc tính nó vẫn chưa nói đến. Đ ể tìm phần tử nghịch đảo n h ư vậy chúng ta có thuật toán E ucliđe m ở rộng. T huật toán E uclide m ở rông để tìm phân tử n g h ịch đảo b '1 củ a b e z*n như sau: Input: b, n O utput: b‘‘ M ethod: Begin n0:=n; b0:=b; v = 0 t:= l; q:=L n0/b0J; r:= n 0- qb0; w hile r> 0 do b egin

tem p:= t0-qt;

if tem p>= 0 th en tem p:= tem p m od n; if tem p<0 then tem p:=n-((-tem p) m od n); t0:=t; t:=tem p; n0:=b0; b 0:=r; q:= L n0/b 0J; r:= n 3- qb0; end;

if b0o l then b k h ô n g có nghịch đảo theo m odulo n else b *:=t m od n;

C H Ư Ơ N G 3

T ÍN H AN T O À N C Ủ A C Á C H Ệ M Ậ T M Ã K H O Á C Ô N G K H A I

3.1. T ín h a n to à n c ủ a h ệ m ậ t m ã k h o á cô n g k h a i R S A 3.1.1. H ệ m ậ t m ã R SA

H ệ m ật m ã RSA, được sáng tạo bởi R on R ivert, Adi Sham ir và Len A dlem an [17], đ ã được công b ố lần đầu tiên vào tháng 8 năm 1977 trên tạp ch í Scientific A m erican. H ệ m ật m ã đã được sử dụng rộ n g rãi cho m ục đích bảo m ật và xác thực dữ liệu số. N gày nay hệ m ật m ã R SA được cài đặt trong nhiều hệ thống thương m ại. N ó được sử dụng bởi các m áy chủ W eb và trình duyệt W eb để b ảo m ật thông tin trên đường truyền, nó cũng được sử dụng để bảo m ật và xác thực thư tín, để bảo m ật các phiên truy n hập từ x a và là cốt lõi củ a các hệ th ố n g chi trả điện tử,... (adsbygoogle = window.adsbygoogle || []).push({});

Bây giờ ch ú n g ta có thể m ô tả hệ m ật m ã RSA. H ệ m ật m ã này sử dụng các tính toán tro n g Z N, trong đó N là tích của hai số nguyên tố phân biệt p và q. Hệ m ật m ã được m ô tả như sau:

4-Lấy N = pq là tích của 2 số nguyên tố lớn cùng kích thước. +Đ ặt k h ô n g g ian các bản rõ là: P = Z N.

+Đ ặt k h ô n g gian các bản m ã là: C = Z N.

+ K hông gian khoá là: K = {k = (k p=< N ,e>, k s= < N ,d > ):e d = l m od <p(N)} +VỚÌ m ỗi k = (k p=< N ,e>, ks= < N ,đ> ) e K t a xác định:

*H àm m ã h oá của hệ m ật m ã là E k (m )= m e m od N. *H àm giải m ã củ a hệ m ật m ã là D ự c ) = c d m od N.

T rong đó: kp=<N,e> là khoá m ã công khai, k s= < N ,d > là khoá dịch bí m ật, <p(N )= (p-l)(q-l) là hàm E uler, và c e C , m e P .

M ệnh đề 3.1: Phép m ã hoá và giải m ã của hệ m ật m ã RSA là các phép toán nghịch đảo của nhau.

Chứng minh:

Ta cần chứng m inh:

D k>í(E k (m ))= (m e m od N )d m od N = m với m ọi m e P=Z N. Ta có ed = 1 m od (p(N)

nên ta có ed = t<p(N)+l với m ột số nguyên t > 1 nào đó. Ta xét hai trường hợp: + Với m € Z*N ta có: (m e)d = m l<P(N)+1 m od N = (m(p(N)y X mod N s ( 1 y m m od N = m m od N ( 1 ) +Với m e Z N\Z*N ta có:

*N ếu m =0 thì ta luôn có:(m e)d = m m od N (2) *N ếu m > 0 thì khi đó:

H oặc m :q và m nguyên tố với p: (m e)đ = m m od q, và (m e)d s m t(p(N)+1 m od p

= m típ(N)m m o d p

= (m p l)t(q l)m m o d p

= ( l ) 1(ql>m m o d p = m m od p

H oặc m :p và m nguyên tố với q: (me)d = m mod p, và (m e)đ s m t(p(N)+1 m od q = m t(p(N)m m o d q = (m q l)t(pl)m m o d q = ( l y ^ m m o d q = m m od q

Cả hai trường hợp ta đều có: ' (m e)d = m m od p

«

_ (m c)d = m m od q

V ậy ((m e)d - m ) : p và ((m e)d - m ) : q. D o đó ((m e)d - m ) : N =pq=B C N N (p, q).

V ậy ta có: (m e)d = m m od N (3)

Vậy từ ( 1 ), (2) và (3) ta được (m e)d = m m od N với mọi m e Z N. Vậy Dks(E k (m ))= (m e m od N )d m od N = m với m ọi m € Zn-

Sau đây ch ú n g ta sẽ m inh hoạ hệ m ật m ã RSA bằng m ột ví dụ nhỏ (tất nhiên là không an toàn).

Gỉa sử Bob chọn p=101 và q=113. K hi đó N = 1 0 1 x l 13=11413 và <p(N)= 100x112=11200. V ì 11200=26527, nên có thể dùng m ột số nguyên e

như một số mũ m ã hoá khi và chỉ khi e không chia hết cho 2, 5, 7. Vì trong thực tế Bob không thể phân tích được (p(N), nên anh ta sẽ kiểm tra điều kiện UCLN((p(N), e )= l bằng thuật toán Euclide. G ỉa sử Bob chọn e= 3533, khi đó theo thuật toán E uclide m ở rộng anh ta tính được:

e '1 = 6597 mod 11200 Bởi vậy, số m ũ m ật để giải m ã của Bob là d=6597.

Bob sẽ công bố N = 1 1413 và e=3533 trong m ột danh bạ công khai. Bây giờ, giả sử A lice m uốn gửi bản rõ m =9726 tới Bob, cô ta sẽ tính:

c= 97263533 m od 11413 = 5761

rồi gửi bản m ã 5761 trên kênh tới Bob. K hi Bob nhận được bản m ã 5761, anh ta sử dụng số m ũ đ m ật để tính và được bản rõ: (adsbygoogle = window.adsbygoogle || []).push({});

IĨ1=57616597 m od 11413 =9726

Độ an toàn của hệ m ật m ã RSA được dựa trên g iả thiết là hàm m ã Ek(m )=m c m od N là h àm m ột phía cửa sập. Bởi vậy thám m ã sẽ không có khả năng về m ạt tính toán để giải m ã m ột bản mã. Cửa sập cho phép Bob giải m ã được chính là thông tin về phép phân tích thừa số N. Vì Bob biết phân tích này, anh ta có thể tín h (p (N )= (p -l)(q -l) và rồi tính số m ũ giải m ã d bằng cách sử dụng thuật toán E uclide m ở rộng. Trong phần sau chúng ta sẽ đi nghiên cứu kỹ về tính an toàn của hệ m ật m ã RSA.

3.1.2. Tính an toàn của hệ mật mã RSA

Độ an toàn của hệ m ật m ã RSA dựa vào độ khó của bài toán phân tích số nguyên ra thừa số nguyên tố. Trước hết ta xét bài toán phân tích số nguyên.

Đ ịnh nghĩa 3.2: Bài toán phân tích số nguyên như sau: Cho m ột số nguyên dương n, hãy tìm phân tích thừa số nguyên tố của nó.

Đ ã có m ột khối lượng khổng lồ các tài liệu về các thuật toán phân tích thừa số. Các thuật toán nổi tiếng như phương pháp p và thuật toán p-1 của Pollard, thuật toán p+1 của W illiam s, thuật toán liên phân số và phép chia thử. Đ ặc biệt là ba thuật toán hiệu quả nhất trên các số lớn là sàng bậc hai, thuật toán đường cong elliptic và sàng trường số.

Thời gian chạy tiệm cận của thuật toán: 1/2 Sàng bậc hai là 0 ( e l+0(1)(lnnlnlnn) ),

đường cong elliptic là 0 ( e 1+0(!)(2,nplnlnp) ), và sàng trường số là 0 ( e !'92+0(1)(Inn) (lnlnn) ).

T rong đó 0 ( 1 ) là m ột hàm của n, hàm này tiến tới 0 khi n tiến tới vô cùng và p là thừa số nguyên tố nhỏ nhất của n.

Như vây, trong trường hợp tổng quát với n đủ lớn thì với những thuật toán hiệu quả nhất hiện nay để phân tích được n phải cần m ột lượng thời gian rất lớn, không thể chấp nhận được trong thực tế. C hính vì vậy, chúng ta coi bài toán phán tích số nguyên ra thừa số nguyên tố là m ột bài toán khó.

Đ ịnh nghĩa 3.3: Bài toán RSA như sau: Cho m ột số nguyên dương N là tích của hai số nguyên tố lẻ phân biệt p và q, m ột số nguyên dương e sao cho Ư CLN(e, ( p - l ) ( q - l ) ) = l , và m ột số nguyên c. H ãy tìm m ột số nguyên m sao cho me=c m od N.

Đ ộ khó của bài toán RSA tạo nên cơ sở cho độ an toàn của hệ m ật m ã RSA.

Ta thấy ràng nếu cho phân tích của N thì bài toán RSA có thể giải dễ dàng, nhận xét này được khảng định như sau.

K hảng định 3.4: Bài toán RSA qui dẫn được trong thời gian đa thức về bài toán phân tích số nguyên.

Chứng minh:

G ỉa sử ta đã biết p và q do vậy tính được (p (N )= (p -l)(q -l), vì vậy ta tính được d=e 1 m od cp(N) bằng thuật toán E uclide m ở rộng, do biết d nên ta tìm được m =cđ m od N.

N hư vậy, ta m ới chỉ chứng m inh được: bài toán RSA qui dẫn được trong thời gian đa thức về bài to án phân tích số nguyên. Còn chiều ngược lại, bài toán phân tích số n guyên có qui dẫn được trong thời gian đa thức về bài toán RSA không? vẫn chưa được chứng m inh. Vì có m ột điều không ngoài qui luật là ta vẫn có thể giải bài toán RSA m à không cần tính d. Đ ến đây, ta có thể khảng định rằng bài toán phân tích số N ra thừa số nguyên tố không dễ hơn bài toán RSA. M ặc dù vậy, m ọi người vẫn tin rằng bài to án RSA và bài toán phân tích số nguyên ra thừa số nguyên tố là tương đương đa thức.

Liệu có phương pháp giải bài toán RSA khác với phương pháp phân tích N không? Trước tiên ta thấy rằng thám m ã chỉ cần tính được cp(N) là đủ. Nếu đã biết N và <p(N) và N là tích của hai số nguyên tố p và q thì có thể dễ dàng phân tích được N bằng cách giải hệ phương trình sau để tìm hai số p và q chưa biết:

' N =pq

*<

„ Ọ(N) = ( p - l) ( q - l)

Nếu thay q= N /p vào phương trình thứ hai thì ta sẽ thu được phương trình bậc hai của biến chưa biết p:

p2 - (N-(p(N) + l)p + N = 0

Hai nghiệm của phương trinh này là p và q là các nhân tử của N. Bởi vậy nếu thám m ã biết được (p(N) thì anh ta có thể phân tích được N và giải được bài toán RSA. Nói cách khác, việc tính cp(N) không dễ hơn việc phân tích N.

Chúng ta có m ột kết quả nữa là việc tìm khoá bí m ật d và phân tích số N là tương đương đa thức. V ì thế, không có gì để giấu phân tích ra thừa số của N đối với m ột người đã biết d. Việc biết d thì sẽ giải được bài toán RSA, song có m ột điểu không ngoài qui luật là ta vẫn có thể giải bài toán RSA m à không cần tính d.

K hảng định 3.5: C ho <N , e> là khoá công khai của hệ m ật m ã RSA. Dựa vào khoá bí m ật d, người ta có thể phân tích được N =pq. Ngược lại, cho phân tích của N, người ta có thể tìm được d m ột cách hiệu quả.

Chứng minh:

+Cho phân tích của N, người ta có thể tìm được d m ột cách hiệu quả.

G ỉa sử ta đã biết p và q do vậy tính được (p (N )= (p -l)(q -l), vì vậy ta tính được d = e '] m od <|>(N) bằng thuật toán E uclide m ở rộng.

+Cho <N , e> là khoá công khai của hệ m ật m ã RSA. Dựa vào khoá bí m ật d, người ta có thể phân tích được N =pq. (adsbygoogle = window.adsbygoogle || []).push({});

Chúng ta xét phương trình đồng dư sau: x2= l m od N, với N =pq

T heo định lý phần dư T rung Q uốc phương trình trên có 4 nghiệm theo m od N, 4 nghiệm đó thu được từ 4 hệ phương trình sau:

r X=1 mod p I X=1 mod q

x= 1 m od p [ X—-1 mod q {x = -1 mod p X=1m od q r x = - 1 m od p I x = -l m od q

T rong 4 nghiệm đó, có hai nghiệm x = ± l m od N, được gọi là hai nghiệm tầm thường, và hai nghiệm khác, ký hiệu là w và -W, khác ±1, là hai nghiệm không tầm thường. Ta lại có: N i(w -l)(w + l) và N không là ước sô' của m ột thừa số nào trong v ế phải cả, do đó ta phải có: U C L L (w + l, N )=p, hoặc U C L L (w + l, N)=q; và tương tự ta có: U C L L (w -l, N )=p, hoặc U C L L (w -l, N)=q. N hư vậy, nếu biết m ột nghiệm không tầm thường củ a x2= l m od N, với N=pq, thì sẽ biết được p và q, hay nói cách khác, tính được p, q trong thời gian đa thức.

Bây giờ giả sử biết d. Ta thử đi tìm m ột căn bậc 2 không tầm thường của đơn vị theo m od N. Theo định nghĩa d và e, chúng ta biết rằng k = d e -l= 0 m od (p(N) là bội của cp(N). V ì (p(N) chấn, nên k viết được dưới dạng k=2tr với r lẻ và t > l . C húng ta có g k= l m od N với m ọi g e Z * N, cho nên g 1^ là căn đơn vị bậc hai m odulo N. T a thấy rằng, nếu g được chọn ngẫu nhiên từ Z*N thì với xác suất k hông nhỏ hơn 1/2, m ột trong các phần tử gk/2, g k/4,..., gk/2 là căn bậc hai của đơn vị. Tất cả các phần tử trong dãy có thể được tính có hiệu qủa trong thời gian 0 ( n 3) với n=Iog2N.

N hư vậy, sức m ạnh của hệ m ật m ã khoá công khai RSA nằm ở độ khó được g iả định củ a việc phân tích N =pq, với p và q là những số nguyên tố lớn.

3.2. Tính an toàn của hệ mật mã khoá công khai ElGamal3.2.1. H ệ mật mã ElGamal

Một phần của tài liệu vấn đề an toàn cảu các hệ mật mã khóa công khai (Trang 42)