Luận án Nghiên cứu, phát triển một số thuật toán sinh khóa rsa chứa Backdoor

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT .iv

DANH MỤC CÁC BẢNG.vi

DANH MỤC CÁC HÌNH VẼ .vii

DANH MỤC CÁC THUẬT TOÁN .viii

MỞ ĐẦU. 1

1. Tính cấp thiết . 1

2. Mục đích, nhiệm vụ nghiên cứu . 3

3. Đối tượng, phạm vi nghiên cứu . 4

4. Cơ sở lý luận, thực tiễn và phương pháp nghiên cứu . 4

5. Bố cục của Luận án. 5

CHƯƠNG 1. CƠ SỞ VỀ BACKDOOR TRONG SINH KHÓA . 7

1.1. Giới thiệu về backdoor mật mã. 7

1.2. Cơ sở về backdoor trong sinh cặp khóa. 12

1.3. Phương pháp phân tích nhân tử của Coppersmith. 25

1.4. Một số kết quả về hệ mật RSA . 31

1.5. Một số kết quả nghiên cứu backdoor trong sinh khóa RSA. 35

1.6. Những vấn đề luâṇ án cần tâp trung nghiên c ̣ ứ u giải quyết . 41

1.7. Kết luận chương 1. 42

CHƯƠNG 2. ĐỀ XUẤT THUẬT TOÁN BACKDOOR BD1, BD2 . 43

2.1. Cơ sở cài và đánh giá backdoor. 43

2.2. Đề xuất thuật toán backdoor BD1 . 49

2.3. Đề xuất thuật toán backdoor BD2 . 60

2.4. Thử nghiệm các thuật toán backdoor BD1, BD2 . 71

2.5. Ứng dụng backdoor BD1, BD2 . 78

2.6. Kết luận chương 2. 80iii

CHƯƠNG 3. ĐỀ XUẤT THUẬT TOÁN BACKDOOR BD3 . 81

3.1. Thuật toán sinh khóa trung thực tuân thủ điều kiện “P2” . 81

3.2. Đề xuất thuật toán backdoor BD3 . 86

3.3. Thử nghiệm thuật toán backdoor BD3 . 98

3.4. Ứng dụng backdoor BD3. 102

3.5. Đánh giá các thuật toán backdoor đề xuất. 102

3.6. Kết luận chương 3. 105

KẾT LUẬN. 106

A. Kết quả đạt được của Luận án . 106

B. Những đóng góp mới của Luận án. 106

C. Hướng nghiên cứu tiếp theo. 107

CÁC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ . 108

TÀI LIỆU THAM KHẢO. 109

pdf126 trang | Chia sẻ: trungkhoi17 | Lượt xem: 345 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận án Nghiên cứu, phát triển một số thuật toán sinh khóa rsa chứa Backdoor, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
t toán backdoor đã được phân tích tại chương 1, thông qua việc trình bày 02 thuật toán sinh khóa RSA chứa backdoor BD1, BD2 đạt được một số tính năng sau: - Các tham số tuân thủ điều kiện “P1” theo chuẩn FIPS 186-4. - Kỹ thuật nhúng thông tin backdoor vào toàn bộ số modulus n, nâng cao đặc trưng phân phối và tính an toàn của backdoor (BD1). - Sử dụng thông tin backdoor ít hơn một nửa các bit của số nguyên tố p, làm tăng lực lượng khóa của backdoor (BD2). Các thuật toán backdoor BD1, BD2 được phân tích, đánh giá chi tiết, cụ thể theo mô hình hình thức của Arboit, được thử nghiệm trên thiết bị tự chế tạo T-Token. Kết quả nghiên cứu về các thuật toán backdoor BD1, BD2 được công bố tại các bài báo [1], [3], [4] trong mục “Các công trình khoa học đã công bố”. 2.1. Cơ sở cài và đánh giá backdoor 2.1.1. Phương pháp cài backdoor trong sinh khóa RSA Mục tiêu cài backdoor trong sinh khóa cho phép người thiết kế từ khóa công khai, (được tạo bởi thuật toán sinh khóa chứa backdoor) khôi phục được khóa riêng tương ứng. Yêu cầu: backdoor được phân tích, thiết kế theo mô hình hình thức của Arboit, có các tiêu chí được đánh giá theo mô hình Arboit (bảng 1.1. mục 1.2.4.4) đạt mức “trung bình” trở lên. Biện pháp thực hiện cài backdoor (phần thuật toán sinh khóa): trích một lượng thông tin backdoor và nhúng vào khóa công khai theo các bước sau: - Lựa chọn thông tin backdoor: thông tin backdoor thường là một phần 44 của khóa riêng được lựa chọn với kích thước càng nhỏ càng tốt. Với hệ mật RSA, trong phạm vi các thuật toán backdoor đề xuất, thông tin backdoor là hoặc có liên quan đến số nguyên tố p. Kích thước thông tin backdoor thường là một phần của tham số p (một nửa số các bit của số nguyên tố p). - Che giấu thông tin backdoor: người thiết kế sử dụng hệ mật đối xứng hoặc bất đối xứng để mã mật thông tin backdoor. - Nhúng thông tin backdoor đã mã mật vào khóa công khai: việc nhúng vào khóa công khai sao cho không ảnh hưởng đến tính chất thống kê của tham số đó. Với hệ mật RSA, trong phạm vi các thuật toán backdoor đề xuất, vị trí nhúng thông tin backdoor thường vào số mũ công khai e hoặc số modulus n hoặc số nguyên tố p. Biện pháp khôi phục khóa riêng (phần khôi phục khóa): sử dụng thông tin backdoor trong khóa công khai để khôi phục khóa riêng theo các bước: - Trích (tách) thông tin backdoor đã mã mật: từ khóa công khai của người dùng sử dụng thông tin về kỹ thuật nhúng thông tin backdoor. Với hệ mật RSA, thông tin backdoor đã mã thường nằm trong số mũ công khai e hoặc số modulus n hoặc số nguyên tố p, tách phần thông tin có chứa backdoor (có độ dài khoảng ¼ số các bit của số modulus n). - Giải mã mật thông tin backdoor: từ thông tin backdoor đã mã được tách, sử dụng khóa (riêng) của người thiết kế để giải mã mật thông tin backdoor. - Khôi phục tham số mật đã được nhúng: sử dụng thông tin backdoor đã được giải mã mật và áp dụng kỹ thuật khôi phục tham số mật để khôi phục. Với hệ mật RSA và trong phạm vi các thuật toán backdoor đề xuất, từ một phần thông tin backdoor (một nửa các bit của nguyên tố p), sử dụng phương pháp phân tích nhân tử của Coppersmith để khôi phục lại toàn bộ thông tin backdoor (số nguyên tố p). 45 - Tính toán toàn bộ các tham số khóa riêng: từ tham số mật đã khôi phục tính các tham số khác của khóa riêng. Với hệ mật RSA từ tham số p khôi phục lại (q, d). 2.1.2. Thuật toán sinh khóa trung thực tuân thủ điều kiện Thuật toán sinh khóa RSA trung thực thường gồm 3 phần: phần tạo số nguyên tố p, tạo số nguyên tố q, tính n và d. Trong mỗi phần của thuật toán, tuy Start e, nlen, các tham số khác 2 16 < e < 2 256 nlen 1024 Trả về mã lỗi Stop No Tạo số nguyên tố p Tạo số nguyên tố q GCD (q - 1, e) = 1 (1,41 . 2 nlen/2-1 q < 2nlen/2) |p – q| > 2nlen/2 – 100 Yes Yes No Tính n, d 2 nlen/ 2 < d< LCM (p-1, q-1) Yes No p, q, n, d Hình 2.1. Sơ đồ khối thuật toán sinh khóa RSA trung thực tuân thủ điều kiện GCD (p - 1, e) = 1 (1,41.2 nlen/2-1 p < 2nlen/2) Yes No Tham số đầu vào Tính n, d Tạo số nguyên tố p Tạo số nguyên tố q 46 thuộc vào yêu cầu của từng tham số mà thuật toán sinh khóa tuân thủ một chuẩn xác định sẽ có những biến thể khác nhau với các bước thực hiện khác nhau. Với các yêu cầu tham số khóa tuân thủ một chuẩn FIPS 186-4, bản thân thuật toán sinh khóa tuân thủ chuẩn FIPS 186-4 cũng phải có thêm các bước thực hiện để thỏa mãn điều kiện (chuẩn). Nhìn chung thuật toán sinh khóa RSA tuân thủ điều kiện xác định được mô tả theo sơ đồ khối ở hình 2.1. Với thuật toán sinh khóa chứa backdoor, để đạt mục tiêu sao cho người thiết kế khôi phục được khóa riêng từ khóa công khai tương ứng, thì thuật toán sinh khóa chứa backdoor cần phải có thêm các bước bổ sung so với thuật toán sinh khóa trung thực. Vì vậy thuật toán sinh khóa chứa backdoor tuân thủ chuẩn FIPS 186-4 cũng có thêm các bước so với thuật toán sinh khóa tuân thủ chuẩn FIPS 186-4. Nhằm đáp ứng mục đích sử dụng của các cặp khóa trong những ngữ cảnh khác nhau, chuẩn FIPS 186-4 (mục 1.4.3.) chia điều kiện về các tham số khóa thành các nhóm cụ thể như: điều kiện “P1” và “P2” (chủ yếu dựa trên điều kiện về tính nguyên tố của các tham số p và q). Để thuận tiện cho quá trình phân tích và đánh giá các backdoor đề xuất, các thuật toán sinh khóa trung thực tuân thủ điều kiện “P1” và điều kiện “P2” được phân tích cụ thể với các đánh giá về lực lượng khóa (mục 2.13 và 3.1). 2.1.3. Thuật toán sinh khóa trung thực tuân thủ điều kiện “P1” theo chuẩn FIPS 186-4 2.1.3.1. Giới thiệu thuật toán Thuật toán sinh khóa trung thực tuân thủ điều kiện “P1” là thuật toán sinh khóa RSA trung thực (thuật toán G0) tuân thủ điều kiện “P1” tại mục 1.4.3 và được mô tả tại mục B.3.3. appendix B FIPS 186-4 [27]. Thuật toán sinh khóa RSA tuân thủ điều kiện “P1” dựa trên thuật toán sinh khóa RSA tổng quát. Điểm khác biệt là, trong thuật toán sinh khóa trung 47 thực tuân thủ điều kiện “P1”, các số nguyên tố p, q được tạo dựa trên việc sinh số ngẫu nhiên và kiểm tra tính nguyên tố theo thuật toán của Miller-Rabin [43], [47]. Sau khi được tạo, các tham số đều được kiểm tra thỏa mãn điều kiện “P1” theo FIPS 186-4. Nội dung thuật toán sinh khóa trung thực tuân thủ điều kiện “P1” được mô tả dưới dạng sơ đồ khối ở hình 2.2 và mã giả thuật toán ở mục thuật toán 2.1. Sơ đồ khối thuật toán sinh khóa trung thực tuân thủ điều kiện “P1”: Start e, nlen, các tham số khác 2 16 < e < 2 256 nlen 2048 Trả về mã lỗi Stop No Tạo số nguyên tố p Tạo số nguyên tố q GCD (q - 1, e) = 1 q là số có thể nguyên tố (1,41 . 2 nlen/2-1 q < 2 nlen/2 ) |p – q| > 2 nlen/2 – 100 Yes Yes No Tính n, d 2 nlen/ 2 < d< LCM (p-1, q-1) Yes No p, q, n, d Hình 2.2. Sơ đồ khối thuật toán sinh khóa RSA trung thực tuân thủ điều kiện P1 GCD (p - 1, e) = 1 p là số có thể nguyên tố (1,41.2 nlen/2-1 p < 2 nlen/2 ) Yes No Tham số đầu vào Tính n, d Tạo số nguyên tố p Tạo số nguyên tố q 48 Mã giả thuật toán sinh khóa trung thực tuân thủ điều kiện “P1”: Input (nlen, e) Output (p, q, n, d) 1: Input (nlen, e) ; 2: if (e 2256 or nlen <2048) then return failure ; // generate p 3: p = RandomOddInteger() ; //log2 p =nlen/2 4: if (𝑝 < √2. 2𝑛𝑙𝑒𝑛/2−1) then goto step 3 ; 5: if (gcd(p - 1, e) ≠ 1) then goto step 3 ; 6: if (not (PrimalityTest (p))) then goto step 3 ; // generate q 7: q = RandomOddInteger() ; //log2 q =nlen/2 8: if (𝑞 < √2. 2𝑛𝑙𝑒𝑛/2−1) then goto step 7 ; 9: if ( |p – q| ≤ 2 nlen/2 – 100 ) then go to step 7 ; 10: if (gcd(q - 1, e) ≠ 1) then goto step 7 ; 11: if (not (PrimalityTest (q))) then goto step 7 ; // compute n, d 12: n = p.q ; 13: d = e–1 mod (LCM(p - 1, q - 1)) ; 14: if ( d < 2 nlen/ 2 ) then go to step 7 ; 15: return (p, q, n, d) ; Thuật toán 2.1 Thuật toán sinh khóa RSA trung thực tuân thủ điều kiện “P1” 2.1.3.2. Lực lượng khóa của thuật toán Số lượng phần tử e, #{ e }= (2256 - 216)/2 = (2255 - 215) > 2254 (e là số lẻ). 49 Xét cách tạo p: Vì p là một số nguyên tố trong khoảng (√2. 2𝑛𝑙𝑒𝑛/2−1, 2𝑛𝑙𝑒𝑛/2 − 1 ). Nên #{ p } = Pr[số nlen/2 bit là số nguyên tố]. (2𝑛𝑙𝑒𝑛/2 − √2. 2𝑛𝑙𝑒𝑛/2−1) ≈ 1 𝑛𝑙𝑒𝑛 2 𝑙𝑛2 . 0,6. 2 𝑛𝑙𝑒𝑛 2 −1 = 2. 2 𝑛𝑙𝑒𝑛 2 𝑛𝑙𝑒𝑛 = 21+𝑛𝑙𝑒𝑛/2−𝑙𝑜𝑔2𝑛𝑙𝑒𝑛 (2.1) 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) . Vậy #{u}= Pr[số nlen/2 bit là số nguyên tố]. (p + 2nlen/2 -100 – (p - 2nlen/2 -100) = 2 𝑛𝑙𝑒𝑛/2 . 2𝑛𝑙𝑒𝑛/2−99 = 2𝑛𝑙𝑒𝑛/2−97 𝑛𝑙𝑒𝑛 Vì q được tạo giống như p và sau p thỏa mãn điều kiện (1.9), 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.8)) với giá trị là : (2 − √2). 2𝑛𝑙𝑒𝑛/2 −1 > 2𝑛𝑙𝑒𝑛/2 −2, nên #{q} = #{p} - #{u} = 2 1+ 𝑛𝑙𝑒𝑛 2 𝑛𝑙𝑒𝑛 − 2 𝑛𝑙𝑒𝑛 2 −97 𝑛𝑙𝑒𝑛 > 2 𝑛𝑙𝑒𝑛 2 𝑛𝑙𝑒𝑛 = 2𝑛𝑙𝑒𝑛/2−𝑙𝑜𝑔2𝑛𝑙𝑒𝑛 (2.2) Vậy lực lượng khóa của thuật toán là, #{(p, q, d)} = #{p}. #{q}.#{e} = 2254. 21+𝑛𝑙𝑒𝑛/2 𝑛𝑙𝑒𝑛 . 2𝑛𝑙𝑒𝑛/2 𝑛𝑙𝑒𝑛 = 2254. 2𝑛𝑙𝑒𝑛+1 𝑛𝑙𝑒𝑛2 (2.3) 2.2. Đề xuất thuật toán backdoor BD1 2.2.1. Bổ đề (lemma) 2.1 Ký hiệu p là một số nguyên tố, r là một số nguyên lẻ sao cho log2 p = 2.log2 r = k. Gọi u = 2k mod p; v0 = v mod p ; s0 = (v0 + u2).u-1 mod p; s = 2k – s0 ;n = s.2k + v (nối s với v, ký hiệu s : v). Thì ta có p | n. 50 Chứng minh: u = 2k mod p ⇒ 2k = m.p + u với m ∈ Z v0 = v mod p ⇒ v = l.p + v0 với l ∈ Z Từ n = s.2k + v = 2k. (2k – s0) + l.p + v0 = (m.p + u).( m.p + u – s0) + l.p + v0 = m2p2 + (2mu – ms0).p +u2 – us0 + l.p + v0 = m2p2 + (2mu – ms0 + l).p + u2 + v0 – u (v0 + u2).u-1 mod p = (m2p + 2mu – ms0 + l).p mod p Vậy p | n 2.2.2. Giới thiệu thuật toán backdoor BD1 2.2.2.1. Tổng quan thuật toán Thuật toán backdoor BD1, là thuật toán sinh khóa RSA chứa backdoor bất đối xứng dựa trên ý tưởng của thuật toán PAP [59] với các tham số vào/ra thỏa mãn các điều kiện “P1” theo chuẩn FIPS 186-4. Thuật toán backdoor BD1 được công bố tại bài báo [3] trong mục “Các công trình khoa học đã công bố”. Mục tiêu: xây dựng thuật toán sinh khóa chứa backdoor tạo ra các cặp khóa với các tham số đủ an toàn để sử dụng trong các trường hợp chung (trường hợp tạo khóa với số lượng lớn). Ý tưởng thiết kế: - Sử dụng ý tưởng của thuật toán PAP: Thông tin backdoor được mã mật và nhúng vào các bit của số modulus n (PAP nhúng vào một nửa các bit cao). - Lượng thông tin backdoor chỉ một nửa các bit của số nguyên tố p (cải tiến hơn: PAP sử dụng toàn bộ số nguyên tố p). - Kỹ thuật tạo và nhúng thông tin backdoor vào trong toàn bộ số modulus n dựa trên cơ sở của Bổ đề 2.1. 51 - Các tham số đầu ra tuân thủ điều kiện “P1” của chuẩn FIPS 186-4. Điểm độc đáo của thuật toán BD1 là kỹ thuật tạo và nhúng thông tin backdoor vào toàn bộ số modulus n. Việc trải thông tin backdoor vào toàn bộ các bit của n làm cho đặc trưng thống kê của tham số n tốt hơn, tốt nhất trong các trường hợp nhúng thông tin backdoor, (phân phối của n gần với phân phối đều nhất) và kẻ tấn công khó tìm (trích) được thông tin backdoor hơn so với trường hợp nhúng thông tin backdoor vào một phần của n (các bit cao hoặc các bit thấp của n), điều này cũng nâng cao tính an toàn cho backdoor. Thuật toán BD1 có các bước thực hiện như sau: Phần sinh khóa: - Thông tin backdoor: một nửa các bit cao của số nguyên tố p. - Che giấu thông tin backdoor: thông tin backdoor được mã mật hóa bởi lược đồ mã mật bất đối xứng ECIES hệ mật EC của người thiết kế. - Nhúng thông tin backdoor vào khóa: thông tin backdoor đã mã mật được trải đều (nhúng) trong toàn bộ các bit của số modulus n. Phần khôi phục khóa: - Trích (tách) thông tin backdoor: tách thông tin backdoor đã mã mật từ một nửa các bit thấp của số modulus n. - Giải mã mật thông tin backdoor: Sử dụng khóa riêng của người thiết kế để giải mã mật thông tin backdoor. - Khôi phục tham số mật: Sử dụng phương pháp phân tích nhân tử của Coppersmith với thông tin backdoor để tìm lại số nguyên tố p. - Tính toán toàn bộ các tham số khóa riêng: từ tham số p tính các tham số q, d của khóa riêng. Các tham số thuật toán: 52 + I(𝑘𝑝𝑟𝑖𝑣𝐺1 ) = (p⌉k/2); G1 = G0 = nlen ≥ 2048; E = ECIES;  E ≥ 128 ; M = n; log2 p = log2 q = k = nlen/2. + Các hàm của lược đồ mã mật ECIES: hàm mã mật hóa EncECIES() và hàm giải mã mật DecECIES(). 2.2.2.2. Phần thuật toán sinh khóa Phần thuật toán sinh khóa được mô tả dưới dạng sơ đồ khối ở hình 2.3 và mã giả thuật toán ở mục thuật toán 2.2. Sơ đồ khối phần thuật toán sinh khóa backdoor BD1: Start e, nlen, B1 2 16 < e < 2 256 nlen 2048 Trả về mã lỗi Stop No Tạo số nguyên tố p Chuẩn bị thông tin backdoor GCD (q - 1, e) = 1 q là số có thể nguyên tố (1,41 . 2 nlen/2-1 q < 2nlen/2) |p – q| > 2 nlen/2 – 100 Yes Yes No Tính n, d 2 nlen/ 2 < d< LCM (p-1, q-1) Yes No p, q, n, d Hình 2.3. Sơ đồ khối phần thuật toán sinh khóa của backdoor BD1 GCD (p - 1, e) = 1 p là số có thể nguyên tố (1,41.2 nlen/2-1 p < 2 nlen/2 ) Yes No Tạo số nguyên tố q có chèn thông tin backdoor Tính giá trị q Chèn thông tin backdoor vào modulus n 53 Mã giả phần thuật toán sinh khóa backdoor BD1: Input (e, nlen, B1) Output (p, q, n, d) 1: Input (e, nlen, B1) ; 2: if (e 2256 or nlen <2048) then return failure ; // generate p 3: p = RandomPrime() ; //log2 p = k 4: if (𝑝 < √2. 2𝑛𝑙𝑒𝑛/2−1) then goto step 3 ; 5: if (gcd(p - 1, e) ≠ 1) then goto step 3 ; 6: if (not (PrimalityTest (p))) then goto step 3 ; // generate q 7: u = 2k mod p ; //log2 q =nlen/2 8: v1 = EncECIES (p⌉k/2, Kpub) ; //Kpub backdoor owner’s key 9: for i = 0 to B1 10: r = RandomOddInteger() ; //log2 r = k/2 11: v = v1.2k/2 + r ; //v = v1 : r 12: v0 = v mod p ; 13: s0 = (v0 + u2).u-1 mod p ; 14: if (s0 ≤ 2k-1) then 15: s = 2k – s0 ; 16: n = s.2k + v ; // n = s : v 17: q = n / p ; //lemma 2.1 18: if (𝑞 < √2. 2𝑛𝑙𝑒𝑛/2−1) then next i ; 19: if ( |p – q| ≤ 2 nlen/2 – 100 ) then next i ; 20: if (gcd(q - 1, e) ≠ 1) then next i ; 54 21: if (PrimalityTest (q))) then break ; 22: endfor ; 23: if not (PrimalityTest (q))) then goto step 3 ; 24: d = e–1 mod (LCM(p - 1, q - 1)) ; 25: if ( d < 2 nlen/ 2 ) then goto step 3 ; 26: return (p, q, n, d) ; Thuật toán 2.2. Phần thuật toán sinh khóa của backdoor BD1 2.2.2.3. Phần thuật toán khôi phục khóa Phần thuật toán khôi phục khóa được mô tả dưới dạng sơ đồ khối ở hình 2.4 và mã giả thuật toán ở mục thuật toán 2.3. Sơ đồ khối phần thuật toán khôi phục khóa backdoor BD1: Mã giả phần thuật toán khôi phục khóa backdoor BD1: Input (n, e) Output (p, q, d) 1: Input (n, e) ; Start e, n, m Stop Phân tích nhân tử Coppersmith Tính q, d p, q, d Hình 2.4. Sơ đồ khối phần thuật toán khôi phục khóa của backdoor BD1 Tính thông tin backdoor từ khóa công khai, p1 55 2: v = n mod 2k ; 3: v1 = v div 2k/2 ; 4: p1 = DecECIES(v1, Kpriv) ; // Kpriv backdoor owner’s key 5: p = CopperSmith(n, 2k/2, p1) ; //Coppersmith method 6: q = n / p ; 7: d ≡ e−1 mod φ(n) ; 8: return (p, q, d) ; Thuật toán 2.3. Phần thuật toán khôi phục khóa của backdoor BD1 2.2.3. Đánh giá thuật toán backdoor BD1 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, và có khóa công khai của người thiết kế. Người thiết kế sử dụng lược độ mã mật ECIES của hệ mật EC có độ dài tham số an toàn  E ≥ 128 tương đương với độ dài tham số an toàn của hệ mật RSA của người dùng G1 ≥ 2048 (mục 1.4.2). Vì kẻ tấn công không có khóa riêng 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, giả sử hệ mật của người thiết kế an toàn, 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 mục 1.2.4.4, 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: Một nửa các bit của p (thông tin backdoor) được mã mật (bước 7) và nhúng vào giá trị n (từ bước 11 đến bước 16), từ giá trị n tính q = n / p (bước 16), quá trình này dược lặp tối đa B1 lần. Nếu không tìm được q thỏa mãn điều kiện (từ bước 18 đến bước 21) thì quay lại, tạo lại p. Quá trình này được lặp đến khi nào tìm thấy q thỏa mãn điều kiện. Vì lực lượng 56 của q khá lớn #{q}= 2 𝑛𝑙𝑒𝑛 2 −𝑙𝑜𝑔2𝑛𝑙𝑒𝑛 (công thức 2.2) nên thuật toán luôn tìm được q với số lần lặp tạo p nhỏ. (Thuật toán sinh khóa luôn tạo được các khóa thỏa mãn điều kiện (chuẩn FIPS 186-4) có chứa backdoor). Xét thuật toán khôi phục khóa: Tuần tự thực hiện ngược với thuật toán sinh khóa: tách v là một nửa các bit thấp của n (bước 2), v1 là một nửa các bit cao của v (bước 3). Sử dụng khóa riêng của người thiết kế, giải mã mật v1 ta thu được một nửa các bit của p (bước 4). Sử dụng phương pháp phân tích nhân tử của Coppersmith (mục 1.3) và thông tin về một nửa các bit của p, sẽ tính được toàn bộ giá trị p. Từ p, dễ dàng tính được q và d. (Thuật toán khôi phục khóa luôn cho phép người thiết kế khôi phục được khóa riêng từ khóa công khai tương ứng) Theo các bước thực hiện 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, kẻ tấn công không có khóa riêng của người thiết kế và không phá vỡ được độ an toàn của hệ mật người thiết kế (tính bảo mật). Căn cứ vào mục 1.2.4.4, 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 2.2. nên theo (công thức 2.1), ta có #{p} = 2𝑛𝑙𝑒𝑛/2+1 𝑛𝑙𝑒𝑛 = 21+𝑛𝑙𝑒𝑛/2−𝑙𝑜𝑔2𝑛𝑙𝑒𝑛. Xét việc tạo q (từ bước 7 đến bước 22): Với mỗi p có thể chọn ngẫu nhiên 2k/2-1 giá trị r , do đó tạo được 2k/2 - 1 giá trị n và tạo được 2k/2 - 1 giá trị q. Vì q được tính theo n và p (bước 17), nên #{ q }= #{ n / p } . Pr[𝑞 𝑙à 𝑠ố 𝑛𝑔𝑢𝑦ê𝑛 𝑡ố] #{ q } = 2 𝑛𝑙𝑒𝑛 4 . 2−𝑙𝑜𝑔2( 𝑛𝑙𝑒𝑛 2 )−𝑙𝑜𝑔2(𝑙𝑛2) ≈ 2 𝑛𝑙𝑒𝑛 4 −𝑙𝑜𝑔2( 𝑛𝑙𝑒𝑛 2 ) 57 = 2𝑛𝑙𝑒𝑛/4 +1−𝑙𝑜𝑔2𝑛𝑙𝑒𝑛 Vậy số lượng n là: #{n} = #{p} . #{q} = 21+𝑛𝑙𝑒𝑛/2−𝑙𝑜𝑔2𝑛𝑙𝑒𝑛. 2𝑛𝑙𝑒𝑛/4−𝑙𝑜𝑔2(𝑛𝑙𝑒𝑛/2) = 23𝑛𝑙𝑒𝑛/4 +2− 2 𝑙𝑜𝑔2 𝑛𝑙𝑒𝑛 Cách tạo d, cũng giống như trong thuật toán 2.2 và #{d} = #{e}. 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}, #{e} có thể bỏ qua, ta có: 𝑅𝐺1 = 𝑁𝐺1,𝑞 𝑁𝐺0,𝑞 ≈ 23𝑛𝑙𝑒𝑛/4+2− 𝑙𝑜𝑔2𝑛𝑙𝑒𝑛 2𝑛𝑙𝑒𝑛−𝑙𝑜𝑔2 𝑛𝑙𝑒𝑛 = 22−𝑛𝑙𝑒𝑛/4 = 2− 1 2. 𝑛𝑙𝑒𝑛 2 +2 Vì hằng số c = -1/2 trong 𝑅𝐺1 và căn cứ vào mục 1.2.4.4, 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 lược đồ mã mật ECIES (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 n cho p với giá trị n phụ thuộc một phần vào p và tham số ngẫu nhiên r. Do vậy phân phối của n gần với phân phối đều và khoảng cách thống kê giữa thành phần n của G1 và thành phần n G0 là xấp xỉ bằng 0, DG1 ≈ 0. Căn cứ vào mục 1.2.4.4, 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 22), q phụ thuộc vào một phần của p và tham số ngẫu nhiên r. Nếu người dùng cố định p và yêu cầu sinh lại q thì việc sinh lại khóa tổng quát thực hiện được. Tuy nhiên, nếu người dùng yêu 58 cầu ngược lại, tức là cố định q và sinh lại p thì 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 mục 1.2.4.4, 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 22) có thêm việc mã mật hóa thông tin backdoor bằng lược đồ mã mật ECIES và vòng lặp (for) với số lần cố định (B1). Do đó độ phức tạp của việc tạo q trong G1 là: tq (G1) = tq (G0) + T(ECIES). Vậy độ phức tạp tạo n là: tn(G1) = tp + tq + T(ECIES) . Vì độ phức tạp của lược đồ mã mật ECIES không đáng kể so độ phức tạp của việc tạo p hoặc q. Căn cứ vào mục 1.2.4.4, độ phức tạp của G1 được đánh giá đạt 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 căn cứ vào mục 1.2.4.4 tiêu chí bộ nhớ sử dụng của thuật toán được đánh giá đạt mức “tốt”. 2.2.4. So sánh thuật toán BD1 với thuật toán PAP và PHP 2.2.4.1. Các điểm giống nhau Một số điểm giống nhau giữa thuật toán BD1 với thuật toán PAP và PHP: - Vị trí giấu thông tin backdoor: trong số modulus n. - Không sử dụng bộ nhớ tĩnh (NM). 2.2.4.2. Các điểm khác biệt Những điểm khác biệt giữa thuật toán BD1 với thuật toán PAP và PHP được tóm tắt trong bảng 2.1. 59 Bảng 2.1 Các điểm khác biệt giữa thuật toán BD1 với thuật toán PAP và PHP TT Nội dung Thuật toán PAP Thuật toán PHP Thuật toán BD1 1 Hệ mật của người thiết kế RSA RSA ECIES 128 2 Thông tin backdoor, I(𝑘𝑝𝑟𝑖𝑣𝐺1 ) Toàn bộ số nguyên tố p Toàn bộ số nguyên tố p p⌉k/2, một nửa các bit cao của số nguyên tố p 3 Vị trí giấu thông tin backdoor Trong các bit cao của số modulus n Trong toàn bộ các bit của số modulus n Trong toàn bộ các bit của số modulus n 4 Tuân thủ chuẩn FIPS 186-4 Không Không Thỏa mãn điều kiện “P1” 5 Tính bảo mật Trung bình Trung bình Tốt 6 Lực lượng khóa 𝑅𝐺1 Trung bình = 2− 1 2 𝑛𝑙𝑒𝑛 2 +𝑙𝑜𝑔2 𝑛𝑙𝑒𝑛 2 Trung bình = 2− 1 2 𝑛𝑙𝑒𝑛 2 +𝑙𝑜𝑔2 𝑛𝑙𝑒𝑛 2 −3 Tốt = 2− 1 2 𝑛𝑙𝑒𝑛 2 +2 7 Độ phức tạp tính toán T(G1) Trung bình T(G1) = tp + tq + T(FK) + T(GK) + T(RSA-k) Trung bình T(G1) = tp + tq + T(RSA-k) Tốt T(G1) = tp + tq + T(ECIES) 8 Khôi phục khóa riêng Giải mã mật trực tiếp từ hệ mật RSA Giải mã mật trực tiếp từ hệ mật RSA Phương pháp phân tích nhân tử của Coppersmith 9 Phần thuật toán khôi phục khóa Cần thử hai lần để tìm ra kết quả Chỉ thực hiện một lần Chỉ thực hiện một lần 60 2.2.5. Tóm tắt các điểm nổi bật của thuật toán backdoor BD1 Thuật toán backdoor BD1 gồm hai phần: phần thuật toán sinh khóa và phần thuật toán khôi phục khóa, có các điểm nổi bật như sau: - Các tham số đầu vào, đầu ra thỏa mãn các điều kiện “P1” về tham số khóa RSA theo FIPS 186-4 (mục 1.4.3). - Kỹ thuật nhúng thông tin backdoor vào toàn bộ các bit của số modulus n dựa trên kết quả của bổ đề 2.1. - Sử dụng hệ mật người thiết kế là hệ mật khóa công khai (EC) dẫn tới việc quản lý khóa tốt hơn và chỉ người thiết kế sử dụng được backdoor. - Tốt hơn thuật toán PAP, PHP ở tính bảo mật, lực lượng khóa, thông tin backdoor và độ phức tạp tính toán. - Phần thuật toán khôi phục khóa sử dụng phương pháp phân tích nhân tử của Coppersmith để khôi phục lại khóa riêng từ khóa công khai tương ứng nên ngắn gọn và đơn giản hơn so với phần khôi phục khóa của PAP và PHP. - Được đánh giá tốt trên 06 tiêu chí, 01 tiêu chí (tính tương quan) được đánh giá ở mức trung bình. 2.3. Đề xuất thuật toán backdoor BD2 2.3.1. Các bổ đề 2.3.1.1. Bổ đề (lemma) 2.2 Cho p, q là hai số nguyên tố, có cùng chiều dài k bit và giả sử p < q. Ký hiệu n = p.q, n có độ dài 2k bit. Ký hiệu [√𝑛] là phần nguyên của căn bậc 2 của n. Ký hiệu s là số nguyên nhỏ nhất thỏa mãn (q – p) ≤ 2s, s < k. Ký hiệu div là phép chia lấy thương nguyên. Ta luôn có : 𝑝 < [√𝑛] < 𝑞 và 𝑝 𝑑𝑖𝑣 2𝑠 = [√𝑛] 𝑑𝑖𝑣 2𝑠 (các bit cao từ s tới k trong p và [√𝑛] là giống nhau). 61 Chứng minh: Theo giả thuyết ta có: (q – p) ≤ 2s ⇔ q ≤ p + 2s ⇒ q div 2s ≤ (p + 2s) div 2s ⇔ q div 2s ≤ (p div 2s) + 1. Vì s là số nguyên nhỏ nhất thỏa mãn (q – p) ≤ 2s nên q div 2s = (p div 2s) + 1 Ta có: 𝑝 < [√𝑛] < 𝑞 ⇒ p div 2s ≤ [√𝑛] 𝑑𝑖𝑣 2𝑠 ≤ q div 2s = (p div 2s) + 1 ⇒ p div 2s = [√𝑛] 𝑑𝑖𝑣 2𝑠. Điều này có nghĩa là các bit cao từ s tới k trong p và [√𝑛] là giống nhau hoặc (k - s) bit cao trong p và [√𝑛] giống nhau. 2.3.1.2. Bổ đề (lemma) 2.3 Cho p, q là các số nguyên tố, có cùng chiều dài bit là k bit và giả sử p < q. Ký hiệu n = p.q, ký hiệu nlen là độ dài theo bit của n, nlen = 2k. Ký hiệu [√𝑛] là phần nguyên của căn bậc 2 của n. Ký hiệu s là số nguyên nhỏ nhất thỏa mãn (q – p) ≤ 2s. Ký hiệu v là một số nguyên. Ký hiệu p⌉v là v bit cao của p và ký hiệu p⌋v là v bit thấp của p. Nếu biết được

Các file đính kèm theo tài liệu này:

  • pdfluan_an_nghien_cuu_phat_trien_mot_so_thuat_toan_sinh_khoa_rs.pdf
Tài liệu liên quan