Bài viết đề xuất một hệ mật khóa công khai xây dựng dựa trên tính khó của việc giải đồng thời 2 bài toán phân tích một số nguyên lớn ra các thừa số nguyên tố với bài toán logarit rời rạc trên Zp hoặc bài toán khai căn trên Zn.
Hội thảo lần thứ III: Một số vấn đề chọn lọc an tồn an ninh thơng tin – Đà Nẵng, 07/12/2018 Hệ mật khóa cơng khai dựa tính khó việc giải đồng thời tốn phân tích số logarit rời rạc/khai A Public – Key Cryptosystem Based on Difficulty of Simultaneous Solving Two Factorization and Discrete Logarithm/Root Problems Lưu Hồng Dũng Khoa CNTT Học Viện KTQS Hà Nội, Việt Nam e-mail: luuhongdung@gmail.com Abstract— Bài báo đề xuất hệ mật khóa cơng khai xây dựng dựa tính khó việc giải đồng thời tốn phân tích số ngun lớn thừa số nguyên tố với toán logarit rời rạc Zp toán khai Zn Vì thế, thuật tốn mật mã chữ ký hệ mật đề xuất đáp ứng yêu cầu độ an toàn cao ứng dụng thực tế Keywords: Digital Signature Algorithm, Public – Key Cryptography Algorithm, Key Exchange Protocol, Public – Key CryptoSystem, Discrete Logarithm Problem, Integer Factoring Problem I ĐẶT VẤN ĐỀ Nâng cao độ an toàn cho thuật tốn mật mã khóa cơng khai chữ ký số dựa tính khó việc giải đồng thời tốn khó hướng tiếp cận nhận nhiều quan tâm nhà nghiên cứu [1–8] Trong [9–22] nhóm tác giả đề xuất số thuật tốn mật mã khóa cơng khai chữ ký số xây dựng tốn phân tích số, khai logarit rời rạc Trong báo này, với mục đích nâng cao độ an tồn cho thuật tốn trước số dạng cơng thực tế, nhóm tác giả tiếp tục đề xuất hệ mật khóa cơng khai phát triển từ kết trước [9–19] dựa tính khó việc giải đồng thời tốn phân tích số nguyên lớn thừa số nguyên tố (bài toán phân tích số) với tốn logarit rời rạc Zp , với p số nguyên tố (bài toán logarit rời rạc Zp) toán khai vành Zn, đây: n = p × q , với p q số nguyên tố (bài toán Nguyễn Vĩnh Thái Viện CNTT Viện KH CN QS Hà Nội, Việt Nam e-mail: nguyenvinhthai@gmail.com khai Zn) Hệ mật đề xuất bao gồm thuật tốn mật mã khóa cơng khai, thuật tốn chữ ký số, thuật tốn mã hóa – xác thực giao thức trao đổi khóa cho hệ mật khóa đối xứng, thuật tốn hệ mật thiết kế để thực thể cuối (người sử dụng) hệ thống sử dụng chung tham số (tham số miền) nhà cung cấp dịch vụ chứng thực số tạo II XÂY DỰNG HỆ MẬT KHĨA CƠNG KHAI DỰA TRÊN BÀI TỐN KHĨ A Một số tốn khó ứng dụng mật mã 1) Bài tốn phân tích số Bài tốn phân tích số phát biểu sau: Cho số n ∈ N , tìm biểu diễn: e e n = p1e p2e pi pk , với: ei ≥ pi số nguyên tố i k Một trường hợp riêng tốn phân tích số ứng dụng để xây dựng hệ mật RSA [23] mà n tích hai số ngun tố p q Khi đó, tốn phân tích số hay cịn gọi tốn phân tích số hay cịn gọi tốn IFP(n) phát biểu sau: Bài toán IFP(n): Với số nguyên dương n, tìm số nguyên tố p q thỏa mãn phương trình sau: p × q = n Giải thuật cho tốn IFP(n) viết thuật tốn tính hàm IFP(.) với biến đầu vào Hội thảo lần thứ III: Một số vấn đề chọn lọc an tồn an ninh thơng tin – Đà Nẵng, 07/12/2018 n, giá trị hàm p q phương trình sau: p = IFP(n ) hoặc: q = IFP (n ) Trong hệ mật RSA, tốn phân tích số sử dụng việc hình thành cặp khóa cơng khai/bí mật cho thực thể ký Với việc giữ bí mật tham số (p, q) việc tính khóa bí mật (d) từ khóa cơng khai (e) modulo n tốn khó p, q chọn đủ lớn mạnh Hiện toán coi tốn khó chưa có giải thuật thời gian đa thức hay đa thức xác suất cho hệ mật RSA minh chứng thực tế cho tính khó giải tốn Trong thực tế, tham số p, q chọn theo FIPS 186 – [24] Hoa Kỳ cho hệ mật RSA 2) Bài toán khai Zn Cho cặp số nguyên dương (n,e) với n tích số nguyên tố p q cho toán phân tích số khó giải Zn, cịn e giá trị thỏa mãn: và: gcd( e,ϕ ( n)) = , đây: < e < ϕ ( n) ϕ ( n) = ( p − 1).(q − 1) Khi đó, tốn khai Zn hay gọi RSAP(n,e) phát biểu sau: Bài toán RSAP(n,e): Với số nguyên dương y ∈ Z n∗ , tìm x thỏa mãn phương trình sau: x e mod n = y Giải thuật cho tốn RSAP(n,e) viết thuật tốn tính hàm RSAP(n,e)(.) với biến đầu vào y, giá trị hàm x phương trình sau: g x mod p = y Giải thuật cho tốn DLP(p,g) viết thuật tốn tính hàm DLP(p,g)(.) với biến đầu vào y, cịn giá trị hàm x phương trình sau: x = DLP( p, g ) ( y ) Bài toán DLP(p,g) sở để xây dựng nên hệ mật ElGamal [25] Hiện chưa có giải thuật hiệu (thời gian đa thức hay đa thức xác suất) cho DLP(p,g) độ an tồn thuật tốn DSA chuẩn chữ ký số DSS Hoa Kỳ [23] minh chứng thực tế cho tính khó giải toán B Xây dựng hệ mật khóa cơng khai dựa tính khó việc giải tốn phân tích số logarit rời rạc/khai 1) Thuật tốn hình thành tham số khóa Các tham số hệ thống hay tham số miền nhà cung cấp dịch vụ chứng thực số hình thành thuật tốn sau: Thuật tốn 1.1: Hình thành tham số hệ thống Input: lp, lq – độ dài (tính theo bit) số nguyên tố p, q Output: p, q, g [1] Chọn cặp số p, q nguyên tố với: len(p) = lp, len(q)= lq cho: q|(p – 1) [2] Chọn g phần tử sinh nhóm Zp* theo: x = RSAP( n ,e ) ( y ) Bài toán RSAP(n,e) sở quan trọng để xây dựng nên hệ mật RSA Ở hệ mật RSA giải RSAP(n,e), kẻ thám mã tìm rõ (M) từ mã (C) tham số công khai (n,e), dễ dàng tạo chữ ký giả mạo (S) cho tin (M) mà không cần biết khóa bí mật (d) đối tượng ký (bị mạo danh) Tuy nhiên, chưa có giải thuật thời gian đa thức cho toán việc cơng hệ mật RSA việc giải RSAP(n,e) chưa khả thi 3) Bài toán logarit rời rạc Zp Cho cặp số nguyên dương (p,g) với p số nguyên tố, g phần tử nhóm Zp* Khi đó, tốn logarit rời rạc Zp hay gọi toán DLP(p,g) phát biểu sau: Bài toán DLP(p,g): Với số nguyên dương y ∈ Z ∗p , tìm x thỏa mãn phương trình sau: g =α p −1 q mod p , với: α ∈ (1, p ) Chú thích: + len(.): hàm tính độ dài (theo bit) số Mỗi thực thể cuối/người sử dụng hệ thống hình thành khóa thuật tốn sau: Thuật tốn 1.2: Hình thành khóa Input: p, q , g, lp1 lq1 - độ dài (tính theo bit) số nguyên tố p1 q1 Output: x1, x2, φ(n), y [1] Chọn cặp số p1, q1 số nguyên tố với: len(p1) = lp1, len(q1)= lq1 [2] Tính: n = p1 q1 , nếu: n ≤ p thực lại từ bước [1] Hội thảo lần thứ III: Một số vấn đề chọn lọc an toàn an ninh thơng tin – Đà Nẵng, 07/12/2018 [3] Tính: φ(n) = (p1 – 1).( q1 – 1) [1] Người nhận sử dụng khóa bí mật thứ hai để tính [4] Chọn khóa bí mật thứ x1 khoảng (1, q) y=g [2] Người nhận sử dụng khóa bí mật thứ để giải mã tin nhận được: x (2.5) m = C × (R ) 1B mod nB [3] Chuyển giá trị m thành tin M (1.1) mod p nếu: hoặc: y ≥ ϕ (n) gcd( y, ϕ (n)) ≠ thực lại từ bước [4] Kiểm tra [6] Tính khóa bí mật thứ hai theo: −1 b) Tính đắn thuật toán (1.2) x2 = y mod ϕ ( n ) ∗ [7] Chọn hash function H: {0,1} → Z h , với: x1B chọn ngẫu nhiên khoảng (1, q ) , ( x2 B , y B ) tính theo (1.1) (1.2) sau: −1 mod p, x2 B = ( y B ) mod ϕ (n B ) (2.1) a) Thuật tốn mã hóa giải mã Thuật tốn 2.1: Thuật tốn mã hóa Input: p, q , g, nB , yB, M Output: C,R [1] Biểu diễn tin cần mã hóa M thành giá trị m tương ứng khoảng [0, p – 1], chọn ngẫu nhiên giá trị k khoảng (1,q) tính thành phần thứ mã: k (2.2) C = m × ( y B ) mod p [2] Tính thành phần thứ mã: y k (2.3) R = (g ) mod p mod n B [3] Gửi mã (C,R) cho B ) B Thuật toán 2.2: Thuật toán giải mã Input: p, q , g, x1B , x2B, nB , yB, (C,R) Output: M n> p, < α < p , g = α ( p −1) / q mod p , −1 mod p , x2 B = ( y B ) mod ϕ ( nB ) , − x1 B ≤ M ≤ p − , C = M × ( y B )k mod p , R = (g k mod p ) mod n B yB Thuật toán mật mã đề xuất bao gồm thuật toán mã hóa (Thuật tốn 2.1) giải mã (Thuật tốn 2.2), với tham số hệ thống hình thành theo Thuật tốn 1.1 khóa hình thành theo Thuật tốn 1.2 Giả thiết người gửi/mã hóa A, người nhận/giải mã B B có cặp khóa bí mật/cơng khai tương ứng ( x1B , x2 B , y B ) , đó: ( n = p1 × q1 , 1< k < q , 2) Thuật tốn mật mã khóa cơng khai y B = (g ) Điều cần chứng minh là: Cho p, q, p1, q1 số nguyên tố thỏa mãn: q | ( p − 1) , < x1B < q , y B = g | q |≤| h |< p − x1 B (2.4) x R = (R ) B mod n B [5] Tính khóa cơng khai theo: − x1 R theo: Nếu: R = (R )x mod nB , M = C × (R )x1 B mod p , thì: M = M 2B Chứng minh: Thật vậy, từ (2.3) (2.4) ta có: (R ) x1 B = mod p = ( (R ) yB mod n B (( = g k mod p (( ) = (g mod p ) = g k mod p ) x2 B mod n B mod n B y B x2 B x1 B k yB ) ) x2 B mod n B ) ) x1 B mod p mod n B x1 B (2.6) x1 B mod p mod p mod p = g k x1 B mod p Nên từ (2.1), (2.2), (2.5) (2.6) ta có điều cần chứng minh: M = C × (R ) B mod p x ( ) ( k ) = M × g − x1 B mod p × g k x1B mod p mod p =M ×g − k x1 B ×g x1 B mod p = M c) Mức độ an toàn thuật tốn + Tấn cơng khóa bí mật Ở thuật tốn đề xuất, khóa bí mật cặp (x1,x2), tính an toàn lược đồ bị phá vỡ cặp khóa tính hay đối tượng khơng mong muốn Từ Thuật tốn 1.2 cho thấy, để tìm x2 cần phải tính tham số φ(n), nghĩa phải giải IFP(n), để tính x1 cần phải giải DLP(p,g) Như vậy, để tìm cặp khóa bí mật kẻ công cần phải Hội thảo lần thứ III: Một số vấn đề chọn lọc an toàn an ninh thông tin – Đà Nẵng, 07/12/2018 giải tốn IFP(n) DLP Nói cách khác, độ an tồn khóa thuật tốn đảm bảo độ khó việc giải đồng thời tốn IFP(n) DLP(p,g) + Tấn công thám mã tin Để giải mã tin thực cơng vào thuật tốn mã hóa giải mã sau: - Tấn cơng thuật tốn mã hóa Từ (2.2) giải mã tin tính k sau: m = C.( y B )− k mod p Để tính k từ (2.3) cần phải giải tốn khai RSAP(n,e) để tìm: X = RSAP( n , y ) (R ) giải tốn phân tích số để B a) Thuật tốn ký kiểm tra chữ ký Thuật toán 3.1: Sinh chữ ký Input: p, q, g, φ(n), x1, x2, M – tin cần ký Output: (E,S) – chữ ký [1] Chọn ngẫu nhiên giá trị k khoảng (1, q) (3.2) [2] Tính giá trị: R = g k mod p [3] Tính thành phần thứ chữ ký theo: E = H (M || R) mod q (3.3) [4] Tính thành phần thứ chữ ký theo: S = x2 × ((k + x1 × E ) mod q ) mod φ (n) (3.4) Chú thích: + Toán tử “||” phép nối xâu bit B tìm x2 B tìm X: X = (R )x mod nB Sau phải giải tiếp tốn logarit rời rạc DLP(p,g) để tìm: k = DLP( p, g ) ( X ) 2B Như vậy, để giải mã tin cách công trực tiếp vào thuật tốn mã hóa, kẻ cơng cần phải giải đồng thời hai toán RSAP(n,e) DLP(p,g) Như vậy, độ an tồn thuật tốn trước dạng cơng định độ khó việc giải đồng thời toán: toán khai Zn toán logarit rời rạc Zp, hoặc: toán phân tích số tốn logarit rời rạc Zp - Tấn cơng thuật tốn giải mã Để giải mã tin cách cơng vào thuật tốn giải mã, kẻ cơng cần phải tính khóa bí mật người nhận B, nghĩa phải giải đồng thời hai toán IFP(n) DLP(p,g) Như vậy, độ an tồn thuật tốn trước dạng cơng định độ khó việc giải đồng thời tốn phân tích số toán logarit rời rạc Zp 3) Thuật toán chữ ký số Thuật toán chữ ký số đề xuất bao gồm thuật toán ký (Thuật toán 3.1) kiểm tra (Thuật toán 3.2), với tham số hệ thống hình thành theo Thuật tốn 1.1 khóa hình thành theo Thuật tốn 1.2 Giả thiết người ký có cặp khóa khóa bí mật/công khai tương ứng ( x1 , x2 , y) , đó: x1 chọn ngẫu nhiên khoảng (1, q ) , ( x2 , y ) tính theo (1.1) (1.2) sau: −x y = ( g ) mod p −1 x2 = ( y ) mod ϕ (n) (3.1) Thuật toán 3.2: Kiểm tra chữ ký Input: p, q, g, y, n, M – tin cần thẩm tra Output: (E,S) = true/false [1] Tính giá trị: y E (3.5) R = (g S ) mod n × ( y ) mod p [2] Tính giá trị: (3.6) E = H (M || R ) mod q ( ) [3] Nếu: E = E thì: (E,S) = true, ngược lại: (E,S) = false Chú thích: + (E,S) = true: chữ ký hợp lệ, tin M xác thực nguồn gốc tính tồn vẹn + (E,S) = false: chữ ký hoặc/và tin bị giả mạo b) Tính đắn thuật toán Điều cần chứng minh là: Cho p, q, p1, q1 số nguyên tố thỏa mãn: q | ( p − 1) , n = p1 × q1 , n > p , < α < p , g = α ( p −1) / q mod p , < x1 < q , −1 y = g − x mod p , x = ( y ) mod ϕ (n) , < k < q , với: | q |≤| h | p, < α < p , g = α ( p −1) / q mod p , < x1 A , x1B < q , y A = g − x1 A mod p , y B = g − x mod p , −1 −1 x2 A = ( y A ) mod ϕ ( n A ) , x2 B = ( y B ) mod ϕ ( nB ) , < k < q , ≤ M ≤ p −1 , R = g k mod p , 1B ( k C = M × ( y B ) mod p ) yB ∗ mod nB , H : {0,1} a Z h với: , , E = H (M || R) mod q Nếu: S = x2 A × ((k + x1 A × E ) mod q ) mod φ ( n A ) x C = (C ) B mod n B , ( R = gS ) ) E mod n A × ( y A ) mod p , yA mod p , E = H ( M || R ) mod q thì: E = E M = C × (R ) [1] Biểu diễn tin cần mã hóa M thành giá trị m tương ứng khoảng [0,p–1], chọn ngẫu nhiên giá trị k khoảng (1,q) tính thành phần thứ mã: y k (4.2) C = m × ( y B ) mod p mod nB k [2] Tính giá trị: R = g mod p (4.3) 2B R = gS x1 B Output: C,E,S C theo: C = (C )x mod nB (4.6) [2] Tính giá trị: | q |≤| h | p, g = α ( p −1) / q mod p , α ∈ Z *p , H : {0,1}∗ a Z h với: | q |≤| h |