Giải thuật RSA

Một phần của tài liệu Bài giảng an ninh mạng viễn thông (HV công nghệ bưu chính viễn thông) (Trang 75 - 88)

1 .6 Mô hình an toàn mạng

3.1.2 Giải thuật RSA

Thuật toán Rivest-Shamir-Adleman (RSA) là thuật toán mã hóa khóa công khai

được các tác giả Ronal Rivest, Adi Shamir và Leonard Adleman hát triển tại Học Viện Công nghệ Masachusetts (MIT) vào năm 1977. Đ y là thuật toán đầu tiên hù hợ v i việc tạo ra chữ ký đ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 mã học trong việc s dụng khóa công cộng. RSA đang được s dụng hổ biến trong thương mại điện t và được cho là đảm bảo an toàn v i điều kiện độ dài khóa đủ l n.

3.1.2.1

RSA tạo một biểu thức v i các hàm mũ, bản rõ được mã hóa trong các khối, v i mỗi khối có một giá trị nhị h n nhỏ hơn một số n. Vì vậy, các khối kích thư c hải nhỏ hơn hoặc bằng log2 (n) + 1; trong thực tế, kích thư c khối là i bit, v i 2i  n 2i1. Mã hóa và giải mã được thực hiện theo dạng sau (các khối bản rõ M và bản mã C):

C = Me mod n

M = Cd mod n = (Me)d mod n = Med mod n

Cả người g i và người nhận hải biết giá trị của n. Người g i biết giá trị của e, và ch có người nhận biết được giá trị của d. Như vậy, đ y là một thuật toán mã hóa khóa công khai v i một khóa công khai của = {e, n} và một khóa riêng của R = {d, n}. Đối v i thuật toán này, để thỏa mãn cho việc mã hóa khóa công khai, các yêu cầu sau đ y hải được đá ứng.

1. Có thể tìm thấy giá trị của e, d, và n sao cho Med mod n = M cho tất cả giá trị M

< n.

2. Nó là tương đối dễ dàng để tính toán Me mod n và Cd mod n cho tất cả các giá trị của M < n.

3. Nó có tính khả thi để xác định d khi biết e và n.

Ta cần tìm mối quan hệ Med mod n = M. Các mối quan hệ trư c đó giữ nếu e và d là nh n nghịch đảo theo modulo ( )n , v i ( )n là hàm Euler. Nó được biểu diễn cho , q

70

là các số nguyên tố, ( , ) (p qp  1) (q 1). Mối quan hệ giữa e và d có thể được thể hiện như sau:

ed mod ( )n =1

Điều này tương đương v i

1 1mod ( ) mod ( ) ed n d e n     

Vì vậy, e và d là nh n nghịch đảo của modulo ( )n . Lưu ý rằng, theo quy tắc của số học

modul, điều này ch đúng nếu d (và do đó e) là nguyên tố cùng nhau v i ( )n . Ta tính toán RSA theo các thành hần như sau:

- p, q, hai số nguyên tố (riêng, lựa chọn) - n = pq (công cộng, tính toán được)

- e, v i gcd( ( ), ) 1;1 n e   e ( )n (công khai, lựa chọn) - de1mod ( ) n (riêng, tính toán được )

Các khóa riêng gồm {d, n} và khóa công khai bao gồm {e, n}. Giả s rằng người dùng A đã đưa ra khóa công khai của mình và rằng người dùng B muốn g i bản tin M t i A. Thì B sẽ tính toán C = Me mod n và truyền C. hi nhận được bản mã này, người dùng A giải mã bằng cách tính toán M = Cd mod n.

71

Hình 3.5 tóm tắt các thuật toán RSA. Nó tương ứng v i hình 3.1a: Alice tạo ra một cặ khóa công khai / riêng; Bob mã hóa bằng khóa công khai của Alice; và Alice giải mã bằng khóa riêng của mình. Một ví dụ được thể hiện trong hình 3.6, các khóa được tạo ra như sau.

Chọn hai số nguyên tố, = 17, q = 11.

2. Tính n = pq = 17 * 11 = 187.

3. Tính ( ) n = (p - 1) (q - 1) = 16 * 10 = 160.

4. Chọn e mà e là số nguyên tố cùng nhau ( )n = 160 và nhỏ hơn ( )n ; ta chọn e =

7.

5. Xác định d sao cho de1(mod160) và d < 160. Giá trị đúng là d = 23, vì 23 7 = 161 = (1 160) + 1; d có thể được tính toán bằng cách s dụng thuật toán Euclid mở rộng.

Từ đó, thu được khóa công khai = {7, 187} và khóa riêng R = {23, 187}. Các ví dụ cho thấy việc s dụng các khoá cho một đầu vào bản rõ M = 88. Đối v i mã hóa, chúng ta cần hải tính toán C = 887 mod 187. hai thác các tính chất của modul số học, chúng ta có thể làm điều này như sau.

887 mod 187 = [(884 mod 187) * (882 mod 187)* (881 mod 187)] mod 187 881 mod 187 = 88

882 mod 187 = 7744 mod 187 = 77

884 mod 187 = 59.969.536 mod 187 = 132

887 mod 187 = (88 * 77 * 132) mod 187 = 894.432 mod 187 = 11

Để giải mã, ta tính toán M = 1123 mod 187:

1123 mod 187 = [(111 mod 187) * (112 mod 187) * (114 mod 187) * (118 mod 187) * (118 mod 187)] mod 187

111 mod 187 = 11 112 mod 187 = 121

114 mod 187 = 14.641 mod 187 = 55 118 mod 187 = 214.358.881 mod 187 = 33

72

Hình 3. 6: Ví dụ tính toán của thuật toán RSA

Ta xem xét một ví dụ, trong đó RSA được s dụng để x lý nhiều khối dữ liệu v i bản rõ là một chuỗi chữ số, mỗi ký hiệu rõ được gán một mã số duy nhất của hai số thậ h n (ví dụ, A=00, A=26). Một khối bản rõ gồm 4 chữ số thậ h n hoặc hai ký tự. Hình 3.7a ch ra dãy các sự kiện cho mã hóa nhiều khối, hình 3.7b đưa ra một ví dụ đặc biệt. Các vòng tròn ch ra số các toán t thực hiện.

73

(i) Các khía cạnh tính toán

Vấn đề độ hức tạ tính toán cần thiết khi s dụng RSA là một vấn đề quan trọng. Trên thực tế, có hai vấn đề cần xem xét: mã hóa / giải mã và tạo khóa.

Hàm mũ trong tính toán mudulo: Cả vấn đề mã hóa và giải mã trong RSA đều liên quan từ số nguyên t i lũy thừa số nguyên, mod n. Nếu một hé tinh lũy thừa được thực hiện trên số nguyên rồi giảm theo module n, thì các giá trị trung gian sẽ cực l n. Ví dụ dư i đ y sẽ s dụng đặc tính tinhs toán modulo.

[(a mod n) * (b mod n)] mod n = (a * b) mod n

Như vậy, chúng ta có thể làm giảm số kết quả trung gian modulo n. Điều này làm cho việc tính toán thực tế hơn. Một khía cạnh khác là hiệu quả của hàm mũ do RSA thường đưa ra các hàm mũ l n. Nếu xem xét việc tính x16 thì tiế cận trực tiế yêu cầu 15 hé nh n.

x16 = x * x * x * x * x * x * x * x * x * x * x * x * x * x * x * x

Tuy nhiên, chúng ta có thể đạt được kết quả cuối cùng cũng ch có bốn hé nh n nếu chúng ta nhóm các hần tạo thành (x2, x4, x8, x16). Một ví dụ khác, giả s muốn tinh x11 mod n cho một số các số nguyên x và n. Quan sát rằng x11 = x1 + 2 + 8 = (x) (x2) (x8). Trong trường hợ này, chúng ta tính x mod n, x2 mod n, x4 mod n, và x8 mod

n và sau đó tính toán [(x mod n) (x2 mod n) (x8 mod n)] mod n.

Tổng quát hơn, giả s chúng ta muốn tìm giá trị ab mod n v i a, b, và m nguyên dương. Nếu chúng ta biểu diễn b là một số nhị h n bKbk-1. . . b0, sau đó có

2 i i b o b   Vì vậy, i 0 2 (2 ) 0 i bi i b b a aa               i (2 ) 2 0 0

mod mod i mod mod

i i b b b a n a n a n n               

Từ đó có thể s dụng các thuật toán để tính toán ab mod n như thể hiện trong hình 3.8. Bảng 3.4 đưa ra ví dụ cụ thể về việc thực hiện các thuật toán này. Lưu ý rằng biến c ch để dùng cho mục đích giải thích. Giá trị cuối cùng của c là giá trị của số mũ.

74

Bảng 3.4: ết quả tính toán ab mod n v i a=7, b=560=1000110000 và n=561.

Hình 3. 8: Thuật toán để tính ab mod n

ạ độ ệ q sử

Để tăng tốc độ hoạt động của thuật toán RSA bằng cách s dụng khóa công khai, ta thường lựa chọn e đặc biệt. Lựa chọn e hổ biến là 65537 (216 + 1); hoặc e chọn là 3 và 17. Lựa chọn này ch cần s dụng s dụng hai số (1 bit) nên số lượng các hé nh n cần thiết để thực hiện các lũy thừa được giảm thiểu.

Tuy nhiên, v i một khóa công khai rất nhỏ như e = 3, RSA trở nên dễ bị tổn thương v i một cuộc tấn công đơn giản. Giả s ta có ba người dùng RSA khác nhau và tất cả những người s dụng các giá trị e = 3 nhưng có giá trị duy nhất của n, cụ thể là (n1, N2, n3). Nếu người dùng A g i cùng một bản tin M mã hóa cho tất cả ba người dùng, sau đó ba bản mã là C1 = M3 mod n1, là C2 = M3 mod n2, là C3 = M3 mod n3. Có khả năng là n1, n2, n3 và là cặ nguyên tố cùng nhau. Do đó, người ta có thể tính M3 mod (n1n2n3). Theo các quy tắc của thuật toán RSA, M ít hơn mỗi giá trị của ni; do đó M3< n1n2n3. Theo đó, những kẻ tấn công ch cần tính toán căn bậc ba của M3. Ta lưu ý rằng định nghĩa của các thuật toán RSA yêu cầu người s dụng chọn một giá trị của e là nguyên tố cùng nhau v i ( )n . Như vậy, nếu một giá trị của e được lựa chọn đầu tiên và các số nguyên tố và q được tạo ra, nó có thể ch ra rằng gcd (( )n , e) 1. Trong trường hợ đó, người s dụng hải từ chối cặ giá trị , q và tạo ra một cặ m i.

75

Tương tự ta không thể lựa chọn một hằng số có giá trị nhỏ của d. Gía trị mà nhỏ sẽ dễ bị tấn công cưỡng bức và bị một số kiểu h n tích mật mã khác. Tuy nhiên có một cách để đẩy nhanh tốc độ tính toán s dụng CRT. Ta muốn tính giá trị d mod

MC n. Ta

xác định các kết quả trung gian sau:

mod d p VC p d mod q VC q

Tiế theo CRT ch ra chất lượng 1

( mod )

p

X  q qp Xq  p (p1mod )q

Sau đó CRT biểu diến

M=(VpXP + VqXq) mod n

Hơn nữa ta có thể đơn giản mà tính V và Vq s dụng lý thuyết Fermat v i 1 1(mod )

p

a   p nếu và a quan hệ nguyên tố cùng nhau. Và ta có mod( 1)

mod mod

d d p

p

VC p C  p d mod dmod( 1)q mod

q

VC q C  q

Số lượng d mod ( -1) và d mod (q-1) có thể được tính toán lại. ết quả cuối cùng việc tính toán nhanh hơn xấ x 4 lần so v i tính M=Cd mod n một cách trực tiế .

Tạ

Trư c khi á dụng hệ thống mật mã khóa công khai RSA, mỗi bên tham gia hải tạo ra một cặ khóa theo các bư c sau:

 Xác định 2 số nguyên tố và q

 Lựa chọn hoặc e hoặc d và tính toán cái còn lại.

Bởi vì giá trị n= q sẽ bị hát hiện bởi bất kỳ kẻ theo dõi tiềm năng nào nên những số nguyên tố này hải được chọn từ tậ đủ l n tức là và q hải là những số l n. Mặt khác hương há s dụng để tìm các số nguyên hải có hiệu quả hợ lý.

Hiệntại không có những kỹ thuật hữu hiệu thu được các số nguyên tố l n một cách tùy ý nên một số cách thức để x trí vấn đề này là cần thiết. Thủ tục sẽ là nhặt ngẫu nhiên một số lẻ nằm trong độ l n mong muốn và kiểm tra xem nó có hải là số nguyên tố

không. Nếu không hải nhặt các số ngẫu nhiên khác cho đến khi nó là số nguyên tố. Thủ tục để kiểm tra xem một số nguyên cho trư c n nào đó có hải là số nguyên tố là thực hiện một số tính toán liên quan đến n và một số nguyên ngẫu nhiên a. Nếu n “ không vượt

76

qua” hé th thì n không hải là số nguyên tố. Nếu n “vượt qua” hé th thì n có thể là số nguyên tố hoặc là không. Nếu n vượt qua một số lượng hé th các giá trị a khác nhau được lựa chọn ngẫu nhiên thì ta có thể tin chắc n là số nguyên tố.

Nhìn chung thủtục lấy ra một số nguyên tố là:

1. Lấy ngẫu nhiên một số nguyên lẻ (ví dụ s dụng bộ tạo số giả ngẫu nhiên).

2. Lấy ngẫu nhiên một số nguyên a<n.

3. Thực hiện hé th xác suất căn bản v i a là một tham số. Nếu n không vượt qua hé th , loại bỏ n và quay về bư c 1.

4. Nếu n vượt qua đủ số lượng hé th chấ nhận n. Mặt khác chuyển sang bư c

2.

Tuy nhiên tiến trình được thực hiện không thường xuyên mà ch khi cần một cặ ( , R) m i.

Cũng cần hải lưu ý là sẽ có bao nhiêu số bị loại bỏ trư c khi một số nguyên tố được tìm ra. Lý thuyết số nguyên tố đã ch ra số các số nguyên tố ở gần N trung bình là một trong ln(N) số nguyên. Như vậy ta có thể hải kiểm tra đến ln(N) số nguyên trư c khi tìm ra một số nguyên tố. Vì các số nguyên chẵn sẽ bị loại ngay nên chính xác là sẽ hải kiểm tra ln(N/2) số. Ví dụ, nếu muốn tìm một số nguyên tố ở tầm 2200 thì hải th khoảng 2200/2=70 lần m i tìm ra.

Sau khi có được số nguyên tố và q thì tiế theo là lựa chọn giá trị e và tính toán d hoặc ngược lại lựa chọn d và tính toán e. Nếu là trương hợ trư c thì ta cần chọn một số e

sao cho gdc( ( ), ) 1 n e  và tính toán de1(mod ( )) n . Đ y là một thuật toán đơn nên cùng lúc nó sẽ tính toán ư c số chung l n nhất của 2 số nguyên và nếu gdc là 1 thì xác định nghịch đảo của một số nguyên modulo số còn lại. Như vậy thủ tục là tạo ra một chuỗi số ngẫu nhiên, kiểm tra chúng lần lượt v i ( )n cho đến khi một số nguyên tố tương quan v i ( )n được tìm ra.

(ii)Vấn đề bảo mật của RSA

Có 5 khả năng để tấn công thuật toán RSA:

 Tấn công cưỡng bức: Cố gắng bằng mọi khả năng tìm ra khóa riêng.

77

 Tấn công thời gian: hụ thuộc vào thời gian hoạt động của thuật toán giải

mã.

 Tấn công dựa trên lỗi hần cứng: G y ra các lỗi hần cứng trong bộ x lý tạo ra các chữ ký số.

 Tấn công vào bản mã: iểu tấn công này khai thác các đặc tính của thuật

toán RSA.

Việc chống lại tấn công cưỡng bức thì đối v i thuật toán RSA hay các hệ thống mật mã khác đều bằng cách s dụng không gian khóa đủ l n. Tức là số lượng bit trong d càng l n càng tốt. Tuy nhiên việc tính toán trong cả việc tạo khóa và việc mật mã hóa/giải mã đều hức tạ nên kích thư c khóa càng l n thì hệ thống hoạt động càng chậm.

Bà ì ừ sốđ y là tiế cận tấn công toán học vào RSA

1. Tìm thừa số n từ 2 thừa số nguyên tố của nó. Điều này cho hé tính toán được

( ) (n p 1)(q 1)

    và từ đó xác định được de1(mod ( )) n .

2. Xác định một cách trực tiế ( )n mà không cần xác định và q. Một lần nữa nó cũng cho hé tính được de1(mod ( )) n .

3. Tìm ra d một cách trực tiế mà không cần xác định ( )n

Tất cả các thảo luận về giải mật mã RSA đều tậ trung vào nhiệm vụ tìm ra n từ 2

thừa số nguyên tố. V i thuật toán đã biết việc xác định v i e và n đã cho ít nhất cũng tiêu tốn thời gian như bài toán h n tích thừa số. Vì vậy chúng ta có thể dùng cách này như một điểm chốt trong tính bảo mật của RSA.

Nếu n l n thì việc h n tích ra nó là rất khó khăn. Năm 1977, ba nhà hát minh ra RSA đã thách thức các độc giả của tạ chí khoa học Mỹ giải mật mã một bản mã [GARD77]. Họ sẽ trả 100 SD tiền thưởng cho một c u trong bản rõ mà họ dự đoán rằng việc này hải làm trong 40 nghìn triệu năm. Tháng 4 năm 1994, một nhóm làm việc qua Internet đã nhận giải ch sau 8 tháng làm việc [LE T94]. Thách thức này s dụng kích thư c khóa công khai (độ dài của n) là 129 chữ số thậ h n hoặc khoảng 428 bít. Trong lúc đó ch cần thực hiện đối v i DES, các hòng thí nghiệm RSA đã đưa ra các thách

Một phần của tài liệu Bài giảng an ninh mạng viễn thông (HV công nghệ bưu chính viễn thông) (Trang 75 - 88)

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

(159 trang)