Năm 2012, Zeenat Mahmood và các cộng sự [1] đã đưa ra thuật toán xây dựng một hệ mật khóa đối xứng sử dụng khóa động và bộ sinh đồng dư tuyến tính (Linear Congruential Generator - LCG) để sinh khóa động này. Với phương pháp đề xuất, các tác giả đã giới thiệu khái niệm khóa động cùng với hệ mật khóa đối xứng. Khóa động này tương tự như khóa dùng một lần (One Time Pad – OTP). Hệ mật đề xuất có bốn vòng mã hóa và giải mã. Trong mỗi vòng, các phần khác nhau của khóa động được áp dụng làm cho việc tấn công thám mã trở nên khó khăn hơn. Có thể ứng dụng thuật toán đề xuất vào trong các hệ thống ngân hàng, giao dịch tài chính qua mạng Internet và các ứng dụng trong quân sự.
Khóa động
Hệ mã khóa động là một trong những kỹ thuật tiên tiến trong mật mã và được chia ra làm hai trường hợp: có một thông điệp lớn được chia thành nhiều thông điệp nhỏ và có nhiều thông điệp khác nhau cần được mã hóa. Trong cả hai trường hợp, mỗi thông điệp được mã hóa với sự trợ giúp của các phần khác nhau của khóa - đó là các khóa con. Những khóa con này không được chia sẻ giữa hai bên tham gia mà chỉ có một số thông tin được chia sẻ giữa các bên. Dựa trên những thông tin này, hai bên tham gia có thể sinh ra khóa động [2, 3].
Bộ sinh đồng dư tuyến tính
Trong phương pháp đề xuất, số ngẫu nhiên cho khóa động được sinh ra bằng cách sử dụng LCG. Phương pháp tuyến tính là các thuật toán được biết đến và sử dụng rộng rãi nhất để sinh ra các số ngẫu nhiên. Ưu điểm của phương pháp này là tốc độ, dễ cài đặt, tính sẵn dùng của mã khả chuyển, các tham số và các kết quả kiểm tra. LCG là một bộ sinh số ngẫu nhiên truyền thống, trong đó phải chọn số đồng dư m, một phần tử nhân α, một phần tử cộng b và một giá trị khởi tạo yo [4].
Ký hiệu bộ sinh này là LCG(m,a,b,yo)
Hệ mã dùng một lần
Ý tưởng chính của hệ mã dùng một lần là để tránh tình trạng các khóa mật mã được chia sẻ dài hạn. Nói cách khác, khi hệ mã dùng một lần thật sự ngẫu nhiên, thì nó không thể bị phá vỡ bằng cách phân tích các thông điệp liên tiếp [5]. Trong hệ mã dùng một lần, các phần đệm (pad) được chia sẻ giữa người gửi và người nhận. Để giải mã thông điệp thì phần đệm được giải mã ở phía người nhận phải bằng phần đệm được mã hóa ở phía người gửi [5]. Do đó, phần đệm phải được phân phối giữa các bên.
Trong thực tế, việc phân phối phần đệm giữa các bên qua mạng là một điểm yếu trong hệ thống mã một lần. Tương tự như các hệ thống bảo mật hiện nay, để có khóa mã đối xứng sử dụng cho việc bảo mật các thông điệp truyền thông thì một yêu cầu bắt buộc là phải thực hiện trao đổi khóa an toàn giữa các bên trước khi thông điệp được gửi đi. Thông thường, việc trao đổi khóa có thể thực hiện qua các thuật toán khóa công khai như Diffe-Hellman [6] hoặc MQV [7].
Mỗi khóa mật mã chỉ an toàn trong một khoảng thời gian nhất định. Ngoài ra, các khóa lớn hơn thường yêu cầu nhiều tài nguyên tính toán hơn, đặc biệt là trong hệ mã bất đối xứng. Trên thực tế, các khóa quá lớn có thể bị lợi dụng cho các cuộc tấn công từ chối dịch vụ, bằng cách kẻ tấn công gây quá tải cho hệ thống xử lý mật mã. Tuy nhiên, độ an toàn của các thuật toán này dựa trên các khóa được chia sẻ dài hạn lại mâu thuẫn với ý tưởng ban đầu của hệ mã dùng một lần. Việc tăng kích cỡ khóa không phải lúc nào cũng là giải pháp tốt nhất, bởi dù khóa có lớn bao nhiêu nhưng bản thân hệ mật của nó cuối cùng vẫn có thể bị phá vỡ [5].
Thuật toán đề xuất
Trong phương pháp đề xuất, mỗi thông báo chỉ được mã hóa sử dụng khóa động một lần sau khi việc giải mã khóa đó được thực hiện. Đồng thời, sau khi giải mã thông điệp xong sẽ thực hiện một hàm hủy bỏ khóa. Với mọi quá trình mã hóa, giải mã đều có một khóa mới được sinh ra, ý tưởng này dựa trên hệ mã dùng một lần. Hình 1 mô phỏng thuật toán đề xuất trên MATLAB 7.5.
Hình 1. Hệ thống đề xuất
Sinh khóa động
Khóa động trong phương pháp đề xuất, được sinh ra bằng cách sử dụng bộ LCG. Đầu vào của người dùng là một khóa văn bản IK độ dài tối thiểu của IK là 6 bit và tối đa là 14 bit. Tùy thuộc vào kích cỡ khóa văn bản mà giá trị cơ sở (yo) được xác định từ bảng cơ sở (Bảng 1). Một khóa kết hợp IBK được gắn với khóa người dùng nhập vào để tạo ra ma trận cỡ 14 x 14. Một hàm ngẫu nhiên (Fr) được sử dụng để sinh khóa động. Hàm Fr tham gia vào các thao tác ma trận khác nhau như: phép nhân, dịch chuyển, chia phần dư…, trong đó, số ngẫu nhiên yo được thêm vào ma trận cuối cùng để tạo ra khóa động.
Thuật toán 1. Thuật toán sinh khóa
Bước 1. Người dùng nhập vào khóa IK kích cỡ (α) nằm trong khoảng 6 đến 14 bit.
α = length(IK);
Bước 2. Xác định giá trị cơ sở tương ứng (yo) của α từ Bảng 1.
y0 = y0(1,α);
Bước 3. Tính khóa kết hợp IBK:
IBK= rand(1,16);
b= α + IK;
Bước 4. Tính y1 sử dụng LCG:
y1 = α * y0 + b mod m
Bước 5. Gọi hàm ngẫu nhiên Fr để sinh khóa bí mật động.
Bước 6. Thoát
Bảng 1. Bảng cơ sở
Mã MATLAB cho hàm sinh ngẫu nhiên (Fr):
Quá trình mã hóa
Phương pháp đề xuất đưa ra một lược đồ mã hóa bao gồm bốn vòng như trình bày trong Hình 2. Trong mỗi vòng, các phần khác nhau của khóa động là các khóa con được áp dụng và các thao tác như XOR, chuyển vị, dịch chuyển được thực hiện để tạo ra bản mã. Kích thước của khối bản rõ là 49 bit. Ban đầu, bản rõ có độ dài tùy ý được chia thành các khối kích cỡ 49 bit. Kích cỡ của khóa động là 196 bit (ma trận 14 x 14). Khóa động được chia thành bốn phần: DKP1(49 bit), DKP2 (49 bit), DKP3 (49 bit), DKP4 (49 bit).
Mã MATLAB của phần 'DetNB' (xác định số khối):
Phần đầu tiên của khóa động (DKP1) áp dụng cho khối đầu tiên của bản rõ, phần thứ hai (DKP2) áp dụng vào kết thúc của vòng 1. Chuỗi thao tác thực hiện gồm có: phép cộng (ADD), chuyển vị (Transpose), XOR và dịch vòng (Rotation). Thao tác dịch vòng được định nghĩa như sau: c(m) = mod ((m+3),26), vòng này sinh ra bản mã gọi là bản mã riêng vòng 1 (RPC1).
Ở vòng thứ hai, RPC1 được chia thành ba khối. Khóa động được chia thành hai phần: DKP (bao gồm 64 bit đầu tiên của khóa động) và DKL (gồm 147 bit còn lại). DKL tiếp tục được chia thành ba khối 49 bit DKL1, DKL2, DKL3. Ba phần này được áp dụng riêng rẽ trên ba khối của RPC1, thực hiện các thao tác XOR, chuyển vị, dịch chuyển, phép cộng để tạo ra bản mã riêng vòng 2 (RPC2).
Ở vòng thứ ba, RPC2 được chia thành hai khối. Sẽ sử dụng lại phần khóa động thực hiện ở vòng hai và chia thành ba phần DKF1, DKF2, DKF3. Ban đầu, DKF2 được áp dụng trên RPC2. Cuối vòng này, DKF3 được áp dụng trên RPC2. Sau vòng này thu được bản mã riêng vòng 3 (RPC3).
Cuối cùng ở vòng bốn, DKF2 và DKF3 được áp dụng trên RPC3 để tạo ra bản mã riêng vòng bốn (RPC4) là bản mã thu được. Sau đó, một ma trận ngẫu nhiên kích cỡ 5x1 được thêm vào RPC3 để tạo ra bản mã kích cỡ S + 5 bit.
Hình 2. Quá trình mã hóa
Quá trình giải mã
Giải mã là quá trình đảo ngược lại của mã hóa như mô tả trong Hình 3. Quá trình giải mã cũng gồm bốn vòng, mỗi vòng sinh ra một bản rõ riêng, sau đó được chuyển sang vòng tiếp theo để tạo ra bản rõ mong muốn.
Ở vòng đầu tiên của quá trình giải mã, bản rõ riêng vòng 1 (RPT1) được sinh ra. Tương tự, RPT2, RPT3 và RPT4 ở vòng 4 lần lượt được sinh ra. Một ma trận ngẫu nhiên kích cỡ 5 x 1 được tách ra khỏi RPT4 để tạo ra bản rõ ‘S’ bit.
Cuối cùng là ghép các khối bản rõ đã được giải mã từ khối bản mã để tạo ra bản rõ ban đầu.
Phân tích hiệu năng
Phần này mô tả sự khác nhau của kích cỡ khóa, kích cỡ khối của các hệ mật khóa đối xứng khác nhau. Thời gian thực hiện mã hóa, giải mã của các thuật toán. Nếu Bảng 2 mô tả kích cỡ khóa và kích cỡ khối, thì Bảng 3 chỉ ra thời gian thực hiện các thuật toán khác và thuật toán được đề xuất. Chức năng cốt lõi của thuật toán này là khóa được làm động, trong đó các phần khác nhau của khóa sẽ áp dụng ở các vòng khác nhau của thuật toán. Khóa bí mật đó được sử dụng chỉ cho một cặp mã hóa, giải mã, có nghĩa là khóa này chỉ sử dụng cho một lần mã hóa/giải mã. Khóa được sinh ra này được kỳ vọng là hoàn toàn ngẫu nhiên và bất định một cách tự nhiên.
Cũng như đã nêu ở trên, việc tính toán là không khả thi cho những người tấn công để đoán các khóa được sử dụng. Tuy nhiên, ưu điểm chính của thuật toán này là thời gian tính toán để mã hóa thông điệp là ít (vì chỉ có bốn vòng mã hóa). Việc mã hóa mọi thông tin nhạy cảm của thuật toán có thể chứng minh là hữu ích. Do đó, có thể ứng dụng thuật toán đề xuất vào trong hệ thống ngân hàng, giao dịch tài chính qua mạng Internet và các ứng dụng trong quân sự.
Hình 3. Quá trình giải mã
Bảng 2. So sánh kích cỡ khoá và kích cỡ khối
Bảng 3. So sánh độ phức tạp thời gian tính toán
Kết luận
Bài báo giới thiệu thuật toán mã đối xứng sử dụng khóa động và LCG để sinh khóa đã được đề xuất bởi các tác giả trong [1]. Thuật toán này chỉ ra rằng để cung cấp một mức độ bảo mật cao thì đòi hỏi rất nhiều tính toán liên quan. Theo các tác giả, phương pháp mã hóa này có thể áp dụng để mã hóa và giải mã bất kỳ loại dữ liệu nào dành cho các ứng dụng công cộng để gửi dữ liệu bí mật.
TÀI LIỆU THAM KHẢO [1]. Zeenat Mahmood, J. L Rana and Prof. Ashish khare, “Symmetric Key Cryptography using Dynamic Key and Linear Congruential Generator (LCG)”, International Journal of Computer Applications (0975 – 8887), Volume 50– No.19, July 2012. [2]. Yunpeng Zhang, Fei Zuo, Zhengjun Zhai and Cai Xiaobin, 2008, “A New Image Encryption Algorithm Based on Multiple Chaos System”, International Symposium on Electronic Commerce and Security, pp. 347-350. [3]. Xukai Zou, Yogesh Karandikar and Elisa Bertino, “A Dynamic key management solution to access hierarchy”, International Journal of Network Management 2007, pp. 437- 450. [4]. P. Hellekalek “Good random number generators are (not so) easy to find Mathematics and Computers in Simulation”, 46 (1998) 485±505. [5]. Ayushi, “A Symmetric Key Cryptographic Algorithm”, International Journal of Computer Applications (0975 8887), Volume 1 – No. 15. [6]. W. Diffie and M. E. Hellman, “New directions in cryptography”, IEEE Transactions on Information Theory, vol. 22, no. 6, pp. 644-654, 1976. [7]. L. Law, A. Menezes, M. Qu, J. Solinas, S.Vanstone, “An effcient protocol for authenticated key agreement”, Designs, Codes |