Tải bản đầy đủ - 0 (trang)
CHƯƠNG 2: NGHIÊN CỨU GIẢI PHÁP CẢI TIẾN MÃ KHỐI AES VỚI MA TRẬN MDS KÍCH THƯỚC LỚN

CHƯƠNG 2: NGHIÊN CỨU GIẢI PHÁP CẢI TIẾN MÃ KHỐI AES VỚI MA TRẬN MDS KÍCH THƯỚC LỚN

Tải bản đầy đủ - 0trang

hiểm nào nhưng một số nhà nghiên cứu sợ rằng sẽ có người lợi dụng được cấu trúc này

trong tương lai.

Vào năm 2002, Nicolas Courtois và JosefPieprzyk 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ở toá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.

2.1.1. Tấn cơng kênh bên (Side channel attacks)

Tấn công kênh bên không tấn công trực tiếp vào thuật tốn mã hóa mà thay vào đó,

tấn cơng lên các hệ thống thực hiện thuật tốn có sơ hở làm lộ dữ liệu.

Tháng 4 năm2005, Daniel j.Bẻntein công bố một tấn cơng lên hệ thống mã hóa AES

trong PoenSl. Một máy chủ được thiết kế để đưa ra tối đa thơng tin về thời gian có thể thu

được và cuộc tấn công cần tới 200 triệu bản rõ lựa chọn. Một số người cho rằng tấn công

không thể thực hiện được trên Internet với khoảng cách vài điểm mạng.

Tháng 10 năm2005, Adi Shamir và 2 nhà nghiên cứu khác có một bài nghiên cứu

minh họa một vài dạng khác. Trong đó, một tấn cơng có thể lấy được khóa AES với 800

lần ghi trong 65 mili giây. Tấn cơng này u cầu kẻ tấn cơng có khả năng chạy chương

trình trên chính hệ thống thực hiện mã hóa.

Tấn công kênh bên 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 tấn công bên:

+) Tấn công thời gian

+) Tấn công dựa vào lỡi

+) Tấn cơng phân tích năng lượng

+) Tấn cơng phân tích điện từ



28



2.1.2. Các phương pháp phòng chống

Phương pháp 1: Mã hóa cực mạnh

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ý

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.

2.2. Nghiên cứu giải pháp cải biên AES với ma trận MDS kích thước lớn

Ma trận MDS cho tầng trộn tuyến tính của thuật tốn mật mã nói chung và mã khối

nói riêng được các nhà thiết kế lựa chọn dựa trên những tiêu chí đánh giá nhất định. Vì

vậy, để có thể cải biên AES với ma trận MDS mới, đồ án sẽ tìm hiểu kỹ hơn về một số

tiêu chí đánh giá (hay còn gọi là một số tính chất mật mã) của tầng khuếch tán.

2.2.1. Một số tiêu chí đánh giá tầng khuếch tán của thuật toán mật mã

2.2.1.1. Ảnh hưởng thác đổ

Sau năm 2000, dự án NESSIE (sau khi NIST tuyển chọn xong AES) đã đưa ra tiêu

chuẩn về mức độ ảnh hưởng thác đổ (The avalanche effect – AC) để đánh giá các mã

khối. Dự án NESSIE đánh giá thống kê mã khối, trong đó kiểm tra mức độ của tiêu chuẩn

AC

Xét vectơ:



Và vectơ:



Đạt được bằng cách lấy phần bù bit thứ của vectơ (với )

- Hàm thỏa mãn tiêu chuẩn AC:



29



Hàm : ( được gọi là thỏa mãn tiêu chuẩn ảnh hưởng thác đổ nếu trung bình có các

bit thay đổi mỡi khi một bit vào đơn được thay đổi hay:

(2.1)

(Với )

Trọng số Hamming của là số các thành phần khác 0 của vectơ .

2.2.1.2. Ảnh hưởng thác đổ chặt

Dự án NESSIE cũng đã đưa ra tiêu chuẩn về mức độ ảnh hưởng thác đổ chặt (The

strict avalanche effect – SAC) để đánh giá các mã khối. Dự án NESSIE đánh giá thống kê

mã khối, trong đó kiểm tra mức độ của tiêu chuẩn SAC.

Hàm thỏa mãn tiêu chuẩn SAC:

Hàm : ( được gọi là thỏa mãn tiêu chuẩn SAC nếu mỗi bit ra thay đổi với xác suất

mỗi khi một bit vào (đơn) được thay đổi, hay với mọi và ta có:



(2.2)

2.2.1.3. Số nhánh của biến đổi tuyến tính

Hiệu ứng thác và tiêu chuẩn thác chặt (SAC) đo sự ảnh hưởng của 1 bit đầu vào đối

với sự thay đổi của các bit đầu ra. Một độ đo mới hơn để đánh giá khả năng khuếch tán

của tầng tuyến tính trong mã khối dạng SPN là khái niệm “số nhánh”.

Số nhánh (branch number) là số lượng tối thiểu các S-box hoạt động (một S-box

song ánh được gọi là hoạt động nếu cả hai đầu vào và đầu ra của nó đều khác 0 trong một

đặc trưng tuyến tính hoặc lượng sai) trong hai vòng mã hóa liên tiếp bất kỳ của một mã

khối có cấu trúc SPN. Số lượng này được sử dụng để ước lượng khả năng kháng lại tấn

công lượng sai và tuyến tính lên mã khối, cụ thể là số nhánh của tầng tuyến tính càng lớn

thì khả năng kháng lại các tấn công thám mã này càng tốt.

Số nhánh được tính như sau. Gọi , trong đó , là bit dữ liệu đầu vào. Còn là ký hiệu

một vector nhị phân có chiều dài , với khi , còn bằng 0 trong trường hợp còn lại. Ký hiệu

là trọng số Hamming của . Khi đó biểu thức của số nhánh là:

30



(2.3)

Đối với một biến đổi tuyến tính bất kỳ, số nhánh của nó ln thỏa mãn .

Tùy vào mục đích thiết kế thuật tốn mà nhà thiết kế lựa chọn các biến đổi tuyến

tính có số nhánh khác nhau. AES có kích thước khối là 128 nhưng chỉ chọn ma trận MDS

có kích thước 44 trên trường , số nhánh cực đại có thể mà ma trận này cho là 5. Thực tế

tác giả có thể chọn được các ma trận có số nhánh cực đại là 17 sử dụng trong AES nhưng

điều đó đồng nghĩa với việc sẽ ảnh hưởng hay nói cách khác sẽ tạo ra sự cồng kềnh trong

q trình cài đặt. Thuật tốn mã khối LED có kích thước khối là 64 bit với tầng tuyến tính

sử dụng lặp lại 4 ma trận MDS có kích thước 44 trên . Ma trận này có số nhánh cực đại

bằng 5. Ngồi ra, còn có các mã khối sử dụng hoán vị bit như PRESENT với số nhánh

bằng 2 vì biến đổi tuyến tính của nó chỉ là phép hốn vị bit…

Như vậy, lựa chọn các biến đổi tuyến tính với số nhánh khác nhau sẽ ảnh hưởng đến

khả năng kháng lại các thám mã và nó cũng là một tiêu chí ảnh hưởng đến số lượng vòng

mã hóa trong một mã khối.

2.2.1.4. Điểm bất động trong biến đổi tuyến tính

Xét các giá trị bit như là các phần tử của trường và là tập tất cả các vector trên có

chiều dài , ví dụ . Xác định như một ma trận không suy biến với các phần tử của trường

biểu diễn một biến đổi tuyến tính trên các phần tử của . Trường là tập hợp con của ,

trong đó chỉ các trường hợp hay và hay là xem xét. Phép biến đổi ánh xạ L là phần tử

của đến một phần tử của với như dưới đây:



(2.4)

Trong đó và . Nói cách khác, phương trình trên biểu diễn một ánh xạ từ bit tới bit.

Giả sử biểu diễn ma trận dựa trên ma trận đơn vị trong đó . Các phần tử của ma

trận được xác định bởi tham số dịch vòng , ở đây .

Ví dụ ma trận đơn vị và với được biểu diễn như sau:

,



31



Tập tất cả các điểm bất động của một biến đổi tuyến tính L được biểu diễn bởi một

ma trận khơng suy biến A, có thể thu được bằng cách giải phương trình sau:

(2.5)

Trong đó .

Với , khi đó phương trình trở thành , việc giải các phương trình tuyến tính ở trên chỉ

ra tập tất cả các điểm bất động của (các khối đầu vào mà khi đi qua biến đổi tuyến tính L

sẽ cho khối đầu ra không thay đổi).

Với , việc giải mối quan hệ tuyến tính ở trên cho ta tập tất cả các khổi đầu vào mà

được xoay trái bit bởi phép biến đổi tuyến tính tạo được ra các khối đầu ra. Mối quan hệ

đó được biểu diễn như sau, trong đó đại diện khối đầu vào cụ thể của :

(2.6)

Số khối đầu vào mà thỏa mãn mối quan hệ trên được tính như sau:

(2.7)

Trong đó .

Độ khuếch tán được đo bởi phương pháp dựa trên số điểm bất động được ký hiệu

bởi hệ số , được định nghĩa như sau:

(2.8)

Trong đó và ma trận biểu diễn dạng ma trận của biến đổi tuyến tính . Số biểu thị số

trung bình của các khối đầu vào của mà có mối quan hệ tuyến tính được cho bởi phương

trình (2.5). Giá trị lớn nghĩa là có nhiều khối đầu vào khơng thay đổi bởi phép biến đổi

tuyến tính khi tạo khối đầu ra tương ứng. Tương tự như vậy, giá trị số nhỏ nghĩa là có

nhiều khối đầu vào được thay đổi hiệu quả bởi biến đổi tuyến tính khi tạo ra các khối đầu

ra tương ứng.

Ngồi ra, số còn biểu thị mức độ khuếch tán tốt đến đâu, nghĩa là nó thể hiện biến

đổi tuyến tính hiệu quả như thế nào khi giá trị thay đổi nhiều qua phép biến đổi tuyến

tính của khối đầu vào khi tạo khối đầu ra tương ứng. Mặt khác, biến đổi tuyến tính của mã

khối SPN có thể được thay thế bởi phương trình (2.5) với số lượng trung bình các khối

đầu vào là [5].

32



Đối với thuật tốn AES, nhiều cơng trình nghiên cứu đã chỉ ra rằng tầng khuếch tán

có số điểm bất động là tương đối lớn (bằng ).

2.2.1.5. Khả năng cài đặt

Ngoài quan điểm về độ an toàn, khả năng cài đặt của một biến đổi tuyến tính được

xem xét như một trong những tiêu chí hàng đầu trong thiết kế do khả năng cài đặt của một

biến đổi tuyến tính liên quan trực tiếp đến tốc độ mã/dịch của một thuật tốn. Ma trận

trong LED có số nhánh bằng 5, có rất nhiều ma trận dạng này trên nhưng tại sao các nhà

thiết kế lại chọn ma trận đó, câu trả lời đó là vì nó cho phép cài đặt nhanh trên cả môi

trường phần cứng và phần mềm. Ma trận trong MixColumns của AES cũng vậy, tại sao

tác giả chọn ma trận chỉ với kích thước 4x4 với số nhánh bằng 5 trong khi trên trường có

thể chọn ma trận MDS kích thước 16x16 với số nhánh bằng 17 và có tính khuếch tán lên

tồn bộ khối. Hoặc đối với các thuật toán khác cũng vậy. Câu trả lời chỉ có một đó là vì họ

muốn tối ưu cho quá trình cài đặt.

Trên thực tế quan hệ giữa số nhánh, số lượng điểm bất động và khả năng cho phép

cài đặt của một tầng tuyến tính là chưa có lý thuyết rõ ràng. Sự thỏa hiệp giữa các tham số

này ở giới hạn nào hiện nay câu trả lời chỉ có thể nằm trong thiết kế và cài đặt thực tiễn

đối với các biến đổi tuyến tính được đề xuất.

Như vậy việc xây dựng một tầng biến đổi tuyến tính ngồi việc phải đảm bảo các

tính chất mật mã thì nghiên cứu khả năng cho phép cài đặt trên mơi trường phần cứng và

phần mềm của nó là vơ cùng cần thiết và ln có tính thời sự.

2.2.2. Chọn ma trận MDS kích thước lớn

Như vậy, đối với tầng khuếch tán của AES có 2 đặc điểm có thể được xem là

nhược điểm, đó là: số nhánh thấp (chỉ bằng 5) và số điểm bất động lớn (. Vì vậy, có thể

cải tiến bằng cách chọn ma trận MDS có kích thước lớn hơn, đồng thời số điểm bất động

phải là ít nhất có thể.

Trong đồ án này em lựa chọn 2 cặp ma trận MDS để thử nghiệm chương trình:

Cặp ma trận A:

MDS_1[8][8] =



33



Và ma trận nghịch đảo InvMDS tương ứng là InvMDS_[8][8] =



Cặp ma trận B:

Đối với cặp ma trận này ma trận MDS và cũng chính là ma trận invMDS (ma trận tự

nghịch đảo):



Các ma trận này đều tạo ra tầng khuếch tán có số điểm bất động là 20

2.2.3. Sửa đổi cấu trúc phép biến đổi MixColumns

Trong mã khối AES , ma trận trạng thái cho mỗi hàm được xem là một ma trận 4 x

4. Vì thế, ở hàm MixColumns trong thuật tốn mã khối AES cải tiến với ma trận MDS 8 x

8, ma trận trạng thái được chuyển đổi thành một ma trận 8 x 2 (bằng cách chuyển cột 2

xuống cột 1 và chuyển cột 4 xuống cột 3) và được nhân với ma trận MDS 8 x 8. Kết quả

thu được là một ma trận 8 x 2 và được chuyển đổi thành ma trận 4 x 4.

Cấu trúc phép biến đổi MixColumns như sau:

=

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.

=.+.+.+.+.+.+.+.



34



=.+.+.+.+.+.+.+.



Các phép cộng ở trên đều là phép cộng XOR.

Kết quả của phép biến đổi MixColumns sau khi chuyển về mảng trạng thái:



2.2.4. Kiểu mã khối động ở cả hai tầng thay thế và khuếch tán

Thực hiện phép biến đổi InvMixColumns tương tự như phép biến đổi MixColumns,

khác ở chỗ thay ma trận MDS bằng ma trận nghịch đảo của nó là ma trận InvMDS.

2.3. Nghiên cứu giải pháp thực thi hiệu quả mã khối AES với ma trận MDS

kích thước lớn

Tiêu chuẩn về hiệu suất thực thi áp đặt các điều kiện lên các hệ số của c(x) trong

bước MixColumns. Tiêu chuẩn về hiệu suất có thể được thỏa mãn nếu các hệ số có các

giá trị đơn giản, chẳng hạn như 00, 01, 02, 03,... Phép nhân cùng với giá trị 00, 01 khơng

đòi hỏi việc xử lý nói chung, phép nhân với 02 có thể được cài đặt một cách hiệu quả với

một thủ tục dành riêng(thủ tục xtime), phép nhân với 03 có thể được cài đặt như là phép

nhân với 02 kèm thêm một phép XOR.

Như vậy để thực thi hiệu quả mã khối AES trước hết chúng ta có thể lựa chọn ma

trận MDS có nhiều byte 00, 01, 02, 03,... đồng nghĩa với việc lựa chọn các byte có ít bit 1

để cải tiến được tốc độ xử lý của phép mã. Đồng thời cần sử dụng giải pháp thực thi hiệu

quả để tăng tốc độ xử lý chương trình. Trong đồ án này em trình bày một số giải pháp sau:

phép nhân thông thường, phép nhân Xtime, tạo bảng nhân 256×256, tạo bảng nhân

64×256.

2.3.1. Phép nhân thơng thường

Phép nhân được thực hiện trong trường GF(28), tương ứng với phép nhân hai đa thức

đem chia lấy dư cho đa thức bất khả quy:



Để minh họa cho phép nhân chương trình sử dụng hàm MultAB_P để nhân từng

phần tử của mảng trạng thái với phần tử của ma trận MDS tương ứng.



35



unsigned char MultAB_P(unsigned char a, unsigned char b, int poly){

unsigned char aa = a, bb = b, r = 0, t;

while (aa != 0) {

if ((aa & 0x1) != 0)

r = r ^ bb;

t = bb & 0x80;

bb = bb << 1;

if (t != 0)

bb = bb ^ poly;

aa = aa >> 1;

}

return r;



}

Đánh giá số lượng phép nhân và phép XOR của phép nhân ma trận MDS với vector:

Độ phức tạp của hàm nhân trên là cỡ với là kích thước trường hữu hạn.

Giả sử ma trận MDS có kích thước , mảng trạng thái có kích thước . Khi đó:

Số phép nhân là: .

Số phép XOR là:

Như vậy, tổng số phép toán cần thiết để thực hiện phép nhân ma trận MDS với mảng

trạng thái là:



Với kích thước ma trận MDS là thì mảng trạng thái gồm 2 cột (), mỡi cột 8 phần tử

(). Do đó có số phép nhân và số phép XOR là . Vì vậy, tổng số phép tốn là .

2.3.2. Phép nhân Xtime

Phép nhân 2 phần tử x, y được định nghĩa như sau:

#define GFm(x,y)

((((y & 1) * x) ^

(((y>>1) & 1) * xtime(x)) ^

(((y>>2) & 1) * xtime(xtime(x))) ^

(((y>>3) & 1) * xtime(xtime(xtime(x)))) ^

(((y>>4) & 1) * xtime(xtime(xtime(xtime(x)))))))

… (n lần)



Theo đó, ta có thể đánh giá được số lượng phép Xtime và phép XOR tối đa khi nhân

2 phần tử x,y là: phép Xtime và phép XOR( với là kích thước của trường hữu hạn). Khi

36



cố định y tương ứng với các phần tử của ma trận MDS, ta hoàn toàn có thể đếm được số

phép Xtime và số phép XOR cần thiết để thực hiện phép nhân ma trận MDS với mảng

trạng thái. Do không phải phần tử nào cũng có n bít 1, nên số lượng phép tính này thường

nhỏ hơn rất nhiều so với ở trên, đồng thời phép xtime ở đây cũng đơn giản hơn phép

nhân thông thường ở trên.

2.3.3. Tạo bảng nhân 256256

Bảng nhân 256256 được tạo ra là kết quả của phép tính nhân của 256256 phần tử

trong trường được tính tốn trước và được lưu sẵn trong bảng. Bảng gồm 256 phần tử từ

0 đến 255 được điền lần lượt vào 256 hàng, tương tự với cột cũng gồm 256 phần tử được

điền lần lượt từ 0 đến 255.

Khi đó, phép nhân hai phần tử x, y chỉ là phép tra bảng . Dưới đây minh họa bảng

nhân 256256:

Bảng 2.1: Bảng nhân 256x256

0

1

2

3

4

.

.

.

.

251

252

253

254

255



0

0

0

0

0

0

.

.

.

.

0

0

0

0

0



1

0

1

2

3

4

.

.

.

.

251

252

253

254

255



2

0

2

4

6

8

.

.

.

.

159

145

147

149

151



3

0

3

6

5

12

.

.

.

.

100

109

110

107

104



4

0

4

8

12

16

.

.

87

75

79

67

71



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.



251

0

251

159

100

87

.

.

.

.

128

179

72

44

215



252

0

252

145

109

75

.

.

.

.

179

149

105

4

248



253

0

253

147

110

79

.

.

.

.

72

105

148

250

7



254

0

254

149

107

67

.

.

.

.

44

4

250

145

111



255

0

255

151

104

71

.

.

.

215

248

7

111

144



Với phương pháp tra bảng như vậy thì độ phức tạp mỡi lần nhân 2 phần tử chỉ là

hằng số , nên tốc độ xử lý sẽ nhanh hơn so với 2 phương pháp trên. Tuy nhiên, do con trỏ

sẽ phải di chuyển đến các ô nhớ trong bảng tương ứng, nên nếu bảng lớn ( phần tử) thì

cũng sẽ ảnh hưởng đến tốc dộ xử lý của chương trình. Vì vậy, có thể cải tiến để làm giảm

bớt kích thước của bảng như phương pháp dưới đây.



37



2.3.4. Tạo bảng nhân 64 256

Do số lượng phần tử trong ma trận MDS 88 chỉ là 64 phần tử nên chúng ta có thể rút

gọn bảng nhân thành bảng nhân 64256. Cách tạo bảng nhân 64256 tương tự như tạo bảng

nhân 256256. Tuy nhiên với bảng nhân 64256 chỉ gồm 64 phần tử (ta đánh chỉ số từ 0 đến

63) của ma trận MDS được điền vào hàng và 256 phần tử có thể có của trạng thái được

điền vào cột. Với cách tạo ra bảng tra 64256 sẽ tiết kiệm bộ nhớ lưu trữ lên tới 4 lần so

với bảng 256256 và con trỏ cũng chỉ di chuyển trong phạm vi bảng với phần tử nên tốc

độ thực hiện của chương trình cũng được tăng lên. Dưới đây là minh họa cho bảng nhân

64256:

Bảng 2.2: Bảng nhân 64x256

0

1

2

3

4

.

.

.

.

59

60

61

62

63



0

0

0

0

0

0

.

.

.

.

0

0

0

0

0



1

0

1

2

3

4

.

.

.

.

59

60

61

62

63



2

0

2

4

6

8

.

.

.

.

118

120

122

124

126



3

0

3

6

5

12

.

.

.

.

77

68

71

66

65



4

0

4

8

12

16

.

.

236

240

244

248

252



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.



38



251

0

251

159

100

87

.

.

.

.

149

166

93

57

194



252

0

252

145

109

75

.

.

.

.

52

18

238

131

127



253

0

253

147

110

79

.

.

.

.

15

46

211

189

64



254

0

254

149

107

67

.

.

.

.

66

106

148

255

1



255

0

255

151

104

71

.

.

.

121

86

169

193

62



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

CHƯƠNG 2: NGHIÊN CỨU GIẢI PHÁP CẢI TIẾN MÃ KHỐI AES VỚI MA TRẬN MDS KÍCH THƯỚC LỚN

Tải bản đầy đủ ngay(0 tr)

×