Để 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]
(1)VỀ 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 thuật tốn sinh khóa RSA chứa backdoor tuân thủ điều kiện “chặt” tham số khóa theo chuẩn FIPS 186-4 [1] Thuật tốn đề xuất dựa sở thuật tốn tìm số nguyên tố John Gordon [2] để tạo số ngun tố mạnh cơng phân tích nhân tử 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 hệ mật mã nghiên cứu công bố rộng rãi Backdoor hệ mật nghiên cứu chủ yếu tập trung vào phần sinh khóa (key generation) phần mã mật (encryption) Tuy nhiên, nghiên cứu công bố backdoor hệ mật xác định đề xuất giải pháp chung hệ mật chưa đề xuất giải pháp tuân thủ chuẩn định Với hệ mật RSA, nhiều tổ chức định chuẩn công bố chuẩn ứng dụng thực tế Do vậy, để thuật tốn backdoor cho hệ mật RSA ứng dụng thực tế cần thỏa mãn chuẩn định Hiện tại, chuẩn FIPS 186-4 chữ ký số chuẩn có bao gồm hệ mật RSA, nhiều nhà sản xuất 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 tồn cho cộng đồng Đối tượng áp dụng module mật mã dạng hộp đen Để ứng dụng vào module mật mã dạng hộp đen có, báo tập trung nghiên cứu thuật tốn sinh khóa RSA chứa backdoor đề xuất thuật tốn sinh khóa RSA chứa backdoor tn thủ điều kiện “chặt” tham số khóa Appendix B.3.1 FIPS 186-4 [1] Thực mục tiêu trên, báo tổ chức thành phần: Mục - Đặt vấn đề, nêu lên cần thiết nghiên cứu; Mục - Các định nghĩa sở phục vụ cho việc phân tích backdoor; Mục - Đề xuất backdoor mới; Mục - Kết luận tóm tắt kết nghiên cứu 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 thuật tốn sinh khóa chứa backdoor thuộc tính có liên quan (tiêu chuẩn đánh giá) trình bày phần sử dụng kết [4]
2.1.1 Định nghĩa thuật tốn sinh khóa chứa backdoor
Ký hiệu G0, G1 thuật tốn sinh khóa trung thực (chuẩn) thuật tốn sinh
khóa chứa backdoor Ký hiệu (kpriv , kpub) khóa riêng khóa cơng khai tạo
bởi G0 G1 Ký hiệu kpub* khóa cơng khai phần khóa cơng khai Ký
hiệu tham số an toàn hệ mật Ký hiệu B0 , B1 sản phẩm hộp đen
cài đặt thuật tốn sinh khóa G0, G1 Ký hiệu R1 thuật tốn khơi phục cặp khóa tạo
bởi G1
Định nghĩa: Các cặp khóa tạo G1 cặp khóa chứa backdoor an tồn G1 tạo cặp khóa (kpub, kpriv) với thuộc tính sau thỏa mãn:
1 Tính bảo mật:
a)người thiết kế nhúng phần khóa riêng vào khóa cơng khai tương ứng, kpub*
(2)Công nghệ thông tin & Cơ sở toán học cho tin học
b) Người dùng, kẻ cơng khơng thể tính tốn khóa riêng từ khóa cơng khai tương ứng, kpriv ≠ I-1 ◦ E-1 ◦ M-1(kpub) (2)
2 Tính hồn chỉnh: Tồn thuật tốn R1 , để người thiết kế khơi phục khóa
riêng từ khóa cơng khai tương ứng, kpriv = R1(kpub) Hay hàm M, E, I khả nghịch để
người thiết kế tính kpriv = I-1 ◦ E-1 ◦ M-1(kpub) (3)
3 Khả ẩn giấu (khả phân biệt được):
a) Đầu B0 B1 phân biệt thống kê tính tốn
b) Các đo đạc bên ngồi B0 B1 khơng thể phân biệt cách rõ ràng 2.1.2 Một số tiêu chuẩn đánh giá thuật tốn sinh khóa chứa backdoor
Các tiêu chuẩn đánh giá G1 (mục [4]) tóm tắt bảng sau:
Bảng 1. Các tiêu chuẩn đánh giá thuật tốn sinh khóa chứa backdoor
Đánh giá
Tốt Trung bình Kém (thất bại)
Tiêu chuẩn
Bảo mật lE >= lG1 lG1 >= lE >= lG1 /2 lE < lG1 /2
Hoàn chỉnh ∀ kpub kẻ công kpriv ≠ F-1(kpub)
- ∃ kpub kẻ công kpriv = F-1(kpub)
Lực lượng khóa c >= - ½ -1/2 > c >= -3/2 c < -3/2
Tính phân phối D G1≈ D G1≈ D G1 >
Tính tương quan Khơng tương quan - ∃ thành phần khóa
tương quan
Độ phức tạp Tuyến tính (a =< c
=< 1)
< bậc (2 > a > > c > 1)
>= bậc (a >= c >= 2)
Bộ nhớ Không dùng VM, NM Chỉ dùng VM Dùng NM
2.3 Một số kết hệ mật RSA
2.3.1 Định lý số số nguyên tố
Ký hiệu π(n) số lượng số nguyên tố nhỏ n
Thì n lớn, ta có ( ) ~ (4) Giả sử p số nguyên tố k bít, số lượng số nguyên tố k-bit
#{ } = − = ( )
( ) ≈ = ≈ (5)
Xác xuất số nguyên k bít số nguyên tố:
Pr[ ố ố ê ố] = ( ) ≈ = = (6)
2.3.2 Định lý Coppersmith (Theorem 4, [3] chứng minh [7])
Trong thời gian đa thức, tìm phân tích nhân tử n = p.q nu bit ẳ log2 n (khong ẵ độ dài bit p) bít thấp (cao) p
2.3.3 Điều kiện “chặt” tham số khóa RSA theo FIPS 186-4
Phần trình bày điều kiện “chặt” tham số khóa hệ mật RSA “Chặt” hiểu yêu cầu cao tham số p q mô tả 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 số nguyên tố Ký hiệu nlen độ dài theo bit n Các tham số thỏa mãn điều kiện sau:
(3)- p, q số nguyên tố chứng minh
- p1, p2, q1, q2 nhân tử nguyên tố số (p - 1), (p + 1), (q - 1), (q + 1),
(các số nguyên tố phụ p, q) số nguyên tố chứng minh
- Ký hiệu n1, n2, n3, n4 chiều dài theo bit p1, p2, q1, q2 Chiều dài
số nguyên tố phụ tuân thủ ràng buộc bảng
Bảng 2. Chiều dài tối thiểu tối đa p1, p2, q1 q2 nlen Chiều dài tối thiểu
p1, p2, q1, q2
Chiều dài tối đa
len(p1) + len(p2) 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 chọn trước tạo p, q; e số lẻ thỏa mãn: 216 < e < 2256 Các số nguyên tố p q thỏa mãn ràng buộc sau:
a) (p - 1), (q - 1) nguyên tố với số mũ công khai e b) √2 / ≤ , ≤ / − (7) c) | − | > / (8)
4 Số mũ riêng d, tạo sau tạo p q, thỏa mãn:
2nlen / < d < LCM (p - 1, q - 1) d = e-1mod (LCM (p - 1, q - 1))
2.3.4 Thuật tốn sinh khóa RSA tn thủ điều kiện 2.3.3 (thuật toán G0)
Các số nguyên tố p, q tạo dựa sở thuật toán tìm số nguyên tố mạnh John Gordon [2], số nguyên tố phụ p1, p2, q1, q2 tạo dựa thuật toán sinh
số nguyên tố chứng minh Maurer ([6]) Giá trị Bp , Bq 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 , )
3 p2 = RandomProvablePrime (2 , )
4 Ap = p1.p2
5 =
−1 // using CRT
6 Sp = { Ap.i + Bp } (i = 1, 2, 3, …)
7 =
∩ √2 / , / −
such that gcd(p - 1, e) = // generate q
8 q1 = RandomProvablePrime(2 , )
9 q2 = RandomProvablePrime(2 , )
10 Aq = q1.q2
11 =
−1 //using CRT
12 Sq ={ Aq.j + Bq} (i = 1, 2, 3, …)
13 =
∩ √2 / , / −
such that gcd(q - 1, e) =
14 if ( |p – q| ≤ 2nlen/2 – 100) then go to step // compute n, d
15 n = p.q
16 d = e–1 mod (LCM(p - 1, q - 1)) 17 if ( d < 2nlen/ ) then go to step 18 return (p, q, n, e, d)
2.3.5 Lực lượng khóa thuật tố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 số lẻ)
Xét cách tạo p:Vì p1 , p2 số nguyên tố thỏa mãn điều kiện bảng nên ước
(4)Công nghệ thông tin & Cơ sở toán học cho tin học
Tập Sp tạo p1 p2 theo thuật toán sinh số nguyên tố chứng minh
Maurer Số lượng số nguyên tố sinh thuật toán Maurer sau vài mức đệ quy đạt khoảng 10% tất số nguyên tố (mục 3.4 [6])
Vậy số lượng số nguyên tố p1 p2 = {10% số nguyên tố (2nlen/16, 2nlen/8-9)}≈
1/8 * số nguyên tố (2nlen/16, 2nlen/8-9)
#{ } = #{ } = − = /
( / ) −
/
/
= / / ( ) /
( / ) / >
/
/ =
/
(9) Vì p số nguyên tố nằm tập Sp nằm khoảng
√2 / , / − Ký hiệu s ∈ Sp , ta có s = Ap.i + Bp, (bước 6), Ta có
√2 / < + < / − ⇔ √ / ≤ ≤ / ⇔
√ /
≤ ≤
/
⇔
√ /
/ ≤ ≤
/ /
⇒ #{ } = #{ } = / √ / / = ( √ ) / / ⇔ ( √ )./ / = 0,6 / ≈ 2 / = 2 /
Vậy # Sp với cặp giá trị p1, p2 là: / (10)
Vậy số lượng số nguyên tạo tập Sp,
# Sp = #{p1} #{p2}.#{i} =
/
/ / = /
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 số nguyên tố v số nguyên; (u, v ∈ Sq ) (u, v ∈ {ngoài
khoảng điều kiện (8)} ⇔ {p - 2nlen/2 -100 ≤ u, v ≤ p + 2nlen/2 -100} (12))
Vì v∈ Sq, nên v = Aq.j + Bq ,
p - 2nlen/2 -100 ≤ A
q.j + Bq≤ p + 2nlen/2 -100 ⇔
/
≤ ≤
/
#{ } = +
/ − ( − 2 / )
2 / =
2 /
2 / = /
Vậy #{v} = #{q1} #{q2}.#{j} =
/
/ / = /
#{u} = #{v} Pr[số k bit số nguyên tố] = /
/ =
/
Vì q tạo giống p sau p thỏa mãn điều kiện (8), nằm khoảng (12), mà giá trị khoảng (12) có giá trị: (p + 2nlen/2 -100 – (p - 2nlen/2 -100) = 2nlen/2 -99) nhỏ
nhiều so với khoảng tồn p q (điều kiện (7)) với giá trị :
(2 − √2) / ≈ 0,6 / Nên #{q} = #{p} - #{u} =
/
(5)= 2254
/
/ = 2254 (14)
3 ĐỀ XUẤT THUẬT TỐ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 thuật toán tìm số nguyên tố mạnh John Gordon [2] thỏa mãn điều kiện 2.3.3, để cài thông tin backdoor vào nửa bit thấp p Thông tin backdoor mã mật hóa (hoặc băm) hàm FK Giá trị p
khôi phục thông qua thuật toán Coppersmith [3] Các tham số thuật toán:
+ G1 = Thuật toán đề xuất; I(kpriv) = ((p⌋k/2)⌋); E = FK = AES, E = log2n = nlen, k(E) = (K); M = n; log2p = log2q = nlen/2
+ Hàm G: {0, 1}2k x {0, 1}k/2x {0, 1}k/2 → {0, 1}k, hàm thực kết định lý Coppersmith (mục 2.3.2), ví dụ: p = G(n, 2k/2, p mod 2k/2); (nlen = 2k)
+ Giá trị Bp, Bq: tính thơng qua định lý phần dư Trung Hoa (CRT)
+ Giá trị m ngưỡng để chọn giá trị ngẫu nhiên t khơng q lớn để dị tìm lại thuật tốn khơi phục khóa
Thuật tố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 = FK(e) //encryption or hash with
key
3 t = Random(m) // t < m
4 C = ut mod 2nlen/4 // generate p
5 p1 = RandomProvablePrime(2 , )
6 p2 = RandomProvablePrime (2 , )
7 Ap = p1.p2 2nlen/4
8 = −1
/
// using CRT Sp = { Ap.i + Bp } (i = 1, 2, 3, …)
10 =
∩ √2 / , 2 / − 1
such that gcd(p - 1, e) =
// generate q
11 q1 = RandomProvablePrime(2 , )
12 q2 = RandomProvablePrime(2 , )
13 Aq = q1.q2
14 =
−1 //using CRT
15 Sq ={ Aq.j + Bq} (i = 1, 2, 3, …)
16 =
∩ √2 / , 2 / − 1
such that gcd(q - 1, e) =
17 if ( |p – q| ≤ 2nlen/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 < 2nlen/ ) 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 = 2. u = FK(e)
3 repeat
4 C = C.u mod 2nlen/4 //(C = utmod 2nlen/4)
5 if Cmod = then
6 p = G(n, 2nlen/4, C) //Coppersmith (2.3.2) t = t +
8 until (p mod 2nlen/4 = C) and (p is prime) and (t < m) q =n / p;
10. d = e–1 mod (LCM(p - 1, q - 1)) 11 return (p, q, d)
(6)Công nghệ thông tin & Cơ sở tốn học cho tin học Tính bảo mật: Tính bảo mật đánh giá mức tốt người thiết kế sử dụng hệ mật đối xứng, 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 người dùng
Tính hồn chỉnh: Tính hồn chỉnh đánh giá mức tốt Với thuật toán đề xuất người thiết kế ln tính khóa riêng từ khóa cơng khai tương ứng kẻ cơng khơng thể tính tốn khóa riêng, từ khóa cơng khai người dùng
Lực lượng khóa:
Xét việc tạo p (bước đến 10) Theo (9), ta có #{ } = #{ } ≈ /
Ký hiệu s ∈Sp , ta có s = Ap.i + Bp , (bước 9) #{ s } = #{ i }
√ /
≤ / ⇔ √ //
≤ ≤
/ / . .
√ /
/ . / ≤ ≤
/
/ . / ⇔
√ /
/ ≤ ≤
/
/
⇒#{ } = / √ / / = ( √ )./ / = ( √ )./ / = 0,6 ≈
Vậy số lượng số nguyên tập Sp,
# Sp = #{p1} #{p2}.#{i } =
/
/ = /
Theo (6), ta có Pr[ ố ê ố] = , Vậy số lượng p, #{p}= # Sp Pr[số k bit nguyên tố] =
/
/ =
/
(15) Xét cách tạo q, q tạo giống q thuật toán mục 2.3.4, độc lập với p thỏa mãn điều kiện (8) Theo (13), #{ } ≈ / (16)
Cách tạo d, giống thuật toán mục 2.3.4
Xét tỷ lệ lực lượng G1 G0, e, q, d sinh G1 giống G0
nên hạng tử #{e}, #{q} bỏ qua, nên tỷ lệ lực lượng G1 G0 là:
= ,
, ≈
/ /
/ / = / =
(17) Vì số c = -1/2 tỷ lệ hai lực lượng, , nên theo bảng 1, lực lượng
G1 đánh giá mức tốt
Tính chất phân phối: Thơng tin backdoor tạo ngẫu nhiên nhúng vào bit thấp p nên phần nhúng thơng tin backdoor có phân phối gần với phân phối Việc sinh p, q ngẫu nhiên nên phân phối n gần với phân bố vậy, khoảng cách thống kê thành phần n G1 G0 xấp xỉ 0, DG1≈ Vậy tính
chất phân phối G1 đánh giá tốt
Tương quan thành phần khóa: Thơng tin backdoor đựợc nhúng vào tham số p Theo cách thực thuật toán tham số q tạo độc lập Nếu người dùng cố định p
hoặc q u cầu sinh lại q hoặc p thực Do vậy, tính tương quan thành phần khóa G1 đánh giá đạt mức tốt
Độ phức tạp tính tốn:
Vì p được tạo gần giống G0 (chỉ khác A, B) nên ta có tp(G0) = tp(G1)
Việc tạo e, q, d giống G0 nên độ phức tạp tạo n là: tn(G1) = tp + tq = tn độ
(7)Vậy độ phức tạp thuật toán là: T(G1) = tn + te Nên độ phức tạp G1 đánh giá
là “tốt” khác biệt khơng đáng kể độ phức tạp G0
Bộ nhớ sử dụng: Thuật tốn khơng sử dụng nhớ NM VM nên có thuộc tính nhớ sử dụng đánh giá tốt
4 KẾT LUẬN
Dựa thuật toán sinh số nguyên tố chứng minh Maurer thuật tốn tìm số nguyên tố mạnh John Gordon công phân tích nhân tử Coppersmith, thuật tốn sinh khóa RSA chứa backdoor thỏa mãn điều kiện chặt theo chuẩn FIPS 186-4 đề xuất Thuật toán đề xuất đánh giá tốt thuộc tính ứng dụng tốt phần sinh khóa thiết bị PKI Token HSM (Hardware Security Module) Ngồi ra, thuật tốn xem xét cải tiến theo hướng tăng lực lượng khóa 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 ngày 24 tháng 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