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

ÁP DỤNG TÍNH TOÁN SONG SONG CHO THUẬT TOÁN MÃ HOÁ AES VỚI OPENMP

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 (833.16 KB, 29 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO THỰC NGHIỆM
Mơn: Tính tốn hiệu năng cao

ĐỀ TÀI

ÁP DỤNG TÍNH TỐN SONG SONG CHO THUẬT TỐN MÃ
HỐ AES VỚI OPENMP

Giáo viên hướng dẫn:
Nhóm:
Lớp:
Thành viên nhóm:

TS Hà Mạnh Đào
22
IT6069.1
Nguyễn Viết Vượng
Trần Văn Sơn
Cù Đức Xuân

Hà Nội, 2023


DANH MỤC HÌNH VẼ
Hình 1.1. Q trình mã hố và giải mã AES

4


Hình 1.2 Tạo khố cho mỗi vịng

5

Hình 1.3. Hộp S-box

7

Hình 1.4 Ví dụ phép sub byte

7

Hình 1.5 Minh hoạ phép shift row

8

Hình 1.6. Hộp Inverse S-box

10

Hình 1.7. Quá trình mã hố ECB

11

Hình 1.8. Q trình giải mã ECB

12

Hình 1.9 Q trình mã hố CBC


12

Hình 1.10 Q trình giải mã CBC

13

Hình 1.11 Q trình mã hố CFB

14

Hình 1.12 Q trình giải mã CFB

14

Hình 1.13 Mơ hình bộ nhớ tập trung

15

Hình 1.14 Mơ hình bộ nhớ phân tán

16

Hình 2.1. Biểu đồ thể hiện so sánh thời gian chạy với dung lượng mã hóa

21

Hình 2.2. Biểu đồ thể hiện so sánh tốc độ chạy với dung lượng mã hóa

22


1


DANH MỤC BẢNG BIỂU
Bảng 2.1. Bảng đánh giá thuật toán AES tuần tự

20

Bảng 2.2. Bảng đánh giá thuật toán AES song song

20

2


MỤC LỤC
MỞ ĐẦU..............................................................................................................1
1. LÝ DO CHỌN ĐỀ TÀI
2. MỤC TIÊU CỦA ĐỀ TÀI
3. CẤU TRÚC CỦA ĐỀ TÀI
CHƯƠNG

1
1
1

1 - CƠ SỞ LÝ THUYẾT.....................................................................3

1.1. NHẮC LẠI THUẬT TOÁN MÃ HOÁ AES
3

1.1.1. Giới thiệu chung về thuật toán..................................................................3
1.1.2. Đặc điểm của thuật toán...........................................................................3
1.1.3. Khái quát về các bước mã hoá và giải mã................................................3
1.1.4. Chi tiết về các bước của quá trình mã hố...............................................6
1.1.5. Chi tiết các bước q trình giải mã........................................................10
1.2. MỘT SỐ KIỂU MÃ HOÁ KHỐI ÁP DỤNG CHO AES
12
1.2.1. Electronic codebook (ECB)....................................................................12
1.2.2. Cipher block chaining (CBC).................................................................13
1.2.3. Full block Cipher feedback (CFB tồn khối)..........................................14
1.3. TÍNH KHẢ THI TRONG VIỆC SONG SONG HỐ THUẬT TỐN
15
1.3.1. Tính tốn song song................................................................................15
1.3.2. Nhận xét về khả năng song song hoá của AES.......................................17
1.4. GIỚI THIỆU VỀ OPENMP
17
1.4.1. Tổng quan...............................................................................................17
1.4.2. Đặc điểm quan trọng..............................................................................18
1.4.3. Ứng dụng................................................................................................18
CHƯƠNG

2 - ĐÁNH GIÁ HIỆU NĂNG SẢN PHẨM.................................................19

2.1. MỤC ĐÍCH
2.2. KẾT QUẢ ĐÁNH GIÁ THUẬT TOÁN AES SONG SONG

19
20

KẾT LUẬN............................................................................................................23

TÀI LIỆU THAM KHẢO........................................................................................24

3


MỞ ĐẦU
1.

LÝ DO CHỌN ĐỀ TÀI

Trong thời đại ngày nay, An ninh mạng trở thành trụ cột đảm bảo tính an
tồn và bảo mật của thơng tin. Trong lĩnh vực này, thuật tốn mã hóa
Advanced Encryption Standard (AES) đóng vai trị cực kì quan trọng. Với sự gia
tăng khơng ngừng về kích thước dữ liệu và độ phức tạp của các thuật tốn mã
hóa, việc tận dụng tối đa tài ngun máy tính thơng qua tính tốn song song
khơng chỉ giúp tăng tốc q trình mã hóa mà cịn giúp tối ưu hóa khả năng xử lý
của hệ thống. Điều này là quan trọng để đảm bảo tính hiệu quả và an tồn của
q trình mã hóa, đồng thời đáp ứng được yêu cầu ngày càng cao của các ứng
dụng và hệ thống thông tin hiện đại.
Đề tài "Áp dụng tính tốn song song cho thuật tốn mã hóa AES với
OpenMP" khơng chỉ là một nghiên cứu về mã hố mà cịn đề cập đến sự cần
thiết của tính tốn song song để đối mặt với mối đe dọa ngày càng phức tạp.
Qua đó, đề tài này hứa hẹn đóng góp vào việc nâng cao hiệu suất và độ bảo
mật của AES trong bối cảnh an ninh mạng ngày nay.
Sự chọn lựa đề tài này không chỉ xuất phát từ sự quan tâm của em đối
với lĩnh vực bảo mật thơng tin mà cịn từ nhận thức về tầm quan trọng ngày
càng tăng của việc áp dụng tính tốn song song trong xử lý dữ liệu lớn.
2.

MỤC TIÊU CỦA ĐỀ TÀI


Mục tiêu của bài nghiên cứu này là tìm hiểu và ứng dụng tính tốn song
song, đặc biệt là sử dụng thư viện OpenMP, để cải thiện hiệu suất của thuật
tốn mã hóa AES. Đồng thời đưa ra cái nhìn tổng quan về việc áp dụng tính
tốn song song với thuật tốn này thơng qua việc đánh giá hiệu suất bao gồm
thời gian chạy, tốc độ chạy và tài nguyên tiêu tốn cho mỗi lần thực hiện. Từ đó,
nhận thức được hiệu quả của tính tốn song song áp dụng cho thuật tốn này.
3.

CẤU TRÚC CỦA ĐỀ TÀI

Ngồi phần mở đầu, kết luận và tài liệu tham khảo, đề tài chúng em gồm
2 chương sau:

1


● Chương 1: Cơ sở lý thuyết trình bày thuật tốn mã hố AES, tính
tốn song song phục vụ cho việc làm sản phẩm,
● Chương 2: Đánh giá hiệu năng sản phẩm đánh giá kết quả thực
hiện chương trình tuần tự và song song và rút ra nhận xét.

2


CHƯƠNG 1 - CƠ SỞ LÝ THUYẾT

1.1. NHẮC LẠI THUẬT TỐN MÃ HỐ AES
1.1.1. Giới thiệu chung về thuật tốn
AES (Advanced Encryption Standard) là một thuật tốn mã hóa đối xứng

được sử dụng rộng rãi trong lĩnh vực bảo mật thơng tin. Nó đã thay thế thuật
tốn DES (Data Encryption Standard) cũ và trở thành tiêu chuẩn mã hóa được
chấp nhận toàn cầu.
AES hoạt động trên các khối dữ liệu có kích thước cố định và sử dụng
một khóa bí mật để thực hiện q trình mã hóa và giải mã. Kích thước khối dữ
liệu thơng thường là 128 bit và kích thước khóa có thể là 128 bit, 192 bit hoặc
256 bit. Thuật toán AES bao gồm các pha biến đổi như thay thế, hoán vị, trộn
và thay thế ngược.
1.1.2. Đặc điểm của thuật toán
● Là mã hoá khối: AES mã hóa dữ liệu theo từng khối có kích thước
cố định là 128 bit.
● Kích Thước Khóa: Kích thước khóa có thể là 128/192/256 bit.
● Mã Hóa Dữ Liệu: AES mã hóa dữ liệu thành các khối 128 bit,
chuyển đổi 128 bit đầu vào thành 128 bit văn bản mật mã.
● Nguyên Lý Substitution-Permutation Network: AES dựa trên
nguyên lý này, thực hiện thơng qua loạt các phép tốn liên kết, bao
gồm sự thay thế và hoán đổi dữ liệu đầu vào.
● AES là kiểu mã hoá đối xứng: khoá trong q trình mã hố và giải
mã là giống nhau.
1.1.3. Khái quát về các bước mã hoá và giải mã
AES thực hiện các thao tác trên byte dữ liệu thay vì theo bit. Vì kích
thước khối là 128 bit nên mật mã xử lý 128 bit (hoặc 16 byte) dữ liệu đầu vào
phải cùng một lúc.
Số vịng phụ thuộc vào kích thước khóa như sau:
3


● Khóa 128 bit – 10 vịng
● Khóa 192 bit – 12 vịng
● Khóa 256 bit – 14 vịng

Ở mỗi vịng khố con sẽ được tạo bởi khối Key expansion.
Mã hóa:
AES coi mỗi khối là một ma trận 4x4 = 16 byte (4 byte x 4 byte = 128) mỗi
phần tử là 1 byte như sau.
[ b0 | b4 | b8 | b12 |
| b1 | b5 | b9 | b13 |
| b2 | b6 | b10| b14 |
| b3 | b7 | b11| b15 ]
Tùy vào kích khóa sẽ có số vịng tương ứng và mỗi sẽ bao gồm 4 bước
(VD: Khóa 128 bit – 10 vịng) :
Bước 1: SubByte
Bước 2: ShiftRow
Bước 3: MixColumns
Bước 4: Add Round Key

4


Hình 1.1. Q trình mã hố và giải mã AES

Lưu ý: Vịng cuối cùng khơng có vịng MixColumns.
Giải mã:
Các giai đoạn trong các vịng có thể dễ dàng hồn tác vì các giai đoạn này
có một mặt đối lập mà khi thực hiện sẽ hoàn nguyên các thay đổi. Mỗi 128 khối
trải qua 10,12 hoặc 14 vòng tùy thuộc vào kích thước khóa và q trình giải mã
là q trình mã hóa được thực hiện ngược lại.
Mỗi vịng giải mã gồm có các bước:
● AddRoundKey
● Inverse MixColumns


5


● Inverse ShiftRows
● Inverse SubByte
Quá trình giải mã là quá trình mã hóa được thực hiện ngược lại.

1.1.4. Chi tiết về các bước của q trình mã hố
1.1.4.1.
Key expansion
Là thao tác tạo lược đồ khóa hay mở rộng khóa, tạo ra Nr+1 khóa vịng
từ khóa chính K, mỗi khóa vịng gồm Nb từ 32 bit, trong đó đối với AES thì Nb =
4, cịn Nr được xác định theo. Các phép biến đổi để tạo khóa vịng trong
ExpandKey là khác nhau đối với các giá trị khác nhau của kích thước khóa K. Sau
đây là việc mở rộng khóa đối với khóa mã 128 bit. Sử dụng thuật tốn Key
Schedule để tính tốn tất cả các khóa vịng từ khóa ban đầu. Các khóa vịng này
sẽ được sử dụng trong từng vịng của q trình mã hóa.

Hình 1.2 Tạo khố cho mỗi vịng

Trong thao tác mở rộng khóa với khóa mã 128 bit có đầu vào là 16 byte
(4 word) của khóa mã, và sinh ra một mảng khóa vịng (Nr+1)x4=44 từ (word)
hay 176 byte. 44 word này được sử dụng cho 11 vịng mã hóa của AES, mỗi
vịng dùng 4 word (như hình vẽ).
6


1.1.4.2.
Sub bytes
Bước này thực hiện thay thế.

Ở bước này, mỗi byte được thay thế bằng một byte khác. Nó được thực
hiện bằng bảng tra cứu còn được gọi là S-box. Sự thay thế này được thực hiện
theo cách một byte không bao giờ được thay thế bởi chính nó và cũng khơng
được thay thế bằng một byte khác, điều này bổ sung cho byte hiện tại. Kết quả
của bước này là chúng ta sẽ có ma trận 16 byte (4 x 4) như trước.
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 1byte 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}.

7


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 S-box sau khi tính tốn.

Hình 1.3. Hộp S-box

Hình 1.4 Ví dụ phép sub byte

8



Hai bước tiếp theo thực hiện hoán vị.
1.1.4.3.
Shift rows
Bước này đúng như tên gọi của nó. Mỗi hàng được dịch chuyển một số
lần cụ thể.
Hàng đầu tiên không được dịch chuyển
Hàng thứ hai được dịch chuyển một lần sang trái.
Hàng thứ ba được dịch chuyển hai lần sang trái.
Hàng thứ tư được dịch chuyển ba lần sang trái.

Hình 1.5 Minh hoạ phép shift row

Và đây là kết quả trước khi thực hiện và sau khi thực hiện ta được:

[ b0 | b1 | b2 | b3 ]

[ b0 | b1 | b2 | b3] (Hàng đầu tiên)

| b4 | b5 | b6 | b7 |

-> | b5 | b6 | b7 | b4 | (Hàng thứ hai)

| b8 | b9 | b10 | b11 |

| b10 | b11 | b8 | b9 | (Hàng thứ ba)

[ b12 | b13 | b14 | b15] [ b15 | b12 | b13 | b14 ] (Hàng thứ tư)
1.1.4.4.

Mix columns
Bước này về cơ bản là phép nhân ma trận. Mỗi cột được nhân với một
ma trận cụ thể và do đó vị trí của mỗi byte trong cột được thay đổi.
Tuy thế, bước này được bỏ qua ở vòng cuối cùng.
[ c0 ] [ 2 3 1 1 ] [ b0 ]
| c1 | = | 1 2 3 1 | | b1 |
| c2 |

| 1 1 2 3 | | b2 |

[ c3 ] [ 3 1 1 2 ] [ b3 ]

9


1.1.4.5.
Add round key
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.

1.1.5. Chi tiết các bước q trình giải mã
1.1.5.1.
Inverse MixColumns:
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:

1.1.5.2.
Inverse SubByte:
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 Sbox tại bước 1 và bước 2. Tại bước 3, IS thực hiện phép thay thế sau:

10


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.

Hình 1.6. Hộp Inverse S-box

11


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.

1.1.5.3.
Inverse ShiftRows
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.
1.2. MỘT SỐ KIỂU MÃ HOÁ KHỐI ÁP DỤNG CHO AES
1.2.1. Electronic codebook (ECB)
Kiểu mã hoá electronic codebook (ECB) là kiểu mã hoá đơn giản nhất.
Trong quá trình mã hố, nó chia bản tin cần mã hố thành các khối 128 bit, rồi
mã hoá chúng một cách độc lập. Bản mã thu được từ việc ghép nối các khối
128 bit sau q trình mã hố.

Hình 1.7. Q trình mã hố ECB

Q trình giải mã được thực hiện ngược lại so với q trình mã hố, cũng
từ việc chia nhỏ bản mã thành khối và giải mã độc lập. Kết quả bản rõ có thơng

12


qua việc ghép nối các khối của kết quả giải mã.
Nhược điểm của phương pháp là thiếu tính che giấu dữ liệu và dễ bị
thám mã, do các khối giống nhau trong một văn bản đều mã hoá một cách
giống nhau.

Phương pháp khơng hiệu quả đối với bản rõ kích thước lớn.

Hình 1.8. Quá trình giải mã ECB

1.2.2. Cipher block chaining (CBC)

Hình 1.9 Q trình mã hố CBC

Kiểu mã hố CBC giúp che giấu dữ liệu tốt hơn kiểu ECB. Trong q trình
mã hố của CBC, văn bản cũng được chia làm các khối. Trước khi một khối
được thực hiện thuật tốn mã hố, nó sẽ được thực hiện phép xor (phép toán
thao tác trên bit nhận kết quả 0 nếu 2 bit giống nhau, ngược lại cho kết quả 1)
với bản mã của khối trước đó, trừ khối bản rõ đầu tiên xor với khối IV (khối

13


vector ban đầu, được khởi tạo một cách ngẫu nhiên). Cuối cùng sẽ thu được
bản mã cho mỗi khối, ghép chúng lại để tạo ra văn bản mật
Quá trình giải mã của CBC được thực hiện ngược lại. Sau khi một khối đi
qua thuật tốn giải mã, nó được thực hiện phép xor với bản mã của khối trước
đó, trừ khối bản rõ đầu tiên xor với khối IV, để thu được bản rõ của khối tương
ứng.

Hình 1.10 Quá trình giải mã CBC

Về mặt tốn học, q trình mã hố kiểu CBC có thể mơ tả dưới dạng sau:
Ci = f(key, Pi ⊕ Ci – 1)
Q trình giải mã có thể mô tả như sau:
Pi = f -1 (key, Ci ) ⊕ Ci – 1

Với
● Ci là bản mã thứ i, C0 = IV,
● Pi là bản mã thứ i,
● f là thuật toán mã hoá AES,
● f -1 là thuật toán giải mã AES,
● key là khoá được sử dụng,

14


● IV là khối vector ban đầu.
1.2.3. Full block Cipher feedback (CFB tồn khối)
Q trình mã hố CFB tồn khối tương tự với CBC, tuy nhiên khối IV là
khối đầu tiên đưa vào mã hố AES, sau đó nó sẽ được xor với khối bản rõ đầu
tiên, rồi lại mã hoá, xor với khối bản rõ tiếp theo, lặp lại tương tự như vậy. Quá
trình giải mã được thực hiện ngược lại với q trình mã hố.

Hình 1.11 Q trình mã hố CFB

Hình 1.12 Q trình giải mã CFB

Về mặt tốn học, CFB tồn khối có thể được mơ tả như sau:
Ci = f (key, Ci – 1) ⊕ Pi nếu i > 0.
Ci = IV nếu i = 0.
Pi = f (key, Ci - 1) ⊕ Ci
Với các kí hiệu như kiểu mã hoá CBC.

15



CFB có các ưu điểm và nhược điểm tương tự như CBC.
1.3. TÍNH KHẢ THI TRONG VIỆC SONG SONG HỐ THUẬT TỐN
1.3.1. Tính tốn song song
1.3.1.1.
Khái niệm
Tính tốn song song là kiểu tính tốn mà nhiều phép tốn hoặc tiến trình
thực hiện đồng thời với nhau
Hệ thống tính tốn song song có thể là kiểu ngầm định (chỉ dùng 1 đơn vị
tính tốn), đa nhân (multi-core, multi CPU), hoặc cluster (tại các trung tâm tính
tốn hiệu năng cao).
1.3.1.2.
Mơ hình bộ nhớ tập trung và bộ nhớ phân tán
Mơ hình tính tốn song song với bộ nhớ tập trung là mơ hình mà các đơn
vị tính tốn sử dụng chung bộ nhớ như RAM, thanh ghi… Lập trình viên nên
kiểm sốt truy cập từ các đơn vị tính tốn đến vùng nhớ để tránh xung đột, gây
sai sót trong q trình tính tốn.

Hình 1.13 Mơ hình bộ nhớ tập trung

Mơ hình tính tốn song song với bộ nhớ phân tán là mơ hình bộ nhớ
được chia thành các phần nhỏ, mỗi CPU sẽ quản lý bộ nhớ tương ứng tạo
thành một đơn vị tính tốn. Các đơn vị này được kết nối với nhau với hệ thống
đường truyền

16



×