Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 46 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
46
Dung lượng
6,96 MB
Nội dung
Công ty luật Minh Khuê www.luatminhkhue.vn TIÊU CHUẨN QUỐC GIA TCVN 7816 : 2007 CÔNG NGHỆ THÔNG TIN - KỸ THUẬT MẬT MÃ - THUẬT TOÁN MÃ DỮ LIỆU AES Cryptographic technique - Cryptographic algorithms - Data Encryption Algorithm AES Lời nói đầu TCVN 7816 : 2007 xây dựng sở tham khảo tiêu chuẩn FIPS 197 ISO /IEC18033-3 TCVN 7816 : 2007 Tiểu ban Kỹ thuật Tiêu chuẩn TCVN/JTC1/SC 27 "Các kỹ thuật mật mã" biên soạn, Ban yếu Chính phủ đề nghị, Bộ Khoa học Cơng nghệ cơng bố CƠNG NGHỆ THƠNG TIN - KỸ THUẬT MẬT MÃ - THUẬT TOÁN MÃ DỮ LIỆU AES Information technology - Cryptographic technique - Data encryption algorithm AES Phạm vi áp dụng Tiêu chuẩn áp dụng cho việc mã hóa liệu hoạt động giao dịch điện tử tổ chức, công dân Việt Nam tổ chức, công dân nước ngồi có quan hệ kinh tế - xã hội với tổ chức, công dân Việt Nam Tài liệu viện dẫn ISO/IEC 18033-3:2005, Information technology - Security techniques - Encryption algorithms - Part 3: Block ciphers (Công nghệ thông tin - Kỹ thuật mật mã - Các thuật toán mã hóa - Phần 3: Các khối mật mã) FIPS PUB 197 - Announcing the Advance Encryption Standard (Thông báo tiêu chuẩn mã hóa tiên tiến) (AES), NIST, 2001 Thuật ngữ định nghĩa 3.1 Thuật ngữ từ viết tắt Tiêu chuẩn sử dụng khái niệm sau: AES Tiêu chuẩn mã hóa tiên tiến Bản mã Dữ liệu đầu Phép mã hóa liệu đầu vào Phép giải mã Bản rõ Dữ liệu đầu vào Phép mã hóa liệu đầu Phép giải mã Bít Một chữ số nhị phân có giá trị Byte Một nhóm gồm bít xem thực thể đơn lẻ thực mảng bít đơn lẻ Hộp-S Một bảng thay phi tuyến, sử dụng số phép thay byte quy trình Mở rộng khóa, nhằm thực phép thay một-một giá trị byte Khóa mã Một số giữ bí mật dùng cho quy trình Mở rộng khóa nhằm tạo tập Khóa vịng Khóa vịng Các khóa vịng giá trị sinh từ Khóa mã quy trình Mở rộng khóa, chúng áp dụng lên Trạng thái Phép mã hóa Phép giải mã Trong thuật tốn AES, Khóa vịng xem mảng chữ nhật byte có hàng Nk cột Khối Dãy liên tiếp bít nhị phân đầu vào, đầu ra, Trạng thái Khóa vịng Độ dài dãy số lượng bít chứa dãy Các khối cịn xem mảng byte Mảng Tập hợp dạng liệt kê thực thể đồng (ví dụ mảng byte) Mở rộng khóa Phép sử dụng để tạo loạt khóa vịng từ Khóa mã Phép biến đổi Phép biến đổi gồm phép nhân với ma trận phép cộng với véc-tơ Affine Phép giải mã Một loạt phép biến đổi để biến đổi mã thành rõ sử dụng Khóa LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê AES www.luatminhkhue.vn Tiêu chuẩn mã hóa tiên tiến mã Phép mã hóa Loạt phép biến đổi để biến đổi rõ thành mã sử dụng Khóa mã Rijndael Thuật tốn mật mã mơ tả Tiêu chuẩn Trạng thái Kết mã hóa trung gian Trong AES Trạng thái mô tả dạng mảng chữ nhật byte có hàng Nb cột Từ Một nhóm gồm 32 bít xem thực thể đơn lẻ mảng byte 3.2 Các tham số thuật toán, ký hiệu hàm Các tham số thuật toán, ký hiệu hàm sau sử dụng tiêu chuẩn này: AddRoundKey () Phép biến đổi Phép mã hóa Phép giải mã Trong đó, Khóa vịng cộng thêm vào Trạng thái phép toán XOR Độ dài Khóa vịng độ dài Trạng thái (chẳng hạn, Nb = độ dài Khóa vịng 128 bít hay 16 byte) InvMixColumns () Phép biến đổi dùng Phép giải mã, phép nghịch đảo MixColumns () InvShiftRows () Phép biến đổi dùng Phép giải mã phép nghịch đảo ShiftRows () InvSubBytes () Phép biến đổi dùng Phép giải mã phép nghịch đảo SubBytes () K Khóa mã MixColumns () Phép biến đổi Phép mã hóa thực cách lấy tất cột Trạng thái trộn với liệu chúng (một cách độc lập nhau) để tạo cột Nb Số cột (các từ 32 bít) tạo nên Trạng thái Trong tiêu chuẩn này, Nb = (Xem thêm điều 6.3) Nk Số lượng từ 32 bít Khóa mã Trong tiêu chuẩn này, Nk = 4, (Xem thêm điều 6.3) Nr Số lượng vịng lặp, hàm Nk Nb (chúng cố định) Trong tiêu chuẩn này, Nr = 10, 12 14 (Xem thêm điều 6.3) Rcon [ ] Mảng từ số vòng RotWord () Hàm sử dụng quy trình Mở rộng khóa cách lấy từ byte thực phép hốn vị vịng (quay vịng) ShiftRows () Phép biến đổi dùng Phép mã hóa áp dụng lên Trạng thái cách chuyển dịch vòng ba hàng cuối Trạng thái theo offset khác SubBytes () Phép biến đổi dùng Phép mã hóa áp dụng lên Trạng thái sử dụng bảng thay byte phi tuyến (Hộp-S) byte Trạng thái cách độc lập SubWord () Hàm sử dụng phép Mở rộng khóa, lấy từ đầu vào gồm byte áp dụng Hộp-S vào byte để tạo đầu từ XOR Phép toán HOẶC-loại trừ ⊕ Phép tốn HOẶC-loại trừ ⊗ Phép nhân hai đa thức (có bậc < 4) theo modulo x4 + • Phép nhân trường hữu hạn Các ký pháp Quy ước 4.1 Đầu vào Đầu Đầu vào đầu thuật toán AES dãy nhị phân 128 bít (chứa giá trị 1) Các dãy bít đơi gọi khối số lượng bít chứa dãy gọi độ dài dãy Khóa mã LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê www.luatminhkhue.vn dùng cho thuật toán AES dãy nhị phân 128, 192 256 bít Tiêu chuẩn không cho phép sử dụng đầu vào, đầu Khóa mã có độ dài khác với kích thước Các bít dãy nói đánh số thứ tự từ không số cuối Số cuối số nhỏ độ dài dãy (độ dài khối hay độ dài khóa) đơn vị Một số i ứng với bít theo thứ tự có giá trị nằm khoảng ≤ i < 128, ≤ i < 192 ≤ i < 256 phụ thuộc vào độ dài khối độ dài khóa (như đề cập phần trên) 4.2 Byte Đơn vị xử lý thuật tốn AES, dãy bít xem thực thể đơn lẻ Các dãy đầu vào, đầu Khóa mã nói điều 3.1 biểu diễn theo mảng byte cách chia dãy thành nhóm bít liên tiếp (xem điều 3.3) Nếu đầu vào, đầu Khóa mã ký hiệu a mảng byte thu tham chiếu đến theo hai dạng: an a[n] n nằm khoảng giới hạn sau: Nếu độ dài Khóa = 128 bít ≤ n < 16; Độ dài Khối = 128 bít, ≤ n < 16; Nếu độ dài Khóa = 192 bít ≤ n < 24; Nếu độ dài Khóa = 256 bít ≤ n < 32; Tất giá trị byte thuật toán AES biểu diễn dạng ghép bít riêng lẻ (0 1) dấu ngoặc theo thứ tự {b7, b6, b5, b4, b3, b2, b1, b0,} Các byte xem phần tử trường hữu hạn việc sử dụng biểu diễn đa thức: Ví dụ, dãy bít {01100011} biểu diễn thành phần tử trường hữu hạn x6 + x4 + x + Cũng biểu diễn giá trị byte theo dạng thập lục phân (hexadecimal) cách thay nhóm bít ký tự theo giá trị tương ứng cho Hình Hình - Ký hiệu thập lục phân tương ứng với nhóm bít Chẳng hạn phần tử {01100011} viết thành {63}, ký tự đại diện cho bít cao đặt bên trái Một số phép tốn trường hữu hạn địi hỏi thêm bít (b8) vào bên trái byte 8-bít Khi có mặt bít mở rộng theo cách người ta đặt trước byte 8-bit ký hiệu ‘{01}’ Chẳng hạn, dãy bít biểu diễn dạng {01}{1b} 4.3 Mảng byte Các mảng byte biểu diễn theo dạng sau: a0a1a1 … a15 Cho dãy 128 bít, thứ tự bít dãy đầu vào là: input0 input1 input2 input126 input127 mảng byte xác định sau: a0 = {input0, input1, …, input7} a1 = {input8, input9, , input15} a15 = {input120, input121, …, input127} Cách áp dụng cho dãy dài (chẳng hạn cho dãy khóa 192 256 bít) cách tổng qt sau: an = {input8n, input8n+1, …, input8n+7} (3-2) LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê www.luatminhkhue.vn Đối chiếu điều 3.2 điều 3.3, Hình thể cách bít đánh số thứ tự byte: Dãy bít vào 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Số hiệu byte TT bít byte 7 … … … Hình - Cách thể thứ tự byte bít 4.4 Trạng thái Các phép tốn thuật toán AES thực mảng byte hai chiều gọi Trạng thái Trạng thái bao gồm hàng byte, hàng chứa Nb byte, Nb số lượng từ khối Trong mảng Trạng thái ký hiệu s byte riêng biệt có hai số, số hàng ký hiệu r, ≤ r < 4, số cột ký hiệu c, ≤ c < Nb Điều cho phép byte riêng biệt Trạng thái tham chiếu đến theo dạng sr,c s[r,c] Trong tiêu chuẩn này, Nb = 4, ≤ c < (xem thêm điều 6.3) Tại thời điểm bắt đầu Phép mã hóa Phép giải mã mơ tả điều đầu vào mảng byte in0, in1, in15 (copy) vào mảng Trạng thái minh họa Hình Các phép tốn Phép mã hóa Phép giải mã thao tác với mảng Trạng thái này, giá trị cuối copy đến đầu - mảng byte out0, out1, out15 Hình - Đầu vào đầu mảng Trạng thái Như vậy, vào thời điểm khởi đầu Phép mã hóa Phép giải mã, mảng đầu vào in copy vào mảng Trạng thái theo lược đồ: s[r,c] = in[r+4c] với ≤ r < ≤ c < Nb, (3.3) thời điểm kết thúc Phép mã hóa Phép giải mã, Trạng thái copy vào mảng đầu out theo: out[r + 4c] = s[r, c] với ≤ r < < c < Nb (3.4) 4.5 Trạng thái coi mảng Cột Bốn byte cột mảng Trạng thái tạo thành từ 32 bít, số thứ tự hàng r cho biết số bốn byte từ Vì coi Trạng thái mảng chiều chứa từ 32 bít (các cột) w0 w3, số cột c cho biết mục mảng Căn vào Hình Trạng thái xem mảng gồm bốn từ xác định sau: w0 = s0,0 s1,0 s2,0 s3,0 w2 = s0,2 s1,2 s2,2 s3,2 w1 = s0,1 s1,1 s2,1 s3,1 w3 = s0,3 s1,3 s2,3 s3,3 (3.5) Cơ sở toán học 5.1 Phép cộng Phép cộng hai phần tử trường hữu hạn thực cách “cộng" hệ số lũy thừa tương ứng đa thức hai phần tử Phép cộng thực theo phép toán XOR (ký hiệu ⊕) Tức theo modulo ⊕ = 0, ⊕ = ⊕ = Do đó, phép trừ đa thức phép cộng đa thức Việc cộng hai phần tử trường hữu hạn mơ tả phép cộng modulo bít tương ứng byte Chẳng hạn, hai byte {a7a6a5a4a3a2a1a0} {b7b6b5b4b3b2b1b0} có tổng {c7c6c5c4c3c2c1c0}, bít ci = ⊕ bi (tức là, c7 = a7⊕b7, c6 = a6⊕b6, c0 = a0⊕b0) Lấy ví dụ, cách viết sau tương đương nhau: (x6 + x4 +x2 + x + 1) + (x7 + x + 1) = x7 + x6 + x4 + x2 (dạng đa thức) {01010111} ⊕ {10000011} = {11010100} (dạng nhị phân) {57} ⊕ {83} = {d4} (dạng thập lục phân) LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê www.luatminhkhue.vn 5.2 Phép nhân Trong cách biểu diễn đa thức, phép nhân trường GF(2 8) (ký hiệu •) tương đương với phép nhân đa thức theo modulo đa thức bất khả qui bậc Một đa thức gọi bất khả quy có ước Đối với thuật toán AES, đa thức bất khả quy là: m(x) = x8 + x4 + x3 + x + (4.1) biểu diễn dạng thập lục phân {01}{1b} Ví dụ, {57} • {83} = {c1}, vì: (x6 + x4 + x2 + x + 1)(x7 + x + 1) = x13 + x11 + x9 + x8 + x7 + x7 + x5 + x3 + x2 + x + x6 + x4 + x2 + x + = x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 +1 modulo (x8 + x4 + x3 + x + 1) = x7 + x6 + Phép rút gọn theo modulo m(x) cho ta kết đa thức nhị phân có bậc thấp trình bày dạng byte Khơng giống phép cộng, khơng tồn phép tốn đơn giản mức byte cho phép nhân Phép nhân định nghĩa có tính kết hợp phần tử {01} gọi phần tử đơn vị Đối với đa thức nhị phân khác khơng b(x) có bậc nhỏ phần tử nghịch đảo b(x) ký hiệu b-1(x), tìm sau: Thuật tốn Ơcơlit [7] mở rộng sử dụng để tính đa thức a(x) c(x) thỏa mãn: b(x)a(x) + m(x)c(x) = (4.2) Bởi a(x) • b(x) mod m(x) = b-1(x) = a(x) mod m(x) (4.3) Hơn nữa, với a(x), b(x) c(x) trường, ta ln có: a(x) • (b(x) + c(x)) = a(x) • b(x) + a(x) • c(x) Từ suy rằng, tập hợp 256 giá trị byte với phép toán XOR phép nhân định nghĩa có cấu trúc trường hữu hạn GF(28) 5.2.1 Phép nhân với x Nhân đa thức nhị phân định nghĩa điều (3.1) với đa thức x cho kết đa thức: b7x8 + b6x7 + b5x6 + b4x5 + b3x4 + b2x3 + b1x2 + b0x (4.4) Có thể tìm kết x • b(x) cách rút gọn kết theo modulo m(x) định nghĩa (4.1) Nếu b7 = kết dạng rút gọn Nếu b7 = rút gọn đạt cách trừ (tức phép XOR) với đa thức m(x) Từ suy ra, phép nhân với x (tức x có giá trị {00000010} {02}) thực thi mức byte phép dịch trái phép tốn XOR có điều kiện mức bít với {1b} Phép tốn byte ký hiệu xtime() Phép nhân với lũy thừa cao x thực theo cách áp dụng lặp lại hàm xtime() Bằng cách cộng kết trung gian thực phép nhân với byte Chẳng hạn, {57} • {13} = {fe} vì: {57} • {02} = xtime({57}) = {ae} {57} • {04} = xtime({ae}) = {47} {57} • {08} = xtime({47}) = {8e} {57} • {10} = xtime({8e}) = {07}, Do đó, {57} • {13} = {57} • ({01} ⊕ {02} ⊕ {10}) = {57} ⊕ {ae} ⊕ {07} = {fe} LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê www.luatminhkhue.vn 5.3 Đa thức với hệ số trường GF(28) Đa thức bốn hạng tử xác định với hệ số phần tử trường hữu hạn có dạng: a(x) = a3x3 + a2x2 + a1x + a0 (4.5) Đa thức ký hiệu từ có dạng [a 0, a1, a2, a3] Chú ý đa thức phần khác với đa thức sử dụng định nghĩa phần tử trường hữu hạn, hai dạng đa thức sử dụng biến x Các hệ số đa thức phần thân phần tử trường hữu hạn, giá trị chúng byte thay bít Ngồi ra, phép nhân đa thức bốn hạng tử sử dụng đa thức rút gọn khác xác định Sự khác biệt làm sáng rõ trường hợp cụ thể Để minh họa cho phép cộng phép nhân đa thức, giả sử: b(x) = b3x3 + b2x2 + b1x + b0 (4.6) đa thức bốn hạng tử thứ hai Phép cộng thực cách cộng hệ số trường hữu hạn tương ứng bậc với x Phép cộng tương đương với phép toán XOR byte tương ứng từ, nói cách khác phép XOR giá trị từ đầy đủ Từ (4.5) (4.6), ta có: a(x) + b(x) = (a3 ⊕ b3)x3 + (a2 ⊕ b2)x2 + (a1 ⊕ b1)x + (a0 ⊕ b0) (4.7) Phép nhân thực qua hai bước Bước thứ nhất, thực khai triển đại số Sau đó, gộp số hạng bậc Kết cho ta tích: c(x) = c6x6 + c5x5 + c4x4 + c3x3 + c2x2 + c1x + c0 (4.8) Trong đó: 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 (4.9) c3 = a3 • b0 ⊕ a2 • b1 ⊕ a1 • b2 ⊕ a0 • b3 Kết thu được, c(x) khơng biểu diễn từ byte Do đó, bước thứ hai thực phép nhân rút gọn c(x) theo modulo đa thức bậc Kết rút gọn thành đa thức có bậc nhỏ Đối với thuật toán AES, đa thức x4 + 1, thế: xi mod(x4 + 1) = ximod4 (4.10) Phép nhân modulo a(x) b(x) ký hiệu a(x) ⊗ b(x) cho kết đa thức bốn hạng tử d(x): d(x) = d3x3 + d2x2 + d1x + d0 (4.11) đó: d0 = (a0 • b0) ⊕ (a3 • b1) ⊕ (a2 • b2) ⊕ (a1 • b3) d1 = (a1 • b0) ⊕ (a0 • b1) ⊕ (a3 • b2) ⊕ (a2 • b3) d2 = (a2 • b0) ⊕ (a1 • b1) ⊕ (a0 • b2) ⊕ (a3 • b3) (4.12) d3 = (a3 • b0) ⊕ (a2 • b1) ⊕ (a1 • b2) ⊕ (a0 • b3) Khi a(x) đa thức cố định phép tốn biểu thức (4.11) viết dạng ma trận sau: (4.13) Do x4 +1 đa thức bất khả quy trường GF(2 8) nên phép nhân với đa thức bốn hạng tử khơng thiết phải có tính khả nghịch Tuy nhiên, thuật toán AES sử dụng đa thức cố định bốn hạng tử mà phép nhân với có tính khả nghịch (xem Phần 6.1.3 Phần 6.3.3), đa thức: LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê www.luatminhkhue.vn a(x) = {03}x3 + {01}x2 + {01}x + {02} (4.14) a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e} (4.15) Một đa thức khác sử dụng thuật toán AES (xem thêm hàm RotWord () Phần 5.2) có a0 = a1 = a2 = {00} and a3 = {01} đa thức x3 Xem kỹ biểu thức (4.13) ta thấy hiệu chỗ biến đổi từ đầu vào thành từ đầu phép quay vòng byte Nghĩa [b0, b1, b2, b3] chuyển thành [b1, b2, b3, b0] Quy định thuật toán Đối với thuật toán AES, độ dài khối đầu vào, khối đầu Trạng thái 128 bít Như Nb = số lượng từ 32 bít (số cột) Trạng thái Trong thuật toán AES, độ dài Khóa mã K 128, 192 256 bít Độ dài khóa biểu diễn số Nk = 4, 6, thể số lượng từ 32 bít (số cột) Khóa mã Đối với thuật tốn AES, số vịng thay đổi q trình thực thi thuật tốn phụ thuộc vào kích cỡ khóa Số vịng ký hiệu Nr, AES, Nr = 10 Nk = 4, Nr = 12 Nk = Nr = 14 Nk = Các tổ hợp Khóa-Khối-Vịng phù hợp tiêu chuẩn cho Hình Việc thực thi cụ thể thuật tốn có liên quan đến độ dài khóa, kích cỡ khối số vịng nên xem thêm điều 6.3 Độ dài khóa (Nk từ) Độ dài khối (Nb từ) Số vòng (Nr) AES-128 4 10 AES-192 12 AES-256 14 Hình - Các tổ hợp Khóa - Khối - Vịng Đối với Phép mã hóa Phép giải mã, thuật tốn AES sử dụng hàm vịng gồm bốn phép biến đổi byte: 1) phép thay byte sử dụng bảng thay (Hộp-S), 2) phép dịch chuyển hàng mảng Trạng thái theo offset khác nhau, 3) phép trộn liệu cột mảng Trạng thái, 4) phép cộng Khóa vịng vào Trạng thái Các phép biến đổi (cũng phép nghịch đảo chúng) mô tả điều 5.1.1 - 5.1.4 5.3.1 - 5.3.4 Phép mã hóa Phép giải mã mô tả điều 5.1 điều 5.3, Lược đồ khóa mơ tả điều 5.2 6.1 Phép mã hóa Tại thời điểm bắt đầu Phép mã hóa, đầu vào vào mảng Trạng thái sử dụng quy ước mô tả điều 3.4 Sau phép cộng Khóa vịng khởi đầu, mảng Trạng thái biến đổi cách thực thi hàm vòng liên tiếp với số lần vòng lặp 10, 12 14 (phụ thuộc vào độ dài khóa), vịng cuối khác biệt khơng đáng kể với Nr - vịng Trạng thái cuối chuyển thành đầu mơ tả điều 3.4 Hàm vịng tham số hóa cách sử dụng lược đồ khóa mảng chiều chứa từ bốn byte nhận từ phép Mở rộng khóa mơ tả điều 5.2 Phép mã hóa mơ tả theo dạng tựa mã Hình Các phép biến đổi cụ thể - SubBytes (), Shif tRows (), MixColumns () AddRoundKey () - dùng để xử lý Trạng thái mơ tả mục Ở Hình 5, mảng w [ ] có chứa lược đồ khóa mô tả điều 5.2 LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê www.luatminhkhue.vn Hình - Đoạn tựa mã cho Phép mã hóa1 Như thấy Hình 5, tất Nr vòng giống hệt có ngoại lệ vịng cuối cùng, vịng khơng có phép biến đổi MixColumns () Phụ lục B trình bày ví dụ Phép mã hóa, cụ thể giá trị mảng Trạng thái thời điểm bắt đầu vòng sau áp dụng bốn phép biến đổi 6.1.1 Phép biến đổi SubBytes () Phép biến đổi SubBytes () phép thay phi tuyến thực độc lập byte Trạng thái sử dụng bảng thay (Hộp-S) Hộp-S có tính khả nghịch tạo hai Phép biến đổi (Hình 7) sau: Phép nghịch đảo trường hữu hạn GF(2 8), mô tả điều 4.2, phần tử {00} ánh xạ vào Áp dụng phép biến đổi affine (trên trường GF(2)) sau: b’j =bi ⊕ b(i+4)mod ⊕ b(i+5)mod ⊕ b(i+6)mod8 ⊕ b(i+7)mod ⊕ cj (6.1) với ≤ i < 8, bi bít thứ i byte ci bít thứ i byte c có giá trị {63} {01100011} Từ sau, dấu phẩy biến (ví dụ b') có nghĩa biến cập nhật giá trị nằm phía bên phải Ở dạng ma trận, phần tử phép biến đổi affine Hộp-S biểu diễn sau: (6.2) Hình minh họa tác động Phép biến đổi SubBytes () lên Trạng thái Một số phép biến đổi (vd: SubBytes(), ShiftRows(), ) thao tác mảng Trạng thái tham chiếu trỏ "state" Phép biến đổi AddRoundKey() sử dụng trỏ khác để tham chiếu đến Khóa vịng LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Cơng ty luật Minh Kh Hình www.luatminhkhue.vn s0,0 s0,1 s0,2 s0,3 s'0,0 s'0,1 s'0,2 s'0,3 s1,0 s1,1 s1,2 s1,3 s1,0 s'1,1 s'1,2 s'1,3 s2,0 s2,1 s2,2 s2,3 s'2,0 s2,1 s2,2 s2,3 s3,0 s3,1 s3,2 s3,3 s'3,0 s'3,1 s'3,2 s'3,3 - Phép SubBytes () áp dụng Hộp-S vào byte Trạng thái Hộp-S sử dụng Phép biến đổi SubBytes () trình bày dạng thập lục phân Hình Ví dụ, s1,1 = {53}, giá trị thay xác định vị trí giao hàng số “5" cột số “3" Hình Điều cho kết s'1,1 {ed Hình - Hộp-S: giá trị thay cho byte {xy} (theo dạng thập lục phân) 6.1.2 Phép biến đổi ShiftRows () Trong phép biến đổi ShiftRows (), byte ba hàng cuối Trạng thái dịch vòng theo số lượng byte khác (các offset) Hàng đầu tiên, r = 0, không dịch chuyển Cụ thể, Phép biến đổi ShiftRows () thực sau: s’r,c = sr,(c + shift(r,Nb)) mod Nb với < r < ≤ c < Nb (6.3) giá trị dịch chuyển shift(r,Nb) phụ thuộc vào số lượng hàng r, sau (chú ý Nb = 4): shift(1,4) = 1; shift(2,4) = 2; shift(3,4) = (5.4) Hệ việc di chuyển byte từ vị trí thấp hàng (là giá trị thấp c hàng cho), byte “thấp nhất” đưa lên hàng (các giá trị cao c hàng cho) Hình minh họa Phép biến đổi ShiftRows () LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Kh www.luatminhkhue.vn Hình - Các phép dịch vịng ShiftRows () ba hàng cuối mã Trạng thái 6.1.3 Phép biến đổi MixColumns () Phép biến đổi MixColumns () Trạng thái thực theo cột, nghĩa cột xem đa thức hạng tử mô tả điều 4.3 Các cột coi đa thức trường GF(28) nhân theo modulo x4 + với đa thức cố định a(x) sau đây: a(x) = {03}x3 + (01)x2 + {01}x + {02} (5.5) Như mơ tả điều 4.3, điều biểu diễn dạng phép nhân ma trận Giả sử s'(x) = a(x) ⊗ s(x): với ≤ c < Nb (5.6) Ở kết phép nhân này, bốn byte cột thay sau: s'0,c = ({02} • s0,c) ⊕ ({03} • s1,c) ⊕ s2,c ⊕ s3,c s'1,c = s0,c ⊕ ({02} • s1,c) ⊕ ({03} • s2,c) ⊕ s3,c s'2,c = s0,c ⊕ s1,c ⊕ ({02} • s2,c) ⊕ ({03} • s3,c) s'3,c = ({03} • s0,c) ⊕ s1,c ⊕ s2,c ⊕ ({02} • s3,c) Hình minh họa Phép biến đổi MixColumns () Hình - Phép MixColumns () thao tác Trạng thái theo cách cột-cột LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê MÃ NGHỊCH (GIẢI MÃ): LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê GIẢI MÃ TƯƠNG ĐƯƠNG: LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê C.3 AES-256 (Nk=8, Nr=14) MÃ THUẬN (MÃ HÓA): LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê MÃ NGHỊCH (GIẢI MÃ): LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê GIẢI MÃ TƯƠNG ĐƯƠNG: LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn Công ty luật Minh Khuê www.luatminhkhue.vn TÀI LIỆU THAM KHẢO [1] Trang thông tin AES NIST http://www.nist.gov/CryptoToolkit.4 [2] Danh mục đối tượng an tồn máy tính (CSOR - Computer Security Objects Register) địa NIST: http://csrc.nist.gov/csor/ [3] J Daemen V Rijmen, AES Proposal: Rijndael, AES Algorithm Submission (Đề xuất thuật tốn AES, Bản đệ trình thuật tốn AES), 03/12/1999 xem [1] [4] J Daemen and V Rymen, The block cipher Rijdael, Smart Card research and Applications (Hệ mã khối Rijndael, Nghiên cứu ứng dụng Thẻ thông minh), LNCS 1820, Springer-Verlag, trang 288-296 [5] Trang web liên quan đến AES B Gladman http://fp.gladman.plus.com/cryptography_technology/ [6] A Lee, NIST Special Publication 800-21, Guideline for Implementing Cryptography in the Federal Government, National Institute if Standard and Technology (Bản công bố đặc tả NIST 800-21, Chỉ dẫn thực thi mật mã quan Chính phủ Liên bang, Viện Tiêu chuẩn Công nghệ quốc gia Hoa Kỳ), 1999 [7] A Menezes, P van Oorschot, S Vanstone, Handbook of Applied Cryptography (Sổ tay ứng dụng mật mã), CRC Press, New York, 1997, trang 81-83 [8] J Nechvatal, et al., Report on the Development of the Advanced Encryption Standard (AES), National Institute if Standard and Technology (Báo cáo việc Phát triển Chuẩn mã hóa tiên tiến (AES), Viện tiêu chuẩn cơng nghệ quốc gia Hoa Kỳ), 02/10/2000, có [1] MỤC LỤC Lời nói đầu Phạm vi áp dụng Tài liệu viện dẫn Một tập hoàn chỉnh tài liệu nỗ lực phát triển AES - bao gồm thông báo, ý kiến công khai, báo phân tích, hội nghị, có web - site LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 Công ty luật Minh Khuê Thuật ngữ định nghĩa 3.1 Thuật ngữ từ viết tắt 3.2 Các tham số thuật toán, ký hiệu hàm Các ký pháp Quy ước 4.1 Đầu vào Đầu 4.2 Byte 4.3 Mảng byte 4.4 Trạng thái 4.5 Trạng thái coi mảng Cột Cơ sở toán học 5.1 Phép cộng 5.2 Phép nhân 5.3 Đa thức với hệ số trường GF(28) Quy định thuật tốn 6.1 Phép mã hóa 6.2 Mở rộng khóa 6.3 Phép giải mã Các vấn đề thực thi 7.1 Yêu cầu độ dài khóa 7.2 Các hạn chế khóa 7.3 Tham số hóa Độ dài khóa, Kích cỡ khối Số vòng lặp 7.4 Các đề xuất thực thi khác 7.5 Một số dẫn để thực thi thuật toán Phụ lục A A.1 Ví dụ mở rộng Khóa mã 128 bít A.2 Ví dụ mở rộng Khóa mã 192 bít Phụ lục B Phụ lục C C.1 AES-128 (Nk = 4, Nr = 10) C.2 AES-192 (Nk = 6, Nr = 12) C.3 AES-256 (Nk = 8, Nr = 14) Tài liệu tham khảo LUẬT SƯ TƯ VẤN PHÁP LUẬT 24/7 GỌI 1900 6162 www.luatminhkhue.vn