Khắc phục lỗi và nâng cao tính hiệu quả cho các lược đồ chữ ký số dựa trên hai bài toán khó
Chữ ký số được dùng để xác thực về nguồn gốc
và tính toàn vẹn của thông tin. Các thuật toán chữ
ký số thường dựa trên hai hệ mật phổ biến là RSA
và Elgamal. Hệ mật RSA dựa trên độ khó của bài
toán phân tích thừa số nguyên tố. Elgamal dựa trên
độ khó của bài toán logarit rời rạc. Các lược đồ chữ
ký số có độ an toàn dựa trên tính khó của hai bài
toán khó được quan tâm từ năm 1994 do L. Harn đề
xuất [2] và liên tục sau đó các công bố vào năm 2008
của ba tác giả E. S. Ismail, N. M. F. Tahat và R. R.
Amad [3], của E. S. Dermova năm 2009 [4], của S.
Vishnoi và Shrivastava năm 2012 [5], của Binh V.
Do, Minh H. Nguyên, Nikolay A. Moldovyal, năm
2013 [1],. Cùng với chúng là những phân tích chỉ
ra thực chất về độ an toàn của chúng như phân tích
của N. Y. Lee và T. Hwang về lược đồ của Harn công
bố năm 1996 [6], phân tích của Shin-Yan Chiou và
Yi-Xuan He về giao thức của Vishnoi và Shrivastava
công bố năm 2013 [7]. Tóm lại chỉ còn hai lược đồ
đưa ra trong [1] là đúng nghĩa với việc có độ an toàn
dựa trên tính khó của hai bài toán khó đó là lược đồ
Rabin-Schnorr và RSA-Schnorr. Trong bài báo này
chúng tôi trình bày hai nội dung đó là:
• Chỉ ra một số lỗi dẫn đến việc dễ giả mạo hoặc
dẫn đến việc chỉ phụ thuộc vào một bài toán khó
của hai lược đồ Rabin-Schnorr và RSA-Schnorr.
Tiếp đến chỉ ra nhược điểm dẫn đến tính không
hiệu quả của các lược đồ này.
• Công bố một lược đồ Williams-Rabin-Schnorr
với thuật toán ký hiệu quả hơn hẳn thuật toán
ký của lược đồ Rabin-Schnorr.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Tóm tắt nội dung tài liệu: Khắc phục lỗi và nâng cao tính hiệu quả cho các lược đồ chữ ký số dựa trên hai bài toán khó
tính hiệu quả cao người có khóa ký là (p, n, q, q0, d, x) đều có chung một giải pháp đó là đưa thêm vào tham Input: m ∈ M số miền N vừa đủ lớn sao cho bài toán tìm các logarit Output: (r, s) ∈ S trong nhóm hgi có kích thước N-bít là "khó". Khi này các lược đồ cải biên đều có hai đặc điểm: 1 k ∈R (0, n) k 2 u ← g mod p • Thứ nhất. Kích thước chữ ký chỉ là 2.N bít. 3 r ← H(m||u) • Thứ hai. Các phép tính lũy thừa có số mũ N-bít. 4 a ← (k − x.r) mod n Trong khi cả hai lược đồ được trình bày ở trên luôn d 5 s ← a mod p có kích thước nhóm đúng bằng L - 1. Nếu như các 6 return (r, s) phép lũy thừa trong các thuật toán kiểm tra thường có số mũ là (L - 1)-bít thì phép lũy thừa trong thuật toán ký có thể điểu khiển được. Thuật toán 4: Thuật toán kiểm tra chữ ký Chúng tôi có một số khuyến nghị như sau: (p, n, e, y) của người có khóa kiểm tra là • Thứ nhất. Đưa vào tham số miền N giống như Input: (m, (r, s)) ∈ M × S các cải biên nếu trên cụ thể nó được lấy tương Output: "Accept" nếu chữ ký là hợp lệ và ứng với L theo bảng I, khi này bước 1 của các N−1 N "Reject" trong trường hợp ngược lại thuật toán ký nên chỉ là k ∈R (2 , 2 ). e 1 a ← s mod n Tương tự tham số mật x cũng chỉ cần là x ∈R a r 2 u ← g .y mod p (2N−1, 2N ). 0 3 r ← H(m||u) Tham số h = N. 0 4 If (r = r ) then return "Accept" • Thứ hai. Số mũ công khai e nên có dạng 2t +1, 5 Else return "Reject" thậm chí lấy cố định là 216 + 1 như khuyến cáo đối với lược đồ RSA. • Thứ ba. Đối với lược đồ Rabin-Schnorr, người B. Một số phân tích và đề nghị sửa đổi cho hai lược ký tính sẵn và lưu như một tham số mật giá trị −1 đồ Rabin-Schnorr và RSA-Schnorr c = q.(q mod p) mod n. Khi này chi phí cho việc tính CRT (x, y) chỉ còn là tm(L). 1) Các lỗi của lược đồ Rabin-Schnorr và RSA- Schnorr: Lược đồ Rabin-Schnorr có hai lỗi sau: C. Các lược đồ sau khi sửa đổi • Lỗi thứ nhất. Xuất phát từ "Nếu (r, s) được chấp nhận bởi thuật toán kiểm tra M thì (r, −s) cũng 1) Các tham số: Các tham số cho lược đồ Rabin- được chấp nhận". Như vậy sơ đồ là dễ giả mạo. Schnorr và RSA-Schnorr giống như nêu trong mục • Lỗi thứ hai. Nếu gcd(s, n) 6= 1 thì đây chính là III-A1 với một số bổ sung sau: ước của n. Trong trường hợp này lược đồ sẽ chỉ • Hàm tóm lược H:{0, 1}∞ → {0, 1}N . N−1 N còn dựa vào bài toán logarit rời rạc. • Tham số mật x ∈R (2 , 2 ). 16 Để tránh các lỗi trên chúng tôi đề nghị bước 4 và • Số mũ công khai e = 2 + 1 dùng cho RSA- bước 7 của thuật toán ký được sửa đổi như sau: Schnorr. −1 4. a ← (k − x.r) mod n; if (gcd(a, n) 6= 1) then • Tham số mật của người ký c = q.(q mod p) goto 1. dùng cho Rabin-Schnorr. 7. s ← CRT (sq, sq0 ); if (s ≥ n/2) then goto s = Khi này khóa ký và khóa kiểm tra chữ ký: n − s. • Trong lược đồ Rabin-Schnorr lần lượt là: Tương ứng với việc sửa bước 7 trong thuật toán ký (p, n, q, q0, x, c) và (p, n, y). • Trong lược đồ RSA-Schnorr lần lượt là: Thuật toán 7: Thuật toán tạo chữ ký của (p, n, q, q0, d, x) và (p, n, e, y). người có khóa ký là (p, n, q, q0, d, x) 2) Lược đồ Rabin-Schnorr sửa đổi: Thuật toán Input: m ∈ M 5,6. Output: (r, s) ∈ S N−1 N 1 k ∈R (2 , 2 ) k Thuật toán 5: Thuật toán tạo chữ ký của 2 u ← g mod p người có khóa ký là (p, n, q, q0, x, c) 3 r ← H(m||u) Input: m ∈ M 4 a ← (k − x.r) mod n 0 Output: (r, s) ∈ S 5 aq ← a mod q; aq0 ← a mod q N−1 N 6 if ((aq = 0) or (aq0 = 0)) then goto 1. (thay 1 k ∈R (2 , 2 ) k a, n) 6= 1 2 u ← g mod p cho gcd( ) d mod q d mod q0 7 0 0 3 r ← H(m||u) sq ← (aq) mod q; sq ← (aq ) 0 4 a ← (k − x.r) mod n mod q 0 0 8 s ← (c.(sq − sq0 ) + sq0 mod n 5 aq ← a mod q; aq ← a mod q 9 return (r, s) 6 if ((aq = 0) or (aq0 = 0)) then goto 1. (thay cho gcd(a, n) 6= 1) a a 7 if (( q ) = −1) or (( q0 ) = −1) then goto 1 (q+1)/4 0 (q0+1)/4 Thuật toán 8: Thuật toán kiểm tra chữ ký 8 s ← (a ) q s ← (a 0 ) q q mod ; q q của người có khóa kiểm tra là (p, n, e, y) mod q0 Input: (m, (r, s)) ∈ M × S 9 s ← (c.(s − s 0 ) + s 0 ) mod n q q q Output: "Accept" nếu chữ ký là hợp lệ và 10 if (s ≥ n/2) then s ← n − s "Reject" trong trường hợp ngược lại 11 return (r, s) e 1 a ← s mod n a r 2 u ← g .y mod p 0 3 r ← H(m||u) 0 Thuật toán 6: Thuật toán kiểm tra chữ ký 4 If (r = r ) then return "Accept" của người có khóa kiểm tra là (p, n, y) 5 Else return "Reject" Input: (m, (r, s)) ∈ M × S Output: "Accept" nếu chữ ký là hợp lệ và "Reject" trong trường hợp ngược lại Chứng minh 1 if (s ≥ n/2) then return "Reject" Sự khác nhau giữa hai thuật toán là tham số k ở 2 2 a ← s mod n thuật toán 1 là số L-bít, còn ở thuật toán 5 là N- a r k 3 u ← g .y mod p bít như vậy chi phí cho việc tính giá trị g mod p 0 4 r ← H(m||u) của hai thuật toán theo công thức (3) lần lượt sẽ là 0 5 If (r = r ) then return "Accept" 1, 5.L.tm(L) và 1, 5.N.tm(L). Đối với thuật toán sửa 6 Else return "Reject" đổi có thêm việc kiểm tra ((aq = 0) or (aq0 = 0)) có L chi phí 2.tRed( 2 ) < tm(L). a Biết rằng xác suất để ( q ) = −1 (hoặc tương tự 3) Lược đồ RSA-Schnorr sửa đổi: Thuật toán 7,8. a ( q0 )=-1) bằng 0,5 nên để qua được bước 5 của thuật toán 1 (tương tự bước 6 của thuật toán 5) trung bình a a D. So sánh chi phí giữa những cặp lược đồ gốc và cần thực hiện 4 lần kiểm tra ( q ) = −1 or ( q0 ) = −1. sửa đổi Như vậy hiệu chi phí giữa thuật toán 1 và 5 sẽ là Do những sửa đổi nêu ra trong mục III-B2 nhằm 4.(1, 5.L−(1, 5.N+1)).tm(L) = 4.(1, 5.(L−N)− tăng tính hiệu quả chủ yếu trong các thuật toán tạo 1).tm(L). chữ ký cho nên ở đây chúng tôi chỉ đánh giá trong Và đây là điều cần chứng minh. từng cặp thuật toán này. Trong phân tích của chúng Lập luận hoàn toàn tương tự đối với cặp lược RSA- tôi luôn giả thiết các cặp thuật toán cùng sử dụng Schnorr ta có. việc lưu giá trị c để tính CRT và dùng chung số mũ Mệnh đề 2. Chi phí thuật toán ký của lược đồ RSA- e. Schnorr sửa đổi ít hơn của RSA-Schnorr là Mệnh đề 1. Chi phí thuật toán ký của lược đồ Rabin- (1, 5.(L − N) − 1).tm(L) (8) Schnorr sửa đổi ít hơn của Rabin-Schnorr là: Từ (7) và (8) ta tính được chi phí (theo đơn vị 4.(1, 5.(L − N) − 1).tm(L) (7) tm(L)) tiết kiệm được khi sử dụng các lược đồ sửa đổi so với lược đồ ban đầu cho trong bảng 2 dưới B. Lược đồ WR-Schnorr đây. Tham số miền. Tham số miền giống như của Rabin-Schnorr sửa đổi nhưng thêm: Bảng II 0 CHI PHÍ TIẾT KIỆM ĐƯỢC KHI LƯỢC ĐỒ SỬA ĐỔI ỨNG VỚI CẶP • q ≡ 3 (mod 8) và q ≡ 7 (mod 8). (L, N) CHO TRONG BẢNG I • Tập chữ ký S = {±1} × {±1} × N × N. Lược đồ WR-Schnorr được trình bày trong thuật toán N 160 224 256 384 512 L 1024 2048 3072 8192 15360 9, 10. Rabin-Schnorr 5180 10940 16892 46844 89084 RSA-Schnorr 1295 2735 4223 11711 22271 Thuật toán 9: Thuật toán tạo chữ ký của người có khóa ký là (p, n, q, q0, c, x) Input: m ∈ {0, 1}∞ Output: (u, v, r, s) ∈ {±1} × {±1} × N × N IV. LƯỢC ĐỒ WR-SCHNORR N−1 N 1 k ∈R (2 , 2 ) k Lược đồ WR-Schnorr mà chúng tôi đưa ra trong 2 w ← g mod p phần này là sự thay thế lược đồ Rabin trong Rabin- 3 r ← H(m||w) Schnorr bằng lược đồ Williams-Rabin (WR) do 4 a ← (k − x.r) mod n 0 Williams công bố vào năm 1980 [11]. Cơ sở để lược 5 aq ← a mod q; aq0 ← a mod q đồ WR ưu việt hơn hẳn Rabin trong thuật toán tạo 6 if ((aq = 0) or (aq0 = 0)) then goto 1. (thay chữ ký cho trong bổ đề 1 trình bày trong mục IV-A cho gcd(a, n) 6= 1) aq aq0 dưới đây. 7 u ← ( q ); v ← ( q0 ) 8 if (u 6= v) then a ← 2.a mod n 9 if (v = −1) then a ← n − a A. Kết quả bổ trợ (q+1)/4 0 (q0+1)/4 0 10 sq ← a mod q; sq ← a mod q 0 0 Bổ đề 1. Cho n = p.q với p ≡ 3 (mod 8), q ≡ 7 11 s ← (c.(sq − sq) + sq) mod n ∗ (mod 8) là hai số nguyên tố. Khi đó với mọi a ∈ Zn 12 if (s ≥ n/2) then s ← n − s thì giá trị b xác định theo công thức sau: 13 return (u, v, r, s) a a a ∈ QR(n) khi ( ) = 1, ( ) = 1 p q Thuật toán 10: Thuật toán kiểm tra chữ ký a a của người có khóa kiểm tra là (p, n, q, q0, x) −2a ∈ QR(n) khi ( ) = 1, ( ) = −1 Input: (m, (u, v, r, s)) ∈ M × S p q (9) b = a a 2a ∈ QR(n) khi ( ) = −1, ( ) = 1 Output: "Accept" nếu chữ ký là hợp lệ và p q "Reject" trong trường hợp ngược lại a a −a ∈ QR(n) khi ( ) = −1, ( ) = −1 1 if (s ≥ n/2) return "Reject" 2 p q 2 b ← s mod n 3 if (u 6= v) then b ← b/2 mod n 4 if (v = −1) then b ← n − b b r 5 w ← g .y mod p Sẽ thoả mãn: 0 6 r ← H(m||w) 0 1) 7 If (r = r ) then return "Accept" b b 8 Else return "Reject" ( ) = ( ) = 1. p q 2) Hơn nữa nếu ký hiệu: C. Tính đúng đắn của lược đồ WR-Schnorr r = b(p+1)/4, r = b(q+1)/4 p q Tính đúng đắn của lược đồ WR-Schnorr được cho −1 và c = q.(q mod p) (10) trong kết quả sau. thì giá trị: Mệnh đề 3. Lược đồ WR-Schnorr là đúng đắn. Chứng minh r = (c.(rp − rq) + rq) mod n (11) Giả sử (u, v, r, s) là chữ ký được tạo từ thuật toán 9 của người giữ tham số mật (p, n, q, q0, c, x) lên thông Thỏa mãn r2 ≡ b (mod n). (12) báo m. Nếu ký hiệu a = (k − x.r) mod n (giá trị tính được ở bước 4 và qua được bước 6), còn b là giá nên phép toán này được bỏ qua trong công thức. trị a tính được sau bước 9. Với tác động của bước 8 và bước 9 ta có: E. Tính an toàn của lược đồ WR-Schnorr b = a ⇔ u = v = 1. Lặp lại việc chứng minh tính an toàn của lược đồ b = −2.a ⇔ u = 1 và v = −1. Rabin-Schnorr trong [1] ta có kết quả sau. b = 2.a ⇔ u = −1 và v = 1. Mệnh đề 5. Lược đồ WR-Schnorr có độ an toàn dựa b = −a ⇔ u = −1 và v = −1. vào tính khó giải của đồng thời hai bài toán phân tích số và bài toán logarit rời rạc. Theo bổ đề 1 thì giá trị s tính được ở bước 11 sẽ V. KẾT LUẬN thỏa mãn: s2 mod n = b. Trong bài báo này, chúng tôi đã phân tích một Bây giờ ký hiệu ngược lại b là giá trị tính được ở số lỗi có thể xảy ra đối với hai lược đồ chữ ký số bước 2 thuật toán 10 còn a là giá trị b tính được sau Rabin-Schnorr và RSA-Schnorr, đồng thời đưa ra các bước 4 của thuật toán này ta có: khuyến nghị và sửa đổi cho hai lược đồ này để hạn chế lỗi. Ngoài ra, chúng tôi còn đề xuất một thuật a = b ⇔ u = v = 1. toán chữ ký số mới bằng cách thay thế lược đồ Rabin a = −b/2 ⇔ u = 1 và v = −1. trong Rabin-Schnorr bằng lược đồ Williams-Rabin. a = b/2 ⇔ u = −1 và v = 1. Lược đồ đề xuất có thuật toán tạo chữ ký hiệu quả a = −b ⇔ u = −1 và v = −1. hơn lược đồ Rabin-Schnorr mà vẫn đảm bảo được độ an toàn do vẫn dựa trên hai bài toán khó. Từ hai kết quả trên thì giá trị b tính được sau bước 4 TÀI LIỆU THAM KHẢO của thuật toán 10 chính là giá trị a tính được ở bước 4 trong thuật toán 9 hay [1] B. V. Do, M. H. Nguyen, and N. A. Moldovyan, “Digital signature schemes from two hard problems,” in Multimedia b = (k − x.r) mod n. and Ubiquitous Engineering. Springer, 2013, pp. 817–825. Như vậy giá trị w tính được tại bước 5 trong thuật [2] L. Harn, “Public-key cryptosystem design based on factor- toán 10 là ing and discrete logarithms,” IEE Proceedings-Computers w ≡ gb.yr ≡ g(k−x.r).yr ≡ gk (mod p) and Digital Techniques, vol. 141, no. 3, pp. 193–195, 1994. [3] E. S. Ismail, N. Tahat, and R. R. Ahmad, “A new digital sig- đúng bằng giá trị w tính được ở bước 2 thuật toán nature scheme based on factoring and discrete logarithms,” 9. Điều này dẫn đến hai giá trị r tính ở bước 3 thuật Journal of mathematics and statistics, vol. 4, no. 4, pp. toán 9 và r0 tính ở bước 6 thuật toán 10 là trùng nhau, 222–225, 2008. [4] E. S. Dermova, “Information authentication protocols on hay đầu ra của thuật toán 10 là "Accept". Mệnh đề two hard problems. ph. d. dissertation,” Ph.D. dissertation, đã được chứng minh. St. Petersburg State Electrotechnical University St. Peters- burg, Russia, 2009. D. Tính hiệu quả của lược đồ Williams-Rabin [5] S. Vishnoi and V. Shrivastava, “A new digitalsignature algorithm based on factorization and discrete logarithm Biết rằng trong hai lược đồ chữ ký dựa trên hai bài problem,” 2012. toán khó Rabin-Schnorr sửa đổi và RSA-Schnorr sửa [6] N.-Y. Lee and T. Hwang, “Modified harn signature đổi thì thuật toán ký của lược đồ thứ hai hiệu quả scheme based on factorising and discrete logarithms,” IEE Proceedings-Computers and Digital Techniques, vol. 143, hơn nhưng thuật toán kiểm tra chữ ký thì ngược lại. no. 3, pp. 196–198, 1996. Để có những kết luận về tính hiệu quả của lược đồ [7] S. Chiou and Y. He, “Remarks on new digital signature mới thành lập chúng tôi sẽ thực hiện so sánh thuật algorithm based on factorization and discrete logarithm toán ký của nó với lược đồ thứ hai và so sánh thuật problem,” International Journal of Computer Trends and Technology (IJCTT), vol. 4, pp. 3322–3324, 2013. toán kiểm tra với lược đồ thứ nhất. Kết quả chop [8] J. Katz, A. J. Menezes, P. C. Van Oorschot, and S. A. trong mệnh đề sau. Vanstone, Handbook of applied cryptography. CRC press, 1996. Mệnh đề 4. Chi phí cho thuật toán thứ j, ký hiệu là [9] R. Crandall and C. B. Pomerance, Prime numbers: a Tj(j = 5, 6, 7, 8, 9 và 10). Ta có: computational perspective. Springer Science & Business Media, 2006, vol. 182. T9 − T7 = 2.tJacobi(L/2). (13) [10] D. Hankerson, A. J. Menezes, and S. Vanstone, Guide to T = T . elliptic curve cryptography. Springer Science & Business 10 6 (14) Media, 2006. Chú ý, do [11] H. Williams, “A modification of the rsa public-key encryp- tion procedure (corresp.),” IEEE Transactions on Informa- (b + n) 1 khi b lẻ tion Theory, vol. 26, no. 6, pp. 726–729, 1980. b/2 mod n = b 1 khi b chẵn FIX BUGS AND ENHANCE EFFICIENCY two hard problems that it is more efficient than the FOR THE DIGITAL SIGNATURE SCHEME Rabin-Schnorr scheme in the signing algorithm. BASED ON TWO HARD PROBLEMS Keywords: Digital signature, discrete logarithm Abstract: Digital signature schemes based on two problem, integer factorization problem, two hard problems. hard problems will be higher security than the scheme based on a single hard problem in case one Lều Đức Tân là Tiến sĩ toán học, từng công tác tại Học viện Kỹ of the two hard problems was solved. In recent years, thuật Mật mã, hiện nay đã nghỉ hưu. Hướng nghiên cứu chính: many researchers have proposed the digital signature toán học và mật mã. scheme based on the discrete logarithm problem and Hồ Kim Giàu Tốt nghiệp Đại học Khoa integer factorization problem. In particular, two pub- học - Tự nhiên, TP. Hồ Chí Minh năm lished schemes are Rabin-Schnorr and RSA-Schnorr 2005. Nhận bằng Thạc sỹ tại Học viện [1]. In this paper, we point out some bugs that lead Bưu chính Viễn thông TP. Hồ Chí Minh to the possibility of forging signatures or schemes năm 2011. Đơn vị công tác: Trường Đại học Thông tin liên lạc, Khánh Hoà. Hiện depending only on a single hard problem of the two đang làm nghiên cứu sinh tại Học viện Kỹ proposed schemes, and the disadvantages leading to thuật Quân sự. Email: hkgiau@gmail.com. inefficiency of these schemes. In addition, this paper Hướng nghiên cứu hiện nay: An toàn và proposes a new digital signature scheme based on bảo mật thông tin.
File đính kèm:
- khac_phuc_loi_va_nang_cao_tinh_hieu_qua_cho_cac_luoc_do_chu.pdf