b.=b.+b +b(i+4) mod8 (i+5)mod8 +b(i+6)mods T b +(+1)mods TT ©
trong đó, £, là bit thứ i của byte € có giá trị {63} hoặc {01100011}
Công thức (1.6) biểu diễn phép biến đổi Affine ở dang ma trận.
b | [1 000 1 1 1 17h] [1]
b| |1 10001 1 14] |1
b | |l 1 100 0 1 1l5,| |0
b1 1 11000 1151 |0
bị |1 1 11100 05,1 |0
b | |0 1 1 1110 OF] B} |1
bo} |0 0 11111 OB} |1 b| |0 0 011 1 1 1j5,| |0|
So,o | So, | So,2| So SubBytes
Hình 1.6. Phép biến đôi SubByte dưới dang ma trận trạng thái.
(1.5)
(1.6)
Mục dich của SubByte: Dùng dé chống lại hình thức tan công known-plaintext.
Quan hệ giữa đầu vào và đầu ra của phép SubByte không thé mô tả bằng một công
thức toán đơn giản.
1.2.3. ShiftRows và InvShiftRows
Thao tác ShiftRows thực hiện hoán vi các byte trong ma trận trạng thái theo cách thức sau (Hình 1.7):
- Dòng thứ nhất giữ nguyên.
- Dong thứ 2 dịch vòng trái 1 byte.
- Dòng thứ 3 dịch vòng trái 2 byte.
14
- Dòng thứ 4 dịch vòng trái 3 byte.
Hình 1.7. Phép biến đổi ShiftRow dưới dạng ma trận trạng thái.
Thao tác InvShiftRows thực hiện ngược lại, các dòng thứ 2, thứ 3, thứ 4 được dịch vòng phải tương ứng 1 byte, 2 byte và 3 byte.
1.2.4. Mixcolumns và InvMixColumns
Thao tác Mixcolumns (Hình 1.8) biến đôi độc lập từng cột trong ma trận trạng thái bang một phép nhân đa thức.
f (x)a(x) mod n(x)
Hình 1.8. Phép biến đôi MixColumns dưới dang ma trận trạng thái.
Mỗi cột trong ma trận trạng thái State có thể xem là một đa thức bậc 3, ví dụ cột thứ hai của ma trận viết dưới dạng đa thức là:
F(X) = Sy) X? +9jX” + 92x +9, (1.7)
Da thức trên được nhân với đa thức:
a(x) ={03} .x° +{01}x” + {01} x + {02} (1.8)
Trong đó, phép cộng và nhân các hệ số được thực hiện trong trường GF (2°) .
Đa thức kết quả có bậc lớn hon 3 (ví dụ hệ số của bậc 6 là {03} sạ, ). Tuy nhiên, ta
chỉ cân sử dụng 4 hệ sô cho giá tri cột mới nên đa thức két qua sẽ được modulo cho
15
đa thức n(x) =x" +1. Bốn byte hệ số của x3, x?, x!, x° được thay thế cho bốn byte
ban đầu trong cột.
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 theo
công thức (1.9):
02 03 01 01l 5),
Sy 01 02 03 0OIlÌs,
5. 01 01 02 03]|s,,
Sy) 03 01 01 02lÌs,
(1.9)
Hình 1.9 là một ví du về phép MixColumns. Chi tiết các bước tinh toán cho
helsclsls| —_fedfas|ac)ec
Hinh 1.9. Vi du vé phép MixColumns.
Mục dich của MixColumns: Việc nhân mỗi cột với da thức a(x) và mô-đuno n(x) nhằm mục dich 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 rang 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 dau.
Điều này tao ra tinh khuếch tán (diffusion) cần thiết cho mã hóa.
1.2.5. AddRoundKey
Trong thao tác AddRoundKey, 128-bit của ma trận trạng thái sẽ được XOR với 128 bit của khóa con của từng vòng.
1.2.6. Expand key
Thao tác Expand key có đầu vào là 16 byte (4 từ) của khóa bí mật, và sinh ra
một mảng 44 từ (176 byte). 44 từ này được sử dụng cho 11 vòng mã hóa của AES,
mỗi vòng dùng 4 từ (word).
16
Từ bốn từ đầu vào w,w,w„,w,, trong lần lặp đầu tiên thao tác Expand key sinh ra bốn từ w,w,W,w, , lần lặp thứ hai các từ w,w,w,vww„ sinh ra các tir w,w,wsM,, cứ như vậy cho đến lần lặp thứ 10 sinh ra bốn từ cuối cùng w,„w,w,„w„„ như Hình 1.10.
Trong mỗi lần lặp đề sinh ra 4 từ, từ đầu tiên sinh ra theo quy tắc w =w ,®g
với g = SubWord (RotWord (%2 )) ® Rcon[i/4]. Ba từ tiếp theo sinh ra theo quy tắc
w, =w,„€®w,¡. Các hàm RotWord, SubWord và mảng Rcon được thực hiện như sau:
RotWord: Dịch vòng trái một byte. Gia sử từ đầu vào có 4 byte là [lạ,b,„b;,b,
thì kết quả của RotWord là [P..b;.b;.b; | .
If ¡mod 4 = 0:
g = SubWord(RotWord(wi-1)) ® Rcon[i/4]
Wi=Wi-4® g If ¡mod 4 #0:
Wi = Wi-4 ® Wi-1
Hinh 1.10. Thao tac ExpandKey.
SubWord: Thay thé mỗi byte trong từ dau vào bang cách tra cứu bảng S-Box
trong thao tac SubBytes.
Reon: La một mảng hang số. Mang nay gồm 10 từ ứng với 10 vòng AES. Bốn
byte của một phần tử Rcon| j] là (Rc[].0.0.0) với RC[] là mảng 10 byte như sau:
j 11213 |4|5 |6|7|8|19|10
RCI]| ! |2 | 4 | 8 |10|20|40|80|1B|36
(RC[/]= RC[¡~1]*2) với phép nhân thực hiện trong GF (2°)
17
Mục đích của Expand key là dùng dé chống lại known-plaintext attack.
-_ Biết một số bit của khóa hay khóa con cũng không thé tính các bit còn
lại.
- _ Không thé tính ngược: biết một khóa con cũng không thé tính lại các
khóa con trước đó.
- __ Tính khuếch tán: một bit của khóa chính tác động lên tat cả các bit của
các khóa con.
1.3. Các phương án thực thi AES bằng phần cứng
Các thuật toán mã hóa bảo mật có thé được thực hiện trên cả phần mềm và phần cứng. Việc triển khai phần mềm được thiết kế và viết bằng các ngôn ngữ lập trình, chăng hạn như C, C ++, Java và hợp ngữ, được nhúng trên bộ vi xử lý đa năng, bộ xử lý tín hiệu số (DSP) hoặc trên các thẻ thông minh. Việc triển khai phần cứng
được thiết kế và viết bằng các ngôn ngữ mô tả phần cứng, chang hạn như VHDL và Verilog. Có hai cách tiếp cận để thực thi các thiết kế này là công nghệ ASIC
(Application-Specific Integrated Circuits) và công nghệ FPGA (Field Programmable Gate Array).
Các vi mạch tích hợp chuyên dung (ASIC) được thiết kế theo phương pháp từ mô tả hành vi đến bé trí vật lý và sau đó được gửi đi dé chế tao tại các nhà máy sản xuất bán dẫn. Trong khi đó, các chip FPGA có thể được mua sẵn trên thị trường, có thê tái lập trình để thực hiện các chức năng khác nhau. Phần tử chính của FPGA là các khối 16-gic. Khối 16-gic được cau thành từ LUT (Look up table) và các flip-flop.
LUT là khối 16-gic có thể thực hiện bat kỳ hàm lô-gic nào; kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối lô-gic trực tiếp hay thông qua phần tử nhớ flip- flop. Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và doc. Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được. Ngoài ra, FPGA hiện nay còn được nhúng thêm các thành phần như khối bộ nhớ, bộ nhõn, bộ nhõn-bộ tớch lũy và thậm chớ cả lừi vi xử lý. Cỏc khối đầu vào/đầu ra có thé tái cấu hình cung cấp các giao diện dé giao tiếp với thé giới bên
ngoài.
18
Bảng 1.1 so sánh các đặc điểm của việc thực thi các thuật toán mã hóa trên công nghệ ASIC và FPGA (phần cứng) và bộ vi xử lý (phần mềm). Các đặc tính hiệu năng của ASIC và FPGA gần như giống hệt nhau, được thể hiện qua nhóm tính năng đầu tiên và khác biệt đáng kể so với hiệu năng của các bộ vi xử lý đa năng. Cả ASIC và FPGA đều có thé tận dụng quá trình xử lý song song, kỹ thuật xử lý đường ống và
hoạt động trên các từ có kích thước tùy ý. Trong khi đó, với các bộ vi xử lý đa năng
quá trình xử lý song song và đường ống bị giới hạn bởi số lượng và cấu trúc bên trong
của các đơn vị chức năng của bộ vi xử lý và mức độ song song của lệnh.
Sự khác biệt cơ bản giữa ASIC và FPGA chính là hiệu năng; tốc độ của FPGA thấp hơn do trễ của các mạch tái cấu hình. Kết quả là bất kỳ một thiết kế nào được thực hiện trên FPGA cũng chậm hơn so với được thực hiện trên ASIC, gia sử rằng cả hai mạch tích hợp đều được chế tạo trên một công nghệ bán dẫn giống nhau [23].
Bang 1.1. Các đặc tính khi thực hiện mã hóa trên ASIC, FPGA và vi xử lý [23].
ASIC FPGA Vi xử lý
Xử lý song song Có Có Hạn chế
Kiến trúc đường ống Có Có Hạn chế
Tốc độ Rất nhanh Nhanh Trung bình
Khả năng lập trình lại Không Có Có
Chống giả mạo Tốt Hạn chê Yếu Kiểm soát truy cập khóa Tốt Trung bình Yêu
Ngôn ngữ phát triển VHDL, VEDL, C, C+, Java,Verilog HDL | Verilog HDL assembly
Thời gian thiết kế Dài Trung bình Ngắn
Công cụ thiết kế Rat dat Dat Khong dat
Bảo trì va cập nhật Dat Không dat Khong dat
Các tinh năng chung của FPGA và bộ vi xử lý là chúng đều có thé dé dang nạp lại chương trình dé thực hiện một thuật toán khác. Nhược điểm của tính năng này là khả năng chống giả mạo hạn chế; thông tin cấu hình của FPGA, ít nhất về lý thuyết,
có thể bị sửa đổi bởi người dùng trái phép. Trên thực tế, thông tin cau hình của FPGA thường được tải xuống trong quá trình khởi tạo từ bộ nhớ chỉ đọc, chang hạn như EPROM, không thê dễ dàng giả mạo, ít nhất là từ xa. Kiểm soát truy cập vào các
19
khóa mật mã trong FPGA cũng mạnh hơn trong phần mềm, nhưng yếu hơn trong
ASIC.
Quá trình phát triển trong cả hai cách tiếp cận triển khai phan cứng là rat giống nhau: mạch được mô tả bằng ngôn ngữ mô tả phần cứng, kiểm chứng bang trình mô phỏng mạch kỹ thuật số, sau đó được kiểm tra bằng bo mạch mẫu. Sự khác biệt cơ bản giữa FPGA và ASIC là hướng tiếp cận sử dụng công nghệ FPGA không yêu cầu
thiết kế vật lý, chế tạo và kiểm tra các khuyết tật vật lý. Do đó, chu ky thiết kế ngắn
hon đáng ké và các công cụ thiết kế và thử nghiệm ít tốn kém hơn. Điểm tương đồng giữa FPGA và phần mềm là khả năng bảo trì và nâng cấp từ xa, dựa trên các bản cập
nhật.
Mặc dù công nghệ ASIC có chu kỳ thiết kế dài hơn và chỉ phí thử nghiệm ban đầu tốn kém hơn nhưng lại đạt được tốc độ cao hơn và mức độ bảo mật tốt hơn. Do đó phát triển các bộ mã hóa trên công nghệ ASIC vẫn được quan tâm nghiên cứu.
1.4. Các tham số đánh giá thiết kế phần cứng AES
Việc thực thi các thuật toán mã hóa bằng phần cứng có thê được mô tả băng cách sử dụng một số tham số hiệu năng. Dưới đây là các định nghĩa về các tham số
chính và các công thức về sự phụ thuộc lần nhau giữa các tham sô này.
1.4.1. Thông lượng và độ trễ
Thông lượng (7?) mã hóa/g1ải mã được tính bằng số bit được mã hóa/ giải mã
trong một đơn vi thời gian. Don vi của thông lượng là Mbit/s hoặc Gbit/s. Độ trễ (Lt)
mó húa/giải mó là thời gian cần thiết để mó húa/giải mó một khối bản rừ
(plaintext)/ban mã (ciphertext), đơn vi của độ trễ là ns (nano giây). Độ trễ và Thông
lượng mã hóa/giải mã có liên quan với nhau bởi công thức:
BxN
Tp (1.10)Lt
Trong đú, ệ; là kớch thước khối dữ liệu đầu vào; M; là số lượng khối dit liệu đầu vào được xử lý đồng thời; Lr là độ trễ.
Trong các ứng dụng có lượng lớn dữ liệu được mã hóa hoặc giải mã, thông
lượng chính là tổng thời gian để mã hóa/giải mã lượng dữ liệu đó và nó là đại lượng
20
đặc trưng nhất để đo lường tốc độ bộ mã hóa. Trong các ứng dụng chỉ có lượng nhỏ cỏc bản rừ hoặc bản mó cần xử lý thỡ tổng thời gian này phụ thuộc vào cả thụng lượng
và độ trễ.` ^
1.4.2. Diện tích thực thi
Diện tích cần thiết cho việc thực thi bộ mã là một tham số quan trọng vì những
lý do sau:
- Giá thành: Diện tích của một mạch tích hợp là yếu tố chính để xác định giá
thành. Thông thường, chi phí của một mạch tích hợp tỷ lệ thuận với diện tích thực thi mạch đó. Tuy nhiên sự phụ thuộc này không phải lúc nào cũng chính xác, đặc biệt
cũng cần tính đến chi phí đóng gói, được xác định bởi số lượng cổng đầu vào và đầu
ra của mạch.
- Giới hạn về diện tích tối đa: Trong một số phần cứng nhất định, tồn tại một giới hạn về diện tích tối đa của một bộ mã hóa. Giới hạn này có thé do chi phí, công
nghệ chế tạo sẵn có, mức tiêu thụ điện năng hoặc bat ky su két hop nao của các yếu
tố này. Ví dụ, trong thé thông minh và bộ vi điều khién, cả chi phí và điện năng tiêu thụ đều giới hạn diện tích của các bộ mã hóa được nhúng. Với công nghệ FPGA, diện tích bị giới hạn bởi công nghệ chế tạo sẵn có và giá thành của chip. Với công nghệ
ASIC, diện tích cho thực thi bộ mã hóa được tính theo đơn vi ym’ . Hai đại lượng liên
quan là số lượng transitor bán dẫn và số lượng công lô-gic. Giá trị của hai đại lượng trên có tương quan chặt chẽ. Các đại lượng này được tính toán bởi các công cụ hỗ trợ thiết kế sử dụng trong tổng hợp ASIC. Trong tông hợp lô-gic, các giá trị này là một hàm của thư viện cell chuẩn (Standard Cell Library).
Trong triển khai FPGA, các phép đo kích thước mach duy nhất được các công cụ thiết kế hỗ trợ bởi máy tính (Computer-Aided Design — CAD) báo cáo là số lượng khối lô-gic cơ bản và số lượng công lô-gic tương đương. Trong số hai phép đo này,
số lượng khối lô-gic cơ bản có thé xác định xấp xi diện tích mạch chính xác hơn. Việc đo và so sánh diện tích mạch trong FPGA cũng phức tạp hơn do sự tỒn tại của các khối 16-gic nhúng và bộ nhớ nhúng.
21
1.4.3. Công suất tiêu thụ của mạch tích hợp
Công suất tiêu thụ của một vi mạch bao gồm hai thành phan chính: công suất tiêu thụ động (dynamic power) và công suất tiêu thụ tĩnh (static power) [18].
Tổng công suất = (Pchuyén mach + Pngắn mach) + Pro ri (1.11) Trong đó, công suất tiêu thụ động là công suất mà vi mạch đó tiêu thụ khi các tín hiệu trong mạch có sự thay đôi về giá trị (thay đổi mức 16-gic). Có nhiều nguyên nhân gây ra công suất tiêu thụ động trên một vi mạch. Nguyên nhân đầu tiên và cũng là nguyên nhân chính đó là công suất tiêu thụ gây ra bởi sự phóng-nạp trên tụ điện tải ở đầu ra của một công lô-gic CMOS khi có sự thay đổi mức lô-gic của tín hiệu trong mạch.
Công suất này được gọi là công suất chuyên mach (switching power). Bên cạnh công
suất chuyên mạch thì một nguyên nhân khác ảnh hưởng đến công suất tiêu thụ động trên vi mạch đó là công suất ngắn mạch. Công suất ngắn mạch là công suất tiêu thụ của cong lô-gic khi xuất hiện dong điện ngắn mạch trên cổng đó tại thời điểm cả hai loại transitor bán dẫn PMOS và NMOS đồng thời mở.
Công suất chuyên mạch (switching power), là năng lượng cần có cho việc nạp
hoặc xả trờn tụ điện ở tải ngừ ra (load capacitance).
Pchuyên mach = AXf% Copp X Vad? (1.12)
Trong đó a là số bit chuyển mạch, ƒ là tan số chuyền mach, Ce là điện dung hiệu dụng và Vaa là điện áp nguồn.
Công suất ngắn mach (short circuit power) là năng lượng tiêu hao do dòng ngắn mạch từ nguồn (source) đến đất (ground) xuất hiện trong khi các CMOS chuyền
trạng thái.
ngắn mach = IscX Vaa Xf (1.13)
Trong đó, /„ là dòng điện ngăn mach trong quá trình chuyển mach, Vaa là điện áp nguồn và ƒ là tần số chuyên mạch.
Trong một vi mạch, công suất tiêu thụ tĩnh (công suất rò ri) là công suất mà vi mạch đó tiêu thụ khi được cấp nguồn mặc dù các tín hiệu trong mạch không có sự thay đôi về mặt giá trị. Nguyên nhân chính gây ra công suất tiêu thu tĩnh đó là do sự xuất hiện các dòng điện rò ở các transitor bán dẫn. Cùng với sự phát triển của công
nghệ bán dan thì kích thước của transitor bán dẫn ngày càng được thu nhỏ lại. Tuy
22
nhiên, điều này lại làm cho dòng rò trên transitor bán dẫn tăng lên và đồng nghĩa với việc công suất tiêu thụ tĩnh ngày càng tăng. Công suất tiêu thụ tĩnh là một hàm của điện áp cung cấp Vua, điện áp ngưỡng chuyển mach W„ và kích thước transitor bán
dẫn.
Pro ri = f(Vaa, Vin, W/L) (1.14)
Trong đó, Vaa là điện áp nguồn, V„ là điện áp ngưỡng, W và L là kích thước transitor
bán dân.
1.5. Các công trình thực thi chuẩn mã hóa AES bằng phần cứng
Các kiến trúc phần cứng thực thi thuật toán Rijndael đầu tiên đã được thực
hiện trong quá trình đánh giá và lựa chọn các ứng viên cho AES. Các nhóm nghiên
cứu của các trường đại học đã đóng góp những triển khai đầu tiên của AES dựa trên FPGA [19], [20]. Nhóm Cơ quan An ninh Quốc gia Hoa Ky và các nhóm công nghiệp
đã cung cấp các triển khai đầu tiên thực thi trên công nghệ ASIC [21].
Các nhà nghiên cứu đã nỗ lực tập trung phát triển các kiến trúc thực thi phần cứng cho AES. Quá trình này diễn ra theo một số hướng chính như sau:
- Hướng thứ nhất là phát triển các kiến trúc có thông lượng cao, sử dụng các kiến trỳc đường ống cho chế độ khụng hỏi tiếp, kiến trỳc đa lừi. Hướng này dẫn đến sự phát triển của các triển khai AES hoạt động với thông lượng hàng chục Gb/s. Những kiến trúc này mang lại hiệu năng cao nhưng chi phí diện tích lớn và tiêu thụ nhiều năng lượng.
- Hướng thứ hai là phát triển các kiến trúc nhỏ gon cho AES, được tối ưu hóa về diện tích thực thi. Nỗ lực này đã dẫn đến sự xuất hiện của các kiến trúc có đường dt liệu 64-, 32- và thậm chí 8-bit. Nhược điểm của các kiến trúc này là thông lượng thấp vì sử dụng các vòng lặp.
- Hướng thứ ba là tối ưu hóa các phép biến đôi của AES, bao gồm thực thi phép biến đổi SubBytes bằng các công lô-gic dé giảm tài nguyên phan cứng
và tôi ưu hóa các phép biên đôi MixColumns và InvMixColumns.
23