Danh mục

Phát triển thuật toán mã hóa – xác thực thông tin từ OTP Cipher

Số trang: 8      Loại file: pdf      Dung lượng: 163.24 KB      Lượt xem: 26      Lượt tải: 0    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: 1,000 VND Tải xuống file đầy đủ (8 trang) 0
Xem trước 1 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài viết đề 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 (One - Time Pad). Ưu điểm của thuật toán mới đề xuất là tính an toàn và hiệu quả thực hiện được kế thừa OTP Cipher, đồng thời việc thiết lập, quản lý - phân phối và sử dụng khóa hoàn toàn giống như các hệ mã khóa đối xứng đang được ứng dụng trong thực tế (DES, AES…). Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Phát triển thuật toán mã hóa – xác thực thông tin từ OTP Cipher Nghiên cứu khoa học công nghệ PHÁT TRIỂN THUẬT TOÁN MÃ HÓA – XÁC THỰC THÔNG TIN TỪ OTP CIPHER Lưu Hồng Dũng1, Nguyễn Ánh Việt2, Đoàn Thị Bích Ngọc3 Tóm tắt: 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 (One - Time Pad). Ưu điểm của thuật toán mới đề xuất là có tính an toàn và hiệu quả thực hiện cao tương tự OTP, đồng thời việc thiết lập, quản lý - phân phối và sử dụng khóa hoàn toàn giống như các hệ mã khóa đối xứng đang được ứng dụng trong thực tế (DES, AES…). Từ khóa: Symmetric-Key Cryptography, Symmetric-Key Cryptographic Algorithm, Symmetric-Key Cryptosystems, One - Time Pad Algorithm, OTP Cipher. 1. ĐẶT VẤN ĐỀ 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. Đã có một số nghiên cứu nhằm giải quyết các hạn chế của mật mã OTP được công bố [1-5], song từ các kết quả được công bố cho thấy những nghiên cứu này chủ yếu tập trung giải quyết vấn đề tạo chuỗi bit khóa OTP từ các chuỗi bit giả ngẫu nhiên có kích thước hạn chế, còn việc có thể sử dụng khóa nhiều lần tương tự như các hệ mã khóa đối xứng khác vẫn là hạn chế căn bản của các nghiên cứu này. Từ đó, bài báo đề xuất một biến thể của mật mã OTP với việc thiết lập, quản lý – phân phối và sử dụng khóa được thực hiện hoàn toàn như các hệ mã khóa đối xứng Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2020 1 Công nghệ thông tin đang sử dụng trong thực tế (DES, AES,…). Ngoài ra, xác thực nguồn gốc và tính toàn vẹn của bản tin được mã hóa cũng là một tính năng bổ sung quan trọng cho thuật toán này. II. THUẬT TOÁN MÃ HÓA – XÁC THỰC THÔNG TIN 1. Mô tả thuật toán Bản rõ P được mã hóa dưới dạng n khối dữ liệu Pi có kích thước 128-bit: P = {P1,P2,…,Pi,…,Pn}, |Pi| = 128 bit, i = 1..n Khóa sử dụng một lần KOT cũng bao gồm n khóa con 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: K ...

Tài liệu được xem nhiều: