1. Trang chủ
  2. » Luận Văn - Báo Cáo

TIỂU LUẬN MẬT MÃ AN TOÀN DỮ LIỆU HỆ MÃ HÓA AES (ADVANCED ENCRYPTION STANDARD)

29 702 9

Đ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

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 421,5 KB

Nội dung

TIỂU LUẬN MẬT MÃ AN TOÀN DỮ LIỆU HỆ MÃ HÓA AES (ADVANCED ENCRYPTION STANDARD) Trước đây khi công nghệ máy tính chưa phát triển, khi nói đến vấn đề an toàn bảo mật thông tin (Information Security), chúng ta thường hay nghĩ đến các biện pháp nhằm đảm bảo cho thông tin được trao đổi hay cất giữ một cách an toàn và bí mật. Chẳng hạn là các biện pháp như:

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

Mã HV: 13025089

Hà Nội, 04/2014

Trang 2

MỤC LỤC

MỤC LỤC 2

DANH MỤC HÌNH , BẢNG BIỂU 4

LỜI MỞ ĐẦU 1

MÃ HÓA TIÊU CHUẨN TIÊN TIẾN 2

ADVANCED ENCRYPTION STANDARD 2

I Giới thiệu 2

1 Ưu điểm 2

2 Nhược điểm 3

3 Ứng dụng 3

II Các khái niệm và định nghĩa 3

1 Các khái niệm và ký hiệu 3

2 Các hàm, ký hiệu và các tham số của thuật toán 4

3 Các kí hiệu và qui ước 6

3.1 Đầu vào, đầu ra 6

3.2 Đơn vị byte 6

3.3 Cơ sở toán học của AES 7

3.3.1 Phép cộng 7

3.3.2 Phép nhân 7

3.3.3 Phép nhân với x 8

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

4 Trạng thái 8

III Thuật toán AES 9

1 Thuật toán mã hóa 10

1.1 Hàm SubBytes() 12

1.2 Hàm ShiftRows() 14

Trang 3

1.3 Hàm MixColumns() 15

1.4 Hàm AddRoundKey() 16

1.5 Thuật toán sinh khóa (Key Expansion) 17

2 Thuật toán giải mã 20

2.1 Hàm InvSubBytes() 20

2.2 Hàm InvShiftRows() 21

2.3 Hàm InvMixColumns() 21

2.4 Biến đổi nghịch AddRoundKey() 22

III Kết luận 22

1 Yêu cầu về độ dài khóa 22

2 Tham số hóa độ dài khóa, kích thước khối và số vòng 22

3 Tối ưu hóa 23

4 An toàn 23

5 Độ an toàn của thuật toán 24

6 Đánh giá độ phức tạp của thuật toán 25

Trang 4

DANH MỤC HÌNH , BẢNG BIỂU

Hình 1: Sơ đồ thuật toán 11

Hình 2:Các phần tử biến đổi của S-box dưới dạng ma trận 13

Hình 3:Kết quả biến đổi của hàm SubBytes() với mảng trạng thái 13

Hình 4: Nội dung bảng S-box sau khi tính toán 14

Hình 5: Kết quả tính toán 14

Hình 6: Minh họa sự dịch vòng 15

Hình 7: Sự làm việc trên cột trạng thái 16

Hình 8: Thực hiện hàm AddRoundKey() 17

Hình 9: Quá trình thực hiện Expand Key 18

Hình 10: Minh họa thực hiện hàm InvShiftRows() 21

Bảng 1: Qui ước môṭ số từ viết tắt và thuật ngữ của AES 4

Bảng 2: Các hàm, ký hiệu, các tham số của thuật toán 6

Bảng 3: Bảng biểu diễn các xâu 4 bit 7

Bảng 4: Các trạng thái của AES 9

Bảng 5: Độ dài khóa AES 9

Trang 5

LỜI MỞ ĐẦU

Trước đây khi công nghệ máy tính chưa phát triển, khi nói đến vấn đề an toàn bảomật thông tin (Information Security), chúng ta thường hay nghĩ đến các biện phápnhằm đảm bảo cho thông tin được trao đổi hay cất giữ một cách an toàn và bí mật.Chẳng hạn là các biện pháp như:

Đóng dấu và ký niêm phong một bức thư để biết rằng lá thư có được chuyển nguyênvẹn đến người nhận hay không

Dùng mật mã mã hóa thông điệp để chỉ có người gửi và người nhận hiểu đượcthông điệp Phương pháp này thường được sử dụng trong chính trị và quân sự.Lưu giữ tài liệu mật trong các két sắt có khóa, tại các nơi được bảo vệ nghiêm ngặt,chỉ có những người được cấp quyền mới có thể xem tài liệu

Với sự phát triển mạnh mẽ của công nghệ thông tin, đặt biệt là sự phát triển củamạng Internet, ngày càng có nhiều thông tin được lưu giữ trên máy vi tính và gửi đitrên mạng Internet Và do đó xuất hiện nhu cầu về an toàn và bảo mật thông tin trênmáy tính Có thể phân loại mô hình an toàn bảo mật thông tin trên máy tính theo haihướng chính như sau:

Bảo vệ thông tin trong quá trình truyền thông tin trên mạng (Network Security).Bảo vệ hệ thống máy tính, và mạng máy tính, khỏi sự xâm nhập phá hoại từ bênngoài (System Security)

Để khắc phục các hành động phá hoại này, người ta dùng các chương trình có chứcnăng gác cổng, phòng chống, mã hóa, bảo mật cho thông tin

Trang 6

MÃ HÓA TIÊU CHUẨN TIÊN TIẾN ADVANCED ENCRYPTION STANDARD

I Giới thiệu

Advanced Encryption Standard (AES) - Tiêu chuẩn mã hóa tiên tiến là một thuậttoán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa nhằm mãhóa và giải mã dữ liệu do Viện Tiêu chuẩn và Công nghệ quốc gia Hoa Kỳ(National Institute Standards and Technology – NIST) phát hành ngày 26/11/2001

và được đặc tả trong Tiêu chuẩn Xử lý thông tin Liên bang 197 (FederalInformation Processing Standard – FIPS 197) sau quá trình kéo dài 5 năm trình phêduyệt, AES tuân theo mục 5131 trong Luật Cải cách quản lý công nghệ thông tinnăm 1996 và Luật An toàn máy tính năm 1997

Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ: Joan Daemen và VincentRijmen Thuật toán được đặt tên là "Rijndael" khi tham gia cuộc thi thiết kế AES.Và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êugọ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 Thuật toán được dựa trên bản thiết kế Square có trước đó của Daemen và Rijmen;còn Square lại được thiết kế dựa trên Shark Khác với với DES sử dụng mạngFeistel, Rijndael sử dụng mạng thay thế hoán vị AES có thể dễ dàng thực hiện vớitốc độ cao bằng phần mềm hoặc phần cứng và không đòi hỏi nhiều bộ nhớ

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 đượcchọ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 256bit (do đó còn đặt cho nó các tên AES-128, AES-192, AES-256 tương ứng với độdài khóa sử dụng)

1 Ưu điểm

AES đã được chính phủ Hoa Kỳ tuyên bố là có độ an toàn cao, và được sử dụngtrong thông tin mật

Trang 7

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ản

2 Nhược điểm

Cấ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ưadẫ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ợidụng được cấu trúc này trong tương lai

3 Ứng dụng

Hiện nay, AES được sử dụng phổ biến trên toàn thế giới để bảo vệ dữ liệu ở các

tổ chức ngân hàng, tài chính, chính phủ, thương mại điện tử, chữ ký điện tử

Mã hóa AES được ứng dụng nhanh đối với cả phần cứng và phần mềm, chỉ yêucầu một không gian lưu trữ nhỏ, lý tưởng để sử dụng cho việc mã hóa những thiết bịcầm tay nhỏ như ổ USB flash, ổ đĩa CD, …

Mã hóa AES được sử dụng như một hàm băm

II Các khái niệm và định nghĩa

1 Các khái niệm và ký hiệu

Biến đổi Affine Phép biến đổi bao gồm một phép nhân với

một ma trận sau đó là môṭ phép cộng củamột vectơ

Bit Một số nhi ̣phân nhâṇ giá tri ̣0 hoặc 1

Block Một dãy các bit nhi ̣phân tạo thành input,

output, trạng thái (state) và các khóa sửdụng tại các vòng lặp (Round Key) của hệ

mã Độ dài của dãy (khối) là số lượng cácbit mà nó chứa Các khối cũng có thể đượcxem là một dãy các byte

Cipher Thuật toán mã hóa

Trang 8

Cipher Key Khóa của hệ mã, có thể được biểu diễn

dưới dạng một mảng 2 chiều gồm 4 hàng

và Nk cột

Inverse Cipher Thuật toán giải mã

Thủ tục sinh khóa (Key Expansion) Thủ tục được sử dụng để sinh ra các khóa

sử dụng tại các vòng lặp của thuật toán mãhóa, giải mã từ khóa chính ban đầu

Round Key Là các giá trị sinh ra từ khóa chính bằng

cách sử dụng thủ tục sinh khóa Các khóanày được sử dụng tại các vòng lặp củathuật toán

Trạng thái (State) Các giá trị mã hóa trung gian có thể biểu

diễn dưới dạng môṭ mảng 2 chiều gồm 4hàng và Nb cột

S-box Một bảng thế phi tuyến được sử dụng trong

thủ tuc ̣ sinh khóa và trong các biến đổi thaythế các byte để thực hiện các thay thế 1-1đối với một giá tri ̣1 byte

Word Một nhóm 32 bit có thể được xem như 1

đơn vi ̣tính toán độc lập hoặc là một mảng

4 byteBảng 1: Qui ước môṭ số từ viết tắt và thuật ngữ của AES

2 Các hàm, ký hiệu và các tham số của thuật toán

Các tham số thuật toán, các ký hiệu và các hàm được sử dụng trong mô tả thuậttoán:

AddRoundKey() Hàm biến đổi được sử dụng trong thuật toán mã hóa

và giải mã trong đó thực hiện phép XOR bit giữatrạng thái trung gian (state) và một khóa vòng lặp

Trang 9

(Round Key) Kích thước của một Round Key bằngkích thước của trạng thái, ví dụ với Nb=4 độ dài củamột Round Key sẽ là 128 bit hay 16 byte

MixColumns() Hàm biến đổi trong thuật toán mã hóa nhận tất cả các

cột của một trạng thái (state) và trộn với dữ liệu của

nó (không phụ thuộc lẫn nhau) để nhận được cột mớiShiftRows() Hàm sử dụng trong quá trình mã hóa, xử lý các trạng

thái bằng cách dịch vòng ba hàng cuối của trạng tháivới số lần dịch khác nhau

SubBytes() Hàm biến đổi sử dụng trong quá trình mã hóa, xử lý

một trạng thái bằng cách sử dụng một bảng thế phituyến các byte (S-box) thao tác trên mỗi byte mộtcách độc lập

InvMixColumns() Hàm biến đổi được sử dụng trong thuật toán giải mã,

là hàm ngược của hàm MixColumns()InvShiftRows() Hàm biến đổi được sử dụng trong thuật toán giải mã,

là hàm ngược của hàm ShiftRows()Inv SubBytes() Hàm biến đổi được sử dụng trong thuật toán giải mã,

là hàm ngược của hàm SubBytes()

Nr Số lượng các vòng lặp của thuật toán, là một hàm của

Nk và Nb (là các giá trị cố định) ( Nr = 10, 12 hoặc 14tương ứng với các giá trị khác nhau của Nk)

Rcon[] Mảng word hằng số sử dụng trong các vòng lặp

RotWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word

Trang 10

4-byte và thực hiện một hoán vị vòngSubWord() Hàm sử dụng trong thủ tục sinh khóa nhận một word

input byte và sử dụng một S -box trên mỗi giá trị byte này để thu được 1 word output

4-XOR Phép or bit tuyệt đối

⊕ Phép or bit tuyệt đối

⊗ Phép nhân 2 đa thức (bậc nhỏ hơn 4) theo modulo (x4

+ 1)

● Phép nhân trên trường hữu hạn

Bảng 2: Các hàm, ký hiệu, các tham số của thuật toán

3 Các kí hiệu và qui ước

3.1 Đầu vào, đầu ra

Đầu vào và đầu ra của chuẩn mã hóa cao cấp đều là các dãy 128 bit, còn gọi là cáckhối (block), độ dài của mỗi khối này là số bit dữ liệu mà nó chứa Khóa của chuẩn

mã hóa cao cấp là một dãy có độ dài 128, 192 hoặc 256 bit Chuẩn mã hóa dữ liệucao cấp không làm việc với các giá trị đầu vào, đầu ra và khóa có các đô ̣dài khác(mặc dù thuật toán cơ sở của nó cho phép điều này) Các bit của đầu vào, đầu ra vàkhóa của hê ̣mã được đánh số từ 0

3.2 Đơn vị byte

Đơn vi ̣cơ bản để xử lý trong AES là môṭ byte tức là môṭ dãy 8 bit được xem như làmột đối tượng đơn Các giá trị input, output và khóa của hê ̣mã được xem là mộtmảng các byte Các giá trị input, output và khóa của hê ̣mã được ký hiệu bởi tênmảng a và biểu diễn dưới dạng an hoặc a[n] trong đó n nhận các giá tri ̣trong cáckhoảng sau:

- Nếu đô ̣dài khóa bằng 128 bit: 0 ≤ n < 16;

- Nếu đô ̣dà i khóa bằng 192 bit: 0 ≤ n < 24;

- Nếu đô ̣dà i khóa bằng 256 bit: 0 ≤ n < 32;

Trang 11

Tất cả các giá tri ̣ Byte sử dụng trong thuâṭ toán của AES đều được biểu diễn dướidạng một dãy các bit 0 hoặc 1 theo định dạng {b7, b6, b5, b4, b3, b2, b1, b0} CácByte này sau được hiểu là các phần tử trên trường hữu hạn bằng cách sử dụng biểudiễn thành dạng đa thức.

b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0x0 = ∑=

7 0

i

i

i x b

Chẳng haṇ giá tri ̣{01100011} tương đương với phần tử trên trường hữu hạn x6 + x5

3.3 Cơ sở toán học của AES

AES sử dụng trường hữu hạn Galois GF(28) để thực hiện các phép toán: phépcộng, phép trừ, phép nhân, và phép chia Các phần tử của trường GF(28) được xemnhư là các đa thức

3.3.1 Phép cộng

Phép cộng ở đây được hiểu là phép XOR trên hai bit tương ứng trong byte và

có ký hiệu là ⊕

3.3.2 Phép nhân

Phép nhân trên trường GF(28) tương ứng với phép nhân thông thường của hai

đa thức đem chia lấy dư (modulo) cho một đa thức tối giản bậc 8 Trong thuật toánAES, đa thức tối giản được chọn là:

m(x) = x8+x4+x3+x2+x+1

Trang 12

Kết quả nhận được của phép rút gọn là một đa thức có bậc nhỏ hơn 8 nên cóthể biểu diễn được dưới dạng một byte

3.3.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)) có thể đượcthực hiện ở mức độ byte bằng một phép dịch trái và sau đó thực hiện tiếp phépXOR với giá trị {1b} nếu b7=1 Thao tác được ký hiêu là xtime() Phép nhân với cáclũy thừa của x có thể được thực hiện bằng cách áp dụng nhiều lần thao tác xtime().Kết quả của phép nhân với một giá trị bất kỳ được xác định bằng phép cộng ((⊕)các kết quả trung gian này lại với nhau

3.3.4 Đa thức với các hệ số trên trường GF(2 8 )

Phép nhân của hai đa thức bậc 4 với các hệ số trên GF(28) a(x) ⊗ b(x) đượcxác định bằng 4 hạng tử d(x):

đó mỗi byte của mảng có 2 chỉ số hàng r và cột c (0<=r, c<=4)

Tại thời điểm bắt đầu input của thuật toán – mảng byte in0, in1, in15 được copyvào mảng trạng thái theo quy tắc được minh họa bằng hình vẽ

Trang 13

Bảng 4: Các trạng thái của AESTrong đó các giá trị của mảng s và mảng output được tính như sau:

s[r,c]=in[r+4c] với mọi 0<=r, c<4

out[r+4c]=s[c,r] với mọi 0<=r, c<4

Biểu diễn trạng thái

Bốn cột của mảng trạng thái của thuật toán tạo thành 4 word 32 bit w0, w1, w3được biểu diễn như sau:

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

III Thuật toán AES

Độ dài của input, output và các trạng thái (state) của chuẩn mã hóa cao cấp AES là

128 bit tương ứng vớ i giá tri ̣của Nb = 4 (là số lượng các word 32-bit và cũng là sốcột của mỗi trạng thái) Khóa của AES có độ dài là 128, 192 hoăc ̣ 256 bit tương ứng

vớ i các giá trị của Nk là 4, 6, hoăc ̣ 8 và cũng là số cột của khóa mã hóa

Tương ứng vớ i độ dài của khóa sử dụng số vòng lặp của thuật toán Nr nhận các giátrị 10 (Nk = 4), 12 (Nk = 6) hoăc ̣ 14 (Nk = 8) Chúng ta có thể minh họa qua bảngsau:

Độ dài khóa (Nk từ)

Độ dài khối (Nb từ)

Số vòng (Nr)

Trang 14

Cả quá trình mã hóa và giải mã AES sử dụng một hàm lặp là kết hợp của bốn hàmbiến đổi (đơn vi ̣xử lý là byte) sau:

- Biến đổi thay thế byte sử dụng một bảng thế (S-box)

- Dịch các hàng của mảng trạng thái với số lần dịch của mỗi hàng là khác nhau

- Kết hợp dữ liệu của mỗi cột trong mảng trạng thái và cộng một khóa RoundKey vào trạng thái z

1 Thuật toán mã hóa

Bắt đầu thuật toán bản rõ (input) được copy vào mảng trạng thái sử dụng các quiước được mô tả trong phần trên Sau khi cộng với khóa Round Key khởi tạo mảngtrạng thái được biến đổi bằng các thực hiện một hàm vòng (round function) Nr lần(10, 12, hoăc ̣ 14 phụ thuộc vào độ dài khóa ) trong đó lần cuối cùng thực hiện kháccác lần trước đó Trạng thái sau lần lặp cuối cùng sẽ được chuyển thành output củathuật toán theo qui tắc được mô tả trong phần sau

Hàm vòng được tham số hóa sử dụng một (key schedule) dãy các khóa được biểudiễn như là một mảng 1 chiều của các word 4-byte được sinh ra từ thủ tục sinh khóa(Key Expansion) được mô tả trong phần sau

Chúng ta có thể thấy tất cả các vòng đều thực hiện các công việc giống nhau dựatrên 4 hàm (theo thứ tự SubBytes(), ShiftRows(), MixColumns() vàAddRoundKey() trừ vòng cuối cùng bỏ qua việc thực hiện hàm MixColumns().Thuật toán được mô tả chi tiết qua đoạn mã lệnh sau:

Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])begin

Trang 15

AddRoundKey(state, w[round*Nb, (round+1)*Nb-1) end for

Trang 16

1.1 Hàm SubBytes()

Hàm SubBytes() thực hiện phép thay thế các byte của mảng trạng thái bằng cách sử dụng một bảng thế S-box, bảng thế này là khả nghịch và được xây dựng bằng cách kết hợp hai biến đổi sau:

a Nhân nghịch đảo trên trường hữu hạn GF(28), phần tử {00} được ánh xạthành chính nó

b Áp dụng biến đổi Affine sau (trên GF(2)):

Ngày đăng: 25/10/2014, 22:02

TỪ KHÓA LIÊN QUAN

w