GIỚI THIỆU VỀ MÃ HÓA AES

Một phần của tài liệu Mã hóa bảo mật trong Wimax (Trang 97 - 100)

Chuẩn mã hóa tiên tiến AES là loại mã giành chiến thắng trong cuộc thi, được tổ chức vào năm 1997 bởi chính phủ US, sau khi chuẩn mã hóa dữ liệu DES được cho là quá yếu do nó có kích thước khóa nhỏ và do sự phát triển của công nghệ về sức mạnh của vi xử lý. 15 ứng cử viên được chấp nhận vào năm 1998, và căn cứ vào những bình luận của cộng đồng, danh sách rút gọn còn 5 ứng cử vào năm 1999. Tháng 10 năm 2000, một thuật toán trong số 5 thuật toán này đã được lựa chọn như là một chuẩn của tương lai, đó là: phiên bản được chỉnh sửa của Rijndael [15]. Thuật toán này được thiết kế để thay thế cho thuật toán DES, do các nhà khoa học người Bỉ là Joan Daemen và Vincent Rijmen phát minh năm 1997. Do vậy nó còn được gọi là thuật toán Rijndael, đây là thuật toán các khối cipher, là đưa n bit của một khối dữ liệu cần mật mã (plaintext) ở đầu vào và chuyển đổi nó thành n bit của một khối dữ liệu đã mật mã hóa (ciphertext) ở đầu ra thông qua việc sử dụng một khóa đối xứng [13]. AES dùng một khối đầu vào thường có độ lớn 128 bit và tạo ra đầu ra tương ứng một khối cùng kích cỡ. Một đặc điểm quan trọng là khóa có thể có kích thước bất kì, phụ thuộc vào mục đích sử dụng, và AES thường sử dụng 3 loại khóa khác nhau đó là 128, 192 và 256 bit, kí hiệu AES-128, AES-192, AES-256 [15].

Một số quy ước kí hiệu:

Đầu vào và đầu ra: Mỗi đầu vào và đầu ra đối với thuật toán AES bao gồm một chuỗi 128 bit. Các chuỗi bit này đôi khi còn được gọi là các khối và số bit chúng chứa trong đó dùng để chỉ độ dài của khối. Khóa mã hóa cho thuật toán AES cũng là một chuỗi bit có độ dài 128, 192 hay 256 bit.

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

Các bit trong chuỗi được đánh số bắt đầu từ 0 và kết thúc ở vị trí nhỏ hơn chiều dài chuỗi là 1. Số i được gán cho 1 bit được xem như là chỉ số, và nằm trong dải 0 ≤ i < 128, 0 ≤ i <192, 0 ≤ i <256, tùy thuộc vào chiều dài khối và chiều dài khóa như trên.

Bytes : Đơn vị cơ bản của quá trình thực hiện trong AES là byte. Đầu vào, đầu ra và khóa mã hóa được mô tả như là một dãy byte. Đầu vào, đầu ra, khóa được kí hiệu là a, các byte trong dãy kết quả được kí hiệu theo 2

dạng an hoặc a[n], trong đó n là một trong các số trong các dải sau : Block

length = 128 bits, 0 ≤ n < 16 , Key length = 128 bits, 0 ≤ n < 16, Key

length = 192 bits, 0 ≤ n < 24, Key length = 256 bits, 0 ≤ n < 32

Tất cả các giá trị trong thuật toán AES được biểu diễn như là sự ghép nối

của các giá trị bit riêng biệt được sắp xếp {b7, b6, b5, b4, b3, b2, b1, b0}.

Các byte như này biểu diễn được như là các phần tử trường hữu hạn sử dụng biểu diễn đa thức sau :

Dãy các byte: Dãy các byte được biểu diễn dưới dạng a0a1a2… a15. Các

byte và các bit trong byte được viết từ dãy 128 bit input0 input1 input2

input126 input127 đuợc viết như sau :

a0 = {input0, input1,…,input7} a0 = {input8, input9,…,input15}

a0 = {input120, input121,…,input127}

Một cách tổng quát : an = {input8n, input8n+1,…,input8n+7}

Hình 3.11: Chỉ số byte và bit

Bảng trạng thái (State): Hoạt động của thuật toán AES được biểu diễn theo một mảng hai chiều các bytes, gọi là bảng trạng thái. Bảng trạng thái

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

bao gồm 4 hàng bytes, mỗi hàng chứa Nb byte, trong đó Nb là độ dài

khối chia cho 32. Trong bảng trạng thái, byte được ký hiệu là s, và mỗi byte có 2 chỉ số riêng biệt là chỉ số hàng r, 0 ≤ r < 4 và chỉ số cột c, 0 ≤ c < Nb, kí hiệu s[r,c], hay sr,c.

Tại bước bắt đầu mã hóa hay giải mã, đầu vào được sao chép vào bảng trạng thái. Quá trình mã hóa và giải mã sau đó được thực hiện trên bảng trạng thái này, rồi các giá trị cuối cùng của bảng được sao chép thành đầu ra, được mô tả như hình sau:

Hình 3.12 : Bảng trạng thái đầu vào và đầu ra

.

Với s[r, c] = in[r + 4c],0≤ r < 4, 0≤ c < Nbout[r + 4c] = s[r, c], ≤ r

<4, 0≤ c<Nb.

• Bảng trạng thái như là một mảng của các cột: 4 byte trong mỗi cột của

bảng trạng thái hình thành từ mã 32 bit, trong đó số hàng r cung cấp chỉ số cho 4 byte trong mỗi từ. Bảng trạng thái do đó được biểu diễn như là một

mảng một chiều gồm các từ 32 bit w0…w3 : w0 = s0,0 s1,0 s2,0 s3,0 ;w2 = s0,2 (adsbygoogle = window.adsbygoogle || []).push({});

s1,2s2,2s3,2 ; w1 = s0,1 s1,1 s2,1 s3,1 ; w3 = s0,3 s1,3 s2,3 s3,3

Các phép toán được sử dụng:

• Phép cộng XOR

• Phép nhân: Trong biểu diễn đa thức, phép nhân trong trường hữu hạn

GF(28) kí hiệu là • tương ứng với phép nhân đa thức theo modulo của một

đa thức sinh bậc 8 (một đa thức được gọi là đa thức sinh nếu nó chỉ chia

hết cho 1 và chính nó). Đối với thuật toán AES, đa thức sinh này là : m(x)

= x8 + x4 + x3 + x +1. Ví dụ :

Các đa thức với hệ số trong trường GF(28): Các đa thức bậc 4 với các hệ số là

các thành phần trường hữu hạn có thể được định nghĩa như sau: a(x) = a3x3 +

Mã hóa bảo mật trong Wimax Chương III : Mã hóa dữ liệu trong Wimax

a2x2 + a1x + a0, được kí hiệu như là một từ mã [a0, a1, a2, a3], biểu diễn một từ 4

byte. Khi thực hiện cộng hay nhân hai đa thức kiểu này, ta chỉ thực hiện cộng XOR, nhân các hệ số ( mỗi hệ số là 1 chuỗi 8 bit) với nhau. Ví dụ :

c(x) = c6x6 + c5x5 + c4x4 + c3x3 + c2x2 + c1x + c0

c0 = a0 b0 c4 = a3 b1 a2 b2 a1 b3

c1 = a1 b0 a0 b1 c5 = a3 b2 a2 b3

c2 = a2 b0 a1 b1 a0 b2 c6 = a3 b3

Trong đó ta kí hiệu c(x)=a(x) ⊗ b(x), b(x) = b3x3 + b2x2 + b1x + b0. Kết

quả c(x) thu được không biểu diễn một từ 4 byte, do vậy bước tiếp theo khi thực hiện phép nhân là chia c(x) theo modulo cho đa thức bậc 4 (chia lấy dư), kết quả thu được sẽ là đa thức có bậc nhỏ hơn 4. Đối với thuật toán AES, bước này được

thực hiện với đa thức x4 + 1, do đó ta có ximod (x4+ 1) = xi mod 4.

Bởi vì x4 + 1 không phải là đa thức bất khả quy trên trường GF(28), nên

phép nhân với một đa thức bậc 4 cố định là tất yếu không khả nghịch. Tuy nhiên thuật toán AES chỉ rõ một đa thức bậc 4 cố định có hàm nghịch đảo, đó là :

a(x) = {03}x3 + {01}x2 + {01}x + {02} a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e}

Một phần của tài liệu Mã hóa bảo mật trong Wimax (Trang 97 - 100)