1. Trang chủ
  2. » Kinh Tế - Quản Lý

Tiêu chuẩn Quốc gia TCVN 7816:2007

50 30 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Tiêu chuẩn Quốc gia TCVN 7816:2007 áp dụng cho việc mã hóa dữ liệu trong các hoạt động giao dịch điện tử của các tổ chức, công dân Việt Nam và tổ chức, công dân nước ngoài có quan hệ kinh tế - xã hội với tổ chức, công dân Việt Nam. Mời các bạn tham khảo.

TIÊU CHUẨN QUỐC GIA TCVN 7816 : 2007 CÔNG NGHỆ THƠNG TIN - KỸ THUẬT MẬT MÃ - THUẬT TỐ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 tố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 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 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 tố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ã dùng cho thuật tố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 quát sau: an = {input8n, input8n+1, …, input8n+7} (3-2) Đố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 Số hiệu byte 10 11 12 13 14 15 16 17 18 19 20 21 22 23 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 toá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 1 = 0, = 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) 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 toá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 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 tố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} = {57} {ae} {02} {10}) {07} = {fe} 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 c1 = a1 • b0 a0 • b1 c2 = a2 • b0 a1 • b1 c3 = a3 • b0 a0 • b2 a2 • b1 c4 = a3 • b1 a2 • b2 c5 = a3 • b2 a2 • b3 a1 • b3 c6 = a3 • b3 a1 • b2 (4.9) 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 tố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) tử d(x): b(x) cho kết đa thức bốn hạng 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) d3 = (a3 • b0) (a2 • b1) (a1 • b2) (a0 • b3) (4.12) 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: d0 d1 d2 d3 a0 a1 a2 a3 a3 a0 a1 a2 a2 a3 a0 a1 a1 b0 a2 b1 a3 b2 a0 b3 (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 tố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: 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 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: b'0 b'1 b '2 b'3 b '4 b'5 b'6 b'7 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 b0 b1 b2 b3 b4 b5 b6 b7 1 0 1 (6.2) 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 Hình minh họa tác động Phép biến đổi SubBytes () lên Trạng thái Hình 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) MÃ NGHỊCH (GIẢI MÃ): GIẢI MÃ TƯƠNG ĐƯƠNG: C.3 AES-256 (Nk=8, Nr=14) MÃ THUẬN (MÃ HÓA): MÃ NGHỊCH (GIẢI MÃ): GIẢI MÃ TƯƠNG ĐƯƠNG: 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 toá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, SpringerVerlag, 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ột tập hồ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 MỤC LỤC Lời nói đầu Phạm vi áp dụng Tài liệu viện dẫn 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(2 8) Quy định thuật toá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 ... 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. .. cỡ khối Số vòng lặp Tiêu chuẩn định cụ thể giá trị phép dùng cho chiều dài khóa (Nk), kích cỡ khối (Nb) số lượng vòng lặp (Nr) Hình Tuy nhiên, xác nhận lại tương lai tiêu chuẩn bao gồm thay đổi... đổ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

Ngày đăng: 08/02/2020, 11:56

Xem thêm:

TỪ KHÓA LIÊN QUAN