Bài báo Một dạng lược đồ chữ ký xây dựng trên bài toán phân tích số đề xuất một dạng lược đồ chữ ký số mới được xây dựng trên tính khó giải của bài toán phân tích một số nguyên lớn ra các thừa số nguyên tố. Tham khảo nội dung bài viết để hiểu hơn về vấn đề này.
Kỷ yếu Hội nghị Quốc gia lần thứ Nghiên cứu ứng dụng Công Nghệ thông tin (FAIR); Hà Nội, ngày 10-11/07/2015 MỘT DẠNG LƯỢC ĐỒ CHỮ KÝ XÂY DỰNG TRÊN BÀI TỐN PHÂN TÍCH SỐ Lưu Hồng Dũng1, Hoàng Thị Mai2, Nguyễn Hữu Mộng3 Khoa Công nghệ Thông tin, Học viện Kỹ thuật Quân Khoa Công nghệ Thông tin, Đại học Thủ đô Hà Nội Khoa Công nghệ Thông tin, Học viện Kỹ thuật Quân luuhongdung@hotmail.com, htmai@cdsphanoi.edu.vn, nghm06@yahoo.com TÓM TẮT— Bài báo đề xuất dạng lược đồ chữ ký số xây dựng tính khó giải tốn phân tích số ngun lớn thừa số nguyên tố Từ dạng lược đồ đề xuất phát triển lược đồ chữ ký có khả ứng dụng thực tế Từ khóa— Digital Signature, Digital Signature Schema, Integer Factorization Problem, Prime Factorization I ĐẶT VẤN ĐỀ Nghiên cứu phát triển lược đồ chữ ký số nội dung nghiên cứu khoa học quan trọng, mang tính thời an tồn thơng tin Hầu hết lược đồ chữ ký số dựa tính khó tốn: phân tích số ngun lớn thừa số nguyên tố, toán khai toán logarit rời rạc modulo hợp số Thuật toán chữ ký số (RSA) đề xuất công bố Ron Rivest, Adi Shamir Len Adleman [1] vào năm 1977 Viện Công nghệ Massachusetts (MIT) Hoa Kỳ Thuật toán chữ ký số xây dựng dựa tính khó tốn phân tích số nguyên lớn thừa số nguyên tố Lược đồ Elgamal [17] gồm hệ mã chữ ký số có độ an tồn dựa toán logarit rời rạc Trên tảng toán phân tích số, có nhiều hướng nghiên cứu phát triển thuật toán chữ ký số RSA [2] [5] nghiên cứu việc sinh tham số đầu vào cho thuật tốn nhằm tăng mức độ an tồn thuật tốn, [6] nghiên cứu xác thực tin chữ ký số RSA-PSS theo cách sử dụng hai thuật toán tảng thuật tốn mã hóa kiểm tra EMSA-PSS cho tin thuật toán tạo chữ ký RSA để xác thực tin Nhằm tăng độ an toàn cho lược đồ chữ ký số, có mạch nghiên cứu khác xây dựng lược đồ chữ ký dựa tảng hai tốn: phân tích số logarit rời rạc Năm 1998, Shao [8] Li-Xiao [9] đề xuất lược đồ chữ ký số dạng Sau Lee [10] năm 2000 chứng minh lược đồ chữ ký Shao không an toàn báo cáo Để khắc phục nhược điểm lược đồ chữ ký Shao, He [11] năm 2001 đề xuất sơ đồ chữ ký số dựa vào tốn phân tích số ngun toán logarit rời rạc; sử dụng modulo tập số mũ khóa bí mật Vào năm 2002 Hung Min Sun [12] lược đồ dựa tốn logarit rời rạc Năm 2003, Wang, Lin Chang [14] đề xuất lược đồ chữ ký dựa hai toán khó lược đồ chưa bị đánh bại Năm 2007, Wei [15] đưa hai lược đồ cải tiến từ hai lược đồ Shao Li-Xiao nhằm chống lại công vào hai lược đồ Năm 2009, Lin, Gun Chen [16] cho lược đồ Wei khơng an tồn giả mạo chữ ký hợp lệ thông điệp cách sử dụng phương pháp Pollard Schnorr Theo hướng nghiên cứu khác, [3] đề cập đến việc xây dựng lược đồ chữ ký số sở tốn phân tích số ngun lớn thừa số nguyên tố (bài toán phân tích số) kết hợp với tốn khai modulo hợp số (bài toán khai căn) Tuy nhiên, tốn khai khơng có vai trò định đến mức độ an toàn lược đồ nên không đề cập đến [3] Bài báo đề xuất phương pháp xây dựng lược đồ chữ ký số theo nguyên tắc [3], phương pháp đề xuất mô tả dạng lược đồ tổng quát từ cho phép triển khai lược đồ chữ ký số khác cho ứng dụng thực tế Hơn nữa, phương pháp đề xuất xây dựng sở tốn phân tích số kết hợp với toán logarit rời rạc modulo hợp số nên cho phép tạo lược đồ chữ ký có hiệu thực (tốc độ, tài nguyên hệ thống) cao lược đồ chữ ký xây dựng [3] Cũng tương tự toán khai lược đồ [3], toán logarit rời rạc khơng có vai trò định tới độ an toàn lược đồ xây dựng theo phương pháp đề xuất nên không đề cập II XÂY DỰNG LƯỢC ĐỒ CHỮ KÝ DỰA TRÊN BÀI TỐN PHÂN TÍCH SỐ A Bài tốn phân tích số ngun lớn thừa số ngun tố Bài tốn phân tích số phát biểu sau: Cho số n ∈ N , tìm biểu diễn: n = p1e1 p2e pkek , với ei ≥1 pi số nguyên tố Trong hệ mật RSA [1], tốn phân tích số sử dụng làm sở để hình thành cặp khóa cơng khai (e)/bí mật (d) cho thực thể ký phát biểu sau: - Cho p, q số nguyên tố lớn mạnh; - Từ p q dễ dàng tính được: n = p × q ; MỘT DẠNG LƯỢC ĐỒ CHỮ KÝ XÂY DỰNG TRÊN BÀI TỐN PHÂN TÍCH SƠ - Từ n khó tìm p q Với việc giữ bí mật tham số p, q khả tính khóa mật (d) từ khóa cơng khai (e) modulo n khó thực hiện, p, q chọn đủ lớn mạnh [4,7] Hiện tại, toán coi tốn khó chưa có giải thuật thời gian đa thức cho hệ mật RSA chứng minh thực tế cho tính khó giải toán B Xây dựng lược đồ dạng tổng quát Dạng lược đồ đề xuất xây dựng sở tính khó giải tốn phân tích số thiết kế theo dạng lược đồ sinh chữ ký thành phần tương tự DSA chuẩn chữ ký số Mỹ (DSS) hay GOST R34.10-94 Liên bang Nga, bao gồm dạng tổng quát sau 2.1 Dạng lược đồ thứ Giả sử có văn cần ký M chữ ký số chứa hai thành phần S Z Để hình thành chữ ký số ta chọn hai số nguyên tố lớn khác nhau, đủ mạnh p, q đặt n = p × q , đồng thời chọn số nguyên t thỏa mãn < t < φ (n) với φ (n) hàm Ơle n, tức φ (n) = ( p − 1) × (q − 1) Giả sử thành phần thứ S chữ ký tính từ giá trị u khoảng (1, n ) theo công thức: (1.1) S = u t mod n Thành phần thứ hai Z chữ ký tính từ giá trị v khoảng (1, n ) theo công thức: (1.2) Z = vt mod n Giả thiết f ( S , Z ) ≡ k t mod n (1.3) với f ( S , Z ) hàm S Z với k chọn ngẫu nhiên cho < k < n Cũng giả thiết phương trình kiểm tra lược đồ có dạng: Z f1 ( M , f ( S , Z )) ≡ S f ( M , f ( S , Z )) mod n Xét cho trường hợp cụ thể: f ( S , Z ) = S × R mod n đặt R = k t mod n Khi từ (1.1), (1.2) (1.3) ta có f ( S , Z ) = R , nên đưa phương trình kiểm tra dạng: Z f1 ( M ,R ) ≡ S f2 ( M ,R ) mod n (1.4) đây: f1 ( M , R) , f (M , R) hàm M R Vấn đề đặt cần tìm {u,v} cho {S,Z} thỏa mãn (1.3) (1.4) Từ (1.1), (1.2) (1.3) ta có: u × v mod n = k (1.5) Từ (1.1), (1.2) (1.4) ta có: v f1 ( M , R ) ≡ u f ( M , R ) mod n (1.6) Từ (1.6) suy ra: v = u f1 ( M ,R ) −1 f2 (M ,R ) (1.7) mod n Từ (1.5) (1.7) ta có: u × u f1 ( M , R ) −1 f ( M , R) mod n = k hay: u f1 ( M , R ) −1 f ( M , R ) +1 mod n = k dẫn đến: u = k [ f1 ( M , R ) −1 f ( M , R ) +1] −1 mod n (1.8) và: v = k [ f1 ( M , R ) −1 f ( M , R ) +1] −1 f1 ( M , R ) −1 f ( M , R ) mod n (1.9) Lưu Hồng Dũng, Hoàng Thị Mai, Nguyễn Hữu Mộng Từ (1.1) (1.8) ta có cơng thức tính thành phần thứ chữ ký: −1 S = k [ f1 ( M , R ) f ( M , R ) +1] −1 t mod n (1.10) Từ (1.2) (1.9), cơng thức tính thành phần thứ hai chữ ký có dạng: Z = k [ f1 ( M , R ) −1 f ( M , R ) +1] −1 f1 ( M , R ) −1 f ( M , R ).t mod n Cũng chọn v làm thành phần thứ hai chữ ký, cặp (v,S) chữ ký lên tin M phương trình kiểm tra có dạng: v f1 ( M , R ).t ≡ S f ( M , R ) mod n Từ phân tích thiết kế đây, khái qt phương pháp hình thành tham số, phương pháp hình thành kiểm tra chữ ký dạng lược đồ thứ Bảng 1.1, Bảng 1.2 Bảng 1.3 a) Phương pháp hình thành tham số Bảng 1.1: Input: p, q – số nguyên tố lớn Output: n, t, ø(n) [1] n ← p × q [2] φ (n) ← ( p − 1) × (q − 1) [3] select t: < t < φ (n) [4] return {n, t, ø(n)} Chú ý: i) {n, t}: tham số công khai ii) ø(n): tham số bí mật Nhận xét: Ở lược đồ đề xuất khơng sử dụng cặp khóa bí mật/cơng khai lược đồ chữ ký RSA, DSA, b) Phương pháp hình thành chữ ký Bảng 1.2: Input: n, t, ø(n), M – Bản tin ký đối tượng U Output: (v,s) [1] select k: < k < n [2] R ← k t mod n [3] if ( gcd(( f1 ( M , R ), φ (n)) ≠ OR gcd(( f1 ( M , R) −1 × f ( M , R) + 1), φ (n)) ≠ ) then goto [1] [4] u ← k [ f1 ( M , R) [6] v ← k [ f1 ( M , R) −1 −1 f ( M , R ) +1] −1 mod n f ( M , R) +1] −1 f1 ( M , R ) −1 f ( M , R) mod n [7] S ← u t mod n [8] return (v,S) Chú ý: U: đối tượng ký chủ thể tham số {n,t,ø(n)} Nhận xét: MỘT DẠNG LƯỢC ĐỒ CHỮ KÝ XÂY DỰNG TRÊN BÀI TỐN PHÂN TÍCH SƠ i) Thuật tốn khơng sử dụng khóa bí mật việc hình thành chữ ký lược đồ chữ ký RSA, DSA, ii) Tham số ø(n) sử dụng khóa bí mật để hình thành chữ ký (v,s) đối tượng U lên tin M c) Phương pháp kiểm tra chữ ký Bảng 1.3: Input: n, t, M – Bản tin cần thẩm tra, (v,s) – Chữ ký U lên M Output: (v,s) = true / false [1] A ← v f1 ( M , R ).t mod n (1.11) [2] B ← S f ( M , R ) mod n (1.12) [3] if ( A = B ) then {return true ;} else {return false ;} Chú ý: U: đối tượng chủ thể cặp tham số {n,t} i) ii) (v,s) = true: chữ ký hợp lệ, M khẳng định nguồn gốc tính tồn vẹn iii) (v,s) = false: chữ ký khơng hợp lệ, M không công nhận nguồn gốc tính tồn vẹn Nhận xét: Tham số {n,t} sử dụng khóa cơng khai đối tượng U để kiểm tra tính hợp lệ chữ ký (v,s) d) Tính đắn dạng lược đồ thứ Tính đắn dạng lược đồ thứ phù hợp phương pháp kiểm tra chữ ký với phương pháp hình thành tham số hệ thống phương pháp hình thành chữ ký Điều cần chứng minh là: cho p, q số nguyên 1< k < n , tố, φ (n) = ( p − 1) × ( q − 1) , R = k t mod n , n = p×q , gcd(( f1 ( M , R ), φ ( n )) = , < t < φ (n) , gcd(( f1 ( M , R) −1 f ( M , R) + 1),φ (n)) = , u = k [ f1 ( M , R ) −1 f ( M , R ) +1]−1 mod n , v = k [ f1 ( M ,R ) −1 f ( M , R )+1]−1 f1 ( M , R )−1 f ( M ,R ) mod n , S = u t mod n Nếu: A = v f1 ( M ,R ).t mod n , B = S f ( M , R ) mod n thì: A = B Có thể chứng minh tính đắn dạng lược đồ sau: Từ (1.9) (1.11) ta có: A = v f1 ( M , R ).t mod n = k [ f1 ( M , R) −1 f ( M , R ) +1] −1 f ( M , R ).t mod n (1.13) f ( M , R ) +1] −1 f ( M , R ).t mod n (1.14) Từ (1.10) (1.12) ta lại có: B = S f ( M , R ) mod n = k [ f1 ( M , R ) −1 Từ (1.13) (1.14) suy ra: A= B Đây điều cần chứng minh 2.2 Dạng lược đồ thứ hai Phương pháp phân tích thiết kế áp dụng dạng lược đồ thứ hai tương tự dạng lược đồ thứ Cũng giả sử S thành phần thứ chữ ký lên tin M S tính từ giá trị u khoảng theo công thức: S = g u mod n (2.1) đây: n = p × q , với p, q số nguyên tố phân biệt và: < g < n Thành phần thứ hai chữ ký giả sử Z tính từ giá trị v khoảng theo công thức: Lưu Hồng Dũng, Hoàng Thị Mai, Nguyễn Hữu Mộng (2.2) Z = g v mod n Giả thiết f ( S , Z ) ≡ g k mod n (2.3) với f ( S , Z ) hàm S Z với k chọn ngẫu nhiên cho < k < φ ( n ) Cũng giả thiết phương trình kiểm tra lược đồ có dạng: Z f ( M , f ( S , Z )) ≡ S f (M , f ( S , Z )) mod n Xét cho trường hợp cụ thể: f ( S , Z ) = S × R mod n đặt R = g k mod n Khi từ (2.1), (2.2) (2.3) ta có f ( S , Z ) = R , nên đưa phương trình kiểm tra dạng: Z f1 ( M ,R ) ≡ S f2 ( M ,R ) mod n (2.4) đây: f1 ( M , R) , f (M , R) hàm M R Vấn đề đặt cần tìm {u,v} cho {S,Z} thỏa mãn (2.3) (2.4) Từ (2.1), (2.2) (2.3) ta có: (u + v) mod φ (n) = k (2.5) Từ (2.1), (2.2) (2.4) ta có: (2.6) v × f1 ( M , R) ≡ u × f ( M , R ) mod φ (n) Từ (2.6) suy ra: (2.7) v = u × f1 ( M , R ) −1 × f ( M , R ) mod φ ( n) Từ (2.5) (2.7) ta có: u + u × f1 ( M , R)−1 × f (M , R) modφ (n) = k hay: u × ( f1 ( M , R)−1 × f ( M , R) + 1) modφ (n) = k dẫn đến: u = k ×[ f1 (M , R)−1 × f ( M , R) + 1]−1 modφ (n) (2.8) và: v = k × [ f1 (M , R) −1 × f (M , R) + 1]−1 × f1 ( M , R)−1 × f ( M , R) modφ (n) (2.9) Từ (2.1) (2.8) ta có cơng thức tính thành phần thứ chữ ký: S = g k [ f1 ( M , R ) −1 f ( M , R ) +1] −1 mod φ ( n ) mod n (2.10) Từ (2.2) (2.9), cơng thức tính thành phần thứ hai chữ ký có dạng: Z = g k [ f1 ( M , R ) −1 f ( M , R ) +1] −1 f1 ( M , R ) −1 f ( M , R ) mod φ ( n ) mod n Cũng chọn v làm thành phần thứ hai chữ ký, cặp (v,S) chữ ký lên tin M phương trình kiểm tra có dạng: g v f1 ( M , R) ≡ S f ( M , R ) mod n Từ phân tích thiết kế đây, khái quát phương pháp hình thành tham số, phương pháp hình thành kiểm tra chữ ký dạng lược đồ thứ hai Bảng 2.1, Bảng 2.2 Bảng 2.3 a) Phương pháp hình thành tham số Bảng 2.1: Input: p, q – số nguyên tố lớn Output: n, g, ø(n) [1] n ← p × q MỘT DẠNG LƯỢC ĐỒ CHỮ KÝ XÂY DỰNG TRÊN BÀI TỐN PHÂN TÍCH SƠ [2] φ (n) ← ( p − 1) × (q − 1) [3] select g: < g < n [4] return {n, g, ø(n)} Chú ý: i) {n, g}: tham số cơng khai ii) ø(n): tham số bí mật Nhận xét: Ở lược đồ đề xuất không sử dụng cặp khóa bí mật/cơng khai lược đồ chữ ký RSA, DSA, b) Phương pháp hình thành chữ ký Bảng 2.2: Input: n, g, ø(n), M – Bản tin ký đối tượng U Output: (v,s) [1] select k: < k < φ ( n ) [2] R ← g k mod n [3] if ( gcd(( f1 ( M , R ), φ ( n)) ≠ OR gcd(( f1 ( M , R ) −1 f ( M , R ) + 1), φ (n)) ≠ ) then goto [1] [4] u ← k [ f1 ( M , R) −1 f (M , R) + 1]−1 modφ (n) [5] v ← k.[ f1(M , R)−1 f (M , R) + 1]−1 f1 (M , R)−1 f (M , R) modφ (n) [6] S ← g u mod n [7] return (v,S) Chú ý: U: đối tượng ký chủ thể tham số {n,g,ø(n)} Nhận xét: i) Thuật tốn khơng sử dụng khóa bí mật việc hình thành chữ ký lược đồ chữ ký RSA, DSA, ii) Tham số ø(n) sử dụng khóa bí mật để hình thành chữ ký (v,s) đối tượng U lên tin M c) Phương pháp kiểm tra chữ ký Bảng 2.3: Input: n, g, M – Bản tin cần thẩm tra, (v,s) – Chữ ký U lên M Output: (v,s) = true / false [1] A ← g v f1 ( M , R ) mod n (2.11) [2] B ← S f ( M , R ) mod n (2.12) [3] if ( A = B ) then {return true ;} else {return false ;} Chú ý: i) U: đối tượng chủ thể cặp tham số {n,g} Lưu Hồng Dũng, Hoàng Thị Mai, Nguyễn Hữu Mộng ii) (v,s) = true: chữ ký hợp lệ, M khẳng định nguồn gốc tính tồn vẹn iii) (v,s) = false: chữ ký không hợp lệ, M khơng cơng nhận nguồn gốc tính tồn vẹn Nhận xét: Tham số {n,g} sử dụng khóa cơng khai đối tượng U để kiểm tra tính hợp lệ chữ ký (v,s) d) Tính đắn dạng lược đồ thứ hai Điều cần chứng minh là: cho p, q số nguyên tố, n = p × q , φ (n) = ( p − 1) × ( q − 1) , < g < n , < k < φ ( n) , R = g k mod n , gcd(( f1 ( M , R ),φ ( n )) = , gcd(( f1 ( M , R ) −1 f ( M , R) + 1),φ ( n)) = , u = k [ f1 ( M , R) −1 f (M , R) + 1]−1 modφ (n) , v = k.[ f1 ( M , R) −1 f ( M , R) + 1]−1 f1 ( M , R) −1 f ( M , R) mod φ (n) , S = g u mod n Nếu: A = g v f1 ( M , R ) mod n , B = S f ( M , R ) mod n thì: A = B Tính đắn dạng lược đồ thứ hai chứng minh sau: Từ (2.9) (2.11) ta có: A = g v f1 ( M , R ) mod n = g k [ f1 ( M , R ) =g −1 f ( M , R ) +1] −1 f1 ( M , R ) −1 f ( M , R ) f1 ( M , R ) k [ f1 ( M , R ) −1 f ( M , R ) +1] −1 f ( M , R ) mod n (2.13) mod n Từ (2.10) (2.12) ta lại có: B = S f ( M , R ) mod n = g u f ( M , R ) mod n = g k [ f1 ( M , R) −1 f ( M , R ) +1] −1 f ( M , R ) mod n (2.14) Từ (2.13) (2.14) suy ra: A= B Đây điều cần chứng minh 2.3 Một số lược đồ chữ ký số phát triển từ lược đồ dạng tổng quát Bằng việc lựa chọn hàm f1 ( M , R) f ( M , R) khác nhau, từ dạng tổng quát đề xuất đây, triển khai số lược đồ chữ ký số sau a) Lược đồ thứ LD-01 Lược đồ LD-01 phát triển từ dạng tổng quát thứ với lựa chọn: f1 ( M , R ) = f ( M , R) = H ( M ) × R , H(.) hàm băm H(M) giá trị đại diện tin ký M Các thuật tốn hình thành tham số, hình thành kiểm tra chữ ký mô tả Bảng 3.1, Bảng 3.2 Bảng 3.3 a) Thuật toán hình thành tham số Bảng 3.1: Input: p, q – số nguyên tố lớn Output: n, t, H(.),ø(n) [1] n ← p × q [2] φ (n) ← ( p − 1) × (q − 1) [3] select H : {0,1}∗ a Z m , m < n [4] select t: < t < φ (n) [5] return {n, t, H(.),ø(n)} Chú ý: i) n, t, H(.): tham số công khai 8 MỘT DẠNG LƯỢC ĐỒ CHỮ KÝ XÂY DỰNG TRÊN BÀI TỐN PHÂN TÍCH SƠ ii) ø(n): tham số bí mật b) Thuật tốn hình thành chữ ký Bảng 3.2: Input: n, t, ø(n), M – Bản tin ký đối tượng U Output: (v,S) – chữ ký U lên M [1] E ← H (M ) [2] select k: < k < n [3] R ← k t mod n [4] if gcd(( E × R + 1), φ ( n )) ≠ then goto [2] (3.1) [5] w1 ← ( E × R + 1) −1 mod φ ( n) (3.2) [6] u ← k mod n [7] w2 ← E × R mod φ ( n ) (3.3) (3.4) [8] v ← u w2 mod n (3.5) w1 t [9] S ← u mod n [10] return (v,S) Chú ý: (3.6) U: đối tượng ký chủ thể tham số {n,t,ø(n)} Nhận xét: Tham số ø(n) sử dụng khóa bí mật để hình thành chữ ký (v,S) đối tượng U lên tin M c) Thuật toán kiểm tra chữ ký Bảng 3.3: Input: n, t, M – Bản tin cần thẩm tra, (v,S) – Chữ ký U lên M Output: (v,S) = true / false [1] E ← H (M ) (3.7) [2] A ← v t mod n [3] Z ← S × A mod n [4] w ← E × Z [5] B ← S w mod n [6] if ( A = B ) then {return true } else {return false } Chú ý: i) U: đối tượng chủ thể cặp tham số {n,t} (3.8) (3.9) (3.10) (3.11) ii) (v,S) = true: chữ ký hợp lệ, M khẳng định nguồn gốc tính tồn vẹn iii) (v,S) = false: chữ ký khơng hợp lệ, M không công nhận nguồn gốc tính tồn vẹn Nhận xét: Tham số {n,t} sử dụng khóa cơng khai U để kiểm tra tính hợp lệ chữ ký (v,S) d) Tính đắn lược đồ LD-01 Điều cần chứng minh là: Cho p, q số nguyên tố phân biệt, n = p × q , φ (n) = ( p − 1) × (q − 1) , H : {0,1}∗ a Z m , m