YOMEDIA
ADSENSE
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
31
lượt xem 2
download
lượt xem 2
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Bài viết 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. 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 với các tham số đầu vào và đầu ra thỏa mãn chuẩn FIPS 186-4.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: 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
HNUE JOURNAL OF SCIENCE<br />
Natural Sciences 2018, Volume 63, Issue 3, pp. 99-107<br />
This paper is available online at http://stdb.hnue.edu.vn<br />
<br />
DOI: 10.18173/2354-1059.2018-0010<br />
<br />
VỀ MỘT BACKDOOR ĐỐI XỨNG TRONG SINH KHÓA RSA<br />
TUÂN THỦ ĐIỀU KIỆN “LỎNG” THEO CHUẨN FIPS 186-4<br />
<br />
Bạch Nhật Hồng1 và Lê Quang Huy2<br />
Khoa Điện - Điện tử, Trường Đại học Sư phạm Kĩ thuật Hưng Yên<br />
2<br />
Cục Chứng thực số và Bảo mật thông tin, Ban Cơ yếu Chính phủ<br />
<br />
1<br />
<br />
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<br />
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<br />
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ố<br />
đầ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<br />
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.<br />
Từ khóa: Mật mã, sinh khóa, RSA, backdoor.<br />
<br />
1. Mở đầu<br />
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<br />
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<br />
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ệ<br />
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<br />
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ệ<br />
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<br />
đ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<br />
đị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<br />
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<br />
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ệ<br />
mật RSA, được nhiều nhà sản xuất các sản phẩm mật mã tuân thủ.<br />
Để 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ề<br />
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<br />
tuân thủ điều kiện “lỏng” về tham số khóa tại Appendix B.3.1. FIPS 186-4 [1].<br />
<br />
2. Nội dung nghiên cứu<br />
2.1. Cơ sở về backdoor trong sinh khóa RSA<br />
2.1.1. Công cụ hình thức phân tích và đánh giá backdoor<br />
Để 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<br />
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<br />
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<br />
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].<br />
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.<br />
Tác giả liên hệ: Lê Quang Huy. Địa chỉ e-mail: lequanghuyabc@gmail.com<br />
<br />
99<br />
<br />
Bạch Nhật Hồng và Lê Quang Huy<br />
<br />
2.1.2. Phương pháp phân tích nhân tử của Coppersmith<br />
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ố<br />
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à<br />
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à<br />
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ự<br />
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<br />
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<br />
phương trình đa thức modulo một biến của Coppersmith [4].<br />
* Tìm nghiệm nguyên nhỏ của phương trình đa thức modulo một biến<br />
Đế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<br />
modulo một biến. Năm 1996, Coppersmith [4] đã đưa ra phương pháp hiệu quả tìm nghiệm<br />
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.<br />
Phát biểu bài toán<br />
Giả thuyết cho:<br />
- N là một số nguyên lớn không biết nhân tử (thừa số)<br />
- Đa thức f ∈ Z[x], có bậc d, f (x) = ad xd + ad-1 xd-1 + … + a1x + a0<br />
- Phương trình modulo: f (x) ≡ 0 (mod N)<br />
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<br />
ràng buộc xác định, x0 thỏa mãn f (x0) ≡ 0 (mod N).<br />
Ý tưởng và cách tìm nghiệm<br />
Ý 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<br />
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.<br />
Đ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<br />
phương trình đa thức f (x) = 0, cũng là nghiệm của f (x) ≡ 0 (mod N).<br />
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ó<br />
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).<br />
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<br />
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<br />
đ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<br />
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.<br />
* Phân tích nhân tử số modulo N khi biết một nửa số bit p<br />
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<br />
ứ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<br />
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<br />
minh các kết quả sau:<br />
Định lí 2.1. Phân tích nhân tử khi biết các bit cao của kp<br />
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<br />
được xấp xỉ p’ của kp sao cho: kp p ' 2 N<br />
<br />
1<br />
4<br />
<br />
Thì có thể phân tích nhân tử N trong thời gian đa thức theo log N.<br />
Định lí 2.2. Phân tích nhân tử khi biết các bit cao của p<br />
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,<br />
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.<br />
Định lí 2.3. Phân tích nhân tử khi biết các bit thấp của p<br />
100<br />
<br />
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<br />
<br />
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 =<br />
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.<br />
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<br />
Để 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<br />
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.<br />
* Điều kiện “lỏng” về tham số khóa RSA theo FIPS 186-4<br />
Đ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ả<br />
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<br />
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<br />
khóa lớn.<br />
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<br />
nlen là độ dài theo bit của n. Các tham số thỏa mãn điều kiện sau:<br />
1. p và q là các số có thể nguyên tố (probable prime) ngẫu nhiên (nlen ≥ 2048).<br />
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.<br />
3. Các số nguyên tố p và q thỏa mãn các ràng buộc sau:<br />
a) (p - 1), (q - 1) nguyên tố cùng nhau với số mũ công khai e.<br />
b)<br />
<br />
2. 2nlen /21 p, q 2nlen/21 <br />
<br />
(1)<br />
<br />
c) p q 2nlen /2100<br />
<br />
(2)<br />
<br />
4. Số mũ riêng d, được tạo sau khi tạo p và q, thỏa mãn:<br />
2nlen / 2 < d < LCM (p - 1, q - 1) và d = e-1 mod (LCM (p - 1, q - 1)).<br />
* Thuật toán sinh khóa RSA tuân thủ điều kiện “lỏng” (thuật toán G0)<br />
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<br />
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:<br />
Input (nlen, e)<br />
Output (p, q, n, e, d)<br />
1: if (e < 216 or e > 2256) then return failure ;<br />
// generate p<br />
2: p = RandomOddInteger() ; //log2 p =nlen/2<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
7: if q 2.2nlen /21 then goto step 6 ;<br />
nlen/2 – 100<br />
<br />
8: if ( |p – q| ≤ 2<br />
) then go to step 6 ;<br />
9: if (gcd(q - 1, e) ≠ 1) then goto step 6 ;<br />
10: if (not PrimalityTest (q)) then goto step 6 ;<br />
// compute n, d<br />
11: n = p.q ;<br />
12: d = e–1 mod (LCM(p - 1, q - 1)) ;<br />
<br />
<br />
<br />
3: if p 2.2nlen /21 then goto step 2 ;<br />
4: if (gcd(p - 1, e) ≠ 1) then goto step 2 ;<br />
5: if (not PrimalityTest (p)) then goto step 2;<br />
// generate q<br />
6: q = RandomOddInteger() ; //log2 q =nlen/2<br />
<br />
nlen/ 2<br />
<br />
13: if ( d < 2<br />
) then go to step 6 ;<br />
14: return (p, q, n, d) ;<br />
<br />
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”<br />
Xét cách tạo p:<br />
Vì p là một số nguyên tố nằm trong khoảng<br />
<br />
<br />
<br />
<br />
<br />
2.2nlen /21 , 2nlen /2 1 .<br />
<br />
101<br />
<br />
Bạch Nhật Hồng và Lê Quang Huy<br />
<br />
Nên<br />
<br />
2<br />
<br />
nlen /2<br />
<br />
#{<br />
<br />
p<br />
<br />
<br />
<br />
2.2nlen /21 <br />
<br />
}<br />
<br />
=<br />
<br />
Pr[số<br />
<br />
nlen/2<br />
<br />
bit<br />
<br />
nlen /2<br />
<br />
là<br />
<br />
số<br />
<br />
nguyên<br />
<br />
tố].<br />
<br />
nlen /2<br />
<br />
2<br />
2<br />
2<br />
.0, 6.2nlen /21 1, 2.<br />
<br />
2nlen /2log2 nlen<br />
nlen / 2<br />
nlen<br />
nlen<br />
<br />
Xét cách tạo q:<br />
Kí hiệu u là số nguyên tố trong khoảng (p - 2nlen/2 -100, p + 2nlen/2 -100)<br />
Vậy #{u}= Pr[số nlen/2 bit là số nguyên tố] * (p + 2nlen/2<br />
<br />
(3)<br />
<br />
(4)<br />
-100<br />
<br />
– (p - 2<br />
<br />
nlen/2 -100<br />
<br />
) =<br />
<br />
nlen /2 97<br />
<br />
2<br />
2<br />
.2nlen /299 <br />
nlen / 2<br />
nlen<br />
<br />
(5)<br />
<br />
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<br />
– (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))<br />
<br />
<br />
<br />
<br />
<br />
với giá trị là : 2 2 .2nlen /21 2nlen /22 .<br />
Nên #{q} = #{p} - #{u} =<br />
<br />
2nlen /2 2nlen /297 2nlen /21<br />
<br />
<br />
2nlen /21log2 nlen<br />
nlen<br />
nlen<br />
nlen<br />
<br />
(6)<br />
<br />
Vậy lực lượng khóa của thuật toán là, #{(p, q, d)} = {#{p}. #{q)}<br />
<br />
2nlen /2 2nlen /21 2nlen 1<br />
=<br />
.<br />
<br />
nlen nlen<br />
nlen 2<br />
2.2. Đề xuất thuật toán sinh khóa RSA chứa backdoor mới<br />
<br />
(7)<br />
<br />
2.2.1. Giới thiệu thuật toán<br />
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<br />
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<br />
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<br />
cho phần sinh khóa, phần khôi phục khóa không thay đổi.<br />
Ý 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à<br />
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.<br />
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<br />
số nguyên tố p (bước 10).<br />
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<br />
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<br />
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<br />
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<br />
số nguyên tố q.<br />
Các tham số thuật toán:<br />
+ G1 = Thuật toán đề xuất; G1 = G0 = nlen ≥ 2048; E = AES, E ≥ 128; M = n; log2 p = log2 q<br />
= k=nlen/2.<br />
+ Hàm F: là hàm mã mật hóa đối xứng AES, AES ≥ 128.<br />
+ 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<br />
nhân tử của Coppersmith (mục 2.2), ví dụ: p = G(n, 2k/2, p div 2k/2).<br />
<br />
102<br />
<br />
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<br />
<br />
Thuật toán đề xuất [sinh khóa RSA]<br />
1: Input (e, s, nlen) ;<br />
2: if (e < 216 or e > 2256) then return failure ;<br />
// tạo số nguyên tố p<br />
3: p = RandomOddInteger() ; //log2 p =nlen/2<br />
<br />
<br />
<br />
4: if p 2.2<br />
<br />
nlen /21<br />
<br />
Start<br />
16<br />
<br />
2
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn