Thuật toán mã hóa aes
Bạn đang xem: Thuật toán mã hóa aes
1. Tổng quan.
AES (viết tắt của từ giờ đồng hồ anh: Advanced Encryption Standard, tốt Tiêu chuẩn chỉnh mã hóa nâng cao) là một trong những thuật toán mã hóa khối được cơ quan chính phủ Hoa Kỳ áp dụng làm tiêu chuẩn mã hóa.Thuật toán được xây dựng dựa vào Rijndael Cipher phát triển bởi 2 nhà mật mã học bạn Bỉ: Joan Daemen và Vincent Rijmen.AES thao tác làm việc với các khối dữ liệu 128bit với độ lâu năm khóa 128bit, 192bit hoặc 256bit. Những khóa không ngừng mở rộng sử dụng trong quy trình được tạo thành bởi thủ tục sinh khóa Rijndael.Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một ngôi trường hữu hạn của các byte. Mỗi khối dữ liệu đầu vào 128bit được chia thành 16byte, có thể xếp thành 4 cột, từng cột 4 phần tử hay một ma trận 4x4 của những byte, nó call là ma trận trạng thái.Tùy thuộc vào độ dài của khóa khi thực hiện 128bit, 192bit hay 256bit nhưng thuật toán được triển khai với mốc giới hạn lặp không giống nhau.2. Công việc xử lý chính.
Quá trình không ngừng mở rộng khóa sử dụng thủ tục sinh khóa Rijndael.Quá trình mã hóa.II. Xây dựng thuật toán.1. Xây cất bảng S-box.
a. Bảng S – box thuận.
Bảng S-box thuận được sinh ra bởi việc xác định nghịch hòn đảo cho một giá trị khăng khăng trên GF(28) = GF(2)b. Bảng S-box nghịch đảo.
S-box nghịch đảo chỉ đơn giản và dễ dàng là S-box chạy ngược. Nó được tính bằng phép đổi khác affine nghịch đảo những giá trị đầu vào. Phép chuyển đổi affine nghịch đảo được trình diễn như sau:2. Giải mã sinh khóa phụ.
Quá trình sinh khóa bao gồm 4 bước:
Rotword: cù trái 8 bítSubBytesRcon: tính giá trị Rcon(i) trong các số ấy :Rcon(i) = x(i-1) mod (x8 + x4 + x3 + x + 1).ShiftRow
3. Quá trình mã hóa.
a. Sơ trang bị tổng quát.
b. Hàm AddRoundKey.
Được áp dụng từ vòng lặp đầu tiên tới vòng lặp NrTrong biến đổi Addroundkey(), một khóa vòng được cùng với state bằng một phép XOR theo từng bit solo giản.Mỗi khóa vòng gồm gồm 4 trường đoản cú (128 bit) được mang từ kế hoạch trình khóa. 4 từ đó được cộng vào từng cột của state, sao cho: = c. Hàm SubBytes.
Biến thay đổi SubBytes() sửa chữa mỗi byte riêng rẽ của state Sr,c bằng một giá trị new S’ r,c áp dụng bảng thay thế sửa chữa (S - box) được sản xuất ở trên.d. Hàm ShiftRow.
Trong biến đổi ShiftRows(), những byte trong ba hàng cuối cùng của tinh thần được dịch vòng đi các số byte khác nhau (độ lệch). Ví dụ :S’r,c = Sr,(c + shift ( r, Nb)) mod Nb (Nb = 4)Trong đó cực hiếm dịch shift (r, Nb) nhờ vào vào số hàng r như sau:Shift(1,4) = 1, shift(2,4) = 2, shift(3,4) = 3.Hàng thứ nhất không bị dịch, bố hàng sót lại bị dịch tương ứng:Hàng trước tiên giữ nguyên.Hàng thứ 2 dịch vòng trái 1 lần.Hàng vật dụng 3 dịch vòng trái 2 lần.Hàng vật dụng 4 dịch vòng trái 3 lần.e. Hàm MixColumns.
Biến đổi MixColumns() giám sát trên từng cột của state. Các cột được coi như là nhiều thức vào trường GF(28) và nhân cùng với một đa thức a(x) với:a(x) = (03)x^3 +(01)x^2 +(01)x + (02)Biến thay đổi này rất có thể được trình diễn như phép nhân một ma trận, cơ mà mỗi byte được đọc như là một trong những phần tử trong trường GF(28): s’(x) = a(x) s(x):Mô tả bằng ma trận như sau :III. Quá trình giải mã.1. Tổng quan.
Thuật toán lời giải khá như là với thuật toán mã hóa về mặt cấu tạo nhưng 4 hàm sử dụng là 4 hàm ngược của quá trình mã hóa.
2. Thuật toán giải mã.
InvCipher(byte in<4*Nb>, byte out<4*Nb>, word w