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.
HNUE JOURNAL OF SCIENCE Natural Sciences 2018, Volume 63, Issue 3, pp 99-107 This paper is available online at http://stdb.hnue.edu.vn DOI: 10.18173/2354-1059.2018-0010 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 Lê Quang Huy2 Khoa Điện - Điện tử, Trường Đại học Sư phạm Kĩ thuật Hưng Yên Cục Chứng thực số 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 thuật tốn sinh khóa RSA chứa backdoor đối xứng tuân thủ điều kiện “lỏng” tham số khóa theo chuẩn FIPS 186-4 [1] Thuật toán đề xuất dựa cải tiến thuật tốn backdoor sinh khóa RSA mục [2] với tham số đầu vào đầu thỏa mãn chuẩn FIPS 186-4 Để khẳng định phân tích, đánh giá, thuật tốn backdoor đề xuất thử nghiệm thiết bị PKI-Token với kết phù hợp Từ khóa: Mật mã, sinh khóa, RSA, backdoor Mở đầu Backdoor hệ mật mã 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 hành động tội phạm [3] Căn vào đặc điểm hệ mật việc nghiên cứu backdoor tập trung vào phần sinh khóa (key generation) hệ mật bất đối xứng vào phần mã mật (encryption) hệ mật đối xứng 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 khóa công khai RSA sử dụng phổ biến 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ố chuẩn ứng dụng thực tế Do để thuật toán backdoor cho hệ mật RSA ứng dụng thực tế cần thỏa mãn chuẩn định Hiện chuẩn FIPS 186-4 chữ kí số viện tiêu chuẩn quốc gia Mỹ (NIST) công bố 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ủ Để ứng dụng đảm bảo an ninh sử dụng mật mã, báo tập trung nghiên cứu backdoor sinh khóa RSA đề xuất thuật tốn sinh khóa RSA chứa backdoor đối xứng tuân thủ điều kiện “lỏng” tham số khóa Appendix B.3.1 FIPS 186-4 [1] Nội dung nghiên cứu 2.1 Cơ sở backdoor sinh khóa RSA 2.1.1 Cơng cụ hình thức phân tích đánh giá backdoor Để tạo sở phân tích đánh giá backdoor, cơng cụ hình thức Arboit (mục 4.2 chương [5]) với định nghĩa hình thức cụ thể, tiêu chuẩn đánh giá hiệu sử dụng báo trình bày tóm tắt mục A phần [2] Để đánh giá backdoor, tiêu chuẩn đánh giá phân tích, lượng hóa, phân ngưỡng, tổng hợp bảng I mục B phần [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 e-mail: lequanghuyabc@gmail.com 99 Bạch Nhật Hồng Lê Quang Huy 2.1.2 Phương pháp phân tích nhân tử Coppersmith Một vấn đề khó lí thuyết số tìm cách hiệu để phân tích nhân tử số ngun Các thuật tốn phân tích nhân tử tốt nay, phương pháp đường cong Ellip sàng trường số, có độ phức tạp lũy thừa Một hướng nghiên cứu hình thành gần nới lỏng tốn phân tích nhân tử để giải thời gian đa thức Một nới lỏng tốn phân tích nhân tử có nhiều ứng dụng phân tích mã phân tích nhân tử biết nửa số bit số nguyên tố p, sử dụng phương pháp tìm nghiệm nguyên nhỏ phương trình đa thức modulo biến Coppersmith [4] * Tìm nghiệm nguyên nhỏ phương trình đa thức modulo biến Đến nay, chưa có thuật tốn tổng qt hiệu để tìm nghiệm ngun phương trình modulo biến Năm 1996, Coppersmith [4] đưa phương pháp hiệu tìm nghiệm nguyên nhỏ phương trình modulo biến sử dụng thuật toán rút gọn sở LLL Phát biểu toán Giả thuyết cho: - N số nguyên lớn nhân tử (thừa số) - Đa thức f ∈ Z[x], có bậc d, f (x) = ad xd + ad-1 xd-1 + … + a1x + a0 - Phương trình modulo: f (x) ≡ (mod N) Cần tìm nghiệm nguyên x0 ∈ Z, phương trình f (x) ≡ (mod N); với | x0 | ≤ X, X ràng buộc xác định, x0 thỏa mãn f (x0) ≡ (mod N) Ý tưởng cách tìm nghiệm Ý tưởng: rút gọn (biến đổi) tốn tìm nghiệm ngun nhỏ phương trình modulo thành tốn tìm nghiệm ngun nhỏ phương trình tập số nguyên Z Điều kiện: Giả sử |f (x)| < N với | x | ≤ X, (X ràng buộc xác định) Khi nghiệm x0 phương trình đa thức f (x) = 0, nghiệm f (x) ≡ (mod N) Ràng buộc X lớn chứa nhiều nghiệm Nghiệm x0 f (x) = Z tìm thấy cách sử dụng thuật tố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 tổ hợp tuyến tính đa thức tập hợp cho vector (hệ số) đa thức 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 hệ số đa thức tìm thấy hiệu cách áp dụng thuật tốn rút gọn LLL * Phân tích nhân tử số modulo N biết nửa số bit p Phương pháp tìm nghiệm nguyên nhỏ phương trình đa thức modulo 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 thời gian đa thức, biết nửa bit số nguyên tố p Cụ thể, Coppersmith [4] chứng minh kết sau: Định lí 2.1 Phân tích nhân tử biết bit cao kp Cho N = p.q, giả sử p > q, gọi k số nguyên bội số q Giả sử ta biết xấp xỉ p’ kp cho: kp p ' N Thì phân tích nhân tử N thời gian đa thức theo log N Định lí 2.2 Phân tích nhân tử biết bit cao p Cho N = p.q, p, q số nguyên tố Nếu biết nửa bit cao (1/4 log2 N) p, ta phân tích nhân tử N thời gian đa thức theo kích thước bit p Định lí 2.3 Phân tích nhân tử biết bit thấp p 100 Về backdoor đối xứng sinh khóa RSA tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4 Cho N = p.q p, q có kích thước bit p > q Giả sử biết p0 M thỏa mãn p0 = p mod M M ≥ N1/4 phân tích nhân tử N 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 sở cho việc phân tích đánh giá thuật tốn backdoor đề xuất, điều kiện tham số thuật toán trung thực tuân thủ chuẩn FIPS 186-4 trình bày chi tiết * Điều kiện “lỏng” tham số khóa RSA theo FIPS 186-4 Điều kiện “lỏng” tham số khóa hệ mật RSA điều kiện tham số khóa mô tả mục A2 mục B phần B.3.1 appendix B, FIPS 186-4 [1] “Lỏng” hiểu u cầu “khơng cao” tính ngun tố tham số p q (các số ngun 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 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: p q số nguyên tố (probable prime) ngẫu nhiên (nlen ≥ 2048) 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) 2nlen /21 p, q 2nlen/21 (1) c) p q 2nlen /2100 (2) 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-1 mod (LCM (p - 1, q - 1)) * Thuật tốn sinh khóa RSA tn thủ điều kiện “lỏng” (thuật tốn G0) Thuật tốn sinh khóa RSA trung thực tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4 tóm tắt theo thuật tốn mục B.3.3 appendix B FIPS 186-4, mô tả sau: Input (nlen, e) Output (p, q, n, e, d) 1: if (e < 216 or e > 2256) then return failure ; // generate p 2: p = RandomOddInteger() ; //log2 p =nlen/2 7: if q 2.2nlen /21 then goto step ; nlen/2 – 100 8: if ( |p – q| ≤ ) then go to step ; 9: if (gcd(q - 1, e) ≠ 1) then goto step ; 10: if (not PrimalityTest (q)) then goto step ; // compute n, d 11: n = p.q ; 12: d = e–1 mod (LCM(p - 1, q - 1)) ; 3: if p 2.2nlen /21 then goto step ; 4: if (gcd(p - 1, e) ≠ 1) then goto step ; 5: if (not PrimalityTest (p)) then goto step 2; // generate q 6: q = RandomOddInteger() ; //log2 q =nlen/2 nlen/ 13: if ( d < ) then go to step ; 14: return (p, q, n, d) ; 2.3.5 Lực lượng khóa thuật tốn sinh khóa RSA tn thủ điều kiện “lỏng” Xét cách tạo p: Vì p số nguyên tố nằm khoảng 2.2nlen /21 , 2nlen /2 101 Bạch Nhật Hồng Lê Quang Huy Nên 2 nlen /2 #{ p 2.2nlen /21 } = Pr[số nlen/2 bit nlen /2 số nguyên tố] nlen /2 2 0, 6.2nlen /21 1, 2nlen /2log2 nlen nlen / nlen nlen Xét cách tạo q: Kí hiệu u số nguyên tố khoảng (p - 2nlen/2 -100, p + 2nlen/2 -100) Vậy #{u}= Pr[số nlen/2 bit số nguyên tố] * (p + 2nlen/2 (3) (4) -100 – (p - nlen/2 -100 ) = nlen /2 97 2 2nlen /299 nlen / nlen (5) Vì q tạo giống p sau p thỏa mãn điều kiện (2), nằm khoảng ( (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 (1)) với giá trị : 2nlen /21 2nlen /22 Nên #{q} = #{p} - #{u} = 2nlen /2 2nlen /297 2nlen /21 2nlen /21log2 nlen nlen nlen nlen (6) Vậy lực lượng khóa thuật tốn là, #{(p, q, d)} = {#{p} #{q)} 2nlen /2 2nlen /21 2nlen 1 = nlen nlen nlen 2.2 Đề xuất thuật toán sinh khóa RSA chứa backdoor (7) 2.2.1 Giới thiệu thuật tốn Thuật tốn sinh khóa RSA chứa backdoor đề xuất xây dựng dựa việc cải tiến thuật toán backdoor mục 3.4 [2] Điểm cải tiến thuật toán đề xuất tham số đầu vào đầu (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 áp dụng cho phần sinh khóa, phần khơi phục khóa khơng thay đổi Ý tưởng thuật tốn: tạo số ngun tố p ngẫu nhiên, trích thơng tin backdoor từ p nhúng vào giá trị n’ gần với số modulus n Từ giá trị n’ tìm q, n d Thông tin backdoor I(kpriv) = ((p⌉k/2)⌋s - k/2), trích với độ dài nhỏ nửa bit số nguyên tố p (bước 10) Kỹ thuật nhúng: thông tin backdoor sau mã mật 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 giá trị có độ dài k = nlen/2 bit, giá trị ghép ghép tiếp vào bên trái (phía 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 sử dụng để tìm 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: 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 thực phương pháp phân tích nhân tử Coppersmith (mục 2.2), ví dụ: p = G(n, 2k/2, p div 2k/2) 102 Về backdoor đối xứng sinh khóa RSA tuân thủ điều kiện “lỏng” theo chuẩn FIPS 186-4 Thuật toán đề xuất [sinh khóa RSA] 1: Input (e, s, nlen) ; 2: if (e < 216 or e > 2256) then return failure ; // tạo số nguyên tố p 3: p = RandomOddInteger() ; //log2 p =nlen/2 4: if p 2.2 nlen /21 Start 16