Thiết kế thuật toán
Thuật toán backdoor BD2 là thuật toán sinh khóa RSA chứa
backdoor đối xứng dựa trên ý tưởng của thuật toán Hidden Prime Factor
với các tham số thỏa mãn các điều kiện “P1” theo chuẩn FIPS 186-4.
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 để dùng trong các trường hợp chung.
Ý tưởng thiết kế:
- Sử dụng ý tưởng của thuật toán Hidden Prime Factor: Thông tin
backdoor được mã mật và nhúng vào các bit cao của số modulus n.
- Kỹ thuật trích và nhúng thông tin backdoor vào trong số modulus n
dựa trên cơ sở các bổ đề mục 2.4.1.
- 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 BD2 là kỹ thuật trích thông tin backdoor
có kích thước ít hơn một nửa các bit của số nguyên tố p. Lượng thông tin
backdoor nhỏ hơn sẽ chiếm ít không gian trong khóa công khai dẫn tới
tăng lực lượng khóa. Thuật toán BD2 có các bước thực hiện như sau:
- Phần sinh khóa: thông tin backdoor là một phần của p được mã mật
hóa bởi hệ mật đối xứng F và nhúng vào nửa các bit cao của số modulus
n. Điểm khác biệt với các thuật toán trên là phần thông tin backdoor có
thể được rút gọn với chiều dài s - k/2 bit, nên có lực lượng lớn hơn.
- Phần khôi phục khóa: tách thông tin backdoor từ nửa các bit cao
của số modulus n. Giải mã mật thông tin backdoor và sử dụng phương
pháp của Coppersmith để tìm lại số nguyên tố p. Từ p tính q và d.
27 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 474 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Tóm tắt 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
mật RSA, các tham số đầu vào và đầu ra của thuật toán
sinh khóa (hệ mật RSA) chưa tuân thủ một chuẩn xác định nào.
- Chưa có thuật toán sinh khóa chứa backdoor nào được đánh giá tốt
trên tất cả các tiêu chí. Một số thuật toán sinh khóa chứa backdoor có lực
lượng khóa tốt nhưng, không thực hiện được sinh lại khóa một phần.
- Một số thuật toán sinh khóa chứa backdoor được đánh giá thất bại
khi sử dụng bộ nhớ tĩnh (NM) để lưu thông tin giữa các lần sinh khóa và
sử dụng kỹ thuật nhúng thông tin backdoor phức tạp dẫn đến độ phức tạp
của thuật toán backdoor từ bậc 2 trở lên.
6
1.6. Những vấn đề luâṇ án cần tâp̣ trung nghiên cứu giải quyết
Trên cơ sở phân tích kết quả đạt được và những tồn tại trong các công
trình nghiên cứu của các tác giả đi trước về sinh khóa RSA chứa
backdoor, luâṇ án cần tâp̣ trung nghiên cứu, tìm kiếm các thuật toán sinh
khóa RSA chứa backdoor hiệu quả, kế thừa các ưu điểm, hạn chế, khắc
phục các tồn tại trong các thuật toán sinh khóa chứa backdoor đã công
bố để có thể ứng duṇg vào các sản phẩm mật mã dạng hộp đen nhằm đảm
bảo an ninh cho việc sử dụng mật mã khóa công khai (PKI) thỏa mãn các
ràng buộc sau:
- Các tham số khóa thỏa mãn chuẩn FIPS 186-4 [26].
- Thông tin backdoor: một nửa các bit của số nguyên tố p hoặc ít hơn.
- Vị trí nhúng thông tin backdoor: vào một nửa các bit hoặc toàn bộ
các bit của số modulus n mà vẫn đạt được tính tương quan cao.
- Hệ mật người thiết kế là hệ mật đối xứng hoặc hệ mật công khai EC
với kích thước khối mã nhỏ, thuận tiện cho rút gọn thông tin backdoor.
- Các thuộc tính của backdoor (theo mô hình và tiêu chí của Arboit)
được đánh giá đạt mức trung bình trở lên
- Không sử dụng bộ nhớ (VN, NM) để lưu thông tin giữa các lần sinh
khóa và độ phức tạp của thuật toán backdoor nhỏ hơn bậc 2.
1.7. Kết luận chương 1
Chương 1 trình bày kiến thức cơ sở cần thiết cho việc phân tích, đánh
giá backdoor và khôi phục lại khóa riêng từ khóa công khai tương ứng.
Nội dung của chương 1 tập trung vào trình bày các kiến thức về mô hình
hình thức hiệu quả của Arboit [4] để phân tích, đánh giá backdoor và
phương pháp phân tích nhân tử của Coppersmith để khôi phục khóa riêng
của người dùng từ thông tin backdoor được giấu trong khóa công khai
tương ứng. Chương 1 cũng trình bày thêm một số kết quả nghiên cứu về
hệ mật RSA, chuẩn FIPS 186-4 [21] và tổng quan một số kết quả nghiên
cứu của các tác giả đi trước về backdoor trong sinh khóa RSA. Trên cơ
sở đánh giá các kết quả nghiên cứu về backdoor và nhu cầu ứng dụng
backdoor để đảm bảo an ninh cho việc sử dụng mật mã, chương 1 nêu
vấn đề mà luận án sẽ giải quyết. Các kiến thức được trình bày và vấn đề
đặt ra trong chương 1 là cơ sở để giải quyết trong Chương 2 và Chương
3 của Luận án.
7
CHƯƠNG 2. ĐỀ XUẤT THUẬT TOÁN BACKDOOR BD1, BD2
Chương trình bày 02 thuật toán sinh khóa RSA chứa backdoor BD1,
BD2 có các tham số tuân thủ điều kiện “P1” theo chuẩn FIPS 186-4. 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-Token
2.1. Thuật toán backdoor BD1
2.1.1. Giới thiệu thuật toán backdoor BD1
2.1.1.1. Thiết kế 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 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.
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 tham số đủ an toàn để sử dụng trong các trường hợp chung.
Ý 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 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.
- 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 và kẻ tấn công
khó tìm đượ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, đ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 là một nửa các bit cao của p
được mã mật hóa bởi lược đồ mã mật ECIES hệ mật EC của người thiết
kế và được trải đều (nhúng) trong các bit của số modulus n.
- Phần khôi phục khóa: tách thông tin backdoor từ một nửa các bit
thấp của số modulus n. Sử dụng phương pháp phân tích nhân tử của
Coppersmith để tìm lại số nguyên tố p. Từ p tính q và d.
8
2.2.1.2. Phần thuật toán sinh khóa
Sơ đồ khối phần thuật toán sinh khóa backdoor BD1 (hình 2.3).
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
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
9
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 ;
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.1.3. Phần thuật toán khôi phục khóa
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) ;
2: v = n mod 2k ;
3: v1 = v div 2k/2 ;
4: p1 = DecECIES(v1, Kpriv);//Kpriv backdoor owner’s key
5: p = S(n, 2k/2, p1) ; //Coppersmith method(1.3.3)
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.1.2. Đánh giá thuật toán backdoor BD1
Tính bảo mật: 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. Do vậy tính
bảo mật được đánh giá ở mức “tốt”.
Tính hoàn chỉnh: 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. Vậy tính hoàn chỉnh đạt mức “tốt”.
10
Lực lượng khóa: 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+1− 𝑙𝑜𝑔2𝑛𝑙𝑒𝑛
2𝑛𝑙𝑒𝑛−1−𝑙𝑜𝑔2 𝑛𝑙𝑒𝑛
= 22−𝑛𝑙𝑒𝑛/4 = 2−
1
2.
𝑛𝑙𝑒𝑛
2 +2
Vì hằng số c = -1/2 trong 𝑅𝐺1 lực lượng của G1 đạt 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. Do vậy 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 phụ thuộc vào một phần của p,
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 cầu ngược lại, tức là cố định q và sinh lại p là không khả thi. Vậy
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: Độ phức tạp tạo n là: tn(G1) = tp + tq +
T(ECIES). Vì độ phức tạp của hệ mật ECIES không đáng kể so độ phức
tạp của việc tạo p, q, nên độ phức tạp của G1 được đánh giá đạt mức “tốt”.
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á đạt mức “tốt”.
2.1.3. Tóm tắt các điểm nổi bật của thuật toán backdoor BD1
- 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 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 khôi phục khóa sử dụng phương pháp phân tích nhân tử
Coppersmith để khôi phục 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.
11
2.2. Thuật toán backdoor BD2
2.2.1. Giới thiệu thuật toán BD2
2.2.2.1. Thiết kế thuật toán
Thuật toán backdoor BD2 là thuật toán sinh khóa RSA chứa
backdoor đối xứng dựa trên ý tưởng của thuật toán Hidden Prime Factor
với các tham số thỏa mãn các điều kiện “P1” theo chuẩn FIPS 186-4.
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 để dùng trong các trường hợp chung.
Ý tưởng thiết kế:
- Sử dụng ý tưởng của thuật toán Hidden Prime Factor: Thông tin
backdoor được mã mật và nhúng vào các bit cao của số modulus n.
- Kỹ thuật trích và nhúng thông tin backdoor vào trong số modulus n
dựa trên cơ sở các bổ đề mục 2.4.1.
- 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 BD2 là kỹ thuật trích thông tin backdoor
có kích thước ít hơn một nửa các bit của số nguyên tố p. Lượng thông tin
backdoor nhỏ hơn sẽ chiếm ít không gian trong khóa công khai dẫn tới
tăng lực lượng khóa. Thuật toán BD2 có các bước thực hiện như sau:
- Phần sinh khóa: thông tin backdoor là một phần của p được mã mật
hóa bởi hệ mật đối xứng F và nhúng vào nửa các bit cao của số modulus
n. Điểm khác biệt với các thuật toán trên là phần thông tin backdoor có
thể được rút gọn với chiều dài s - k/2 bit, nên có lực lượng lớn hơn.
- Phần khôi phục khóa: tách thông tin backdoor từ nửa các bit cao
của số modulus n. Giải mã mật thông tin backdoor và sử dụng phương
pháp của Coppersmith để tìm lại số nguyên tố p. Từ p tính q và d.
2.2.2.2. Phần thuật toán sinh khóa
Sơ đồ khối phần thuật toán sinh khóa backdoor BD2:
12
Mã giả phần thuật toán sinh khóa backdoor BD2
Input (e, nlen, s)
Output (p, q, n, d)
1: Input (e, nlen, s) ;
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 ;
Start
e, nlen, s
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| > 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.5. Sơ đồ khối phần thuật toán sinh khóa của backdoor BD2
GCD (p - 1, e) = 1
p là số có thể nguyên tố
(1,41.2
nlen/2-1
p < 2nlen/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
13
// generate 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, backdoor owner’s key
11: r = RandomOddInteger() ; //log2 r = 3k/2 - s
12: n2 = τ . 23k/2 + μ . 23k/2 –s + r ;//n2 = τ : μ : r
13: q = [n2 / p] ;
14: if (𝑞 < √2. 2𝑛𝑙𝑒𝑛/2−1) 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 ; // lemma 2.4
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 2.4. Phần thuật toán sinh khóa của backdoor BD2
2.2.2.3. Phần thuật toán khôi phục khóa
Mã giả phần thuật toán khôi phục khóa
Input (n, e, s)
Output (p, q, d)
1: Input (n, e, s) ;
2: μ = ( n⌋3k/2 )⌉s - k/2 ; // lemma 2.4
3: p1 = ([√𝑛])⌉𝑘−𝑠 ; // lemma 2.2
4: p2 = F-1K(μ) ;
5: p3 = p1 . 2 s-k/2 + p2 ; //p3 = p1 : p2, p3 == p⌉k/2
6: p = S(n, 2k/2, p3) ; // Coppersmith method
7: q = n / p ;
8: d ≡ e−1 mod φ(n) ;
9: return (p, q, d) ;
Thuật toán 2.5. Phần thuật toán khôi phục khóa của backdoor BD2
2.2.2. Đánh giá thuật toán backdoor BD2
Tính bảo mật: Người thiết kế sử dụng hệ mật đối xứng AES có độ
dài tham số an toàn AES ≥ 128 tương đương với độ dài tham số an toàn
của người dùng G1 ≥ 2048. Độ 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ế. Tính bảo mật được đánh giá ở mức “tốt”.
Tính hoàn chỉnh: Theo thuật toán sinh khóa và thuật toán khôi phục
14
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. Tính hoàn chỉnh được đánh giá mức “tốt”.
Lực lượng khóa: 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ó:
𝑅𝐺1 =
𝑁𝐺1,𝑞
𝑁𝐺0,𝑞
≈
2𝑛𝑙𝑒𝑛+2−𝑠− 𝑙𝑜𝑔2𝑛𝑙𝑒𝑛
2𝑛𝑙𝑒𝑛−1−𝑙𝑜𝑔2 𝑛𝑙𝑒𝑛
= 23−𝑠 < 2−
𝑘
2+3 = 2−
1
2.
𝑛𝑙𝑒𝑛
2 +3
Hằng số c < -1/2 trong 𝑅𝐺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. 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. Do vậy
phân phối của n có thể gần với phân bố đều và khoảng cách thống kê
giữa thành phần n của G1 và G0 là xấp xỉ bằng 0, DG1 ≈ 0. Vậy 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 (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 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 cầu ngược lại, tức là cố định q và sinh lại
p là không khả thi. Do vậy, tính tương quan của G1 đạt mức “trung bình”.
Độ phức tạp tính toán: Độ phức tạp tạo n là: tn(G1) = tp + tq = tn nên
độ phức tạp của G1 được đánh giá mức “tốt”, tuyến tính với 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. Tóm tắt các điểm nổi bật của thuật toán backdoor BD2
- Các tham số thuật toán thỏa mãn các điều kiện “P1” về tham số
khóa RSA theo chuẩn FIPS 186-4.
- Thông tin backdoor được rút gọn, cần ít hơn một nửa các bit của số
nguyên tố p, dẫn tới lực lượng khóa lớn nhất trong các backdoor đề xuất.
- Phầ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.
- Được đánh giá tốt trên 06 thuộc tính và 01 thuộc tính (tính tương
quan) được đánh giá đạt mức trung bình.
15
2.3. Thử nghiệm các thuật toán backdoor BD1, BD2
2.3.1. Mục tiêu, phương pháp, môi trường, tiêu chí thử nghiệm
Mục tiêu thử nghiệm nhằm thu thập các thông tin về chất lượng, từ
đó đánh giá về khả năng triển khai của các backdoor đề xuất.
Phương pháp thử nghiệm: thử nghiệm hộp đen, chạy thuật toán
backdoor trong các tình huống (thử nghiệm động).
Môi trường thử nghiệm: Thuật toán sinh khóa chứa backdoor có thể
thử nghiệm trong module sinh khóa của nhà cung cấp dịch vụ hạ tầng
PKI và module sinh khóa của người dùng (thiết bị Token, HSM).
Các tiêu chí được thử nghiệm trên thiết bị T-Token: tính hoàn chỉnh,
tính tương quan, độ phức tạp; các tiêu chí còn lại không thử nghiệm.
2.3.2. Kết quả thử nghiệm thuật toán backdoor BD1
Hình 2.8. Biểu đồ kết quả thử nghiệm độ phức tạp backdoor BD1
Bảng 2.4. Kết quả thử nghiệm độ phức tạp thuật toán backdoor BD1
Thời gian chạy G0
Thời gian chạy G1
Sinh khóa Khôi phục khóa
2.04s 2.38s 0.03s
2.3.3. Kết quả thử nghiệm thuật toán backdoor BD2
Bảng 2.5. Kết quả thử nghiệm độ phức tạp thuật toán backdoor BD2
Thời gian chạy G0
Thời gian chạy G1
Sinh khóa Khôi phục khóa
2.04 s 2.43 s 0.04 s
0
0.5
1
1.5
2
2.5
Th
ờ
i g
ia
n
t
h
ự
c
h
iệ
n
(
s)
Kết quả thử nghiệm độ phức tạp backdoor BD1
Thời gian tạo khóa G0 Thời gian tạo khóa G1
Thời gian khôi phục khóa G1
16
Hình 2.9. Biểu đồ kết quả thử nghiệm độ phức tạp backdoor BD2
2.4. Ứng dụng backdoor BD1, BD2
Từ mục tiêu của các thuật toán backdoor BD1, BD2 là 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) và kết quả thử nghiệm các thuật
toán backdoor BD1, BD2 cho thấy cả hai thuật toán có tốc độ thực hiện
phần sinh khóa nhanh, các tham số tuân thủ điều kiện “P1” theo chuẩn
FIPS 186-4, do vậy môi trường ứng dụng tốt nhất đối với backdoor BD1,
BD2 là trong module tạo khóa của người dùng cuối, thiết bị PKI-Token.
2.5. Kết luận chương 2
Chương 2 giải quyết vấn đề đã đặt ra của Luận án: đề xuất được 02
thuật toán backdoor hiệu quả BD1, BD2. Cả 02 thuật toán backdoor đề
xuất có các tham số đầu vào và đầu ra đều tuân thủ các điều kiện “P1”
theo chuẩn FIPS 186-4 và có phần lớn các tiêu chí được đánh giá tốt.
Điểm nổi bật của backdoor BD1 là kỹ thuật tạo, nhúng thông tin
backdoor vào trong toàn bộ số modulus n đạt được tính phân phối tốt
nhất và nâng cao tính an toàn. Điểm nổi bật của backdoor BD2 là sử dụng
thông tin backdoor ít hơn một nửa các bit của p làm tăng lực lượng khóa.
Cả hai thuật toán BD1, BD2 được thử nghiệm trên thiết bị T-Token với
các kết quả thử nghiệm phù hợp với các đánh giá. Backdoor BD1, BD2
được đề xuất ứng dụng trong phần tạo khóa của thiết bị PKI-Token.
0
0.5
1
1.5
2
2.5
3
Th
ờ
i g
ia
n
t
h
ự
c
h
iệ
n
(
s)
Kết quả thử nghiệm độ phức tạp backdoor BD2
Thời gian tạo khóa G0 Thời gian tạo khóa G1
Thời gian khôi phục khóa G1
17
CHƯƠNG 3. ĐỀ XUẤT THUẬT TOÁN BACKDOOR BD3
Chương này trình bày 01 thuật toán sinh khóa RSA chứa backdoor
BD3 với các tham số tuân thủ điều kiện “P2” theo chuẩn FIPS 186-4, kết
quả thử nghiệm thuật toán backdoor BD3 trên thiết bị tự chế tạo T-Token.
3.1. Thuật toán backdoor BD3
3.1.1. Giới thiệu thuật toán
3.1.1.1. Ý tưởng xây dựng
Thuật toán backdoor BD3 là thuật toán sinh khóa RSA chứa
backdoor tuân thủ điều kiện “P2” theo chuẩn FIPS 186-4.
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ố mạnh để sử dụng trong các trường hợp đặc biệt.
Ý tưởng thiết kế:
- Dựa trên thuật toán tìm số nguyên tố mạnh của John Gordon để xây
dựng các số nguyên tố chính (p, q), dựa trên thuật toán sinh số nguyên tố
chứng minh được của Maurer để tạo các số nguyên tố phụ.
- Tuân thủ điều kiện “P2” theo chuẩn FIPS 186-4.
- Khôi phục khóa theo phương pháp phân tích nhân tử của
Coppersmith.
Điểm độc đáo của thuật toán BD3 là kỹ thuật sử dụng thông tin
backdoor được dẫn xuất từ số mũ công khai e, tham số ngẫu nhiên t và
kỹ thuật nhúng thông tin backdoor vào các bit thấp của số nguyên tố p.
Việc nhúng thông tin backdoor vào số nguyên tố p làm tăng thêm tính an
toàn và bảo mật cho backdoor. Dù thuật toán BD3 được công bố công
khai, việc dò tìm tham số mật (p), để từ đó trích ra thông tin backdoor sẽ
khó hơn rất nhiều so với việc trích thông tin backdoor từ trong số
modulus n. Thuật toán backdoor BD3 có đặc điểm sau:
- Phần sinh khóa: Thông tin backdoor được chọn là một giá trị ngẫu
nhiên t. Giá trị mầm u được hoán vị từ số mũ công khai, e, thông qua
hàm mã mật hóa (hoặc băm) FK với khóa K của người thiết kế. Giá trị C
= ut mod 2nlen/4, được nhúng vào một nửa các bit thấp của p.
- Phần khôi phục khóa: Người thiết kế tính giá trị u, dò tìm thông tin
backdoor t < m, để tính giá trị C (một nửa các bit thấp của p). Giá trị p
được khôi phục thông qua phương pháp phân tích nhân tử của
Coppersmith.
18
2.3.1.2. Phần thuật toán sinh khóa
Sơ đồ khối phần thuật toán sinh khóa:
Mã giả phần thuật toán sinh khóa
Input: e, nlen, n1, n2, n3, n4, m
Output: p, q, n, d
1: Input: e, nlen, n1, n2, n3, n4, m ;
2: if(e 2256 or nlen <1024)then return failure;
3: u = FK(e); //encryption or hash with key (backdoor
owner)
4: t = Random(m); // t < m
5: C = ut mod 2nlen/4 ;
// generate p
6: p1 = RandomProvablePrime(2𝑛1−1, 2𝑛1) ;
Start
e, nlen, n1, n2, n3, n4, m
2
16
< e < 2
256
nlen 1024
Trả về
mã lỗi
Stop
No
Tạo số nguyên tố p
Tạo các số nguyên tố phụ q1, q2
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
2nlen/ 2 < d< LCM (p-1, q-1)
Yes
No
p, q, n, d
Hình 3.2. Sơ đồ khối phần thuật toán sinh khóa của backdoor BD3
GCD (p - 1, e) = 1
(1,41.2
nlen/2-1
p < 2
nlen/2
)
Yes
No
Tạo số nguyên tố q
Chiều dài tối thiểu và tối đa
của các số nguyên tố phụ q1, q2
No
Yes
Tạo các số nguyên tố phụ p1, p2
Chiều dài tối thiểu và tối đa
của các số nguyên tố phụ p1, p2
No
Yes
Tạo số
nguyên tố
p
Chuẩn bị thông tin backdoor
19
7: p2 = RandomProvablePrime (2𝑛2−1, 2𝑛2) ;
8: Ap = p1.p2. 2nlen/4 ;
9: 𝐵𝑝 = {
1 𝑚𝑜𝑑 𝑝1
−1 𝑚𝑜𝑑 𝑝2
𝐶 𝑚𝑜𝑑 2𝑛𝑙𝑒𝑛/4
; // using CRT
10: Sp = { Ap.i + Bp }; (i = 1, 2, 3, )
11:𝑝 = 𝑃𝑟𝑖𝑚𝑒 (𝑆𝑝 ∩ (√2. 2
𝑛𝑙𝑒𝑛/2−1, 2𝑛𝑙𝑒𝑛/2 − 1)) ;such that gcd(p -
1, e) = 1
// generate q
12: q1 = RandomProvablePrime(2𝑛1−1, 2𝑛1) ;
13: q2 = RandomProvablePrime(2𝑛2−1, 2𝑛2) ;
14: Aq = q1.q2 ;
15: 𝐵𝑞 = {
1 𝑚𝑜𝑑 𝑞1
−1 𝑚𝑜𝑑 𝑞2
; //using CRT
16: Sq ={ Aq.j + Bq }; (i = 1, 2, 3, )
17: 𝑞 = 𝑃𝑟𝑖𝑚𝑒 (𝑆𝑞 ∩ (√2. 2
𝑛𝑙𝑒𝑛/2−1, 2𝑛𝑙𝑒𝑛/2 − 1)) ;such that gcd(q -
1, e)= 1
18: if ( |p – q| ≤ 2
nlen/2 – 100
) then go to step 12 ;
// compute n, d
19: n = p.q ;
20: d = e–1 mod (LCM(p - 1, q - 1)) ;
21: if ( d < 2
nlen/ 2 ) then go to step 12 ;
22: return (p, q, n, d) ;
Thuật toán 3.2. Phần thuật toán sinh khóa của backdoor BD3.
2.3.1.3. Phần thuật toán khôi phục khóa
Mã giả phần thuật toán khôi phục khóa:
Input: n, e, m
Output: p, q, d
1: Input (n, e, m) ;
2: t = 1; C = 1 ;
3: u = FK(e) ;
4: repeat
5: C = C.u mod 2nlen/4 ; //(C = ut mod 2nlen/4)
6: if C mod 2 = 1 then
7: p = S(n, 2nlen/4, C) ; //Coppersmith method
8: t = t + 1 ;
9: until (p mod 2nlen/4 = C) and (p is prime) and (t <
m);
10: q = n / p ;
11: d = e–1 mod (LCM(p - 1, q - 1)) ;
12: return (p, q, d) ;
Thuật toán 3.3. Phần thuật toán khôi phục khóa của backdoor BD3.
20
3.1.2. Đánh giá thuật toán backdoor BD3
Tính bảo mật: Người thiết kế sử dụng hệ mật đối xứng, hoặc hàm
băm với khóa có độ an toàn tương đương với độ an toàn (độ dài tham số
khóa) hệ mật RSA của người dùng. Tính bảo mật được đạt mức “tốt”.
Tính hoàn chỉnh: 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. Vậy tính hoàn chỉnh đạt mức “tốt”.
Lực lượng khóa: Xét tỷ lệ giữa lực lượng của G1 và G0, vì q, d được
sinh trong G1 giống như trong G0 nên hạng tử #{q}, #{d} có thể bỏ qua,
nên tỷ lệ lực lượng giữa G1 và G0 là:
𝑅𝐺1 =
𝑁𝐺1,𝑝
𝑁𝐺0,𝑝
≈
2𝑛𝑙𝑒𝑛/4−4/𝑛𝑙𝑒𝑛3
2𝑛𝑙𝑒𝑛/2−4/𝑛𝑙𝑒𝑛3
= 2−𝑛𝑙𝑒𝑛/4 = 2−
1
2
.
𝑛𝑙𝑒𝑛
2
Vì hằng số c = -1/2 trong 𝑅𝐺1, nên lực lượng của G1 đạt mức “tốt”.
Tính phâ
Các file đính kèm theo tài liệu này:
- tom_tat_luan_an_nghien_cuu_phat_trien_mot_so_thuat_toan_sinh.pdf