Tải bản đầy đủ (.docx) (24 trang)

Viết chương trình mã hóa và giải mã bằng AES sử dụng ngôn ngữ C++

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 (1.02 MB, 24 trang )

BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
***

BÁO CÁO

Giáo viên hướng dẫn:
Sinh viên thực hiện:

Hà Nội, 2020
1


MỤC LỤC
LỜI NÓI ĐẦU.................................................................................................................................................3
CHƯƠNG I: TỔNG QUAN AES...........................................................................................................................4
CHƯƠNG II: HÀM SUBBYTE VÀ INVSUBBYTES.................................................................................................6
1.

Hàm SubBytes.......................................................................................................................................6

2.

Hàm InvSubBytes..................................................................................................................................8

CHƯƠNG III: HÀM SHIFTROWS VÀ INVSHIFTROWS......................................................................................10
1.

Hàm ShiftRows...................................................................................................................................10

2.



Hàm InvShiftRows...............................................................................................................................10

CHƯƠNG IV: HÀM MIXCOLUMNS VÀ INVMIXCOLUMNS..............................................................................11
1.

Hàm MixColumns...............................................................................................................................11

2.

Hàm InvMixColumns..........................................................................................................................12

CHƯƠNG V: HÀM ADDROUNDKEY................................................................................................................13
CHƯƠNG VI: CHẾ ĐỘ MÃ HÓA ECB và CBC....................................................................................................14
1.

Chế độ sách mã điện tử ECB (Electronic Code Book)........................................................................14

2.

Chế độ xích liên kết khối mã CBC (Cipher block Chaining)...............................................................15

CHƯƠNG V: ỨNG DỤNG VIẾT CHƯƠNG TRÌNH MÃ HĨA VÀ GIẢI MÃ BẰNG AES SỬ DỤNG C++...............18
1.

Hàm mã hóa Encrypt AES...................................................................................................................18

2.

Hàm giải mã Decrypt AES...................................................................................................................18


3.

Khóa 3 chế độ 128/192/256..............................................................................................................19

4.

Form chương trình.............................................................................................................................20

VI. CÁC DẠNG TẤN CƠNG VÀO AES VÀ PHƯƠNG PHÁP PHỊNG CHỐNG.....................................................21
1. Side-channel attack................................................................................................................................21
2. Known attacks.........................................................................................................................................21
3. Các phương pháp phòng chống.............................................................................................................21
KẾT LUẬN VÀ ĐÁNH GIÁ THUẬT TOÁN AES....................................................................................................22
TÀI LIỆU THAM KHẢO.....................................................................................................................................22

2


LỜI NĨI ĐẦU
Từ trước cơng ngun, con người đã phải quan tâm tới việc làm thế nào để đảm
bảo an tốn bí mật cho các tài liệu, văn bản quan trọng, đặc biệt là trong lĩnh vực
quân sự, ngoại giao. Ngày nay với sự xuất hiện của máy tính, các tài liệu văn bản
giấy tờ và các thông tin quan trọng đều được số hóa và xử lý trên máy tính, được
truyền đi trong mơi trường mạng - một mơi trường mặc định là có nhiều rủi ro,
kém an tồn. Do đó yêu cầu về việc có một cơ chế, giải pháp để bảo vệ sự an tồn
và bí mật của các thông tin nhạy cảm, quan trọng ngày càng trở nên cần thiết. Các
phương pháp mã hóa dữ liệu lần lượt được ra đời và AES là một trong những
phương pháp mã hóa tiêu chuẩn.
AES (viết tắt của từ tiếng Anh: Advanced Encryption Standard, hay Tiêu chuẩn mã

hóa tiên tiến) là một thuật tốn mã hóa khối được chính phủ Mỹ áp dụng làm tiêu
chuẩn mã hóa. Thuật tốn AES làm việc với khối dữ liệu 128 bit và khóa độ dài là
128 bit, 192 bit và 256 bit. Mã hóa dùng AES là mã hóa khối lặp gồm nhiều chu
trình, các khóa con sử dụng trong các chu trình được tạo ra bởi q trình tạo khóa
con Rijndael.
Trong bài báo cáo này chúng ta sẽ tìm hiểu về các chu trình làm việc của phương
pháp mã hóa AES, các chế độ mã hóa ECB và CBC và ứng dụng viết một chương
trình mã hóa và giải mã bằng AES sử dụng ngơn ngữ C++, rồi sau đó sẽ tìm hiểu
các dạng tất cơng vào AES và phương pháp phịng tránh.
Để hồn thành bài báo cáo này, chúng tơi xin gửi lời cám ơn chân thành đến TS.
Nguyễn Đào Trường đã tận tình giúp đỡ và truyền đạt những kinh nghiệm quý báu
trong suốt thời gian thực hiện đề tài.
Do hạn chế về thời gian nghiên cứu đề tài và kiến thức chuyên môn nên sẽ không
tránh khỏi những thiếu sót, kính mong được sự góp ý từ Thầy và mọi người để
hoàn thiện bài báo cáo tốt hơn!

3


CHƯƠNG I: TỔNG QUAN AES
Khái niệm từ (Word) trong AES
Bốn byte trên mỗi cột trong mảng trạng thái state tạo thành 1 từ 32 bit, trong đó số
thứ tự của hàng r (0≤r<4) cho biết chỉ số của bốn byte trong mỗi từ. Từ định nghĩa
state ở trên có thể coi state là mảng một chiều chứa các từ 32 bit

Tương tự như đối với mảng khóa cũng có thể biểu diễn thành mảng một chiều chứa
các từ 32 bit như cơng thức dưới đây với số lượng từ khóa phụ thuộc vào Nk
(Nk=4, 6, 8).
Thuật toán của AES
Thuật toán AES khá phức tạp, được mô tả khái quát gồm 3 bước như sau:

 1 Vòng khởi tạo chỉ gồm phép AddRoundKey
 Nr -1 Vòng lặp gồm 4 phép biển đổi lần lượt: SubBytes, ShiftRows,
MixColumns, AddRoundKey.
 1 Vòng cuối gồm các phép biến đổi giống vịng lặp và khơng có phép
MixColumns.
Khái quát:
1. Mở rộng khóa - Các khóa phụ dùng trong các vịng lặp được sinh ra từ khóa
chính AES sử dụng thủ tục sinh khóa Rijndael.
2. InitialRound - AddRoundKey— Mỗi byte trong state được kết hợp với khóa phụ
sử dụng XOR.
3. Rounds - SubBytes—bước thay thế phi tuyến tính, trong đó mỗi byte trong state
được thay thế bằng một byte khác sử dụng bảng tham chiếu - ShiftRows—bước đổi
4


chỗ, trong đó mỗi dịng trong state được dịch một số bước theo chu kỳ MixColumns—trộn các cột trong state, kết hợp 4 bytes trong mỗi cột AddRoundKey
4. Final Round (không MixColumns) - SubBytes - ShiftRows - AddRoundKey.

Các phép biến đổi Substitute bytes, Shift rows, Mix columns có phép biến
đổi ngược tương ứng là Inverse sub bytes, Inverse shift rows, Inverse mix cols.
Riêng phép biến đổi Add row key đơn giản chỉ là phép XOR nên phép biến đổi
ngược cũng là Add row key. Vận dụng các phép biến đổi ngược trên, thuật tốn giải
mã AES cũng gồm 10 vịng thực hiện theo chiều ngược lại. Kích thước khóa ban
đầu là 128 bít (gồm 16 byte). AES dùng hàm Expand key để mở rộng kích thước
khóa thành 44 word 32 bít. 44 word này được chia thành 11 cụm khóa con, mỗi
khóa con 4 word làm tham số cho 11 thao tác Add row key.

5



CHƯƠNG II: HÀM SUBBYTE VÀ INVSUBBYTES
1. Hàm SubBytes
Phép biến đổi SubBytes: Là phép thay thế byte phi tuyến tính, ở phép thay thế này
nó tác động độc lập đến từng byte trong trạng thái hiện hành. Phép biến đổi
SubBytes được thực hiện bằng cách tra cứu bảng thay thế (S-box) với tham số đầu
vào là các byte trong bảng trạng thái. S-box được xây dựng như sau:
 Bước 1: Điền các con số từ 0 đến 255 vào bảng theo từng hàng. Vậy hàng 0
gồm các con số {00}, {01}, …{0F} (thập lục phân). Hàng 1 gồm các con số
{10}, {11},…, {1F}. Điều này có nghĩa là tại hàng x cột y có giá trị {xy}.
 Bước 2: Thay thế mỗi byte trong bảng bằng giá trị nghịch đảo trong trường
GF(28 ). Quy ước nghịch đảo của {00} cũng là {00}.
 Bước 3: Mỗi byte trong ma trận state được thay thế bởi 1 byte trong Rijndael
S-box, hay bij = S(aij).

trong đó, 0 ≤ i ≤8 là bit thứ i của byte b tương ứng và ci là bit thứ thứ i của byte c
với giá trị {63} hay {01100011}.

6


Trong đó phép cộng thực hiện như phép XOR. Bảng sau trình bày nội dung bảng Sbox sau khi tính toán.

7


2. Hàm InvSubBytes
Phép biến đổi ngược InvSubBytes: là phép thay thế biến đổi ngược với SubBytes.
Là một phép thay thế byte, các byte thay thế được thực hiện bằng cách tra bảng thay
thế ngược IS. Bảng thay thế ngược IS này được xây dựng như sau: Trước tiên, cũng
phải xây dựng một bảng Inverse SubBytes (IS- box). Nghĩa là nếu với đầu vào

{95}, S-box cho ra kết quả {2A}, thì với đầu vào là {2A}, IS sẽ cho ra lại kết quả
{95}. Việc xây dựng hộp IS cũng giống như xây dựng S-box tại bước 1 và bước 2.
Tại bước 3, IS thực hiện phép thay thế sau:

Với di là bit thứ i của số {05} tức d7 d6 d0 = 00000101.

Bảng sau trình bày nội dung bảng thay thế ngược IS sau khi tính tốn.
8


Như vậy: phép biến đổi InvSubBytes thực hiện như sau: Mỗi byte trong ma trận
state S, dưới dạng thập lục phân là {xy}, được thay thế bằng giá trị trong bảng IS tại
dịng x cột y.
Mục đích của phép biến đổi SubBytes: S-box dùng để chống lại hình thức tấn cơng
thám mã vi sai và thám mã tuyến tính. Giữa input và output của phép Substitute
bytes không thể mô tả bằng một cơng thức tốn đơn giản.

9


CHƯƠNG III: HÀM SHIFTROWS VÀ INVSHIFTROWS
1. Hàm ShiftRows
Phép biến đổi ShiftRows: Thao tác ShiftRows thực hiện hoán vị các byte trong ma
trận state theo cách thức sau:
 Dòng thứ nhất giữ nguyên
 Dòng thứ 2 dịch vòng trái 1 byte
 Dòng thứ 3 dịch vòng trái 2 byte
 Dòng thứ 4 dịch vòng trái 3 byte

2. Hàm InvShiftRows

Phép biến đổi InvShiftRows: Phép biến đổi InvShiftRows thực hiện ngược lại
với phép ShiftRows, nghĩa là:
 Dòng thứ nhất giữ nguyên
 Dòng thứ 2 dịch vòng phải 1 byte
 Dòng thứ 3 dịch vòng phải 2 byte
 Dòng thứ 4 dịch vòng phải 3 byte Mục đích của ShiftRows: Xáo trộn các
byte để tạo các cột khác nhau trước khi sử dụng cột cho thao tác
MixColumns.
10


11


CHƯƠNG IV: HÀM MIXCOLUMNS VÀ INVMIXCOLUMNS
1. Hàm MixColumns
Phép biến đổi MixColumns: Phép biến đổi MixColumns thực hiện biến đổi độc lập
từng cột trong ma trận state bằng một phép nhân đa thức. Mỗi cột của state đươc coi
là biểu diễn của một đa thức f(x) trong GF(2^8) như vậy phép biến đổi
MixColumns chính là phép nhân theo modulo với x^4+1 với một đa thức cố định
định nghĩa như sau:

Phép nhân đa thức trên có thể biểu diễn dưới dạng phép nhân ma trận như sau

Ví dụ về phép MixColumns:

12


2. Hàm InvMixColumns

Phép biến đổi ngược InvMixColumns: Là phép biến đổi ngược với phép biến đổi
MixColumns. InvMixColumns cũng thực hiện thao tác theo từng cột của trạng thái,
xem mỗi cột như một đa thức bậc 3 gồm 4 hạng tử trên trường GF(2^8). Các cột
của phép InvMixColumns được nhân theo modulo ( x^4 + 1 ) với đa thức nghịch
đảo a(x) chính là đa thức a^-1(x) được định nghĩa:

Như vậy phép InvMixColumns cũng được biểu diễn tương đương với phép nhân
ma trận sau

Mục đích của MixColumns: Việc coi mỗi cột là một đa thức bậc 3, rồi nhân mỗi cột
với đa thức a(x) sau đó modulo ( x4 1 ) đã làm cho mỗi byte trong cột kết quả đều
phụ thuộc vào bốn byte trong cột ban đầu. Thao tác MixColumns kết hợp với
ShiftRows đảm bảo rằng sau một vài vòng biến đổi, 128 bit trong kết quả đều phụ
thuộc vào tất cả 128 bit ban đầu. Điều này tạo ra tính khuếch tán (diffusion) cần
thiết cho mã hóa.

13


CHƯƠNG V: HÀM ADDROUNDKEY
Trong thao tác AddRoundKey, 128 bit của ma trận state sẽ được XOR với 128 bit
của khóa con của từng vịng. Vì sử dụng phép XOR nên phép biến đổi ngược của
AddRoundKey trong cấu trúc giải mã cũng chính là AddRoundKey. Việc kết hợp
với khóa bí mật tạo ra tính làm rối (confusion) của mã hóa. Sự phức tạp của thao tác
mở rộng khóa (KeySchedule) giúp gia tăng tính làm rối này.

14


CHƯƠNG VI: CHẾ ĐỘ MÃ HÓA ECB và CBC

1. Chế độ sách mã điện tử ECB (Electronic Code Book)
ECB là chế độ mã hóa từng khối bit độc lập. Với cùng một khóa mã K, mỗi khối
plaintext ứng với một giá trị ciphertext cố định và ngược lại.

 Quá trình mã hóa ECB
Biểu thức định nghĩa:
Cj = CIPTHk(Pj) với j=1, 2, 3, …, n
Plaintext là đầu vào trực tiếp để thực thi thuật tốn mã hóa với khóa mã K để tạo ra
ciphertext.
 Quá trình giải mã ECB
Biểu thức định nghĩa:
Pj = CIPTHINVk(Cj) với j=1, 2, 3, …, n
15


Ciphertext là đầu vào trực tiếp để thực thi thuật tốn giải mã với khóa mã K để tạo
ra plaintext.

 Nhận xét
Ưu điểm:
 Thiết kế phần cứng đơn giản. Vấn đề cần quan tâm chính là thiết kế logic cho
thuật tốn mã hóa.
 Lỗi bit khơng bị lan truyền. Nếu lỗi bit xuất hiện trên một ciphertext của một
khối dữ liệu thì nó chỉ ảnh hưởng đến việc giải mã khối dữ liệu đó chứ khơng
ảnh hưởng đến việc giải mã khác khối dữ liệu khác.
 Có thể thực hiện mã hóa/giải mã song song (parallel) nhiều khối dữ liệu cùng
lúc. Điều này giúp tăng tốc độ xử lý trong các hệ thống địi hỏi mã hóa/giải
mã tốc độ cao.
Nhược điểm:
 Khả năng bảo mật kém. Do giá trị plaintext và ciphertext được ánh xạ độc lập

một-một nên thông tin mã hóa dễ bị sửa đổi bằng cách như xóa bớt khối dữ
liệu, chèn thêm khối dữ liệu, hoán đổi vị trí khối dữ liệu để làm sai lệch
thơng tin tại nơi nhận.

2. Chế độ xích liên kết khối mã CBC (Cipher block Chaining)
CBC là chế độ mã hóa chuỗi, kết quả mã hóa của khối dữ liệu trước (ciphertext) sẽ
được tổ hợp với khối dữ liệu kế tiếp (plaintext) trước khi thực thi mã hóa.

16


Q trình mã hóa CBC
Biểu thức định nghĩa:
C1 = CIPHk(P1+IV)
Cj = CIPHk(Pj+Cj-1) với j=2, 3, …, n
Lần mã hóa đầu tiên:
Plaintext XOR với vector khởi tạo IV
Kết quả bước trên là đầu vào cho việc thực thi thuật toán mã hóa với khóa
mã K
 Lần mã hóa sau lần đầu tiên:
- Plaintext XOR với ciphertext của lần mã hóa trước đó.
- Kết quả bước trên là đầu vào cho việc thực thi thuật tốn mã hóa với khóa
mã K



-

17



Quá trình giải mã CBC
Biểu thức định nghĩa:
P1 = CIPHINVk(C1)+IV
Pj = CIPHk(Cj)+Cj-1 với j=2, 3, …, n
Lần giải mã đầu tiên:
Ciphertext được thực thi q trình giải mã với khóa mã K
Kết quả bước trên được XOR với vector khởi tạo IV để tạo ra plaintext
Lần giải mã sau lần đầu tiên:
Ciphertext được thực thi quá trình giải mã với khóa mã K
Kết quả bước trên được XOR với ciphertext sử dụng trong lần giải mã trước
để tạo ra plaintext
 Nhận xét




-

 Ưu điểm:
- Khả năng bảo mật cao hơn ECB. Ciphertext của một khối dữ liệu plaintext
có thể khác nhau cho mỗi lần mã hóa vì nó phụ thuộc vào IV hoặc giá trị mã
hóa (ciphertext) của khối dữ liệu liền trước.
- Q trình giải mã (mã hóa nghịch) vẫn có thể thực hiện song song nhiều
khối dữ liệu.
 Nhược điểm:
- Thiết kế phần cứng phức tạp hơn ECB ngồi logic thực thi thuật tốn mã
hóa, người thiết kế cần thiết kế thêm:
- Logic quản lý độ dài chuỗi dữ liệu sẽ được mã hóa, cụ thể là số lượng khối
dữ liệu trong chuỗi dữ liệu.

- Lỗi bit bị lan truyền. Nếu một lỗi bit xuất hiện trên ciphertext của một khối
dữ liệu thì nó sẽ làm sai kết quả giải mã của khối đữ liệu đó và khối dữ liệu
tiếp theo.
- Khơng thể thực thi q trình mã hóa song song vì xử lý của khối dữ liệu sau
phụ thuộc vào ciphertext của khối dữ liệu trước, trừ lần mã hóa đầu tiên.

18


CHƯƠNG V: ỨNG DỤNG VIẾT CHƯƠNG TRÌNH MÃ HĨA VÀ GIẢI MÃ
BẰNG AES SỬ DỤNG C++
1. Hàm mã hóa Encrypt AES
private: System::String^ AESE(String^ input, String^ pass) {
System::Security::Cryptography::RijndaelManaged^ AES = gcnew
System::Security::Cryptography::RijndaelManaged();
System::Security::Cryptography::MD5CryptoServiceProvider^ Hash_AES =
gcnew System::Security::Cryptography::MD5CryptoServiceProvider();
String^ encrypted = L"";
try
{
String^ modeTung = this->mode;
//AES->Key = System::Text::ASCIIEncoding::ASCII->GetBytes(pass);
AES->Mode = Security::Cryptography::CipherMode::ECB;
System::Security::Cryptography::ICryptoTransform^ DESEncrypter = AES>CreateEncryptor(System::Text::ASCIIEncoding::ASCII->GetBytes(pass),
System::Text::ASCIIEncoding::ASCII->GetBytes(modeTung));
array<Byte>^ Buffer = System::Text::ASCIIEncoding::ASCII>GetBytes(input);
encrypted = Convert::ToBase64String(DESEncrypter>TransformFinalBlock(Buffer, 0, Buffer->Length));
delete Hash_AES;
delete AES;
return encrypted;

}

2. Hàm giải mã Decrypt AES
private: System::String^ AESD(String^ input, String^ pass) {
System::Security::Cryptography::RijndaelManaged^ AES = gcnew
System::Security::Cryptography::RijndaelManaged();
System::Security::Cryptography::MD5CryptoServiceProvider^ Hash_AES =
gcnew System::Security::Cryptography::MD5CryptoServiceProvider();
String^ decrypted = L"";
try
{
//AES->Key = System::Text::ASCIIEncoding::ASCII->GetBytes(pass);
String^ modeTung = this->mode;
AES->Mode = Security::Cryptography::CipherMode::ECB;
System::Security::Cryptography::ICryptoTransform^ DESDecrypter =
AES->CreateDecryptor(System::Text::ASCIIEncoding::ASCII->GetBytes(pass),
System::Text::ASCIIEncoding::ASCII->GetBytes(modeTung));
array<Byte>^ Buffer = Convert::FromBase64String(input);
decrypted = System::Text::ASCIIEncoding::ASCII>GetString(DESDecrypter->TransformFinalBlock(Buffer, 0, Buffer->Length));
delete Hash_AES;
delete AES;
K
return decrypted;
}

19


3. Khóa 3 chế độ 128/192/256
private: System::Void txtKey_TextChanged(System::Object^ sender, System::EventArgs^ e) {

String^ modeOpt = this->mode;
if (modeOpt == "128") {
if (txtKey->Text->Length != 16) {
lblNoti->ForeColor = System::Drawing::Color::Red;
lblNoti->Text = "Length of secret key should be 16 for 128 bits
key size";
button2->Enabled = false;
button3->Enabled = false;
}
else {
lblNoti->Text = "";
button2->Enabled = true;
button3->Enabled = true;
}
}
else if (modeOpt == "192") {
if (txtKey->Text->Length != 24) {
lblNoti->ForeColor = System::Drawing::Color::Red;
lblNoti->Text = "Length of secret key should be 24 for 192 bits
key size";
button2->Enabled = false;
button3->Enabled = false;
}
else {
lblNoti->Text = "";
button2->Enabled = true;
button3->Enabled = true;
}
}
else if (modeOpt == "256") {

if (txtKey->Text->Length != 32) {
lblNoti->ForeColor = System::Drawing::Color::Red;
lblNoti->Text = "Length of secret key should be 32 for 256 bits
key size";
button2->Enabled = false;
button3->Enabled = false;
}
else {
lblNoti->Text = "";
button2->Enabled = true;
button3->Enabled = true;
}
}
else {
lblNoti->ForeColor = System::Drawing::Color::Red;
lblNoti->Text = "Required key size missing.";
button2->Enabled = false;
button3->Enabled = false;
}
} 4. Form chương trình

20


21


VI. CÁC DẠNG TẤN CÔNG VÀO AES VÀ PHƯƠNG PHÁP PHÒNG
CHỐNG.
1. Side-channel attack.

 Side Channels (Kênh kề) được định nghĩa là các kênh đầu ra không mong
muốn từ một hệ thống.
 Tấn cơng kênh bên hay cịn gọi là Tấn công kênh kề là loại tấn công dễ thực
hiện trong các loại tấn cơng mạnh chống lại q trình triển khai mã hóa, và
mục tiêu của loại tấn cơng này là phân tích các nguyên tố, các giao thức,
modul, và các thiết bị trong mỗi hệ thống.
 Phân loại :
o Tấn công thời gian.
o Tấn công dựa vào lỗi.
o Tấn cơng phân tích năng lượng.
o Tấn cơng phân tích điện từ.

2. Known attacks.
 Vào năm 2002, Nicolas Courtois và Josef Pieprzyk phát hiện một tấn công
trên lý thuyết gọi là tấn công XSL và chỉ ra điểm yếu tiềm tàng của AES.
 Tuy nhiên, một vài chuyên gia về mật mã học khác cũng chỉ ra một số vấn
đề trong cơ sở tốn học của tấn cơng này và cho rằng các tác giả đã có sai
lầm trong tính tốn. Việc tấn cơng dạng này có thực sự trở thành hiện thực
hay khơng vẫn cịn để ngỏ và cho tới nay thì tấn cơng XSL vẫn chỉ là suy
đốn.
3. Các phương pháp phịng chống.
 Phương pháp 1: Mã hóa cực mạnh

22


o Sử dụng các biện pháp để tăng tính bảo mật của các thuật tốn mã
hóa.
 Phương pháp 2: Bảo vệ dữ liệu theo phương pháp vật lý
o Nếu một kẻ tấn công không thể tiếp cận vật lý với dữ liệu, dĩ nhiên

khả năng đánh cắp khóa mã hóa sẽ khó khăn hơn. Vì vậy, trước những
cuộc tấn cơng qua âm thanh tiềm tàng, bạn có thể sử dụng các giải
pháp bảo vệ vật lý như đặt laptop vào các hộp cách ly âm thanh,
không để ai lại gần máy tính khi đang giải mã dữ liệu hoặc sử dụng
các nguồn âm thanh băng rộng tần số đủ cao để gây nhiễu.
 Phương pháp 3: Kết hợp cả 2 cách trên.

KẾT LUẬN VÀ ĐÁNH GIÁ THUẬT TOÁN AES
 Thiết kế và độ dài khóa của thuật tốn AES ( 128, 192 và 256 bit ) là đủ an
toàn để bảo vệ các thông tin được xếp vào loại tối mật nhưng về an ninh của
AES thì các nhà khoa học đánh giá là chưa cao. Nếu các kỹ thuật tấn cơng
được cải thiện thì AES có thể bị phá vỡ.
 Một vấn đề khác nữa là cấu trúc toán học của AES khá đơn giản.

TÀI LIỆU THAM KHẢO




Visual C++ Tutorial 19 -Windows Forms Application: Encrypt data from
simple string Part 1/2/3: />v=1N9DMQjUmg0&list=LL&index=4
Advanced Encryption Standard:
/>23


 Cấu trúc và thuật toán Advanced Encryption Standard (Chuẩn mã hóa nâng
cao):a/p/cau-truc-va-thuat-toan-advanced-encryptionstandard-chuan-ma-hoa-nang-cao-924lJYe8ZPM

24




×