20
Mã hóa nâng cao AES và ứ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ắng 1 , Nguyễn Thị Ngân 2 1 Phòng đào tạo trường Đại học CNTT&TT, Đại học Thái Nguyên 2 Khoa CN Điện tử truyền thông, trường Đại học CNTT&TT, Đại học Thái Nguyên. [email protected], [email protected] TÓM TẮT: Bài báo này chúng tôi muốn giới thiệu một chuẩn mã hóa tiên tiến được, Viện tiêu chuẩn và công nghệ quốc gia của Mỹ đề xuất và được sử dụng như một chuẩn liên bang. Thuật toán này gọi tắt là AES (Advanced Encryption Standard) nó được thực hiện giựa trên hai phép toán cơ bản là phép cộng modun 2 và phép nhân modulo trong trường Galios (GF2 8 ). AES là một thuật toán mã hóa khối đối xứng, nó xử lý dữ liệu lối vào và lối ra đều là 128 bit, trong khi độ dài khóa có thể là 128, 192 hoặc 256 bit. Các lối vào, lối ra và khóa được biểu diễn bằng các ma trận byte (mỗi phần tử của ma trận là một byte). Thuật toán được thực hiện với Nr lần lặp (Nr = 10, 12, 14 tùy thuộc vào độ dài khóa là 128, 192 256 bit) mỗi lần lặp thực hiện lần lượt 4 thủ tục sau: SubBytes, ShiftRows, MixColumns và AddRoundkey trừ vòng lặp cuối không có thủ tục Mixcolumn. Thuật toán này có thể được thực hiện bằng phần cứng và phần mềm. Đối với phần cứng, có thể dùng ngôn ngữ VHDL kết hợp với công nghệ FPGA để thực hiện. 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

aes vhdl

Embed Size (px)

DESCRIPTION

AES

Citation preview

M ha nng cao AES v ng dngNguyn Vn Thng, Nguyn Th Ngn65Thut ton m ha nng cao (AES) v ng dngNG DNG THUT TON M HA TIN TINTRONG BO MT D LIUNguyn Vn Thng1, Nguyn Th Ngn21 Phng o to trng i hc CNTT&TT, i hc Thi Nguyn2 Khoa CN in t truyn thng, trng i hc CNTT&TT, i hc Thi [email protected], [email protected] TT: Bi bo ny chng ti mun gii thiu mt chun m ha tin tin c, Vin tiu chun v cng ngh quc gia ca M xut v c s dng nh mt chun lin bang. Thut ton ny gi tt l AES (Advanced Encryption Standard) n c thc hin gia trn hai php ton c bn l php cng modun 2 v php nhn modulo trong trng Galios (GF28).AES l mt thut ton m ha khi i xng, n x l d liu li vo v li ra u l 128 bit, trong khi di kha c th l 128, 192 hoc 256 bit. Cc li vo, li ra v kha c biu din bng cc ma trn byte (mi phn t ca ma trn l mt byte). Thut ton c thc hin vi Nr ln lp (Nr = 10, 12, 14 ty thuc vo di kha l 128, 192 256 bit) mi ln lp thc hin ln lt 4 th tc sau: SubBytes, ShiftRows, MixColumns v AddRoundkey tr vng lp cui khng c th tc Mixcolumn. Thut ton ny c th c thc hin bng phn cng v phn mm. i vi phn cng, c th dng ngn ng VHDL kt hp vi cng ngh FPGA thc hin.T kha: M ha tin tin, M ha khi, VHDL-FPGA-AESABSTRACT: 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

1. Gii thiuHin nay vn anh ninh, bo mt h thng thng tin l mt vn nng c c th gii quan tm,c bit vic bo v cc thng tin, cc ti liu in t. Vn t ra cn c mt gii php bo mt n gin v hiu qu. Bi vit ny chng ti mun gii thiu mt chunm ha c coi l an ton v hiu qu: chun m ha nng cao (Advanced Encryption Standard AES).AES l mt thut ton m ha khi i xng, n x l d liu li vo v li ra u l 128 bit, trong khi di kha c th l 128, 192 hoc 256 bit. Cc li vo, li ra v kha c biu din bng cc ma trn byte (mi phn t ca ma trn l mt byte). Thut ton c thc hin vi Nr ln lp (Nr = 10, 12, 14 ty thuc vo di kha l 128, 192 256 bit) mi ln lp thc hin ln lt 4 th tc sau: SubBytes, ShiftRows, MixColumns v AddRoundkey tr vng lp cui khng c th tc Mixcolumn. Thut ton ny c th c thc hin bng phn cng v phn mm, 2. Cc khi nim v nh ngha:2.1. Cc khi nim v k hiuBng 1: Cc khi nim v nh ngha c s dng trnh by v chun m ho nng caoK hiu ngha

AESChun m ho nng cao

Bin i AffinePhep bin i bao gm mt phep nhn vi mt ma trn sau o la mt phep cng cua mt vect

BitMt s nhi phn nhn gia tri 0 hoc 1

BlockMt day cac bit nhi phn tao thanh input, output, trang thai (state) va cac kha s dung tai cc vng lp (Round Key) cua h ma. dai cua day (khi) la s lng cac bit ma no cha. Cac khi cung co th c xem la mt day cac byte

ByteMt nhom 8 bit

CipherMa hoa

Cipher KeyKha cua h ma, c th c biu din di dang mt mang 2 chiu gm 4 hang va Nk ct

CiphertextBan ma

Inverse CipherGiai ma

Round Key

La cac gia tri sinh ra t kha chinh bng cach s dung thu tuc sinh kha. Cac kha nay c s dung tai cac vng lp cua thut toan

StateMng trng thi, l cac gia tri ma ha trung gian c th biu din di dang mt mang 2 chiu gm 4 hang va Nb ct

S-boxMt bang th phi tuyn c s dung trong thu tuc sinh kha va trong cac bin i thay th cac byte thc hin cac thay th 1-1 i vi mt gia tri 1 byte

WordMt nhm 32 bit c th c xem nh 1 n v tnh ton c lp hoc l mt mng 4 byte

2.2. Cc hm, th tc, k hiu v cc tham s ca thut tonBng 2: Cc tham s thut ton, cc k hiu v cc hm c s dng trong m t thut tonK hiu ngha

AddRoundKey()Th tc ny c s dung trong thut toan ma ha va giai ma, trong thc hin phep toan XOR bit gia mt trang thai trung gian (State) va mt kha cua vng (Round Key). Kich thc cua mt Round Key bng kich thc cua trang thai.

InvMixColumns()Ham bin i c s dung trong thut toan giai ma, la ham ngc cua ham MixColumns()

InvShiftRows()Ham bin i trong thut toan giai ma, la ham ngc cua ham ShiftRows()

InvSubBytes()Ham bin i trong thut toan giai ma, la ham ngc cua ham SubBytes()

KKha ma ha

MixColumns()Ham bin i trong thut toan ma ha nhn tt ca cac ct cua mt trang thai (State) va trn vi d liu cua n (khng phu thuc ln nhau) nhn c mt ct mi

NbS lng cac ct (la cac word 32 bit) tao thanh mt trang thai, Nb = 4)

NkS lng cac word 32 bit tao thanh khoa ma hoa K (Nk = 4, 6, hoc 8)

NrS lng cac vong lp cua thut toan, la mt ham cua Nk va Nb (la cac gia tri c inh) (Nr = 10, 12 hoc 14 tng ng vi cac gia tri khac nhau cua Nk)

Rcon[]Mang word hng s s dung trong cac vng lp

RotWord()Ham s dung trong thu tuc sinh kha nhn mt word 4-byte va thc hin mt hoan vi vng

ShiftRows()Ham s dung trong qua trnh ma ha, x ly cac trang thai bng cach dich vong ba hang cui cua trang thai vi s ln dich khac nhau

SubBytes()Ham bin i s dung trong qua trnh ma ha, x ly mt trang thai bng cach s dung mt bang th phi tuyn cac byte (S-box) thao tac trn mi byte mt cach c lp

SubWord()Ham s dung trong thu tuc sinh kha nhn mt word input 4-byte va s dung mt S-box trn mi gia tri 4-byte nay thu c 1 word output

XORPhep or bit tuyt i

Phep or bit tuyt i

Phep nhn trn trng hu han

2.3. Cc khi nim v quy c2.3.1. Input va OutputInput va Output l cc d liu li vo v li ra cua chun ma hoa nng cao, chng u la cac day 128 bit, cn goi la cac khi (block). Kha m cua chun ma ha nng cao la mt day c dai 128, 192 hoc 256 bit. Chun ma hoa nng cao khng lam vic vi cac gia tri input, output va khoa co dai khac. Chui cac bit cua input, output va khoa cua h ma c anh ch s bt u t 0 v kt thc bng mt gi tr nh hn chiu di ca chui c s dng. V d i l mt ch s bit th 0 i State array

=>output byte

in0in4in8in12S0,0S0,1S0,2S0,3out0out4out8out12

in1in5in9in13S1,0S1,1S1,2S1,3out1out5out9out13

in2in6in10in14S2,0S2,1S2,2S2,3out2out6out10out14

in3in7in11in15S3,0S3,1S3,2S3,3out3out7out11out15

Hnh 2: Mng trng thi2.3.5. Mng cc tBn byte trn mi ct ca mng trng thi c to thnh mt t kp 32 bit do mng trng thi c th m t l mng mt chiu, vi mi phn t gm 4 byte c nh ch mc theo hng r. Cc phn t ca mng k hiu lw0, w1, w2, w3.Mng trng thi

=>Mng trng thi

ViCc phn t ca mng

S0,0S0,1S0,2S0,3(w0,w1,w2,w3)w0=( S0,0, S1,0, S2,0, S3,0)

S1,0S1,1S1,2S1,3w1 =( S0,1, S1,1, S2,1, S3,1)

S2,0S2,1S2,2S2,3w2=( S0,2, S1,2, S2,2, S3,2)

S3,0S3,1S3,2S3,3w3=( S0,3, S1,3, S2,3, S3,3)

2.4. C s ton hcCc byte trong thut ton AES u c biu din nh mt phn t trong trng hu hn s dng cc k hiu nh trnh by phn 2.3.2. Cc phn t trong trng hu hn u c th c cng v nhn. Tuy nhin cc php ton ny khc hn vi cc php cng v nhn thng thng.Hai php cng v php nhn trn trng Galoris GF (28) l c s ton hc ca thut ton AES.2.4.1. Php cngPhp cng hai phn t trong trng hu hn c thc hin bng vic Cng cc h s c cng trng s trong cc a thc biu din cc phn t. Vic cng c thc hin thng qua php ton XOR k hiu lABAB

000

011

101

110

Nh vy vic cng cc phn t trong trng hu hn c th m t bng vic cng modulo 2 ca cc bit tng ng trong byte. Cho hai byte a7a6a5a4a3a2a1a0} v {b7b6b5b4b3b2b1b0}, th tng hai byte l {c7c6c5c4c3c2c1c0}, trong ci = ai bi vi i l v tr cc bit tng ng.V d: (x6+x4+x2+x+1) (x7+x+1)=x7+x6+x4+x2(Biu din dng a thc){01010111}{10000011}={11010100}(Biu din dng nh phn){57}{83}={d4}(Biu din dng hexa)2.4.2. Php nhnPhp nhn trn trng Galois GF(28), k hiu l tng ng vi php nhn thng thng ca hai a thc ri em chia ly d (modulo) cho mt a thc ti gin bc 8 (a thc ti gin l a thc ch chia ht cho 1 v chnh n). Trong thut ton AES, a thc ti gin c chn l: m(x) = x8 + x4 + x3 + x + 1hay biu din di dng hexa l {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 + 1 =x13 + x11 + x9+ x6 + x5 + x4 + x3 + 1x13 + x11 + x9+ x6 + x5 + x4 + x3 + 1 chia cho x8 + x4 + x3 + x + 1 d x7 + x6 + 1x7 + x6 + 1 biu din nh phn l: 11000001 hay c1 trong biu din hexa.Vic chia cho a thc bc 8 m(x) bo m kt qu nhn c ca php rt gn l mt a thc c bc nh hn 8 nn c th biu din c di dng 1 byte.2.4.3. Php nhn vi xPhp nhn vi a thc x (hay phn t {00000010} GF(28) c th c thc hin mc byte bng mt php dch tri v sau thc hin tip php XOR vi gi tr {01}{1b} nu bit b7=1. Th tc nhn vi x k hiu lxtime(). Php nhn vi cc lu tha ca x c th c thc hin bng cch p dng nhiu ln th tcxtime(). Kt qu php nhn vi mt gi tr bt k c xc nh bng php cng () cc kt qu trung gian ny li vi nhau.V d:Php nhn {a2}{03}Ta c {03} = {02}{01}Vy {a2}{03}={a2}{02}{a2}{01}{a2}{01} ={a2}//1010 0010{a2}{02} ={01}{44}{01}{1b} ={5F}Kt qu {a2}{03}={a2}{5F} = {FD}3. Thut tonThut ton AES c thc hin tun t gm nhiu bc bin i, kt qu u ra ca php bin i trc l u vo ca php bin i tip theo. Kt qu trung gian ca cc php bin i chnh l mng trng thi (state) di ca khi d liu u vo ca AES l c nh vi Nb=4. Ty vo di kha Nk (Nk=4, 6, 8) ta c s ln lp Nr(Nr =10, 12, 14).3.1. Thut ton m ho

State = InputAddRoundKey(State, Roundkey)SubByte(State)ShiftRow(State)MixColumn(State)AddRoundKey(State, Roundkey)SubByte(State)ShiftRow(State)AddRoundKey(State, Roundkey)Key ScheduleI