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
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.
13:00 | 01/08/2024
Facebook là trang mạng xã hội thu hút đông đảo người dùng, giúp mọi người kết nối, trao đổi và liên lạc thông tin. Tuy nhiên Facebook cũng trở thành miếng mồi hấp dẫn cho tin tặc với nhiều chiêu trò lừa đảo tinh vi khiến người dùng sập bẫy. Dưới đây là một số lời khuyên đối để bảo vệ tài khoản cá nhân trên Facbook.
14:00 | 23/05/2024
Trình duyệt Chrome đang được rất nhiều người tin dùng bởi độ ổn định và khả năng bảo mật. Tuy nhiên, sự phổ biến này cũng khiến nó trở thành mục tiêu của tin tặc.
14:00 | 14/09/2023
NFT (Non-fungible token) là một sản phẩm của thời đại công nghệ mới và đang phát triển như vũ bão, ảnh hưởng sâu rộng đến nhiều lĩnh vực. Thị trường NFT bùng nổ mạnh mẽ vào năm 2021, tăng lên khoảng 22 tỷ USD và thu hút ước tính khoảng 280 nghìn người tham gia. Nhưng khi thị trường này phát triển, phạm vi hoạt động của tin tặc cũng tăng theo, đã ngày càng xuất hiện nhiều hơn các báo cáo về những vụ việc lừa đảo, giả mạo, gian lận và rửa tiền trong NFT. Bài báo sau sẽ giới thiệu đến độc giả tổng quan về NFT, các hành vi lừa đảo NFT và cách thức phòng tránh mối đe dọa này.
Trong thời đại kỹ thuật số ngày nay, ransomware đã trở thành một trong những mối đe dọa nguy hiểm nhất đối với cả cá nhân lẫn tổ chức. Đây không chỉ là một loại phần mềm độc hại, mà còn là một công cụ về chính trị và kinh tế của các nhóm tội phạm mạng. Ransomware không chỉ gây tổn thất về tài chính mà còn đe dọa đến sự bảo mật thông tin, uy tín và hoạt động kinh doanh của các tổ chức. Bài báo này sẽ trang bị một số kỹ năng cần thiết cho các tổ chức để thực hiện các biện pháp giúp giảm thiểu tác động của các cuộc tấn công ransomware, nhấn mạnh việc triển khai một cách chủ động để bảo vệ hệ thống trước các mối nguy hiểm tiềm tàng.
10:00 | 04/10/2024
Trong thời đại số hóa mạnh mẽ, khi các mối đe dọa an ninh mạng ngày càng trở nên tinh vi và khó lường, mô hình bảo mật Zero Trust nổi lên như một chiến lược phòng thủ vững chắc, giúp các tổ chức/doanh nghiệp đối phó với những cuộc tấn công mạng ngày càng gia tăng.
13:00 | 07/10/2024