Một số hệ thống mã hĩa khĩa cơng cộng
6.2.2 Mộ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− n− n + 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, k≤B∧k(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ố:
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ư B≈ n) 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
w ≡ n (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)
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