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

NGHIÊN CỨU TẤN CÔNG DPA VÀO THUẬT TOÁN AEGIS TRONG JAVACARD

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.65 MB, 58 trang )

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

LUẬN VĂN THẠC SĨ
NGHIÊN CỨU TẤN CƠNG DPA VÀO THUẬT TỐN
AEGIS TRONG JAVACARD

Nguyen Thanh Long

Hà Nội - 2023


MỤC LỤC
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.
MỤC LỤC .......................................................................................................... i
DANH MỤC TỪ VIẾT TẮT ............................................................................ iii
DANH MỤC HÌNH VẼ .................................................................................... iv
LỜI MỞ ĐẦU .................................................................................................... 1
CHƯƠNG 1: THỰC THI THUẬT TOÁN AEGIS VÀO JAVACARD ............. 2
1.1 Khái quát về JavaCard và kỹ thuật lập trình Applet .............................. 2
1.1.1 Khái quát về JavaCard ................................................................. 2
1.1.2 Kỹ thuật lập trình Applet ............................................................. 6
1.2 Thực thi thuật tốn AEGIS vào JavaCard ............................................. 8
1.2.1 Lập trình thuật tốn AEGIS ....................................................... 10
1.2.2 Biên dịch nhúng thuật toán AEGIS vào JavaCard ...................... 17
1.2.3 Xây dựng giao diện mã hóa và giải mã ...................................... 18
1.3 Kết luận chương 1 .............................................................................. 19
CHƯƠNG 2: NGHIÊN CỨU XÂY DỰNG MODULE PHÂN TÍCH TẤN
CƠNG DPA ..................................................................................................... 20
2.1 Kỹ thuật tấn công DPA ...................................................................... 20
2.1.1 Định nghĩa tấn công DPA .......................................................... 21


2.1.2 Mục tiêu của tấn công DPA ....................................................... 22
2.1.2 Các bước tấn công ..................................................................... 23
2.2 Mơ hình hóa các tiến trình phân tích vệt năng lượng tiêu thụ trong
MATLAB ................................................................................................. 28
2.2.1 Tập huấn luyện ứng với khóa xác định ...................................... 30
2.2.2 Tập huấn luyện ứng với khóa chưa xác định .............................. 30
2.3 Xây dựng module phân tích tấn cơng DPA ......................................... 31
i


2.4 Kết luận chương 2 .............................................................................. 35
CHƯƠNG 3: THỰC HIỆN TẤN CƠNG DPA VÀO THUẬT TỐN AEGIS
TRONG JAVACARD ...................................................................................... 36
3.1 Phân tích tập dữ liệu tấn cơng DPA vào thuật toán AEGIS trong
JavaCard................................................................................................... 36
3.1.1 Thiết lập phép đo ....................................................................... 36
3.1.2 Biên dịch chương trình đo các vệt năng lượng ........................... 38
3.1.3 Phân tích các dữ liệu tấn cơng.................................................... 41
3.2 Đề xuất biện pháp bảo vệ.................................................................... 43
3.2.1 Biện pháp ẩn .............................................................................. 44
3.2.2 Biện pháp mặt nạ ....................................................................... 46
3.3 Kết luận chương 3 .............................................................................. 50
KẾT LUẬN ...................................................................................................... 51
TÀI LIỆU THAM KHẢO ................................................................................ 52

ii


DANH MỤC TỪ VIẾT TẮT
STT


Từ viết tắt

Cụm từ tiếng Anh

Tiếng Việt

1

AD

Associated Data

Dữ liệu liên kết

2

AEGIS

A Fast Authenticated
Encryption Algorithm

Thuật toán mã hóa xác
thực nhanh

3

AES

Advanced Encryption

Standard

Chuẩn mã hóa dữ liệu tiên
tiến

4

APDU

Application Protocol Data

Khối dữ liệu giao thức

Unit

ứng dụng

5

ATM

Automated Teller Machine

Máy rút tiền tự động

Competition for
Authenticated Encryption:
Security, Applicability, and
Robustness


6

CAESAR

7

CPU

Central Processing Unit

8

DPA

Differential Power Analysis
Electrically-Erasable

9

EEPROM

Programmable Read-Only
Memory

Cuộc thi về mã hóa có xác
thực: Bảo mật, khả năng
ứng dụng, độ mạnh
Khối điều khiển trung tâm
Tấn công phân tích năng
lượng vi sai

Bộ nhớ chỉ đọc có thể lập
trình xóa được

Global System for Mobile

Hệ thống thơng tin di

Communications

động tồn cầu

Integrated Circuit Card

Thẻ mạch tích hợp

National Institute of

Viện Tiêu chuẩn và Cơng

Standards and Technology

nghệ Quốc gia Mỹ

PC

Personal Computer

Máy tính cá nhân

14


RAM

Random Acces Memory

Bộ nhớ truy cập tạm thời

15

ROM

Read Only Memory

Bộ nhớ chỉ đọc

16

SCA

Side Channel Attack

Tấn công kênh kề

17

SIM

Subscriber Identity Module

18


SNR

Signal-to-Noise Ratio

10

GSM

11

ICC

12

NIST

13

iii

Module nhận dạng thuê
bao
Tỷ lệ tín hiệu trên nhiễu


DANH MỤC HÌNH VẼ
Hình 1.1 Mơ tả bề mặt thẻ thơng minh ........................................................... 2
Hình 1.2 Mã hóa trong AEGIS ....................................................................... 9
Hình 1.3 Hàm cập nhật trạng thái trong AEGIS ........................................... 10

Hình 1.4 Định nghĩa hàm mã hóa ................................................................. 12
Hình 1.5 Định nghĩa hàm giải mã ................................................................. 12
Hình 1.6 Cài đặt hàm cập nhật trạng thái theo thuật toán AEGIS-128 .......... 13
Hình 1.7 Cài đặt q trình khởi tạo thuật tốn AEGIS-128 ........................... 14
Hình 1.8 Cài đặt quá trình xử lý dữ liệu liên kết thuật tốn AEGIS-128 ....... 14
Hình 1.9 Cài đặt q trình mã hóa thuật tốn AEGIS-128 ............................ 15
Hình 1.10 Cài đặt quá trình tạo thẻ xác thực thuật tốn AEGIS-128 ............. 15
Hình 1.11 Cài đặt q trình giải mã và xác thực thuật tốn AEGIS-128 ....... 16
Hình 1.12 Chọn đầu đọc kết nối đến thẻ ....................................................... 17
Hình 1.13 Tải file .CAP lên thẻ .................................................................... 17
Hình 1.14 Kiểm tra Applet tải lên thẻ ........................................................... 18
Hình 1.15 Giao diện mã hóa, giải mã ........................................................... 18
Hình 1.16 Thực hiện mã hóa ........................................................................ 18
Hình 1.17 Thực hiện giải mã ........................................................................ 19
Hình 1.18 Trường hợp giải mã thất bại ......................................................... 19
Hình 2.1 Minh họa mối tương quan thay đổi tín hiệu dịng điện do thay đổi dữ
liệu xử lý ...................................................................................................... 23
Hình 2.2 Các bước thực thi tấn cơng DPA.................................................... 27
Hình 2.3 Mã lệnh gọi nội dung tệp ............................................................... 28
Hình 2.4 Mã lệnh nạp dữ liệu ....................................................................... 28
Hình 2.5 Mã lệnh tính hệ số tương quan ....................................................... 29
Hình 2.6 Mã lệnh xử lý các file dữ liệu để xác định khóa ............................. 30
Hình 2.7 Cài đặt tiến trình AsciiToHex ........................................................ 31
Hình 2.8 Cài đặt quá trình Power Model ...................................................... 33
Hình 2.9 Cài đặt q trình tính hệ số tương quan.......................................... 34
Hình 2.10 Cài đặt quá trình xử lý các file đầu vào, đầu ra ............................ 35
Hình 2.11 Giao diện chương trình phân tích tấn cơng................................... 35
Hình 3.1 Kết nối thẻ JavaCard vào đầu đọc .................................................. 36
Hình 3.2 Thực hiện mã hóa .......................................................................... 36
Hình 3.3 Các bước lắp thẻ vào bộ đo và vào đầu đọc ................................... 37

iv


Hình 3.4 Kết nối các đầu dị PicoScope 6 với bộ đo ..................................... 37
Hình 3.5 Kết quả vệt năng lượng thu được ................................................... 38
Hình 3.6 Thiết lập các đường dẫn thư mục của Project ................................. 39
Hình 3.7 Thiết lập đường dẫn các phụ thuộc của Project .............................. 40
Hình 3.8 Các thiếp lập trong mã nguồn main.cpp ......................................... 40
Hình 3.9 Các tập dữ liệu thu được ................................................................ 41
Hình 3.10: Thực nghiệm 200 bản rõ plaintext.txt ......................................... 42
Hình 3.11: Thực nghiệm 200 bản mã ciphertext.txt ...................................... 42
Hình 3.12 Xử lý và đưa ra kết quả ................................................................ 43

v


LỜI MỞ ĐẦU
Ngày nay, các giao dịch điện tử ngày càng trở nên phổ biến đồng thời cũng
kéo theo vấn đề bảo đảm an tồn thơng tin cá nhân trở nên cấp thiết. Một trong những
lĩnh vực mật mã ứng dụng được tập trung phát triển gần đây chính là các thuật tốn
nhằm tăng tính an tồn khi chạy trên các chip hạn chế tài nguyên. Viện tiêu chuẩn
NIST (national institute of standards and technology) đã tổ chức cuộc thi CAESAR
(competition for authenticated encryption: security, applicability, and robustness) để
chọn ra thuật tốn mã hóa có xác thực phù hợp. Thuật tốn mã hóa có xác thực
AEGIS là một trong hai thuật tốn chiến thắng trong vịng chung kết của cuộc thi,
đảm bảo về cả tính bí mật, tính xác thực và có khả năng ứng dụng rộng rãi cho các hệ
thống tài nguyên hạn chế, đặc biệt là các hệ giao dịch dùng thẻ.
Tuy nhiên, khi triển khai ứng dụng hệ thống dùng thẻ lại tiềm ẩn các nguy cơ
rò rỉ thông tin, như các tấn công kênh kề. Trong nhiều năm qua, một số tấn công kênh
kề hữu hiệu có thể kể đến: tấn cơng phân tích thời gian, tấn cơng gây lỗi, tấn cơng

phân tích năng lượng tiêu thụ. Xuất phát từ thực tiễn trên, em chọn đề tài “Nghiên
cứu tấn công DPA vào thuật toán AEGIS trong JavaCard” làm đồ án của mình
với mục đích phân tích và đánh giá tính an tồn của thuật tốn này trong JavaCard, từ
đó đề xuất biện pháp bảo vệ giúp triển khai ứng dụng hiệu quả thuật toán hạng nhẹ
AEGIS.
Nội dung của đồ án tốt nghiệp gồm có 3 chương:
Chương 1: Thực thi thuật toán AEGIS vào JavaCard
Chương này trình bày những kiến thức khái quát về JavaCard và kỹ thuật lập
trình Applet, từ đó thực thi thuật tốn AEGIS vào JavaCard.
Chương 2: Nghiên cứu xây dựng module phân tích tấn cơng DPA vào
thuật toán AEGIS trong JavaCard
Chương này trình bày về tấn cơng DPA, trong đó nêu rõ định nghĩa, mục tiêu,
các bước thao tác tấn công và xây dựng module phân tích tấn cơng DPA để thực hiện
tấn cơng vào thuật tốn chạy trong JavaCard ở chương 3.
Chương 3: Thực hiện tấn công DPA vào thuật taons AEGIS trong
JavaCard
Chương này sẽ trình bày cách thiết lập phép đo, biên dịch chương trình đo các
vệt năng lượng để thu được các tập dữ liệu và phân tích tập dữ liệu này để tìm ra khóa
bí mật của thuật tốn, sau đó đề xuất một số biện pháp bảo vệ phù hợp cho thuật toán
chạy trong thẻ.
1


CHƯƠNG 1: THỰC THI THUẬT TOÁN AEGIS VÀO JAVACARD
Hiện nay, trước sự phát triển của các hệ nhúng và xu thế của các ngân
hàng đang dần chuyển từ thẻ từ sang thẻ chip thì việc nghiên cứu, tích hợp
các thuật toán mật mã hạng nhẹ cho phép cài đặt trong các thiết bị hạn chế tài
nguyên là một yêu cầu thực tế. Dựa vào tài liệu công bố [2, 5], em nhận thấy
AEGIS là thuật tốn mã hóa có xác thực hạng nhẹ phù hợp để xử lý nhanh các
thông tin người dùng, hoạt động ổn định trong các linh kiện nhúng. AEGIS

đảm bảo về cả tính bí mật và xác thực, đồng thời cũng đạt hiệu suất cao về
thời gian xử lý. Trong chương này, cùng với việc tìm hiểu về JavaCard, kỹ
thuật lập trình Applet, em sẽ tiến hành thực thi thuật tốn và kiểm tra các tiến
trình mã hóa/giải mã trên nền tảng JavaCard.
1.1 Khái quát về JavaCard và kỹ thuật lập trình Applet
1.1.1 Khái quát về JavaCard
1.1.1.1 Tổng quan về SmartCard
SmartCard hay thẻ thông minh, thẻ chip, hoặc thích hợp thẻ mạch (ICC
– Integrated Circuit Card), là loại thẻ bỏ túi (thường có kích thước của thẻ tín
dụng), bên trong chứ một mạch tích hợp có khả năng lưu trữ và xử lý dữ liệu
[3]
• Cấu tạo SmartCard
SmartCard được coi như một máy tính thu nhỏ. Các thành phần chính
gồm có:

Hình 1.1 Mơ tả bề mặt thẻ thông minh

2


- 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.
- Comprocessor
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ã hóa/giải mã (cryptographic operations) trong các giao
thức dùng thẻ thông minh.
- ROM

Được dùng để 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 thẻ
thông minh chứa hệ điều hành cũng như dữ liệu và mã nguồn chương trình cố
định [1].
- EEPROM
Đây cũng là một loại bộ nhớ chỉ đọc cho phép nạp/xóa bằng điện,
thơng tin trên bộ nhớ này được lưu trữ ngay cả khi ngắt nguồn [1].
- RAM
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 ngoài khơng thể truy cập trực tiếp vào RAM [1].
• Ưu, nhược điểm của SmartCard
- Ưu điểm:
+ SmartCard ứng dụng tiện lợi trong nhiều lĩnh vực [1], như: thẻ công
dân, hộ chiếu điện tử, thẻ y tế, thanh toán lương qua thẻ tín dụng (ATM),..
+ Tính bảo mật cao: có khả năng chống lại các tấn cơng vật lý, có thể
kiểm sốn trước các tấn cơng phần mềm, có các cơ chế chống nhân bản thẻ
bảo vệ quá trình trao đổi dữ liệu và các đáp ứng trả lời theo chuẩn EMV giúp
ngăn ngừa giả mạo.

3


+ Khả năng lưu trữ thông tin lớn, việc quản lý các thơng tin cũng rất
thuận lợi, vì khơng phải tích hợp thêm phần mềm khác, thơng tin lưu trên
SmartCard cũng cho phép thay đổi, xóa, thêm bớt khi cần.
+ Khả năng xử lý thông tin nhanh: Nhờ công nghệ vi chip, SmartCard
xử lý thơng tin nhanh.
- Nhược điểm:
+ Vì khơng có giao diện ứng dụng tiêu chuẩn bậc cao cho thẻ thông

minh nên các nhà phát triển ứng dụng cần phải xử lý các giao thức giao tiếp
mức thấp, quản lý bộ nhớ và các chi tiết khác theo thời gian của phần cứng
thẻ thông minh cụ thể.
+ Hầu hết các ứng dụng thẻ thông minh đang được sử dụng ngày nay
đều được phát triển từ đầu, mất nhiều thời gian.
SmartCard có nhiều ưu điểm nhưng các ứng dụng thẻ thông minh lại
thường được phát triển để chạy trên nền tảng độc quyền từ các nhà cung cấp
dịch vụ khác nhau, không thể cùng tồn tại và thống nhất trên một thẻ duy
nhất. Đây cũng là trở ngại khi nhóm phát triển ứng dụng trên SmartCard. Rất
may, cơng nghệ JavaCard ra đời và phát triển để khắc phục nhược điểm trên..
Nó cho phép thẻ thơng minh và thiết bị hạn chế tài nguyên có thể chạy các
ứng dụng (được gọi là Applet) được viết bằng ngơn ngữ lập trình Java.
1.1.1.2 Giới thiệu JavaCard
JavaCard [4] là một công nghệ cho phép mang đến cho các trình ứng
dụng Java Applet có thể hoạt động một cách an toàn và bảo mật trên thẻ thông
minh tương tự với các bộ nhớ nhỏ của các thiết bị lưu vết. Nó là nền tảng Java
nhỏ nhất hướng tới các thiết bị nhúng. JavaCard là một phần nhỏ của Java
được phát triển bởi Sun, được tích hợp bên trong các thiết bị, nó đơn giản hố
việc lập trình thẻ thơng minh vì các tính năng hướng đối tượng của nó.
JavaCard mang đến cho người dùng khả năng lập trình cho các thiết bị mà tạo
các trình ứng dụng chun biệt. Nó được sử dụng rộng rãi trong SIM card
(trong GSM của điện thoại di động) và thẻ ATM.
Ngơn ngữ lập trình Java có nhiều ưu điểm như tính đơn giản, tính di
động, mơ hình bảo mật và tính hướng đối tượng. Đó cũng chính là đặc tính
mà JavaCard hướng tới là khả năng tương thích và bảo mật. Tính tương thích
được thể hiện ở việc JavaCard nhắm tới mục tiêu tạo ra một môi trường chuẩn
4


cho thẻ thông minh, cho phép các ứng dụng Java có thể chạy trên các loại thẻ

thơng minh khác nhau. Tương tự như với môi trường Java, JavaCard thực
hiện bằng việc kết hợp một máy ảo JavaCard với một bộ thư viện chung. Tuy
nhiên tính tương thích bị ảnh hưởng lớn bởi sự khác nhau về kích thước bộ
nhớ, khả năng xử lý và hỗ trợ của các loại thẻ khác nhau. JavaCard có một số
đặc điểm khác với Java thơng thường. Về mặt ngơn ngữ lập trình, JavaCard là
một phần thu gọn của Java, các cú pháp của Java, giống như tất cả các biến
thể của Java và làm cho lập trình viên viết mã dễ dàng hơn vì không cần phải
học một cú pháp nào khác. Tuy nhiên, cú pháp quen thuộc khơng có nghĩa là
dễ, thật dễ dàng để bị một quan niệm sai lầm trong suy nghĩ rằng tiêu chuẩn
Java và Java Card rất giống nhau, điều này có thể xảy ra do cùng cú pháp, tên
tương tự và tốn tử, mơ hình đối tượng, nhưng trên thực tế, hai môi trường
này là tương đối khác nhau từ quan điểm lập trình.
JavaCard phát triển với mục đích lưu trữ các thơng tin nhạy cảm, cơng
nghệ JavaCard ln đề cao tính bảo mật và đảm bảo điều này bằng các yếu tố
khác nhau như: đóng gói dữ liệu, tường lửa ngăn cách ứng dụng, mã hóa dữ
liệu, tạo ứng dụng dạng Applet. Khả năng đóng gói dữ liệu cho phép dữ liệu
được lưu trữ bên trong ứng dụng và các ứng dụng này được thực thi trên một
máy ảo tách biệt với hệ điều hành và phần cứng của thẻ. Mỗi ứng dụng khác
nhau lưu trữ trên JavaCard đều được ngăn cách bởi một tường lửa để hạn chế
và kiểm tra được sự truy cập dữ liệu từ ứng dụng này sang ứng dụng khác.
Khả năng mã hóa của JavaCard cho phép dữ liệu được mã hóa bằng các dạng
mã hóa thơng dụng sử dụng khóa như mã hóa DES, 3DES, AES hay RSA.
JavaCard là một thẻ thơng minh có thể thực thi mã bytecode tương tự
như Java. Do tiêu chuẩn Java quá lớn để phù hợp với thẻ thông minh, nên giải
pháp cho vấn đề này là tạo ra một JavaCard với một số chuẩn Java đã được
loại bỏ. JavaCard được hình thành dựa trên một tập con của Java API cộng
với một số lệnh thẻ đặc biệt. Bên cạnh việc cung cấp cho các nhà phát triển
mơi trường phát triển quen thuộc, JavaCard cịn cho phép các thẻ thơng minh
có thể có nhiều ứng dụng trên đó. Hầu hết các sản phẩm thẻ thơng minh hiện
có chỉ có một ứng dụng trên mỗi thẻ. Ứng dụng này được tự động gọi ra khi

điện được cung cấp cho thẻ hoặc thẻ được cài đặt lại. Thẻ Java cho phép
nhiều ứng dụng, có khả năng được viết bởi các tổ chức khác nhau, để tồn tại
trên cùng một thẻ
5


1.1.2 Kỹ thuật lập trình Applet
1.1.2.1 Giao thức truyền thơng APDU
Việc truyền thông giữa thẻ và máy chủ là bán song công. SmartCard
tương tác với máy chủ bằng cách sử dụng các gói tin riêng của nó, gọi là
APDUs (Application Protocol Data Unit – đơn vị dữ liệu giao thức ứng
dụng). Giao thức APDU được chỉ ra trong chuẩn ISO 7618-4, là một giao
thức ở tầng ứng dụng của thẻ thơng minh với máy chủ.
• Hoạt động APDU
Truyền thơng APDU [4] dựa trên mơ hình chủ-khách (lệnh/đáp ứng).
Một Applet sẽ không hoạt động cho đến khi một lệnh APDU được gửi đến
Applet, lệnh này sẽ yêu cầu một số hình thức xử lý. Sau đó, Applet xử lý và
sau đó trả về một phản hồi.
Khối APDU được định dạng khác nhau tương ứng với các lệnh APDU
và đáp ứng APDU. Định dạng chung của một lệnh ADPU như sau:
CLA

INS

P1

P2

Lc


Data

Le

- CLA (1 byte): lớp lệnh;
- INS (1 byte): chỉ lệnh trong một lớp;
- P1 (1 byte): tham số thứ 1 hỗ trợ lệnh. Nó được sử dụng để đưa thêm
thơng tin về lệnh hoặc dữ liệu đầu vào.
- P2 (1 byte): tham số thứ 2 hỗ trợ lệnh. Cũng như trường P1 trên, trường
này được dùng để đưa thêm thông tin về lệnh hoặc dữ liệu đầu vào.
- Lc (1 byte, tùy chọn): thể hiện số lượng byte trong trường dữ liệu của
APDU lệnh. Do đó, Lc có giá trị cao nhất là 0xFF nên độ dài dữ liệu
cực đại là 255 byte, một số thẻ cho phép gửi 256 khi dùng cả giá trị
0x00.
- Data (kích thước biến đổi, tùy chọn): thông tin được xử lý bởi Applet.
- Le (1 byte, tùy chọn): số byte cực đại trong trường dữ liệu (Data) của
APDU đáp ứng.
- Định dạng của APDU đáp ứng đơn giản hơn gồm có các trường như
sau:
- Data (độ dài biến đổi, tùy chọn): thông tin trả về từ phía ứng dụng của
thẻ;
6


- SW1 (1 byte): byte trạng thái thứ 1, nó mô tả thông tin chung về kết
quả thực hiện lệnh;
- SW2 (1 byte): là byte trạng thái thứ 2.
• Trình tự giao tiếp APDU
Trình tự giao tiếp APDU với thẻ thông minh như sau:
1. Nhận một đối tượng APDU làm tham số cho phương thức process().

2. Phân tích Header lệnh APDU.
3. Đọc dữ liệu bất kỳ trong lệnh APDU.

Lưu ý: Dữ liệu lệnh sẽ không nằm trong bộ đệm APDU chờ đến khi được
Applet đọc bằng cách sử dụng setIncomeAndReceive() hoặc receiveBytes().
4. Xử lý lệnh APDU và tạo dữ liệu phản hồi.
5. Gửi dữ liệu phản hồi bất kỳ từ các Applet.
6. Thực hiện xử lý bổ sung và đảm bảo khơng thay đổi kích thước bộ
đệm APDU phản hồi.
7. Trả về từ phương thức process() một cách bình thường hoặc trả về
một đối tượng ISOException (JCRE nối thêm byte trạng thái thích hợp
cho APDU đáp ứng).

1.1.2.2 JavaCard Applet
Một JavaCard Applet là một chương trình Java tuân thủ một tập các
quy ước cho phép nó chạy trong mơi trường JavaCard. JavaCard Applet
khơng hỗ trợ hoạt động cho mơi trường trình duyệt, vì tên Applet chọn ứng
dụng JavaCard sẽ nạp vào môi trường chạy JavaCard sau khi thẻ được sản
xuất. Tức là, các Applet không cần phải ghi vào ROM trong q trình sản
xuất, thay vào đó, họ có thể tự động tải xuống thẻ.
Lớp Applet mở rộng từ lớp javacard.framework.Applet. Lớp Applet
này thực chất là một siêu lớp (super class) hỗ trợ tất cả các Applet được nạp
vào thẻ Java. Lớp Applet được lập kế hoạch chi tiết theo các biến và các
phương thức của một Applet.
1.1.2.3 Quy trình phát triển Applet
Đầu tiên, nhà phát triển sẽ viết một hoặc nhiều lớp Java và biên dịch
mã nguồn bằng trình biên dịch Java để tạo ra một hoặc nhiều lớp.
Tiếp theo, Applet được chạy, thử nghiệm và gỡ lỗi trong một môi
trường mô phỏng. Bộ mô phỏng môi trường chạy JavaCard nằm trên máy PC
hoặc một máy trạm khác. Trong môi trường mô phỏng, Applet chạy máy ảo

7


Java và có các lớp của nó sẽ được thực thi. Theo cách này, trình giả lập có thể
sử dụng nhiều cơng cụ phát triển Java (máy ảo, trình gỡ lỗi, và các công cụ
khác) cho phép nhà phát triển kiểm tra hành vi của Applet và quán sát các kết
quả của Applet chưa qua xử lý chuyển đổi. Trong bước này, các khía cạnh
chức năng tổng thể của Applet được kiểm tra. Tuy nhiên, một số tính năng
thời gian chạy của máy ảo JavaCard như các luật tường lửa ứng với Applet và
các hành vi của đối tượng sẽ khơng được kiểm tra.
Sau đó, các tệp Class của Applet đóng thành gói Java và được chuyển
đổi sang tệp CAP bằng cách sử dụng JavaCard. Convertor – trình chuyển đổi
thẻ Java khơng chỉ có đầu vào là các tệp Class được chuyển đổi, mà còn kèm
theo một hoặc nhiều tệp Import. Khi gói Applet được chuyển đổi, bộ chuyển
đổi cũng xuất Export ra một tệp kết quả cho gói đó.
Trong bước tiếp theo, các tệp CAP đại diện cho Applet được nạp và thử
nghiệm trong mơi trường mơ phỏng. Trình mô phỏng cũng mô phỏng môi
trường chạy JavaCard trên máy PC hoặc máy trạm. Nó thực thi máy ảo
JavaCard, các hành vi của Applet trong môi trường giả lập giống như hành vi
của nó chạy trong một thẻ thực. Trong giai đoạn phát triển này, không chỉ
Applet được tiếp tục thử nghiệm, mà còn cả hành vi thời gian chạy của Applet
cũng được xác định. Trình gỡ lỗi cho phép nhà phát triển thiết lập các điểm
ngắt, theo dõi thời gian thực thi các thay đổi của Applet trong môi trường mô
phỏng thời gian chạy trong JavaCard.
Khi Applet được thử nghiệm và sẵn sàng để tải xuống một thẻ thực,
Applet đại diện bởi một tên CAP sẽ sẵn sàng cài đặt trong thẻ thông minh
Java.
1.2 Thực thi thuật toán AEGIS vào JavaCard
AEGIS [5] được phát triển bởi Hongjun Wu và Bart Preneel – trong
cuộc thi về các thuật toán mã hóa có xác thực CAESAR [2]. AEGIS là một

trong hai thuật toán chiến thắng của cuộc thi này. Thuật toán này khơng thuần
nhất dùng mã khối hoặc mã dịng làm cơ sở, mà cụ thể nó sử dụng các thơng
báo để cập nhật trạng thái mã hóa đồng thời thực thi tiến trình xử lý bảo đảm
tính xác thực thơng báo.
AEGIS được xây dựng từ hàm mã hóa AES. AEGIS sử dụng 5 vịng
mã hóa AES để xử lý khối tin 16 byte, đồng thời AEGIS-128 hoạt động với
khóa 128-bit, giá trị pub-nonce 128-bit (const0 và const1), kích thước trạng thái
8


640-bit và tạo nhãn xác thực 128-bit (từ byte 64 đến byte 80). Nó được thiết kế
nhằm đáp ứng các ứng dụng đòi hỏi tốc độ xử lý nhanh (Aegis secure key 3.0,
Most security USB Flash 30G, Apricon AEGIS padlock…). AEGIS được coi là
thuật tốn hạng nhẹ bởi nó chỉ thực thi một nửa số vòng so với AES chuẩn.

IV
const0

Khởi tạo

Xử lý dữ liệu liên kết

Mã hóa

Sinh nhãn xác thực

Key

AD128


M 128

ADlen M len

State
update

state

State
update

state

State
update

state

State
update

state Nhãn xác thực
(Tag: byte thứ 64÷80)

const1
XOR

Bản mã
(Cipher)


Hình 1.2 Mã hóa trong AEGIS
Hình 1.2 chỉ ra các giai đoạn chính trong q trình mã hóa của AEGIS.
Khối cơ sở của q trình mã hóa là hàm cập trạng thái. Trong giai đoạn khởi
tạo: khóa (Key) , véc tơ khởi tạo ( IV ) và 02 giá trị hằng (const0 , const1 ) được
cấp làm đầu vào trạng thái khởi tạo. Ở giai đoạn thứ 2 sẽ thực hiện xử lý dữ
liệu liên kết ( AD) và cập nhật tiếp trạng thái đầu ra sau khởi tạo. Sang giai
đoạn thứ 3 thực hiện mã hóa: các khối thơng báo ( M ) kích thước 16-byte
(128 bit) được cấp vào cho hàm cập nhật trạng thái và bản mã (ciphertext )
được tạo ra bằng cách cộng XOR bản thông báo rõ ( M ) với trạng thái đầu ra

( stateoutput ) của hàm cập nhật trạng thái tại thời điểm này. Trong giai đoạn
cuối cùng, nhãn xác thực được tạo thành bằng cách cập nhật hàm trạng thái
theo độ dài của dữ liệu liên kết ( ADlen ) kết hợp với độ dài của thông báo

(M len ) . Cụ thể, các byte sau cùng (byte thứ 64 đến 80) của hàm cập nhật
trạng thái trong giai đoạn này sẽ dùng làm (chứa Tag ) nhãn xác thực.
Hàm vòng mã hóa AES được sử dụng trong AEGIS là vịng AES thơng
thường (khơng phải vịng cuối cùng trong AES chuẩn). Thơng báo M được
mã hóa và được xác thực với khóa ( Key ) 128-bit và véc tơ khởi tạo ( IV )
128-bit. Trạng thái mã hóa của AEGIS bao gồm 80 bytes. Từng khối thông
báo 16-byte được cấp vào để cập nhật trạng thái. Sơ đồ logic của hàm cập
nhật trạng thái được vẽ như trong Hình 1.3.

9


Hình 1.3 Hàm cập nhật trạng thái trong AEGIS
Trên Hình 1.3: R là ký hiệu của hàm vịng mã hóa nhưng khơng cộng
XOR với khóa vịng, cịn


w là từ dữ liệu tạm thời dài 16-byte; mi là bit thứ i

của thông báo; Si , j là bit thứ j của trạng thái i .
Để giải mã thành công và xử lý tiến trình kiểm tra, cần phải biết chính
xác giá trị kích thước khóa, kích thước véc tơ ( IV ) và kích thước nhãn xác
thực. Tương tự với quá trình mã hóa, q trình giải mã cũng bắt đầu với tiến
trình khởi tạo và sau đó xử lý với dữ liệu liên kết. Bản mã sẽ được giải mã
trong giai đoạn kế tiếp. Và giai đoạn sau cùng sẽ xuất ra bản mã. Khuyến cáo
rằng bản mã và nhãn xác thực vừa mới tạo ra không nên xuất ra nếu tiến trình
kiểm tra bị lỗi.
• AEGIS-128
AEGIS-128 có cấu trúc đơn giản nhất trong số ba thuật toán: AEGIS128, AEGIS-128L, AEGIS-256. Với độ dài khóa 128 bit và vectơ khởi tạo
128 bit, AEGIS-128 mã hóa và xác thực thơng báo ở đầu ra theo độ dài dữ
liệu liên kết và độ dài bản rõ nhỏ hơn 2 64 bit: theo khuyến cáo [5], độ dài thẻ
xác thực lấy nhỏ hơn hoặc bằng 128 bit (theo mặc định thuật toán tạo thẻ xác
thực 128 bit).
1.2.1 Lập trình thuật tốn AEGIS
1.2.1.1 Giới thiệu công cụ phát triển
Bộ công cụ phát triển thẻ Java (JCKit) bao gồm JCIDE và
PyApduTool, cung cấp một môi trường phát triển mạnh mẽ, đầy đủ cho các
nhà phát triển thẻ Java. Nó cho phép bạn phát triển nhanh chóng và dễ dàng
Applet JavaCard.
Phần mềm JCIDE là một mơi trường phát triển tích hợp được thiết kế
dành riêng cho ngơn ngữ lập trình thẻ Java (JavaCard). Chương trình JCIDE

10


hỗ trợ tạo ra tệp “.cap” dùng để tải lên thẻ. Sau khi chạy gỡ lỗi chương trình,

JCIDE sẽ biên dịch ra tệp “.cap” để có thể nạp lên thẻ.
Bên cạnh JCIDE, PyApduTool là một cơng cụ tiện dụng có thể giao
tiếp với thẻ thông qua đầu đọc được kết nối với PC. Nó là một ứng dụng tuân
thủ PC/SC. Sử dụng cơng cụ PyApduTool có thể quản lý được tài nguyên trên
thẻ chip, cũng có thể tải lên hay xóa các ứng dụng được cài đặt lên thẻ.
1.2.1.2 Lập trình thuật tốn AEGIS
Tạo Project JavaCard bằng JCIDE. Cấu trúc gồm 2 lớp:
- Class_Core chứa cài đặt thuật toán của hệ mật.
- Class_Applet chứa phương thức của một Applet. Lớp này sẽ chịu
trách nhiệm nhận lệnh từ máy tính để gọi đến lớp _Core để tiến hành q
trình mã hóa và giải mã, lớp này chịu trách nhiệm gửi kết quả trả về máy tính.
• Lớp AegisAppet
Lớp này chứa khai báo lớp Applet của chương trình; khai báo giá trị
của các tham số cho hệ mật: AD (dữ liệu liên kết), ADLEN (độ dài dữ liệu
liên kết); NSEC (số thông báo bí mật), NPUB (số thơng báo cơng khai), KEY
(khóa mã hóa và giải mã), KEYLEN (độ dài khóa mã hóa và giải mã); định
nghĩa phương thức để đọc khối lệnh APDU gửi vào máy tính và phân tích
trường APDU đó.
Định nghĩa phương thức mã hóa. Một khi phương thức này được gọi,
nó tiến hành đọc thơng điệp là các (byte) dữ liệu rõ được gửi vào ở trường
Data của khối lệnh APDU để nạp vào bộ nhớ đệm. Sau đó tiến hành mã hóa
mảng (byte) m_ramArrayPt bằng hàm mã hóa với các tham số
(m_ramArrayCt, (short)0, m_ramArrayPt, dataLen, AD, ADLEN, NSEC,
NPUB, KEY, KEYLEN) và gửi trả kết quả bằng khối lệnh APDU.

11


Hình 1.4 Định nghĩa hàm mã hóa
Định nghĩa phương thức giải mã. Cũng tương tự như mã hóa, khi

phương thức giải mã được gọi. Nó tiến hành đọc dữ liệu là các (byte) mã từ
trường data của khối lệnh APDU và giải mã mảng (byte) ramArrayCt bằng
hàm giải mã với các tham số (m_ramArrayCt, dataLen, m_ramArrayPt,
(short)0, AD, ADLEN, NSEC, NPUB, KEY, KEYLEN) sau đó gửi trả kết quả
bằng khối lệnh APDU.

Hình 1.5 Định nghĩa hàm giải mã
Trong trường hợp thẻ xác thực không hợp lệ, khối lệnh APDU sẽ được
gửi trả với giá trị được khai báo trong chương trình.
• Lớp AegisCore
+ Xây dựng hàm cập nhật trạng thái
Hàm cập nhật trạng thái cập nhật 80 bytes trạng thái Si với một khối
thông báo 16 byte. Si +1 = StateUpdate128 ( Si ; mi ) được thực hiện như sau [5]:

Si+1,0 = AESRound ( Si ,4 , Si ,0  mi ) ; Si +1,1 = AESRound ( Si ,0 , Si ,1 ) ;
12


Si +1,2 = AESRound ( Si ,1 , Si ,2 ) ; Si +1,3 = AESRound ( Si ,2 , Si ,3 ) ;
Si +1,4 = AESRound ( Si ,3 , Si ,4 ) ;

Hình 1.6 Cài đặt hàm cập nhật trạng thái theo thuật toán AEGIS-128
+ Cài đặt hàm khởi tạo
khởi tạo AEGIS-128 bao gồm nạp khóa và
thuật tốn mã hóa 10 bước bằng khóa và
1. Nạp khóa và

IV

IV


IV

vào trạng thái và chạy

được sử dụng làm thông báo.

vào trạng thái như sau [5]:

S−10,0 = K128  IV128 ; S−10,1 = const1 ; S−10,2 = const0 ;
S−10,3 = K128  const0 ; S−10,4 = K128  const1 ;

2. For i = −5 to −1, m2i = K128 ; m2i+1 = K128  IV128 ;
3. For i = −10 to −1, Si +1 = StateUpdate128 ( Si ; mi ) ;
Các bước trên được cài đặt như sau:

13


Hình 1.7 Cài đặt q trình khởi tạo thuật tốn AEGIS-128
+ Xử lý dữ liệu liên kết
Sau khi khởi tạo, dữ liệu liên kết AD [5] được sử dụng để cập nhật
trạng thái.
1. Nếu khối dữ liệu liên kết cuối cùng không phải là một khối đầy đủ, sử
dụng bit “0” để đệm vào để đủ 128 bit, và khối đệm đầy đủ được sử
dụng để cập nhật trạng thái. Lưu ý rằng nếu

adlen = 0 , trạng thái sẽ

không được cập nhật.

 adlen  
2. Với i = −5 đến  
 − 1 , cập nhật trạng thái:
  128  

Si +1 = StateUpdate128 ( Si ;ADi ) ;

Các bước trên được cài đặt như sau:

Hình 1.8 Cài đặt quá trình xử lý dữ liệu liên kết thuật toán AEGIS-128
Sau khi xử lý dữ liệu liên kết, tại mỗi bước của q trình mã hóa, một
khối bản rõ 16 bytes Pi được sử dụng để cập nhật trạng thái, và Pi được mã
hóa thành Ci [5].
1. Nếu khối bản rõ cuối cùng không phải là một khối đầy đủ, sử dụng bit
0 đệm vào để đủ 128 bit, và khối đệm đầy đủ được sử dụng để cập nhật
trạng thái. Đối với khối cuối cùng, chỉ các bit bản rõ sẽ được mã hóa.
Nếu msglen = 0 , trạng thái sẽ không được cập nhật và không có mã
hóa.

 adlen 
 mslen 
2. Cho u = 
và v = 
. Với

 128 
 128 
hóa và cập nhật trạng thái:
Ci = Pi  Su +i ,1  Su +i ,4  (Su +i ,2 & Su +i ,3 ) ;
Su +i +1 = StateUpdate128 ( Sui ;Pi )


14

i = 1 đến v − 1,

thực hiện mã


Các bước trên được cài đặt như sau:

Hình 1.9 Cài đặt q trình mã hóa thuật tốn AEGIS-128
+ Q trình tạo thẻ xác thực [5]
Sau khi mã hóa tất cả các khối bản rõ, chúng ta tạo thẻ xác thực bằng
bảy bước khác. Độ dài của dữ liệu liên quan và độ dài của thông báo được sử
dụng để cập nhật trạng thái.
1. Đặt tmp = Su +v ,3  (adlen || msglen), trong đó

adlen

và msglen biểu

diễn bằng số nguyên 64-bit.
2. Với i = u + v đến

u + v + 6 , cập nhật trạng thái

Si +1 = StateUpdate128 ( Si ; tmp )

3. Tạo thẻ xác thực từ trạng thái Su +v+7 như sau:
T ' = i4=0 Su +v+7,i ;

'

Thẻ xác thực T bao gồm t bit đầu tiên của T .
Các bước trên được cài đặt như sau:

Hình 1.10 Cài đặt quá trình tạo thẻ xác thực thuật toán AEGIS-128
15


+ Quá trình giải mã và xác thực [5]
Các giá trị chính xác của kích thước khóa, kích thước IV và kích thước
thẻ phải được biết đến với q trình giải mã và xác thực. Việc giải mã bắt đầu
với việc khởi tạo và xử lý dữ liệu đã được xác thực. Sau đó, bản mã được giải
mã như sau:
1. Nếu khối mã hóa cuối cùng khơng phải là một khối đầy đủ, chỉ giải mã
một phần khối bản mã. Khối bản rõ một phần được đệm với 0 bit, và
khối bản rõ đã được đệm đầy đủ được sử dụng để cập nhật trạng thái.
2. Với

i=0

đến

v − 1, thực hiện giải mã và cập nhật trạng thái.

i. Pi = Ci  Su +i ,1  Su +i ,4  (Su +i ,2 & Su +i ,3 ) ;
ii. Su +i ,1 = StateUpdate128 ( Su +i , Pi ) ;
Các bước trên được cài đặt như sau:

Hình 1.11 Cài đặt q trình giải mã và xác thực thuật tốn AEGIS-128

Việc hồn tất trong q trình giải mã cũng giống như trong q trình
mã hóa. Nếu xác thực khơng thành công, bản mã và thẻ xác thực mới được
tạo sẽ không được cung cấp làm đầu ra.
Sau khi cài đặt hai thuật tốn để kiểm tra tính đúng đắn trong q trình
cài đặt, tiến hành chạy thuật tốn bằng trình mơ phỏng JavaCard trên máy
tính. Thực hiện cài đặt các tham số khóa, vector khởi tạo, dữ liệu liên kết và
mã hóa bản rõ trong bộ test vector được cung cấp ở cuộc thi CAESAR. Lấy
bản mã và thẻ xác thực sau khi mã hóa đem so sánh với bản mã và thẻ xác
thực ở bộ test vector, kết quả so sánh chính xác hồn tồn. Từ đấy kết luận

16


được việc cài đặt thuật tốn đã chính xác. File “.cap” tạo ra đã sẵn sàng để
được cài đặt lên thẻ.
1.2.2 Biên dịch nhúng thuật toán AEGIS vào JavaCard
Sau khi cài đặt thuật toán AEGIS và biên dịch thuật toán bằng JCIDE,
kết quả nhận được file “Aegis.cap”. Trong phạm vi đồ án, em sử dụng loại thẻ
Java J2A080 của hãng NXP được gắn vào đầu đọc thẻ OMNIKEY để tiến
hành cài đặt thuật toán AEGIS.
Để tải được file “Aegis.cap” lên thẻ, em sử dụng công cụ PyApduTool
giao tiếp với thẻ bằng khối lệnh APDU.
Bước 1: Mở bộ công cụ PyApduTool trong trình điều khiển JavaCOS
Panel.
Bước 2: Trong giao diện của cơng cụ PyApduTool chọn đầu đọc thẻ
(reader) OMNIKEy, sau đó ấn Connect.

Hình 1.12 Chọn đầu đọc kết nối đến thẻ
Bước 3: Trong phần Manager, chọn đúng file Aegis.cap để tải lên thẻ;
sau khi chọn được file Aegis.cap lần lượt click chuột trái vào ơ Download,

Install và Select.

Hình 1.13 Tải file .CAP lên thẻ
17


Bước 4: Sau khi đã tải được file Aegis.cap lên thẻ, phải kiểm tra
Package và Applet xem có đúng PackageAID hay khơng.

Hình 1.14 Kiểm tra Applet tải lên thẻ
Bước 5: Sau khi thực hiện các bước trên phải kiểm tra bằng các khối
lệnh APDU để xem file Aegis.cap sau khi nạp lên thẻ có thực hiện đúng như
thuật tốn đã cài đặt.
Như vậy thuật toán AEGIS đã được nhúng vào thẻ JavaCard J2A080.
1.2.3 Xây dựng giao diện mã hóa và giải mã
Để xây dựng giao diện mã hóa và giải mã, sử dụng phần mềm IDE
NetBean 8.2, bộ thư viện “JcardSim-2.2.1.jar” hỗ trợ việc gửi command và
nhận response từ thẻ. Sau khi thực hiện cài đặt và biên dịch ứng dụng, ta được
giao diện như sau:
Hình 1.15 Giao diện mã hóa, giải mã
Để thực hiện được mã hóa, giải mã. Thẻ java được cài đặt thuật toán
AEGIS phải được kết nối với máy tính thơng qua đầu đọc thẻ OMNIKEY.
Trên giao diện chọn đầu đọc thẻ và kết nối.
Để thực hiện mã hóa sau khi thẻ đã được kết nối, chọn nút “chọn file”,
sau đó bấm nút “mã hóa”. Kết quả thu được sẽ lưu và hiển thị ở trường “Đầu
ra”. Trường “Khối lệnh APDU” hiển thị các khối lệnh APDU được gửi đi và
nhận về trong quá trình mã hóa. Trường “Bản mã” hiển thị các byte bản mã ở
dạng Hexa. Trường “Nhãn xác thực” hiển thị các byte nhãn xác thực được nối
vào phía sau bản mã. Trường “Thời gian xử lý” hiển thị thời gian mã hóa. Sau
khi mã hóa xong sẽ xuất hiện thơng báo “Mã hóa thành cơng”.

Hình 1.16 Thực hiện mã hóa
18


Để thực hiện giải mã, tiến hành chọn nút “chọn file”, sau đó bấm nút
“giải mã”. Giải mã xong sẽ lưu và hiển thị ở trường “Đầu ra”.
Hình 1.17 Thực hiện giải mã
Đối với thuật toán AEGIS, nếu bản mã bị thay đổi thì sẽ khơng thể giải
mã được, lúc này chương trình sẽ thơng báo “Giải mã thất bại! Thẻ xác thực
khơng hợp lệ!”
Hình 1.18 Trường hợp giải mã thất bại
1.3 Kết luận chương 1
Trong chương 1, em đã trình bày những kiến thức tổng quan về
SmartCard, JavaCard, đặc biệt là kỹ thuật lập trình Applet: Giao thức truyền
thơng APDU, quy trình phát triển Applet.
Trong chương 1 cũng đã giới thiệu về thuật toán AEGIS, dựa vào các
hàm, quá trình hoạt động, em đã tiến hành lập trình thuật tốn và biên dịch
nhúng thuật tốn vào JavaCard sau đó xây dựng giao diện mã hóa, giải mã.

19


×