Hệ mật mó khoỏ cụng khai RSA

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu hệ mật mã khoá công khai trong giao dịch điện tử (Trang 42)

Chương 3 : Hệ mật mó khoỏ cụng khai

3.1 Hệ mật mó khoỏ cụng khai RSA

í tưởng về một hệ mật mó RSA đó đựơc Diffie và Hellman đưa ra từ năm 1976, tuy nhiờn, hệ mật này đựơc thực hiện đầu tiờn bởi Rivest, Shamir và Adleman vào năm 1977. Do đú mà RSA chớnh là chữ viết tắt của 3 chữ cỏi đầu của 3 nhà phỏt minh núi trờn.

Định nghĩa: Với p và q là 2 số nguyờn tố, n=p*q. Đặt P=C=Zn, ta cú

(n)=(p-1)*(q-1). Ta định nghĩa với K là tập chứa cỏc số n, p, q, e, d; sao cho

n=p*q, ed 1 (mod (n)), ký hiệu là K=  (n,p,q,e,d): n=p*q, p, q là cỏc số nguyờn tố, ed 1(mod (n)), quy tắc mó và quy tắc giải mó được xỏc định như sau:

Quy tắc mó: eK(x) = xe mod n

Quy tắc giải mó: dK(y) = yd mod n Với x, y  Zn Cỏc giỏ trị n và e được cụng khai, e được gọi là số mũ mó hoỏ, n được gọi là modulus của hệ mật, cỏc giỏ trị p, q, d được giữ bớ mật, d được gọi là số mũ giải mó.

Tạo khoỏ

1. Tạo ngẫu nhiờn hai số nguyờn tố lớn phõn biệt là p và q cú kớch thước giống nhau;

2. Tớnh n = pq và (n) = (p-1)(q-1);

3. Chọn một số ngẫu nhiờn e thoả món 1 < e < (n) và UCLN(e,(n)) = 1;

43 4. Sử dụng thuật toỏn Euclid mở rộng để tỡm phần tử nghịch đảo e-1 của e; (chớnh là số mũ giải mó d); sau đú chọn (n, e) là khoỏ cụng khai và d là khoỏ bớ mật;

Gửi/nhận tin

1. A lấy khoỏ cụng khai của người nhận tin B là (n,e) trong chứng chỉ số của B;

2. Chuyển bản tin gốc thành một số nguyờn m trờn Zn, sau đú tớnh c = me mod n, gửi bản mó c đi cho người nhận B;

3. B sử dụng khoỏ cỏ nhõn d để tớnh m = cd mod n. Vớ dụ: p = 61;q = 53;n = 3233; e = 17; d = 2753

Khoỏ cụng khai là (e,n) = (17,3233); Khoỏ cỏ nhõn là d = 2753 Phộp mó hoỏ: Mó (M) = M^e mod n = M^17 mod 3233 = C Phộp giải mó: Giải mó(C) = C^d mod n = C^2753 mod 3233 Giả sử m = 123, khi đú Mó hoỏ(123) = (123^17) mod 3233 = 337587917446653715596592958817679803 mod 3233 = 855 Giải mó: Giải mó(855) = (855^2753) mod 3233 Thuật toỏn để tớnh giỏ trị 855^2753 mod 3233 như sau

44 2753 = 1010110000012 = 1 + 2^6 + 2^7 + 2^9 + 2^11 = 1 + 64 + 128 + 512 + 2048 Tớnh cỏc giỏ trị: 855^1 = 855 (mod 3233) 855^2 = 367 (mod 3233) 855^4 = 367^2 (mod 3233) = 2136 (mod 3233) 855^8 = 2136^2 (mod 3233) = 733 (mod 3233) 855^16 = 733^2 (mod 3233) = 611 (mod 3233) 855^32 = 611^2 (mod 3233) = 1526 (mod 3233) 855^64 = 1526^2 (mod 3233) = 916 (mod 3233) 855^128 = 916^2 (mod 3233) = 1709 (mod 3233) 855^256 = 1709^2 (mod 3233) = 1282 (mod 3233) 855^512 = 1282^2 (mod 3233) = 1160 (mod 3233) 855^1024 = 1160^2 (mod 3233) = 672 (mod 3233) 855^2048 = 672^2 (mod 3233) = 2197 (mod 3233) Nờn: 855^2753 (mod 3233) = 855^(1 + 64 + 128 + 512 + 2048) (mod 3233) = 855^1 * 855^64 * 855^128 * 855^512 * 855^2048 (mod 3233) = 855 * 916 * 1709 * 1160 * 2197 (mod 3233) = 794 * 1709 * 1160 * 2197 (mod 3233) = 2319 * 1160 * 2197 (mod 3233) = 184 * 2197 (mod 3233) = 123 (mod 3233)

Độ mật của hệ RSA được dựa trờn giả thiết rằng hàm mó y = eK(x) = xe

45 giải mó ra một bản mó. Cửa sập cho phộp người nhận tin B dễ dàng giải mó ra được đú là thụng tin về p và q: n = p.q. Vỡ từ thụng tin này, B dễ dàng tớnh được (n) = (p-1)(q-1) từ đú tớnh ra số mũ để giải mó d bằng thuật toỏn Euclid mở rộng. Chớnh vỡ điểm này cho nờn độ an toàn của hệ mật RSA phụ thuộc vào độ khú của việc phõn tớch ra thừa số nguyờn tố của một số nguyờn n, để RSA được coi là mật thỡ n =p.q phải là một số đủ lớn để sao cho việc phõn tớch nú sẽ tiờu tốn khỏ nhiều cụng sức, yờu cầu lượng tớnh toỏn khổng lồ.

Trong thực tế ứng dụng, p và q phải được chọn là cỏc số nguyờn tố cú ớt nhất 100 chữ số, khi đú n sẽ là một số cú 200 chữ số. Đối với cỏc thiết kế phần cứng, modun của n sử dụng phải cú độ dài tối thiểu là 768bit, trong cỏc trường hợp yờu cầu an ninh cao, modun n được khuyến cỏo phải từ 1024 bit trở lờn (tương ứng với số nguyờn cú 1024/log210 chữ số), khi đú p và q là cỏc số nguyờn tố cú độ dài 512 bit. Hơn nữa, cỏc nguyờn tố này phải được tạo ra một cỏch ngẫu nhiờn. Để đạt được điều này, đầu tiờn người ta phải tạo ra cỏc số ngẫu nhiờn lớn, sau đú kiểm tra tớnh nguyờn tố của nú bằng thuật toỏn Monte-Carlo trong thời gian đa thức (tức là một số nguyờn tố n cú thể được kiểm tra trong thời gian đa thức theo log2n, là số bit trong biểu diễn nhị phõn của n). Vấn đề đặt ra là phải kiểm tra bao nhiờu số nguyờn ngẫu nhiờn để tỡm được một số nguyờn tố, theo định lý số nguyờn tố (định lý 6, chương 1) số cỏc số nguyờn tố nhỏ hơn N xấp xỉ bằng N/lnN. Do đú nếu p được chọn ngẫu nhiờn thỡ xỏc suất để p là số nguyờn tố sẽ vào khoảng 1/lnp. Trường hợp số được tạo ngẫu nhiờn cú modul bằng 512 bit, khi đú 1/lnp = 1/177, cú nghĩa là trung bỡnh cứ 177 số nguyờn được chọn ngẫu nhiờn cú kớch thước 512 bit thỡ sẽ cú một số là số nguyờn tố. Điều này chứng tỏ một điều rằng hoàn toàn cú thể tạo ra ngẫu nhiờn cỏc số nguyờn tố lớn thực hiện hệ mật RSA.

Một số điểm lưu ý

Để tăng hiệu quả mó hoỏ, người ta mong muốn chọn được một số mũ mó hoỏ e nhỏ, chẳng hạn e = 3. Một nhúm người dựng cú thể dựng chung cựng số mũ mó hoỏ e, tuy nhiờn, mỗi người dựng trong nhúm phải cú số modul n khỏc những người cũn lại. Nếu người dựng A muốn gửi bản tin m đến 3 người dựng cú số modul cụng khai tương ứng là n1, n2, n3, và sử dụng số mũ mó hoỏ là e = 3. Khi đú A sẽ gửi ci = m3 mod ni, với i = 1, 2, 3. Kẻ tấn cụng thu được 3 phương trỡnh đồng dư:

46         ) (mod ) (mod ) (mod 3 3 2 2 1 1 n c x n c x n c x (3.1)

Vỡ m3 < n1n2n3, nờn sử dụng định lý phần dư China, với x=m3. Khi đú, kẻ tấn cụng sẽ tớnh căn bậc 3 của x để tỡm ra m.

Vỡ vậy một số mũ mó hoỏ nhỏ (giống như e =3) khụng nờn dựng trờn cựng bản tin, hoặc thậm chớ là cựng một bản tin mà được gửi đến nhiều người nhận. Để ngăn chặn dạng tấn cụng kể trờn, bản rừ thường được gắn thờm vào một chuỗi bit được tạo một cỏch ngẫu nhiờn trước khi tiến hành mó hoỏ. Và cỏc chuỗi bớt được tạo một cỏch ngẫu nhiờn đú phải được tạo độc lập đối với mỗi phộp (lần) mó hoỏ. Trỡnh xử lý bản tin theo cỏch này được gọi là ướp muối (salting) bản tin[2]. Đối với trường hợp của số mũ giải mó d, nếu d cú kớch thước bit vào khoảng 1/4 số bit của modul n, thỡ kẻ tấn cụng cú thể tỡm ra được d từ chớnh những thụng tin được người dựng cụng khai là (n, e), do vậy d phải cú kớch thước bit xấp xỉ bằng modul n.

Salting bản tin cũng là một kỹ thuật được sử dụng cho cỏc bản tin nhỏ, vỡ bản tin nhỏ m < n1/e, do đú m cú thể được khụi phục lại từ bản mó c = me mod n một cỏch đơn giản là tớnh căn bậc e của c. Ngoài ra kỹ thuật này cũng được sử dụng để chống lại cỏc phộp tỡm kiếm vột cạn trong trường hợp khụng gian bản tin hạn chế.

Từ mụ tả của hệ mật RSA, dễ dàng nhận thấy với m1 và m2 là hai bản rừ, và c1 và c2 là hai bản mó RSA tương ứng. Ta cú;

(m1m2)e  m1em2e  c1c2 (mod n). (3.2)

Núi cỏch khỏc, bản mó tương ứng với bản rừ m = m1m2 mod n là c = c1c2 mod n. Tớnh chất này đụi khi cũn được gọi là tớnh chất đồng hỡnh của hệ mật RSA và nú được chọn làm căn cứ cho dạng tấn cụng lựa chọn bản mó của hệ mật RSA. Giả sử rằng kẻ tấn cụng chủ động muốn giải mó bản mó c cụ thể: c = me mod n, bản mó này sẽ được gửi cho A. Kẻ tấn cụng khi đú cú thể che giấu c bằng cỏch chọn một số nguyờn ngẫu nhiờn x  Zn* và tớnh ccxe mod n. Khi đú A sẽ tớnh cho kẻ tấn cụng giỏ trị: m(c)d modn bởi vỡ:

) (mod ) ( ) (c c x mx n mdd e d  (3.3)

47 Khi đú kẻ tấn cụng cú thể tỡm ra m = mx1 modn.

Tấn cụng lựa chọn bản mó trong thực tế bị khống chế bởi cỏc định dạng kiến trỳc bắt buộc dành cho cỏc bản rừ. Nếu bản mó c được giải mó cho ra bản tin khụng theo định dạng kiến trỳc này, bản mó c bị từ chối bởi khụng đủ độ tin cậy. Nếu bản rừ m tuõn theo kiến trỳc như vậy, khi đú xỏc suất để mx mod n với giỏ trị x Zn* rất thấp. Dẫn đến, tấn cụng lựa chọn bản rừ theo như mụ tả ở trờn sẽ cho kết quả sai bởi vỡ A sẽ khụng giải mó c cho kẻ tấn cụng nữa.

Từ định nghĩa hệ mật RSA nhận thấy rằng, phộp mó hoỏ là một hoỏn vị trờn khụng gian {0, 1, …, n-1}, cho nờn nếu gọi c = me mod n là một bản mó, gọi k là một số nguyờn dương mà cekc(modn) kẻ tấn cụng cú thể tớnh ce mod n,

n

ce2 mod , ce3modn,… cho đến khi đạt được c lần đầu tiờn. Nếu ek

c mod n = c, khi đú con số trước đú của vũng đang tớnh là cek1 modn chớnh là bản rừ m. Tấn cụng dựa trờn đặc điểm này gọi là tấn cụng vũng (tuần hoàn), quỏ trỡnh tớnh toỏn để tỡm ra được bản rừ m trong trường hợp này dẫn đến tỡm ra được cỏc thừa số nguyờn tố của n, cho nờn tấn cụng vũng cũn được xem là một giải thuật phõn tớch ra thừa số nguyờn tố của modul n. Để tấn cụng vũng khụng đe doạ đến vấn đề an ninh của hệ mật, n phải được chọn thỏa món những tiờu chuẩn kỹ thuật theo khuyến cỏo của RSAlab như p và q là cỏc số nguyờn tố được chọn ngẫu nhiờn đủ lớn, khụng quỏ gần nhau và cú cựng độ dài bit; …

3.2 Tấn cụng hệ mật RSA

3.2.1 Một số phương phỏp truyền thống Phương phỏp chia thụng thường Phương phỏp chia thụng thường

í tưởng của phương phỏp là: “thực hiện việc chia liờn tiếp số cần phõn tớch n cho cỏc số nguyờn tố nhỏ”. Để tăng hiệu quả của bài toỏn, danh sỏch tất cả cỏc số nguyờn tố cú thể lưu vào một mảng trong mỏy. Cỏch khỏc trong quỏ trỡnh chia, thực hiện chia cho khụng chỉ cỏc số nguyờn tố (do thủ tục sinh tạo ra), mặc dự số lượng phộp chia sẽ phải thực hiện nhiều hơn, tuy nhiờn nú vẫn nhanh hơn so với việc dựng thủ tục (thủ tục sàng) để sinh cỏc số nguyờn tố. Cỏc số được chọn (ngoài cỏc số

nguyờn tố) cú dạng 6k  1 (cỏc số nguyờn cú dạng này sẽ bao gồm toàn bộ cỏc số nguyờn tố và cả cỏc số là hợp số, vớ dụ như: 25, 36, 49, ...). Dự cú nhiều số hợp số,

48 nhưng vũng lặp của chương trỡnh chạy rất nhanh; hơn nữa ta cú thể loại bỏ được số lượng đỏng kể thực hiện phộp kiểm tra xem số được chia cú thoả món hay khụng trước khi chia.

Phương phỏp phõn tớch sử dụng thuật toỏn Euclid

Thuật toỏn Euclid đó và vẫn đang được sử dụng trong hầu hết cỏc thuật toỏn phõn tớch số nguyờn. Một trong cỏc ứng dụng của nú là: Để tỡm cỏc thừa số của số n trong khoảng (g, G), ta nhõn tất cả cỏc thừa số nguyờn tố trong khoảng này với nhau, sau đú ỏp dụng thuật toỏn Euclid đối với tớch này và số n. Khi đú mọi thừa số nguyờn tố của n trong khoảng này sẽ được phỏt hiện. Vớ dụ, để tỡm tất cả cỏc thừa số nguyờn tố của N nhỏ hơn 1000.

Cỏch tỡm: với mọi i = 0 .. 9, tớnh d = UCLN(N, pi); Nếu d 1 thỡ d chớnh là một thừa số của N.

Sau đú N = N/d, rồi tớnh lặp lại.

Phương phỏp phõn tớch của Fermat

Phương phỏp phõn tớch của Fermat cũng là một trong những phương phỏp ra đời sớm nhất. Mặc dự trong trường hợp tổng quỏt phương phỏp này khụng hiệu quả, nhưng nú vẫn được xem xột bởi ý tưởng bờn trong của nú. ý tưởng của phương phỏp: là tỡm cỏch biểu diễn số nguyờn cần phõn tớch n (n là hợp số) thành hiệu của hai số bỡnh phương, dạng: x2 - y2. Nếu tỡm được x và y như vậy thỡ việc phõn tớch N coi như hoàn thành (vỡ khi đú n = (x-y)(x+y)).

Vấn đề đặt ra là liệu cú tồn tại biểu diễn của N như vậy khụng? Ta thấy, nếu tồn tại biểu diễn:

n = x2 - y2 (3.4)

thỡ x > n, vậy việc đầu tiờn là ta tớnh: m = n+1; x = m;

Nếu n là một số chớnh phương, tức n = x2 thỡ trong trường hợp đú ta cú biểu diễn của n là: n = x2 - 02.

49 Ngược lại, ta đặt zold = x2 - n, và kiểm tra xem zold cú là một số bỡnh phương khụng.

Nếu zold là một số bỡnh phương, thỡ ta đặt zold = y2 và ta thu được n = x2 – y2 và kết thỳc thuật toỏn.

Ngược lại, ta lại thử với giỏ trị khỏc của x, chẳng hạn x = m + 1, và tớnh:

x2 - n = (m+1)2 - n = m2 - n + 2m + 1 = zold + 2m + 1 (3.5) đặt znew = zold + 2m + 1

và kiểm tra xem: znew cú là số bỡnh phương khụng? Quỏ trỡnh này được lặp lại cho tới khi znew là một số bỡnh phương.

Phương phỏp phõn tớch của Legendre

Phương phỏp dựa trờn đặc điểm phõn biệt giữa số nguyờn tố và số hợp số.Để giải thớch cho điều này, ta xột đồng dư thức sau:

x2  y2 mod n (3.6)

Với mọi n là nguyờn tố hay hợp số thỡ phương trỡnh (3.6) bao giờ cũng cú hai nghiệm tầm thường là x   y mod n. Nếu n là hợp số thỡ (3.6) cũn cú cỏc nhiệm khụng tầm thường khỏc, và chớnh cỏc nghiệm khụng tầm thường đú sẽ được sử dụng để tỡm cỏc thừa số của n.

Cỏch tỡm thừa số của n như sau:

Xột đồng dư thức: u2  y2 mod p, p là số nguyờn tố lẻ.

Nếu ta giả thiết y là số nguyờn cố định, y  0 mod p, khi đú đồng dư thức này sẽ cú chớnh xỏc 2 nghiệm là u   y mod p, bởi theo định lý: “trong một vũng (ring) khụng cú thừa số 0, phương trỡnh bậc n,

P(x) = an xn + an-1 xn-1 + ... + a1 x + a0 = 0, (3.7) an  0 cú đỳng n nghiệm”.

50 Trong đú, vũng được định nghĩa là tập đúng với cỏc phộp toỏn: cộng, trừ và nhõn. Theo định nghĩa này, ta thấy phộp toỏn mod thỡ modulo cũng tạo thành một vũng.

Hơn nữa, ta cú u và -u thuộc vào 2 lớp thặng dư khỏc nhau theo modun p, bởi nếu u  -u mod p thỡ suy ra 2.u  0 mod p  u  0 mod p (vỡ ta đó giả thiết p là số nguyờn tố lẻ nờn 2 khụng thể là ước của p)  u là ước của p, nhưng điều này

mõu thuẫn với điều kiện u là thặng dư bậc hai của p (UCLN(u, p) = 1). Do đú suy ra, u và -u thuộc vào hai lớp thặng dư khỏc nhau theo modun p, tức là u và -u là hai nghiệm phõn biệt của phương trỡnh.

Xột cặp đồng dư thức sau:

u2  y2 mod p, p là số nguyờn tố ≠2

v2  y2 mod q, q là số nguyờn tố ≠2, q  p.

theo giải thớch ở trờn, ta cú mỗi đồng dư thức này sẽ cú 2 nghiệm phõn biệt. Vỡ vậy, đồng dư thức x2  y2 mod pq sẽ cú 4 nghiệm, cỏc nghiệm này cú thể tỡm theo định lý phần dư Trung Hoa:

     q y v p y u mod mod

cho nghiệm x  y mod pq (3.8)

       q y v p y u mod mod

cho nghiệm x  -y mod pq (3.9)

      q y v p y u mod mod

cho nghiệm x  z mod pq (3.10)

      q y v p y u mod mod

cho nghiệm x  -z mod pq (3.11)

Do đú, nếu n = p.q thỡ đồng dư thức x2  y2 mod pq sẽ cú một cặp nghiệm

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Nghiên cứu hệ mật mã khoá công khai trong giao dịch điện tử (Trang 42)

Tải bản đầy đủ (PDF)

(88 trang)