Thuật toán mã hóa – xác thực thông tin phát triển từ mật mã OTP
Mật mã sử dụng khóa một lần OTP được Gilbert Vernam đề xuất vào năm 1917 và
Joseph Mauborgne tiếp tục hoàn thiện sau đó. Nguyên tắc căn bản của mật mã OTP là sử
dụng một khóa mật chia sẻ trước có độ dài bằng với độ dài của bản tin cần mã hóa (bản
rõ), các bit của bản mã nhận được từ việc cộng loại trừ (XOR) trực tiếp các bit của bản
rõ với các bit tương ứng của khóa mật.
Lý thuyết của Claude E. Shannon [6] đã chỉ ra OTP là một loại mã có độ mật hoàn
thiện (Perfect Secrecy). Hiện tại, mật mã OTP vẫn được xem là loại mã an toàn tuyệt
đối, không thể phá vỡ. Điều đặc biệt là ngay cả tấn công theo kiểu “vét cạn” (Brute force
attack) bằng máy tính lượng tử đối với loại mã này cũng trở nên vô nghĩa, nếu có thể đáp
ứng được các điều kiện về khóa sau:
- Khóa có tính chất ngẫu nhiên;
- Mỗi khóa chỉ dùng để mã hóa duy nhất một bản tin;
- Kích thước của khóa phải bằng hoặc lớn hơn kích thước của bản rõ;
- Khóa phải được giữ bí mật hoàn toàn.
Tuy có độ an toàn và tốc độ mã hóa cao cũng như khả năng cài đặt dễ dàng trên các
thiết bị có năng lực tính toán và tài nguyên hạn chế, nhưng với các yêu cầu về khóa đã
chỉ ra, thì loại mã này có rất ít khả năng ứng dụng trong thực tế. Nguyên nhân đầu tiên là
việc tạo khóa phải có tính thực sự ngẫu nhiên, nhằm loại trừ các nguy cơ mất an toàn: a)
từ một khóa đã biết, kẻ tấn công 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 lai; b) chuỗi bit khóa tồn tại chu kỳ lặp lại,
từ đó tạo ra mối liên quan giữa bản rõ và bản mã, kẻ tấn công có thể tận dụng mối liên
quan này để phá mã tương tự như với mã hóa đa bảng Vigenère [7]. Tuy nhiên, đâ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. Nhưng lý do chủ
yếu làm cho mã OTP ít có ý nghĩa thực tế là vì mỗi khóa chỉ được dùng một lần duy nhất
và phải có kích thước không nhỏ hơn kích thước bản tin cần mã hóa, song lại phải được
giữ bí mật tuyệt đối như bản tin cần mã hóa.
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: Thuật toán mã hóa – xác thực thông tin phát triển từ mật mã OTP
on Ki có kích thước tương ứng với kích thước của khối dữ liệu: KOT = {K1,K2,,Ki,,Kn}, |Ki| = 128 bit, i = 1..n Do đó, bản mã C cũng bao gồm n khối dữ liệu Ci có kích thước 128-bit: C = {C1,C2,,Ci,,Cn}, |Ci| = 128 bit, i = 1..n Thuật toán mã hóa là phép XOR các bit của khối bản rõ Pi với các bit tương ứng của khóa con Ki : Ci = Pi Ki , i = 1..n Tương tự, thuật toán giải mã cũng là phép XOR các bit của khối bản mã Ci với các bit tương ứng của khóa con Ki: Pi = Ci Ki , i = 1..n Chú ý: Trường hợp chia bản tin P thành n khối không chẵn thì bù thêm một số bit để khối cuối cùng đủ 128-bit, việc bù thêm này được thực hiện tương tự như ở các hệ mã khối khác (DES, AES,) [8]. Khóa bí mật K để mã hóa và giải mã cho một bản tin P bao gồm khóa sử dụng một lần KOT và khóa bí mật chia sẻ trước giữa 2 đối tượng gửi/mã hóa – nhận/giải mã là KS. Trong đó, khóa sử dụng một lần KOT bao gồm các khóa con Ki: KOT = {K1,K2,,Ki,,Kn} được dùng để mã hóa các khối dữ liệu của bản rõ ở bên gửi và giải mã các khối bản mã ở phía bên nhận. Khóa bí mật chia sẻ KS được bên gửi sử dụng để tạo ra ”mầm khóa” - C0 tương ứng với mỗi bản tin cần mã hóa, nhờ hàm băm (Hash Function) MD5: C0 = MD5(P,KS). Thành phần C0 này được gửi như một khối của bản mã sang cho bên nhận. Dễ thấy rằng, giá trị C0 là khác nhau với các bản tin cần mã hóa khác nhau và có tính chất ngẫu nhiên – hệ quả của việc tạo ra từ hàm băm MD5 [9]. Tiếp đến, cả 2 bên gửi và nhận đều tạo khóa con đầu tiên K1 từ KS và C0 nhờ hàm MD5 như sau: K1 = MD5(C0,KS) Phía gửi tin, các khóa Ki được sinh bởi cùng một thuật toán từ khóa con đứng trước Ki-1 và khối dữ liệu tương ứng Pi-1: Ki = MD5(Pi-1,Ki-1), i = 2..n Phía nhận tin, sau khi tạo khóa con K1: K1 = MD5(C0,KS) sẽ giải mã khối đầu tiên: P1 = C1 K1. Từ đây, các khóa con tiếp theo sẽ được tạo ra theo cùng một qui tắc với phía bên gửi: Ki = MD5(Pi-1,Ki-1), i = 2..n và các khối mã tiếp theo sẽ được giải mã: 88 L. H. Dũng, N. A. Việt, Đ. T. B. Ngọc, “Thuật toán mã hóa – xác thực từ mật mã OTP.” Nghiên cứu khoa học công nghệ Pi = Ci Ki , i = 2..n Chú ý rằng, việc tạo các khóa con của KOT ở phía bên gửi có thể thực hiện trước hay đồng thời với mã hóa các khối dữ liệu của bản tin, còn phía nhận tin thì việc tạo các khóa con của KOT và giải mã các khối bản mã cần phải được thực hiện một cách đồng thời với nhau. Như vậy, ở thuật toán mới đề xuất khóa bí mật K sẽ bao gồm 2 thành phần có chức năng phân biệt: K = {KS, KOT} Trong đó: KS là khóa bí mật chia sẻ giữa các đối tượng tham gia trao đổi thông tin mật, khóa này được sử dụng để tạo ra khóa KOT tương ứng với mỗi bản tin; KOT là khóa sử dụng một lần cho việc mã hóa và giải mã các khối dữ liệu. Từ đây, thuật toán sinh khóa và mã hóa được mô tả như sau: Input: P = {P1,P2,,Pi,,Pn}, KS. Output: C = { C0,C1,C2,,Ci,,Cn}. 1. C0 = MD5(P||KS) 2. K1 = MD5(C0||KS) 3. C1 = P1 K1 4. C[0] = C0, C[1] = C1 5. for i = 2 to n do begin Ki = MD5(Pi-1|| Ki-1|| Pi-1|| Ki-1) Ci = Pi Ki C[i] = Ci end 6. return C Ghi chú: - Phép toán là phép cộng modulo 2 (XOR) hai chuỗi bit. - Phép toán “||” là phép ghép nối tiếp 2 xâu bit. Thuật toán sinh khóa, giải mã và xác thực bao gồm các bước thực hiện như sau: Input: C = {C0,C1,C2,,Ci,,Cn}, KS. Output: M = {M1,M2,,Mi,,Mn}, true/false. 1. K1 = MD5(C0||KS) 2. M1 = C1 K1 3. M[1] = M1 4. for i = 2 to n do: begin Ki = MD5(Pi-1|| Ki-1|| Pi-1|| Ki-1) Mi = Ci Ki M[i] = Mi end 5. M0 = MD5(M||KS) 6. if (M0 = C0) then return {M,true} else return {M,false} Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2020 89 Công nghệ thông tin Ghi chú: - Nếu kết quả trả về là {M,true} thì bản tin được 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ì hoặc M là bản tin giả mạo hoặc C đã bị thay đổi trong quá trình truyền tin. - Nếu bản mã được truyền chính xác từ bên gửi sang bên nhận thì khối dữ liệu C0 của bên nhận cũng chính là C0 của bên gửi. Mặt khác, do bên 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 nên khóa mã hóa và khóa giải mã sử dụng một lần (KOT) sẽ hoàn toàn giống nhau. Vì thế, bản tin sau giải mã cũng chính là bản rõ trước khi mã hóa. Nên điều kiện M0 = C0 được thỏa mãn hoàn toàn. 2.2. Một số đánh giá về độ an toàn và hiệu quả thực hiện của thuật toán mới đề xuất 2.2.1. Mức độ an toàn Tương tự như mật mã OTP, khóa KOT ở đây chỉ sử dụng một lần, do vậy các dạng tấn công như thám mã vi sai, thám mã tuyến tính,.. và nói chung là tất cả các dạng tấn công đã được biết đến với các mã khối điển hình như DES, AES,... là không có tác dụng với thuật toán mới đề xuất. Ở đây, mức độ an toàn của thuật toán mới đề xuất có thể đánh giá qua khả năng kháng lại một số dạng tấn công như sau: - Tấn công khóa bí mật chia sẻ: Tấn công khóa bí mật chia sẻ có thể thực hiện dựa vào cách tạo giá trị C0: C0 = MD5(P||KS) hoặc tính giá trị của khóa con K1: K1 = MD5(C0||KS) Với việc tạo C0 và K1 như trên thì kích thước LK của khóa bí mật chia sẻ hoàn toàn có L thể chọn tùy biến trong khoảng: Lmin≤LK≤2 -LP. Trong đó: Lmin là kích thước tối thiểu đủ để bảo đảm ngưỡng an toàn (≥ 80 bit); LP là kích thước bản rõ và L là kích thước lớn nhất của dữ liệu đầu vào hàm băm MD5. Khi đó, dữ liệu đầu vào hàm MD5 là sự ghép nối tiếp xâu bit của KS với P trong trường hợp tạo giá trị C0 hoặc là sự ghép nối tiếp xâu bit của KS với C0 trong trường hợp cần tạo khóa con K1. Từ đây có thể thấy rằng, khóa bí mật chia sẻ trước giữa các bên gửi – nhận ở đây hoàn toàn có thể được giữ bí mật không chỉ về giá trị mà còn bí mật cả về kích thước khóa. Dễ thấy rằng với đặc tính 1 chiều của hàm băm, hơn nữa với kích thước của KS cũng là một tham số bí mật thì việc tìm được KS từ C0, P và K1 (K1 có thể biết khi P đã được công khai) là hoàn toàn bất khả thi. - Tấn công “vét cạn” khi chỉ có bản mã: Nếu KOT là một chuỗi bit thực sự ngẫu nhiên thì giữa bản rõ và bản mã được tạo ra sẽ không có bất kỳ mối quan hệ nào. Khi đó, tấn công theo kiểu “vét cạn” có thể giải một bản mã thành bất kỳ bản tin có nghĩa nào có cùng độ dài (với bản mã) và đối với kẻ tấn công thì tất cả các bản tin có nghĩa sau giải mã đều có khả năng là bản tin được mã hóa (bản rõ). Nghĩa là, sẽ không có bất kỳ thông tin nào trong bản mã cho phép kẻ tấn công lựa chọn đúng bản rõ từ các bản tin có nghĩa sau giải mã bằng phương pháp “vét cạn”. Ngoài ra, nếu KOT thực sự ngẫu nhiên thì từ một khóa đã biết kẻ tấn công không thể tìm (suy) ra các khóa khác đã được tạo ra trước hay sau đó. Với thuật toán đề xuất, khóa sử dụng một lần KOT là một tập các khóa con Ki được tạo bởi hàm băm MD5 theo nguyên tắc: a) mỗi khóa con Ki được sinh ra từ khóa con đứng trước Ki-1 và khối dữ liệu tương ứng Pi-1; b) riêng khóa con đầu tiên K1 được tạo ra bởi “mầm khóa” C0 và khóa bí mật chia sẻ KS. Như vậy, KOT thực 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 chính là đoạn 90 L. H. Dũng, N. A. Việt, Đ. T. B. Ngọc, “Thuật toán mã hóa – xác thực từ mật mã OTP.” Nghiên cứu khoa học công nghệ 128-bit đầu tiên của n chuỗi bit cơ sở được tạo bởi MD5 – đóng vai trò của hàm sinh số ngẫu nhiên với các giá trị khởi tạo hay các “mầm” (seed) khác nhau. Nói cách khác, chuỗi bit KOT được tạo ra từ n chuỗi bit cơ sở khác nhau, bằng cách lấy ra từ mỗi chuỗi bit cơ sở một chuỗi con (m bit đầu tiên) rồi ghép nối tiếp n chuỗi con này với nhau. Với việc sử dụng MD5 để tạo các chuỗi bit cơ sở, thì trong các chuỗi con có kích thước hạn chế Ki sẽ không tồn tại chu kỳ lặp lại và do đó các chuỗi con này thực sự có tính ngẫu nhiên là điều hoàn toàn có thể khẳng định. Mặt khác, các chuỗi bit cơ sở được tạo bởi các giá trị khởi tạo khác nhau nên chúng độc lập với nhau, dẫn đến các chuỗi con Ki (128-bit đầu tiên của chuỗi bit cơ sở) cũng độc lập với nhau. Như vậy, KOT là sự ghép nối tiếp các chuỗi con 128-bit có tính ngẫu nhiên và độc lập nhau, nên trong KOT sẽ không tồn tại chu kỳ lặp lại và do đó có tính ngẫu nhiên cũng là điều hoàn toàn có thể khẳng định được. Tóm lại, KOT được tạo ra theo giải pháp đề xuất đã đáp ứng được yêu cầu về tính ngẫu nhiên của khóa theo nghĩa: a) từ một khóa đã biết, kẻ tấn công không thể tìm được các khóa đã được tạo ra trước hoặc sau đó; b) chuỗi bit khóa không tồn tại chu kỳ lặp lại, nên sẽ không tạo ra mối liên quan giữa bản rõ và bản mã. Do đó, tấn công theo dạng “vét cạn” là hoàn toàn có thể kháng được đối với thuật toán mới đề xuất. - Tấn công giả mạo: Mật mã OTP không cung cấp tính năng xác thực cho bản tin được mã hóa, vì vậy kẻ tấn công có thể chặn bản mã được gửi đi và gửi cho bên nhận một bản tin giả mạo có cùng kích thước với bản tin thật. Trường hợp giải mã ra một bản tin vô nghĩa, người nhận có thể suy đoán về một sự giả mạo đã được thực hiện hoặc do lỗi truyền tin gây ra. Tuy nhiên, nếu giải mã ra một bản tin có nghĩa thì chính người nhận cũng không có cách nào xác định được bản tin này là thật hay giả mạo. Ở thuật toán mới đề xuất, bằng việc tạo “mầm khóa” C0 từ khóa bí mật chia sẻ KS và bản tin được mã hóa nhờ hàm băm MD5 ở phía bên gửi: C0 = MD5(P||KS), bên nhận hoàn toàn có khả năng nhận thực chính xác nguồn gốc cũng như tính toàn vẹn của bản tin sau giải mã qua việc tính: M0 = MD5(M||KS) và kiểm tra: M0 = C0. Đặc biệt là, chỉ có duy nhất bên nhận thực hiện được việc xác thực này, chính điều đó là một yếu tố quan trọng tạo nên khả năng kháng lại tấn công dạng “vét cạn” của thuật toán mới đề xuất. 2.2.2. Hiệu quả thực hiện Có thể nâng cao hiệu quả thuật toán đề xuất nếu khóa KOT được tạo ra trước các khi các thủ tục mã hóa và giải mã được thực hiện. Khi đó, các thuật toán sinh khóa, mã hóa và giải mã được mô tả như sau: + Thuật toán sinh khóa: Input: P = {P1,P2,,Pi,,Pn}, KS. Output: KOT = {K1,K2,,Ki,,Kn},C0. 1. C0 = MD5(P||KS) 2. KOT[1] = MD5(C0||KS) 3. for i = 2 to n do begin KOT[i] = MD5(KOT[i-1]) end 4. return {KOT,C0} + Thuật toán mã hóa: Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2020 91 Công nghệ thông tin Input: P = {P1,P2,,Pi,,Pn}, KOT = {K1,K2,,Ki,,Kn},C0. Output: C = {C0,C1,C2,,Ci,,Cn}. 1. C[0] = C0 2. for i = 1 to n do begin C[i] = P[i] KOT[i] end 3. return C + Thuật toán giải mã và xác thực: Input: C = {C0,C1,C2,,Ci,,Cn}, KOT = {K1,K2,,Ki,,Kn},KS. Output: M = {M1,M2,,Mi,,Mn}, true/false. 1. for i = 1 to n do begin M[i] = C[i] KOT[i] end 2. M0 = MD5(M||KS) 3. if (M0 = C0) then return {M,true} else return {M,false} Có thể thấy rằng, hiệu quả thực hiện của thuật toán được đề xuất có thể đạt xấp xỉ hiệu quả thực hiện của mật mã OTP nếu cả hai sử dụng cùng thuật toán sinh số ngẫu nhiên như nhau. Trên thực tế, có thể nâng cao tốc độ thực hiện của thuật toán sinh khóa bằng cách sử dụng thuật toán sinh số ngẫu nhiên dạng thanh ghi dịch hồi tiếp tuyến tính – LFSR (Linear Feedback Shift Registers) [9] kiểu Shrinking Generator [11]. 3. KẾT LUẬN Bài báo đề xuất thuật toán mã hóa – xác thực thông tin từ việc phát triển mật mã sử dụng khóa một lần OTP. Với giải pháp thiết kế khóa mật từ 2 phân khóa tách biệt, thuật toán được đề xuất ở đây có khả năng loại trừ tất cả các dạng tấn công đối với các hệ mã khối/khóa đối xứng đã được biết đến, đây là một ưu điểm rất quan trọng được kế thừa từ mật mã OTP. Ngoài ra, do có cơ chế xác thực nguồn gốc và tính toàn vẹn của bản tin được mã hóa, thuật toán này còn có khả năng chống lại các dạng tấn công giả mạo rất hiệu quả. Những ưu điểm khác của thuật toán này là có tốc độ và hiệu quả thực hiện có thể so sánh với mật mã OTP, song khóa mật chia sẻ có thể sử dụng nhiều lần như các hệ mật khóa đối xứng khác. Đây là những đặc tính rất quan trọng mang lại khả năng ứng dụng cao cho thuật toán trong việc thiết kế - chế tạo các thiết bị bảo mật thông tin. TÀI LIỆU THAM KHẢO [1]. SharadPatil , Ajay Kumar (2010). "Effective Secure Encryption Scheme(One Time Pad) using Complement Approach". International Journal of Computer Science & Communication, Vol.1,No.1,January-June 2010, pp.229-233. [2]. Raman Kumar,Roma Jindal, Abhinav Gupta , SagarBhalla, HarshitArora (2011). "A Secure Authentication System-Using Enhanced One Time Pad Technique". IJCSNS International 92 L. H. Dũng, N. A. Việt, Đ. T. B. Ngọc, “Thuật toán mã hóa – xác thực từ mật mã OTP.” Nghiên cứu khoa học công nghệ Journal of Computer Science and Network Security,VOL.11 No.2,February 2011. [3]. SharadPatil ,ManojDevare , Ajay Kumar (2007). "Modified One Time Pad Data Security Scheme: Random Key Generation Approach". International Journal of Computer Science and Security (IJCSS) ,Volume (3): Issue(2). [4]. N.J.Croft and M.S.Olivier (2005). “Using an approximated One-Time Pad to Secure ShortMessaging service(SMS)”. SATNAC 2005 Proceedings. [5]. Jeff Connelly (1978). "A Practical Implementation of a One-time Pad Cryptosystem". CPE 456 , June 11, 2008. [6]. Shannon C.E. (1949). "Communication Theory of Secrecy Systems". Bell System Technical Journal, Vol.28-4, pp 656-715. [7]. William Stallings (2005). "Cryptography and Network Security Principles and Practices". Prentice Hall. [8]. FIPS PUB 197: "Federal information processing standards publication 197". Category: computer security standard, cryptography. November 2001. [9]. Menezes A., Van Oorschot P. and Vanstone S. (1996). "Handbook of Applied Cryptography". Boca Raton, Florida: CRC Press. [10]. D. Coppersmith, H. Krawczyk, and Y. Mansour, “The shrinking generator,” in CRYPTO ’93: Proceedings of the 13th annual international cryptology conference on Advances in cryptology, (New York, NY, USA), pp. 22–39, Springer-Verlag New York, Inc., 1994. ABSTRACT AN ENCRYPTION AND AUTHENTICATION ALGORITHM DEVELOPED BASED ON THE ONE – TIME PAD CIPHER An encryption and authentication algorithm developed based on the One – Time Pad (OTP) cipher are proposed. Advantages of the new algorithm is to have high safety and efficient implementation as OTP cipher, but the establishment, management - distribution and usage of keys are exactly the same as the Symmetric-key cryptosystems in practice (DES,AES, etc.) Keywords: Symmetric-key cryptography; Symmetric-key cryptographic algorithm; Symmetric-key cryptosystems; One - time pad algorithm; OTP cipher. Nhận bài ngày 17 tháng 10 năm 2020 Hoàn thiện ngày 10 tháng 12 năm 2020 Chấp nhận đăng ngày 15 tháng 12 năm 2020 Địa chỉ: 1Học viện KTQS; 2Bộ Tư lệnh Tác chiến không gian mạng; 3Trường Đại học CNTT & TT, Đại học Thái Nguyên. *Email: luuhongdung@gmail.com. Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2020 93
File đính kèm:
- thuat_toan_ma_hoa_xac_thuc_thong_tin_phat_trien_tu_mat_ma_ot.pdf