Năm 2013, tác giả Fatma Ahmed và các cộng sự [1] đã giới thiệu một thuật toán AES cải biên với ngân hàng các hộp thế hoạt động giống như cơ chế khối quay (Rotor) và ma trận MDS phụ thuộc khóa - đặt tên là SDK-AES. Thuật toán SDK-AES được thiết kế để phụ thuộc khóa và có khả năng kháng lại tấn công tần số (Frequency Attack).
Khác với AES, thuật toán SDK-AES có thể mã hóa các khối bản rõ có độ dài 128 byte tạo ra các khối bản mã có độ dài tương tự. Độ dài khóa có thể là 128, 192 hoặc 256 byte. Số lượng tổng thể của các vòng tùy thuộc vào độ dài khóa, có thể là 10, 12 hoặc 14 vòng tương ứng. Theo [1], giả thiết độ dài khóa là 128 byte. Đầu vào của thuật toán mã hóa và giải mã là các khối có độ dài 128 byte. Khối này được chép lại thành một mảng trạng thái dạng ma trận 16x8 của các byte, ma trận này sẽ được thay đổi ở mỗi giai đoạn của quá trình mã hóa hoặc giải mã. Sau giai đoạn cuối cùng, mảng trạng thái được chép lại vào một ma trận đầu ra. Tương tự, khóa 128 byte cũng được mô tả bởi một ma trận 16x8 của các byte. Khóa này sau đó được mở rộng vào một mảng các từ của lược đồ khóa; mỗi từ gồm 4 byte và lược đồ khóa tổng thể bao gồm 32x11 từ. Quá trình mã hóa và giải mã của SDK-AES tương đối giống với AES. Hình 1 chỉ ra cấu trúc tổng thể của thuật toán SDK-AES.
Hình 1. Cấu trúc của thuật toán SDK-AES
Cấu trúc hàm vòng của thuật toán SDK-AES gần tương tự như AES. Sự khác nhau của hai thuật toán này là các hộp thế và ma trận MDS, đây là những thành phần bí mật và phụ thuộc khóa. Ngoài ra, trong vòng cuối cùng của quá trình mã hóa, hộp thế lại được dịch vòng một lần nữa.
Ngân hàng hộp thế
Trong thuật toán SDK-AES, ngân hàng các hộp thế phụ thuộc khóa hoạt động giống cơ chế khối quay [2]. Ngân hàng hộp thế chứa hai hộp thế, hộp thế đầu tiên là hộp đã được sử dụng trong AES. Để duy trì cho cấu trúc của mã khối đơn giản, hộp thế thứ hai được xây dựng từ hộp thế thứ nhất bằng cách dịch chuyển một lượng, lượng này được tính từ khóa của người dùng. Ở bước đầu tiên, tính tổng kiểm tra (Checksum) “Adler-32” cho khóa của người dùng. Kết quả đầu ra có độ dài 32 bit. Theo các tác giả, việc sử dụng thuật toán tổng kiểm tra sẽ đưa ra một kết quả khác, khi khóa của người dùng được thay đổi. Kết quả đầu ra từ Checksum sẽ được chia thành bốn khối con, mỗi khối có độ dài 8 bit. Bốn khối con đó sẽ được cộng XOR với nhau để tạo ra một khối có độ dài 8 bit, khối này biểu diễn con số sẽ sử dụng để dịch chuyển hộp thế đầu tiên để sinh ra hộp thế thứ hai.
Trong quá trình mã hóa, byte đầu vào được ánh xạ tới 1 byte mới thông qua ngân hàng hộp thế. Đầu tiên, byte đầu vào được ánh xạ bởi hộp thế thứ nhất. Đầu ra sẽ là đầu vào của hộp thế thứ hai. Nếu hộp thế thứ nhất này dịch vòng 1 byte thì sau 256 lần hộp thế sẽ trở lại vị trí ban đầu của nó và hoạt động này sẽ được lặp lại với tất cả 256 byte. Tuy nhiên, hộp thế thứ hai sẽ được dịch vòng bất quy tắc. Sự dịch vòng này bao gồm hai bước. Bước thứ nhất là dịch vòng hộp thế thứ hai trong vòng 10 sau khi ánh xạ mỗi byte bởi các số lẻ (1, 3, 5 và 7). Đầu tiên, dịch vòng hộp thế thứ hai bởi 1 byte cho đến khi dịch vòng hết 256 byte, sau đó dịch vòng 3 byte cho 256 byte đầu vào tiếp theo. Tiếp đó, dịch vòng 5 byte cho 256 byte đầu vào tiếp theo. Cuối cùng, dịch vòng 7 byte cho đến khi có 256 byte đầu vào. Ở bước thứ hai, sau khi vòng 10 kết thúc, dịch vòng hộp thế thứ hai 1 byte. Hai bước trên đảm bảo rằng hộp thế thứ hai dịch vòng bất quy tắc. Bởi sau khi mã hóa mỗi khối bản rõ, hộp thế thứ hai sẽ ở trong một sự sắp xếp khác, kể cả khi lặp lại dữ liệu đầu vào thì đầu ra sẽ hoàn toàn là khác nhau.
Ý tưởng cơ bản là làm cho hộp thế giống như hệ mật khối quay đảm bảo được độ an toàn và quá trình giải mã đơn giản. Trong thuật toán giải mã, không thực hiện dịch vòng các hộp thế mà chỉ trừ đầu ra từ nghịch đảo của hộp thế thứ hai với số lần mà các byte hộp thế thứ hai đã được dịch vòng. Chỉ thực hiện dịch vòng hộp thế thứ hai và giữ nguyên hộp thế thứ nhất, hộp thế thứ hai chỉ có người gửi và người nhận mới biết.
Biến đổi ShiftRows
Dữ liệu đầu vào được sắp thành 16 hàng và 8 cột. Biến đổi ShiftRow được thực hiện theo cách: giữ nguyên hàng đầu tiên và hàng thứ 9 của mảng trạng thái. Với hàng 2, thực hiện dịch vòng trái 1 byte. Với hàng 3, thực hiện dịch vòng trái 2 byte. Tiếp tục cho đến hàng 8, dịch vòng trái 7 byte. Sau đó, thực hiện dịch vòng trái hàng 10 với 1 byte, hàng 11 với 2 byte, cho đến hàng 16 với 7 byte. Biến đổi ShiftRow ngược thực hiện dịch vòng theo hướng ngược lại của mỗi hàng trong 16 hàng.
Ma trận MDS phụ thuộc khóa
Trong SDK-AES, các tác giả thiết kết các ma trận MDS động mới phụ thuộc khóa của người dùng. Số lượng các ma trận là 8, mỗi ma trận đều phụ thuộc khóa đó. Trong quá trình mã hóa, chỉ sử dụng một ma trận từ 8 ma trận cho mọi khối dữ liệu. Ma trận được lựa chọn phụ thuộc vào các khóa con và bản rõ. Các ma trận mới là tự nghịch đảo để ma trận tương tự có thể được sử dụng cho thuật toán giải mã, do đó làm giảm độ phức tạp của hệ thống.
Ma trận MDS mới là một ma trận vòng 4x4. Mã MDS là (12,8,5). Thuộc tính MDS của ma trận này được kiểm tra, nghĩa là một mã (12,8,5) là mã MDS nếu d = n - k +1. Điều này có thể thực hiện bằng cách kiểm tra số nhánh của phép biến đổi. Đầu vào với 1 hoặc 2 byte hoạt động được nhân với ma trận trên và đầu ra được kiểm tra, nếu tổng số các byte hoạt động bao gồm các byte hoạt động đầu vào và các byte hoạt động đầu ra là bằng 5 thì nó thỏa mãn thuộc tính MDS. Ma trận MDS mới được kiểm tra đối với thuộc tính tự nghịch đảo. Các tác giả thiết kế nó bằng cách cung cấp các điều kiện tự nghịch đảo từ ma trận dưới đây:
Với điều kiện:
Vì vậy, lựa chọn các phần tử cho ma trận MDS mới thỏa mãn các điều kiện trên. Sau đó, chọn b1 = b3 = 1 . Vì phép nhân với 1 là “free” nên có thể nâng cao tính hiệu quả trong tính toán với các ma trận MDS. Các phần tử b0 và b2 là phụ thuộc khóa. Ở bước đầu tiên, lấy 32 bit (đầu ra từ tổng kiểm tra của khóa) và chia nó thành 8 khối con, mỗi khối có độ dài 4 bit. Giá trị của mỗi khối con biểu diễn phần tử b0 trong mỗi ma trận D-MDS (8 khối con, tương ứng với 8 giá trị b0 cho 8 ma trận MDS). Phần tử b2 được tính từ phần tử nghịch đảo theo phép cộng của b0 trong GF(24).
Trong SDK-AES, dữ liệu được sao chép vào một ma trận 16x8 của các byte. Đầu tiên, chia mảng trạng thái của dữ liệu thành các mảng con, mỗi mảng là ma trận 4x4 của các byte. Do đó, thu được 8 mảng trạng thái con. Mỗi phần tử trong ma trận tích là tổng của các tích các phần tử của một hàng và một cột. Trong trường hợp này, các phép cộng và phép nhân đều được thực hiện trên GF(28). Đảm bảo rằng, mỗi byte sẽ ảnh hưởng tới tất cả các byte khác bằng cách thực hiện “tráo đổi hàng” sau khi nhân với ma trận MDS trên. Phương trình (4) biểu diễn việc thực hiện “tráo đổi hàng”.
Mở rộng khóa SDK-AES
Thuật toán mở rộng khóa SDK-AES lấy một khóa gồm 32 từ (128 byte) và tạo ra một mảng tuyến tính 32x11 từ. Mảng này đủ để cung cấp một khóa vòng gồm 32 từ cho biến đổi AddRoundKey khởi tạo và biến đổi này cho 10 vòng mã hóa. Thủ tục mở rộng khóa của SDK-AES giống với thủ tục mở rộng khóa của AES.
Kết luận
Các mã khối động với những thành phần “động” có khả năng làm cho các nhà mã thám khó khăn hơn trong thám mã. Do đó, việc nghiên cứu các cách “động khóa” mã khối là một chủ đề nên được đầu tư nghiên cứu. Bài viết này đã giới thiệu một cách tiếp cận trong việc làm động mã khối. Đây có thể là một tham khảo hay cho các nhà nghiên cứu về mã khối và mã khối động.
TÀI LIỆU THAM KHẢO [1]. Fatma Ahmed and Dalia Elkamchouchi, “Strongest AES with S-Boxes Bank and Dynamic KeyMDS Matrix (SDK-AES)”, International Journal of Computer and Communication Engineering, Vol. 2, No. 4, July 2013, pp. 1-5. [2]. W. O. Chan, “Cryptanalysis of SIGABA”, Master’s Thesis, Department of Computer Science, San Jose State University, May 2007. |
TS. Trần Thị Lượng, Học viện Kỹ thuật mật mã
07:00 | 24/05/2021
10:00 | 08/10/2019
08:00 | 06/03/2020
13:00 | 12/08/2019
08:00 | 06/01/2021
15:00 | 15/09/2016
08:00 | 10/02/2024
22:58 | 19/05/2015
09:00 | 15/11/2024
Ngày nay, những vụ lộ, lọt thông tin cá nhân, tài chính gây chấn động toàn cầu, cho đến những cuộc bầu cử bị can thiệp, bí mật quốc gia bị rò rỉ đều nhanh chóng trở thành chủ đề thu hút trên các mặt báo lớn như The New Yorker, The Wall Street Journal…. tất cả đều cho thấy an ninh mạng đang thực sự trở thành tâm điểm chú ý của toàn xã hội.
08:00 | 26/09/2024
Mới đây, Discord đã giới thiệu giao thức DAVE (Discord Audio and Video End-to-End Encryption), một giao thức mã hóa đầu cuối tùy chỉnh (E2EE) được thiết kế để bảo mật các cuộc gọi âm thanh và video trên nền tảng này trước các nguy cơ nghe lén và ngăn chặn trái phép từ tác nhân bên ngoài.
14:00 | 05/08/2024
Mỗi quốc gia sẽ có các quy định và chính sách riêng để bảo vệ dữ liệu cá nhân, nhưng có một số nguyên tắc và biện pháp chung mà hầu hết các quốc gia áp dụng để đảm bảo an toàn và quyền riêng tư cho dữ liệu cá nhân của công dân. Dưới đây là một số cách mà các nước trên thế giới áp dụng bảo vệ dữ liệu cá nhân cho công dân của mình.
09:00 | 28/04/2024
Thời gian gần đây, lĩnh vực an toàn thông tin ghi nhận hình thức bảo mật Bug Bounty đang ngày càng nở rộ. Tuy nhiên, bên cạnh những số liệu khủng về giải thưởng, lỗ hổng được phát hiện, vẫn có những ý kiến trái chiều về hiệu quả thực sự mà Bug Bounty đem lại cho các tổ chức, doanh nghiệp.
Trong bối cảnh phát triển mạnh mẽ của Trí tuệ nhân tạo (AI), vấn đề khai thác lỗ hổng (Jailbreak) đã trở thành một thách thức đáng chú ý trong việc quản lý và kiểm soát mô hình ngôn ngữ lớn tạo sinh (Generative Pre-trained Transformer - GPT). Trong phạm vi bài viết này, nhóm tác giả sẽ giới thiệu tổng quan về mô hình ngôn ngữ lớn GPT hiện nay, một số phương thức khai thác lỗ hổng trong mô hình GPT và cung cấp một góc nhìn về khai thác lỗ hổng trong tương lai.
22:00 | 30/01/2025
Trong kỷ nguyên số hóa, việc ứng dụng các công nghệ hiện đại đóng vai trò rất quan trọng trong bảo vệ dữ liệu, hệ thống máy tính, ngăn chặn chúng khỏi sự tấn công hoặc truy cập trái phép. Blockchain và trí tuệ nhân tạo (AI) là hai trong số những công nghệ mạnh mẽ đã được ứng dụng và phát huy hiệu quả trong nhiều lĩnh vực của đời sống. Với những ưu thế vượt trội của từng công nghệ, việc kết hợp AI và Blockchain có thể đem lại nhiều giải pháp hiệu quả nhằm đảm bảo an ninh mạng (ANM), an toàn thông tin (ATTT). Bài viết sẽ giới thiệu về ứng dụng của công nghệ AI và Blockchain trong bảo đảm ANM, ATTT cũng như phân tích khả năng tích hợp hai công nghệ này trong phát hiện, ngăn chặn các mối đe dọa hiện nay.
10:00 | 06/02/2025