Báo cáo môn học an toàn bảo mật thông tin đề tài “tìm hiểu giải thuật mã hóa khóa bí mật aes” Báo cáo môn học an toàn bảo mật thông tin đề tài “tìm hiểu giải thuật mã hóa khóa bí mật aes” Báo cáo môn học an toàn bảo mật thông tin đề tài “tìm hiểu giải thuật mã hóa khóa bí mật aes” Báo cáo môn học an toàn bảo mật thông tin đề tài “tìm hiểu giải thuật mã hóa khóa bí mật aes”
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA: CÔNG NGHỆ THÔNG TIN
- -BÁO CÁO MÔN HỌC
AN TOÀN BẢO MẬT THÔNG TIN
Trang 2LỜI NÓI ĐẦU
Vào ngày 2 tháng 2 năm 1997, viện tiêu chuẩn và công nghệ( NIST – National Institute of Standards and Technology) yêu cầu mộtthuật toán mã hóa chuẩn mới Thuật toán mã hóa trước đó DES khôngcòn đảm bảo an toàn DES là chuẩn mã hóa từ tháng 11 năm 1976 và
đã lộ rõ nhiều khuyết điểm Năm 1998 DES đã bị phá sau bởi một máytính có tên gọi “DES Cracker “ Lựa chọn thay thế hiện tại khi đó là một
mã hóa chuẩn gọi là Triple DES ( 3DES ) và Internation Data EncryptionAlgorithm ( IDEA ) Triple DES là thuật toán mã hóa sử dụng 3 lần mãhóa DES Tuy nhiên, vấn đề đối với Triple DES và IDEA đó là quá chậm.NIST muốn một thuật toán cung cấp tốt sự mã hóa, bảo về và thực thinhanh, hiệu quả Sau 3 năm NIST đã chọn thuật toán được tạo bởi 2nhà khoa học máy tính Vincent Rijmen và Joan Daemen Thuật toánđược gọi là Rijndael.Vào ngày 26 tháng 11 năm 2011, The FederalInformation Processing Standard thông báo thuật toán Rijndael là mộtchuẩn mã hóa mới Và chuẩn mới được gọi với cái tên AdvancedEcryption Standard ( AES )
Không giống như quá trình lựa chọn xử lý cho DES, các thuận toánbăm (SHA -1) và chữ ký số (DSA), NIST đã đưa ra AES là lựa chọn xử
lý hệ mã mở Bất cứ ai cũng có thể tạo ra mật mã Miễn là nó đáp ứngđược yêu cầu, dựa trên xem xét giá trị của nó Cùng với lợi ích về mặt
an ninh, chi phí cho việc thực hiện thì hiện nay AES chính là chuẩn sửdụng để mã hóa
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 2
MỤC LỤC 3
I Giới thiệu về thuật toán mã hóa AES 4
1 Giới thiệu 4
2 Quá trình phát triển 4
3 Cơ sở toán học 4
II Nghiên cứu về thuật toán AES 5
1 Mô tả thuật toán 5
2 Thuật toán mã hóa 7
2.1 Tạo round key: 7
2.2 Vòng lặp 11
2.3 Vòng lặp cuối 18
3 Thuật toán giải mã 18
4 Nghiên cứu về độ an toàn 19
4.1 Khả năng bị tấn công 19
4.2 Cách phòng chống loại tấn công: 19
5 Ưu nhược điểm của mật mã AES 19
5.1 Ưu điểm: 19
5.2 Nhược điểm: 20
KẾT LUẬN 21
TÀI LIỆU THAM KHẢO : 22
Trang 4I. Giới thiệu về thuật toán mã hóa AES
1 Giới thiệu
- AES ( Advanced Encryption Standard ) hay còn gọi là tiêuchuẩn mã hóa nâng cao là một thuật toán mã hóa khối đượcchính phủ Hoa Kỳ áp dụng làm tiêu chuẩn mà hóa Giống nhưtiêu chuẩn tiền nhiệm DES, AES được kỳ vọng áp dụng trênphạm vi thế giới và đã được nghiên cứu rất kỹ lưỡng AESđược chấp thuận làm tiêu chuẩn liên bang bởi Viện tiêu chuẩn
và công nghệ quốc gia Hoa Kỳ ( NIST ) sau một quá trìnhchuẩn hóa kéo dài 5 năm
- Thuật toán được thiết kế bởi 2 nhà mật mã học người Bỉ: JoanDaemen và Vincent Rijmen Thuật toán được đặt tên là
“Rijndael” khi tham gia cuộc thi thiết kế AES
3 Cơ sở toán học.
- AES sử dụng trường hữu hạn Galois (GF(2 8 )) để thực hiện các phép toán: phép cộng, phép trừ, phép nhân, và phép chia Các phần tử của trường GF(2 8 ) được xem như là các đa thức.
Trang 5II. Nghiên cứu về thuật toán AES
1 Mô tả thuật toán
- Mặc dù 2 tên AES và Rijndael vẫn thường được gọi thay thếcho nhau nhưng trên thực tế thì 2 thuật toán không hoàn toàngiống nhau
- AES chỉ làm việc với các khối dữ liệu (đầu vào và đầu ra) 128bít và khóa có độ dài 128, 192 hoặc 256 bít (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) Trong khi Rijndael có thể làm việc với dữliệu và khóa có độ dài bất kỳ là bội số của 32 bít nằm trongkhoảng từ 128 tới 256 bít
- Các khóa con sử dụng trong các chu trình được tạo ra bởi quátrình tạo khóa con Rijndael Mỗi khóa con cũng là một cột gồm
4 byte Hầu hết các phép toán trong thuật toán AES đều thựchiện trong một trường hữu hạn của các byte Mỗi khối dữ liệu
128 bit đầu vào được chia thành 16 byte (mỗi byte 8 bit), có thểxếp thành 4 cột, mỗi cột 4 phần tử hay là một ma trận 4x4 củacác byte, nó được gọi là ma trận trạng thái Trong quá trìnhthực hiện thuật toán các toán tử tác động để biến đổi ma trậntrạng thái này
Biểu diễn ma trận Với 16 bytes b0, b1, … b15
Trang 6- Thuật toán AES được thực hiện bởi tuần tự gồm nhiều bướcbiến đổi, kết quả đầu ra của phép biến đổi trước là đầu vào củaphép biến đổi tiếp theo Kết quả trung gian của các phép biếnđổi chính là mảng trạng thái (state).
- Độ dài của khối dữ liệu đầu vào của AES là cố định Tùy vào độdài khóa (Nk=4, 6, 8) ban đầu ta có số lần lặp (Nr = 10,12,14)
H1 Tổng quan các bước quá trình mã hóa và giải mã
Trang 72 Thuật toán mã hóa
2.1 Tạo round key:
Với dữ liệu khóa đầu vào luôn cố định 128 bit hoặc 192bit hoặc 256 bit Ở trong phạm vi bài nghiên cứu, chúng
ta chỉ nghiên cứu về các khóa có độ dài 128 bit Với độdài như vậy, ta sắp xếp các khóa vào ma trận trạng tháinhư sau:
- ví dụ với khóa: SOME 128 BIT KEY
Trang 8* Quá trình tạo roundkey cho RoundKey[1]:
o B1: "Tại cột đầu tiên của Round[1]" :
lấy cột cuối cùng của ma trận cipher key ra mà đẩy vịtrí cuối cùng trong cột lên đầu:
- vd:
KEY
} Var.roundKeyMatrix[3][index] = tmp;
}
thế thông qua S - box Trước khi sử dụng bằng hộpthay thế, ta chuyển dạng text về hệ Hex
- Kết quả sau khi mã hóa:
Trang 9public int[] subs(int index) {
reverse(index);
int rotWord[] = new int[4];
for (int i = 0; i < 4; i++) {
int x = (int) Var.roundKeyMatrix[i][index] / 16;
int y = (int) Var.roundKeyMatrix[i][index] % 16;
- Ma trận Rcon trong thuật toán aes:
public static final int rcon[][]
= {
{0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
};
Cuối cùng, sử dụng phép toán xor với cột đầu tiêncủa input(cipher key) và trước khi thực hiện tính
Trang 10toán, ta chuyển về dạng ASCII rồi chuyển qua hệHex để thực hiện phép tính XOR.
o B2, 3, 4: "Với các cột còn lại (2, 3, 4)": Sử dụng phép
toán xor với các tiếp theo của ma trận input (cipher key)với cột trước đó của round[1] vừa được mã hóa
- vd: (cột 2- roundkey[1]) = (cột 2 - cipherkey) xor (cột 1 - roundkey[1].
* RoundKey[2],[3],[4] [10] : được tạo như RoundKey[1] với
input là output của roundKey trước đó
- Code tạo roundkey cho AES:
public void createRoundKey() {
int numRound = 0;
Var.roundKeyMatrix = new int[4][4 * (Var.numberRoundKey + 1)]; int dem = 4 * (Var.numberRoundKey + 1) - Var.Nk;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < Var.Nk; j++) {
Trang 11int rotWord[] = subs(j + Var.Nk - 1);
for (int i = 0; i < 4; i++) { Var.roundKeyMatrix[i][j + Var.Nk] = Var.roundKeyMatrix[i][j] ^
rotWord[i] ^ Var.rcon[i][numRound];
} numRound++;
} else if (j % 4 == 0 && Var.numberRoundKey == 14) { int rotWord[] = subs(j + Var.Nk - 1);
for (int i = 0; i < 4; i++) { Var.roundKeyMatrix[i][j + Var.Nk] = Var.roundKeyMatrix[i][j] ^
rotWord[i];
} } else { for (int i = 0; i < 4; i++) { Var.roundKeyMatrix[i][j + Var.Nk] = Var.roundKeyMatrix[i][j] ^
Var.roundKeyMatrix[i][j + Var.Nk - 1];
} } } }
2.2 Vòng lặp
- SubBytes:
o đây là phép thế (phi tuyến) trong đó mỗi byte trong trạngthái sẽ được thế bằng một byte khác theo bảng tra(Rijndael S-box)
o Sử dụng bảng S-Box để thế chỗ các vị trí tương ứngtrong ma trận trạng thái sau khi thực hiện phép xor vớikey
Trang 12Bảng S-Box:
o Cách sử dụng bảng S-Box Nếu chúng ta có một ký tự “D”,trước tiên ta chuyển D về dạng Hex và có giá trị là 44 bằngcách tra cứu bảng ASCII Khi sử dụng bảng S-box, ký tự đầutiên trong hệ Hex tham chiếu đến các hàng của bảng hoặcgiá trị từ bên trái xuống Ký tự thứ tham chiếu đến cột củabảng S-Box Và giá trị trong hệ Hex là ‘1b’
Trang 13o Bảng S-box sinh ra từ “ modular arithmetic “ và một trườngGalois Một trường Galois là một trường với một số hữu hạncác phần từ Các trường Galois là một trường lũy thừa củamột số nguyên Đối với mỗi số nguyên luôn tôn tại đúng một
Code :
public void subBytes() {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
int x = (int) Var.cipherText[i][j] / 16;
int y = (int) Var.cipherText[i][j] % 16;
Trang 14public void shiftRows() {
for (int i = 0; i < 4; i++) {
Trang 15trong trường hữu hạn và được nhân với đa
Trang 16o Khi đó a0 – a3 sẽ tương ứng với 04 đến e5 , b0 – b3tương ứng với d4 – 30
o Ta xét b0 : b0 = {02.d4} ^ {03.bf} ^ {01.5d} ^ {01.30}
o Xét {02.d4}
Biến đổi d4 về hệ Hex : d4 = 1101 0100
Mặt khác, trong cuốn sách Cryptography and NetworkSecurity đã từng đề cập với số nhân là 02 ta có thểthực hiện như sau : “Dịch trái d4 1 bit sau khi chuyểnd4 về dạng Hex , sau đó nếu kết quả trước khi dịch bit
có bit ngoài cùng bên trái là 1 thì tiến hành XOR kếtquả với dãy 0001 1011”
Cụ thể d4 = 1101 0100 , d4 << 1 = 1010 1000 , d4XOR 0001 1011 = 1011 0011
Trang 17//moi buoc lap tao nen 1 cot
for (int i = 0; i < 4; i++) {
Trang 18- AddRoundKey
Code :
public void addRoundKey() {
for (int i = 0; i < 4; i++) {
Tại chu trình cuối thì bước MixColumns không thực hiện
3 Thuật toán giải mã
- Giải mã Rijndael có 2 cách giải mã đó là giải mã trực tiếp vàgiải mã bằng thuật toán giải mã tương đương
- Giải mã trực tiếp: mọi biến đổi được dùng trong các phép tính
mã hóa là khả nghịch, cài đặt phép tính giải mã là giữ nguyêncác thứ tự các biến đổi đã dùng trong phép mã hóa, chỉ thaycác phép biến đổi bằng các biến đổi ngược của chúng
- Giải mã tương đương: được thực hiện bằng cách đảo ngược
biến đổi MixColumns() Các word đầu tiên và cuối cùng củadanh sách khóa không bị thay đổi khi ta áp dụng phương phápnày
Trang 194 Nghiên cứu về độ an toàn
4.1 Khả năng bị tấn công
- Định nghĩa: 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ạnhchống lại quá trình phát triển khai mã hóa, và mục tiêu của loạitấn công này là phân tích các giao thức, modul, và các thiết bịtrong mỗi hệ thống
- Hình thức tấn công: tấn công kênh bên không tấn công trực tiếpvào thuật toán mã hóa, thay vào đó nó lại tấn công lên các hệthống thực hiện thuật toán có sơ hở làm lộ dữ liệu
4.2 Cách phòng chống loại tấn công:
Bởi vì các cuộc tấn công kênh bên dựa trên các mối quan hệ giữathông tin rò rỉ thông qua một kênh phụ và các dữ liệu bí mật, vì vậybiện pháp đối phó thường là:
o Loại bỏ hoặc giảm việc phát tán các thông tin đó
o Loại bỏ các mối quan hệ giữa các thông tin bị rò rỉ và các
dữ liệu bí mật, đó là làm cho các thông tin bị rò rỉ khôngliên quan, hay đúng hơn là không tương quan, đển các
dữ liệu bí mật, thường là thông qua một số hình thứcngẫu nhiên của các bản mã có thể biến đổi các dữ liệutrong một cách mà có thể được hoàn tác sau khi hoạtđộng mật mã (ví dụ, giải mã) được hoàn thành
5 Ưu nhược điểm của mật mã AES
5.1 Ưu điểm:
- Trên các máy tính cá nhân, thuật toán AES thực hiện việc xử lýrất nhanh so với các phương pháp mã hóa khác
Trang 20- Trên cáchệ thống thẻ thông minh, phương pháp này càng pháthuy ưu điểm không chỉ nhờ vào tốc độ xử lý cao mà còn nhờvào mã chương trình ngắn gọn, thao tác xử lý sử dụng ít bộnhớ
- Ngoài ra, tất cả các bước xử lý của việc mã hóa và giải mã đềuđược thiết kế thích hợp với cơ chế xử lý song song nênphương pháp Rijndael càng chứng tỏ thế mạnh của mình trêncáchệ thống thiết bị mới Do đặc tính của việc xử lý thao táctrên từng byte dữ liệu nên không có sự khác biệt nào được đặt
ra khi triển khai trên hệ thống big-endian hay little-endian
- Xuyên suốt phương pháp AES, yêu cầu đơn giản trong việcthiết kế cùng tính linh hoạt trong xử lý luôn được đặt ra và đãđược đáp ứng
- Độ lớn của khối dữ liệu cũng như của mã khóa chínhcó thể tùybiến linh hoạt từ 128 đến 256-bit với điều kiện là chia hết cho
32 Số lượng chu kỳ có thể được thay đổi tùy thuộc vào yêucầu riêng được đặt ra cho từng ứng dụng và hệ thống cụ thể
- Trong quá trình cài đặt , do quá trình mã hóa và giải mã khônggiống nhau nên không thể tận dụng lại toàn bộ đoạn chươngtrình mã hóa cũng như các bảng tra cứu cho việc giải mã
Trang 21- Khi cài đặt trên phần cứng, thì việc giải mã chỉ sử dụng lại mộtphần các mạch điện tử sử dụng trong việc mã hóa và với trình
tự sử dụng cũng khác nhau
- Cấu trúc toán học của AES: mô tả toán học khá là đơn giản.Tuy điều này chưa dẫn đến mối nguy hại nào song các nhànghiên cứu đang lo sợ sẽ có người lợi dụng được cấu trúc nàytrong tương lai
- AES không đủ an toàn đối với dạng tấn công Side channelattack
KẾT LUẬN AES là tiêu chuẩn mã hóa nâng cao là một thuật toán mã hóakhối được chính phủ Hoa Kỳ áp dụng làm tiêu chuẩn mà hóa Thuậttoán được thiết kế bởi 2 nhà mật mã học người Bỉ: Joan Daemen vàVincent Rijmen
Thuật toán mã hóa AES có nhiều ưu điểm hơn so vớinhững thuật toán khác như : thực hiện việc xử lý rất nhanh hơn nhiều
so với các phương pháp mã hóa khác ,có thiết kế đơn giản và linh hoạt
AES cũng được chấp nhận sử dụng như một chuẩn mật mã ngầm địnhtrên toàn thế giới
Bài báo cáo đã nêu lên được một số ý chính và cơ bản củaAES như :
- Giới thiệu về mã hóa AES
- Giải thuật sinh khóa phụ, mã hóa và giải mã
- Những ưu nhược điểm của AES
- Các dạng tấn công lên AES và cách phòng chống
Trang 22Trong quá trình tìm hiểu nhóm còn nhiều thiếu xót , mong thầy vàcác bạn góp ý để nhóm em có thể hoàn thành một cách tốt nhất
TÀI LIỆU THAM KHẢO :
Tài liệu tham khảo chính :
[1] Cryptography and Network Security Principles and Practices, 4
th Edition William Stallings Prentice Hall 2005.
[2] Lý thuyết mật mã và an toàn thông tin – Đại học Quốc Gia Hà Nội.
[3] AES Proposal: Rijndael Block Cipher Joan Deamen, Vincent Rijmen.
[4] Bảo mật thông tin, mô hình và ứng dụng Nguyễn Xuân Dũng
Nhà xuất bản Thống Kê 2007.
[5] http://luanvan.co/luan-van/tim-hieu-ve-thuat-toan-aes-44835/
Và một số tài liệu tham khảo khác