Tải bản đầy đủ (.pdf) (57 trang)

Thực Thi Mặt Nạ Nhân Chống Tấn Công DPA Lên Thuật Toán AES256 Trên SMART CARD

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 (1.13 MB, 57 trang )

ĐẠI HỌC BÁCH KHOA HÀ NỘI

LUẬN VĂN THẠC SĨ
TÌM HIỂU, THỰC THI MẶT NẠ NHÂN CHỐNG TẤN
CÔNG DPA LÊN THUẬT TOÁN AES-256 TRÊN
SMART CARD

Nguyen Thanh Khanh

Hà Nội - 2023


MỤC LỤC
MỤC LỤC ..................................................................................................... i
LỜI CẢM ƠN ..................................Lỗi! Thẻ đánh dấu không được xác định.
LỜI CAM ĐOAN ............................Lỗi! Thẻ đánh dấu không được xác định.
CÁC KÝ HIỆU, CHỮ VIẾT TẮT .............................................................. v
DANH MỤC BẢNG BIỂU.......................................................................... vi
DANH MỤC HÌNH VẼ.............................................................................. vii
MỞ ĐẦU ....................................................................................................... 1
Chương 1
TỔNG QUAN VỀ SMART CARD VÀ THUẬT TOÁN AES
1.2. Smart Card ........................................................................................... 1
1.2.1. Khái niệm ...................................................................................... 1
1.2.2. Phân loại ........................................................................................ 3
1.2.3. Cấu tạo .......................................................................................... 3
1.3. Thuật toán AES .................................................................................... 6
1.3.1. Lược đồ mã hoá ............................................................................. 6
1.3.2. Lược đồ giải mã ........................................................................... 14
Chương 2
BẢO ĐẢM AN TOÀN CHO SMART CARD CÀI ĐẶT


THUẬT TOÁN AES
2.1. Vấn đề an ninh, an tồn của Smart Card ............................................. 17
2.2. Tấn cơng lên thuật toán AES-128 trên Smart Card ............................. 18
2.2.1. Tổng quan về tấn công lên Smart Card ........................................ 18
2.2.2. Tấn công phân tích điện năng tiêu thụ đơn giản (Simple Power
Analysis – SPA) .................................................................................... 20
2.2.3. Tấn cơng phân tích điện năng tiêu thụ vi sai (Differential Power
Analysis – DPA) .................................................................................... 24
ii


2.3. Giải pháp an toàn cho Smart Card cài đặt thuật toán AES-128 ........... 31
2.3.1. Giải pháp ẩn................................................................................. 32
2.3.2. Giải pháp mặt nạ .......................................................................... 34
2.3.3. Mặt nạ đầy đủ chống tấn công DPA lên thuật toán AES-128 trên
Smart Card ............................................................................................ 35
Chương 3
TÌM HIỂU, THỰC THI MẶT NẠ NHÂN CHỐNG TẤN CƠNG DPA
LÊN THUẬT TỐN AES-128 TRÊN SMART CARD
3.1. Phương pháp biến đổi mặt nạ nhân trên trường GF(28) ...................... 40
3.1.1. Nền tảng lý thuyết........................................................................ 40
3.1.2. Mặt nạ nhân thích nghi ................................................................ 42
3.1.3. Mặt nạ nhân đơn giản .................................................................. 43
3.2. Cài đặt, thực thi mặt nạ nhân .............................................................. 44
3.3. Sự an toàn và hiệu năng của mặt nạ nhân ........................................... 45
3.3.1. Sự an toàn lý thuyết ..................................................................... 45
3.3.2. Sự an toàn thực nghiệm ............................................................... 47
3.3.3. Hiệu năng của mặt nạ nhân .......................................................... 47
KẾT LUẬN ................................................................................................. 49
TÀI LIỆU THAM KHẢO .......................................................................... 50

PHỤ LỤC 1 ......................................Lỗi! Thẻ đánh dấu không được xác định.
PHỤ LỤC 2 ......................................Lỗi! Thẻ đánh dấu không được xác định.
PHỤ LỤC 3 ......................................Lỗi! Thẻ đánh dấu không được xác định.

iii


iv


CÁC KÝ HIỆU, CHỮ VIẾT TẮT
Viết tắt
AES

Tiếng Anh
Advanced Encryption
Standard

Tiếng Việt
Chuẩn mã hoá tiên tiến
Tấn cơng phân tích năng
lượng đơn giản

SPA

Simple Power Analysis

DPA

Differential Power Analysis


DUA

Device Under Attack

Thiết bị mật mã chịu tấn cơng

PC

Personal Computer

Máy tính cá nhân

RAM

Random Access Memory

Bộ nhớ truy xuất ngẫu nhiên

ROM

Read Only Memory

Bộ nhớ chỉ đọc

Electrically Erasable
EEPROM

Programmable Read Only
Memory


Tấn cơng phân tích năng
lượng vi sai

Bộ nhớ khơng mất dữ liệu khi
ngừng cung cấp nguồn điện

CPU

Central Processing Unit

Khối điều khiển trung tâm

DES

Data Encryption Standard

Chuẩn mã hoá dữ liệu

v


DANH MỤC BẢNG BIỂU
Bảng 1.1: Các định dạng thẻ điển hình ........................................................... 3
Bảng 1.2: Bảng S-Hộp, thay thế các giá trị theo byte {xy} (dạng hexa) ......... 8
Bảng 1.3: Bảng thay thế S-Hộp-1 .................................................................. 15
Bảng 3.1: Hiệu năng của mặt nạ nhân thích nghi .......................................... 48

vi



DANH MỤC HÌNH VẼ
Hình 1.1: Kích thước của các định dạng thẻ thường được sử dụng ................. 4
Hình 1.2: Smart Card có 8 điểm tiếp xúc ........................................................ 5
Hình 1.3: Lược đồ mã hoá AES...................................................................... 7
Hình 1.4: Phép SubBytes áp dụng S-Hộp vào mỗi byte của trạng thái ............ 8
Hình 1.5 : Hàm ShiftRows dịch vòng ba hàng cuối của mảng trạng thái ...... 10
Hình 1.6: Mơ tả thao tác MixColums ........................................................... 11
Hình 1.7: Phép AddRoundKey thực hiện XOR mỗi cột của trạng thái ......... 12
với một từ của lược đồ khóa ......................................................................... 12
Hình 1.8: Lược đồ giải mã AES ................................................................... 14
Hình 2.1: Điện năng tiêu thụ của vi điều khiển khi thực hiện thuật toán AES128 ............................................................................................................... 22
Hình 2.2: Vết điện năng tiêu thụ ................................................................... 23
Hình 2.3: Trace điện năng tiêu thụ từ Smart Card thi AES-128 .................... 24
Hình 2.4: Trace điện năng tiêu thụ tại vòng thứ nhất từ Smart Card thực thi
AES-128 ...................................................................................................... 25
Hình 2.5: Tính giá trị trung gian của AES .................................................... 25
Hình 2.6: Mơ hình đo thực nghiệm ............................................................... 28
Hình 2.7: Sơ đồ thực nghiệm tấn cơng DPA lên AES-128............................ 29
Hình 2.8: Kết quả tấn cơng DPA cho byte số 1 ............................................ 30
Hình 2.9: Kết quả tấn cơng DPA cho 16 bytes ............................................. 31
Hình 2.10: Sơ đồ mặt nạ đầy đủ cho thuật toán AES-128 ............................. 38
Hình 3.1 Biến đổi SuBytes ........................................................................... 41
Hình 3.2 Biến đổi SubByte cải tiến .............................................................. 41
Hình 3.3: Sơ đồ thực thi mặt nạ nhân thích nghi ........................................... 42
Hình 3.4: Sơ đồ thực thi mặt nạ nhân đơn giản ............................................. 44
vii


Hình 3.5: Trace tương quan của khoá đúng khi chưa có mặt nạ .................... 45

Hình 3.6: Trace tương quan của khoá đúng sau khi mặt nạ........................... 45

viii


MỞ ĐẦU
Chương 1: Tổng quan về Smart Card và thuật toán AES. Chương
này giới thiệu chung về Smart Card và thuật toán AES.
Chương 2: Bảo đảm an toàn cho Smart Card cài đặt thuật tốn
AES. Chuơng này tìm hiểu về vấn đề an tồn của Smart Card, tìm hiểu các
tấn cơng lên Smart Card có cài đặt AES, trong đó có tấn cơng DPA. Từ đó
đưa ra giải pháp chống tấn công DPA lên Smart Card cài đặt AES-128.
Chương 3: Tìm hiểu, thực thi mặt nạ nhân chống tấn cơng DPA
lên thuật tốn AES-128 trên Smart Card. Chương này tìm hiểu về nền
tảng lý thuyết của mặt nạ nhân, cài đặt thực thi và đánh giá sự an toàn, hiệu
năng của mặt nạ nhân thích nghi.

Chương 1
TỔNG QUAN VỀ SMART CARD VÀ THUẬT TOÁN AES
Trong chương này, đồ án sẽ giới thiệu tổng quan về thiết bị mật mã nói
chung, cụ thể là Smart Card. Đồng thời tìm hiểu về lược đồ mã hoá và giải mã
của thuật toán AES-128.
1.1. Thiết bị mật mã
1.2. Smart Card
1.2.1. Khái niệm
Smart Card là một thẻ nhựa có kích thước bỏ túi, bên trong có chứa một
mạch tích hợp có khả năng lưu trữ và xử lý thơng tin. Nó có thể đóng vai trò
như một thiết bị giúp thực hiện các tác vụ an tồn thơng tin. Smart Card được
đánh giá qua các tiêu chí sau:
+ Có thể tham gia vào một giao dịch điện tử tự động.

+ Không dễ giả mạo hay làm nhái.
+ Có thể lưu dữ liệu một cách an tồn.
+ Có thể chạy và tạo một loại thuật toán hay phương thức mã hóa
nào đó.
1


Smart Card không chứa thiết bị cung cấp nguồn, thiết bị hiển thị hay bàn
phím. Để tương tác với thế giới bên ngồi, nó được đặt trong hay gần thiết bị
chấp nhận thẻ, được nối với máy tính.
1.2.2. Phân loại
Dựa theo phương thức truy nhập thẻ thì Smart Card được chia thành 3
loại: thẻ tiếp xúc, thẻ không tiếp xúc và thẻ lưỡng tính.
- Thẻ tiếp xúc là loại thẻ có một vùng tiếp xúc, thường dễ nhận diện
bởi linh kiện chip (màu vàng hoặc bạc) trên thân thẻ. Chip này cho phép đọc,
ghi thông tin khi bề mặt chip tiếp xúc trực tiếp với đầu đọc thẻ. Khi đưa thẻ
vào đầu đọc, chip sẽ giao tiếp với các tiếp điểm điện tử để đọc/ ghi các thông
tin lên chip.
- Thẻ không tiếp xúc là loại thẻ mà chip trên nó liên lạc với đầu đọc thẻ
thơng qua cơng nghệ nhận dạng sóng vơ tuyến RFDI (Radio Frequency
Indentification) với tốc độ trao đổi dữ liệu từ 106÷848 Kbit/s, thân thẻ chứa
chip và dây dẫn bên trong làm ăngten. Ăngten có nhiệm vụ làm khối trung gian
thực hiện thu/phát sóng vơ tuyến giữa đầu đọc thẻ với chip trên thẻ. Trong thẻ
có một cuộn cảm có khả năng dị tín hiệu vơ tuyến trong một dải tần nhất định,
chỉnh lưu tín hiệu và dùng nó để cung cấp năng lượng hoạt động cho chip trên
thẻ. Tốc độ xử lý của thẻ không tiếp xúc nhanh hơn so với thẻ tiếp xúc, vì vậy
thẻ khơng tiếp xúc thường được ứng dụng tại những nơi cần thao tác nhanh.
- Thẻ lưỡng tính là thẻ kết hợp các đặc điểm của thẻ tiếp xúc và thẻ không
tiếp xúc. Dữ liệu được truyền bằng phương pháp tiếp xúc trực tiếp với đầu đọc
hoặc qua tín hiệu vô tuyến.

1.2.3. Cấu tạo
1.2.3.1. Định dạng thẻ
Các định dạng Smart Card điển hình được tóm tắt trong bảng sau:
Bảng 1.1: Các định dạng thẻ điển hình
Định dạng thẻ

ID-1

Chiều dài

Chiều rộng

(mm)

(mm)

85,6

54
3


ID-00

66

33

Visa Mini


65,6

49

Plug-in, ID-000

25

15

Mini-UICC

15

12

Các loại thẻ phổ biến nhất được sử dụng hiện nay đều có một đặc điểm
chung, đó là độ dày 0,76 mm. [6]

Hình 1.1: Kích thước của các định dạng thẻ thường được sử dụng
- Định dạng thẻ được sử dụng phổ biến nhất, cũng là định dạng được biết
đến nhiều nhất, là ID-1. Trên thực tế tất cả các thẻ tín dụng và các hình thức
thẻ thanh toán khác được thực hiện trong định dạng này.
- Định dạng trình cắm cho thẻ thơng minh được sử dụng trong các ứng
dụng viễn thông di động là ID-000. Đây là định dạng tiêu chuẩn cho thẻ được
sử dụng trong điện thoại di động.
- Định dạng Mini-UICC được xác định ứng dụng cho lĩnh vực mạng di động.
- Định dạng Visa Mini được dự định để đáp ứng nhu cầu của khách hàng
về thẻ với kích thước nhỏ nhất có thể.
Thân thẻ thường không chỉ là vật mang cho mô-đun chip. Nó cũng bao gồm

thơng tin cho người dùng và các yếu tố bảo mật để bảo vệ chống giả mạo.

4


1.2.3.2. Các điểm tiếp xúc

Hình 1.2: Smart Card có 8 điểm tiếp xúc
- VCC: Đầu vào cung cấp nguồn.
- RST: Là tín hiệu reset cung cấp từ máy đọc hoặc dùng tổ hợp với mạch
điều khiển reset bên trong.
- CLK: Cổng xung tín hiệu.
- GND: Đầu nối đất.
- VPP: Đầu vào điện áp, dùng để cấp cho EEPROM hoạt động.
- I/O: Dữ liệu ra hay vào của chip nằm bên trong thẻ.
- Các điểm RFU dành cho các ứng dụng trong tương lai.
1.2.3.3. CPU
CPU (Central Processing Unit – Khối điều khiển trung tâm) là khối thực
hiện nhiệm vụ điều khiển các khối khác, xử lý thông tin và thực hiện các phép
tính. Cấu tạo của CPU gồm một bộ điều khiển đảm nhận những chu trình cơ
bản của CPU như đọc vào một lệnh chỉ thị, giải mã lệnh, lưu trữ, thực hiện xử
lý logic và số học, kiểm soát trạng thái thanh ghi và quản lý bộ nhớ.
1.2.3.4. Bộ đồng xử lý
Là vi mạch điện tử được thiết kế một cách đặc biệt để thực hiện tối ưu
các phép tính xử lý số lớn. Chức năng của vi mạch chuyên dụng này thường là
thực thi hàm mã hoá/giải mã trong các giao thức dùng Smart Card.
1.2.3.5. Hệ thống bộ nhớ của Smart Card
Smart Card gồm ba loại bộ nhớ ROM, EEPROM, RAM.
5



ROM được dung để lưu trữ mã máy, dữ liệu và chỉ có thể đọc. Thơng tin
trên ROM có thể được lưu trữ ngay cả khi không cấp nguồn nuôi. ROM của
Smart Card chứa hệ điều hành cũng như dữ liệu và mã nguồn chương trình cố
định. Dung lượng cực đại của ROM chỉ vào khoảng 256KB.
EEPROM là một loại bộ nhớ chỉ đọc cho phép nạp/xoá bằng điện, thông
tin trên bộ nhớ này được lưu trữ ngay cả khi ngắt nguồn. Dung lượng trên
EEPROM mở rộng đến khoảng vài trăm KB.
RAM là bộ nhớ dùng để lưu trữ những thơng tin cần xử lý nhanh có tính
tạm thời, khơng được lưu lại khi nguồn nuôi bị tắt. RAM chỉ phục vụ cho bộ vi
xử lý, các yêu cầu bên ngồi khơng thể truy cập trực tiếp vào RAM. Dung lượng
RAM khơng lớn, khoảng vài KB.
1.3. Thuật tốn AES
Thuật toán mã hóa AES là một thuật toán mã khối đối xứng sử dụng khóa
là một dãy nhị phân có độ dài 128, 192 hoặc 256 bits để xử lý một khối có độ
dài 128 bits [3]. Thuật toán mã hóa AES được thiết kế bởi hai nhà mật mã học
người Bỉ: Joan Daemen và Vincent Rịjmen trong một cuộc thi nhằm xây dựng
một chuẩn mã hóa mới thay thế cho chuẩn mã hóa tiền nhiệm DES do Viện tiêu
chuẩn và công nghệ quốc gia (NIST) phát động vào năm 1997. Thuật toán AES
được chọn có thiết kế đơn giản, khơng dựa trên kiến trúc của DES. Hơn nữa,
AES có sự kết hợp tốt nhất về an toàn, về kịch bản thực hiện, hiệu quả và khả
năng thực hiện. Độ an tồn của thuật toán dựa trên khơng gian khóa rất lớn và
nó chống lại được các cuộc tấn cơng đã biết.
1.3.1. Lược đồ mã hoá
Tại thời điểm bắt đầu phép mã hóa, đầu vào được sao chép vào mảng
trạng thái. Sau phép cộng khóa vịng khởi đầu, mảng trạng thái được biến đổi
bằng cách thực thi một hàm vòng liên tiếp với số lần vòng lặp 10, 12 hoặc 14
(phụ thuộc vào độ dài khóa là 128, 192 hay 256), vịng cuối cùng khác biệt
khơng đáng kể so với Nr − 1 vòng đầu tiên. Trạng thái cuối cùng được chuyển
thành đầu ra. Hàm vịng được tham số hóa bằng cách sử dụng một lược đồ khóa

là mảng một chiều chứa các byte nhận từ phép mở rộng khóa.
Plaintext

6
Roundkey(0)

XOR


Hình 1.3: Lược đồ mã hố AES
Các phép biến đổi cụ thể trong lược đồ mã hóa bao gồm: SubBytes,
ShiftRows, MixColumns và AddRoundKey dùng để xử lý trạng thái.
Tất cả các vịng trong lược đồ mã hóa là giống như nhau, chỉ trừ vịng
cuối cùng, vịng này khơng có phép biến đổi MixColumns.
- Phép biến đổi SubBytes
Phép biến đổi SubBytes là một phép thay thế phi tuyến được thực hiện
độc lập trên mỗi byte của trạng thái sử dụng một bảng thay thế (S-Hộp). S-Hộp
này được tạo ra từ hai phép biến đổi khả nghịch trong trường GF(28 ) như sau:
Thứ nhất, byte 𝑠𝑖,𝑗 được biến đổi thành nghịch đảo của nó đối với phép nhân
trên trường hữu hạn GF(28 ), trong đó phần tử {00} giữ ngun khơng thay đổi:
Thứ hai, byte kết quả được biến đổi bởi ánh xạ affine như sau:
𝑏𝑖′ = 𝑏𝑖 ⨁ 𝑏(𝑖+4)𝑚𝑜𝑑 8 ⨁ 𝑏(𝑖+5)𝑚𝑜𝑑 8 ⨁ 𝑏(𝑖+6)𝑚𝑜𝑑 8 ⨁ 𝑏(𝑖+7)𝑚𝑜𝑑 8 ⨁ 𝑐𝑖
7


Trong đó 0≤i<8 là bit thứ i của byte tương ứng và ci là bit thứ i của byte
c với giá trị {63} hay {01100011}. Minh họa cho biến đổi này như sau:

 b'0 
  1

 b1'  
 '  1
 b 2  1
 ' 
 b3  = 1
 b'  1
 4 
 b'  0
 5  0
 b'6  
 '  0
 b7 

0
1
1
1
1
1
0
0

0
0
1
1
1
1
1
0


0
0
0
1
1
1
1
1

1
0
0
0
1
1
1
1

1
1
0
0
0
1
1
1

1
1

1
0
0
0
1
1

1   b0  1 
1   b1  1 

 
1   b 2  0 
   
1   b3  0 
+
0   b 4  0 
   
0   b5  1 
0   b6  1 
   
1   b7  0 

Ánh xạ affine là ánh xạ có nghịch đảo. Byte kết quả là giá trị mới s’i,j
trong trạng thái.

Hộp - S

s0,0

s0,1 s0,2 s0,3


s '0,0 s '0,1 s '0,2 s '0,3

s1,0

s1,1

s2,0

sr ,c
s2,1 s2,2 s2,3

s '1,0 s '1,1 s '1,2 s '1,3
s 'r ,c
s '2,0 s '2,1 s '2,2 s '2,3

s3,0

s3,1 s3,2 s3,3

s '3,0 s '3,1 s '3,2 s '3,3

s1,2

s1,3

Hình 1.4: Phép SubBytes áp dụng S-Hộp vào mỗi byte của trạng thái
S-Hộp thuận sử dụng trong phép thay thế các byte được trình bày ở dạng
thập lục phân như Bảng 1.2. Ví dụ, nếu 𝑠1,1 = {53}, thì giá trị thay thế được
xác định bởi vị trí giao của hàng số “5” và cột số “3” trong hình. Byte kết quả

thu được là {ed}.
Bảng 1.2: Bảng S-Hộp, thay thế các giá trị theo byte {xy} (dạng hexa)
8


x
0

1

2

3

4

5

6

7

8

9

a

b


c

d

e

f

0 63 7c 77 7b f2 6b 6f c5 30 10 67 2b fe d7 ab 76
1 ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0
2 b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15
3 04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75
4 09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84
5 53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf
6 d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8
7 51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff

f3 d2

y
8 cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73
9 60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db
a e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79
b e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08
c ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a
d 70 3e b5 66 48 03 f6 0e 61 35 57 b9 85 c1 1d 9e
e e1 f8 98 11 69 d9 e8 94 9b 1e 87 e9 ce 55 28 df
f 8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16
- Phép biến đổi ShiftRows


9


ShiftRows ()

sr ,0 sr ,1 sr ,2 sr ,3

s 'r ,0 s 'r ,1 s 'r ,2 s 'r ,3

s

s’

s0,0 s0,1 s0,2 s0,3

s '0,0 s '0,1 s '0,2 s '0,3

s1,0 s1,1 s1,2 s1,3

s '1,0 s '1,1 s '1,2 s '1,3

s2,0 s2,1 s2,2 s2,3

s '2,0 s '2,1 s '2,2 s '2,3

s3,0 s3,1 s3,2 s3,3

s '3,0 s '3,1 s '3,2 s '3,3

Hình 1.5 : Hàm ShiftRows dịch vòng ba hàng cuối của mảng trạng thái

Phép biến đổi ShiftRows thực hiện việc biến đổi trên các hàng của mảng
trạng thái. Trong thao tác ShiftRows, mỗi dòng của trạng thái hiện hành được
dịch chuyển xoay vịng đi một số vị trí. Byte Sr,c tại dịng r cột c sẽ được dịch
chuyển theo cơng thức sau:

𝑠𝑟,𝑐
= 𝑠𝑟,(𝑐+𝑠ℎ𝑖𝑓𝑡(𝑟,𝑁𝑏 ))𝑚𝑜𝑑𝑁𝑏 với 0 < 𝑟 < 8 và 0 ≤ 𝑐 < 𝑁𝑏 .

Trong đó, giá trị dịch chuyển 𝑠ℎ𝑖𝑓𝑡(𝑟, 𝑁𝑏 ) phụ thuộc vào số lượng hàng
r, như sau: 𝑠ℎ𝑖𝑓𝑡 (1,4) = 1; 𝑠ℎ𝑖𝑓𝑡 (2,4) = 2; 𝑠ℎ𝑖𝑓𝑡 (3,4) = 3 (𝑣ớ𝑖 𝑁𝑏 = 4).
Kết quả của việc này là chuyển các byte từ vị trí thấp của hàng (là các
giá trị thấp của c trong một hàng đã cho) lên vị trí cao của hàng (các giá trị cao
của c trong một hàng đã cho).
- Phép biến đổi MixColumns
Mô tả thao tác MixColumns trên các cột trạng thái như sau:

10


MixColumns ()

s0,0
s1,0

s2,0
s3,0

s 0 ,c
s1,c


s 2 ,c
s 3,c

s0,2 s0,3

s '0,0

s1,2

s1,3

s '1,0

s2,2 s2,3

s '2,0

s3,3

s '3,0

s3,2

s '0 , c
s '1, c

s '2 , c
s '3, c

s '0,2 s '0,3


s '1,2 s '1,3
s '2,2 s '2,3

s '3,2 s '3,3

Hình 1.6: Mơ tả thao tác MixColums
Bốn byte trong từng cột được kết hợp lại theo một phép biến đổi tuyến
tính khả nghịch. Mỗi khối 4 byte đầu vào sẽ cho một khối 4 byte ở đầu ra với
tính chất là mỗi byte ở đầu vào đều ảnh hưởng tới cả 4 byte đầu ra.
Cùng với bước ShiftRows và Mixcolumns đã tạo ra tính chất khuếch
tán cho thuật toán. Mỗi cột được xem như các đa thức trên trường GF(28 ) và
được nhân theo modulo (𝑥 4 + 1) với một đa thức cố định a(x) sau:
𝑎 (𝑥 ) = {03}𝑥 3 + {01}𝑥 2 + {01}𝑥 + {02}
Thao tác này biểu diễn dưới dạng ma trận như sau:

𝑠0,𝑐
02𝐻

𝑠1,𝑐
01
=[ 𝐻

01𝐻
𝑠2,𝑐

03𝐻
[𝑠3,𝑐
]


03𝐻
02𝐻
01𝐻
01𝐻

01𝐻
03𝐻
02𝐻
01𝐻

01𝐻 𝑠0,𝑐
01𝐻 𝑠1,𝑐
] [ ] với 0 ≤ 𝑐 < 𝑁𝑏
03𝐻 𝑠2,𝑐
02𝐻 𝑠3,𝑐

11


Cơng thức tính toán cụ thể cho phép MixColumns như sau:

𝑆0,𝑐
= {02}. 𝑆0,𝑐 ⊕ {03}. 𝑆1,𝑐 ⊕ {01}. 𝑆2,𝑐 ⊕ {01}. 𝑆3,𝑐

𝑆1,𝑐
= {01}. 𝑆0,𝑐 ⊕ {02}. 𝑆1,𝑐 ⊕ {03}. 𝑆2,𝑐 ⊕ {01}. 𝑆3,𝑐

𝑆2,𝑐
= {01}. 𝑆0,𝑐 ⊕ {01}. 𝑆1,𝑐 ⊕ {02}. 𝑆2,𝑐 ⊕ {03}. 𝑆3,𝑐


𝑆3,𝑐
= {03}. 𝑆0,𝑐 ⊕ {01}. 𝑆1,𝑐 ⊕ {01}. 𝑆2,𝑐 ⊕ {02}. 𝑆3,𝑐

- Phép biến đổi AddRoundKeys

l = round  Nb

s0,0
s1,0

s2,0
s3,0

s 0,c
s1,c

s 2,c
s 3,c

s0,2 s0,3

wi +c


s1,2 s1,3

s '0,0
s '1,0

w i+1 w i+ 2 w i+3

s2,2 s2,3

s '2,0

s3,2 s3,3

s '3,0

s '0, c
s '1, c

s '2, c
s '3, c

s '0,2 s '0,3

s '1,2 s '1,3
s '2,2 s '2,3

s '3,2 s '3,3

Hình 1.7: Phép AddRoundKey thực hiện XOR mỗi cột của trạng thái
với một từ của lược đồ khóa
Phép biến đổi AddRoundKey(State, RoundKey) gọi là phép cộng khóa.
Trong phép biến đổi này, một khóa vịng được cộng với trạng thái bằng một
phép toán XOR đơn giản trên bit. Mỗi khóa vịng bao gồm 𝑁𝑏 từ nhận được
từ lược đồ khóa. 𝑁𝑏 từ này được cộng với các cột của trạng thái sao cho:





[𝑠0,𝑐
, 𝑠1,𝑐
, 𝑠2,𝑐
, 𝑠3,𝑐
] = [𝑠0,𝑐 , 𝑠1,𝑐 , 𝑠2,𝑐 , 𝑠3,𝑐 ]⨁[𝑤𝑟𝑜𝑢𝑛𝑑 + 𝑁𝑏 + 𝑐]

Trong đó, [𝑤𝑖 ] là các từ của lược đồ khóa, và 0 ≤ 𝑟𝑜𝑢𝑛𝑑 ≤ 𝑁𝑟 . Đối với
phép mã hóa, phép cộng khóa vịng ban đầu xảy ra khi round = 0, trước khi
áp dụng lần đầu hàm vòng. Việc áp dụng phép biến đổi của thuật toán xảy ra
khi 1 ≤ 𝑟𝑜𝑢𝑛𝑑 ≤ 𝑁𝑟 . Các thao tác của phép biến đổi được minh họa ở Hình 1.7,
trong đó 𝑙 = 𝑟𝑜𝑢𝑛𝑑 ∗ 𝑁𝑏 .

12


- Mở rộng khóa
Thuật toán AES nhận vào một khóa mã K và thực hiện phép mở rộng
khóa để tạo ra một tập khóa. Phép mở rộng khóa tạo ra tổng số 𝑁𝑏 (𝑁𝑟 + 1) từ:
thuật toán yêu cầu một tập khởi tạo gồm 𝑁𝑏 từ và mỗi vòng trong số 𝑁𝑟 vòng
đòi hỏi 𝑁𝑏 từ làm dữ liệu khóa đầu vào. Lược đồ khóa cuối cùng là một mảng
tuyến tính các từ 4 byte ký hiệu là [𝑤𝑖 ], với 0 ≤ 𝑖 ≤ 𝑁𝑏 (𝑁𝑟 + 1). Quy trình mở
rộng khóa như sau:
Hàm SubWord(): là một hàm nhận một từ 4 byte làm đầu vào và áp dụng
S-Hộp đối với mỗi byte để tạo thành đầu ra là một từ.
Hàm RotWord() nhận một từ [𝑎0 , 𝑎1 , 𝑎2 , 𝑎3 ] làm đầu vào, thực hiện phép
hoán vị tuần hoàn và cho kết quả đầu ra là một từ [𝑎1, 𝑎2 , 𝑎3 , 𝑎0 ].
Mảng từ hằng số vòng Rcon[i] chứa các giá trị được cho bởi
[𝑥 𝑖−1, {00}, {00}, {00}], với 𝑥 𝑖−1 là lũy thừa của x (x được ký hiệu là {02})
trong trường 𝐺𝐹(28 ) (chú ý i bắt đầu từ 1 chứ khơng phải từ 0).

𝑁𝑘 từ đầu tiên của khóa mở rộng được lấp đầy bởi khóa mã. Mỗi từ
tiếp sau đó [𝑤𝑖 ] đều tương đương với phép XOR của từ trước đó

w[i − 1] với

từ trước đó 𝑁𝑘 vị trí ( w[i − Nk ] ). Đối với các từ ở các vị trí là bội số của 𝑁𝑘
thì một phép biến đổi được áp dụng cho

w[i − 1] trước khi được XOR, tiếp

đó một phép XOR với hằng của vòng Rcon[i] được áp dụng. Phép biến đổi
này bao gồm một phép dịch vòng của các byte trong một từ (RotWord()),
tiếp đến áp dụng một phép tra bảng cho cả bốn byte của từ (SubWord()).
Một chú ý quan trọng là phép mở rộng khóa cho các khóa mã 256 bits
(𝑁𝑘 = 8) có sự khác biệt khơng đáng kể so với phép mở rộng khóa cho các
khóa mã 128 và 192 bits. Nếu 𝑁𝑘 = 8 và (i − 4) là bội số của 𝑁𝑘 thì hàm
SubWord() được áp dụng cho

w[i − 1] trước khi áp dụng XOR.

Phép tạo các hằng: 𝑅𝑐𝑜𝑛[𝑖]
𝑅𝑐𝑜𝑛[𝑖] = (𝑅𝑐[𝑖], ’00’, 00’, ’00’) với 𝑅𝑐[1] = 01
𝑅𝑐[𝑖] = 02. 𝑅𝑐[𝑖 − 1]; (𝑖  2)

13


1.3.2. Lược đồ giải mã
Ciphertext


Roundkey(Nr)

XOR

InShiftRows

InSubBytes

Roundkey(i)

For i=1
to Nr - 1

XOR

InMixColumns
InShiftRows

InSubBytes

Roundkey(0)

Final
Round

XOR

Plaintext

Hình 1.8: Lược đồ giải mã AES

Các phép biến đổi trong lược đồ mã hóa ở trên có thể được đảo ngược và
sau đó thực thi theo chiều ngược lại nhằm tạo ra lược đồ giải mã trực tiếp của thuật
toán AES. Các phép biến đổi sử dụng trong lược đồ giải mã là: InvShiftRows,
InvSubBytes, InvMixColumns và biến đổi nghịch đảo của AddRoundKey.
- Phép biến đổi nghịch đảo AddRoundKey
Phép biến đổi AddRoundKey là một phép biến đổi thuận nghịch, vì nó
chỉ áp dụng một phép toán XOR nên nó được thực hiện như nhau ở lược đồ mã
hóa và lược đồ giải mã.

14


- Phép biến đổi InvShiftRows
InvShiftRows là biến đổi ngược của ShiftRows. Các byte trong ba hàng
cuối cùng của trạng thái được dịch vòng theo số byte khác nhau. Hàng đầu
tiên khơng thực hiện chuyển dịch, ba dịng cuối cùng được dịch đi một khoảng
(Nb – C1, Nb – C2, Nb – C3) byte một cách tượng ứng sao cho byte ở vị trí j
trong dịng i chuyển tới vị trí [(j + Ci) mod Nb].
- Phép biến đổi InvSubByte
Phép biến đổi InvSubByte là nghịch đảo của phép biến đổi SubByte,
trong đó sử dụng một S-Hộp nghịch áp dụng cho mỗi byte của trạng thái.
S-Hộp-1 sử dụng trong phép biến đổi InvSubBytes được cho như sau:
Bảng 1.3: Bảng thay thế S-Hộp-1
x
0

1

2


3

4

5

6

7

8

9

a

b

c

d

e

f

0 52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fd
1 7c e3 39 82 9b 2f

ff 87 34 8e 43 44 c4 de e9 cb


2 54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e
3 08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25
4 72 f8 f6 64 86 68 98 16 d4 4a 5c cc 5d 65 b6 92
5 6c 70 48 50 fd 3d b9 da 5e 15 46 57 a7 8d 9d 84
6 90 d8 ab 00 8c bc d3 0a f7 a4 58 05 b8 b3 45 06
y

7 d0 2c 1e 8f ca 3f 0f 02 c1 aa bd 03 01 13 8a 6b
8 3a 91 11 41 4f 67 dc ea 97 f2 cf c3 f0 b4 e6 73
9 96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e
a 47 f1 1a 71 1d 29 c6 89 6f b7 62 0e aa 18 be 1b
b

fc 56 3e 4b 6c d2 79 20 9a db c0 fe 78 cb 5a f4

c 1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f
d 60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef
e a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61
f 17 2b 04 7e ba 77 d6 26 1e 69 14 55 21 0c 7d 63

15


- Phép biến đổi InvMixColumns
Phép biến đổi InvMixColumns là nghịch đảo của phép biến đổi
MixColumns. InvMixColumns thực hiện trên từng cột của trạng thái, xem mỗi
cột như một đa thức có bốn hạng tử. Các cột được xem là các đa thức trên
trường GF(28 ) và được nhân theo modulo (𝑥 4 + 1) với một đa thức nghịch
đảo của 𝑎(𝑥) là 𝑎−1(𝑥), tức là:

𝑎−1(𝑥 ) = {0𝑏}𝑥 3 + {0𝑑 }𝑥 2 + {09}𝑥 + {0𝑒}
điều này có thể biểu diễn dưới dạng một phép nhân ma trận:
𝑠 ′ (𝑥 ) = 𝑎 −1(𝑥 ). 𝑠(𝑥 ) 𝑚𝑜𝑑 (𝑥 4 + 1)
Phép toán này có thể được viết như một phép nhân ma trận. Biểu diễn
ma trận của phép nhân này như sau:

𝑆0,𝑐
0𝑒𝐻

𝑆1,𝑐
09
=[ 𝐻

0𝑑𝐻
𝑆2,𝑐

0𝑏𝐻
[𝑆3,𝑐
]

0𝑏𝐻
0𝑒𝐻
09𝐻
0𝑑𝐻

0𝑑𝐻
0𝑏𝐻
0𝑒𝐻
09𝐻


09𝐻 𝑆0,𝑐
0𝑑𝐻 𝑆1,𝑐
]
0𝑏𝐻 𝑆2,𝑐
0𝑒𝐻 [𝑆3,𝑐 ]

Như vậy kết quả của các byte trong mỗi cột được thay thế như sau:

𝑆0,𝑐
= {0𝑒}. 𝑆0,𝑐 ⊕ {0𝑏}. 𝑆1,𝑐 ⊕ {0𝑑}. 𝑆2,𝑐 ⊕ {09}. 𝑆3,𝑐

𝑆0,𝑐
= {09}. 𝑆0,𝑐 ⊕ {0𝑒}. 𝑆1,𝑐 ⊕ {0𝑏}. 𝑆2,𝑐 ⊕ {0𝑑}. 𝑆3,𝑐

𝑆0,𝑐
= {0𝑑}. 𝑆0,𝑐 ⊕ {09}. 𝑆1,𝑐 ⊕ {0𝑒}. 𝑆2,𝑐 ⊕ {0𝑏}. 𝑆3,𝑐

𝑆0,𝑐
= {0𝑏}. 𝑆0,𝑐 ⊕ {0𝑑}. 𝑆1,𝑐 ⊕ {09}. 𝑆2,𝑐 ⊕ {0𝑒}. 𝑆3,𝑐

Kết luận chương 1:
Chương 1 của đồ án đã trình bày tổng quan về Smart Card và thuật toán
mã hoá AES-128. Smart Card là một thiết bị mật mã đang ngày càng được sử
dụng rộng rãi tuy nhiên nó cũng có những ưu, nhược điểm nhất định. Các nội
dung đã nghiên cứu ở chương này sẽ làm tiền đề để tìm hiểu các giải pháp bảo
đảm an toàn cho Smart Card cài đặt thuật toán AES ở chương sau.

16



Chương 2
BẢO ĐẢM AN TOÀN CHO SMART CARD CÀI ĐẶT
THUẬT TOÁN AES
Các loại thiết bị mật mã đang đứng trước rất nhiều nguy cơ tấn công
như: Tấn công bản mã, tấn cơng bản rõ, tấn cơng tốn học... Các loại tấn cơng
này tốn kém nhiều về chi phí, nguồn lực và mất rất nhiều thời gian nhưng kết
quả và mức độ thành cơng cịn nhiều hạn chế.
Trên thực tế, các thuật tốn mật mã ln được thực hiện trong phần mềm
hoặc phần cứng của các thiết bị vật lý. Những tương tác vật lý có thể đem lại
thơng tin có ích cho phân tích mã. Loại thông tin này được gọi là thông tin kênh
kề (side-channel information), loại tấn công khai thác thông tin kênh kề được
gọi là tấn công kênh kề (side-channel attacks). Những dạng tấn công kênh kề
điển hình có thể kể là tấn cơng phân tích timing, tấn cơng phân tích lỗi, tấn
cơng phân tích năng lượng tiêu thụ,…
Chương 2 của đồ án sẽ tìm hiểu về tấn cơng phân tích năng lượng tiêu
thụ. Tấn cơng phân tích năng lượng tiêu thụ bao gồm: tấn cơng phân tích năng
lượng tiêu thụ đơn giản (SPA) và tấn cơng phân tích năng lượng vi sai (DPA).
Tấn cơng DPA được trình bày ở chương này là DPA nói chung, khơng cụ thể
là DPA bậc nhất (FO DPA) hay DPA bậc cao (HO DPA).
2.1. Vấn đề an ninh, an toàn của Smart Card
Để đáp ứng yêu cầu nhiệm vụ ngày một đa dạng của công tác Cơ yếu,
một số thiết bị mật mã nhỏ gọn, linh hoạt như Smart Card ngày càng được sử
dụng phổ biến. Smart Card cũng có cả điểm mạnh và điểm yếu. Với kích thước
chip chỉ 9mm2 thì bộ xử lý và bộ nhớ của Smart Card yếu hơn của PC nhiều và
hồn tồn khơng thích hợp nếu cần xử lý lượng lớn dữ liệu hay các tác vụ đòi
hỏi nghiêm ngặt về thời gian. Ưu điểm chính của Smart Card gồm an tồn
chống truy cập trái phép, sự chuẩn hoá chính xác và làm việc chắc chắn tin cậy.
Bên cạnh đó, Smart Card cũng có những điểm yếu, đó là:
- Smart Card dễ bị mất, dễ hư hỏng: Kích thước Smart Card nhỏ, nhẹ nên
dễ bị mất nếu người sử dụng không cẩn thận. Thẻ nhựa chứa chip vi xử lý khá

dẻo, dễ uốn nên do đó chip càng lớn thì càng dễ bị hỏng.
17


- Thẻ không phải thiết bị độc lập mà phải dựa vào hệ thống khác. Smart
Card khơng có nguồn pin bên trong, khơng có giao diện trực tiếp với người
dùng mà nó phụ thuộc vào bộ đọc thẻ bên ngồi, điều này sẽ dễ dàng cho kẻ
tấn công đo mức điện năng tiêu thụ với một bộ đọc giả. Đây chính là điểm yếu
để kẻ tấn cơng thực hiện tấn cơng phân tích năng lượng tiêu thụ.
- Smart Card khơng đặt một clock bên trong nó, nhịp clock cũng được
cung cấp từ bên ngoài. Điều này cho phép kẻ tấn cơng đo thời gian hoạt động
của thẻ với độ chính xác cao.
- Smart Card cịn có nguy cơ chịu tấn công mạch điện (đây là dạng tấn
công probing): Giả thiết người tấn cơng bằng cách nào đó có được thiết bị mật
mã, và họ muốn khai thác thiết bị đó để lấy được các thuật toán mật mã trong
các con chip của thiết bị đó.
Smart Card cung cấp các dịch vụ bảo mật bên trong thẻ bằng nhiều loại
thuật toán mã hóa được sử dụng rộng rãi như DES, 3DES, RSA, AES, ECC,....
Một trong những cách phổ biến nhất để giảm các nguy cơ tấn cơng Smart Card
đó là sử dụng các giao thức mã hoá mạnh. Smart Card hiện nay thường được
cài đặt AES bởi AES là một thuật toán mã hoá mạnh, thiết kế đơn giản nhưng
vẫn đảm bảo an toàn, phù hợp với thiết bị nhỏ gọn như Smart Card.
2.2. Tấn cơng lên thuật tốn AES-128 trên Smart Card
2.2.1. Tổng quan về tấn công lên Smart Card
2.2.1.1. Tấn cơng dựa vào kiểm soát quá trình tính toán
Dựa vào kiểm soát quá trình tính toán có thể chia ra: tấn công chủ động
và tấn công bị động.
Tấn công chủ động: Là can thiệp trực tiếp thay đổi cấu trúc thiết bị mật
mã, các đầu vào, nhằm mục đích làm các thiết bị này làm việc khơng bình
thường qua đó khám phá ra khóa bí mật.

Trong khi thực hiện tấn cơng, kẻ tấn cơng có thể gây ra một số ảnh hưởng
tới hệ thống đích. Mã thám có thể thu thập được thông tin cần thiết từ sự thay
đổi trong hoạt động của hệ thống do tác động bởi tấn cơng. Điển hình của loại
tấn cơng này là: tấn công vi thăm, tấn công đảo ngược thiết kế,…
18


×