Xem mẫu

  1. MỘT GIẢI PHÁP XÂY DỰNG HỆ MẬT KHÓA ĐỐI XỨNG @ Lưu Hồng Dũng1, Nguyễn Ánh Việt2 1 Học viện Kỹ Thuật Quân sự; 2 Bộ Tư Lệnh Tác chiến không gian mạng Bài viết đề xuất giải pháp xây dựng thuật toán mật mã khóa đối xứng từ việc phát triển hệ mã sử dụng khóa một lần OTP (One-Time Pad). Ưu điểm của thuật toán xây dựng theo giải pháp mới đề xuất là tính an toàn và hiệu quả thực hiện được kế thừa mật mã OTP. Đồng thời việc thiết lập, quản lý - phân phối và sử dụng khóa của thuật toán đề xuất dựa trên các hệ mã khóa đối xứng đang được ứng dụng trong thực tế (DES, AES…). GIỚI THIỆU trực tiếp các bit của bản rõ với các bit tương ứng của Việc xây dựng các thuật toán mật mã hiệu năng khóa mật. cao cho mục đích thiết kế, chế tạo các thiết bị bảo Lý thuyết của Claude E. Shannon [6] đã chỉ ra mật thông tin phục vụ lĩnh vực an ninh - quốc phòng OTP là một loại mật mã có độ mật hoàn thiện (perfect và kinh tế - xã hội trong điều kiện hiện nay có ý secrecy). Hiện tại, OTP vẫn được xem là loại mật mã nghĩa thực tiễn hết sức to lớn. Với mục tiêu đặt ra, an toàn tuyệt đối, không thể phá vỡ. Điều đặc biệt là GIẢI PHÁP - CÔNG NGHỆ thuật toán được xây dựng nhằm đáp ứng các yêu cầu: ngay cả tấn công vét cạn (brute force) bằng máy tính - Loại trừ các dạng tấn công đã biết đối với các hệ lượng tử đối với loại mã này cũng trở nên vô nghĩa, nếu mật khóa đối xứng trong thực tế; có thể đáp ứng được các điều kiện về khóa như sau: - Tích hợp hiệu quả trên các thiết bị có kích thước - Khóa có tính chất ngẫu nhiên; nhỏ, dung lượng nhớ và năng lực tính toán hạn chế. - Mỗi khóa chỉ được dùng để mã hóa duy nhất Giải pháp để xây dựng thuật toán mật mã với các một bản tin; yêu cầu đặt ra được đề xuất dựa trên việc phát triển - Kích thước của khóa phải bằng hoặc lớn hơn hệ mã sử dụng OTP có độ an toàn và hiệu quả thực kích thước của bản rõ; hiện cao [1-5]. OTP được Gilbert Vernam đề xuất - Khóa phải được giữ bí mật hoàn toàn. vào năm 1917 và được Joseph Mauborgne tiếp tục hoàn thiện sau đó. Nguyên tắc căn bản của OTP là Tuy có độ an toàn và tốc độ mã hóa cao, cũng như sử dụng một khóa mật chia sẻ trước có độ dài bằng khả năng cài đặt dễ dàng trên các thiết bị có năng lực với độ dài của bản tin cần mã hóa (bản rõ), các bit tính toán và tài nguyên hạn chế, nhưng với các yêu của bản mã nhận được từ việc cộng loại trừ (XOR) cầu về khóa đã chỉ ra, thì loại mã này khó triển khai trong thực tế. Số 5 (057) 2020 l Tạp chí AN TOÀN THÔNG TIN 21
  2. Nguyên nhân đầu tiên là việc tạo khóa phải thực con Ki có kích thước tương ứng với kích thước của sự ngẫu nhiên, nhằm loại trừ các nguy cơ mất an khối dữ liệu: toàn bao gồm: a) từ một khóa đã biết, kẻ tấn công KOT = {K1,K2,...,Ki,...,Kn}, |Ki| = m bit, i = 1...n có thể tìm (suy ra) được các khóa đã được sử dụng trước đó hay các khóa sẽ được sử dụng trong tương Thuật toán mã hóa là phép XOR các bit của khối lai; b) chuỗi bit khóa tồn tại chu kỳ lặp lại, từ đó tạo bản rõ Pi với các bit tương ứng của khóa con Ki : ra mối liên quan giữa bản rõ và bản mã, kẻ tấn công Ci = Pi ⊕ Ki, i = 1...n có thể tận dụng mối liên quan này để phá mã, tương Do đó, bản mã C cũng bao gồm n khối dữ liệu Ci tự như với mã hóa đa bảng Vigenère [7]. Tuy nhiên, có kích thước m bit: đây là một yêu cầu không dễ thực hiện về mặt kỹ thuật trong các ứng dụng. C = {C1,C2,…,Ci,…,Cn}, |Ci| = m bit, i = 1...n Trong [8], trên cơ sở các nghiên cứu đã được Tương tự, thuật toán giải mã cũng là phép XOR công bố trước đó, các tác giả đề xuất thuật toán mã các bit của khối bản mã Ci với các bit tương ứng của hóa phát triển dựa trên nguyên lý của mật mã OTP khóa con Ki: trong đó sử dụng hàm băm (Hash Function) để sinh Pi = Ci ⊕ Ki, i = 1...n dòng khóa, thuật toán có tính hiệu quả thực hiện cao, dễ cài đặt trên cả phần cứng và phần mềm. Chú ý, trường hợp chia bản tin P thành n khối không chẵn thì bù thêm 1 số bit để khối cuối cùng đủ Trong bài báo này, nhóm tác giả đề xuất một giải m bit, việc bù thêm này được thực hiện tương tự như pháp nhằm cho phép tạo ra các biến thể của mật mã ở các hệ mã khối khác (DES, AES,…). OTP, thừa kế được một số ưu điểm của OTP, song việc thiết lập, quản lý – phân phối và sử dụng khóa Sử dụng 2 khóa khác nhau để mã hóa/giải mã bản tin là đồng nhất với các hệ mã khóa đối xứng đang sử Khóa bí mật K để mã hóa/giải mã cho một bản tin dụng trong thực tế. Ngoài ra, xác thực nguồn gốc và P bao gồm khóa sử dụng một lần KOT và khóa bí mật tính toàn vẹn của bản tin được mã hóa cũng là một chia sẻ trước giữa 2 đối tượng gửi (mã hóa) và nhận tính năng bổ sung quan trọng cho các thuật toán xây (giải mã) – KS. Trong đó, khóa sử dụng một lần KOT dựng theo giải pháp này. Điểm khác của giải pháp đề được dùng để mã hóa các khối dữ liệu của bản rõ ở xuất ở đây so với thuật toán trong [8] là chuỗi khóa bên gửi và giải mã các khối bản mã ở phía bên nhận. được tạo ra chủ yếu bằng các thuật toán sinh số ngẫu Khóa bí mật chia sẻ KS được bên gửi sử dụng để nhiên có kết hợp với hàm băm mà không hoàn toàn tạo ra “mầm khóa” C0 tương ứng với mỗi bản tin cần bởi hàm băm như trong [8], điều đó cho phép nâng mã hóa nhờ hàm băm F1: C0 = F1(P, KS). Thành phần cao tốc độ thực hiện thuật toán mã hóa nhất là khi sử C0 này được gửi như một khối của bản mã sang cho dụng thuật toán sinh số ngẫu nhiên dạng thanh ghi bên nhận. Dễ thấy rằng, giá trị C0 là khác nhau với dịch hồi tiếp tuyến tính – LFSR (Linear Feedback các bản tin cần mã hóa khác nhau và có tính chất Shift Registers) [9] kiểu Shrinking Generator [10]. ngẫu nhiên vì được tạo ra từ hàm băm F1. GIẢI PHÁP XÂY DỰNG THUẬT TOÁN MẬT Tiếp đến, hai bên gửi và nhận đều tạo khóa con MÃ KHÓA ĐỐI XỨNG HIỆU NĂNG CAO đầu tiên K1 từ KS và C0 nhờ hàm F1 như sau: Nguyên tắc xây dựng thuật toán mật mã theo giải K1 = F1(C0, KS) pháp đề xuất Phía gửi tin, các khóa Ki được sinh bởi cùng một Mã hóa và giải mã theo khối với OTP thuật toán F2 từ khóa con đứng trước Ki-1 và khối dữ Bản rõ P được mã hóa dưới dạng n khối dữ liệu liệu tương ứng Pi-1: Pi có kích thước m bit: Ki = F2(Pi-1, Ki-1), i = 2...n P = {P1,P2,…,Pi,…,Pn}, |Pi| = m bit, i = 1...n Ở đây, F2 là hàm sinh số ngẫu nhiên – RNG Khóa sử dụng một lần KOT cũng bao gồm n khóa (Random Number Generator), như phân tích ở phần 22 Số 5 (057) 2020 l Tạp chí AN TOÀN THÔNG TIN
  3. sau (mục Mức độ an toàn) cho thấy F2 hoàn toàn Thuật toán sinh khóa, giải mã và xác thực bao có thể là các hàm sinh số giả ngẫu nhiên – PRNG gồm các bước thực hiện như sau: (PseudoRandom Number Generator) mà không nhất Input: C = {C0,C1,C2,…,Ci,…,Cn}, KS thiết phải thực sự là RNG. Output: M = {M1,M2,…,Mi,…,Mn}, true/false. Phía nhận tin, sau khi tạo: K1 = F1(C0,KS) sẽ giải [1]. K1 = F1(C0,KS) mã khối đầu tiên: P1 = C1 K1. Từ đây, các khóa con [2]. M1 = C1 ⊕ K1 tiếp theo sẽ được tạo ra theo cùng một quy tắc với phía bên gửi: [3]. M[1] = M1 [4]. for i = 2 to n do: Ki = F2(Pi-1, Ki-1), i = 2...n begin Với mỗi khóa con Ki được tạo ra thì việc giải mã Ki = F2(Mi-1,Ki-1) các khối mã tiếp theo sẽ được thực hiện: Mi = Ci ⊕ Ki Pi = Ci Ki, i = 2...n M[i] = Mi Như vậy ở giải pháp đề xuất, khóa bí mật K sẽ end bao gồm hai thành phần có chức năng phân biệt: K [5]. M0 = F1(M,KS) = {KS, KOT}. Trong đó: KS là khóa bí mật chia sẻ giữa [6]. if (M0 = C0) then return {M,true} các đối tượng tham gia trao đổi thông tin mật, khóa else return {M,false} này được sử dụng để tạo ra khóa KOT tương ứng với mỗi bản tin. Còn KOT là khóa sử dụng một lần cho Ghi chú: việc mã hóa và giải mã bản tin. - Nếu kết quả trả về là {M,true} thì bản tin được Thuật toán bên người gửi xác thực về nguồn gốc và tính toàn vẹn. Ngược lại, kết quả trả về là {M,false} thì M là bản tin giả mạo Thuật toán sinh khóa và mã hóa bao gồm các hoặc C đã bị thay đổi trong quá trình truyền tin. bước thực hiện được mô tả như sau: - Nếu bản mã được truyền chính xác từ bên gửi Input: P = {P1,P2,…,Pi,…,Pn}, KS sang bên nhận thì khối dữ liệu C0 của bên nhận Output: C = {C0,C1,C2,…,Ci,…,Cn} cũng chính là C0 của bên gửi. Mặt khác, do bên [1]. C0 = F1(P,KS) nhận và bên gửi có cùng thuật toán sinh khóa với dữ liệu vào C0 và khóa bí mật chia sẻ KS như nhau, [2]. K1 = F1(C0,KS) nên khóa mã hóa và khóa giải mã sử dụng một lần [3]. C1 = P1 K1 GIẢI PHÁP - CÔNG NGHỆ KOT sẽ hoàn toàn giống nhau. Vì thế bản tin sau giải [4]. C[0] = C0, C[1] = C1 mã cũng chính là bản rõ trước khi mã hóa. Nên điều [5]. for i = 2 to n do kiện M0 = C0 được thỏa mãn hoàn toàn. begin MỘT SỐ ĐÁNH GIÁ VỀ GIẢI PHÁP XÂY DỰNG Ki = F2(Pi-1, Ki-1) THUẬT TOÁN MẬT MÃ ĐƯỢC ĐỀ XUẤT Ci = Pi Ki Mức độ an toàn C[i] = Ci Mức độ an toàn của thuật toán mật mã khóa đối end xứng xây dựng theo giải pháp đề xuất có thể đánh giá [6]. return C qua khả năng chống lại một số dạng tấn công như sau: Ghi chú: - Tấn công khóa bí mật chia sẻ: Tấn công khóa bí - Phép toán ⊕ là phép cộng modulo 2 (XOR) hai mật chia sẻ có thể thực hiện dựa vào cách tạo giá trị chuỗi bit. C0: C0 = F1(P,KS) hoặc tính giá trị của khóa con K1: K1 = F1(C0,KS). Thuật toán bên người nhận Số 5 (057) 2020 l Tạp chí AN TOÀN THÔNG TIN 23
  4. Với việc tạo C0 và K1 như trên thì kích thước LK con (m bit đầu tiên) rồi ghép nối tiếp n chuỗi con của khóa bí mật chia sẻ hoàn toàn có thể chọn tùy này với nhau. biến trong khoảng: Lmin≤LK≤2L-LP. Trong đó, Lmin là Nếu các chuỗi bit cơ sở được tạo ra bởi các hàm kích thước tối thiểu đủ để bảo đảm ngưỡng an toàn băm và hàm sinh số giả ngẫu nhiên có chu kỳ lặp lại (≥ 80 bit); LP là kích thước bản rõ và L là kích thước lớn và kích thước của các chuỗi con Ki được chọn lớn nhất của dữ liệu đầu vào hàm băm F1. Khi đó, dữ nhỏ hơn chu kỳ lặp lại của chuỗi bit cơ sở thì các liệu đầu vào hàm F1 là sự ghép nối tiếp xâu bit của KS chuỗi con này thực sự có tính ngẫu nhiên theo nghĩa: với P trong trường hợp tạo giá trị C0, hoặc là sự ghép a) không tồn tại chu kỳ lặp lại; b) từ một số bit cho nối tiếp xâu bit của KS với C0 trong trường hợp tạo trước không thể tính được bit tiếp theo, là điều hoàn khóa con K1. Từ đây có thể thấy rằng, khóa bí mật toàn có thể khẳng định. Mặt khác, do các chuỗi con chia sẻ trước giữa bên gửi và nhận hoàn toàn có thể Ki được tạo theo: Ki = F2(Pi-1, Ki-1), nên một trong được giữ bí mật không chỉ về giá trị mà còn bí mật các điều kiện để các Ki tạo thành chuỗi giá trị lặp lại cả về kích thước khóa. là các Pi cũng phải tạo thành chuỗi lặp lại, mà trên Dễ thấy rằng, với đặc tính một chiều của hàm thực tế điều này lại khó xảy ra. băm, hơn nữa với kích thước của KS cũng là một Do đó, với giải pháp đề xuất KOT đã đáp ứng được tham số bí mật, thì việc tìm được KS từ C0, P và K1 là yêu cầu về tính ngẫu nhiên của khóa theo nghĩa: a) hoàn toàn không khả thi. từ một khóa đã biết, kẻ tấn công không thể tìm được - Tấn công vét cạn khi chỉ có bản mã: Nếu KOT là các khóa đã được tạo ra trước hoặc sau đó; b) chuỗi một chuỗi bit thực sự ngẫu nhiên thì giữa bản rõ và bit khóa không tồn tại chu kỳ lặp lại, nên sẽ không bản mã được tạo ra sẽ không có bất kỳ mối quan hệ tạo ra mối liên quan giữa bản rõ và bản mã. Từ đó, nào. Tấn công vét cạn có thể giải một bản mã thành thuật toán được xây dựng theo giải pháp đề xuất bất kỳ bản tin nào có cùng độ dài (với bản mã) và đối hoàn toàn có thể kháng lại tấn công vét cạn. với kẻ tấn công thì tất cả các bản tin có nghĩa sau giải - Tấn công giả mạo: OTP không cung cấp tính mã đều có khả năng là bản tin được mã hóa. Nghĩa năng xác thực cho bản tin được mã hóa, vì vậy kẻ là, sẽ không có bất kỳ thông tin nào trong bản mã cho tấn công có thể chặn bản mã được gửi đi và gửi cho phép kẻ tấn công lựa chọn đúng bản rõ trong số các bên nhận một bản tin giả mạo có cùng kích thước với bản tin có nghĩa sau giải mã bằng tấn công vét cạn. bản tin thật. Trường hợp giải mã ra một bản rõ vô Ngoài ra, nếu KOT thực sự ngẫu nhiên thì từ một khóa nghĩa, người nhận có thể suy đoán về một sự giả mạo đã biết, kẻ tấn công không thể tìm (suy) ra các khóa đã được thực hiện hoặc do lỗi truyền tin gây ra. Tuy khác đã được tạo ra trước hay sau đó. nhiên, nếu giải mã ra một bản tin có nghĩa, thì chính Theo giải pháp đề xuất, khóa sử dụng một người nhận cũng không có cách nào để khẳng định lần KOT là một tập các khóa con Ki được tạo bởi được rằng đây là bản tin thật hay bản tin giả mạo. hàm băm F1 và hàm sinh số ngẫu nhiên F2 theo 2 Với giải pháp đề xuất, bằng việc tạo “mầm khóa” nguyên tắc: Thứ nhất, mỗi khóa con Ki được sinh C0 từ khóa bí mật chia sẻ KS và bản rõ nhờ hàm băm ra từ khóa con đứng trước nó là Ki-1 và khối dữ liệu F1 ở phía bên gửi: C0 = F1(P,KS), bên nhận hoàn toàn tương ứng Pi-1 bởi F2; Thứ hai, riêng khóa con đầu có khả năng nhận thức chính xác nguồn gốc cũng tiên K1 được tạo ra bởi “mầm khóa” C0 và khóa bí như tính toàn vẹn của bản tin sau giải mã qua việc mật chia sẻ KS bởi hàm băm F1. Như vậy, KOT thực tính: M0 = F1(M,KS) và kiểm tra điều kiện: M0 = C0. chất là một chuỗi bit được tạo ra bởi việc ghép nối tiếp n chuỗi (bit) con Ki, mà các chuỗi con Ki này Hiệu quả thực hiện chính là đoạn m bit đầu tiên của n chuỗi bit cơ sở Có thể nâng cao hiệu quả thuật toán xây dựng được tạo bởi F1 hoặc F2 với các giá trị khởi tạo theo giải pháp đề xuất nếu khóa KOT được tạo ra hay các “mầm” khác nhau. Nói cách khác, chuỗi trước các khi các thủ tục mã hóa và giải mã được bit KOT được tạo ra từ n chuỗi bit cơ sở khác nhau, thực hiện. Khi đó, các thuật toán sinh khóa, mã hóa bằng cách lấy ra từ mỗi chuỗi bit cơ sở 1 chuỗi và giải mã được mô tả như sau: 24 Số 5 (057) 2020 l Tạp chí AN TOÀN THÔNG TIN
  5. + Thuật toán sinh khóa: dạng tấn công đối với các hệ mã khối, đây là một ưu điểm rất quan trọng được kế thừa từ OTP. Ngoài ra, Input: P = {P1,P2,…,Pi,…,Pn}, KS do có cơ chế xác thực nguồn gốc và tính toàn vẹn Output: KOT = {K1,K2,…,Ki,…,Kn}, C0 của bản tin được mã hóa, các thuật toán này còn có [1]. C0 = F1(P,KS) khả năng chống lại các dạng tấn công giả mạo trong [2]. KOT[1] = F1(C0,KS) thực tế. Những ưu điểm khác của các thuật toán này [3]. for i = 2 to n do là tốc độ và hiệu quả thực hiện có thể so sánh với hệ begin mã OTP, song khóa mật chia sẻ có thể sử dụng nhiều KOT[i] = F2(KOT[i-1]) lần như các hệ mã khóa đối xứng khác. Đây là những end đặc tính rất quan trọng mang lại khả năng cho các [4]. return {KOT,C0} thuật toán mới có thể ứng dụng được trong việc thiết + Thuật toán mã hóa: kế, chế tạo các thiết bị bảo mật thông tin. Input: P = {P1,P2,…,Pi,…,Pn}, C0, KOT = {K1,K2,…,Ki,…,Kn} Output: C = {C0,C1,C2,…,Ci,…,Cn} TÀI LIỆU THAM KHẢO [1]. C[0] = C0 1. SharadPatil, Ajay Kumar (2010). Effective Secure [2]. for i = 1 to n do Encryption Scheme (One Time Pad) using Complement begin Approach. International Journal of Computer Science & C[i] = P[i] ⊕ KOT[i] Communication, Vol.1,No.1,January-June 2010, pp.229-233. end 2. Raman Kumar, Roma Jindal, Abhinav Gupta, SagarBhalla, HarshitArora (2011). A Secure [3]. return C Authentication System - Using Enhanced One Time Pad + Thuật toán giải mã và xác thực: Technique. IJCSNS International Journal of Computer Science and Network Security, Vol.11 No.2. Input: C = {C0,C1,C2,…,Ci,…,Cn}, 3. SharadPatil, ManojDevare, Ajay Kumar (2007). Modified KOT = {K1,K2,…,Ki,…,Kn},KS One Time Pad Data Security Scheme: Random Key Output: M = {M1,M2,…,Mi,…,Mn}, true/false. Generation Approach. International Journal of Computer [1]. for i = 1 to n do: Science and Security (IJCSS), Volume (3): Issue(2). begin 4. N.J.Croft and M.S.Olivier (2005). “Using an M[i] = C[i] ⊕ KOT[i] approximated One-Time Pad to Secure ShortMessaging service(SMS)”. SATNAC 2005 Proceedings. end 5. Jeff Connelly (1978). A Practical Implementation of a [2]. M0 = F1(M,KS) GIẢI PHÁP - CÔNG NGHỆ One-time Pad Cryptosystem. CPE 456. [3]. if (M0 = C0) then return {M,true} 6. Shannon C.E. (1949). Communication Theory of Secrecy else return {M,false} Systems. Bell System Technical Journal, Vol.28-4, pp.656-715. Có thể thấy rằng, hiệu quả thực hiện của thuật 7. William Stallings (2005). Cryptography and Network toán được đề xuất khi đó đạt xấp xỉ hiệu quả thực Security Principles and Practices. Prentice Hall. hiện của mật mã OTP. Tuy nhiên, do: 8. Marcio Ricardo Rosemberg, Daniel Schwabe, Marcus Poggi, A Hybrid Block and Stream Cipher Encryption Scheme KOT[i] = F2(KOT[i-1]) Based on Collision Resistant Hash Functions. Monografias em Ciência da Computação n° 13/17, ISSN: 0103-9741. Nên sẽ tiềm tàng khả năng tồn tại chu kỳ lặp lại 9. Menezes A., Van Oorschot P. and Vanstone S. (1996). trong chuỗi KOT. Handbook of Applied Cryptography. Boca Raton, KẾT LUẬN Florida: CRC Press. 10.  D. Coppersmith, H. Krawczyk, and Y. Mansour Bài báo đề xuất giải pháp xây dựng thuật toán (1994), “The shrinking generator,” in CRYPTO ’93: mật mã khóa đối xứng từ việc phát triển mật mã sử Proceedings of the 13th annual international cryptology dụng khóa một lần OTP. Với giải pháp thiết kế khóa conference on Advances in cryptology, (New York, NY, mật từ 2 phân khóa tách biệt, các thuật toán xây dựng USA), pp. 22-39, Springer-Verlag New York, Inc. theo giải pháp ở đây có khả năng loại trừ một số Số 5 (057) 2020 l Tạp chí AN TOÀN THÔNG TIN 25
nguon tai.lieu . vn