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

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 ”

22 2 0

Đ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

Tiêu đề Tìm hiểu giải thuật mã hóa khóa bí mật AES
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành An toàn bảo mật thông tin
Thể loại Báo cáo môn học
Năm xuất bản 2011
Thành phố Hà Nội
Định dạng
Số trang 22
Dung lượng 1,27 MB
File đính kèm AES.rar (39 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

HỌ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 2

LỜ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 3

MỤ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 4

I. 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 5

II. 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 7

2 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 9

public 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 10

toá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 11

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] ^ 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 12

Bả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 13

o 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 14

public void shiftRows() {

for (int i = 0; i < 4; i++) {

Trang 15

trong trường hữu hạn và được nhân với đa

Trang 16

o 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 19

4 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 22

Trong 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

Ngày đăng: 29/06/2023, 22:36

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w