HỆ MẬT MÃ KHĨA CƠNG KHAI RSA

Một phần của tài liệu Các thuật toán tối ưu hóa trong bảo mật thông tin.pdf (Trang 29)

Hệ mật RSA đƣợc xây dựng năm 1978 bởi ba tác giả R.L.Rivest, A.Shamir và L.Adleman. Hệ mật RSA đƣợc thiết kế làm việc trên trƣờng số ZN, dựa trên cơ sở độ khĩ giải của bài tốn phân tích số nguyên N lớn thành các thừa số nguyên tố p và q khác nhau.

Bài tốn 2.1(Bài tốn phân tích số nguyên):

Cho một số nguyên dƣơng N, tìm các thừa số nguyên tố pi của N để N = p1e1. p2e2...pkek , với pi là những số nguyên tố phân biệt và ei 1 là các số nguyên (với i = 1,..., k).

Ví dụ : Với N=12, ta cĩ N=22.31

Bài tốn này khĩ giải khi N là một số nguyên lớn, cĩ nhiều thuật tốn để giải bài tốn này. Nhƣng hiện nay vẫn chƣa cĩ thuật tốn nào hiệu quả để phân tích số nguyên N cĩ khoảng 232 chữ số thập phân (768-bits) trở lên.

Bài tốn 2.2(Bài tốn RSA):

Cho số nguyên dƣơng N, N=p*q với p và q là các số nguyên tố phân biệt, số nguyên e sao cho thỏa mãn gcd(e, (p – 1) * (q – 1)) = 1, và số nguyên c. Tìm một số nguyên m sao cho me c (mod N).

Bài tốn RSA cũng cĩ độ khĩ tƣơng tự nhƣ bài tốn phân tích số nguyên, nhƣng nĩ dễ dàng đƣợc giải nếu nhƣ biết đƣợc hai số nguyên tố p và q.

2.2.2 Định nghĩa các tập làm việc của hệ RSA

 Tập các bản rõ (plaintext): P = ZN = {0, 1,…, N-1}.

 Tập các bản mã (ciphertext): C = ZN = {0, 1,…, N-1}.

 Tập các khĩa: K = {(n, p, q, e, d): N = p * q, e * d 1(mod φ(N))}

2.2.3 Quá trình tạo khố, mã hố và giải mã

a) Tạo khĩa:

Tạo hai số nguyên tố phân biệt p và q lớn, sao cho bài tốn phân tích thật sự là khĩ giải (kích cỡ mỗi số khoảng 512 bits  1024 bits).

Tính N = p* q và φ(N) = (p – 1) * (q – 1).

Chọn một số nguyên ngẫu nhiên e sao cho 1 < e < φ(N) và gcd(e, φ(N)) = 1

Sử dụng thuật tốn Euclid mở rộng, để tính số nguyên d duy nhất, sao cho 0 < d < φ(N) và e * d  1 mod φ(N) (d là nghịch đảo của e modulo N)

Hai số (e, N) làm khĩa cơng khai, cịn (d, N) đƣợc giữ bí mật làm khĩa riêng. Các số nguyên tố p, q sẽ bị xĩa khi kết thúc quá trình tạo khĩa.

Giả sử để gửi thơng điệp M cho ngƣời B. Ngƣời A thực hiện nhƣ sau:

 Lấy khĩa cơng khai của ngƣời nhận B: (e, N).

 Biến đổi thơng điệp M thành những số nguyên Mi tƣơng ứng sao cho Mi < N, (i = 1,…, k). Theo phép biến đổi sau:

- Biến đổi các ký tự trong thơng điệp M thành các số nguyên tƣơng ứng, thí dụ theo qui tắc: Dấu cách  00, A  01, B  02,..., Z  26.

- Chia thơng điệp vừa biến đổi thành k nhĩm cĩ chiều dài bằng nhau, mỗi nhĩm biểu diễn một số nguyên Mi  {0,…, N – 1} (với 1 ≤i ≤k).

 Thực hiện mã hĩa lần lƣợt cho từng số Mi Ci bằng cách: Ci = Eke(Mi) = Mie (mod N).

Tập các số nguyên {C1, C2,...,Ck} là bản mã để gửi đến ngƣời nhận B.

c) Giải mã:

Ngƣời nhận B thực hiện các bƣớc sau:

Thực hiện giải mã lần lƣợt từng số nguyên Ci  Mi bằng cách: Mi = D(Ci) = Cid (mod N) với 0 ≤Mi < N, (d là khố bí mật của B).

Thực hiện phép biến đổi ngƣợc lại từ các số Mi thành các chuỗi ký tự tƣơng ứng để khơi phục lại nội dung thơng điệp M ban đầu.

Bảng 2.2: Tĩm tắt các bước tạo khố, mã hố, giải mã của Hệ RSA (adsbygoogle = window.adsbygoogle || []).push({});

Tạo khố: Tạo 2 số nguyên tố lớn p và q

* Tính N = p * q và Tính φ(N) = (p-1) * (q-1). * Chọn 1< e < φ(N): gcd(φ(N), e) = 1.

* Tính d = e-1 mod φ(N) (dùng thuật tốn Euclid mở rộng). Khĩa cơng khai: (e, N) Khĩa riêng: (d, N)

Mã hĩa: Khối bản rõ M < N * Tính: C = Me mod N

* Gửi khối bản mã (số nguyên) C đến ngƣời nhận

2.3.4 Tính đúng của quá trình giải mã

Từ: ed 1mod φ(N) φ(N) | (ed – 1).

 φ(pq)| (ed – 1)

 φ(p) * φ(q) | (ed – 1) (do p, q là các số nguyên tố)

 φ(p) | (ed – 1) (1)

và φ(q) | (ed – 1) (2)

Từ (1)  k  Z: ed -1= k φ(p) = k (p-1) (p là số nguyên tố) (3) Xét trƣờng hợp tổng quát với mọi số M  Zn , khi nâng lũy thừa ed ta cĩ:

Med M(ed –1) + 1 (mod p)

ed (M(ed-1)) * M (mod p) (4) Từ (3) & (4)ed (Mk(p - 1)) * M (mod p) (5)

Vì p là số nguyên tố, vậy bất kỳ số M  ZN cĩ hai trƣờng hợp: M nguyên tố cùng nhau với p (nghĩa là gcd(M, p) = 1) hoặc M là bội số của p (nghĩa là gcd(M, p) = p).

Trường hợp 1: gcd (M, p) = 1

Vậy  M p-1 1 (mod p) (định lý Fermat) Từ: (5)  Med (1)k M (mod p)

 Med M (mod p) (6)

Trường hợp 2: Nếu gcd(M, p) = p  M  0 (mod p). Đồng thời lũy thừa số

M lên một số nguyên bất kỳ, thì cũng chia hết cho p. Nghĩa là Med  0 (mod p ). Vậy trƣờng hợp 2 cũng thỏa mãn phƣơng trình (6)

Với cách tính tƣơng tự với q, từ (2)  Med M (mod q) (7) Từ (6) & (7)  Med M (mod pq) M (mod N).

Ví dụ 2.1 : Minh họa của hệ mật mã RSA

a) Tạo khĩa:

Chọn p và q là những số nguyên tố nhỏ với mục đích minh họa

 Chọn hai số nguyên tố p = 41, q = 67;

 Tính N = 47 * 61 = 2747 và φ(N) = (41- 1) * (67-1) = 2600 ;

 Tìm phần tử nghịch đảo d = 179 (dùng thuật tốn Euclid mở rộng) ;

 Cơng bố khĩa cơng khai là cặp số ( e = 49, N = 2747), cịn số d = 179 đƣợc giữ làm khĩa riêng.

b) Mã hĩa: Giả sử nội dung cần mã hố là M = “MA HOA CONG KHAI ”

Biến đổi các ký tự của thơng điệp thành các số tƣơng ứng nhƣ sau: (adsbygoogle = window.adsbygoogle || []).push({});

M A H O A C O N G K H A I

13 01 00 08 15 01 00 03 15 14 07 00 11 08 01 09

Chia thơng điệp thành 8 khối, mỗi khối gồm 4 chữ số biểu diễn một số nguyên Mi < N, với Mi {1301;0008;1501;0003;1514;0700;1108;0109}.

 Mã hĩa lần lƣợt từng số Mi : Ci = Mi59 ( mod 2747) (8) Mã hĩa số đầu tiên M1 = 1301 theo cách tính (8) ta cĩ:

C1 = M159 mod 2747  130159 mod 2747 = 2352.

Tiếp tục tính các số C2 ,...,C8 từ các số M2 ,..., M8 theo (8). Ta cĩ đƣợc kết quả ở cột Ci là bản mã để gửi đến ngƣời nhận: Khối 1 2 3 4 5 6 7 8 Mi 1301 0008 1501 0003 1514 0700 1108 0109 Ci=E(Mi) 2352 2537 1745 2733 1203 2651 0534 0454 c) Giải mã: Thực hiện giải mã lần lƣợt từng số ở cột Ci (1≤i ≤ 8) Mi = Dkd(Ci)  Ci179 ( mod 2747) (9) Giải mã số đầu tiên C1 = 2352 theo cách tính (2.9) ta cĩ: M1 = C1179 mod 2747 = 2352179 mod 2747 = 1301

Tiếp tục tính các số M2,..., M8 từ các số C2,...,C8 theo (9) ta cĩ bảng minh họa các số Mi đƣợc giải mã từ các số Ci nhƣ sau:

Khối 1 2 3 4 5 6 7 8

Ci=E(Mi) 2352 2537 1745 2733 1203 2651 0534 0454

Thực hiện phép biến đổi ngƣợc từ các số Mi thành các chuỗi ký tự tƣơng ứng để khơi phục lại thơng điệp gốc ban đầu M = "MA HOA CONG KHAI".

2.2.4 Chi phí thực hiện trong quá trình mã hĩa và giải mã

Chi phí cho quá trình mã hố:

Tính C = Me mod N, với số mũ e thƣờng đƣợc chọn cĩ dạng e = 2x + 1 (với xmax = 16) để phép tính lũy thừa modulo đƣợc thực hiện nhanh. Vì biểu diễn nhị phân của những số dạng này chỉ cĩ hai bít giá trị 1 ở đầu và cuối. Nhƣ vậy quá trình mã hĩa cĩ nhiều nhất là 16 phép tính bình phƣơng và 1 phép nhân, do đĩ tổng chi phí của quá trình mã hĩa là: 17(2n2 + 2n) = 34(n2+n).

Chi phí cho quá trình giải mã:

Quá trình giải mã của hệ RSA, chỉ thực hiện phép tính M = Cd mod N, với số mũ bí mật d thƣờng rất lớn (d  N) để đảm bảo độ an tồn cho dữ liệu. Vì vậy chi phí thực hiện giải mã của hệ RSA tƣơng đƣơng với chi phí để thực hiện phép tính lũy thừa nhanh là: 3n3 + n2.

2.2.5 Đánh giá hệ mật mã khĩa cơng khai RSA 2.2.5.1 Độ an tồn

Hệ RSA đƣợc thiết kế dựa trên độ khĩ giải bài tốn phân tích ra thừa số nguyên tố. Hầu hết các phƣơng pháp thám mã hệ RSA nhƣ tìm các thừa số p và q, tìm φ(n), hay tìm khĩa riêng d… đều khĩ nhƣ bài tốn phân tích.

Sau đây, ta cĩ bảng chi phí thời gian cần thiết để phân tích những hệ mật mã RSA cĩ kích cỡ số modulo N khác nhau, bằng những thuật tốn phân tích tốt nhất hiện nay (Bảng 2.3). Ở đây chi phí tính tốn đƣợc tính bằng đơn vị MIPS-Years (đĩ là số các phép tính đã hồn thành bởi một máy trong thời gian một năm, với tốc độ khoảng 106 phép tính trên một giây, ta cĩ 1MIPS-Years  245 phép tính).

Bảng 2.3: Bảng chi phí thời gian cần thiết để phân tích các số nguyên N Hệ RSA Số chữ số thập phân Số bits Thuật tốn Năm Chi phí phân tích (MIPS-Years) RSA-129 129 426 MPQS 1994 5.000 RSA-130 130 430 GNFS 1996 1.000 RSA-140 140 465 GNFS 1999 2.000 RSA-155 155 512 GNFS 1999 8.000 RSA-576 174 576 GNFS 2003 13.000

Vào ngày 22/8/1999 một nhĩm các nhà nghiên cứu đã hồn thành việc phân tích số N dùng trong hệ RSA-155 cĩ 155 chữ số thập phân (512-bits) bằng thuật tốn General Number Field Sieve (GNFS). Sau một thời gian 7 tháng trên mạng máy tính cĩ 300 workstation yêu cầu khoảng 8000 MIPS-Years.

Việc phân tích số nguyên N thành các thừa số nguyên tố p, q nhằm mục đích bẻ gãy hệ mật mã RSA là điều khĩ cĩ thể tính tốn nổi, nếu nhƣ trong quá trình thiết kế hệ RSA ta chọn số nguyên N lớn. Tuy nhiên, độ dài của số nguyên N là lớn hay nhỏ cịn phụ thuộc vào mối liên hệ giữa tốc độ giải mã và độ an tồn của hệ RSA. Số N sử dụng cho modulo RSA hiện nay phải cĩ ít nhất khoảng 232 chữ số thập phân (768-bits) sẽ cho ta một độ an tồn đủ để chống lại những tấn cơng sử dụng các kỹ thuật phân tích hiện nay. Trong thực tế, nếu trong quá trình thiết kế sử dụng số N cĩ kích cỡ khoảng 1024-bits là rất an tồn, cĩ thể chống lại các kỹ thuật phân tích hiện tại và các kỹ thuật khác phát triển trong tƣơng lai.

2.2.5.2 Hiệu suất thực hiện và ứng dụng

Tốc độ thực hiện của hệ RSA là một trong những điểm yếu so với các hệ mật mã khĩa đối xứng. Vì các quá trình mã hĩa và giải mã của hệ RSA đều thực hiện các phép tính cĩ các tốn hạng là những số nguyên cực lớn ( thơng thƣờng các phép tốn này đều đƣợc xây dựng hay ”giả lập” lại).

Theo ƣớc tính, thực hiện mã hĩa và giải mã bằng hệ mật mã RSA chậm hơn 100 lần so với hệ mật mã khĩa đối xứng DES (bằng phần mềm). Và chậm hơn 1000 lần so với DES (bằng phần cứng). Vì lý do đĩ mà trên thực tế hệ mã khố cơng khai RSA ít đƣợc dùng vào mục đích mã hĩa cho khối lƣợng dữ liệu lớn, mà chỉ thƣờng đƣợc ứng dụng để mã hĩa khối dữ liệu nhỏ. Nhƣ vậy để khắc phục một phần nào đĩ cho cơng việc mã hĩa và giải mã bằng hệ mật mã RSA đƣợc nhanh hơn thì chúng ta nghiên cứu thêm hệ mật mã RSA WITH CRT nhƣ sau :

2.3 HỆ MẬT MÃ RSA WITH CRT

Ta thấy rằng, quá trình giải mã của hệ mật mã RSA cĩ độ phức tạp (M = Cd mod N) phụ thuộc trực tiếp vào kích cỡ của các số nguyên d và N. Để cĩ thể giảm đƣợc kích cỡ của hai số nguyên d và N và tăng tốc độ giải mã, chúng ta dựa vào định lý đồng dƣ Trung hoa (CRT-Chinese Remainder Theorem) sau:

2.3.1 Định lý đồng dƣ Trung Hoa

Định lý đồng dƣ Trung Hoa (CRT) cho phép giảm số lần tính tốn của quá trình giải mã ở hệ RSA, bằng cách thiết lập một ánh xạ giữa tập Z N và tích Đề-các

  k 1 i ni Z , với N =   k 1 i i

n và các số ni (1 i  k) nguyên tố cùng nhau. Cho phép thực hiện các phép tính lũy thừa modulo trên các trƣờng số Zni nhỏ hơn, thay vì phải tính trực tiếp trên trƣờng số Z N lớn nhƣ cách tính trong hệ RSA chuẩn. (adsbygoogle = window.adsbygoogle || []).push({});

Định lý 2.2:(định lý đồng dƣ Trung Hoa)

Giả sử p1, p2,...., pk là các số nguyên dƣơng nguyên tố cùng nhau từng đơi một (gcd(pi, pj) = 1, khi i  j) và cho x1, x2,..., xk là các số nguyên. Khi đĩ hệ phƣơng trình đồng dƣ sau đây:

x  x1 (mod p1) x  x2 (mod p2) x  xk (mod pk)

x =     k 1 i i i ic s N x mod (10) Trong đĩ: i i p N c  và 1(modpi) i i c s   , i = 1, 2,…, k

Vậy, theo định lý đồng dƣ Trung Hoa, với bất kỳ số nguyên dƣơng x < N đều cĩ thể biểu diễn dƣới dạng một bộ gồm k phần tử duy nhất [x1, x2,…, xk] và ngƣợc lại, ở đây các xi là số dƣ của phép tính x mod pi (i = 1, 2…, k). Sự chuyển đổi số nguyên x thành các số dƣ đƣợc thực hiện bởi phép rút gọn xi = x mod pi. Cịn sự chuyển ngƣợc lại khĩ hơn, địi hỏi tính tốn liên quan đến cơng thức (10).

Hệ quả 2.1: Nếu số nguyên x khơng chia hết cho p, và n  m mod (p – 1) thì xn 

xm mod p.

Từ hệ quả trên, khi thực hiện phép tốn lũy thừa với modulo là một số nguyên tố p thì số mũ cĩ thể đƣợc rút gọn mod (p – 1). Điều này cho phép thực hiện quá trình giải mã của hệ RSA nhanh hơn, vì các số mũ cĩ kích cỡ nhỏ hơn.

Thuật tốn 2.1:Định lý đồng dư Trung Hoa tổng quát

Input [x1, x2,...., xk], [p1, p2,...., pk]

Output x (với x mod pi = xi với i =1, 2,..., k) 1. x = 0; N = p1;

2. For (i = 2; i  k; i++) {N = N * pi;} /* N là tích các số pi */ 3. For (i = 1; i  k; i++) /* tính nghiệm x */

{ ci = (N/pi); si = ci-1 mod pi;

x = (x + si* ci* xi) mod N; }

4. Return x;

Trƣờng hợp đặc biệt của định lý đồng dƣ Trung Hoa đƣợc áp dụng cho quá trình giải mã ở hệ RSA, khi modulo N là tích của hai số nguyên tố p vàq (N = p *

[Mp, Mq], thỏa mãn Mp = M mod p và Mq = M mod q. Cho nên ta cĩ thể giải mã thơng điệp, bằng cách tính trƣớc hai số Mp và Mq rồi kết hợp chúng với cơng thức (10). Trong đĩ Mp, Mq đƣợc tính nhờ vào hệ quả (2.1) nhƣ sau:

Mp = M mod p = (Cd mod N) mod p = Cd mod p (vì N = p * q)

= Cd mod p – 1 mod p = Cdp mod p (với dp = d mod (p – 1).

Hơn nữa, dễ dàng thấy rằng bản mã C cũng cĩ thể rút gọn bởi mod p, trƣớc khi tính Mp, Mq. Nhƣ vậy, kích cỡ các tốn hạng Cp = C mod p, Cq = C mod q, và dp

= d mod (p – 1), dq = d mod (q – 1), đều giảm đi một nữa. Vậy, ta cĩ cách tính Mp = Cpdp mod p và Mq = Cqdq mod q.

Thuật tốn 2.2: Định lý đồng dư Trung Hoa với modulo N = p* q

Input Mp, Mq, p, q, N

Output M (sao cho M = Mp mod p và M = Mq mod q) 1. y = q-1 mod p; 2. M = y * q * Mp mod N; 3. y = p-1 mod q; 4. M = (M + y * p * Mq) mod N; 5. Return M; 2.3.2 Thuật tốn Garner

Thuật tốn Garner là một cải tiến hơn nữa về tốc độ giải mã so với thuật tốn CRT vừa xét. Ở đây các bƣớc tính phần tử nghịch đảo đã bị loại bỏ, thuật tốn này cũng tìm số nguyên M từ các số Mp = M mod p và Mq = M mod q. Ngồi ra thuật tốn cịn cĩ tham số đầu vào: p’ = p-1 mod q đƣợc tính tốn trƣớc.

Thuật tốn 2.3: Thuật tốn Garner

Input Mp, Mq, p, q, (p’ = p-1mod q), N Output M

1. V = (Mq – Mp) mod q; 2. V = V * p’ mod q;

3. M = V * p mod N; 4. M = M + Mp mod N; 5. Return M;

Phân tích chi phí thực hiện thuật tốn (adsbygoogle = window.adsbygoogle || []).push({});

Giả sử số N cĩ kích cỡ n-bits, và các số nguyên tố p, q cĩ kích cỡ n/2-bits. Thuật tốn thực hiện một phép nhân của các số nguyên cĩ kích cỡ n/2-bits để tính V tại (bƣớc 2) với chi phí 2(n/2)2+2(n/2)  n2/2 + o(n2), và một phép nhân của số nguyên cĩ kích cỡ n-bits để tính M ở (bƣớc 3) với chi phí 2n2 +2n  2n2 + o(n2). Vậy chi phí của thuật tốn là: 5n2/2 + o(n2).

Ví dụ 2.3: Minh họa các bước thực hiện thuật tốn Garner

Cho hai số nguyên tố p = 47 và q = 61, các số dƣ Mp = 49 và Mq = 34, sử dụng thuật tốn Garner, hãy tìm số nguyên M từ các số Mp và Mq.

Tính trƣớc: N = p * q = 2747 và p’ = p-1 mod q = 47-1 mod 61 = 13 b1: V = (Mq – Mp) mod q = (34 – 12) mod 61 = -12 mod 61 = 49 (vì 12+49  0 mod 61) b2: V = V * p’ mod q = 49 *13 mod 61 = 27 b3: M = V * p mod N = 27 * 47 mod 2747 = 1269 b4:  M = M + Mp mod N =1269 + 46 mod 2747 = 1315

2.3.3 Các quá trình tạo khố, mã hố và giải mã

Một phần của tài liệu Các thuật toán tối ưu hóa trong bảo mật thông tin.pdf (Trang 29)