Tài liệu Về một backdoor đối xứng trong sinh khóa rsa tuân thủ điều kiện “lỏng” theo chuẩn Fips 186-4 - Bạch Nhật Hồng: 99
HNUE JOURNAL OF SCIENCE DOI: 10.18173/2354-1059.2018-0010
Natural Sciences 2018, Volume 63, Issue 3, pp. 99-107
This paper is available online at
VỀ MỘT BACKDOOR ĐỐI XỨNG TRONG SINH KHÓA RSA
TUÂN THỦ ĐIỀU KIỆN “LỎNG” THEO CHUẨN FIPS 186-4
Bạch Nhật Hồng1 và Lê Quang Huy2
1Khoa Điện - Điện tử, Trường Đại học Sư phạm Kĩ thuật Hưng Yên
2Cục Chứng thực số và Bảo mật thông tin, Ban Cơ yếu Chính phủ
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 đối xứng
tuân thủ điều kiện “lỏng” về tham số khóa theo chuẩn FIPS 186-4 [1]. Thuật toán đề xuất dựa
trên sự cải tiến thuật toán backdoor trong sinh khóa RSA tại mục 3 trong [2] với các tham số
đầu vào và đầu ra thỏa mãn chuẩn FIPS 186-4. Để khẳng định các phân tích, đánh giá, thuật
toán backdoor đề xuất được thử nghiệm trên một thiết bị PKI-Token với các kết quả phù hợp.
Từ khóa: Mật mã, sinh khóa, RSA, backdoor.
1. Mở đầu
Backdoor trong các hệ mật mã được nghiên cứu phục vụ nhu c...
9 trang |
Chia sẻ: quangot475 | Lượt xem: 629 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Về một backdoor đối xứng trong sinh khóa rsa tuân thủ điều kiện “lỏng” theo chuẩn Fips 186-4 - Bạch Nhật Hồng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
99
HNUE JOURNAL OF SCIENCE DOI: 10.18173/2354-1059.2018-0010
Natural Sciences 2018, Volume 63, Issue 3, pp. 99-107
This paper is available online at
VỀ MỘT BACKDOOR ĐỐI XỨNG TRONG SINH KHÓA RSA
TUÂN THỦ ĐIỀU KIỆN “LỎNG” THEO CHUẨN FIPS 186-4
Bạch Nhật Hồng1 và Lê Quang Huy2
1Khoa Điện - Điện tử, Trường Đại học Sư phạm Kĩ thuật Hưng Yên
2Cục Chứng thực số và Bảo mật thông tin, Ban Cơ yếu Chính phủ
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 đối xứng
tuân thủ điều kiện “lỏng” về tham số khóa theo chuẩn FIPS 186-4 [1]. Thuật toán đề xuất dựa
trên sự cải tiến thuật toán backdoor trong sinh khóa RSA tại mục 3 trong [2] với các tham số
đầu vào và đầu ra thỏa mãn chuẩn FIPS 186-4. Để khẳng định các phân tích, đánh giá, thuật
toán backdoor đề xuất được thử nghiệm trên một thiết bị PKI-Token với các kết quả phù hợp.
Từ khóa: Mật mã, sinh khóa, RSA, backdoor.
1. Mở đầu
Backdoor trong các hệ mật mã được nghiên cứu phục vụ nhu cầu (hợp pháp) đảm bảo an
ninh chống lại việc sử dụng mật mã thực hiện các hành động tội phạm [3]. Căn cứ vào đặc điểm
của hệ mật việc nghiên cứu backdoor tập trung vào phần sinh khóa (key generation) đối với hệ
mật bất đối xứng và vào phần mã mật (encryption) đối với hệ mật đối xứng. 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 khóa công khai RSA
đang được sử dụng phổ biến trong các sản phẩm mật mã (phần cứng, phần mềm), 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ố do viện tiêu chuẩn quốc gia Mỹ (NIST) công bố 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ủ.
Để có thể ứng dụng đảm bảo an ninh khi sử dụng mật mã, bài báo tập trung nghiên cứu về
backdoor trong sinh khóa RSA và đề xuất một thuật toán sinh khóa RSA chứa backdoor đối xứng
tuân thủ điều kiện “lỏng” về tham số khóa tại Appendix B.3.1. FIPS 186-4 [1].
2. Nội dung nghiên cứu
2.1. Cơ sở về backdoor trong sinh khóa RSA
2.1.1. Công cụ hình thức phân tích và đánh giá backdoor
Để tạo cơ sở phân tích và đánh giá backdoor, công cụ hình thức của Arboit (mục 4.2 chương
4 trong [5]) với định nghĩa hình thức cụ thể, các tiêu chuẩn đánh giá hiệu quả được sử dụng trong
bài báo này và được trình bày tóm tắt tại mục A phần 2 trong [2]. Để đánh giá backdoor, các tiêu
chuẩn đánh giá được phân tích, lượng hóa, phân ngưỡng, tổng hợp tại bảng I mục B phần 2 trong [2].
Ngày nhận bài: 19/7/2017. Ngày sửa bài: 1/2/2018. Ngày nhận đăng: 9/2/2018.
Tác giả liên hệ: Lê Quang Huy. Địa chỉ e-mail: lequanghuyabc@gmail.com
Bạch Nhật Hồng và Lê Quang Huy
100
2.1.2. Phương pháp phân tích nhân tử của Coppersmith
Một vấn đề khó trong lí thuyết số là tìm cách hiệu quả để phân tích nhân tử của một số
nguyên. Các thuật toán phân tích nhân tử tốt nhất hiện nay, phương pháp đường cong Ellip và
sàng trường số, vẫn có độ phức tạp lũy thừa. Một hướng nghiên cứu được hình thành gần đây là
sự nới lỏng bài toán phân tích nhân tử để có thể giải quyết được trong thời gian đa thức. Một sự
nới lỏng bài toán phân tích nhân tử có nhiều ứng dụng trong phân tích mã là phân tích nhân tử khi
biết một nửa số các bit của số nguyên tố p, sử dụng phương pháp tìm nghiệm nguyên nhỏ của
phương trình đa thức modulo một biến của Coppersmith [4].
* Tìm nghiệm nguyên nhỏ của phương trình đa thức modulo một biến
Đến nay, chưa có thuật toán tổng quát hiệu quả để tìm nghiệm nguyên của phương trình
modulo một biến. Năm 1996, Coppersmith [4] đã đưa ra phương pháp hiệu quả tìm nghiệm
nguyên nhỏ của phương trình modulo một biến sử dụng thuật toán rút gọn cơ sở LLL.
Phát biểu bài toán
Giả thuyết cho:
- N là một số nguyên lớn không biết nhân tử (thừa số)
- Đa thức f ∈ Z[x], có bậc d, f (x) = ad x
d
+ ad-1 x
d-1
+ + a1x + a0
- Phương trình modulo: f (x) ≡ 0 (mod N)
Cần tìm nghiệm nguyên x0 ∈ Z, của phương trình f (x) ≡ 0 (mod N); với | x0 | ≤ X, X là một
ràng buộc xác định, x0 thỏa mãn f (x0) ≡ 0 (mod N).
Ý tưởng và cách tìm nghiệm
Ý tưởng: rút gọn (biến đổi) bài toán tìm nghiệm nguyên nhỏ của phương trình modulo thành
bài toán tìm nghiệm nguyên nhỏ của phương trình trên tập các số nguyên Z.
Điều kiện: Giả sử |f (x)| < N với | x | ≤ X, (X là một ràng buộc xác định). Khi đó nghiệm x0 của
phương trình đa thức f (x) = 0, cũng là nghiệm của f (x) ≡ 0 (mod N).
Ràng buộc X càng lớn thì càng chứa được nhiều nghiệm. Nghiệm x0 của f (x) = 0 trên Z có
thể được tìm thấy bằng cách sử dụng các thuật toán tìm nghiệm chuẩn (Sturm sequence).
Cách thực hiện: lựa chọn tập đa thức thích hợp để xây dựng đa thức mới là tổ hợp tuyến tính
của các đa thức trong tập hợp sao cho vector (hệ số) của đa thức mới có chuẩn Euclide thỏa mãn
điều kiện biến đổi phương trình modulo thành phương trình không modulo. Ràng buộc X và các
hệ số của đa thức mới được tìm thấy hiệu quả bằng cách áp dụng thuật toán rút gọn LLL.
* Phân tích nhân tử số modulo N khi biết một nửa số bit p
Phương pháp tìm nghiệm nguyên nhỏ của phương trình đa thức modulo một biến có nhiều
ứng dụng rộng rãi. Một ứng dụng quan trọng là: phân tích nhân tử số modulo N = p.q trong thời
gian đa thức, khi biết một nửa các bit của số nguyên tố p. Cụ thể, Coppersmith trong [4] đã chứng
minh các kết quả sau:
Định lí 2.1. Phân tích nhân tử khi biết các bit cao của kp
Cho N = p.q, giả sử p > q, gọi k là một số nguyên không phải là bội số của q. Giả sử ta biết
được xấp xỉ p’ của kp sao cho:
1
4' 2kp p N
Thì có thể phân tích nhân tử N trong thời gian đa thức theo log N.
Định lí 2.2. Phân tích nhân tử khi biết các bit cao của p
Cho N = p.q, trong đó p, q là các số nguyên tố. Nếu biết một nửa các bit cao (1/4 log2 N) của p,
ta có thể phân tích nhân tử N trong thời gian đa thức theo kích thước bit của p.
Định lí 2.3. Phân tích nhân tử khi biết các bit thấp của p
Về một backdoor đối xứng trong sinh khóa RSA tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4
101
Cho N = p.q trong đó p, q có cùng kích thước bit và p > q. Giả sử biết p0 và M thỏa mãn p0 =
p mod M và M ≥ N1/4 thì có thể phân tích nhân tử của N trong thời gian đa thức log2 N.
2.1.3. Thuật toán trung thực tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4
Để tạo cơ sở cho việc phân tích và đánh giá thuật toán backdoor đề xuất, điều kiện về tham
số và thuật toán trung thực tuân thủ chuẩn FIPS 186-4 được trình bày chi tiết.
* Điều kiện “lỏng” về tham số khóa RSA theo FIPS 186-4
Điều kiện “lỏng” về tham số khóa của hệ mật RSA là điều kiện về tham số khóa được mô tả
tại mục A2 và mục B tại phần B.3.1 appendix B, FIPS 186-4 [1]. “Lỏng” ở đây được hiểu là yêu
cầu “không cao” về tính nguyên tố của tham số p và q (các số có thể nguyên tố), để có không gian
khóa lớn.
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à các số có thể nguyên tố (probable prime) ngẫu nhiên (nlen ≥ 2048).
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 1 /2 12. 2 , 2nlen nlenp q (1)
c)
/2 1002nlenp q (2)
4. Số mũ riêng d, được tạo sau khi tạo p và q, thỏa mãn:
2
nlen / 2
< d < LCM (p - 1, q - 1) và d = e
-1
mod (LCM (p - 1, q - 1)).
* Thuật toán sinh khóa RSA tuân thủ điều kiện “lỏng” (thuật toán G0)
Thuật toán sinh khóa RSA trung thực tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4 được
tóm tắt theo thuật toán tại mục B.3.3. appendix B FIPS 186-4, được mô tả như sau:
Input (nlen, e)
Output (p, q, n, e, d)
1: if (e < 2
16
or e > 2
256
) then return failure ;
// generate p
2: p = RandomOddInteger() ; //log2 p =nlen/2
3: if /2 12.2nlenp then goto step 2 ;
4: if (gcd(p - 1, e) ≠ 1) then goto step 2 ;
5: if (not PrimalityTest (p)) then goto step 2;
// generate q
6: q = RandomOddInteger() ; //log2 q =nlen/2
7: if /2 12.2nlenq then goto step 6 ;
8: if ( |p – q| ≤ 2
nlen/2 – 100
) then go to step 6 ;
9: if (gcd(q - 1, e) ≠ 1) then goto step 6 ;
10: if (not PrimalityTest (q)) then goto step 6 ;
// compute n, d
11: n = p.q ;
12: d = e
–1
mod (LCM(p - 1, q - 1)) ;
13: if ( d < 2
nlen/ 2
) then go to step 6 ;
14: return (p, q, n, 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 “lỏng”
Xét cách tạo p:
Vì p là một số nguyên tố nằm trong khoảng /2 1 /22.2 ,2 1nlen nlen .
Bạch Nhật Hồng và Lê Quang Huy
102
Nên #{ p } = Pr[số nlen/2 bit là số nguyên tố].
/2 /2 12 2.2nlen nlen 2
/2 /2
/2 log/2 12 2 2.0,6.2 1,2. 2
/ 2
nlen nlen
nlen nlennlen
nlen nlen nlen
(3)
Xét cách tạo q:
Kí hiệu u là số nguyên tố trong khoảng (p - 2nlen/2 -100, p + 2nlen/2 -100) (4)
Vậy #{u}= Pr[số nlen/2 bit là số nguyên tố] * (p + 2nlen/2 -100 – (p - 2nlen/2 -100) =
/2 97
/2 992 2.2
/ 2
nlen
nlen
nlen nlen
(5)
Vì q được tạo giống như p và sau p thỏa mãn điều kiện (2), nằm ngoài khoảng ( (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 (1))
với giá trị là : /2 1 /2 22 2 .2 2nlen nlen .
Nên #{q} = #{p} - #{u} = 2
/2 /2 97 /2 1
/2 1 log2 2 2
2
nlen nlen nlen
nlen nlen
nlen nlen nlen
(6)
Vậy lực lượng khóa của thuật toán là, #{(p, q, d)} = {#{p}. #{q)}
=
/2 /2 1 1
2
2 2 2
.
nlen nlen nlen
nlen nlen nlen
(7)
2.2. Đề xuất thuật toán sinh khóa RSA chứa backdoor mới
2.2.1. Giới thiệu thuật toán
Thuật toán sinh khóa RSA chứa backdoor đề xuất được xây dựng dựa trên việc cải tiến thuật
toán backdoor ở mục 3.4. trong [2]. Điểm cải tiến trong thuật toán đề xuất là các tham số đầu vào
và đầu ra (p, q, d) thỏa mãn điều kiện “lỏng” theo chuẩn FIPS 186-4. Việc cải tiến chỉ áp dụng
cho phần sinh khóa, phần khôi phục khóa không thay đổi.
Ý tưởng của thuật toán: tạo số nguyên tố p ngẫu nhiên, trích thông tin backdoor từ p và
nhúng vào một giá trị n’ gần với số modulus n. Từ giá trị n’ sẽ tìm ra q, n và d.
Thông tin backdoor I(kpriv) = ((p⌉k/2)⌋s - k/2), được trích với độ dài nhỏ hơn một nửa các bit của
số nguyên tố p (bước 10).
Kỹ thuật nhúng: thông tin backdoor sau khi đã mã mật được ghép vào phía bên phải (các bit
thấp) với giá trị ngẫu nhiên (các bit cao) để tạo ra một giá trị có độ dài k = nlen/2 bit, giá trị được
ghép này được ghép tiếp vào bên trái (phía các bit cao) với giá trị nlen/2 bit ngẫu nhiên (các bit
thấp) tạo thành giá trị có chiều dài nlen bit. (bước 12). Giá trị nlen bit này được sử dụng để tìm ra
số nguyên tố q.
Các tham số thuật toán:
+ G1 = Thuật toán đề xuất; G1 = G0 = nlen ≥ 2048; E = AES, E ≥ 128; M = n; log2 p = log2 q
= k=nlen/2.
+ Hàm F: là hàm mã mật hóa đối xứng AES, AES ≥ 128.
+ 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 phương pháp phân tích
nhân tử của Coppersmith (mục 2.2), ví dụ: p = G(n, 2k/2, p div 2k/2).
Về một backdoor đối xứng trong sinh khóa RSA tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4
103
Thuật toán đề xuất [sinh khóa RSA]
1: Input (e, s, nlen) ;
2: if (e < 2
16
or e > 2
256
) then return failure ;
// tạo số nguyên tố p
3: p = RandomOddInteger() ; //log2 p =nlen/2
4: if /2 12.2nlenp then goto step 3 ;
5: if (gcd(p - 1, e) ≠ 1) then goto step 3 ;
6: if (not (PrimalityTest (p))) then goto step 3 ;
// tạo số nguyên tố q
7: q’ = RandomOddInteger() ; //log2 q =nlen/2
8: n1 = p.q’ ; //k = nlen/2
9: τ = n1⌉
k/2
;
10: μ = F K((p⌉
k/2
)⌋s - k/2);//K, khóa người thiết kế
11: r = RandomOddInteger() ; //log2 r = 3k/2 - s
12: n2 = τ . 2
3k/2
+ μ . 23k/2 –s + r ; //n2 = τ : μ : r
13: q = [n2 / p] ;
14: if /2 12.2nlenq then goto step 7 ;
15: if ( |p – q| ≤ 2
nlen/2 – 100
) then go to step 7 ;
16: if (gcd(q - 1, e) ≠ 1) then goto step 7 ;
17: if (not (PrimalityTest (q))) then goto step 7 ;
18: n = p.q ;
19: d = e
–1
mod (LCM(p - 1, q - 1)) ;
20: if ( d < 2
nlen/ 2
) then go to step 7 ;
21: return (p, q, n, d) ;
Thuật toán đề xuất [khôi phục khóa RSA]
1: Input (n, e, s) ;
2: μ = ( n⌋3k/2 )⌉s - k/2 ;
3: p1 = /2s kn e ;
4: p2 = F
-1
K(μ) ;
5: p3 = p1 . 2
s-k/2
+ p2 ; //p3 = p1 : p2
//p3 == p⌉
k/2
6: p = S(n, 2
k/2
,
p3) ;//phương pháp Coppersmith
7: q = n / p ;
8: d ≡ e−1 mod φ(n) ;
9: return (p, q, d) ;
2.2.2. Đánh giá thuật toán đề xuất
Tính bảo mật: Xét trường hợp kẻ tấn công có khóa công khai của người dùng, không có
khóa bí mật của người thiết kế. Giả sử độ dài tham số an toàn của hệ mật người dùng G1 ≥ 2048,
Start
e, nlen, s
Điều kiện tham số đầu vào
Trả về
mã lỗi
Stop
No
Tạo số nguyên tố p
Tính giá trị q
Điều kiện tham số q
Yes
No
Tính n, d
Điều kiện số mũ riêng d
Yes
No
p, q, n, d
Yes
Điều kiện tham số p No
Yes
2
16
< e < 2
256
p là số có thể nguyên tố
gcd(p - 1, e) = 1
(1,41.2
nlen/2-1
< p < 2
nlen/2
)
A.1, B.2.a, B.2.b
mục 1.4.3
q là số có thể nguyên tố
gcd (q - 1, e) = 1
(1,41 . 2
nlen/2-1
< q < 2
nlen/2
)
|p – q| 2nlen/2 – 100
A.1, B.2.a, B.2.b,
B.2.c mục 1.4.3
d < 2
nlen/ 2
B.3,mục 1.4.3
Chuẩn bị thông tin backdoor
Chèn backdoor vào số modulus n
Chèn thông tin
backdoor vào
số modulus n
Hình 1. Sơ đồ khối phần thuật toán sinh khóa
của backdoor đề xuất
Start
n, e, s
Stop
p = Phân_tích_nhân_tử_Coppersmith(p3)
Tính q, d
p, q, d
Tính thông tin backdoor từ khóa công khai, p3
Hình 2. Sơ đồ khối phần thuật toán khôi phục khóa
của backdoor đề xuất
Bạch Nhật Hồng và Lê Quang Huy
104
người thiết kế lựa chọn hệ mật đối xứng AES có độ dài tham số an toàn AES ≥ 128 tương đương
với độ an toàn của người dùng. Vì kẻ tấn công không có khóa bí mật của người thiết kế và độ an
toàn hệ mật của người thiết kế được lựa chọn tương đương với độ an toàn hệ mật người dùng nên
kẻ tấn công không phá vỡ được hệ mật của người dùng thì cũng không phá vỡ được hệ mật của
người thiết kế. Căn cứ vào bảng các tiêu chuẩn đánh giá backdoor mục 2.1, tính bảo mật được
đánh giá ở mức “tốt”.
Tính hoàn chỉnh: Xét thuật toán sinh khóa: Với mục tiêu nhúng thông tin backdoor vào
khóa công khai, thông tin backdoor ít hơn một nửa các bit của p được trích và mã mật (bước 10)
và nhúng vào giá trị n (bước 12).
Xét thuật toán khôi phục khóa: với mục tiêu khôi phục khóa riêng, thông tin backdoor đã mã
mật được tách ra khỏi các bit cao của n (bước 2). Sử dụng khóa bí mật của người thiết kế, giải mã
mật thông tin backdoor ta thu được gần một nửa các bit cao của p (bước 4). Phần còn lại của nửa
các bit cao của p, nhận được khi lấy các bit cao của căn bậc 2 số modulus n. Sử dụng phương
pháp phân tích nhân tử của Coppersmith với đầu vào là một nửa các bit cao của p, ta nhận được
toàn bộ giá trị p. Từ p dễ dàng tính được q và d.
Theo các bước trong thuật toán sinh khóa và thuật toán khôi phục khóa, người thiết kế luôn
tính được khóa riêng của người dùng từ khóa công khai tương ứng. Căn cứ vào bảng các tiêu
chuẩn đánh giá backdoor mục 2.1, tính hoàn chỉnh được đánh giá ở mức “tốt”.
Lực lượng khóa:
Xét việc tạo p (từ bước 3 đến bước 6) Vì p được tạo ngẫu nhiên và giống như trong thuật
toán trung thực mục 2.3.2. nên theo (2), ta có #{p} = 2
/2
/2 log2
2
nlen
nlen nlen
nlen
.
Xét việc tạo q (từ bước 7 đến bước 17). Với mỗi p có thể chọn ngẫu nhiên τ và r , do đó tạo
được 22k - s = 2nlen - s giá trị n2. Vì q được tính theo n2 và p (bước 12),
nên #{ q }= #{n2 / p} . Pr[q là số nguyên tố]. #{ q } = 2
2
1 log ( /2) /2 2
/2 log
2
.2 2
2
nlen s
nlen nlen s
nlen nlen
Vậy số lượng n là: #{n} = #{p} . #{q} = 2 2
/2 log 2 log/2 22 .2 2
nlen nlen nlen s nlennlen s
Xét tỷ lệ giữa lực lượng của G1 và G0, vì p được sinh trong G1 giống trong G0 nên hạng tử
#{p} có thể bỏ qua, ta có:
2 2
1 2
1 2
0
12
3 log . log, 3 log 2 2 2
1 log
,
2
2 2 2
2
k nlennlen s
nlen nlenG q s nlen
G nlen nlen
G q
N
R
N
Vì hằng số c < -1/2 trong
1G
R và căn cứ vào bảng các tiêu chuẩn đánh giá backdoor mục 2.1,
lực lượng của G1 được đánh giá ở mức “tốt”.
Tính phân phối: Thông tin backdoor được mã mật hóa và nhúng vào vị trí cố định trong n.
Tuy nhiên vì thông tin backdoor được mã mật hóa bằng mã khối đối xứng (có phân phối đầu ra
gần với phân bố đều) 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 ngẫu nhiên và q được tạo thông qua việc chia n2 cho p với giá trị n2 phụ thuộc
một phần vào p, tham số ngẫu nhiên r và tham số ngẫu nhiên q’. Do vậy phân phối của q, 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 q, n của G1 và G0 là xấp xỉ
bằng 0, DG1 ≈ 0. Căn cứ vào bảng các tiêu chuẩn đánh giá backdoor mục 2.1, tính phân phối của
G1 được đánh giá ở mức “tốt”.
Tính tương quan: Theo cách tạo q (từ bước 7 đến bước 17), q phụ thuộc vào p, tham số ngẫu
nhiên r và tham số ngẫu nhiên q’. Nếu người dùng cố định p và yêu cầu sinh lại q thì việc sinh lại
Về một backdoor đối xứng trong sinh khóa RSA tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4
105
khóa tổng quát thực hiện được. Tuy nhiên, nếu người dùng yêu cầu ngược lại, tức là cố định q và
sinh lại p là không khả thi. (Việc sinh lại khóa trong trường hợp này chỉ khả thi nếu thuật toán cho
phép hoán đổi được vai trò của p và q). Căn cứ vào bảng các tiêu chuẩn đánh giá backdoor mục
2.1, tính tương quan của G1 được đánh giá đạt mức “trung bình”.
Độ phức tạp tính toán:
Vì p được tạo giống như trong G0 nên ta có tp(G0) = tp(G1).
Trong vòng lặp tạo q (từ bước 7 đến bước 17) có thêm việc mã mật hóa thông tin backdoor
bằng hệ mật đối xứng (AES). Tuy nhiên độ phức tạp của hệ mật đối xứng AES không đáng kể so
độ phức tạp của việc tạo q nên độ phức tạp của việc tạo q trong G1 cũng gần giống như trong G0
nên ta có: tq (G1) = tq (G0). Vậy độ phức tạp tạo n là: tn(G1) = tp + tq = tn . Căn cứ vào bảng các
tiêu chuẩn đánh giá backdoor mục 2.1, độ phức tạp của G1 được đánh giá ở mức “tốt” vì nó tuyến
tính đố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á ở mức “tốt”.
2.2.3. So sánh thuật toán backdoor đề xuất với thuật toán Hidden Prime Factor
Thuật toán backdoor đề xuất có ưu điểm hơn so với thuật toán backdoor tại mục 3 trong [2] ở
chỗ các tham số đầu vào và đầu ra tuân thủ chuẩn FIPS 186-4. Vì thuật toán backdoor tại mục 3
trong [2] được xây dựng dựa trên ý tưởng của thuật toán Hidden Prime Factor trong [6], nên việc
phân tích so sánh giữa thuật toán backdoor đề xuất và thuật toán Hidden Prime Factor sẽ làm rõ
hơn các cải tiến.
* Các điểm giống nhau
- Vị trí giấu thông tin backdoor: trong các bit cao của số modulus n.
- Khôi phục khóa riêng: sử dụng phương pháp phân tích nhân tử của Coppersmith.
- Bộ nhớ: Không sử dụng bộ nhớ tĩnh (NM).
* Các điểm khác biệt
Bảng 1. Điểm khác biệt giữa thuật toán backdoor đề xuất
với thuật toán Hidden Prime Factor
* Tóm tắt các điểm nổi bật của backdoor đề xuất
- Các tham số (vào/ra) của backdoor thỏa mãn điều kiện “lỏng” theo chuẩn FIPS 186-4
- Thông tin backdoor: ít hơn một nửa các bit của số nguyên tố p, lực lượng khóa lớn hơn.
- 06 thuộc tính được đánh giá tốt, 01 thuộc tính (tương quan) được đánh giá trung bình.
2.2.4. Thử nghiệm thuật toán backdoor đề xuất
Để khẳng định kết quả về mặt lí thuyết, thuật toán backdoor đề xuất được cài đặt, thử nghiệm
trên trên một thiết bị phần cứng có tên gọi là T-Token [7].
Stt Nội dung Thuật toán Hidden Prime Factor Thuật toán backdoor đề xuất
1 Thông tin backdoor
p⌉k/2 Một nửa các bit cao của số
nguyên tố p
((p⌉k/2)⌋s - k/2), ít hơn một nửa
các bit cao của số nguyên tố p
2 Chuẩn FIPS 186-4 Không tuân thủ Thỏa mãn điều kiện “lỏng”
3 Lực lượng khóa
Trung bình
7 7
.
8 8 22 2
k nlen
Tốt (hằng số c < -1/2)
2
1
. log
3 2 22 2
nlen
nlen
s
Bạch Nhật Hồng và Lê Quang Huy
106
* Cài đặt, thử nghiệm backdoor đề xuất
Thiết bị thử nghiệm (T-Token) [7] là một thiết bị PKI-Token được nghiên cứu, thiết kế, chế
tạo tại Việt Nam, sử dụng phần cứng hiện đại, firmware chứa các module mật mã được làm chủ
hoàn toàn, có các đặc điểm kỹ thuật tương tự như phần lớn các thiết bị PKI-Token hiện được sử
dụng rộng rãi, phù hợp để thử nghiệm với các đặc điểm chính:
- Phần cứng: có kích thước nhỏ gọn, giao diện USB 2.0.
- Firmware: Thực thi thuật toán mật mã RSA chuẩn PKCS#1 v1.5 và v2.1, độ dài khóa 2048
bit, tốc độ kí, giải mã < 2s; Bảo vệ khóa và các tham số mật bằng thuật toán AES.
- API: tuân theo chuẩn PKCS#11 v2.2.
Cài đặt thuật toán backdoor đề xuất: Do đối tượng sử dụng khác nhau, 02 phần của backdoor
(sinh khóa và khôi phục khóa) được cài đặt độc lập với nhau (không trên cùng một module). Phần
thuật toán sinh khóa được cài đặt bên trong firmware của thiết bị T-Token dành cho người dùng
và được gọi từ bên ngoài thông qua hàm quản lí khóa, C_GenerateKeyPair, của giao diện lập trình.
Phần thuật toán khôi phục khóa được cài đặt độc lập trên máy tính chỉ dành riêng cho người thiết kế.
Các thuộc tính của backdoor đề xuất được thử nghiệm gồm: tính hoàn chỉnh, độ phức tạp tính
toán. Đối với tính hoàn chỉnh kết quả thử nghiệm là thành công nếu từ khóa công khai được tạo ra
bởi phần sinh khóa, phần khôi phục khóa của thuật toán khôi phục được khóa riêng tương ứng;
ngược lại khi không khôi phục được khóa riêng tương ứng kết quả thử nghiệm là thất bại. Độ
phức tạp tính toán của thuật toán backdoor đề xuất (phần sinh khóa và khôi phục khóa) được đo
lường thông qua thời gian chạy (đơn vị giây).
* Kết quả thử nghiệm
Kết quả thử nghiệm cho thấy với các tham số đầu vào khác nhau thời gian thực hiện trung
bình của phần sinh khóa thuật toán backdoor đề xuất chậm hơn một chút so với thời gian thực
hiện trung bình của thuật toán sinh khóa
trung thực. Phần khôi phục khóa của
backdoor để xuất có kết quả tất định, người
thiết kế luôn khôi phục được khóa riêng từ
khóa công khai tương ứng. Tốc độ khôi phục
khóa riêng tương đối nhanh so với tốc độ
sinh khóa.
3. Kết luận
Thuật toán sinh khóa chứa backdoor mới được đề xuất dựa trên việc cải tiến backdoor tại
mục 3 trong [2] với ưu điểm các tham số đầu vào/ra thỏa mãn chuẩn FIPS 186-4. Thuật toán
Bảng 2. Kết quả thử nghiệm tính hoàn chỉnh
Số lần
thử
Kết quả (%)
Thành công Thất bại
100 100 (100%) 0 (0%)
Bảng 3. Kết quả thử nghiệm độ phức tạp
phần sinh khóa
Bảng 4. Kết quả thử nghiệm độ phức tạp
phần khôi phục khóa
Lần
thử
nlen
Thời gian chạy trung bình Lần
thử
nlen
Thời gian chạy trung
bình (s) G0 G1
1 1024 1,32s 1,56s 1 1024 0,2s
2 2048 2,1s 2,39s 2 2048 0,3s
Về một backdoor đối xứng trong sinh khóa RSA tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4
107
backdoor đề xuất đã được cài đặt, thử nghiệm trên thiết bị T-Token có kết quả phù hợp với các
phân tích về mặt lí thuyết. Thuật toán backdoor đề xuất có thể ứng dụng tốt trong phần sinh khóa
của module mật mã dạng hộp đen ứng dụng trong hạ tầng PKI. 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,
gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
[2] Bạch Nhật Hồng, Lê Quang Huy, 2017. Về một backdoor đối xứng trong sinh khóa RSA. Tạp
chí Khoa học Công nghệ Thông tin và Truyền thông, Học viện Công nghệ Bưu chính viễn
thông, số 01, 2017, tr. 03-07.
[3] Danny Yadron, 2016. FBI confirms it won't tell Apple how it hacked San Bernardino shooter's
iPhone. The Guardian, Available online at: https://www.theguardian.com/technology
/2016/apr/27/fbi-apple-iphone-secret-hack-san-bernardino
[4] D Coppersmith, 1995, Small Solutions to Polynomial Equations, and Low Exponent RSA
Vulnerabilities. Available online at: https://www.di.ens.fr/~fouque/ens-rennes/
coppersmith.pdf
[5] G.Arboit, 2008. Two mathematical security aspects of the rsa cryptosystem. Available online
at:
[6] Claude Crepeau and Alain Slakmon, 2003. Simple Backdoors for RSA Key Generation,
Available online: https://pdfs. semanticscholar.org/0428/db02e8c46cd4b1b8a43359503
bd9509034f6.pdf
[7] Nguyễn Thành Trung, 2016. Báo cáo đề tài “Nghiên cứu thiết kế, chế tạo thiết bị PKI Token
phục vụ triển khai hệ thống chứng thực điện tử chuyên dùng Chính phủ”. Ban Cơ yếu CP.
ABSTRACT
A symmetric backdoor in rsa key generation comply with “loose” conditions of fips 186-4
Bạch Nhật Hồng1 and Lê Quang Huy2
1
Faculty of Electronic and Electrical Engineering, Hung Yen University of Technology and Education
2
Department of Digital Certification and Information Securrity,
Vietnam Government Information Security Commission
This paper presents a propose of a symmetric backdoored RSA key generation algorithm,
comply with “loose” conditions of key parameter in FIPS 186-4 [1]. The proposed algorithm
improved the backdoor at secsion 3 in [2] with backdoor’s parameters comply with the conditions
of FIPS 186-4. In order to assert theoretic analysis, the proposed backdoor are tested with a PKI-
Token with suitable results.
Keywords: Cryptography, key generation, RSA, backdoor.
Các file đính kèm theo tài liệu này:
- 5143_10_huy_0871_2123670.pdf