Chuẩn mã hóa nâng cao AES

11 2.1K 13
Chuẩn mã hóa nâng cao AES

Đ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

Chuẩn nâng cao (AES) Bởi: TS. Trần Văn Dũng Nguồn gốc Rõ ràng cần phải thay thế DES, vì có những tấn công về mặt lý thuyết có thể bẻ được nó. Một số tấn công nghiên cứu thấu đáo khoá đã được trình diễn. Người ta thấy rằng, cần sử dụng Triple DES (sử dụng DES ba lần liên tiếp) cho các ứng dụng đòi hỏi tăng cường bảo mật, nhưng quá trình và giải chậm, đồng thời với khối dữ liệu nhỏ. Do đó Viện chuẩn quốc gia Hoa kỳ US NIST ra lời kêu gọi tìm kiếm chuẩn mới vào năm 1997. Sau đó có 15 đề cử được chấp nhận vào tháng 6 năm 1998. Và được rút gọn còn 5 ứng cử viên vào tháng 6 năm 1999. Đến tháng 10 năm 2000, Rijndael được chọn làm chuẩn nâng cao và được xuất bản là chuẩn FIPS PUB 197 vào 11/2001. Yêu cầu của AES • Là khối đối xứng khoá riêng. • Kích thước khối dữ liệu 128 bit và độ dài khoá là tùy biến: 128, 192 hoặc 256 bit. • Chuẩn mới phải mạnh và nhanh hơn Triple DES. mới có cơ sở ls thuyết mạnh để thời gian sống của chuẩn khoảng 20-30 năm (cộng thêm thời gian lưu trữ). • Khi đưa ra thành chuẩn yêu cầu cung cấp chi tiết thiết kế và đặc tả đầy đủ. Đảm bảo rằng chuẩn mới cài đặt hiệu quả trên cả C và Java. • NIST in rút gọn mọi đề xuất, phân tích và không phân loại. Tiêu chuẩn triển khai của AES • Tiêu chuẩn ban đầu: o An toàn - chống đỡ mọi tấn công thám về thực tế o Giá trị về mặt tính toán o Các đặc trưng cài đặt và thuật toán. Chuẩn nâng cao (AES) 1/11 • Tiêu chuẩn cuối cùng: o An toàn tổng thể o Dễ cài đặt phần mềm và phần cứng o Chống được tấn công về mặt cài đặt o Mềm dẻo trong / giải mã, khoá và các yếu tố khác • Danh sách các ứng cử viên Chuẩn nâng cao được rút gọn: o MARS (IBM): phức tạp, nhanh, biên độ tin cậy cao o RC6 (USA): đơn giản, rất nhanh, biên độ tin cậy thấp o Rijndael (Bỉ): rõ ràng, nhanh, biên độ tin cậy tốt o Serpent (Châu Âu): chậm, rõ ràng, biên độ tin cậy rất cao o Twofish (USA): phức tạp, rất nhanh, biên độ tin cậy cao • Sau đó tục phân tích và đánh giá. Tập trung vào việc so sánh các thuật toán khác nhau: o Ít vòng nhưng phức tạp với nhiều vòng đơn giản hơn. o Nêu rõ cải tiến các đã có với các đề xuất mới. Chuẩn nâng cao AES – Rijndael Cuối cùng Rijndael được chọn là chuẩn nâng cao. Nó được thiết kế bởi Rijmen – Daemen ở Bỉ, có các đặc trưng sau: • Có 128/192/256 bit khoá và 128 bit khối dữ liệu. • Lặp hơi khác với Fiestel o Chia dữ liệu thành 4 nhóm – 4 byte o Thao tác trên cả khối mỗi vòng o Thiết kế để: • chống lại các tấn công đã biết Chuẩn nâng cao (AES) 2/11 • tốc độ nhanh và nén trên nhiều CPU • Đơn giản trong thiết kế • Xử lý khối dữ liệu 128 bit như 4 nhóm của 4 byte: 128 = 4*4*8 bit. Mỗi nhóm nằm trên một hàng. Ma trận 4 hàng, 4 cột với mỗi phần tử là 1 byte coi như trạng thái được xử lý qua các vòng hoá và giải mã. • Khoá mở rộng thành mảng gồm 44 từ 32 bit w[i]. • Có tùy chọn 9/11/13 vòng, trong đó mỗi vòng bao gồm o Phép thế byte (dùng một S box cho 1 byte) o Dịch hàng (hoán vị byte giữa nhóm/cột) o Trộn cột (sử dụng nhân ma trận của các cột) o Cộng khoá vòng (XOR trạng thái dữ liệu với khoá vòng). o Mọi phép toán được thực hiện với XOR và bảng tra, nên rất nhanh và hiệu quả. • Sơ đồ Rijndael • Phép thế Byte o Phép thê byte đơn giản o Sử dụng một bảng 16 x 16 byte chứa hoán vị của tất cả 256 giá trị 8 bit Chuẩn nâng cao (AES) 3/11 o Mỗi byte trạng thái được thay bởi byte trên hàng xác định bởi 4 bit trái và cột xác định bởi 4 bit phải. Chẳng hạn {95} được thay bởi hàng 9, cột 5, giá trị sẽ là {2A}. o S box được xây dựng sử dụng hoán vị các giá trị trong GF(28) đã được xác định trong chương trước. o Thiết kế để chống mọi tấn công đã biết • Dịch hàng o Dịch hàng vòng quanh trên mỗi hàng + Hàng 1 không đổi + Hàng 2 dịch vòng quanh 1 byte sang trái + Hàng 3 dịch vòng quanh 2 byte sang trái + Hàng 4 dịch vòng quanh 3 byte sang trái o Giải thực hiện dịch ngược lại sang phải o Vì trạng thái được xử lý bởi cột, bước này thực chất là hoán vị byte giữa các cột. • Trộn các cột o Mỗi cột được xử lý riêng biệt. o Mỗi byte được thay bởi 1 giá trị phụ thuộc vào tất cả 4 byte trong cột o Nhân ma trận hiệu quả trong GF(28), sử dụng đa thức nguyên tố m(x) = x 8 + x 4 + x 3 +x+1 Trộn cột Chuẩn nâng cao (AES) 4/11 - Có thể biểu diễn mỗi cột mới là nghiệm của 4 phương trình + để tìm ra byte mới trong mỗi cột - yêu cầu sử dụng ma trận nghịch đảo + Với hệ số lớn thì tính toán khó khăn hơn - Có các đặc trưng khác của cột như sau: + Mỗi cột là một đa thức bậc 3 gồm 4 số hạng + Với mỗi phần tử là một byte tương ứng với phần tử trong GF( 2 8 ). + Các đa thức nhân tính theo Modulo ( x 4 +1). + Cộng khoá quay vòng - XOR trạng thái với 128 bit khoá quay vòng - Xử lý lại bằng cột (hiệu quả qua một loạt các thao tác bit) - Nghịch đảo cho giải hoàn toàn xác định, vì khi XOR với nghịch đảo của bản thân nó, XOR trùng với đảo bit của khoá quay vòng. - Thiết kế để đơn giản nhất có thể + Dạng Vernam với khoá mở rộng + Đòi hỏi thêm một số bước tăng độ phức tạp/tính an toàn. + Một vòng AES + Mở rộng khoá AES - Dùng khoá 128 bit (16 byte) và mở rộng thành mảng gồm 44/52/60 từ 32 bit. - Bắt đầu bằng việc copy khoá vào 4 từ đầu - Sau đó tạo quay vòng các từ phụ thuộc vào giá trị ở các vị trí trước và 4 vị trí sau + 3 trong 4 trường hợp chỉ là XOR chúng cùng nhau Chuẩn nâng cao (AES) 5/11 + Mỗi cái thứ 4 có S box kết hợp quay và XOR với hằng số trước đó, trước khi XOR cùng nhau + Thiết kế chống các tấn công đã biết • Giải AES o Giải ngược lại không duy nhất vì các bước thực hiện theo thứ tự ngược lại. o Nhưng có thể xác định ngược tương đương với các bước đã làm đối với mã • Nhưng sử dụng ngược lại với từng bước • Với khoá con khác nhau o Thực hiện được vì kết quả không thay đổi khi • Đổi lại phép thế byte và dịch các hàng • Đổi lại việc trộn các cột và bổ sung khoá vòng o Lý do mở rộng khoá: các tiêu chuẩn thiết kế bao gồm • Giả sử biết một phần khoá, khi đó không đủ để biết nhiều hơn, tức là các khoá con khác hoặc khoá nói chung. • Phép biến đổi nghịch đảo được. • Nhanh đối với nhiều kiểu CPU. • Sử dụng hằng số vòng để làm mất tính đối xứng • Khuếch tán bit khoá thành khoá con cho các vòng • Có đủ tính phi đối xứng để chống thám mã • Đơn giản trong việc giải mã o Các khía cạnh cài đặt: Chuẩn nâng cao (AES) 6/11 • có thể cài đặt hiệu quả trên CPU 8 bit - Phép thế byte làm việc trên các byte sử dụng bảng với 256 đầu vào. - Dịch hàng là phép dịch byte đơn giản - Cộng khoá vòng làm việc trên byte XOR - Các cột hỗn hợp yêu cầu nhân ma trận trong GF(28) làm việc trên giá trị các byte, có thể đơn giản bằng cách tra bảng • có thể cài đặt hiệu quả trên CPU 32 bit - Xác định lại các bước để sử dụng từ 32 bit - Có thể tính trước 4 bảng với 256 đầu vào - Sau đó mỗi cột trong mỗi vòng có thể tính bằng cách tra 4 bảng và 4 XOR - Cần 16 Kb để lưu các bảng • Những nhà thiết kế tin tưởng rằng việc cài đặt rất hiệu quả này là yếu tố cơ bản trong việc chọn nó là AES Sau đây ta xét chi tiết hơn các quá trình hoá, sinh khoá và giải AES. Xét cụ thể quá trình hóa bao gồm 4 bước: 1. AddRoundKey - mỗi byte của khối được kết hợp với khóa con, các khóa con này được tạo ra từ quá trình tạo khóa con Rijndael. Mô tả hoạt động bước AddRoundKey Chuẩn nâng cao (AES) 7/11 2. SubBytes - đây là quá trình thay thế (phi tuyến) trong đó mỗi byte sẽ được thay thế bằng một byte khác theo bảng tra (Tìm trong tài liệu tương ứng). Mô tả hoạt động bước SubBytes 3. ShiftRows - đổi chỗ, các hàng trong khối được dịch vòng. Mô tả hoạt động bước ShiftRows 1. MixColumns - quá trình trộn làm việc theo các cột trong khối theo một chuyển đổi tuyến tính. Mô tả hoạt động bước MixColumns Tại chu trình cuối thì bước MixColumns được thay thế bằng bước AddRoundKey. Thuật toán hoá INPUT: M 128 bit, w[Nb*(Nr+1)] w là mảng khoá , M là khối dữ liệu rõ OUTPUT: Y 128 bit Khối dữ liệu đã được hoá TIẾN TRÌNH XỬ LÝ: State:=in; AddRoundKey(State,w[0,Nb-1]); for i in 1 Nr-1 loop Chuẩn nâng cao (AES) 8/11 SubByte(state); ShiftRows(state); MixColums(state); AddRoundKey(state,w[i*Nb],(i+1)*Nb-1); end loop; SubByte(state); ShiftRows(state); AddRoundKey(state,w[i*Nb],(i+1)*Nb-1); Y:=state; Thuật toán sinh khoá con sử dụng ba hàm: SubWord(): Là một hàm đưa 4 từ đầu vào qua S-box để được 4 từ đầu ra RotWord(): Biến đổi một từ [a0a1a2a3] thành một từ [a1a2a3a0] Rcon(i): Chứa các giá trị [xi-1,{00},{00},{00}] với x={02} và i>=1. Trường hợp Nk=8 (độ dài khoá =256) và i-4 là bội số của Nk thì SubWord() được tính toán với w[i-1] trứơc khi XOR Thuật toán: INPUT: Khoá đầu vào K, Nk OUTPUT: Mảng khoá con TIẾN TRÌNH XỬ LÝ: • Tách khoá K thành Nk khối 4 byte w[i] i=0 Nk-1 i:=Nk; while (i<Nb*(Nr+1)) loop temp:=w[i-1]; if (i mod Nk = 0); temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]; else if (Nk > 6 and i mod Nk = 4); Chuẩn nâng cao (AES) 9/11 temp = SubWord(temp); end if; w[i] = w[i-Nk] xor temp; i = i + 1; end loop; Thuật toán giải sử dụng 4 biến đổi trong đó có 1 biến đổi AddRoundKey và 3 biến đổi đảo ngược. Biến đổi InvShiftRows(): tương tự biến đổi ShiftRows thay vì dịch trái thì trong biến đổi này là dịch phải. Bứơc InvSubBytes(): Phép biến đổi này tương tự như SubBytes() thay vì dùng S-box thì sử dụng InvS-box . Bứơc InvMixColums(): Tương tự như phép MixColums thay vì a XOR với c(x) thì là a − 1 XOR c(x). Thuật toán giải mã INPUT: M 128 bit, w[Nb*(Nr+1)] w là mảng khoá , M là bản mã OUTPUT: Y 128 bit Khối dữ liệu đã được giải mã TIẾN TRÌNH XỬ LÝ: state = M AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) for round = Nr-1 step -1 downto 1 InvShiftRows(state) InvSubBytes(state) AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) InvMixColumns(state) end for InvShiftRows(state) InvSubBytes(state) Chuẩn nâng cao (AES) 10/11 [...].. .Chuẩn nâng cao (AES) AddRoundKey(state, w[0, Nb-1]) Y = state 11/11 . hơn. o Nêu rõ cải tiến các mã đã có với các đề xuất mới. Chuẩn mã nâng cao AES – Rijndael Cuối cùng Rijndael được chọn là chuẩn mã nâng cao. Nó được thiết kế. InvShiftRows(state) InvSubBytes(state) Chuẩn mã nâng cao (AES) 10/11 AddRoundKey(state, w[0, Nb-1]) Y = state. Chuẩn mã nâng cao (AES) 11/11

Ngày đăng: 12/03/2014, 23:11

Hình ảnh liên quan

o Mọi phép toán được thực hiện với XOR và bảng tra, nên rất nhanh và hiệu quả. • Sơ đồ Rijndael - Chuẩn mã hóa nâng cao AES

o.

Mọi phép toán được thực hiện với XOR và bảng tra, nên rất nhanh và hiệu quả. • Sơ đồ Rijndael Xem tại trang 3 của tài liệu.
- Phép thế byte làm việc trên các byte sử dụng bảng với 256 đầu vào. - Dịch hàng là phép dịch byte đơn giản - Chuẩn mã hóa nâng cao AES

h.

ép thế byte làm việc trên các byte sử dụng bảng với 256 đầu vào. - Dịch hàng là phép dịch byte đơn giản Xem tại trang 7 của tài liệu.

Từ khóa liên quan

Mục lục

  • Chuẩn mã nâng cao (AES)

  • Nguồn gốc

  • Tiêu chuẩn triển khai của AES

  • Chuẩn mã nâng cao AES – Rijndael

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan