Mã hóa và giải mã

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng (Trang 58 - 60)

Tên hàm Giải thích

AddRoundKey() Được sử dụng trong công đoạn mã hóa và công đoạn giải mã. Hàm này thực hiện phép XOR bit giữa trạng thái trung gian (state) và một khóa vòng lặp (Round Key). kích thước của trạng thái bằng Kích thước của một Round Key.

MixColumns() Hàm này sử dụng trong công đoạn mã hóa, nhận tất cả các cột của một trạng thái và trộn với dữ liệu của nó để nhận được cột mới

ShiftRows() Hàm này sử dụng trong công đoạn mã hóa, xử lý các trạng thái bằng cách dịch vòng ba hàng cuối của trạng thái với số lần dịch khác nhau

SubBytes() Hàm này sử dụng trong công đoạn mã hóa, xử lý một trạng thái bằng cách sử dụng một bảng thế phi tuyến các byte, thao tác trên mỗi byte một cách độc lập InvMixColumns() Hàm này sử dụng trong công đoạn giải mã, là hàm

ngược của hàm MixColumns()

InvShiftRows() Hàm này sử dụng trong công đoạn giải mã, là hàm ngược của hàm ShiftRows()

Inv SubBytes() Hàm này sử dụng trong công đoạn giải mã, là hàm ngược của hàm SubBytes()

3.2.1 Công đoạn mã hóa

Khởi tạo, bản rõ được sao chép vào mảng trạng thái sử dụng các quy ước như trên. Mảng trạng thái khởi tạo được biến đổi bằng cách thực hiện một hàm vòng Nr lần (10, 12 hoặc 14 phụ thuộc vào độ dài của khóa) sau khi cộng với khóa RoundKey, trong đó lần cuối cùng thực hiện khác với các lần trước đó. Sau lần lặp cuối cùng trạng thái cuối sẽ được chuyển thành output của thuật toán. Bằng cách sử dụng một dãy các khóa được biểu diễn như là mảng một chiều của các word 4 byte được sinh ra từ thử tục sinh khóa hàm vòng được tham số hóa.

Tất cả các vòng đều thực hiện công việc giống nhau dựa trên 4 hàm theo thứ tự SubBytes(), ShiftRows(), MixColumns(), và AddRoundKey() ngoại trừ vòng cuối cùng không thực hiện hàm MixColumns().[4].

Hàm SubBytes()

Thực hiện phép thay thế các byte của mảng trạng thái bằng cách sử dụng một bảng thế khả nghịch S-box, xây dựng bằng cách kết hợp hai biến đổi sau:

1. Nhân nghịch đảo trên trường hữu hạn GF(28), phần tử {00} được ánh xạ thành chính nó

bi’= bi b(i+4)mod8  b(i+5)mod8 b(i+6)mod8 b(i+7)mod8 ci, trong đó 0 i 8 là bit thứ i của byte b tương ứng và ci là bit thứ I của byte c với giá trị {63} hay {01100011}

Dưới đây là hình minh họa kết quả áp dụng hàm biến đổi SubBytes() đối với mảng trạng thái

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng (Trang 58 - 60)