Để có thể ứng dụng được vào các module mật mã dạng hộp đen hiện có, bài báo tập trung nghiên cứu các thuật toán sinh khóa RSA chứa backdoor và đề xuất một thuật toán sinh khóa R[r]
Trang 1VỀ MỘT BACKDOOR TRONG SINH KHÓA RSA TUÂN THỦ
ĐIỀU KIỆN “CHẶT” THEO CHUẨN FIPS 186-4
Lê Quang Huy*
Tóm tắt: Bài báo trình bày đề xuất về một thuật toán sinh khóa RSA chứa
backdoor tuân thủ điều kiện “chặt” về tham số khóa theo chuẩn FIPS 186-4 [1] Thuật toán đề xuất dựa trên cơ sở thuật toán tìm số nguyên tố của John Gordon [2]
để tạo số nguyên tố mạnh và tấn công phân tích nhân tử của Coppersmith [3] để giảm lượng thông tin backdoor cần nhúng
Từ khóa: Mật mã, Sinh khóa, RSA, Backdoor
1 ĐẶT VẤN ĐỀ
Hiện nay, Backdoor trong các hệ mật mã được nghiên cứu và công bố rộng rãi Backdoor trong các hệ mật được nghiên cứu chủ yếu tập trung vào phần sinh khóa (key generation) và phần mã mật (encryption) Tuy nhiên, các nghiên cứu đã công bố về backdoor đối với một hệ mật xác định chỉ đề xuất các giải pháp chung trên hệ mật đó chứ chưa đề xuất giải pháp tuân thủ một chuẩn nhất định Với hệ mật RSA, nhiều tổ chức định chuẩn đã công bố các chuẩn ứng dụng trong thực tế Do vậy, để các thuật toán backdoor cho hệ mật RSA có thể ứng dụng được trong thực tế cũng cần thỏa mãn một chuẩn nhất định Hiện tại, chuẩn FIPS 186-4 về chữ ký số là chuẩn mới nhất có bao gồm hệ mật RSA, được nhiều nhà sản xuất các sản phẩm mật mã tuân thủ
Thuật toán sinh khóa chứa backdoor nhằm đảm bảo an ninh, an toàn cho cộng đồng Đối tượng áp dụng là các module mật mã dạng hộp đen Để có thể ứng dụng được vào các module mật mã dạng hộp đen hiện có, bài báo tập trung nghiên cứu các thuật toán sinh khóa RSA chứa backdoor và đề xuất một thuật toán sinh khóa RSA chứa backdoor mới tuân thủ điều kiện “chặt” về tham số khóa tại Appendix B.3.1 FIPS 186-4 [1] Thực hiện mục tiêu trên, bài báo được tổ chức thành 4 phần: Mục 1 - Đặt vấn đề, nêu lên sự cần thiết nghiên cứu; Mục 2 - Các định nghĩa và cơ sở phục vụ cho việc phân tích backdoor; Mục 3 - Đề xuất backdoor mới; Mục 4 - Kết luận tóm tắt các kết quả nghiên cứu và hướng phát triển
2 CÁC ĐỊNH NGHĨA VÀ CƠ SỞ 2.1 Thuật toán sinh khóa chứa backdoor
Định nghĩa về thuật toán sinh khóa chứa backdoor và các thuộc tính có liên quan (tiêu chuẩn đánh giá) trình bày trong phần này sử dụng các kết quả trong [4]
2.1.1 Định nghĩa thuật toán sinh khóa chứa backdoor
Ký hiệu G0, G1 lần lượt là thuật toán sinh khóa trung thực (chuẩn) và thuật toán sinh
khóa chứa backdoor Ký hiệu (k priv , k pub) lần lượt là khóa riêng và khóa công khai được tạo
bởi G0 hoặc G1 Ký hiệu k pub* là khóa công khai hoặc một phần của khóa công khai Ký
hiệu là tham số an toàn của hệ mật Ký hiệu B0 , B1 lần lượt là sản phẩm hộp đen được
cài đặt thuật toán sinh khóa G0, G1 Ký hiệu R 1 là thuật toán khôi phục cặp khóa được tạo
bởi G1
Định nghĩa: Các cặp khóa được tạo ra bởi G1 là các cặp khóa chứa backdoor an toàn nếu
G1 tạo ra cặp khóa (k pub , k priv) với các thuộc tính sau được thỏa mãn:
1 Tính bảo mật:
a) người thiết kế nhúng một phần khóa riêng vào trong khóa công khai tương ứng, k pub*
Trang 2Công nghệ thông tin & Cơ sở toán học cho tin học
b) Người dùng, kẻ tấn công không thể tính toán được khóa riêng từ khóa công khai tương ứng, k priv ≠ I -1 ◦ E -1 ◦ M -1 (k pub) (2)
2 Tính hoàn chỉnh: Tồn tại thuật toán R1 , để người thiết kế có thể khôi phục được khóa
riêng từ khóa công khai tương ứng, k priv = R1(k pub ) Hay các hàm M, E, I khả nghịch để người thiết kế tính được k priv = I -1 ◦ E -1 ◦ M -1 (k pub) (3)
3 Khả năng ẩn giấu (khả năng không thể phân biệt được):
a) Đầu ra của B 0 và B 1 không thể phân biệt được về thống kê hoặc về tính toán
b) Các đo đạc bên ngoài B 0 và B 1 không thể phân biệt được một cách rõ ràng
2.1.2 Một số tiêu chuẩn đánh giá thuật toán sinh khóa chứa backdoor
Các tiêu chuẩn đánh giá G1 (mục 5 trong [4]) được tóm tắt trong bảng sau:
Bảng 1 Các tiêu chuẩn đánh giá thuật toán sinh khóa chứa backdoor
Đánh giá
Tiêu chuẩn
Bảo mật l E >= lG1 lG1 >= l E >= lG1 /2 l E < lG1 /2
Hoàn chỉnh ∀ k pub kẻ tấn công k priv ≠
F-1 (k pub) -
∃ k pub kẻ tấn công k priv
= F-1 (k pub)
Lực lượng khóa c >= - ½ -1/2 > c >= -3/2 c < -3/2
Tính phân phối D G1 ≈ 0 D G1 ≈ 0 D G1 > 0
tương quan
Độ phức tạp Tuyến tính (a =< 1 và c
=< 1)
< bậc 2 (2 > a > 1 hoặc 2 > c > 1)
>= bậc 2 (a >= 2 hoặc
c >= 2)
2.3 Một số kết quả về hệ mật RSA
2.3.1 Định lý về số các số nguyên tố
Ký hiệu π(n) là số lượng các số nguyên tố nhỏ hơn hoặc bằng n
Thì khi n lớn, ta có ( ) ~ (4)
Giả sử p là số nguyên tố k bít, số lượng các số nguyên tố k-bit
#{ } = 2 − 2 = ( )
( ) ≈ = ≈ 2 (5) Xác xuất một số nguyên k bít là số nguyên tố:
Pr[ ố à ố ê ố] = ( ) ≈ = 2 = (6)
2.3.2 Định lý Coppersmith (Theorem 4, 5 trong [3] và được chứng minh trong [7])
Trong thời gian đa thức, có thể tìm được phân tích nhân tử của n = p.q nếu biết ¼ log2
n (khoảng ½ độ dài bit của p) các bít thấp (cao) của p
2.3.3 Điều kiện “chặt” về tham số khóa RSA theo FIPS 186-4
Phần này trình bày điều kiện “chặt” về tham số khóa của hệ mật RSA “Chặt” ở đây
được hiểu là yêu cầu cao nhất đối với tham số p và q được mô tả tại phần B1 mục B.3.1
appendix B, FIPS 186-4
Ký hiệu khóa công khai (n, e), khóa riêng (n, d), n = p.q, với p, q là các số nguyên tố
Ký hiệu nlen là độ dài theo bit của n Các tham số thỏa mãn điều kiện sau:
1 p và q là những số nguyên tố được tạo ngẫu nhiên thỏa mãn điều kiện:
Trang 3- p, q là các số nguyên tố chứng minh được
- p1, p2, q1, q2 lần lượt là nhân tử nguyên tố của các số (p - 1), (p + 1), (q - 1), (q + 1), (các số nguyên tố phụ của p, q) là các số nguyên tố có thể chứng minh được
- Ký hiệu n1, n2, n3, n4 lần lượt là chiều dài theo bit của p1, p2, q1, q2 Chiều dài của các
số nguyên tố phụ tuân thủ các ràng buộc trong bảng 2
Bảng 2 Chiều dài tối thiểu và tối đa của p 1 , p 2 , q 1 và q 2
p1, p2, q1, q2
Chiều dài tối đa của
len(p1) + len(p2) và len(q1) + len(q2)
1024 > 100 bits > nlen/16 = 64 < 239 bits = nlen/4 - 17
2048 > 140 bits > nlen/16 = 128 < 494 bits = nlen/4 - 18
3072 > 170 bits < nlen/16 = 192 < 750 bits = nlen/4 - 18
2 e được chọn trước khi tạo p, q; e là một số lẻ thỏa mãn: 216 < e < 2256
3 Các số nguyên tố p và q thỏa mãn các ràng buộc sau:
a) (p - 1), (q - 1) nguyên tố cùng nhau với số mũ công khai e
b) √2 2 / ≤ , ≤ 2 / − 1 (7)
c) | − | > 2 / (8)
4 Số mũ riêng d, được tạo sau khi tạo p và q, thỏa mãn:
2nlen / 2 < d < LCM (p - 1, q - 1) và d = e-1 mod (LCM (p - 1, q - 1))
2.3.4 Thuật toán sinh khóa RSA tuân thủ điều kiện 2.3.3 (thuật toán G 0 )
Các số nguyên tố p, q được tạo dựa trên cơ sở của thuật toán tìm số nguyên tố mạnh của John Gordon [2], các số nguyên tố phụ p1, p2, q1, q2 được tạo dựa trên thuật toán sinh
số nguyên tố chứng minh được của Maurer ([6]) Giá trị B p , B q được tính dựa theo định lý phần dư Trung Hoa (CRT)
Input: nlen, n1, n2, n3, n4
Output: p, q, n, e, d
// generate e
1 e = RandomOddInteger(216, 2256)
// generate p
2 p1 = RandomProvablePrime(2 , 2 )
3 p2 = RandomProvablePrime (2 , 2 )
4 A p = p1.p2.
5 = 1
−1 // using CRT
6 S p = { A p i + B p } (i = 1, 2, 3, …)
7 =
∩ √2 2 / , 2 / − 1
such that gcd(p - 1, e) = 1
// generate q
8 q1 = RandomProvablePrime(2 , 2 )
9 q2 = RandomProvablePrime(2 , 2 )
10 A q = q1.q2
11 = 1
−1 //using CRT
12 S q ={ A q j + B q } (i = 1, 2, 3, …)
13 =
∩ √2 2 / , 2 / − 1
such that gcd(q - 1, e) = 1
14 if ( |p – q| ≤ 2 nlen/2 – 100) then go to step 8
// compute n, d
15 n = p.q
16 d = e–1 mod (LCM(p - 1, q - 1))
17 if ( d < 2 nlen/ 2 ) then go to step 8
18 return (p, q, n, e, d)
2.3.5 Lực lượng khóa của thuật toán sinh khóa RSA tuân thủ điều kiện 2.3.3
Số lượng phần tử e, #{ e }= (2256- 216)/2 = (2255- 215) ≥ 2254 (e là số lẻ)
Xét cách tạo p: Vì p1 , p2 là các số nguyên tố thỏa mãn điều kiện tại bảng 1 nên ước
lượng chiều dài theo bit của p1 , p2 : (nlen/16) ≤ log2 p1 , log2 p2 ≤ (nlen/8 - 9)
Trang 4Công nghệ thông tin & Cơ sở toán học cho tin học
Tập S p được tạo bởi p1 và p2 theo thuật toán sinh số nguyên tố chứng minh được của Maurer Số lượng số nguyên tố được sinh bởi thuật toán của Maurer sau vài mức đệ quy đạt khoảng 10% trong tất cả các số nguyên tố (mục 3.4 trong [6])
Vậy số lượng các số nguyên tố p1 và p2 = {10% các số nguyên tố (2nlen/16, 2nlen/8-9)}≈ 1/8 * các số nguyên tố (2nlen/16
, 2nlen/8-9)
#{ } = #{ } = 2 2 − 2 = 2 /
= 2 / . / ( ). /
/ = / (9)
Vì p là một số nguyên tố nằm trong tập Sp và nằm trong khoảng
√2 2 / , 2 / − 1 Ký hiệu s ∈ Sp , ta có s = Ap.i + Bp, (bước 6), Ta có
√2 2 / < + < 2 / − 1 ⇔ √ / ≤ ≤ / ⇔
⇒ #{ } = #{ } = / √ / / = ( √ ). / / ⇔ ( √ )./ / =
2 0,6 2 / ≈ 2 2 / = 2 /
Vậy # Sp với mỗi một cặp giá trị p1, p2 là: 2 / (10) Vậy số lượng các số nguyên có thể được tạo ra bởi tập Sp,
# Sp = #{p1} #{p2}.#{i} =
/ / 2 / = / Theo (6), ta có Pr[ ố à ê ố] =
Số lượng số nguyên tố p, #{p} = / .
/ = / (11) Xét cách tạo q: Theo (9), ta có: #{ } = #{ } = /
Ký hiệu u là một số nguyên tố và v là một số nguyên; (u, v ∈ S q ) và (u, v ∈ {ngoài
khoảng điều kiện (8)} ⇔ {p - 2nlen/2 -100 ≤ u, v ≤ p + 2nlen/2 -100} (12))
Vì v ∈ S q , nên v = A q j + B q , do vậy
p - 2nlen/2 -100 ≤ A q j + B q ≤ p + 2nlen/2 -100 ⇔ /
. ≤ ≤ /
.
#{ } = + 2
/ − ( − 2 / )
2 / =2 2
/
2 / = 2 /
Vậy #{v} = #{q1} #{q2}.#{j} =
/ / 2 / = /
#{u} = #{v} Pr[số k bit là số nguyên tố] = /
Vì q được tạo giống như p và sau p thỏa mãn điều kiện (8), nằm ngoài khoảng (12), mà
giá trị khoảng (12) có giá trị: (p + 2nlen/2 -100 – (p - 2nlen/2 -100) = 2nlen/2 -99) nhỏ hơn rất
nhiều so với khoảng tồn tại của p và q (điều kiện (7)) với giá trị là :
(2 − √2) 2 / ≈ 0,6 2 / Nên #{q} = #{p} - #{u} =
/
− / > / (13)
Vậy lực lượng khóa của thuật toán là, #{(p, q, d, e)} = #{e}.#{(p}.#{q)}
Trang 5= 2254
/ / = 2254 (14)
3 ĐỀ XUẤT THUẬT TOÁN SINH KHÓA RSA CHỨA BACKDOOR MỚI 3.1 Giới thiệu thuật toán đề xuất
Thuật toán đề xuất sử dụng ý tưởng của thuật toán tìm số nguyên tố mạnh của John Gordon [2] thỏa mãn các điều kiện tại 2.3.3, để cài thông tin backdoor vào một nửa các bit
thấp của p Thông tin backdoor được mã mật hóa (hoặc băm) bởi hàm F K Giá trị p được
khôi phục thông qua thuật toán của Coppersmith [3]
Các tham số thuật toán:
+ G1 = Thuật toán đề xuất; I(k priv) = ((p⌋k/2)⌋); E = F K = AES,
E = log2 n = nlen, k(E) = (K); M = n; log2 p = log2 q = nlen/2
+ Hàm G: {0, 1} 2k x {0, 1}k/2 x {0, 1} k/2 → {0, 1}k, hàm này thực hiện kết quả của định
lý Coppersmith (mục 2.3.2), ví dụ: p = G(n, 2 k/2 , p mod 2 k/2 ); (nlen = 2k)
+ Giá trị B p , B q: có thể được tính thông qua định lý phần dư Trung Hoa (CRT)
+ Giá trị m là một ngưỡng để chọn giá trị ngẫu nhiên t không quá lớn để có thể dò tìm
lại trong thuật toán khôi phục khóa
Thuật toán đề xuất: Sinh khóa RSA
Input: nlen, n1, n2, n3, n4, m
Output: p, q, n, e, d
// generate e
1 e = RandomOddInteger(216, 2256)
2 u = F K (e) //encryption or hash with
key
3 t = Random(m) // t < m
4 C = u t mod 2 nlen/4
// generate p
5 p1 = RandomProvablePrime(2 , 2 )
6 p2 = RandomProvablePrime (2 , 2 )
7 A p = p1.p2 2nlen/4
8 =
1
−1
2 /
// using CRT
9 S p = { A p i + B p } (i = 1, 2, 3, …)
10 =
∩ √2 2 / , 2 / − 1
such that gcd(p - 1, e) = 1
// generate q
11 q1 = RandomProvablePrime(2 , 2 )
12 q2 = RandomProvablePrime(2 , 2 )
13 A q = q1.q2
14 = 1
−1 //using CRT
15 S q ={ A q j + B q } (i = 1, 2, 3, …)
16 =
∩ √2 2 / , 2 / − 1
such that gcd(q - 1, e) = 1
17 if ( |p – q| ≤ 2 nlen/2 – 100) then go to step
11
// compute n, d
18 n = p.q
19 d = e–1 mod (LCM(p - 1, q - 1))
17 if ( d < 2 nlen/ 2 ) then go to step 11
18 return (p, q, n, e, d)
Thuật toán đề xuất: khôi phục khóa RSA
Input: n, e, m
Output: p, q, d
1 t = 1, C = 1
2 u = F K (e)
3 repeat
4 C = C.u mod 2 nlen/4
//(C = u t mod 2 nlen/4)
5 if C mod 2 = 1 then
6 p = G(n, 2 nlen/4 , C) //Coppersmith (2.3.2)
8 until (p mod 2 nlen/4 = C) and (p is prime) and (t < m)
9 q =n / p;
10 d = e–1 mod (LCM(p - 1, q - 1))
11 return (p, q, d)
3.2 Đánh giá thuật toán đề xuất
Trang 6Công nghệ thông tin & Cơ sở toán học cho tin học
Tính bảo mật: Tính bảo mật được đánh giá ở mức tốt vì người thiết kế sử dụng hệ mật đối
xứng, hoặc hàm băm có khóa với độ dài tham số an toàn tương đương với độ dài tham số
an toàn của người dùng
Tính hoàn chỉnh: Tính hoàn chỉnh được đánh giá ở mức tốt Với thuật toán đề xuất người
thiết kế luôn tính được khóa riêng từ khóa công khai tương ứng và kẻ tấn công không thể
tính toán được khóa riêng, từ khóa công khai của người dùng
Lực lượng khóa:
Xét việc tạo p (bước 5 đến 10) Theo (9), ta có #{ } = #{ } ≈ /
Ký hiệu s ∈ Sp , ta có s = A p i + B p , (bước 9) và #{ s } = #{ i }
≤ / ⇔ √ //
.
/ / ≤ ≤ / /
⇒#{ } = / √ / / = ( √ )./ / = ( √ )./ / = 2 0,6 ≈ 2 Vậy số lượng các số nguyên của bởi tập Sp,
# Sp = #{p1} #{p2}.#{i } = / / 2 = / Theo (6), ta có Pr[ ố à ê ố] = ,
Vậy số lượng p, #{p}= # Sp Pr[số k bit là nguyên tố] = /
/ = / (15)
Xét cách tạo q, vì q được tạo giống như q trong thuật toán mục 2.3.4, độc lập với p và
thỏa mãn điều kiện (8) Theo (13), vậy #{ } ≈ / (16)
Cách tạo d, cũng giống như trong thuật toán mục 2.3.4
Xét tỷ lệ giữa lực lượng của G1 và G0, vì e, q, d được sinh trong G1 giống như trong G0
nên hạng tử #{e}, #{q} có thể bỏ qua, nên tỷ lệ lực lượng giữa G1 và G0 là:
= , , ≈ // /
/ = 2 / = 2 . (17)
Vì hằng số c = -1/2 trong tỷ lệ giữa hai lực lượng, , nên theo bảng 1, lực lượng của
G1 được đánh giá ở mức tốt
Tính chất phân phối: Thông tin backdoor được tạo ngẫu nhiên và được nhúng vào các bit
thấp của p nên phần nhúng thông tin backdoor cũng có phân phối gần với phân phối đều Việc sinh p, q ngẫu nhiên nên phân phối của n có thể gần với phân bố đều và do vậy, khoảng cách thống kê giữa thành phần n của G1 và G0 là xấp xỉ bằng 0, DG1 ≈ 0 Vậy tính
chất phân phối của G1 được đánh giá là tốt
Tương quan giữa các thành phần khóa: Thông tin backdoor đựợc nhúng vào tham số p
Theo cách thực hiện của thuật toán tham số q được tạo độc lập Nếu người dùng cố định p hoặc q và yêu cầu sinh lại q hoặc p thì có thể thực hiện được Do vậy, tính tương quan giữa các thành phần khóa của G1 được đánh giá đạt mức tốt
Độ phức tạp tính toán:
Vì p được tạo gần giống như trong G0 (chỉ khác A, B) nên ta có t p (G0) = t p (G1)
Việc tạo e, q, d giống như trong G0 nên độ phức tạp tạo n là: t n (G1) = t p + t q = t n và độ
phức tạp tạo e là: t e (G1) = t e (G0)
Trang 7Vậy độ phức tạp của thuật toán là: T(G1) = t n + t e Nên độ phức tạp của G1 được đánh giá
là “tốt” vì nó khác biệt không đáng kể đối với độ phức tạp của G0
Bộ nhớ sử dụng: Thuật toán không sử dụng bộ nhớ NM và VM nên nó có thuộc tính bộ
nhớ sử dụng được đánh giá là tốt
4 KẾT LUẬN
Dựa trên thuật toán sinh số nguyên tố chứng minh được của Maurer và thuật toán tìm
số nguyên tố mạnh của John Gordon và tấn công phân tích nhân tử của Coppersmith, một thuật toán sinh khóa RSA chứa backdoor mới thỏa mãn các điều kiện chặt theo chuẩn FIPS 186-4 được đề xuất Thuật toán đề xuất được đánh giá tốt trên 7 thuộc tính và có thể ứng dụng tốt trong phần sinh khóa của thiết bị PKI Token hoặc HSM (Hardware Security Module) Ngoài ra, thuật toán có thể được xem xét cải tiến theo hướng tăng lực lượng khóa hoặc rút bớt thông tin backdoor
TÀI LIỆU THAM KHẢO
[1] FIPS, 2013, FIPS PUB 186-4; Digital Signature Standard,
http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
[2] John Gordon, 1985, Strong Primes are Easy to Find In: Beth T., Cot N., Ingemarsson
I (eds) Advances in Cryptology
[3] D Coppersmith, 1995, Small Solutions to Polynomial Equations, and Low Exponent
RSA Vulnerabilities, https://www.di.ens.fr/~fouque/ens-rennes/coppersmith.pdf
[4] G.Arboit, 2008, Two mathematical security aspects of the rsa cryptosystem,
http://crypto.cs.mcgill.ca/~crepeau/PDF/these-Genevieve.pdf
[5] A Menezes, P van Oorschot, and S Vanstone, 2001, Handbook of Applied
Cryptography, CRC Press
[6] U Maurer, 1994, Fast Generation of Prime Numbers and Secure Public Key
Cryptographic Parameters, https://pdfs.semanticscholar.org/e
[7] Alexander May, 2007, Using LLL-Reduction for Solving RSA and Factorization
Problems, https://pdfs
ABSTRACT
A BACKDOOR IN RSA KEY GENERATION STRICTLY COMPLY WITH FIPS 186-4
In this paper, a proposal of backdoored RSA key generation algorithm strictly comply with conditions of key parameter in FIPS 186-4 [1] is presented The proposed algorithm use John Gordon’s strong prime finding algorithm [2] and using Coppersmith’s factoring attack [3] to reduce backdoor information for embedding
Keywords: Cryptography, Key generation, RSA, Backdoor
Nhận bài ngày 24 tháng 7 năm 2017 Hoàn thiện ngày 13 tháng 10 năm 2017 Chấp nhận đăng ngày 20 tháng 12 năm 2017
Địa chỉ: Cục Chứng thực số và Bảo mật thông tin - Ban Cơ yếu Chính phủ
* Email : lequanghuyabc@gmail.com.