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

THỰC THI HỆ MẬT CLOC NHÚNG VÀO THẺ CHIP THÔNG MINH

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.33 MB, 66 trang )

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

LUẬN VĂN THẠC SĨ
NGHIÊN CỨU THỰC THI HỆ MẬT CLOC
NHÚNG VÀO THẺ CHIP THÔNG MINH

Nguyen Thanh Long

Hà Nội - 2023


MỤC LỤC
Mục lục .......................................................................................................... i
Lời cảm ơn .................................................................................................. iii
Lời cam đoan............................................................................................... iv
Danh mục ký hiệu, từ viết tắt ...................................................................... v
Danh mục bảng biểu ................................................................................... vi
Danh mục hình ảnh.................................................................................... vii
Lời mở đầu ................................................................................................... 1
Chương 1 TỔNG QUAN MẬT MÃ HẠNG NHẸ VÀ HỆ MẬT CLOC... 3
1.1 Tổng quan về mật mã hạng nhẹ............................................................... 3
1.1.1 Phạm vi ứng dụng ........................................................................ 3
1.1.2 Hiệu suất ...................................................................................... 4
1.1.3 Các yêu cầu thiết kế thuật toán..................................................... 5
1.2 Hệ mật CLOC ......................................................................................... 7
1.2.1 Hệ mật có xác thực....................................................................... 8
1.2.2 Tham số kỹ thuật ......................................................................... 9
1.2.3 Mục tiêu..................................................................................... 18
1.3 Kết luận chương 1................................................................................. 19
Chương 2 MÔI TRƯỜNG PHÁT TRIỂN ỨNG DỤNG THẺ CHIP
THÔNG MINH .......................................................................................... 20


2.1 Các giai đoạn phát triển ứng dụng trên thẻ ............................................ 20

2


2.1.1 Thẻ thông minh.......................................................................... 20
2.1.2 Phân loại thẻ thông minh ........................................................... 22
2.1.3 Vịng đời của thẻ thơng minh..................................................... 26
2.1.4 Giao thức truyền thông giữa thẻ với thế giới thực .......................27
2.2 Môi trường phát triển ứng dụng thẻ thông minh ....................................31
2.2.1 Giới thiệu về JavaCard................................................................31
2.2.2 Môi trường JavaCard ..................................................................33
2.2.3 JavaCard Applet .........................................................................35
2.2.4 Thẻ J2A080 ................................................................................39
2.3 Kết luận chương 2 .................................................................................41
Chương 3 THỰC THI HỆ MẬT CLOC VÀ ĐỀ XUẤT ỨNG DỤNG.... 42
3.1 Thực thi hệ mật CLOC ..........................................................................42
3.1.1 Công cụ thực thi hệ mật CLOC ...................................................42
3.1.2 Thiết kế hệ mật CLOC ...............................................................45
3.1.3 Nạp chương trình lên thẻ ............................................................48
3.2 Phân tích các kết quả thực nghiệm và đề xuất triển khai hệ mật CLOC ứng
dụng bảo mật và xác thực trong thực tế .........................................................52
3.2.1 Xây dựng ứng dụng mã hóa và giải mã .......................................52
3.2.2 Phân tích các kết quả thực nghiệ m .............................................53
3.2.3 Đề xuất triển khai hệ mật CLOC ứng dụng bảo mật và xác thực
trong

3



thực tế ...................................................................................................56
3.3 Kết luận chương 3 .................................................................................56
Kết luận .......................................................................................................57
Tài liệu tham khảo.....................................................................................58

4


DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT
Viết tắt
AE
AEAD
AES
APDU
API

CAESAR

EEPROM
GSM
JCRE
JCVM
MAC
NIST
PKI
PRP
RFID
RAM
ROM
SIM

SSL
TLS

Tiếng Anh
Authenticated Encryption
Authenticated Encryption
with Associated Data
Advanced Encryption
Standard
Application Protocol Data
Unit
Application Programming
Interface
Competition for
Authenticated Encryption:
Security, Applicability, and
Robustness
Electrically Erasable
Programmable Read-Only
Memory
Global System for Mobile
Communications
JavaCard Runtime
Environment
JavaCard Virtual Machine
Message Authentication
Code
National Institute of
Standards and Technology
Public Key Infrastructure

Pseudorandom permutation
Radio Frequency
Identification
Random Access Memory
Read Only Memory
Subscriber Identity Module
Secure Sockets Layer
Transport Layer Security

Tiếng Việt
Mã hóa có xác thực
Mã hóa có xác thực với dữ liệu
liên kết
Chuẩn mã hóa dữ liệu tiên tiến
Đơn vị dữ liệu giao thức ứng dụng
Giao diện lập trình ứng dụng
Cuộc thi mã hóa có xác thực: an
tồn, khả năng áp dụng và tính
mạnh mẽ
Bộ nhớ chỉ đọc cho phép nạp/xóa
bằng điện
Hệ thống thơng tin di động tồn
cầu
Mơi trường chạy JavaCard
Máy ảo JavaCard
Mã xác thực thông báo
Viện tiêu chuẩn và công nghệ
quốc gia
Hạ tầng khóa cơng khai
Hốn vị giả ngẫu nhiên

Cơng nghệ nhận dạng qua tần số
vô tuyến
Bộ nhớ truy cập ngẫu nhiên
Bộ nhớ chỉ đọc
Mô-đun nhận dạng chủ thuê bao
Bảo mật tầng cổng
Bảo mật tầng giao vận

5


DANH MỤC BẢNG BIỂU


Bảng 1. 1 Các giá trị param tương ứng với các tham ................................. số
17
Bảng 1. 2 Mục tiêu bảo mật ứng với tính bí mật ....................................... 19
Bảng 1. 3 Mục tiêu bảo mật ứng với tính tồn vẹn ................................... 19
Bảng 2. 1 Các giai đoạn phát triển của thẻ thông minh ............................. 27
Bảng 2. 2 Thông số kỹ thuật thẻ J2A080 .................................................. 39
Biểu đồ 3. 1 So sánh thời gian mã hóa của CLOC và AES-128 ................... 55
Biểu đồ 3. 2 So sánh thời gian giải mã của CLOC và AES-128 ................... 55

6


DANH MỤC HÌNH ẢNH
Hình 1. 1 Hệ mã có xác thực ........................................................................ 8
Hình 1. 2 Lược đồ thuật tốn mã hóa của CLOC .........................................12
Hình 1. 3 Hàm mã hóa và giải mã của CLOC ..............................................12

Hình 1. 4 Các thành phần chính của CLOC .................................................13
Hình 1. 5 Khởi tạo giá trị IV........................................................................14
Hình 1. 6 Phép mã hóa và giải mã ...............................................................14
Hình 1. 7 Tạo thẻ xác thực T .......................................................................15
Hình 1. 8Giá trị V được khởi tạo từ hàmHASH...........................................15
Hình 1. 9Quá trình mã hóa và giải mã .........................................................16
Hình 1. 10 Thẻ xác thực tạo ra với cáctrườnghợp ........................................17
Hình 2. 1 Thẻ thơng minh .............................................................................20
Hình 2. 2

Phân loại thẻ thơng minh .........................................................22

Hình 2. 3

Các chân tiếp xúc của thẻ .........................................................23

Hình 2. 4 Thẻ nhớ thơng thường ...................................................................24
Hình 2. 5 Thẻ khơng tiếp xúc ........................................................................26
Hình 2. 6 Vịng đời của thẻ thơng minh .......................................................27
Hình 2. 7 Kiến trúc hệ thống trên JavaCard .................................................34
Hình 2. 8 Quá trình xử lý ..............................................................................37
Hình 3. 1 Giao diện cửa sổ màn hình JCIDE ...............................................43
Hình 3. 2 Giao diện cửa sổ màn hình chương trình pyResMan....................44
Hình 3. 3 Cấu trúc project .............................................................................45
Hình 3. 4 Khai báo lớp Applet ......................................................................45
Hình 3. 5 Các tham số của chương trình .......................................................46
7


Hình 3. 6 Định nghĩa phương thứcxử lý APDU...........................................46

Hình 3. 7 Định nghĩa hàm mã hóa ...............................................................47
Hình 3. 8 Định nghĩa hàm giải mã ...............................................................48
Hình 3. 9 Trạng thái đã kết nối với thẻ ..........................................................49
Hình 3. 10 Trạng thái thẻ trống..................................................................49
Hình 3. 11 Chọn đường dẫn để nạp file ................................................“cap”
50
Hình 3. 12 Nạp file “cloc.cap” vào thẻ ......................................................50
Hình 3. 13 Applet xuất hiện trong thẻ ........................................................51
Hình 3. 14 Giao diện chương trình mã hóa ................................. và giải mã
52

8


LỜI MỞ ĐẦU
Ngày nay, sự phát triển của khoa học công nghệ đã mang đến cho người
dùng nhiều dịch vụ thơng minh và tiện ích, trong đó phải kể đến thẻ chip thông
minh. Việc ứng dụng thẻ chip thông minh trong các hoạt động hàng ngày như
giao dịch ngân hàng, kiểm sốt gửi/nhận xe, tự động mở cửa thang máy,
đóng/khóa cửa nhà, thanh toán tiền điện, nước... giúp cho người dùng thuận tiện
hơn trong sinh hoạt. Tuy nhiên, kèm theo tính tiện lợi là thách thức về việc đảm
bảo an toàn cho các giao dịch khi sử dụng thẻ chip thông minh. Vấn đề được
đặt ra là nghiên cứu các giải pháp an tồn để chống các tấn cơng lên thẻ chip
thơng minh. Trong khi các thuật tốn mật mã thơng thường u cầu phải hoạt
động trên mơi trường có tài ngun lớn thì các thuật tốn mật mã hạng nhẹ nổi
bật với ưu điểm cung cấp các giải pháp phù hợp cho các thiết bị hạn chế tài
nguyên như thẻ chip thơng minh. Vì vậy, việc nghiên cứu các thuật tốn mật mã
hạng nhẹ có xác thực để tích hợp lên thẻ chip thông minh là một yêu cầu cấp
thiết hiện nay. Dựa trên nhiều tài liệu công bố [1,2,3], tơi nhận thấy CLOC là
hệ mật có xác thực hoạt động theo kiểu mã khối, rất thích hợp để xử lý các dữ

liệu đầu vào nhỏ, hoạt động ổn định trong các linh kiện nhúng. CLOC đả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 tính
tốn.
Chính vì vậy, tơi chọn đề tài: “Nghiên cứu thực thi hệ mật CLOC nhúng
vào thẻ chip thơng minh” làm đồ án của mình với mục đích nghiên cứu hệ mật
có xác thực CLOC, nghiên cứu tìm hiểu về mơi trường phát triển ứng dụng thẻ
chip thơng minh, từ đó lập trình nhúng hệ mật CLOC vào thẻ chip thơng minh
sau đó mơ tả, phân tích các kết quả thực nghiệm và đề xuất triển khai ứng dụng
hệ mật CLOC cho thẻ thông minh.

1


Đồ án tốt nghiệp của tơi được trình bày trong 3 chương:
Chương 1: Tổng quan về mật mã hạng nhẹ và hệ mật CLOC
Chương này trình bày những kiến thức tổng quan về mật mã hạng nhẹ,
các yêu cầu thiết kế đối với các thuật toán mật mã hạng nhẹ. Trong chương 1
cũng trình bày các hàm, quá trình hoạt động và sự an toàn của hệ mật CLOC.
Chương 2: Môi trường phát triển ứng dụng thẻ chip thông minh
Chương này trình bày về mơi trường phát triển ứng dụng thẻ chip thơng
minh. Trong đó các giai đoạn phát triển ứng dụng trên thẻ thông minh, khái
niệm thẻ thông minh, phân loại và cấu trúc thẻ cũng như cách thức hoạt động
của thẻ sẽ được làm rõ trong chương này. Trong chương 2 cũng nghiên cứu tìm
hiểu mơi trường phát triển ứng dụng thẻ chip JavaCard, các thông số của thẻ
chip nghiên cứu trong phạm vi đề tài.
Chương 3: Thực thi hệ mật CLOC và đề xuất ứng dụng
Trong chương 3 sẽ trình bày về việc tiến hành xây dựng chương trình hệ
mật CLOC và nạp chương trình lên thẻ chip thơng minh. Trong chương này
cũng phân tích, đánh giá kết quả việc thực thi hệ mật CLOC và đề xuất ứng
dụng bảo mật và xác thực trong thực tế.


2


Chương 1
TỔNG QUAN MẬT MÃ HẠNG NHẸ VÀ HỆ MẬT CLOC
Chương này trình bày tổng quan về mật mã hạng nhẹ và tìm hiểu về hệ
mật CLOC. Trong chương này sẽ giải thích lý do vì sao CLOC là một hệ mật
phù hợp để giải quyết bài toán đặt ra cần phải tìm hiểu một hệ mật thích hợp
nhúng vào thẻ chip thông minh.
1.1 Tổng quan về mật mã hạng nhẹ
Mật mã hạng nhẹ là một bộ phận của Mật mã học nhằm cung cấp các giải
pháp phù hợp cho các thiết bị hạn chế tài nguyên. Cộng đồng mật mã học hạng
nhẹ đã triển khai một lượng lớn công việc bao gồm triển khai hiệu quả các tiêu
chuẩn mật mã thơng thường và thiết kế, phân tích các thuật toán và các giao
thức hạng nhẹ mới. Năm 2013, NIST đã khởi xướng một dự án mật mã hạng
nhẹ để nghiên cứu hiệu suất của các tiêu chuẩn mật mã hiện hành được NIST
phê duyệt trên các thiết bị bị hạn chế và để hiểu sự cần thiết của của các tiêu
chuẩn mật mã hạng nhẹ chuyên dụng. NIST đã tổ chức hai hội thảo về mật mã
hạng nhẹ để thu hút phản hồi của công chúng về các hạn chế của các thiết bị,
các yêu cầu, đặc điểm của các ứng dụng mật mã hạng nhẹ trong thế giới thực
[4].
1.1.1 Phạm vi ứng dụng
Mật mã hạng nhẹ nhắm vào nhiều loại thiết bị có thể được triển khai trên
phần cứng và phần mềm. Các nền tảng thiết bị thông thường khơng cần u cầu
mật mã hạng nhẹ vì có thể xử lý tốt các thuật tốn mật mã thơng thường. Mật
mã hạng nhẹ chủ yếu tập trung vào các thiết bị có độ chính xác cao, các vi điều
khiển rất sẵn có và nổi bật về hiệu suất xử lý. Tuy nhiên với một lượng lớn chu
kỳ để thực hiện các thuật tốn mã hóa phổ biến thì sẽ khiến chúng hoạt động
chậm. Đây là vấn đề lớn khi cần đáp ứng các ràng buộc về thời gian và tương

ứng với việc sử dụng năng lượng hạn chế. Công nghệ RFID và các mạng cảm
biến thường được thực hiện trong một mạch tích hợp dành riêng cho ứng dụng
3


để đáp ứng một số triển khai nghiêm ngặt. Tóm lại, môi trường và ứng dụng cần được
đưa vào quyết định xem các tiêu chuẩn thông thường của mật mã có được chấp nhận
hay khơng. Đây khơng chỉ là giới hạn của một thiết bị cụ thể thúc đẩy nhu cầu về mật
mã hạng nhẹ, mà còn là các thiết bị khác trong ứng dụng mà nó tương tác trực tiếp.
1.1.2 Hiệu suất
Trong thiết kế thuật tốn mật mã, có sự đánh đổi giữa hiệu suất và tài nguyên
cần thiết cho một mức độ bảo mật nhất định. Hiệu suất có thể được thể hiện bằng các
thuật ngữ như tiêu thụ năng lượng và năng lượng, độ trễ và thông lượng. Các yêu cầu
về tài nguyên cần thiết cho việc triển khai phần cứng thường được tóm lược ở diện tích
cổng, các cổng tương đương hoặc các khối logic (cịn được gọi là các khối logic có thể
cấu hình, các thành phần logic, các mơ-đun logic thích ứng hoặc các lát). Trong phần
mềm, điều này được phản ánh trong thanh ghi, bộ nhớ RAM và ROM. Yêu cầu tài
nguyên đôi khi được gọi là chi phí, vì thêm nhiều cổng hoặc bộ nhớ có xu hướng làm
tăng chi phí sản xuất của một thiết bị.
Năng lượng có tầm quan trọng đặc biệt trong các thiết bị thu hoạch năng lượng
từ môi trường xung quanh. Tiêu thụ năng lượng (nghĩa là tiêu thụ năng lượng trong một
khoảng thời gian nhất định) đặc biệt quan trọng trong các thiết bị hoạt động bằng pin
có một lượng năng lượng dự trữ cố định. Pin trong một số thiết bị có thể khó hoặc không
thể sạc lại hoặc thay thế sau khi được triển khai. Cũng cần lưu ý rằng mức tiêu thụ năng
lượng phụ thuộc vào nhiều yếu tố khác ngồi thuật tốn được sử dụng, chẳng hạn như
điện áp ngưỡng, tần số xung nhịp và công nghệ được sử dụng để thực hiện.
Độ trễ đặc biệt phù hợp với một số ứng dụng thời gian thực nhất định, được định
nghĩa là thước đo thời gian giữa yêu cầu ban đầu của một hoạt động và phản hồi ở đầu
ra. Ví dụ, độ trễ của hoạt động mã hóa là thời gian giữa yêu cầu ban đầu về mã hóa của
bản rõ và phản hồi về bản mã tương ứng.

Thông lượng là tốc độ mà các đầu ra mới (ví dụ: thẻ xác thực hoặc bản mã) được
tạo ra. Không giống như các thuật tốn thơng thường, thơng lượng cao có thể khơng
phải là mục tiêu thiết kế trong các thiết kế nhẹ. Tuy nhiên, thông lượng vừa phải vẫn
được yêu cầu trong hầu hết các ứng dụng.
4


1.1.2.1 Hiệu suất phần cứng:
Yêu cầu tài nguyên cho nền tảng phần cứng thường được mơ tả theo diện tích
cổng. Diện tích thực hiện phụ thuộc vào cơng nghệ và thư viện ô tiêu chuẩn và được đo
bằng urm.
1.1.2.2 Hiệu suất phần mềm:
Đối với các ứng dụng phần mềm, yêu cầu tài nguyên có thể được đo bằng số
lượng thanh ghi, cũng như số byte RAM và ROM được yêu cầu. Các hàm sử dụng một
số lượng nhỏ các thanh ghi có tổng phí thấp hơn, vì phải đặt ít biến hơn trên ngăn xếp
trước khi các thanh ghi có thể được ghi đè. ROM được sử dụng để lưu trữ thuật tốn và
có thể bao gồm dữ liệu cố định, chẳng hạn như S- hộp hoặc khóa vịng được mã hóa
cứng, trong khi RAM được sử dụng để lưu trữ các giá trị trung gian có thể được sử dụng
trong tính tốn. Điều này có thể dẫn đến sự đánh đổi bổ sung giữa việc tính tốn các giá
trị một cách nhanh chóng so với việc tìm kiếm các giá trị trong một bảng.
1.1.3 Các yêu cầu thiết kế thuật toán
1.1.3.1 Mã khối hạng nhẹ
Hiệu suất của mật mã khối hạng nhẹ so với mật mã khối thông thường đạt được
bằng cách sử dụng các lựa chọn thiết kế gọn nhẹ như:
- Kích thước khối nhỏ hơn: Để tiết kiệ m bộ nhớ, mật mã khối hạng nhẹ có thể
sử dụng kích thước khối nhỏ hơn AES (ví dụ: 64 bit hoặc 80 bit, thay vì 128 bit). Cũng
cần lưu ý rằng việc sử dụng kích thước khối nhỏ sẽ giảm các giới hạn về số lượng khối
văn bản gốc tối đa được mã hóa. Tùy thuộc vào thuật tốn, điều này có thể dẫn đến các
cuộc tấn cơng như phục hồi văn bản gốc hoặc khơi phục khóa hoặc với xác suất khơng
đáng kể.

- Kích thước khóa nhỏ hơn: Một số mật mã khối hạng nhẹ sử dụng kích thước
khóa nhỏ (dưới 96 bit) để mang lại hiệu quả.
- Các vòng đơn giản hơn: Các thành phần và thao tác được sử dụng trong mật
mã khối hạng nhẹ thường đơn giản hơn so với các thuật toán mã khối thông thường.
Trong các thiết kế nhẹ sử dụng S-hộp, S-hộp 4 bit được ưa thích hơn S-hộp 8 bit.
5


- Lược đồ khóa đơn giản hơn: Lược đồ khóa phức tạp làm tăng bộ nhớ, độ trễ
và mức tiêu thụ điện năng của việc triển khai; do đó, hầu hết các mật mã khối nhẹ sử
dụng lược đồ khóa đơn giản có thể tạo khóa phụ khi đang di chuyển. Điều này có thể
cho phép các cuộc tấn cơng sử dụng các khóa liên quan, các khóa yếu, các khóa đã biết
hoặc thậm chí các khóa được chọn.
- Triển khai tối thiểu: Có một số chế độ hoạt động và giao thức chỉ yêu cầu
chức năng mã hóa của mật mã khối. Một số ứng dụng có thể yêu cầu một thiết bị chỉ
hỗ trợ một trong các hoạt động mã hóa hoặc giải mã. Chỉ thực hiện các chức năng cần
thiết của mật mã có thể cần ít tài nguyên hơn so với thực hiện toàn bộ cả q trình.
1.1.3.2 Hàm băm hạng nhẹ
Các hàm băm thơng thường có thể khơng phù hợp với các mơi trường bị hạn chế,
chủ yếu là do kích thước trạng thái bên trong lớn và yêu cầu tiêu thụ điện năng cao.
- Kích thước đầu ra và trạng thái bên trong nhỏ hơn: Kích thước đầu ra lớn
rất quan trọng đối với các ứng dụng yêu cầu khả năng chống va chạm của các hàm băm.
Đối với các ứng dụng không yêu cầu khả năng chống va chạm, có thể sử dụng trạng
thái bên trong và kích thước đầu ra nhỏ hơn. Khi cần có hàm băm chống va chạm, có
thể chấp nhận rằng hàm băm này có cùng độ bảo mật chống lại tấn công kháng tiền ảnh
thứ nhất, kháng tiền ảnh thứ hai và va chạm. Điều này có thể làm giảm kích thước của
trạng thái nội bộ.
- Kích thước bản tin nhỏ hơn: Các hàm băm được tối ưu hóa cho các bản tin
ngắn có thể phù hợp hơn cho các ứng dụng nhẹ.
1.1.3.3 Mã xác thực bản tin hạng nhẹ

Mã xác thực bản tin (MAC) tạo thẻ từ bản tin và khóa bí mật, được sử dụng để
xác minh tính xác thực và tính tồn vẹn của tin nhắn. Kích thước thẻ được khuyến nghị
tối thiểu là 64 bit cho các ứng dụng thông thường. Đối với một số ứng dụng nhất định
như VoIP (Thoại qua IP), đôi khi chấp nhận tin nhắn khơng trung thực có thể có tác
động hạn chế đến bảo mật của ứng dụng, do đó có thể sử dụng các thẻ ngắn hơn sau khi
xem xét cẩn thận.
6


1.1.3.4 Mã dòng hạng nhẹ
Mật mã dòng cũng là nguyên thủy hứa hẹn cho môi trường bị hạn chế. Cuộc thi
eSTREAM, được tổ chức bởi Mạng lưới xuất sắc châu Âu về mật mã, nhằm xác định
các mật mã dòng mới có thể phù hợp để áp dụng rộng rãi. Vịng chung kết của cuộc thi
đã được cơng bố vào năm 2008 và bao gồm ba mật mã dòng cho các ứng dụng phần
cứng với tài nguyên bị hạn chế là Grain, Trivium và Mickey.
1.2 Hệ mật CLOC
CLOC (Compact Low-Overhead CFB) được phát triển ở trường đại học Nagoya,
Nhật Bản, là lược đồ mã hóa xác thực an tồn chứng minh được (sử dụng các chế độ
hoạt động của mã khối). CLOC xây dựng trên các lược đồ trước đó như CCM, EAX và
EAX nguyên thủy bằng cách giảm thiểu phần thông tin mào đầu của mã khối, tối ưu độ
phức tạp của phép tính tốn trước và u cầu về bộ nhớ.
1.2.1 Hệ mật có xác thực
Hệ mã có xác thực (AE - authenticated encryption) hay hệ mã mật có xác thực
kèm dữ liệu liên kết (AEAD - authenticated encryption with associated data) là một
dạng của hệ mật khóa đối xứng bảo đảm tính bí mật, tính tồn vẹn, và tính xác thực dữ
liệu theo từng bước. Trong mỗi bước, phép mã hóa sẽ được kết hợp với khối tạo nhãn
(cho phép kiể m tra tính tồn vẹn), cịn ở phép giải mã sẽ tiến hành kiể m tra nhãn nhận
được. Tính bí mật bảo vệ thơng tin bằng cách chuyển đổi bản rõ đầu vào thành các bit
ngẫu nhiên độc lập, cịn tính xác thực bảo đảm tính toàn vẹn và nguyên gốc của dữ liệu
nhờ cơ chế phát hiện sự thay đổi bất kỳ của dữ liệu.


7


Hình 1. 1 Hệ mã có xác thực
Phần lớn các thuật tốn xác thực sử dụng mã dịng hoặc mã khối làm cơ sở để
mã hóa dữ liệu, đồng thời ứng dụng cấu trúc bảo tồn trạng thái mã hóa. Hàm cập nhật
trạng thái (có phản hồi) được cấp thơng số từ một vài đầu vào hoặc toàn bộ đầu vào để
tạo nhãn đảm bảo tính xác thực. Nhãn xác thực này cho phép phát hiện các nỗ lực giả
mạo. Đây chính là ưu thế của lược đồ kết hợp bảo đảm cả tính bí mật và cả tính tồn
vẹn. Tuy nhiên, các tấn công thực tiễn thường tập trung nhiều vào các ứng dụng và giao
thức (SSL/TLS), cho thấy hệ mật an toàn cần phải kết hợp cả chế độ bảo mật với chế
độ xác thực.
Hệ mã có xác thực là kiểu hệ mật khóa bí mật bảo đảm tính bí mật và tính tồn
vẹn của các bản tin (thơng báo) nhờ sử dụng khóa chia sẻ giữa người gửi và người nhận.
Các hệ mật sử dụng khóa bí mật như:
- Mã khối: bản tin ngắn có độ dài xác định được mã hóa bằng khóa bí mật, khóa
này được chia sẻ giữa người gửi và người nhận. Ví dụ, hệ mật mã khối phổ biến là AES
mã hóa từng khối dữ liệu 16-byte (128 bit) bằng khóa bí mật 128-bit, 192-bit hoặc 256bit.
- Mã dịng: bản tin có độ dài biến đổi sẽ được mã hóa nhờ sử dụng khóa bí mật
chia sẻ giữa người gửi và người nhận, kèm một giá trị ngẫu nhiên công khai (public
nonce).
- Mã xác thực thơng báo (MAC): bản tin có độ dài thay đổi sẽ được rút gọn
8


qua khối xác thực bằng khóa bí mật chia sẻ giữa người gửi và người nhận, kèm một giá
trị ngẫu nhiên công khai (public nonce). Các hàm băm mật mã như SHA-3 và các biến
thể của mã khối thường được sử dụng để xây dựng các mã xác thực thông báo - MAC.
- Mã hóa có xác thực (AE): bản tin có độ dài thay đổi được mã hóa, cũng như

được xác thực bằng cách sử dụng khóa bí mật chia sẻ giữa người gửi và người nhận,
kèm theo một giá trị ngẫu nhiên công khai (public nonce).
1.2.2 Tham số kỹ thuật
CLOC (phát âm là “clock”) là một mã khối hoạt động để mã hóa xác thực với
các dữ liệu liên kết (AEAD), nó cũng được gọi là mật mã xác thực. Thiết kế của CLOC
nhằm mục đích đảm bảo sự an tồn và tối ưu hóa việc triển khai mã khối, độ phức tạp
tiền mã hóa và yêu cầu về bộ nhớ. CLOC xử lý dữ liệu đầu vào một cách hiệu quả và
phù hợp để sử dụng cho các bộ xử lý nhúng. CLOC được khởi tạo dựa trên AES với
chiều dài khối 16 byte và 8 byte đối với mã khối TWINE.
1.2.2.1 Ký hiệu
Gọi {0,1} là tập hợp tất cả các chuỗi bit hữu hạn, bao gồm cả chuỗi rỗng s. Với
một số nguyên l > 0, cho là tập hợp tất cả các chuỗi bit của l bit. Ta cho B = {0,1}8 là
tập hợp các chuỗi 8 bit, B*là tập hợp các chuỗi hữu hạn. Với X,Y e{0,1}*ta viết X || Y,
(X,Y) hoặc XYđể biểu thị sự kết hợp của chúng. Với l > 0, ta viết Perm(n) để biểu thị
chuỗi bit bao gồm l bit 0, 1l G {0,1}để biểu thị chuỗi bit bao gồm l bit 1. Với X e
{0,1}*, |X| là độ dài của bit, với l > 1 thì X = |”|x| /1"I là độ dài của l bit. Với X e {0,1}*
và l > 0 thì |X| > l, msỜỊ (X) là lấy l số bit cao nhất của dãy X. Ví dụ ta có msb(1100) = 1
và msb3(1100) = 110. Với X G {0,1}* và l > 1 ta viết phân vùng l bit là (X[1],...,X[x])—

X, nếu X—£, thì x = 1và X[1]— X với X [1W.
CLOC đã thay đổi độ dài khối n và mã khối E: KE X {0,1}n

{0,1}n với

K, là một khóa khơng rỗng. Với phép hoán vị Perm(n) là tất cả các hoán vị trong {0,1}n,
ta viết EK e Perm(n) để đặc tả các hoán vị của K c K , và C = EK(M) là bản mã của M e
9


{0,1}n với khóa K e KE. CLOC giới hạn tất cả các biến đầu vào và đầu ra của CLOC dưới

dạng chuỗi byte và giả định dạng lớn cho tất cả các biến.

1.2.2.2 Thuật tốn và các tham số
CLOC có ba tham số, một mã khối E: KE X {0,1}n {0,1}n, một giá trị nonce có
độ dài lN , một thẻ có độ dài T, với lN và T được tính theo bit. Trong đó, một nonce
tương ứng với số thơng báo cơng khai. CLOC khơng có số thơng báo mật và giá trị này
sẽ được khai báo là 0. CLOC yêu cầu 1 < lN < n - 9 và 1 nguyên, nG {64,128}. Ký hiệu CLOC[E,lN,T] với các tham số trên, các tham số này có
thể bỏ qua nếu khơng dùng đến. CLOC[ E, lN ,T]=(CLOC-E,CLOC-D) tương ứng vớ i
phép mã hóa và giải mã.

‘ CLOC-E:

Cú pháp:

CL0C-D
:
v

K

K

X
X
CLOC NCLOC

X
X
CLOC NCLOC


ACLOC

XM

ACLOC

X CT

CLOC

^

CT

CLOC

CLOC ^MCLOC u

{T}

Trong đó, Kcưx. = KE là khơng gian khóa, trùng với khơng gian khóa của mã khối,
Ncvoc = B!'/8 là không gian c ủa Nonce, ALOC = B * là không gian dữ liệu liên kết. MCL0C
= B * là không gian chứa bản rõ, CTcưyc = Ccưyc X Tcưyc là không gian chứa bản mã, với
Ccvoc = B *và TCĨJŨC = Br 8 là không gian thẻ, 1Ể MCL0C là ký hiệu từ chối. Ta viết (C, T)
CLOC-EẤ(N, A, M)và
M CLOC-D (N, A,C,T) hoặc

CI,OC-D (N, A,C,T).


Các thành phần chính c ủa hệ mật CLOC gồm: hàm băm (HASH), hàm mã hóa
(ENC), hàm giải mã (DEC), và hàm giả ngẫu nhiên (PRF). Hàm HASH và hàm PRF là
các biến thể c ủa CBC-MAC. Cịn khối ENC sử dụng mã hóa AES ở chế độ CFB. Để
xử lý dữ liệu liên kết (Associated Data), bản mã CBC- MAC được gọi hai lần, trong đó
bản mã được sinh ra từ một lờ i gọi trong chế độ CFB. Cú pháp c ủa các hàm thể hiện
như sau:
HASH:K

CLOC

XN

CLOC

X

ACLOC

< PRF:KCLOC X {0,1}n X CCLOC

{0 1}n

,

TCLOC

10


ENC:K


CLOC

X {0 }n X M

,l

CLOC

„DEC:KCLOC X {0,1}n X CCLOC

CCLOC
MCLOC

Hình 1. 2 thể hiện lược đồ thuật tốn mã hóa CLOC. Với đầ u vào là dữ liệu liên
kết A, số thông báo công khai N và bản rõ M là đầu vào sẽ cho đầu ra là bản mã C và
thẻ xác thực T.

11


Hình 1. 2 Lược đồ thuật tốn mã hóa của CLOC
CLOC-Er( N, A, M)
1.
2.
3.
4.

V HASHr(N, A)
C ENCK(V,M)

T PRFK (V, C)
return (C ,T)

CLOC-Dr( N, A, C ,T)
1.
2.
3.
4.
5.

V HASHr(N, A)
T* < PRFK (V, C)
if T T * then return ±
M DEC^(V, C)
return M

Hình 1. 3 Hàm mã hóa và giải mã của CLOC
Hình 1. 3 thể hiện hàm mã hóa và giải mã của CLOC. Đối với phép mã hóa,
bước số 1 tạo ra giá trị V sẽ tiếp tục được tham gia vào q trình mã hóa và tạo thẻ
xác thực ở bước 2 và 3. Trong phép giải mã, cũng tương tự như mã hóa, giá trị V
được sinh ra sẽ được kết hợp với bản mã để so sánh hai thẻ xác thực T với nhau, nếu
khác nhau sẽ trả về giá trị từ chối ±.
Hình 1. 4 là bốn giải thuật của 4 thành phần chính trong hệ mật CLOC. Trong
các chương trình con, CLOC sử dụng hàm đệm one-zero ozp: B* B* các hàm sửa
bit fix0, fix1: B*B*, và 5 hàm TWEAK f,f,g,g2,h thuộc {0,1}”.

12


Hàm [IASIIJ N, A)


Hàm PRFK (V, C)

1. (41],...,A[a])z—A
2. SH[1] z EK(fix0(ozp(A[1])))
3. if msbỵ (ozp(A[1])) — 1 then
4. SH [1] z (hSH [1])
5. if a > 2 then
6. for i z 2 to a -1 do
7. SH [i] z EK (SH [i -1] © ozp(A[i]))
8. SH[a] z EK(SH[a -1] © ozp(A[a]))
9. if |A[ a ]| — n then
10. V z f (SH [a] © ozp(param II A))
11. else
12. V z f (SH[a] © ozp(param II TV))
13. return V

1. if d — 0 then
2. T z msb (EK(g.(V)))
3. return T
4. (C[1],...,C[m])z— C
5. Sp[0] z EK())
6. for i z 1 to m — 1 do
7. Sp[i] z EK(Sp[i -1] © ozp(C[i]))
8. if 1 C[m]| — n then
9. sP[m] z EK(fi(Sp[m -1] © C[m]))
10. else
11. Sp[m] z EK(f2(Sp[m -1] © ozp(C[m])))
12. T z msbT (Sp[m])
13. return T


Hàm ENCK (V, M)

Hàm DEC. (V, C)

1.
2.
3.
4.
5.
6.
7.
8.

if Ml — 0 then
C z£
return C
(M[1],...,M[n])z— M
SE[1] z EK (V)
for i z 1 to m — 1 do
C[i] z SE[i] © M[i]
SE[i +1] z EK(fX1(C[i]))

z

9. C[m] msbM[ ](SE[m]) © M[m]
10. C z (C[1],..., C[m])
11. return C
m


T

1.
2.
3.
4.
5.
6.
7.
8.

if Cl — 0 then
Mz£
return M
(C[1],...,C[n])zn— C
SD[1] z EK (V)
for i z 1 to m -1 do
M[i] z SD [i] © C[i]
SD[i +1] z EK(fixi(C[i]))

z

9. M[m] msbM[ ](SD[m]) © C[m]
10.M z (M[1],...,M[m])
11. return M
m

Hình 1. 4 Các thành phần chính c ủa CLOC
Hình 1. 5 là hai trường hợp khi khở i tạo giá trị V. Ở bên trái là khi giá trị
0<|A|< n và ở bên phải là |A|> n + 1. Ta có V HASHK(N,A) với 0 <|A|< n (trái) và |A|> n

+ 1 (phải).

13


A[1]

param||N

A[2]

A[1]

Hình 1. 5 Khởi tạo giá trị IV

C[l] C[2]

C[m-1] C[m]

Hình 1. 6 Phép mã hóa và giải mã
Ở Hình 1. 6 Giá trị V sau khi khở i tạo sẽ được đi qua phép mã hóa theo
lược đồ. Ở đây các khối bản rõ và bản mã sẽ lần lượt được XOR với khối phía
trước sau khi đi qua phép mã hóa. Kết quả thu được là bản mã C và bản rõ M.
Hàm OZP s ử dụng để điều chỉnh độ dài của chuỗi đầu vào khiế n cho tổng
chiều dài trở thành bội số tích cực của n bit. Với X e B *, ozp(X) = X nếu |X| = lN
với l > 1, hoặc ozp(X) = XII1 ()" 1 ' xlmodn), ta có ozp(s) = 10” 1.
_

Hàm sửa bit fix 0, fix1 sử dụng để sửa các bit ý nghĩa của một chuỗi đầ u
vào thành 0 và 1. Với X e B *, fix0(X) định nghĩa là fix0(X) = X A o1X 1 và fix1(X)

_

định nghĩa là fix1(X) = X V10X 1 với A, V là các phép AND và OR.
_

14


Hình 1. 7 Tạo thẻ xác thực T
Hình 1. 7 thể hiện quá trình tạo thẻ xác thực trong các trường hợp với độ dài
bản mã là 0 ở bên trái và độ dài bản mã lớn hơn hoặc bằng 1 ở bên phải.
A[l]

param II N

/
if msbi(ozp(A[l])) — 1, then h, else i if |A[1]| = n, then f 1, else fa
X[l]

Ấ[2]

••• A[a — 1] A[a] param II/V

if msbifAfl]) = 1, then h, else i

if |d[a]| — n, then fl, else fa

Hình 1. 8 Giá trị V được khởi tạo từ hàm HASH
Hàm Tweak h sử dụng trong HASH nếu các bit ý nghĩa của phép ozp(H[1])
là 1. CLOC sử dụng f và f2 trong HASH và PRF, f sử dụng nếu khối đầu vào cuối

cùng đầy (ví dụ |^[ứ]| = n hoặc |c[m]| = n ) và f2 cũng sử dụng như vậy. CLOC sử
dụng g và g2 trong PRF, dùng g hoặc g2 nếu đối số thứ hai của đầu vào là chuỗi
trống (|c| = 0). Với X e{0,1}” cho

15


(X[1],X[2],X[3],X[4])^^—— X ta có các hàm f, f, gỉ, g2, h được định nghĩa là:
'fi( X) = (X [1,3],X[2,4],X[1,2,3],X[2,3,4])
f2( X) = (X [2],X[3],X[4],X[1,2])
< g1(X) = (X[3],X[4],X[1,2],X[2,3])

g2( X) = (X [2],X[3],X[4],X[1,2]) h(X) = (X [1,2],X[2,3], X
[3,4], X [1,2,4])
Với X[a, b] là X[a] ® X[b]
Các hàm Tweak được xác định bởi một ma trận M
0
1
M=\
0
0

0 0
0 0

1
1

1 0
0 1


0
0

Ma trận M 4x4 là ma trận nhị phân, Mi với i > 0 là lũy thừa của M, khi M

0

biểu thị ma trận định danh. f (X) = X .M8, f2 (X) = X .M2, g2 (X) = X M, h(X) =
X.M4, với X = (X[1],X[2],X[3],X[4]) là một vector.

Hình 1. 9 Quá trình mã hóa và giải mã
Hình 1. 9 thể hiện việc mã hóa và giải mã với giá trị của bản rõ và bản mã
lớn hơn hoặc bằng 1.

16


Hình 1. 10 Thẻ xác thực tạo ra với các trường hợp
Hình 1. 10 là quá trình tạo thẻ xác thực. Với độ dài bản mã bằng 0, thẻ T
sẽ được tạo trực tiếp như trên. Với độ dài bản mã lớn hơn hoặc bằng 1, thẻ T sau
khi đi qua hàm g2 và phép mã hóa EK sẽ được XOR với từng khối bản mã như
trên hình.
Bảng 1. 1 Các giá trị param tương ứng với các tham số
E
IN
T
param
AES-128
12

8
0xc0
AES-128
12
12
0xc1
AES-128
12
16
0xc2
AES-128
12
4
0xc3
AES-128
8
8
0xd0
AES-128
8
12
0xd1
AES-128
8
16
0xd2
AES-128
8
4
0xd3

AES-128
14
8
0xe0
AES-128
14
12
0xe1
AES-128
14
16
0xe2
AES-128
14
4
0xe3
Các chương trình con được định nghĩa trong các hình từ Hình 1. 4 đến Hình 1.
10, i là hàm định danh, i(X) = X với X e {0,1}”. Trong hàm HASH, giá trị nonce
N được đệm với param e B là 8 bit không đổi dựa trên các tham số E, lN . Giá trị
cụ thể của param được thể hiện trong Bảng 1. 1.
1.2.2.3 Không gian của tham số
CLOC có khơng gian tham số như sau:
- Mã khối E: AES-128 (128bit khóa) hoặc TWINE-80 (80bit khóa).
- Độ dài Nonce ỈN: AES-128 ỈN e {64bit (8byte), 96bit(12byte),
112bit(14byte)} và TWINE-80 ỈN e {32 bit (4 byte), 48 bit (6 byte)}.
17


×