Xây dựng giao thức xác lập khóa cho các hệ mật mã khóa bí mật
Phương pháp xác lập khóa cho các hệ mật mã
khóa bí mật được đề xuất đầu tiên bởi W. Diffie và
M. Hellman vào năm 1976 và được gọi là giao
thức trao thỏa thuận Diffie-Hellman (DiffieHellman Key Agreement Protocol) (gọi tắt là
phương pháp Diffie-Hellman), sau đó đã mở ra
một lĩnh vực mới về khoa học mật mã: mật mã
khóa công khai. Hiện tại nó vẫn được sử dụng rất
phổ biến với nhiều biến thể khác nhau. Nhược
điểm cơ bản của phương pháp Diffie-Hellman là
không có cơ chế xác thực các đối tượng tham gia
truyền thông vì thế phương pháp này không có khả
năng chống lại một số dạng tấn công giả mạo trong
thực tế. Một số phương pháp đã được phát triển
sau đó như ECDH (Elliptic Curve Diffie-Hellman
Key Exchange), MQV (Menezes-Qu-Vanstone
Protocol), ECMQV (Elliptic Curve Menezes-QuVanstone Protocol). đã được ứng dụng phổ biến
trong thực tế. Tuy nhiên, việc phát triển các
phương pháp mới để ứng dụng trong thực tế vẫn
luôn là yêu cầu cần thiết được đặt ra.
Bài báo đề xuất 2 phương pháp cho phép bảo
đảm đồng thời việc thiết lập khóa cho các hệ mật
mã khóa bí mật và xác thực các đối tượng tham gia
truyền thông, vì thế sẽ chống được các kiểu tấn
công giả mạo trong thực tế.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Tóm tắt nội dung tài liệu: Xây dựng giao thức xác lập khóa cho các hệ mật mã khóa bí mật
ành khóa mã hóa theo khóa công khai ở Mục 1. Giả sử đối tượng gửi/mã công thức: hóa thông tin ký hiệu là A có khóa riêng là xA, k A x A K A = (RB ) × (yB ) mod p khóa công khai tương ứng của A là yA; Đối tượng 2- Đối tượng B hình thành khóa giải mã theo nhận/giải mã thông tin ký hiệu là B có khóa riêng công thức: là xB và khóa công khai là yB. Các đối tượng A và K = R kB × y xB mod p B thống nhất sử dụng một thuật toán mật mã khóa B ( A ) ( A ) bí mật (ví dụ: DES, AES,...) để mã hóa thông tin 2.2 Tính đúng đắn của thuật toán mới đề xuất (bản tin, thông báo, tài liệu,...) cần trao đổi với Điều cần chứng minh ở đây là: cho p là số nhau, khi đó phương pháp để thiết lập một khóa bí ∗ nguyên tố, g là phần tử sinh của nhóm Z p , mật chung cho phép A mã hóa thông tin và B giải 1 < x , x < p , y = ()g xA mod p , mã thông tin, bao gồm các bước thực hiện như sau: A B A xB Bước 1: yB = (g) mod p , 1 < k A < p , + Đối tượng A thực hiện các bước: k A RA = (g) mod p , 1 < kB < p , 1- Chọn ngẫu nhiên một giá trị kA thỏa mãn: k B RB = (g) mod p . Nếu: 1 < k A < p . k A x A K A = (RB ) × (yB ) mod p , 2- Hình thành thông tin thỏa thuận khóa RA kB xB theo công thức: KB = (RA ) × (yA ) mod p thì: K A = K B . k A RA = ()g mod p Chứng minh: Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-1, Số 7 (27), tháng 5/201x Thật vậy, do: và: k x K = R A × y A mod p xB A ()B (B ) yB = (g) mod p (4) k k A x x A = ()g B mod p × (g B mod p)mod p Việc giải (1) và (2) hay (3) và (4) thực chất là = g k A .k B × g x A .xB mod p giải bài toán logarit rời rạc trong trường hữu hạn ∗ Mặt khác, do: nguyên tố Z p . k B xB KB = ()RA × (yA )mod p Như vậy, khả năng chống tấn công làm lộ khóa k k B x xB bí mật dùng chung của thuật toán mới đề xuất phụ = ()g A mod p × (g A mod p)mod p thuộc vào mức độ khó của bài toán logarit rời rạc. = g k A .k B × g x A .xB mod p b) Khả năng chống giả mạo về nguồn gốc khóa Từ đây suy ra: K A = K B . bí mật Đây là điều cần chứng minh. Để mạo danh A, kẻ giả mạo cần phải tính được 2.3 Mức độ an toàn của thuật toán mới đề xuất khóa riêng (xA) của A. Việc tính xA có thể thực Mức độ an toàn của thuật toán mới đề xuất được hiện bằng cách giải (2). Tương tự, cũng có thể đánh giá qua các khả năng như sau: mạo danh B nếu tính được xB nhờ việc giải (4). Như đã chỉ ra, việc giải (2) và (4) thực chất là giải a) Chống tấn công làm lộ khóa bí mật bài toán logarit rời rạc. k A x A Những phân tích trên cho thấy khả năng chống Từ: K A = ()RB × (yB )mod p giả mạo nguồn gốc của khóa bí mật dùng chung k B xB và: KB = ()RA × (yA )mod p cho thấy, có phụ thuộc vào mức độ khó của bài toán logarit rời thể tính được khóa bí mật dùng chung cho các bên rạc. tham gia truyền thông nếu biết được k và x hoặc: A A c) Tính bí mật về phía trước đối với A kB và xB. Các giá trị này có thể tính được nhờ việc Việc biết khóa riêng dài hạn của A sau một quá giải: trình thỏa thuận khóa không cho phép kẻ tấn công R = g k A mod p (1) A () tính lại được các khóa bí mật dùng chung do thuật và: toán tạo đã ra trước đó. x A d) Tính bí mật về phía trước riêng biệt đối với yA = ()g mod p (2) cả A và B Hoặc: Nếu biết khóa riêng dài hạn của A hoặc biết R = ()g k B mod p (3) B khóa riêng dài hạn của B sau một quá trình thỏa Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-1, Số x (2x), tháng x/201x thuận khóa, kẻ tấn công cũng không thể tính lại k B x A RB = (g) mod p và SB = ()yB mod p rồi được các khóa bí mật dùng chung do thuật toán tạo gửi cho C. đã ra trước đó. 3- C chọn một giá trị kC thỏa mãn: 1< kC < p và e) Tính bí mật về phía trước tương hỗ tính giá trị R và S theo công thức: Khi biết cả khóa riêng dài hạn của A và B sau C C kC xC một quá trình thỏa thuận khóa thì kẻ tấn công cũng RC = (g) mod p và SC = ()yB mod p không thể tính lại được các khóa bí mật dùng rồi gửi cho A. chung do thuật toán tạo đã ra trước đó. Bước 2: 2.4 Thuật toán thỏa thuận khóa mở rộng 1- A tính giá trị RAC theo công thức: Thuật toán thỏa thuận khóa mở rộng (thuật toán k A RAC = (RC ) mod p , rồi gửi cho B. mở rộng) được đề xuất cho các trường hợp mà ở 2- B tính giá trị RB theo công thức: đó có số đối tượng tham gia thỏa thuận khóa lớn R = (R )k B mod p , rồi gửi cho C. hơn 2. Xét trường hợp số đối tượng là 3, với các AB A trường hợp có số đối tượng tham gia thỏa thuận 3- C tính giá trị RBC theo công thức: kC khóa lớn hơn 3 cũng có thể thực hiện hoàn toàn RBC = (RB ) mod p , rồi gửi cho A. tương tự giá sử các đối tượng cần thỏa thuận khóa Bước 3: bí mật chung là A, B và C, các đối tượng này có 1- A tính khóa bí mật KA theo công thức: khóa riêng tương ứng là xA, xB, xC và các khóa k A x A K A = (RBC ) × (SC ) mod p công khai tương ứng là yA, yB, yC. Các đối tượng 2- B tính khóa bí mật KB theo công thức: thỏa thuận một khóa bí mật chung qua các bước K = R k B × S xB mod p như sau: B ( AC ) ( A ) Bước 1: 3- C tính khóa bí mật KC theo công thức: kC xC 1- A chọn một giá trị kA thỏa mãn: 1 < k A < p và KC = (RAB ) × (SB ) mod p tính giá trị RA và SA theo công thức: Tính đúng đắn của thuật toán thỏa thuận khóa mở k A x A rộng được đề xuất có thể chứng minh như sau: RA = ()g mod p và SA = ()yC mod p rồi Điều cần chứng minh ở đây là: gửi cho B. K A = K B = KC . 2- B chọn một giá trị kB thỏa mãn: 1 < k B < p và Thật vậy, ta có: tính giá trị RB và SB theo công thức: Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-1, Số 7 (27), tháng 5/201x k A x A mình theo Thuật toán hình thành các tham số hệ K A = ()RBC × (SC )mod p k A x A thống và khóa công khai ở Mục 1. Giả sử đối = ()()R kC mod p × ()()y xC mod p mod p B B k .k x .x tượng A có khóa riêng là xA, khóa công khai tương = ()g k B mod p A C × (g xB mod p)a C mod p ứng của A là yA; Đối tượng B có khóa riêng là xB = ()g k A .k B .kC × ()g x A .xB .xC mod p và khóa công khai là yB. Giả sử rằng, đối tượng A Tương tự, ta cũng có: chọn khóa bí mật cho việc mã hóa và giải mã thông k B xB KB = ()(RAC × SA )mod p tin là K, với: 1 < K < p và gửi cho đối tượng B, k k B x xB = ()()R A mod p × ()()y A mod p mod p quá trình thực hiện bao gồm các bước như sau: C C k .k x .x .x = ()g kC mod p A B × (g xC mod p)A B C mod p Bước 1: = ()g k A .k B .kC mod p Đối tượng B thực hiện: 1- Chọn ngẫu nhiên một giá trị k thỏa mãn: Và: B kC xC 1 < k B < p . KC = ()RAB × (SB )mod p k x 2- Tính giá tri RB theo công thức: k B C xB C = ()()RA mod p × ()()yA mod p mod p k B k .k x .x R = (g) mod p = ()g k A mod p B C × (g x A mod p)B C mod p B 3- Gửi giá trị R cho đối tượng A. = ()g k A .k B .kC × ()g x A .xB .xC mod p B Bước 2: Từ đây suy ra: K = K = K . A B C Đối tượng A thực hiện: Mức độ an toàn của thuật toán mở rộng có thể 1- Chọn ngẫu nhiên một giá trị kA thỏa mãn: phân tích đánh giá tương tự như với thuật toán thỏa 1 < k A < p . thuận khóa đã đề xuất ở Mục 2.3. 2- Tính giá trị C theo công thức: 3. Thuật toán chuyển khóa C = K × (R )(kA × y )xA mod p 3.1 Mô tả thuật toán B B 3- Tính giá trị R theo công thức: Ở đây cũng giả thiết rằng, các đối tượng tham k gia trao đổi thông tin A và B cùng thống nhất sử R = (g) A mod p dụng một thuật toán mật mã khóa bí mật (ví dụ: 4- Gửi bản mã (C,R) cho đối tượng B. DES, AES,...) để mã hóa thông tin (bản tin, thông Bước 3: báo, tài liệu,...) cần trao đổi với nhau. Các đối Từ bản mã (C,R) nhận được, đối tượng B thực tượng A và B lựa chọn các tham số dùng chung p hiện việc giải mã (C,R) để nhận khóa bí mật (K) và g, chọn khóa riêng và tính khóa công khai của theo công thức sau: Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-1, Số x (2x), tháng x/201x K = C × ()R −kB × (y )− xB mod p mức độ an toàn của thuật toán chuyển khóa mới đề A xuất cũng được đánh giá qua các khả năng như 3.2 Tính đúng đắn của thuật toán mới đề xuất sau: Điều cần chứng minh ở đây là: cho p là số a) Chống tấn công làm lộ khóa bí mật ∗ k A x A nguyên tố, g là phần tử sinh của nhóm Z p , Từ: C = K × (RB )(× yB )mod p xA −k B − xB 1 < x A , xB < p , y A = ()g mod p , và: K = C × (R)(× yA )mod p cho xB thấy, có thể tính được khóa bí mật dùng chung cho yB = ()g mod p , 1 < k A , k B < p , các bên tham gia truyền thông nếu biết được kA và k B RB = ()g mod p , 1 < K < p , xA hoặc kB và xB . Các giá trị này có thể tính được k A x A nhờ việc giải: C = K × ()RB × (yB )mod p , x A k y = (g) mod p (5) R = ()g A mod p . Nếu: A và: −kB − xB K = C × ()R × (yA ) mod p thì: K = K . R = g k A mod p (6) Chứng minh: ( ) Thật vậy, do: Hoặc: x k A B R = ()g mod p yB = (g) mod p (7) Nên: và: −k −x K = C × R B × y B mod p k B () (A ) RB = (g) mod p (8) −k k A x A k A B = (K × ()RB × (yB )mod p)× (g mod p)Như đã chỉ ra ở Mục 2.3.a, khả năng chống tấn − x × ()g x A mod p B mod p = công làm lộ khóa bí mật dùng chung của thuật toán k x mới đề xuất ở đây cũng phụ thuộc vào mức độ khó = K × ()gkB mod p A × (g xB mod p)A mod p ( ) của bài toán logarit rời rạc. × ()g−k A .kB mod p × (g−xB .x A )mod p = b) Khả năng chống giả mạo về nguồn gốc khóa k .k x .x = (K × g B A × g A B mod p)× bí mật × g−k A .kB × g−xB .x A mod p mod p = Để mạo danh A, kẻ giả mạo cần phải tính được () kB .k A x A .xB −k A .kB −xB .x A = K × g × g × g × g mod p khóa riêng (xA) của A. Việc tính xA có thể thực = K hiện bằng cách giải (5). Tương tự, cũng có thể mạo 3.3 Mức độ an toàn của thuật toán mới đề xuất danh B nếu tính được xB nhờ việc giải (7). Như vậy, khả năng chống giả mạo nguồn gốc của khóa Tương tự thuật toán thỏa thuận khóa ở Mục 2, Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-1, Số 7 (27), tháng 5/201x bí mật dùng chung (K) cũng phụ thuộc vào mức độ rồi gửi cho A. khó của bài toán logarit rời rạc. Bước 2: 3.4 Thuật toán chuyển khóa mở rộng 1- A tính giá trị RAC theo công thức: Thuật toán chuyển khóa mở rộng (thuật toán mở k A RAC = (RC ) mod p , rồi gửi cho B. rộng) được đề xuất cho các trường hợp mà ở đó có 2- B tính giá trị RB theo công thức: số đối tượng lớn hơn 2. Xét trường hợp số đối R = (R )k B mod p , rồi gửi cho C. tượng là 3, với các trường hợp có số đối tượng AB A 3- C tính giá trị R theo công thức: tham gia thỏa thuận khóa lớn hơn 3 cũng có thể BC kC thực hiện hoàn toàn tương tự. giá sử các đối tượng RBC = (RB ) mod p , rồi gửi cho A. cần thỏa thuận khóa bí mật chung là A, B và C, có Bước 3: các khóa riêng là xA, xB, xC và các khóa công khai 1- A mã hóa khóa bí mật KA theo công thức: tương ứng là yA, yB, yC. Giả sử đối tượng A tạo k A x A CK = K A × (RBC )(× SC )mod p , rồi gửi trước một khóa bí mật dùng chung K với: cho B và C. 1< K < p và chuyển cho các đối tượng B và C, 2- B giải mã CK để nhận khóa bí mật KA theo thuật toán bao gồm các bước như sau: công thức: Bước 1: −k B − xB KB = CK × (RAC ) × ()S A mod p 1- A chọn một giá trị kA thỏa mãn: 1 < k A < p và 3- C giải mã CK để nhận khóa bí mật KA theo tính giá trị R và S theo công thức: A A công thức: k A x A RA = ()g mod p và SA = ()yC mod p rồi −kC − xC KC = CK × (RAB )(× SB )mod p gửi cho B. Có thể dễ dàng thấy rằng: 2- B chọn một giá trị kB thỏa mãn: 1 < k B < p và K B = KC = K A tính giá trị R và S theo công thức: B B Thật vậy, ta có: k x B B −k −x RB = ()g mod p và SB = ()yA mod p rồi B B KB = CK ×(RAC ) ×(SA ) mod p gửi cho C. kA xA −kB = ()K A × ()RBC ×(SC )mod p × ()RAC −xB 3- C chọn một giá trị kC thỏa mãn: 1< k < p và C × ()SA mod p = k x tính giá trị R và S theo công thức: kC A xC A C C = (K A × ()()RB mod p × ()()yB mod p mod p) −k −x kC xC kA B xA B RC = ()g mod p và SC = ()yB mod p × ()()RC mod p × ()()yC mod p = Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-1, Số x (2x), tháng x/201x k .k x .x kB A C xB A C khóa. Các thuật toán mới đề xuất có những đặc = (K A × ()g mod p × (g mod p) mod p) −k .k −x .x điểm cơ bản như sau: × ()g kC mod p A B × (g xC mod p)A B mod p - Mức độ an toàn của thuật toán phụ thuộc vào kA.kB .kC xA.xB .xC = (K A ×()g ×()g mod p)× tính khó giải của bài toán logarit rời rạc trong × (()g −kA.kB .kC × (g)−xA.xB .xC mod p)mod p trường hữu hạn nguyên tố. = K × ()g kA.kB .kC +xA.xB .xC × A - Khóa mật dùng chung được xác thực về −()k .k .k +x .x .x × ()g A B C A B C mod p = K A nguồn gốc, nên thuật toán mới đề xuất có khả năng Tương tự, ta cũng có: chống lại các dạng tấn công giả mạo. −kC −xC KC = CK ×()RAB ×(SB )modp - Khi bị lộ khóa riêng dài hạn (xA,xB) của các k A xA −kC = (KA ×()RBC ×(SC )modp)×()RAB đối tượng tham gia thỏa thuận khóa (A,B) thì kẻ −xC tấn công cũng không tính được khóa bí mật dùng ×()SB modp = k x kC A xC A chung (K) do thuật toán đã tạo ra trước đó. = (KA ×()()RB modp ×()()yB modp modp) −k −x - Có thể mở rộng thuật toán cho các trường ×()()R kB modp C ×()()y xB modp C modp = A A hợp có số lượng các đối tượng tham gia thỏa thuận k .k x .x = K × gkB modp A C × g xB modp A C modp ( A ()() ) khóa lớn hơn 2. k −kB .kC x −xB .xC ×()g A modp ×(g A modp)modp = Chứng minh về tính đúng đắn và những đánh ()k A .kB .kC +xA .xB .xC = (KA ×()g modp)× giá về mức độ an toàn của thuật toán mới đề xuất −()k .k .k +x .x .x ×()()g A B C A B C modp modp đã cho thấy khả năng ứng dụng của nó trong thực ()k A .kB .kC +xA .xB .xC = KA ×()g × tế. −()k A .kB .kC +xA .xB .xC ×()g modp = KA TÀI LIỆU THAM KHẢO. Từ đây suy ra: . K A = KB = KC [1] W. Diffie & M. Hellman, New Directions in Mức độ an toàn của thuật toán mở rộng có thể Cryptography, IEEE Trans. On Info. Theory, IT-22(6):644-654, 1976. phân tích đánh giá tương tự như với thuật toán [2] William Stallings, Cryptography and Network chuyển khóa đã đề xuất ở Mục 3.3. Security Principles and Practices, Fourth Edition, Prentice Hall PTR, p. 592, 2005. III. KẾT LUẬN Bài báo đề xuất giao thức xác lập khóa cho [3] D.R Stinson, Cryptography: Theory and Practice, CRC Press 1995 các hệ mật mã khóa bí mật, bao gồm một thuật toán thỏa thuận khóa và một thuật toán chuyển Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập V-1, Số 7 (27), tháng 5/201x _______________________________________ SƠ LƯỢC VỀ TÁC GIẢ LƯU HỒNG DŨNG. Sinh năm 1966. Tốt nghiệp đại học ngành Vô tuyến Điện tử tại Học viện Kỹ thuật Quân sự năm 1989. Hiện đang công tác tại khoa CNTT- Học viện KTQS. Hướng nghiên cứu: An toàn và bảo mật thông tin. Email: luuhongdung@gmail.com.
File đính kèm:
- xay_dung_giao_thuc_xac_lap_khoa_cho_cac_he_mat_ma_khoa_bi_ma.pdf