Tải bản đầy đủ (.doc) (26 trang)

Tiểu luận về mã hóa AES

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (565.38 KB, 26 trang )

MỤC LỤC
PHẦN 1: CƠ SỞ LÝ THUYẾT......................................................................................2
1.1. Lý thuyết về mã hóa dữ liệu.................................................................................2
1.1.1. Hệ thống mã hóa đối xứng (Symmetric Cryptosystems)..............................3
1.1.2. Hệ thống mã hóa bất đối xứng (Asymmetric Cryptosystems)......................4
1.2. Lịch sử phát triển của AES...................................................................................8
1.3. Lý thuyết về chuẩn mã hóa nâng cao ................................................................11
1.3.1. Cơ sở toán học của AES...............................................................................11
1.3.2. Chuẩn mã nâng cao AES – Rijndael ...........................................................13
1.3.3. Thuật toán AES...........................................................................................13
1.3.4. Mở rộng khóa AES.......................................................................................18
PHẦN 2: XÂY DỰNG ỨNG DỤNG...........................................................................21
2.1. Cài đặt thuật toán ...............................................................................................21
2.2. Kết quả đạt được ................................................................................................23
TÀI LIỆU THAM KHẢO.............................................................................................26


An toàn bảo mật trong công nghệ thông tin

PHẦN 1: CƠ SỞ LÝ THUYẾT
1.1. Lý thuyết về mã hóa dữ liệu
Mã hóa hoặc mật mã hóa dữ liệu là cơ chế chuyển đổi dữ liệu sang một định dạng
khác không thể đọc được, vi dụ như ciphertext (văn bản viết thành mật mã), để có thể ngăn
cản những truy cập bất hợp pháp khi dữ liệu trao đổi trong môi trường mạng không an toàn.
Mã hóa dữ liệu ngăn chặn được các việc sau :
• Nghe trộm và xem lén dữ liệu.
• Chỉnh sữa và đánh cắp lén dữ liệu.
• Giả mạo thông tin.
• Data non-repudiation.
• Sự gián đoạn các dịch vụ mạng.
Khi nhận được gói tin, người nhận sẽ giải mã dữ liệu lại dạng cơ bản ban đầu. Cho dù dữ


liệu có bị chặn trong suốt quá trình trao đổi dữ liệu.

Người gởi và người nhận, phụ thuộc vào quá trình mã hóa,dưới hình thức là một hệ thống
mã hóa. Hệ thống mã hoá (Cryptosystems) có 2 loại sau:
• Đối xứng (Symmetric)
• Bất đối xứng (Asymmetric)
Trang 2


An toàn bảo mật trong công nghệ thông tin

Một hệ thống mã hóa được phân loại dựa vào con số của khoá mà nó dùng. Một khoá
có thể là một con số, một từ, hoặc một cụm từ được dùng vào mục đích mã hóa và giải mã dữ
liệu.
1.1.1. Hệ thống mã hóa đối xứng (Symmetric Cryptosystems)
Symmetric cryptosystems dựa trên một khóa đơn, đó là một chuỗi ngắn với chiều dài
không thay đổi. Do đó, phương pháp mã hóa này được xem như là single-key encryption.
Khoá thường là khóa riêng (hoặc bảo mật) và được dùng để mã hóa cũng như giải mã.
Ghi chú : Trong một số tài liệu, symmetric cryptosystem cũng được xem như khóa
scryptosystems riêng hoặc bí mật và kỹ thuật này cũng được xem như khóa mật mã riêng
hoặc khóa mật mã bí mật.
Trước khi hai bên trao đổi dữ liệu, khóa phải được chia sẽ dùng chung cho cả 2 bên.
Người gửi sẽ mã hóa thông tin bằng khóa riêng và gửi thông tin đến người. Trong quá trình
nhận thông tin, người nhận sử dụng cùng một khóa để giải mã thông điệp.

Tiêu chuẩn mã hóa dữ liệu (Data Encryption Standard (DES)). Nguyên bản DES đề ra
giải pháp cho một khóa có chiều dài lên đến 128 bit. Tuy nhiên, kích thước của khóa đã giảm
xuống còn 56 bit bởi chính phủ Hoa Kỳ trong việc nổ lực tìm ra thuật giải nhanh hơn. Việc
giảm chiều dài khóa xuống, phụ thuộc vào tốc độ xử lý của bộ vi xử lý. Trong phương pháp
tấn công Brute Force, các khóa sẽ phát sinh ngẩu nhiên và được gửi đến đoạn văn bản

nguyên mẩu cho tới khi xác định được từ khóa chính xác. Với những khóa có kích thước
nhỏ, sẽ dễ dàng để phát sinh ra chính xác từ khóa và phá vở hệ thống mật mã.
Trang 3


An toàn bảo mật trong công nghệ thông tin

Chú ý : Tên chính thức của DES là Federal Information Processing Standard (FISP)
(Tiêu chuẩn xứ lý thông tin liên bang (Hoa kỳ).
Bội ba tiêu chuẩn mã hóa dữ liệu (Triple Data Encryption Standard (3DES)):
cũng giống như DES, 3DES cũng sử dụng khóa 56 bit. Tuy nhiên, nó an toàn hơn nhiều do
dùng 3 khóa khác nhau để mã hóa dử liệu. Bộ xử lý thực hiện các bước sau : khóa đầu tiên
dùng để mã hóa dữ liệu. Sau đó, khóa thứ hai sẽ dùng để giải mã dữ liệu vừa được mã hóa.
Cuối cùng, khóa thứ ba sẽ mã hóa lần thứ hai. Toàn bộ quá trình xử lý của 3DES tạo thành
một thuật giải có độ an toàn cao. Nhưng bởi vì đây là một thuật giải phức tạp nên thời gian
thực hiện sẽ lâu hơn, gấp 3 lần so với phương pháp DES.
Ron's Code 4 (RC4): được phát triển bởi Ron Rivest, thuật giải này sử dụng những từ
khóa với chiều dài có thể biến đổi lên đến 256 bytes. Bởi vì chiều dài của khóa, RC4 được
phân loại là một cơ chế mã hóa mạnh. Nó cũng tương đối khá nhanh. RC4 tạo một dòng
bytes ngẩu nhiên và XORs chúng với văn bản nguyên mẩu. Bởi vì các bytes được phát sinh
ngẩu nhiên, RC4 đòi hỏi một khóa mới cho mổi lần gởi thông tin ra ngoài.
Hệ thống mã hóa đồng bộ đưa ra 2 vấn đề chính. Đầu tiên, bởi vì một khóa vừa được
dùng để mã hóa vừa dùng để giả mã, nếu nó bắt đầu trở thành kẻ xâm nhập, thì tất cả những
thông tin sữ dụng khóa này sẽ bị huỷ. Vì thế, khóa nên thường xuyên thay đổi theo định kỳ.
Một vấn đề khác là khi hệ thống mã hóa đồng bộ xữ lý một lượng thông tin lớn, việc
quả lý các khóa sẽ trở thành một công việc vô cùng khó khăn. Kết hợp với việc thiết lặp các
cặp khóa, phân phối, và thay đổi theo định kỳ đều đòi hỏi thời gian và tiền bạc.
Hệ hống mã hóa đối xứng đã giải quyết vấn đề đó bằng việc đưa ra hệ thống mã hóa
đối xứng. Đồng thời, họ cũng tăng tính năng bảo mật trong suốt quá trình chuyển vận. Chúng
ta sẽ được tham khảo thêm về hệ thống mã hóa bất đối xứng ở phần sau.

1.1.2. Hệ thống mã hóa bất đối xứng (Asymmetric Cryptosystems)
Thay vì sử dụng một khóa đơn trong hệ thống mã hóa đối xứng, hệ thống mã hóa bất
đối xứng sử dụng một cặp khóa có quan hệ toán học. Một khóa là riêng tư, chỉ được chính
chủ nhân. Khóa thứ hai thì được phổ biến, công cộng và phân phối tự do. Khóa công cộng thì
Trang 4
được dùng để mã hóa và ngược lại khóa riêng thì được dùng để giải thông tin.


An toàn bảo mật trong công nghệ thông tin

Trong VPN, 2 hệ thống mã hóa bất đối xứng được dùng phổ biến là thuật toán DiffieHellman (DH) và thuật toán Rivest Shamir Adleman (RSA).
Thuật toán Diffie-Hellman
Trong thuật toán DH, mổi thực thể giao tiếp nhận được một cặp khóa, một được phân
phối tới những thực thể thông tin khác và một được giữ lại riêng. Thuật toán DH làm việc
theo những vấn đề chính sau :
1. Người gửi nhận khóa công cộng của người nhận, do khóa này là khóa công cộng
nên đều được mọi người biết.
2. Người gửi thực hiện một thao tác gộp khóa riêng và khóa công công của người
nhận, kết quả cho ra một khóa chung bảo mật (shared secret key).
3. Thông điệp sẽ được mã hóa bằng khóa vừa nhận được.
4. Sau đó thông điệp mã hóa sẽ được gửi đến người nhận.
5. Trong qua trình nhận thông điệp mã hóa, bên nhận sẽ phát sinh một khóa chung mật
khác cũng bằng thao tác tương tự gộp chính khóa riêng của mình với khóa chung của bên
gửi.
Giả định cơ bản của thuật toán này là nếu bất kỳ một ai bắt được thông điệp mã hóa,
người đó cũng không thể nào giải mã được bởi vì anh hoặc cô ta không xữ lý khóa riêng của
bên nhận được (khóa riêng của anh hoặc cô ta). Dữ liệu được trao đổi dựa trên thuật toán
Diffie-Hellman được mô tả ở hình:

Trang 5



An toàn bảo mật trong công nghệ thông tin

Mặc dù thuật toán DH có một độ an toàn cao hơn so với hệ thống mã hóa đối xứng,
nhưng cũng gặp một số vấn đề khó khăn. Phải đảm bảo chắc chắn rằng khóa công cộng phải
được trao đổi trước khi quá trình trao đổi dữ liệu thực sự được xác định. Cho ví dụ : nếu 2
bên trao đổi khóa công cộng cho nhau qua môi trường không an toàn, như Internet, điều đó
có thể làm cho khóa công cộng có thể bị bắt giữ trước bởi một người xâm phạm nào đó, sau
đó người này sẽ gửi khóa công cộng của mình cho cả hai bên đầu cuối đang thực hiện trao
đổi . Trong trường hợp này, người xâm nhập sẽ dễ dàng mắc vào nghe lén thông tin của hai
bên đầu cuối bởi vì cả hai bên đầu cuối đều trao đổi dữ liệu thông qua khóa công cộng của
người xâm phạm. Đây là một dạng xâm nhập được biết như một kiểu tấn công Man-in-theMiddle.
Thuật toán Rivest Shamir Adleman (RSA), sẽ được tham khảo tiếp theo sau sẽ giải
quyết hiệu quả phương pháp tấn công Man-in-the-Middle mà đã nảy ra trong thuật toán DH.
Thuật toán RSA nổi lên như là một cơ chế mã hóa bất đối xứng khá mạnh.
Thuật toán Rivest Shamir Adleman (RSA)
Thuật toán RSA triển khai quá trình xác nhận bằng cách sử dụng chữ ký điện tử theo
các bước sau :
1. Khóa công cộng của người gửi được yêu cầu và được dùng cho người nhận và sau
đó được chuyễn hướng về phía trước (forward).
Trang 6


An toàn bảo mật trong công nghệ thông tin

2. Người gửi sử dụng hàm băm để làm giảm kích thước mẩu tin gốc. Thông điệp tổng
hợp thì được hiểu như là một thông điệp phân loại (message digest (MD)).
3. Người gửi mã hóa thông điệp phân loại bằng khóa riêng của nó được rút ra từ sự
phát sinh chữ ký điện tử độc nhất.

4. Thông điệp và chữ ký điện tử được kết hợp và chuyễn hướng đến người nhận.
5. Trong lúc nhận thông điệp mã hóa, người nhận phục hồi lại thông điệp phân loại
bằng cách sử dụng cùng một hàm băm như người gửi.
6. Người nhận sau đó giải mã chữ ký điện tử bằng cách sử dụng khóa công cộng của
người gửi.
7. Người nhận sau đó sẽ so sánh thông điệp phân loại vừa được phục hồi (bước 5) và
thông điệp phân loại nhận được từ chữ ký điện tử (bước 6). Nếu cả hai đồng nhất, tức là dữ
liệu không bị chặn đứng, giả mạo hoặc chỉnh sửa trong suốt quá trình trao đổi. Ngược lại, dữ
liệu sẽ không được chấp nhận, bị từ chối.

RSA bảo đảm an toàn và bảo mật trong chuyến đi của dữ liệu bởi vì người nhận kiểm
tra sự đúng đắn của dữ liệu qua 3 lần (bước 5, 6 và 7). RSA cũng làm đơn giản hóa công việc
quản lý khóa. Trong cách mã hóa đối xứng, n2 khóa được yêu cầu nếu trong quá trình trao
đổi có n thực thể. Bằng cách so sánh, cách mã hóa bất đối xứng chỉ đòi hỏi 2*n khóa.

Trang 7


An toàn bảo mật trong công nghệ thông tin

1.2. Lịch sử phát triển của AES
Tiêu chuẩn mã hóa nâng cao (AES – Advance Encrypto Standard) là khối mã hóa đối
xứng được xuất bản bởi Viện tiêu chuẩn và Công nghệ (NIST) vào tháng 12 năm 2001.
Tháng 2 năm 2001, NIST đã thông báo rằng một bản dự thảo tiêu chuẩn xử lý thông
tin Liên bang (FIPS) đã sẵn có cho công chúng xem xét và bình luận. Cuối cùng, AES được
xuất bản như FIPS 197 trong sổ đăng kí Liên bang trong tháng 12 năm 2001.
Tiêu chí
Các tiêu chí được xác định bởi NIST là lựa chọn AES rơi vào ba lĩnh vực:
1. An ninh
2. Chi phí

3. Thực hiện
Các vòng
AES là một thuật toán mã hóa không Feistel và giải mã khối dữ liệu 128 bit. Nó sử
dụng 10, 12, hoặc 14 vòng. Kích thước quan trọng có thẻ là 128. 192 hoặc 256 bit phụ thuộc
vào số vòng.
Chú ý: AES đã xác định ba phiên bản với 10, 12 và 14 vòng. Mỗi phiên ban sử dụng
một khóa mật mã kích thước khác nhua (128, 192 hoặc 256) nhưng các khóa vòng thường là
128 bit.
Thiết kế chung của mật mã mã hóa AES

Trang 8


An toàn bảo mật trong công nghệ thông tin

Các đơn vị dữ liệu

Khối trạng thái và trạng thái khôi chuyển đổi
Trang 9


An toàn bảo mật trong công nghệ thông tin

Ví dụ 1:
Chuyển đổi văn bản rõ sang trạng thái

Cấu trúc của mỗi vòng

Trang 10



An toàn bảo mật trong công nghệ thông tin

1.3. Lý thuyết về chuẩn mã hóa nâng cao
Để cung cấp an ninh, AES sử dụng bốn lại biến đổi: thay thế, hoán vị, trộn và thêm
khóa.
1.3.1. Cơ sở toán học của AES
Trong AES các phép toán cộng và nhân được thực hiện trên các byte trong trường hữu

( )

8
hạn GF 2 .

Phép cộng:
Phép cộng giữa hai phần tử (các byte) trong trường hữu hạn được thực hiện bằng cách
cộng theo mođulo 2 các bít tương ứng trong biểu diễn của các byte này. Phép cộng các byte
A và B với:
Trang 11


An toàn bảo mật trong công nghệ thông tin

A = ( a1 a 2
B = ( b1 b 2
là C = A + B với C = ( c1

a3 a4

a5 a 6


a7

b3

b5

b7

c2

b4

c3 c 4

b6

c5 c 6

a8 )

b8 )

c7

c8 )

trong đó Ci = a i + bi mod 2 với i = 1,8
Các phần tử của trường hữu hạn còn có thể được biểu diễn dưới dạng đa thức. Ví dụ
tổng của A = 73H và B = 4E H (viết dưới dạng cơ số 16 - hexa) là:


73H + 4E H = 3DH
Viết dưới dạng nhị phân:

01110011 + 01001110 = 00111101
Viết dưới dạng đa thức:

(x

6

) (

) (

)

+ x5 + x 4 + x + 1 + x6 + x3 + x 2 + x = x5 + x 4 + x3 + x 2 + 1

Phép nhân:

( )

8
Phép nhân được thực hiện trên GF 2 bằng cách nhân hai đa thức rút gọn theo

mođulo của một đa thức bất khả quy m ( x ) .
Trong AES đa thức bất khả quy này là m ( x ) = x 8 + x 4 + x 3 + x + 1
Ví dụ: A = C3H , B = 85H tương ứng với:


a ( x ) = x 7 + x 6 + x + 1 và b ( x ) = x 7 + x 2 + 1
Khi đó C = A.B
Trang 12


An toàn bảo mật trong công nghệ thông tin

(

)

c ( x ) = a ( x ) .b ( x ) mod x 8 + x 4 + x 3 + x + 1
c ( x ) = x 7 + x5 + x3 + x 2 + x
hay C = AE H = 10101110
1.3.2. Chuẩn mã nâng cao AES – Rijndael
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


Chia dữ liệu thành 4 nhóm – 4 byte



Thao tác trên cả khối mỗi vòng




Thiết kế để:
o Chống lại các tấn công đã biết
o Tốc độ nhanh và nén mã trên nhiều CPU
o Đơn giản trong thiết kế

1.3.3. Thuật toán AES
AES mã hóa một khối bản rõ M 128 bít thành một khối bản mã C 128 bít bằng cách
dùng một khóa mã K có độ dài 128 bít (hoặc 192 hoặc 256 bít) tương ứng với AES − 128
(hoặc AES − 192 hoặc AES − 256 ). Thuật toán thực hiện trên các byte và kích thước khối
đối với đầu vào đầu ra và khóa được biểu thị bằng các từ 32 bít (4 byte).
AES sẽ thực hiện một số vòng mã hóa N r phụ thuộc vào độ dài khóa được sử dụng
(Xem bảng 1)

Thuật toán

Độ

dài

đầu

Độ

dài

Số


Trang 13


An toàn bảo mật trong công nghệ thông tin

AES

vào/đầu ra

khóa N k

AES − 128

4 từ

4 từ

AES − 192

4 từ

6 từ

AES − 256

4 từ

8 từ

vòng N r

10
vòng
12
vòng
14
vòng

Bảng 1: Số các vòng mã hóa của AES
Mã hóa AES:
Mỗi vòng gồm 4 phép biến đổi mật mã theo byte
-

Thay thế byte
Dịch các hàng của mảng trạng thái (State Array)

-

Trộn dữ liệu trong một cột của State Array

-

Cộng khóa vòng vào State Array

Phép thay thế byte: SubBytes( )
Phép biến đổi AES đầu tiên là một phép thay thế byte phi tuyến gọi là phép biến đổi
SubBytes( ), nó hoạt động độc lập trên mỗi byte. Trước tiên nó sẽ tính nghịch đảo của phép

( )

8

nhân trong GF 2 , sau đó sử dụng một phép biến đổi afin trên nghịch đảo này.

Trang 14


An toàn bảo mật trong công nghệ thông tin

 b'0 
  1
 b1'  
 '  1
 b 2  1
 ' 
 b3  = 1
 b'  1
 4 
 b'  0
 5  0
 b'6  
 '  0
 b7 

0
1
1
1
1
1
0
0


0
0
1
1
1
1
1
0

0
0
0
1
1
1
1
1

1
0
0
0
1
1
1
1

1
1

0
0
0
1
1
1

1
1
1
0
0
0
1
1

1   b0  1 
1   b1  1 

 
1   b 2  0 
   
1   b3  0 
+
0   b 4  0 
   
0   b5  1 
0   b6  1 
   
1   b7  0 


trong đó bi biểu thị bít thứ i của byte b
Dịch các hàng của State Array; Phép biến đổi ShiftRows( )
Phép biến đổi tiếp theo của AES là dịch các hàng của State Array. Lượng dịch

Shift ( r, N b ) phụ thuộc vào số hàng r. Các khối đầu vào (bản rõ) vào các khối đầu ra (bản
mã) là các khối 128 bít gồm N b = 4 từ 32 bít
Phép biến đổi ShiftRows( ) được biểu thị như sau:

s 'r,c =s r ( c+shift ( r, N b ) ) mod N b
trong đó 0 ≤ c ≤ N b
Hàng đầu tiên sẽ không dịch, tức là shift ( 0, N b = 4 ) = 0
Với các hàng còn lại lượng dịch sẽ tùy theo số hàng

shift ( 0,4 ) = 0
shift ( 1,4 ) = 1

shift ( 2,4 ) = 2
shift ( 3,4 ) = 3

Trang 15


An toàn bảo mật trong công nghệ thông tin

Trộn dữ liệu trong một cột State Array: Phép biến đổi Mixcolumns( )
Phép biến đổi Mixcolumns( ) được dùng để trộn dữ liệu trong một cột của ma trận

( )


8
trạng thái. Các cột được xem như các đa thức trong GF 2 . Đầu ra của Mixcolumns( ) là

s ' ( x ) được tạo bằng cách nhân cột với s ( x ) với đa thức a ( x ) và rút gọn theo

(

)

mod X 4 + 1

(

)

s ' ( x ) = a ( x ) .s ( x ) mod X 4 + 1
trong đó: a ( x ) = 03H x 3 + 01H x + 02H
Ở dạng ma trận phép biến đổi này có thể viết như sau:

s'0,c  02
   H
'
 s1,c
  01H
 ' =
s 2,c   01H
 '   03H
 s3,c 

03H

02H
01H
01H

01H
03H
02H
01H

01H  s 0,c 


01H   s1,c 

03H  s 2,c 


02H   s3,c 

Ở đây 0 ≤ c < N b
Mở rộng khóa AES: KeyExpansion( )
Thuật toán AES sẽ tạo từ khóa mã 128 bít (hoặc 192 hoặc 256 bít) một tập khởi tạo

N b từ 32 bít và N b từ 32 bít cho mỗi vòng bao gồm N b ( N r + 1) từ 32 bít . Chương trình
giải mã KeyExpansion( ) chứa các SubWord( ) và RotWord( ).
Hàm SubWord( ) là một phép thay thế (hộp S) một từ vào 4 byte bằng một từ ra 4
byte.
Hàm RotWord( ) thực hiện phép hoán vị vòng các byte trong một từ 4 byte (32 bít)

Wi :


Trang 16


An toàn bảo mật trong công nghệ thông tin

RotWord ( a 0 ,a1,a 2 ,a 3 ) = ( a1,a 2 ,a 3 ,a 0 )

(

KeyExpansion byte key [ 4* N k ] , word w  N b* ( N r + 1)  , N k

)

Begin

i=0
while ( i < N k )

w [ i ] = word  key [ 4*i ] ,key [ 4*i + 1] ,key [ 4* i + 2 ] ,key [ 4*i + 3] 
i = i +1
end while

i ; Nk
while ( i < N b* ( N r + 1) )
word temp = w [ i − 1]
if ( i mod N k = 0 )

temp = SubWord ( RotWord ( temp ) ) xor Rconw [ i N k ]
else if ( N k = 8 and i mod N k = 4 )


temp = SubWord ( temp )
end if

w [ i ] ; w [ i − N k ] = xor temp
Trang 17


An toàn bảo mật trong công nghệ thông tin

i = i +1
end while
end
(nguồn trích dẫn: Đặc tả thô AES: )
Chương trình giải mã của AES:

(

Cipher bytein [ 4* N b ] ,byteout [ 4* N b ] , word w  N b* ( N r + 1) 

)

Begin byte state [ 4, N b ] state = in AddRoundKey(state,w)
for round = 1 step 1 to N r − 1
SubBytes (state), ShifRows (state),
Mixcolumns(state), AddRoundKey(state,w+round * N b )
end for
SubBytes (state), ShifRows (state)

AddRoundKey(state,w+N r*N b )

out = state
end

1.3.4. Mở rộng khóa 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

Trang 18


An toàn bảo mật trong công nghệ thông tin

Sau đó tạo quay vòng các từ mà 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
 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 mã AES
Giải mã 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.
Nhưng có thể xác định mã 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
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
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ã

Trang 19


An toàn bảo mật trong công nghệ thông tin

Các khía cạnh cài đặt:
• 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) mà 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à mã AES

Trang 20


An toàn bảo mật trong công nghệ thông tin


PHẦN 2: XÂY DỰNG ỨNG DỤNG
Với lý thuyết tìm hiểu được ở trên nhóm chúng em đã tiến hành cài đặt và xây dựng
chương trình mã hóa và giải mã sử dụng AES, sử dụng ngôn ngữ C#, .NET.

2.1. Cài đặt thuật toán
Dưới đây là thuật toán mã hóa dữ liệu và giải mã dữ liệu:
 Thuật toán mã hóa dữ liệu:
public string Encrypt(string Data,string Password , int Bits)
{
//string Password = aeskey192;
byte[] clearBytes =
System.Text.Encoding.Unicode.GetBytes(Data);
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] { 0x00, 0x01, 0x02, 0x1C, 0x1D, 0x1E, 0x03,
0x04, 0x05, 0x0F, 0x20, 0x21, 0xAD, 0xAF, 0xA4 });
if (Bits == 128)
{
byte[] encryptedData = Encrypt(clearBytes,
pdb.GetBytes(16), pdb.GetBytes(16));
return Convert.ToBase64String(encryptedData);
}
else if (Bits == 192)
{
byte[] encryptedData = Encrypt(clearBytes,
pdb.GetBytes(24), pdb.GetBytes(16));
return Convert.ToBase64String(encryptedData);
}
else if (Bits == 256)
{


Trang 21


An toàn bảo mật trong công nghệ thông tin

byte[] encryptedData = Encrypt(clearBytes,
pdb.GetBytes(32), pdb.GetBytes(16));
return Convert.ToBase64String(encryptedData);
}
else
{
return string.Concat(Bits);
}
}

 Thuật toán mã hóa dữ liệu:
private byte[] Decrypt(byte[] cipherData, byte[] Key, byte[] IV)
{
MemoryStream ms = new MemoryStream();
Rijndael alg = Rijndael.Create();
alg.Key = Key;
alg.IV = IV;
CryptoStream cs = new CryptoStream(ms,
alg.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(cipherData, 0, cipherData.Length);
cs.Close();
byte[] decryptedData = ms.ToArray();
return decryptedData; }

Trang 22



An toàn bảo mật trong công nghệ thông tin

2.2. Kết quả đạt được
Dưới đây là giao diện chính của chương trình đã thực hiện được mã hóa và giải mã
thành công sử dụng AES.
Quá trình mã hóa:

Bản rõ (plan text)

Thu Hương – Văn Quyết – Quốc Việt – Hoài Nam

Khóa (Key)

CAO HỌC HƯNG YÊN

Kết quả (Result)

LQN51atMq95AOYybpKCYoDurjkk6eB/d3uP9WxizdwxwoeM
wK4opRRHTZqZOepkxdlQNy4jjZta8+foovsFr9+XR2EDTzggzy
wCzqvUTd985/Q57xVt5BI5sDL3lvPVC

Quá trình giải mã:
Bản rõ cần giải mã chính là chuỗi đã được mã hóa ở quá trình trên.
Trường hợp 1: Khóa đưa vào là đúng với khóa ban đầu (Key= CAO HỌC HƯNG
YÊN), ta nhận được kết quả xâu như ban đầu chưa bị mã hóa (Result=Thu Hương – Văn
Quyết – Quốc Việt – Hoài Nam)

Bản rõ (plan text)


LQN51atMq95AOYybpKCYoDurjkk6eB/d3uP9WxizdwxwoeM
wK4opRRHTZqZOepkxdlQNy4jjZta8+foovsFr9+XR2EDTzggzy
wCzqvUTd985/Q57xVt5BI5sDL3lvPVC

Khóa (Key)

Cao Học Hưng Yên

Kết quả (Result)

Thu Hương – Văn Quyết – Quốc Việt – Hoài Nam

Kết quả khi chạy ứng dụng:

Trang 23


An toàn bảo mật trong công nghệ thông tin

Trường hợp 2: Khóa đưa vào là không đúng với khóa ban đầu (Key= CAO HỌC
HƯNG YÊN), ta nhận được kết quả xâu như ban đầu chưa bị mã hóa (Result=Thu Hương –
Văn Quyết – Quốc Việt – Hoài Nam)

Bản rõ (plan text)

LQN51atMq95AOYybpKCYoDurjkk6eB/d3uP9WxizdwxwoeM
wK4opRRHTZqZOepkxdlQNy4jjZta8+foovsFr9+XR2EDTzggzy
wCzqvUTd985/Q57xVt5BI5sDL3lvPVC


Khóa (Key)

CAO HỌC HƯNG YÊN

Kết quả (Result)

Không nhận được chuỗi giả mã (Hiển thị message)

Hình dưới đây minh họa kết quả khi chạy ứng dụng:

Trang 24


An toàn bảo mật trong công nghệ thông tin

Trang 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×