Ứng dụng thuật toán mã hóa tiên tiến trong bảo mật dữ liệu

19 847 2
Ứng dụng thuật toán mã hóa tiên tiến trong bảo mật dữ liệu

Đ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

Ứng dụng thuật toán mã hóa tiên tiến trong bảo mật dữ liệu

Mã hóa nâng cao AES ứng dụng ỨNG DỤNG THUẬT TOÁN MÃ HÓA TIÊN TIẾNTRONG BẢO MẬT DỮ LIỆU Nguyễn Văn Thắng1, Nguyễn Thị Ngân2 Phòng đào tạo trường Đại học CNTT&TT, Đại học Thái Nguyên Khoa CN Điện tử truyền thông, trường Đại học CNTT&TT, Đại học Thái Nguyên nvthang@ictu.edu.vn, ntngan@ictu.edu.vn TÓM TẮT: Bài báo muốn giới thiệu chuẩn mã hóa tiên tiến được, Viện tiêu chuẩn công nghệ quốc gia Mỹ đề xuất sử dụng chuẩn liên bang Thuật toán gọi tắt AES (Advanced Encryption Standard) thực giựa hai phép toán phép cộng modun phép nhân modulo trường Galios (GF28) AES thuật toán mã hóa khối đối xứng, xử lý liệu lối vào lối 128 bit, độ dài khóa 128, 192 256 bit Các lối vào, lối khóa biểu diễn ma trận byte (mỗi phần tử ma trận byte) Thuật toán thực với Nr lần lặp (Nr = 10, 12, 14 tùy thuộc vào độ dài khóa 128, 192 256 bit) lần lặp thực thủ tục sau: SubBytes, ShiftRows, MixColumns AddRoundkey trừ vòng lặp cuối thủ tục Mixcolumn Thuật toán thực phần cứng phần mềm Đối với phần cứng, dùng ngôn ngữ VHDL kết hợp với công nghệ FPGA để thực Từ khóa: Mã hóa tiên tiến, Mã hóa khối, VHDL-FPGA-AES ABSTRACT: This paperintroduction Advanced Encryption Standard (AES)which has initiated by National institute of Standard and Technology of US Algorithm of AES is based on two basic operations as addition and multiplication modulo in the Galios field (GF28) The AES algorithm is a symmetric block cipher that can encrypt (encipher) and decrypt (decipher) information The AES algorthim is capable of using cryptographic key of 128, 192 or 256 bits to encrypt and decrypt data in block of 128 bits The input,output and key are represented bythematrix (each of elements of matrix is the one byte) The algorithmisimplementedwithNr rounds ( Nr = 10, 12, 14 depend on the key length is 128, 192, 256 bit ) at the each round executable four procedure following: SubBytes, ShiftRows, MixColumns and AddRoundkey except forthe last roundnoprocedureMixcolumn Algorithm of this can be implemented with the hardware and software For the hardware, be used language VHDL combined with FPGA to execute Keyword : Advanced Encryption Standard - AES, symmetric block cipher, Top security , VHDL- FPGA -AES Giới thiệu Hiện vấn đề anh ninh, bảo mật hệ thống thông tin vấn đề nóng giới quan tâm,đặc biệt việc bảo vệ thông tin, tài liệu điện tử Vấn đề đặt cần có giải pháp bảo mật đơn giản hiệu Bài viết muốn giới thiệu chuẩnmã hóa coi an toàn hiệu quả: chuẩn mã hóa nâng cao (Advanced Encryption Standard – AES) AES thuật toán mã hóa khối đối xứng, xử lý liệu lối vào lối 128 bit, khiđộ dài khóa 128, 192 256 bit Các lối vào, lối khóa biểu diễn ma trận byte (mỗi phần tử ma trận byte) Thuật toán thực với Nr lần lặp (Nr = 10, 12, 14 tùy thuộc vào độ dài khóa 128, 192 256 bit) lần lặp thực thủ tục sau: SubBytes, ShiftRows, MixColumns AddRoundkey trừ vòng lặp cuối thủ tục Mixcolumn Thuật toán thực phần cứng phần mềm, Các khái niệm định nghĩa: 2.1 Các khái niệm ký hiệu Bảng 1: Các khái niệm định nghĩa sử dụng để trình bày chuẩn mã hoá nâng cao Nguyễn Văn Thắng, Nguyễn Thị Ngân Ký hiệu Ý nghĩa AES Chuẩn mã hoá nâng cao Biến đổi Affine Phép biến đổi bao gồm phép nhân với ma trận sau phép cộng vectơ Bit Một số nhị phân nhận giá trị Block Một dãy bit nhị phân tạo thành input, output, trạng thái (state) khóa sử dụng vòng lặp (Round Key) hệ mã Độ dài dãy (khối) số lượng bit mà chứa Các khối cũng xem dãy byte Byte Một nhóm bit Cipher Mã hóa Cipher Key Khóa hệ mã, biểu diễn dạng mảng chiều gồm hàng Nk cột Ciphertext Bản mã Inverse Cipher Giải mã Round Key Là giá trị sinh từ khóa chính cách sử dụng thủ tục sinh khóa Các khóa sử dụng vòng lặp thuật toán State Mảng trạng thái, giá trị mã hóa trung gian biểu diễn dạng mảng chiều gồm hàng Nb cột S-box Một bảng phi tuyến sử dụng thủ tục sinh khóa biến đổi thay byte để thực thay 1-1 giá trị byte Word Một nhóm 32 bit xem đơn vị tính toán độc lập mảng byte 2.2 Các hàm, thủ tục, ký hiệu tham số thuật toán Bảng 2: Các tham số thuật toán, ký hiệu hàm sử dụng mô tả thuật toán Ký hiệu Ý nghĩa AddRoundKey() Thủ tục sử dụng thuật toán mã hóa giải mã, thực phép toán XOR bit trạng thái trung gian (State) khóa vòng (Round Key) Kích thước Round Key kích thước trạng thái InvMixColumns() Hàm biến đổi sử dụng thuật toán giải mã, hàm ngược hàm MixColumns() InvShiftRows() Hàm biến đổi thuật toán giải mã, hàm ngược hàm ShiftRows() InvSubBytes() Hàm biến đổi thuật toán giải mã, hàm ngược hàm SubBytes() K MixColumns() Khóa mã hóa Hàm biến đổi thuật toá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 Nb Số lượng cột (là word 32 bit) tạo thành trạng thái, Nb = 4) Nk Số lượng word 32 bit tạo thành khóa mã hóa K (Nk = 4, 6, 8) Nr Số lượng vòng lặp thuật toán, hàm Nk Nb (là giá Thuật toán mã hóa nâng cao (AES) ứng dụng trị cố định) (Nr = 10, 12 14 tương ứng với giá trị khác Nk) Rcon[] Mảng word số sử dụng vòng lặp RotWord() Hàm sử dụng thủ tục sinh khóa nhận word 4-byte thực hoán vị vòng ShiftRows() Hàm sử dụng trình mã hóa, xử lý trạng thái cách dịch vòng ba hàng cuối trạng thái với số lần dịch khác SubBytes() Hàm biến đổi sử dụng trình mã hóa, xử lý trạng thái cách sử dụng bảng phi tuyến byte (S-box) thao tác byte cách độc lập SubWord() Hàm sử dụng thủ tục sinh khóa nhận word input 4-byte sử dụng S-box giá trị 4-byte để thu word output XOR Phép or bit tuyệt đối ⊕ Phép or bit tuyệt đối  Phép nhân trường hữu hạn 2.3 Các khái niệm quy ước 2.3.1 Input Output Input Output liệu lối vào lối chuẩn mã hóa nâng cao, chúng dãy 128 bit, gọi khối (block) Khóa mã chuẩn mã hóa nâng cao dãy có độ dài 128, 192 256 bit Chuẩn mã hóa nâng cao không làm việc với giá trị input, output khóa có độ dài khác Chuỗi bit input, output khóa hệ mã đánh số kết thúc giá trị nhỏ chiều dài chuỗi sử dụng Ví dụ i số bit ≤ i => in0 in1 in2 in3 in4 in5 in6 in7 in8 in9 in10 in11 in12 in13 in14 in15 S0,0 S1,0 S2,0 S3,0 S0,1 S1,1 S2,1 S3,1 S0,2 S1,2 S2,2 S3,2 S0,3 S1,3 S2,3 S3,3 out0 out1 out2 out3 out4 out5 out6 out7 out8 out9 out10 out11 out12 out13 out14 out15 Hình 2: Mảng trạng thái 2.3.5 Mảng từ Bốn byte cột mảng trạng thái tạo thành từ kép 32 bit mảng trạng thái mô tả mảng chiều, với phần tử gồm byte đánh mục theo hàng r Các phần tử mạng ký hiệu w0, w1, w2, w3 Mảng trạng thái Mảng trạng thái Các phần tử mảng => Với S0,0 S1,0 S2,0 S3,0 S0,1 S0,2 S0,3 S1,1 S1,2 S1,3 S2,1 S2,2 S2,3 S3,1 S3,2 S3,3 2.4 Cở sở toán học (w0, w1, w2, w3) w0=( S0,0, S1,0, S2,0, S3,0) w1 =( S0,1, S1,1, S2,1, S3,1) w2=( S0,2, S1,2, S2,2, S3,2) w3=( S0,3, S1,3, S2,3, S3,3) Các byte thuật toán AES biểu diễn phần tử trường hữu hạn sử dụng ký hiệu trình bày phần 2.3.2 Các phần tử trường hữu hạn cộng nhân Tuy nhiên phép toán khác hẳn với phép cộng nhân thông thường.Hai phép cộng phép nhân trường Galoris GF (2 8) cở sở toán học thuật toán AES 2.4.1 Phép cộng Phép cộng hai phần tử trường hữu hạn thực việc “Cộng” hệ số có trọng số đa thức biểu diễn phần tử Việc cộng thực thông qua phép toán XOR ký hiệu là⊕ A 0 1 B 1 A⊕B 1 Như việc cộng phần tử trường hữu hạn mô tả việc cộng modulo bit tương ứng byte Cho hai byte a7a6a5a4a3a2a1a0} {b7b6b5b4b3b2b1b0}, tổng hai byte {c7c6c5c4c3c2c1c0}, ci = ai⊕ bi với i vị trí bit tương ứng 5 Thuật toán mã hóa nâng cao (AES) ứng dụng Ví dụ: (x6+x4+x2+x+1) ⊕(x7+x+1)=x7+x6+x4+x2 {01010111}⊕{10000011}={11010100} {57}⊕{83}={d4} (Biểu diễn dạng đa thức) (Biễu diễn dạng nhị phân) (Biễu diện dạng hexa) 2.4.2 Phép nhân Phép nhân trường Galois GF(28), ký hiệu  tương ứng với phép nhân thông thường hai đa thức rồi đem chia lấy dư (modulo) cho đa thức tối giản bậc (đa thức tối giản đa thức chia hết cho chính nó) Trong thuật toán AES, đa thức tối giản chọn là: m(x) = x + x4 + x3 + x + 1hay biểu diễn dạng hexa {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+ x6 + x5 + x4 + x3 + x13 + x11 + x9+ x6 + x5 + x4 + x3 + chia cho x8 + x4 + x3 + x + dư x7 + x6 + x7 + x6 + biểu diễn nhị phân là: 11000001 hay c1 biễu diễn hexa Việc chia cho đa thức bậc m(x) bảo đảm 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.4.3 Phép nhân với x Phép nhân với đa thức x (hay phần tử {00000010} € GF(2 8) thực mức byte phép dịch trái sau thực tiếp phép XOR với giá trị {01}{1b} bit b 7=1 Thủ tục nhân với x ký hiệu làxtime() Phép nhân với luỹ thừa x thực cách áp dụng nhiều lần thủ tụcxtime() 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 Ví dụ: Phép nhân {a2}{03} Ta có {03} = {02}⊕{01} Vậy {a2}{03}={a2}{02}⊕{a2}{01} {a2}{01} ={a2} //1010 0010 {a2}{02} ={01}{44}⊕{01}{1b} ={5F} Kết {a2}{03}={a2}⊕{5F} = {FD} Thuật toán 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 chính mảng trạng thái (state) Độ dài khối liệu đầu vào AES cố định với N b=4 Tùy vào độ dài khóa N k (Nk=4, 6, 8) ta có số lần lặp Nr(Nr =10, 12, 14) Nguyễn Văn Thắng, Nguyễn Thị Ngân 3.1 Thuật toán mã hoá Thuật toán mã hóa nâng cao (AES) ứng dụng W[0,3] W[4IR,4I+3] I=1 Key Schedule State = Input F AddRoundKey(State, Roundkey) T I=I+1 SubByte(State) ShiftRow(State) Output = State MixColumn(State) AddRoundKey(State, Roundkey) I[...]... được thực hiện trong thuật toán mã hóa khi 1 ≤ round ≤ Nr Việc thực hiện của hàm này có thể minh họa qua hình vẽ, trong đó l = round * Nb Hình 8: Hoạt động của thủ tục AddRoundKey() của AES 3.2 Thuật toán giải mã Thuật toán giải mã của AES khá giống với thuật toán mã hóa về mặt cấu trúc,tuy nhiêncácthủ tục sử dụng là ngược với các thủ tục trong thuật toán mã hóa Sau đây là lưu đồ thuật toán và đoạn... chính nó 3.2.5 Thuật toán giải mã tương đương Trong thuật toán giải mã được trình bày ở trên chúng ta thấy thứ tự của các hàm biến đổi được áp dụng khác so với thuật toán mã hóa trong khi dạng của danh sách khóa cho cả 2 thuật toán vẫn giữ nguyên Tuy vậy một số đặc điểm của AES cho phép chúng ta có một thuật toán giải mã tương đươg có thứ tự áp dụng các hàm biến đổi giống với thuật toán mã hóa (tất nhiên...11 Thuật toán mã hóa nâng cao (AES) và ứng dụng [S’0,c, S’1,c, S’2,c, S’3,c] = [S’0,c, S’1,c, S’2,c, S’3,c] ⊕ [Wround * Nb + c ] ( với 0 ≤ c < Nb =4) Trong đó [w i] là các word của khóa và round là lần lặp tương ứng với 0 ≤ round ≤ Nr Ngay trước khi vào vòng lặp khóa Trong thuật toán mã hóa phép cộng khóa vòng khởi tạo xảy ra với round = 0 trước khi các vòng lặp của thuật toán được thực... sinh khóa mới Khóa mới được sinh ra dựa trên các dữ liệu như: khóa trước đó, một hằng số chính là số thứ tự của vòng lặp và các giá trị truy vấn từ bảng S-BOX Thuật toán sinh khóa của AES nhận một khóa mã hóa K sau đó thực hiện một thủ tục sinh khóa để sinh một dãy các khóa cho việc mã hóa Thủ tục này sẽ sinh tổng số Nb*(Nr+1) word, thủ tục sử dụng một tập khởi tạo Nb word và mỗi một lần lặp trong. .. được áp dụng cho w[i-1] trước khi thực hiện phép XOR bit 4 Ứng dụng AES Như đã trình bày AES chỉ xử lý dữ liệu lối vào và lối ra là 128 bit tương ứng với 16 byte dữ liệu Nếu ta sử dụng AES để mã hóa ký tự ASCII chuẩn thì mỗi lần ta có thể xử lý được 16 ký tự Tuy nhiên đối với ký tự là tiếng Việt, thì mỗi ký tự có mã 2 byte do vậy ta chỉ có thể xử lý được 8 ký tự Điều này có nghĩa là lối vào của mã hóa. .. sau cần thực hiện trong thuật toán sinh khóa để thuật toán trên có thể hoạt động được: for i = 0 step 1 to (Nr+1)*Nb-1 dw[i] = w[i] end for for round = 1 step 1 to Nr-1 InvMixColumns(dw[round*Nb, (round+1)*Nb-1]) // note change of type end for 3.3 Thuật toán mở rộng khóa (Key Expansion) Việc mã hóa và giải mã của AES cần Nr +1 lần thực hiện hàm AddRoundKey(), đối với lần đầu tiên khóa nhận được từ lối... lặp trong số Nr lần sẽ cần tới Nb word của dữ liệu khóa Dãy khóa kết quả là một mảng tuyến tính các word 4-byte được ký hiệu là [wi] trong đó 0 ≤i < Nb(Nr+1) w0 w1 w2 w3 w4 w5 w6 w7 wNb*Nr … Sự mở rộng khóa được mô tả qua đoạn mã sau: KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk) wNb*Nr+1 wNb*Nr+2 wNb*Nr+3 17 Thuật toán mã hóa nâng cao (AES) và ứng dụng Begin word temp i=0 while (i < Nk) w[i]... Basic để cài đặt thuật toán AES Nguyễn Văn Thắng, Nguyễn Thị Ngân 18 Hình 12 Giao diện của chương trình mã hóa AES 128 bit Hình 12 Giao diện của chương trình giải mã AES 128 bit 4 Tính bảo mật của AES "Thiết kế và độ dài khoá của thuật toán AES (128, 192 và 256 bít) là đủ an toàn để bảo vệ các thông tin được xếp vào loại TỐI MẬT (secret) Các thông tin TUYỆT MẬT (top secret) sẽ phải dùng khóa 192 hoặc... ̣round = 1 to Nr-1 bằng cách sử dụng biến đổi InvMixColumns() Các word đầu tiên và cuối cùng của danh sách khóa không bị thay đổi khi ta áp dụng phương pháp này Thuật toán giải mã tương đương cho một cấu trúc hiệu quả hơn so với thuật toán giải mã trước đó Đoạn giả mã cho thuật toán giải mã tương đương: EqInvCipher(byte in[4*Nb], byte out[4*Nb], word dw[Nb*(Nr+1)]) Nguyễn Văn Thắng, Nguyễn Thị Ngân... hiện AES nhằm mục đích bảo vệ hệ thống an ninh hay thông tin quốc gia phải được NSA kiểm tra và chứng nhận trước khi sử dụng. " Điều này đánh dấu lần đầu tiên công chúng có quyền tiếp xúc với thuật toán mật mã mà NSA phê chuẩn cho thông tin TUYỆT MẬT Nhiều phần mềm thương mại hiện nay sử dụng mặc định khóa có độ dài 128 bít Phương pháp thường dùng nhất để tấn công các dạng mã hoá khối là thử các kiểu ... AddRoundKey() AES 3.2 Thuật toán giải mã Thuật toán giải mã AES giống với thuật toán mã hóa mặt cấu trúc,tuy nhiêncácthủ tục sử dụng ngược với thủ tục thuật toán mã hóa Sau lưu đồ thuật toán đoạn chương... Ngân HÌnh 4: Lưu đồ thuật toán mã hóa AES Bắt đầu thuật toán, dữ liệu cần mã hóa (input) chép vào mảng trạng thái (State) rồi XOR với khóa ban đầu (khóa khởi tạo) Thuật toán AES thực N r vòng... đảo chính 3.2.5 Thuật toán giải mã tương đương Trong thuật toán giải mã trình bày thấy thứ tự hàm biến đổi áp dụng khác so với thuật toán mã hóa dạng danh sách khóa cho thuật toán vẫn giữ nguyên

Ngày đăng: 30/10/2015, 17:48

Từ khóa liên quan

Mục lục

  • 1. Giới thiệu

  • 2. Các khái niệm và định nghĩa:

    • 2.1. Các khái niệm và ký hiệu

    • 2.2. Các hàm, thủ tục, ký hiệu và các tham số của thuật toán

    • 2.3. Các khái niệm và quy ước

      • 2.3.1. Input và Output

      • 2.3.2. Đơn vị Byte

      • 2.3.3. Mảng byte

      • 2.3.4. Mảng trạng thái (States)

      • 2.3.5. Mảng các từ

      • 2.4. Cở sở toán học

        • 2.4.1. Phép cộng

        • 2.4.2. Phép nhân

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

        • 3. Thuật toán

          • 3.1. Thuật toán mã hoá

            • 3.1.1. Thủ tục SubBytes()

            • 3.1.2. Thủ tục ShiftRows()

            • 3.1.3. Thủ tục MixColumn()

            • 3.1.4. Thủ tục AddRoundKey()

            • 3.2. Thuật toán giải mã

              • 3.2.1 Thủ tục InvShiftRows()

              • 3.2.2. Thủ tục InvSubytes()

              • 3.2.3. Thủ tục InvMixColumns()

              • 3.2.4. Thủ tục AddRoundKey()

              • 3.2.5. Thuật toán giải mã tương đương

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

Tài liệu liên quan