Một số phương pháp tấn cơng giải thuật RSA

Một phần của tài liệu thuật toán mã hóa và ứng dụng phần 5 pot (Trang 35 - 42)

Một số hệ thống mã hĩa khĩa cơng cộng

6.2.2Một số phương pháp tấn cơng giải thuật RSA

Tính chất an tồn của phương pháp RSA dựa trên cơ sở chi phí cho việc giải mã bất hợp lệ thơng tin đã được mã hĩa sẽ quá lớn nên xem như khơng thể thực hiện

được.

Vì khĩa là cơng cộng nên việc tấn cơng bẻ khĩa phương pháp RSA thường dựa vào khĩa cơng cộng để xác định được khĩa riêng tương ứng. Điều quan trọng là dựa vào nđể tính p, q của n, từđĩ tính được d.

6.2.2.1 Phương pháp sử dụng φ(n)

Giả sử người tấn cơng biết được giá trịφ(n). Khi đĩ việc xác định giá trị p, q

được đưa về việc giải hai phương trình sau:

q p n= ⋅

( ) (n = p−1)(q−1)

φ (6.1)

Thay q = n/p, ta được phương trình bậc hai:

( )

( 1) 0

2− nn + p+n=

p φ (6.2)

p, q chính là hai nghiệm của phương trình bậc hai này. Tuy nhiên vấn đề phát hiện được giá trịφ(n) cịn khĩ hơn việc xác định hai thừa số nguyên tố của n.

6.2.2.2 Thuật tốn phân tích ra thừa số p-1

Thuật tốn 6.3. Thuật tốn phân tích ra thừa số p-1

Nhập n và B 1. a = 2 2. forj = 2 toB do a = aj mod n 3. d = gcd(a −1, n) 4. if 1 < d < nthen d là thừa số nguyên tố của n (thành cơng) else

khơng xác định được thừa số nguyên tố của n (thất bại)

Thuật tốn Pollard p-1 (1974) là một trong những thuật tốn đơn giản hiệu quả

dùng để phân tích ra thừa số nguyên tố các số nguyên lớn. Tham sốđầu vào của thuật tốn là số nguyên (lẻ) n cần được phân tích ra thừa số nguyên tố và giá trị

Giả sửn = p.q (p, q chưa biết) và B là một số nguyên đủ lớn, với mỗi thừa số nguyên tốk, kBk(p−1) (⇒ p−1)B! Ở cuối vịng lặp (bước 2), ta cĩ a ≡ 2B! (mod n) (6.3) Suy ra a ≡ 2B! (mod p) (6.4)

Do p|n nên theo định lý Fermat, ta cĩ :

2p-1 ≡ 1 (mod p) (6.5)

Do (p-1)|B!, nên ở bước 3 của thuật tốn, ta cĩ:

a ≡ 1 (mod p). (6.6)

Vì thế, ở bước 4:

p|(a −1) và p|n, (6.7)

nên nếu d = gcd(a −1,n) thì d = p.

ˆ Ví dụ: Giả sử n = 15770708441. Áp dụng thuật tốn p – 1 với

B = 180, chúng ta xác định được a = 11620221425 ở bước 3 của thuật tốn và xác định được giá trịd = 135979. Trong trường hợp này, việc phân tích ra thừa số nguyên tố thành cơng do giá trị 135978 chỉ cĩ các thừa số nguyên tố nhỏ khi phân tích ra thừa số nguyên tố: (adsbygoogle = window.adsbygoogle || []).push({});

Do đĩ, khi chọn B≥ 173 sẽđảm bảo điều kiện 135978⏐B!

Trong thuật tốn p − 1 cĩ B − 1 phép tính lũy thừa modulo, mỗi phép địi hỏi tối

đa 2log2B phép nhân modulo sử dụng thuật tốn bình phương và nhân (xem 6.2.6 - Xử lý số học). Việc tính USCLN sử dụng thuật tốn Euclide cĩ độ phức tạp

O((log n)3). Như vậy, độ phức tạp của thuật tốn là O(BlogB(logn) (2+ logn)3)

Tuy nhiên xác suất chọn giá trịB tương đối nhỏ và thỏa điều kiện (p−1)B! là rất thấp. Ngược lại, khi tăng giá trịB (chẳng hạn như Bn) thì giải thuật sẽ thành cơng, nhưng thuật tốn này sẽ khơng nhanh hơn giải thuật chia dần như trình bày trên.

Giải thuật này chỉ hiệu quả khi tấn cơng phương pháp RSA trong trường hợp n cĩ thừa số nguyên tốp mà (p − 1) chỉ cĩ các ước số nguyên tố rất nhỏ. Do đĩ, chúng ta cĩ thể dễ dàng xây dựng một hệ thống mã hĩa khĩa cơng cộng RSA an tồn

đối với giải thuật tấn cơng p − 1. Cách đơn giản nhất là tìm một số nguyên tốp1 lớn, mà p = 2p1 + 1 cũng là số nguyên tố, tương tự tìm q1 nguyên tố lớn và

q = 2q1 + 1 nguyên tố.

6.2.2.3 Bẻ khĩa khi biết số mũ d của hàm giải mã

Việc tính ra được giá trịd khơng dễ dàng, bởi vì đây là khĩa riêng nên nếu biết nĩ thì cĩ thể giải mã được mọi đoạn tin tương ứng. Tuy nhiên giải thuật này mang ý nghĩa về mặt lý thuyết, nĩ cho chúng ta biết rằng nếu cĩ d thì ta cĩ thể tính các

thừa số của n. Nếu điều này xảy ra thì người sở hữu khĩa này khơng thể thay đổi khĩa cơng cộng, mà phải thay luơn sốn.

Nhắc lại: phương trình x2 ≡ 1 (mod p) cĩ hai nghiệm (modulo p) là x = ±1 mod p.

Tương tự, phương trình x2 ≡ 1 (mod q) cĩ hai nghiệm (modulo q) là x = ±1 mod q. Do

x2 ≡ 1 (mod n) ⇔x2 ≡ 1 (mod p) ∧x2 ≡ 1 (mod q) (6.8)

nên ta cĩ

x2 ≡ 1 (mod n) ⇔x= ± 1 (mod p) ∧x= ± 1 (mod q) (6.9)

Sử dụng lý thuyết số dư Trung Hoa, chúng ta cĩ thể xác định được bốn căn bậc hai của 1 modulo n..

Nếu chọn được w là bội số của p hay q thì ở bước 2 của thuật tốn, chúng ta cĩ thể phân tích được n ra thừa số nguyên tố ngay. Nếu w nguyên tố cùng nhau với

n, chúng ta tính wr,w2r,w4r,… cho đến khi tồn tại t sao cho:

( )

2tr 1 mod

wn (6.10)

Do 1 2ab− = sr≡0 (mod ( ))φ n nên w2sr ≡1 mod( n). Vậy, vịng lặp while

bước 8 của thuật tốn thực hiện tối đa s lần lặp.

Sau khi thực hiện xong vịng lặp while, chúng ta tìm được giá trị v0 thỏa

20 0

ngược lại, v0 là căn bậc 2 khơng tầm thường của 1 modulo n và chúng ta cĩ thể

phân tích n ra thừa số nguyên tố.

Thuật tốn 6.4. Thuật tốn phân tích ra thừa số nguyên tố, biết trước giá trị số mũ giải mã a

Chọn ngẫu nhiên w thỏa 1 ≤w ≤n− 1 Tính x = gcd(w, n) (adsbygoogle = window.adsbygoogle || []).push({});

if 1 < x < nthen

Chấm dứt thuật tốn (thành cơng với x = q hay x = p)

end if Tính a = A(b) Đặt ab −1 = 2sr với r lẻ Tính v = wr mod n ifv ≡ 1 (mod n) then Chấm dứt thuật tốn (thất bại). end if whilev <> 1 (mod n) do v0 = v v = v2 mod n if v0 ≡ -1(mod n) then Chấm dứt thuật tốn (thất bại). else Tính x = gcd(v0+1, n)

Chấm dứt thuật tốn (thành cơng với x = q hay x = p).

end if end while

6.2.2.4 Bẻ khĩa dựa trên các tấn cơng lặp lại

Siimons và Norris đã chỉ ra rằng hệ thống RSA cĩ thể bị tổn thương khi sử dụng tấn cơng lặp liên tiếp. Đĩ là khi đối thủ biết cặp khĩa cơng cộng {n, b} và từ khĩa

C thì anh ta cĩ thể tính chuỗi các từ khĩa sau:

C1=Ce (mod n)

C2=C1e (mod n)

Ci=Ci-1e (mod n) (6.11)

Nếu cĩ một phần tửCj trong chuỗi C1, C2,C3,….,Ci sao cho Cj = C thì khi đĩ anh ta sẽ tìm được M = Cj-1 bởi vì: Cj = Cj-1e (mod n) C = Me (mod n) (6.12) ˆ Ví dụ: Giả sử anh ta biết {n, b, C}={35, 17, 3},anh ta sẽ tính: C1 = Ce (mod n) = 317 (mod 35) = 33 C2 = C1e (mod n) = 3317 (mod 35) = 3 Vì C2 = C nên M = C1 = 33

Một phần của tài liệu thuật toán mã hóa và ứng dụng phần 5 pot (Trang 35 - 42)