TIỂU LUẬN MÔN AN NINH HỆ THỐNG THÔNG TIN HỆ MÃ HÓA AES

23 1.8K 9
TIỂU LUẬN MÔN AN NINH HỆ THỐNG THÔNG TIN HỆ MÃ HÓA 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

MỤC LỤC1.Giới thiệu chung31.1.Ưu điểm của AES31.2.Nhược điểm của AES31.3.Ứng dụng của AES32.Các thuật ngữ32.1.Các quy ước32.2.Cơ sở toán học của AES32.2.1.Phép cộng32.2.2.Phép nhân32.2.3.Phép nhân với x32.2.4.Đa thức với các hệ số trên trường GF(28)33.Thuật toán mã hóa33.1.Quá trình mã hóa33.1.1.Hàm SubBytes()33.1.2.Hàm ShiftRows()33.1.3.Hàm MixColumns()33.1.4.Hàm AddRoundKey()33.1.5.Thuật toán sinh khóa (Key Expansion)33.2.Quá trình giải mã33.2.1.Hàm InvShiftRow()33.2.2.Hàm InvSubBytes()33.2.3.Hàm InvMixColumns()33.2.4.Hàm nghịch đảo của hàm AddRoundKey()34.Kết luận34.1.Độ an toàn của thuật toán34.2.Đánh giá thuật toán3Phụ lục A: Ví dụ về mở rộng khóa 128 bit3Phụ lục B: Ví dụ về mã hóa31.Giới thiệu chungVào những năm 1990, nhận thấy nguy cơ của mã hóa DES là kích thước khóa ngắn, nó có thể bị phá mã trong tương lai gần nên cục tiêu chuẩn quốc gia Hoa Kỳ đã kêu gọi xây dựng một phương pháp mã hóa mới. Cuối cùng một thuật toán có tên là Rijndael được chọn và đổi tên thành Andvanced Encryption Standard hay AES. Chuẩn mã hóa dữ liệu cao cấp AES là một hệ mã hóa khóa bí mật có tên là Rijndael do hai nhà mật mã học người Bỉ là Joan Deamen và Vincent Rijmen đưa ra và trở thành chuẩn từ năm 2000. Chuẩn mã hóa AES cho phép xử lý các khối dữ liệu input có kích thước 128 bit sử dụng các khóa có độ dài 128, 192 hoặc 256 bit. Hệ mã hóa Rijndael được thiết kế để có thể làm việc với các khóa và khối dữ liệu có độ dài lớn hơn, tuy nhiên, khi được chọn là chuẩn do ủy ban tiêu chuẩn của Hoa kỳ đưa ra vào năm 2001, nó được quy định chỉ làm việc với khối dữ liệu 128 bit và các khóa có độ dài 128, 192, hoặc 256 bit (do đó còn đặt cho nó các tên AES128, AES192, AES256 tương ứng với độ dài khóa sử dụng)1.1.Ưu điểm của AES•AES đã được chính phủ Hoa Kỳ tuyên bố là có độ an toàn cao, và được sử dụng trong thông tin mật.•AES sử dụng bảng tra và phép thế có tính chất phi tuyến mạnh dẫn đến mức độ phân tán thông tin phức tạp làm tăng độ an toàn cho thuật toán•AES có mô tả toán học đơn giản, cấu trúc rõ ràng đơn giản1.2.Nhược điểm của AESCấu trúc toán học của AES có mô tả toán học khá đơn giản. Tuy điều này chưa dẫn đến mối nguy hiểm nào nhưng một số nhà nghiên cứu cho rằng sẽ có người lợi dụng được cấu trúc này trong tương lai

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ BỘ MÔN ANH NINH HỆ THỐNG THÔNG TIN HỆ MÃ HÓA AES Giảng viên: PGS.TS Trịnh Nhật Tiến Thực hiện: Nguyễn Thị Dung Hà Nội, 2013 MỤC LỤC Giới thiệu chung Vào năm 1990, nhận thấy nguy mã hóa DES kích thước khóa ngắn, bị phá mã tương lai gần nên cục tiêu chuẩn quốc gia Hoa Kỳ kêu gọi xây dựng phương pháp mã hóa Cuối thuật tốn có tên Rijndael chọn đổi tên thành Andvanced Encryption Standard hay AES Chuẩn mã hóa liệu cao cấp AES hệ mã hóa khóa bí mật có tên Rijndael hai nhà mật mã học người Bỉ Joan Deamen Vincent Rijmen đưa trở thành chuẩn từ năm 2000 Chuẩn mã hóa AES cho phép xử lý khối liệu input có kích thước 128 bit sử dụng khóa có độ dài 128, 192 256 bit Hệ mã hóa Rijndael thiết kế để làm việc với khóa khối liệu có độ dài lớn hơn, nhiên, chọn chuẩn ủy ban tiêu chuẩn Hoa kỳ đưa vào năm 2001, quy định làm việc với khối liệu 128 bit khóa có độ dài 128, 192, 256 bit (do cịn đặt cho tên AES-128, AES-192, AES-256 tương ứng với độ dài khóa sử dụng) 1.1 Ưu điểm AES • AES phủ Hoa Kỳ tun bố có độ an tồn cao, sử dụng thơng tin mật • AES sử dụng bảng tra phép có tính chất phi tuyến mạnh dẫn đến mức độ phân tán thơng tin phức tạp làm tăng độ an tồn cho thuật tốn • AES có mơ tả tốn học đơn giản, cấu trúc rõ ràng đơn giản 1.2 Nhược điểm AES Cấu trúc tốn học AES có mơ tả tốn học đơn giản Tuy điều chưa dẫn đến mối nguy hiểm số nhà nghiên cứu cho có người lợi dụng cấu trúc tương lai 1.3 Ứng dụng AES • Hiện nay, AES sử dụng phổ biến toàn giới để bảo vệ liệu tổ chức ngân hàng, tài chính, phủ, thương mị điện tử, chữ ký điện tử • Mã hóa AES ứng dụng nhanh phần cứng phần mềm, yêu cầu không gian lưu trữ nhỏ, lý tưởng để sử dụng cho việc mã hóa thiết bị cầm tay nhỏ ổ USB flash, ổ đĩa CD, … • Mã hóa AES sử dụng hàm băm • Xây dựng hàm băm, ví dụ hàm băm Whilrpool Các thuật ngữ 2.1 Các quy ước Input Output : Input Output hệ mã hóa dãy 128 bit, gọi khối (block), độ dài khối số bit liệu mà chứa Khóa chuẩn mã hóa cao cấp dãy có độ dài 128, 192, 256 bit Hệ mã hóa khơng làm việc với giá trị input, output khóa có độ dài khác (mặc dù thuật toán sở cho phép điều này) Các input, output hệ mã hóa đánh số từ Đơn vị byte: Đơn vị để xử lý AES byte tức dãy bit xem đối tượng đơn Các giá trị input, output khóa hệ mã hóa xem mảng byte Các giá trị input, output khóa hệ mã ký hiệu tên mảng a biểu diễn dạng an a[n] n nhận giá trị khoảng sau: • Nếu độ dài khóa 128 bit: 0≤n≤16; • Nếu độ dài khóa 192 bit: 0≤n≤24; • Nếu độ dài khóa 192 bit: 0≤n≤32; Tất giá trị byte sử dụng thuật toán AES biểu diễn dạng dãy bit theo định dạng {b 7, b6, b5, b4, b3, b2, b1, b0} Các byte sau hiểu phần tử trường hữu hạn cách sử dụng biểu diễn thành dạng đa thức: b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0x0 = Mảng trạng thái (state): Các thao tác bên AES thực mảng hai chiều byte gọi mảng trạng thái Mảng trạng thái gồm có hàng, Nb cột (Nb kích thước khối chia cho 32), ký hiệu s byte mảng có số hàng r cột c (0≤c,r≤4) , dùng để lưu trữ giá trị trung gian bước trình xử lý Bắt đầu phép mã hóa hay giải mã việc chép mảng byte in 0, in1, , in15 đầu vào vào mảng trạng thái s theo công thức sau: s[r,c]=in[r+4c], với 0≤c,r≤4 Vào cuối trình mã hóa hay giải mã, mảng trạng thái chéo vào mảng byte đầu theo công thức out0, out1, …,out15 out[r+4c]=s[r,c], với 0≤c,r≤4 2.2 Cơ sở toán học AES AES sử dụng trường hữu hạn Galois GF(28) để thực phép toán: phép cộng, phép trừ, phép nhân, phép chia Các phần tử trường GF(2 8) xem đa thức 2.2.1 Phép cộng Phép cộng hiểu phép XOR hai bit tương ứng byte có ký hiệu ⊕ 2.2.2 Phép nhân Phép nhân trường GF(28) tương ứng với phép nhân thông thường hai đa thức đem chia lấy dư (modulo) cho đa thức tối giản bậc Trong thuật toán AES, đa thức tối giản chọn là: m(x) = x8+x4+x3+x2+x+1 hay {01} {1b} biểu diễn dạng hexa Kết nhận phép rút gọn đa thức có bậc nhỏ nên biểu diễn dạng byte 2.2.3 Phép nhân với x Phép nhân với đa thức x (hay phần tử {00000010} GF(28)) thực mức độ byte phép dịch trái sau thực tiếp phép XOR với giá trị {1b} b7=1 Thao tác ký hiêu xtime() Phép nhân với lũy thừa x thực cách áp dụng nhiều lần thao tác xtime() Kết phép nhân với giá trị xác định phép cộng ((⊕) kết trung gian lại với 2.2.4 Đa thức với hệ số trường GF(28) Phép nhân hai đa thức bậc với hệ số GF(2 8) a(x) ⊗ b(x) xác định hạng tử d(x): d(x) = d3X3+d2X2+d1X+d0, đó: 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) Thuật tốn mã hóa Thuật toán AES thực gồm nhiều bước biến đổi, kết đầu phép biến đổi trước đầu vào phép biến đổi Kết trung gian phép biến đổi mảng trạng thái (state) Độ dài khối liệu đầu vào AES cố định với Nb=4, tùy vào độ dài khoá (Nk=4,6,8) ban đầu ta có số lần lặp Nr cho q trình xác định theo cơng thức Nr=max{Nb,Nk}+6 Quy trình mã hóa giải mã AES sử dụng hàm lặp hàm kết hợp bốn hàm biến đổi (với đơn vị xử lý byte) sau: - Biến đổi thay byte cách sử dụng bảng S-box - Dịch hàng mảng trạng thái với số lần dịch hàng khác - Kết hợp liệu cột mảng trạng thái - Cộng khóa RoundKey vào trạng thái Giải mã AES cách thực biến đổi ngược biến đổi phép mã hóa AES cách biến đổi tương đương Các biến đổi minh họa hình vẽ: (a) Mã hóa Tên hàm AddRoundKey() MixColumns() ShiftRows() SubBytes() (b) Giả mã Giải thích Hàm biến đổi sử dụng thuật tốn mã hóa giải mã thực phép XOR bit trạng thái trung gian (state) khóa vịng lặp (Round Key) Kích thước Round Key kích thước trạng thái, ví dụ với Nb=4 độ dài Round Key 128 bit hay 16 byte Hàm biến đổi thuật tốn mã hóa nhận tất cột trạng thái (state) trộn với liệu (khơng phụ thuộc lẫn nhau) để nhận cột Hàm sử dụng q trình mã hóa, xử lý trạng thái cách dịch vòng ba hang cuối trạng thái với số lần dịch khác Hàm biến đổi sử dụng q trình mã hóa, xử lý trạng thái InvMixColumns() InvShiftRows() Inv SubBytes() 3.1 cách sử dụng bảng phi tuyến byte (S-box) thao tác byte cách độc lập Hàm biến đổi sử dụng thuật toán giải mã, hàm ngược hàm MixColumns() Hàm biến đổi sử dụng thuật toán giải mã, hàm ngược hàm ShiftRows() Hàm biến đổi sử dụng thuật toán giải mã, hàm ngược hàm SubBytes() Quá trình mã hóa Bắt đầu thuật tốn, rõ chép vào mảng trạng thái sử dụng quy ước mô tả phần Sau cộng với khóa RoundKey, mảng trạng thái khởi tạo biến đổi cách thực hàm vòng Nr lần (10, 12 14 phụ thuộc vào độ dài khóa) lần cuối thực khác với lần trước Trạng thái sau lần lặp cuối chuyển thành output thuật toán Hàm vịng tham số hóa cách sử dụng dãy khóa biểu diễn mảng chiều word byte sinh từ thử tục sinh khóa (Key Expansion) Tất vong thực công việc giống dựa hàm theo thứ tự SubBytes(), ShiftRows(), MixColumns(), AddRoundKey() trừ vòng cuối bỏ qua việc thực hàm MixColumns() Thuật tốn mơ tả chi tiết qua đoạn mã giả sau: Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)]) begin byte state[4,Nb] state=in AddRoundKey(state, w[0,Nb-1]) for round=1 step to Nr-1 SubBytes(state) ShiftRows(state) MixColumns(state) AddRoundKey(state, w[round*Nb,(round+1)*Nb-1]) end for SubBytes(state) ShiftRows(state) AddRoundKey(state,w[Nr*Nb, (Nr+1)*Nb-1]) out=state end 3.1.1 Hàm SubBytes() Hàm SubBytes() thực phép thay byte mảng trạng thái cách sử dụng bảng S-box, bảng khả nghịch xây dựng cách kết hợp hai biến đổi sau: Nhân nghịch đảo trường hữu hạn GF(2 8), phần tử {00} ánh xạ thành Áp dụng biến đổi Affine sau (trên GF(2)): bi’= bi ⊕ b(i+4)mod8 ⊕ b(i+5)mod8 ⊕ b(i+6)mod8 ⊕ b(i+7)mod8 ⊕ ci, i bit thứ i byte b tương ứng ci bit thứ I byte c với giá trị {63} hay {01100011} Hình minh họa kết việc áp dụng hàm biến đổi SubBytes() mảng trạng thái 3.1.2 Hàm ShiftRows() Trong hàm byte ba hàng cuối mảng trạng thái dịch vòng với số lần dịch (hay số byte bị dịch) khác Hàng r=0 không bị dịch Cụ thể hàm tiến hành bước đổi sau: S’rc = Sr,(c+shift(r,Nb))modNb (Nb=4) giá trị dịch shift(r,Nb) phụ thuộc vào số hàng r sau: shift(1,4)=1, shift(2,4)=2, shift(3,4)=3 Thao tác chuyển byte tới vị trí thấp hàng, byte thấp chuyển lên đầu hàng Tất mơ tả minh họa qua hình vẽ sau: 3.1.3 Hàm MixColumns() Hàm làm việc cột mảng trạng thái, coi cột mảng trạng thái đa thức gồm hạng tử Các cột xem đa thức GF(2 8) nhân modulo x4+1 với đa thức cố định a(x): a(x) = {03}x3 + {02}x2 + {01}x + {02} Có thể biểu diễn phép nhân ma trận: s’(x) = a(x) ⊗ s(x) 10 = Với 0≤c

Ngày đăng: 21/08/2014, 15:38

Từ khóa liên quan

Mục lục

  • 1. Giới thiệu chung

    • 1.1. Ưu điểm của AES

    • 1.2. Nhược điểm của AES

    • 1.3. Ứng dụng của AES

    • 2. Các thuật ngữ

      • 2.1. Các quy ước

      • 2.2. Cơ sở toán học của AES

        • 2.2.1. Phép cộng

        • 2.2.2. Phép nhân

        • 2.2.3. Phép nhân với x

        • 2.2.4. Đa thức với các hệ số trên trường GF(28)

        • 3. Thuật toán mã hóa

          • 3.1. Quá trình mã hóa

            • 3.1.1. Hàm SubBytes()

            • 3.1.2. Hàm ShiftRows()

            • 3.1.3. Hàm MixColumns()

            • 3.1.4. Hàm AddRoundKey()

            • 3.1.5. Thuật toán sinh khóa (Key Expansion)

            • 3.2. Quá trình giải mã

              • 3.2.1. Hàm InvShiftRow()

              • 3.2.2. Hàm InvSubBytes()

              • 3.2.3. Hàm InvMixColumns()

              • 3.2.4. Hàm nghịch đảo của hàm AddRoundKey()

              • 4. Kết luận

                • 4.1. Độ an toàn của thuật toán

                • 4.2. Đánh giá thuật toán

                • Phụ lục A: Ví dụ về mở rộng khóa 128 bit

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

Tài liệu liên quan