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

NGHIÊN CỨU THỰC THI HỆ MẬT MORUS TRÊN THẺ 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.43 MB, 74 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 MORUS TRÊN
THẺ 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 KÝ HIỆU, TỪ VIẾT TẮT .......................................................... iii
DANH MỤC BẢNG BIỂU ............................................................................... iv
DANH MỤC HÌNH VẼ ..................................................................................... v
LỜI NĨI ĐẦU ................................................................................................... 1
CHƯƠNG 1: TỔNG QUAN VỀ MẬT MÃ HẠNG NHẸ, HỆ MẬT MORUS .. 2
1.1 Tổng quan về mật mã hạng nhẹ ............................................................ 2
1.1.1 Giới thiệu chung về các thuật tốn mã hóa-xác thực hạng nhẹ ..... 2
1.1.2 Nguyên lý hoạt động .................................................................... 4
1.1.3 Một số ứng dụng của các thuật toán mã hóa-xác thực hạng nhẹ ... 5
1.2 Hệ mật MORUS ................................................................................... 6
1.2.1 Giới thiệu hệ mật MORUS .......................................................... 6
1.2.2 Các tham số của hệ mật ............................................................... 7
1.2.3 Các ký hiệu và quy ước................................................................ 7
1.2.4. Hàm cập nhật trạng thái .............................................................. 9
1.2.5 Q trình hoạt động của hệ mật MORUS................................... 13
1.2.6 Tính chất an toàn của hệ mật MORUS ....................................... 20


CHƯƠNG 2: TÌM HIỂU CƠNG NGHỆ JAVACARD VÀ MƠI TRƯỜNG
THIẾT KẾ APPLET ........................................................................................ 24
2.1 Công nghệ JavaCard .......................................................................... 24
2.1.1 Cấu tạo thẻ JavaCard ................................................................. 24
2.1.2 Vịng đời thẻ JavaCard............................................................... 26
2.1.3 Tập ngơn ngữ JavaCard ............................................................. 27
2.1.4 Kiến trúc JavaCard .................................................................... 29
2.1.5 Giao thức truyền thông giữa thẻ với thế giới thực ...................... 30
i


2.2 Phân tích lỗ hổng JavaCard ............................................................... 35
2.2.1 Một số nguy cơ gây mất an toàn đối với thẻ JavaCard ............... 35
2.2.2 Một số tấn công hiện hữu lên thẻ JavaCard ................................ 37
2.3 Kỹ thuật lập trình phát triển Applet ................................................... 41
2.3.1 JavaCard Applet ........................................................................ 41
2.3.2 Tiến trình phát triển Applet ........................................................ 44
2.3.3 Cài đặt Applet ............................................................................ 46
CHƯƠNG 3: THỰC THI NHÚNG HỆ MẬT MORUS VÀO THẺ JAVACARD
VÀ ĐỀ XUẤT ỨNG DỤNG............................................................................ 49
3.1 Lập trình nhúng thuật tốn MORUS vào thẻ....................................... 50
3.1.1 Công cụ thực thi hệ mật MORUS .............................................. 50
3.1.2 Cài đặt thuật toán MORUS ........................................................ 51
3.1.3 Biên dịch nhúng hệ mật MORUS vào thẻ JavaCard ................... 57
3.1.4 Xây dựng giao diện mã hóa và giải mã ...................................... 61
3.2 Mơ tả, phân tích các kết quả thực nghiệm ........................................... 61
3.3 Đề xuất ứng dụng hệ mật MORUS mã hóa-xác thực .......................... 64
KẾT LUẬN ...................................................................................................... 66
TÀI LIỆU THAM KHẢO ................................................................................ 67


ii


DANH MỤC KÝ HIỆU, TỪ VIẾT TẮT
Từ viết tắt

Tiếng Anh

Tiếng Việt
Mã hóa có xác thực

AE

Authenticated Encryption

AEAD

Authenticated Encryption with Mã hóa có xác thực với dữ liệu
Associated Data
liên kết

APDU

Application Protocol Data Unit Đơn vị dữ liệu giao thức ứng
dụng

API

Application Programming


Giao diện lập trình ứng dụng

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

ATM

Automatic Teller Machine

CAESAR

Competition for Authenticated Cuộc thi mã hóa có xác thực: an

EEPROM

Encryption: Security,
Applicability, and Robustness

tồn, khả năng áp dụng và tính
mạnh mẽ

Ellectrically Erasable
Programmable Read-Only

Bộ nhớ chỉ đọc cho phép nạp/
xóa bằng điện

Memory
GSM


Global System for Mobile

Hệ thống thơng tin di động tồn

Communications

cầu

JCRE

JavaCard Runtime Enviroment Môi trường chạy JavaCard

JCVM

JavaCard Virtual Machine

Máy ảo JavaCard

LSB

Least Significant Bit

Bit có trọng số thấp nhất

MAC

Message Authentication Code

Mã xác thực thơng báo


MSB

Most Significant Bit

Bit có trọng số cao nhất

NIST

National Institute of Standards Viện tiêu chuẩn và công nghệ
and Technology

quốc gia

RAM

Random Access Memory

Bộ nhớ truy cập ngẫu nhiên

ROM

Read Only Memory

Bộ nhớ chỉ đọc

SIM

Subcriber Identity Module

Mô-đun định danh chủ thuê bao


iii


DANH MỤC BẢNG BIỂU
Bảng 1.1. Hệ mật khóa bí mật ............................................................................ 3
Bảng 1.2. Các tham số của hệ mật MORUS ....................................................... 7
Bảng 1.3. Các phép toán dùng trong hệ mật MORUS......................................... 7
Bảng 1.4. Các ký hiệu và hằng số ....................................................................... 8
Bảng 1.5. Hằng số dịch vòng Rotl _ xxx _ yy dùng trong trong MORUS.......... 10
Bảng 1.6. Hằng số dịch vòng dùng trong phép dịch vòng trái trong MORUS ... 10
Bảng 1.7. Mục tiêu an toàn của hệ mật MORUS .............................................. 20
Bảng 2.1. Các giai đoạn phát triển của thẻ JavaCard ........................................ 26
Bảng 3.1. Thông số thẻ JavaCard J2A080. ....................................................... 58
Bảng 3.2. Dung lượng file “.cap” sau khi biên dịch các hệ mật: MORUS, ACORN
và AEGIS ......................................................................................................... 62
Bảng 3.3. Thời gian mã hóa và giải mã của MORUS ....................................... 62
Bảng 3.4. Thời gian mã hóa và giải mã của ACORN ....................................... 62
Bảng 3.5. Thời gian mã hóa và giải mã của AEGIS.......................................... 63

iv


DANH MỤC HÌNH VẼ
Hình 1.1. Thuật tốn mã hóa-xác thực ................................................................ 3
Hình 1.2. Ngun lý hoạt động thuật tốn mã hóa-xác thực ............................... 4
Hình 1.3. Một số ứng dụng của các thuật tốn mã hóa-xác thực hạng nhẹ .......... 5
Hình 1.4. Phép Rotl _ xxx _ yy ......................................................................... 10
Hình 1.5. Hàm cập nhật trạng thái của hệ mật MORUS ................................... 13
Hình 1.6. Sơ đồ quá trình thực thi của thuật tốn MORUS ............................... 14

Hình 1.7. Lưu đồ thuật tốn q trình khởi tạo của MORUS-640 ..................... 16
Hình 1.8. Quá trình mã hóa của MORUS ......................................................... 17
Hình 1.9. Lưu đồ thuật tốn q trình mã hóa của MORUS-640 ...................... 18
Hình 1.10. Lưu đồ thuật tốn q trình kết thúc của MORUS-640 ................... 19
Hình 2.1. Bề mặt thẻ JavaCard ......................................................................... 25
Hình 2.2. Thiết bị đầu đọc thẻ .......................................................................... 26
Hình 2.3. Các chân tiếp xúc của thẻ JavaCard .................................................. 26
Hình 2.4. Vịng đời thẻ JavaCard...................................................................... 27
Hình 2.5. Kiến trúc tổng qt của cơng nghệ JavaCard .................................... 29
Hình 2.6. Giao thức truyền thơng ..................................................................... 30
Hình 2.7. Giao thức truyền thơng trong mã hóa-xác thực ................................. 31
Hình 2.8. Khung mã hóa-xác thực mơ tả tương tác giữa máy chủ và JavaCard 34
Hình 2.9. Các rị rỉ khi phần cứng mật mã hoạt động ........................................ 38
Hình 2.10. Q trình thu thập dữ liệu trong tấn cơng SCA ............................... 39
Hình 2.11. Các phép đo dịng điện tiêu thụ ....................................................... 40
Hình 2.12. Máy ảo JavaCard ............................................................................ 42
Hình 2.13. Kiến trúc hệ thống trên thẻ JavaCard .............................................. 43
Hình 2.14. Tiến trình phát triển Applet ............................................................. 46
Hình 2.15. Cài đặt Applet ................................................................................. 47
Hình 3.1. Hệ phát triển tích hợp thuật tốn MORUS vào thẻ JavaCard ............ 50
Hình 3.2. Giao diện cửa sổ màn hình JCIDE .................................................... 51
Hình 3.3. Giao diện cửa sổ màn hình cơng cụ PyApduTool ............................. 51
Hình 3.4. Cấu trúc project ................................................................................ 52
Hình 3.5. Khai báo lớp Applet.......................................................................... 52
Hình 3.6. Các tham số của chương trình ........................................................... 52
Hình 3.7. Định nghĩa phương thức xử lý APDU ............................................... 53
Hình 3.8. Lưu đồ thuật toán phương thức xử lý APDU .................................... 53
v



Hình 3.9. Định nghĩa phương thức mã hóa ....................................................... 54
Hình 3.10. Lưu đồ thuật tốn phương thức mã hóa ........................................... 55
Hình 3.11. Định nghĩa phương thức giải mã ..................................................... 56
Hình 3.12. Lưu đồ thuật toán phương thức giải mã .......................................... 56
Hình 3.13. Mở bộ cơng cụ PyApduTool trong trình điều khiển ........................ 59
Hình 3.14. Chọn đầu đọc kết nối đến thẻ .......................................................... 59
Hình 3.15. Chọn file morus.cap ........................................................................ 60
Hình 3.16. Tải file morus.cap lên thẻ................................................................ 60
Hình 3.17. Kiểm tra Package và Applet đã tải lên thẻ ....................................... 60
Hình 3.18. Giao diện chương trình mã hóa và giải mã ...................................... 61
Hình 3.19. Biểu đồ so sánh thời gian mã hóa của MORUS với ACORN, AEGIS
......................................................................................................................... 63
Hình 3.20. Biểu đồ so sánh thời gian giải mã của MORUS với ACORN, AEGIS
......................................................................................................................... 64

vi


LỜI NĨI ĐẦU
Trong mơi trường cơng nghệ mạng máy tính hiện nay, bài tốn an tồn thơng
tin ngày càng trở nên cần thiết và cấp bách. An tồn thơng tin thường địi hỏi đảm
bảo cả tính bí mật, tồn vẹn và xác thực. Có hai cách tiếp cận để thực hiện điều này.
Cách thứ nhất là mã hóa thơng tin với các thuật tốn mã khối hoặc mã dịng để đảm
bảo tính bí mật, tiếp đến sử dụng các thuật tốn mã xác thực thơng báo MAC
(Message Authentication Code) để thực hiện xác thực và toàn vẹn. Cách tiếp cận thứ
hai là xây dựng các thuật tốn mã hóa có xác thực (gọi tắt là mã hóa-xác thực) nhằm
đảm bảo đồng thời cả tính bí mật và tính xác thực cho thơng báo theo một thuật tốn
duy nhất (loại bỏ sự ghép nối giữa thuật tốn mã hóa và thuật toán MAC riêng biệt).
Cách tiếp cận thứ hai đang là hướng đi mới trong khoa học mật mã. Hơn nữa, trước
sự phát triển của các hệ thống thanh toán dùng thẻ và xu hướng ứng dụng IoT

(internet of things), các dịch vụ liên ngân hàng đang dần chuyển đổi thẻ từ sang thẻ
chip nhằm đáp ứng yêu cầu bảo mật ngày càng cao, do đó 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ị giới hạn về tài
nguyên và năng lượng tiêu thụ là bài toán rất hiện hữu. Dựa trên các cơng trình cơng
bố [3, 4, 5], tơi thấy MORUS là thuật tốn mã hóa-xác thực phù hợp để xử lý nhanh
các thông tin người dùng, hoạt động ổn định trong các hệ nhúng và đảm bảo được
về cả tính bí mật và tính xác thực.
Xuất phát từ thực tiễn trên, tôi chọn đề tài “Nghiên cứu thực thi hệ mật
MORUS trên thẻ JavaCard” làm đồ án của mình với mục đích kiểm chứng tính
đúng đắn và an tồn của hệ mật hạng nhẹ này trên thẻ JavaCard nhằm khẳng định
khả năng ứng dụng thuật toán vào các giao dịch dùng thẻ.
Để đáp ứng mục tiêu trên, nội dung đồ án được thực hiện theo 3 chương:
Chương 1: Tổng quan về mật mã hạng nhẹ, hệ mật MORUS. Chương này
trình bày tổng quan về mật mã hạng nhẹ và hệ mật MORUS.
Chương 2: Tìm hiểu cơng nghệ JavaCard và môi trường thiết kế Applet.
Chương này khái quát về Javacard, phân tích các lỗ hổng JavaCard và trình bày kỹ
thuật lập trình ứng dụng Applet cho hệ thống giao dịch thẻ.
Chương 3: Thực thi hệ mật MORUS vào thẻ JavaCard và đề xuất ứng
dụng. Chương này thực hiện lập trình nhúng hệ mật MORUS vào thẻ JavaCard; mơ
tả, phân tích các kết quả thực nghiệm, trên cơ sở đó đề xuất ứng dụng hệ mật MORUS
mã hóa-xác thực các dữ liệu giao dịch dùng thẻ.


CHƯƠNG 1: TỔNG QUAN VỀ MẬT MÃ HẠNG NHẸ, HỆ MẬT MORUS
Chương này của đồ án trình bày tổng quan về mật mã hạng nhẹ: giới thiệu
chung về các thuật tốn mã hóa-xác thực hạng nhẹ, ngun lý hoạt động và một
số ứng dụng của các thuật tốn mã hóa-xác thực hạng nhẹ. Trình bày hệ mật
MORUS: các tham số (IV, AD, khóa, Nonce và Tag) của hệ mật, hàm cập nhật
trạng thái, các tiến trình hoạt động, sau đó nêu lên một số tính chất an tồn của hệ
mật MORUS.

1.1 Tổng quan về mật mã hạng nhẹ
1.1.1 Giới thiệu chung về các thuật tốn mã hóa-xác thực hạng nhẹ
Mật mã hạng nhẹ [1] là một bộ phận của mật mã nhằm mục đích 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
đã thực hiện một lượng công việc đáng kể liên quan đến mật mã học nhẹ, bao gồm
triển khai hiệu quả các chuẩn mật mã thông thường, và thiết kế, phân tích các
thuật tốn và 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ẹ để thành lập
các tiêu chuẩn mật mã hiện hành đối với các thiết bị có tài nguyên hạn chế, tiến
đến phê chuẩn các tiêu chí của lớp mật mã hạng nhẹ chuyên dụng. NIST đã tổ
chức 2 hội thảo về mật mã hạng nhẹ để thu hút các nhà mật mã học và khoa học
công nghệ về các giới hạn tài nguyên của thiết bị, các yêu cầu và đặc điểm của
lớp mật mã hạng nhẹ ứng dụng trong thế giới thực [1].
(AE – authenticated encryption) hay thuật tốn mã hóa-xác thực 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 nhằm 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 [2] (Hình 1.1). Trong đó, 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 nhãn xác thực bảo đảm tính tồn
vẹn và ngun 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.
Đặc trưng duy nhất chỉ có ở thuật tốn mã hóa-xác thực nằm ở chỗ nó cung
cấp đồng thời cả tính bí mật và tính xác thực.


Khóa bí mật

Bản rõ

Dữ liệu

liên kết

Bản mã (bí mật)

Thuật tốn mã hóaxác thực

Nhãn (xác thực)

Số thơng báo Số thơng báo
bí mật
cơng khai

Hình 1.1. Thuật tốn mã hóa-xác thực
Phần lớn các thuật tốn mã hóa-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 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.
Mật mã xác thực là kiểu hệ mật khóa bí mật (Bảng 1.1) 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.
Bảng 1.1. Hệ mật khóa bí mật
Độ dài bản tin

Mã hóa

Xác thực

Mã khối


Cố định



Khơng

Mã dịng

Thay đổi



Khơng

MAC

Thay đổi

Khơng



Mã hóa-xác thực

Thay đổi






Hệ mật

So với hệ mật khóa cơng khai, hệ mật khóa bí mật đáp ứng được hiệu suất
cao khi hoạt động. Các biến thể của hệ mật khóa bí mật, gồm có:
- 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 256-bit.


- 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 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.
- 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.1.2 Nguyên lý hoạt động
Cách tự nhiên nhất để xây dựng các thuật toán mã hóa-xác thực là kết hợp
các nguyên thủy mật mã hiện có: hàm mã hóa, hàm băm và MAC. Do đó, có 3
cách tiếp cận cơ bản, gồm: Encrypt-then-MAC, Encrypt-and-MAC và MAC-thenEncrypt (Hình 1.2).
Bản rõ

Bản rõ


Mã hóa

Khóa

Bản rõ

Mã hóa

Khóa

MAC

MAC

Khóa

Bản rõ Thẻ xác thực

MAC

Mã hóa
Bản mã Thẻ xác thực

Bản mã

Thẻ xác thực
Bản mã

a) EtM


b) E&M

c) MtE

Hình 1.2. Nguyên lý hoạt động thuật tốn mã hóa-xác thực
Encrypt-then-MAC (EtM)
Đầu tiên, bản rõ được mã hóa, sau đó MAC được sinh ra dựa trên bản mã
kết quả. Bản mã và MAC được gửi đi cùng nhau.
Encrypt-and-MAC (E&M)
MAC được tạo ra dựa vào bản rõ và bản rõ được mã hóa mà khơng cần
MAC. MAC và bản mã được gửi đi cùng nhau.
MAC-then-Encrypt (MtE)


MAC được tạo ra dựa vào bản rõ. Sau đó bản rõ và MAC cùng được mã
hóa để thu được bản mã. Bản mã (chứa MAC đã mã hóa) được gửi đi.
1.1.3 Một số ứng dụng của các thuật toán mã hóa-xác thực hạng nhẹ
Ngày nay, mật mã hạng nhẹ ngày càng được chú trọng và phát triển. Nhiều
thuật toán mới ra đời thay thế một số thuật toán mật mã truyền thống đang được
ứng dụng trong các lĩnh vực kỹ thuật, công nghệ… đặc biệt là khi việc triển khai
các thiết bị điện toán nhỏ như thẻ RFID, điều khiển trong công nghiệp, cảm biến
và các thẻ JavaCard ngày càng trở nên phổ biến. Với thiết kế riêng của mình, các
thuật tốn mã hóa-xác thực hạng nhẹ đem lại nhiều lợi ích đặc trưng như yêu cầu
nguồn tài nguyên thấp, tài ngun tính tốn hạn chế, giá thành rẻ, hoạt động nhanh
thực hiện đầy đủ và hiệu quả chức năng của nó. Nó được kỳ vọng sẽ trở thành
một trong những cơng nghệ bảo mật hữu ích để thiết lập các dịch vụ mạng thế hệ
tiếp theo như IoT và hệ thống không gian mạng thực-ảo (Cyber-Physical
Systems).
Một số ứng dụng phổ biến của của thuật tốn mã hóa-xác thực hạng nhẹ có
thể kể đến như:

• Ứng dụng trong trao đổi thông tin các thiết bị IoT như thiết bị điện gia
dụng và nhà thơng minh, mã hóa dữ liệu trong RFID, các thiết bị cảm
biến, thiết bị đo thông minh…
• Các hệ thống giám sát, an ninh như hệ thống an ninh trên xe, giám sát
bệnh nhân không dây, hệ thống giao thơng thơng minh…

Hình 1.3. Một số ứng dụng của các thuật tốn mã hóa-xác thực hạng nhẹ


Bên cạnh những lợi ích thực tế, thuật tốn mã hóa-xác thực hạng nhẹ cịn
chứa đựng nhiều khó khăn cũng như những nguy cơ trong q trình áp dụng:
• Độ an tồn của thuật tốn mã hóa-xác thực hạng nhẹ khơng cao như các
thuật tốn mật mã thơng thường khác, vì nó phải cân bằng giữa hai yếu
tố là tính an tồn và tính gọn nhẹ.
• Các thuật tốn mã hóa-xác thực hạng nhẹ chỉ xử lý được một lượng thơng
tin nhỏ, khơng có băng thơng cao.
• Khó khăn trong việc tối ưu hóa các thuật tốn mã hóa-xác thực hạng nhẹ
hiện có. Điều này làm chậm đáng kể việc phát triển một thuật tốn mã
hóa-xác thực hạng nhẹ.
1.2 Hệ mật MORUS
1.2.1 Giới thiệu hệ mật MORUS
MORUS là thuật toán mã hóa-xác thực hạng nhẹ được giới thiệu bởi
Hongjun Wu và Tao Huang – hai nhà mật mã người Singapore trong cuộc thi về
các thuật tốn mã hóa có xác thực CAESAR (Competition for Authenticated
Encryption: Security, Applicability, and Robustness) [3] với 3 phiên bản:
MORUS-640-128, MORUS-1280-128 và MORUS-1280-256, các số nguyên thứ
nhất và thứ hai thể hiện tương ứng là kích thước trạng thái và kích thước khóa.
Các tham số cụ thể của từng phiên bản được nêu ra trong Bảng 1.2.
Đầu vào của hệ mật là bản rõ P có độ dài tùy ý. Hệ mật đảm bảo tính bí
mật do phép mã hóa bản rõ P được thực hiện bằng cách XOR với dịng khóa đầu

ra được tạo bởi hệ mật để thu được bản mã C . Hệ mật cũng lấy dữ liệu liên kết
AD có độ dài tùy ý làm đầu vào. Dữ liệu liên kết không được mã hóa. MORUS
cung cấp tính tồn vẹn cho cả bản mã P và dữ liệu liên kết AD .
MORUS sử dụng lược đồ tương tự như lược đồ Feistel loại 3 cho việc cập
nhật trạng thái [4]. Bản mã được tạo bằng cách XOR trạng thái bên trong với bản
rõ để đạt được tính bí mật. Hàm cập nhật trạng thái được thêm vào bản rõ để tạo
thẻ xác thực, đảm bảo tính xác thực và tính tồn vẹn.
Trạng thái bên trong được tạo thành từ 5 khối 128 bit hoặc 256 bit, tương
ứng tạo nên độ dài khối tổng cộng 640 bit hoặc 1280 bit. Việc mã hóa bắt đầu
bằng việc khởi tạo trạng thái. AD và bản rõ được chèn vào hàm cập nhật trạng
thái trong các khối 128 bit hoặc 256 bit. Khối cuối cùng được đệm thêm các bit
'0' cho đủ 128 bit hoặc 256 bit.


Chế độ giải mã tương tự như chế độ mã hóa. Bản mã được xử lý theo cách
tương tự như bản rõ trong phép mã hóa. Các giai đoạn khởi tạo và kết thúc yêu
cầu lần lượt 16 và 8 vòng lặp. Hàm cập nhật trạng thái gồm 5 vòng sử dụng các
phép XOR, phép dịch và phép AND và sử dụng rất nhiều phép dịch vòng chia
128 bit hoặc 256 bit tương ứng thành các khối 32 bit hoặc 64 bit. Số lượng bit
dịch vòng phụ thuộc vào vòng hiện tại (Bảng 1.5 và Bảng 1.6).
1.2.2 Các tham số của hệ mật
MORUS là một hệ mật có xác thực với hai kích thước trạng thái: 640 bits
và 1280 bits. Kích thước khóa 128 bits hoặc 256 bits. Độ dài dữ liệu liên kết và
độ dài bản rõ nhỏ hơn 264 bits. Độ dài thẻ xác thực nhỏ hơn hoặc bằng 128 bits,
trong [5] các tác giả khuyến nghị sử dụng thẻ xác thực 128 bits. Cả 3 phiên bản
đều dùng véc-tơ khởi tạo IV với độ dài 128 bit. MORUS sử dụng một giá trị nonce
128 bit, giá trị này khơng được dùng lại, trừ phi thay đổi khóa [5]. Bảng 1.2 dưới
đây tóm tắt các tham số của hệ mật.
Bảng 1.2. Các tham số của hệ mật MORUS
Độ dài (bits)

Các tham số

MORUS-640-

MORUS-

MORUS-1280-

128

1280-128

256

Bản rõ ( P )

 264

 264

 264

Dữ liệu liên kết ( AD )

 264

 264

 264


Khóa ( K )

128

128

256

Thẻ xác thực ( T )

128

128

128

Véc-tơ khởi tạo ( IV )

128

128

128

Trạng thái ( S )

640

1280


1280

1.2.3 Các ký hiệu và quy ước
a. Các phép toán
Các phép toán sau được dùng trong hệ mật MORUS:
Bảng 1.3. Các phép toán dùng trong hệ mật MORUS
Ký hiệu

Phép toán




phép XOR

||

phép nối

phép AND




phép dịch vòng trái



phép dịch vòng phải
phép lấy cận trên,  x  là số nguyên nhỏ nhất không bé


 x 

hơn x.

Rotl _128 _ 32 ( x, n )

chia một khối 128-bit x thành 4 từ 32-bit, dịch vòng trái

Rotl _ 256 _ 64 ( x, n )

chia một khối 256-bit x thành 4 từ 64-bit, dịch vòng trái

mỗi từ n bits.
mỗi từ n bits.

b. Các ký hiệu và hằng số
Các ký hiệu và hằng số sau được dùng trong hệ mật MORUS:
Bảng 1.4. Các ký hiệu và hằng số

hiệu và
hằng số

Ý nghĩa

0n

n bit 0

1n


n bit 1

AD

Dữ liệu liên kết (dữ liệu này khơng được mã hóa hoặc giải mã)

ADi128

Khối dữ liệu liên kết 16-byte (khối cuối cùng có thể không đủ)

ADi256

Khối dữ liệu liên kết 32-byte (khối cuối cùng có thể khơng đủ)

adlen

Độ dài bit của dữ liệu liên kết với 0  adlen  264

bi

Hằng số phép dịch vòng trong phép Rotl _ xxx _ yy , 0  i  4 , hằng số
này được cho trong Bảng 1.5.

C

Bản mã

Ci


Khối bản mã

const

Hằng số 32-byte ở dạng thập phân;

const0

16 bytes đầu tiên của const

const1

16 bytes thứ hai của const

IV128

Véc-tơ khởi tạo 128 bits dùng trong MORUS-640

K128

Khóa 128 bits dùng trong MORUS

K256

Khóa 256 bits dùng trong MORUS


Độ dài bit của bản rõ/bản mã với const = 00 01 01 02 03 05
msglen


08 0d 15 22 37 59 90 e9 79 62 db 3d 18 55 6d c2
2f

f 1 20 11 31 42 73 b5 28 dd .

P

Bản rõ

Pi

Khối bản rõ 16-byte

Si

Trạng thái tại đầu bước thứ i

S ij

Trạng thái tại đầu vòng thứ j của bước thứ i

S

Phần tử thứ k của trạng thái S ij . Trong MORUS-640, mỗi phần tử có

i
j ,k

độ dài 128 bits; trong MORUS-128, mỗi phần tử có độ dài 256 bits.


T

Thẻ xác thực

t

Độ dài bit của thẻ xác thực

 adlen 
Số lượng khối AD sau khi đệm thêm, với MORUS-640, u = 
;
 128 

u

 adlen 
với MORUS-1280, u = 
 256 
Số lượng khối bản rõ sau khi đệm thêm, với MORUS-640,

v

 msglen 
 msglen 
v=
v
=
;
với
MORUS-1280,

 256 
 128 

wi

Hằng số dùng trong phép dịch trái, hằng số này được cho trong Bảng 1.6.

1.2.4. Hàm cập nhật trạng thái
MORUS sử dụng hàm cập nhật trạng thái Update ( S i , pi ) để cập nhật nội
dung các yếu tố trạng thái. Trong mỗi bước i , có 5 vịng với các phép tốn tương
tự. Hai trong 5 yếu tố trạng thái S ij ,k được cập nhật. Các phép toán trong hàm cập
nhật trạng thái bao gồm: AND, XOR và phép dịch vịng. Khối thơng điệp mi được
sử dụng trong các cập nhật của vòng 2 đến vòng 5, khơng được sử dụng trong
vịng 1. Phép Rotl _ xxx _ yy để chia một phần tử trạng thái − xxx bits thành 4 từ

yy bits, và thực hiện phép dịch vịng trái cho mỗi từ yy bits (Hình 1.4).
Rotl _128 _ 32 được dùng trong MORUS-640 và Rotl _ 256 _ 64 được

dùng trong MORUS-1280. Hằng số dịch vòng đối với mỗi vòng được nêu ra trong
Bảng 1.5.


Bên cạnh phép toán Rotl _ xxx _ yy , phép dịch vịng trái tồn bộ phần tử
trạng thái được dùng để khuếch tán. Hằng số dịch vòng đối với dịch vòng trái
được liệt kê trong Bảng 1.6.

yy bit

yy bit


yy bit

yy bit

<<< b

<<< b

<<< b

<<< b

yy bit

yy bit

yy bit

yy bit

xxx bit
Hình 1.4. Phép Rotl _ xxx _ yy
Bảng 1.5. Hằng số dịch vòng Rotl _ xxx _ yy dùng trong trong MORUS
MORUS-640

MORUS-1280

b0

5


13

b1

31

46

b2

7

38

b3

22

7

b4

13

4

Bảng 1.6. Hằng số dịch vòng dùng trong phép dịch vòng trái trong MORUS
MORUS-640


MORUS-1280

w0

32

64

w1

64

128

w2

96

192

w3

64

128

w4

32


64


Hàm cập nhật trạng thái lấy các đầu vào từ trạng thái bên trong và một đầu
vào bên ngoài mi . Tùy thuộc vào giai đoạn của hệ mật, đầu vào bên ngồi mi có
thể là: các bit '0', dữ liệu liên kết, bản rõ hoặc biểu diễn độ dài của dữ liệu liên kết
và bản rõ.

(

) như sau:
= Rotl _ xxx _ yy ( S  ( S

S i +1 = Cập nhật trạng thái S i , pi

Vòng 1:

i
S1,0

i
0,0

i
0,1

)

i
 S0,2

)  S0,3i , b0 ;

i
i
S1,3
= S0,3
 w0 ;
i
i
S1,1
= S0,1
;
i
i
S1,2
= S0,2
;

i
i
S1,4
= S0,4
;

Vòng 2:

(

)


i
i
i
i
S2,1
= Rotl _ xxx _ yy S1,1
 ( S1,2
 S1,3
)  S1,4i  mi , b1 ;

i
i
S2,4
= S1,4
 w1;
i
i
S2,0
= S1,0
;
i
i
S2,2
= S1,2
;
i
i
S2,3
= S1,3
;


Vòng 3:

(

)

(

)

i
i
i
i
S3,2
= Rotl _ xxx _ yy S2,2
 ( S2,3
 S2,4
)  S2,0i  mi , b2 ;

i
i
S3,0
= S2,0
 w2 ;
i
i
S3,1
= S2,1

;
i
i
S3,3
= S2,3
;
i
i
S3,4
= S2,4
;

Vòng 4:

i
i
i
i
S4,3
= Rotl _ xxx _ yy S3,3
 ( S3,4
 S3,0
)  S3,1i  mi , b3 ;

i
i
S4,1
= S3,1
 w3 ;
i

i
S4,0
= S3,0
;

i
i
S4,2
= S3,2
;
i
i
S4,4
= S3,4
;


Vòng 5:

(

)

i +1
i
i
i
S0,4
= Rotl _ xxx _ yy S4,4
 ( S4,0

 S4,1
)  S4,2i  mi , b4 ;

i +1
i
S0,2
= S4,2
 w4 ;
i +1
i
S0,1
= S4,1
;

i
i
S0,3
= S4,3
;

Hàm cập nhật trạng thái của hệ mật MORUS được mơ tả trong Hình 1.5.


i
S0,0

i
S0,1

i

S0,2

i
S0,3

i
S0,4






i
Rotl _ xxx _ yy ( S0,0
, b0 )
i
S1,0

 w0
i
S1,1

i
S1,3

i
S1,2

i

S1,4





mi



 w1

Rotl _ xxx _ yy ( S , b1 )
i
1,1

i
S2,0

i
S2,1

i
S2,2

i
S2,3

i
S2,4


i
S3,3

i
S3,4





 w2

mi



i
Rotl _ xxx _ yy ( S2,2
, b2 )
i
S3,0

i
S3,1

i
S3,2







 w3

mi



i
Rotl _ xxx _ yy ( S3,3
, b3 )

i
S4,0

i
S4,1

i
S4,2

i
S4,3

i
S4,4







 w4

mi



i
Rotl _ xxx _ yy ( S4,4
, b4 )
i +1
S0,0

i +1
S0,1

i +1
S0,2

i +1
S0,3

i +1
S0,4

Hình 1.5. Hàm cập nhật trạng thái của hệ mật MORUS
1.2.5 Quá trình hoạt động của hệ mật MORUS

Quá trình hoạt động của MORUS được chia thành 4 giai đoạn: khởi tạo (xử
lý véc-tơ khởi tạo, nạp khóa và xử lý dữ liệu liên kết), mã hóa/giải mã và kết thúc
(tạo thẻ xác thực).


Hình 1.6 dưới đây mơ tả sơ đồ q trình thực thi của thuật toán MORUS.
Bắt đầu
16 lần cập
nhật trạng
thái
Giai đoạn
khởi tạo

Nạp khóa và véc-tơ khởi tạo

K, IV

Trạng thái đã được nạp khóa và
véc-tơ khởi tạo
Nạp dữ liệu liên kết

AD

Trạng thái khởi tạo ban đầu

Giai đoạn
mã hóa

Nạp khối bản rõ


Khối bản rõ

Trạng thái đã được nạp khối
bản rõ



Trạng thái sau mã hóa

Giai đoạn
kết thúc

Bản mã

Tạo thẻ xác thực (8 lần cập nhật
trạng thái)
Thẻ xác thực

Kết thúc

Hình 1.6. Sơ đồ quá trình thực thi của thuật tốn MORUS
1.2.5.1 Q trình khởi tạo
Quá trình khởi tạo gồm 2 giai đoạn: xử lý véc-tơ khởi tạo, nạp khóa và xử
lý dữ liệu liên kết (Hình 1.7):


❖ Xử lý véc-tơ khởi tạo và nạp khóa:
Tại thời điểm bắt đầu giai đoạn khởi tạo, các phần tử trạng thái của MORUS
được nạp khóa, véc-tơ khởi tạo và hai hằng số. Đặc biệt, đối với MORUS-640,
−16

−16
−16
−16
−16
, S0,1
, S0,2
, S0,3
, S0,4
các phần tử trạng thái S0,0
lần lượt được nạp véc-tơ khởi tạo

IV 128 bit, khóa K 128 bit ( k0 ) , chuỗi 128 bit '1', const0 và const1 .
Tương tự như MORUS-640, trong giai đoạn khởi tạo, các phần tử trạng thái
của MORUS-1280 được nạp khóa, véc-tơ khởi tạo và một số giá trị khơng đổi.
Có hai kích thước khóa có thể được sử dụng trong MORUS-1280. Khi sử dụng
−16
−16
−16
−16
−16
, S0,1
, S0,2
, S0,3
, S0,4
khóa 128 bits, các phần tử trạng thái S0,0
lần lượt được nạp

IV128 0128 , k0 = K128 K128 , 1256 , 0256 và const0 const1 . Khi sử dụng khóa 256
−16
−16

−16
−16
−16
, S0,1
, S0,2
, S0,3
, S0,4
bits, các phần tử trạng thái S0,0
tương ứng được nạp

IV128 0128 , k0 = K256 , 1256 , 0256 và const0 const1 .
Sau đó, hàm cập nhật trạng thái S i +1 = StateUpdate ( S i ,0 ) của MORUS
được áp dụng 16 lần. Trong các cập nhật này, đầu vào bên ngoài mi được đặt
thành 0 và hệ mật không tạo ra bất kỳ đầu ra nào. Sau 16 lần cập nhật, nội dung
0
được XOR với khóa:
của phần tử trạng thái S0,1

0
0
S0,1
= S0,1
 k0

❖ Xử lý dữ liệu liên kết:
Khi bắt đầu giai đoạn xử lý dữ liệu liên kết, trạng thái bên trong của
MORUS là trạng thái bên trong khởi tạo. Đối với MORUS-640, dữ liệu liên kết
đầu vào được chia và xử lý theo các khối có kích thước 128 bits. Đối với MORUS1280, việc xử lý xử lý dữ liệu liên kết tương tự như MORUS-640, chỉ khác là dữ
liệu liên kết đầu vào được chia và xử lý trong các khối có kích thước 256 bits.
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 đủ, thì nó được

đệm thêm các bit '0' để tạo khối 128 bits hoặc 256 bits, tương ứng cho MORUS640 và MORUS-1280.
Ở mỗi bước, hệ mật lấy một khối dữ liệu liên kết đầu vào và sử dụng khối
này làm đầu vào bên ngoài để cập nhật trạng thái MORUS. Quá trình này được
thực hiện l lần trong đó l là số lượng khối dữ liệu liên kết:
Với i = 0 đến l , cập nhật trạng thái:


❖ Với MORUS-640:
S i +1 = StateUpdate ( S i , ADi128 ) ;

 adlen 
− 1.
Trong đó: l = 
 128 
❖ Với MORUS-1280:
S i +1 = StateUpdate ( S i , ADi256 ) ;

 adlen 
− 1.
Trong đó l = 
 256 
Giai đoạn này không được thực hiện nếu adlen = 0 .
Bắt đầu
Khóa, véc-tơ khởi tạo,
Dữ liệu liên kết
−16
S0,0
= IV128 ;
−16
S0,1

= K128 ;

−16
S0,2
= 1128 ;
−16
S0,3
= const0
−16
S0,4
= const1

Giai đoạn nạp
khóa và véc-tơ
khởi tạo

i = -16

i=i+1

Sai

i  −1

0
0
S0,1
= S0,1
 K128


Đúng
S i +1 = StateUpdate ( S i ,0 )
AD = ( ad0 , ad1 ,..., ad adlen−1 )

adlen = 0

Đúng

Sai
i=0

Giai đoạn xử lý
dữ liệu liên kết
i=i+1

 adlen 
i
−1
 128 

Sai

Trạng thái khởi tạo ban đầu

Đúng

S i +1 = StateUpdate ( S i , ADi128 ) ;
Kết thúc

Hình 1.7. Lưu đồ thuật tốn q trình khởi tạo của MORUS-640

1.2.5.2 Q trình mã hóa
Sau q trình xử lý dữ liệu liên kết, tại mỗi bước của q trình mã hóa, sử
dụng khối bản rõ 16 bytes

Pi để cập nhật trạng thái, và Pi được mã hóa thành Ci


Tương tự như quá trình xử lý dữ liệu liên kết, bản rõ

Pi cũng được chia và

xử lý theo từng khối 128 bits (MORUS-640) hoặc 256 bits (MORUS-1280). Nếu
khối bản rõ cuối cùng chưa là một khối đầy đủ, đệm thêm các bit ‘0’ để thu được
khối 128 bits hoặc 256 bits, khối đã được đệm đủ dùng đề cập nhật trạng thái. Lưu
ý rằng nếu msglen = 0 , trạng thái sẽ không được cập nhật và không thực hiện q
trình mã hóa.

 adlen 
 msglen 
v
=
Đặt u = 

 128  (MORUS-640);
 128 
 adlen 
 msglen 
u=
v
=


 256  (MORUS-1280)
 256 
Với i = 0 đến v − 1, thực hiện phép mã hóa và cập nhật trạng thái:
Ci = Pi  S0u +i  ( S0u +i  w2 )  ( S2u +i  S3u +i ) ;
S u +i +1 = StateUpdate ( S u +i , Pi ) ;

Hình 1.8 và Hình 1.9 dưới đây lần lượt mơ tả q trình mã hóa của MORUS
và lưu đồ thuật tốn q trình mã hóa của MORUS-640.
Khởi tạo

Dữ liệu liên kết

Bản rõ

Kết thúc

0128

AD128

M 128

ADlen M len

IV

Key
1128


Cập nhật state
trạng thái

Cập nhật
trạng thái

state

Cập nhật
trạng thái

const0

state

Cập nhật
trạng thái

state Tạo thẻ
xác
thực

const1

Key


Bản mã

Hình 1.8. Q trình mã hóa của MORUS


Thẻ xác
thực
(tag)


Bắt đầu
Bản rõ
Trạng thái khởi tạo ban đầu

msglen = 0

Đúng

Sai
 adlen 
 msglen 
u=
,v = 

 128 
 128 

i=0

i  v −1

i=i+1

Sai


Bản mã
Trạng thái sau mã hóa

Đúng
Ci = Pi  S0u +i  ( S0u +i  w2 )  ( S2u +i  S3u +i ) ;

S u +i +1 = StateUpdate ( S u +i , Pi ) ;

Kết thúc

Hình 1.9. Lưu đồ thuật tốn q trình mã hóa của MORUS-640
1.2.5.3 Q trình kết thúc của MORUS
Sau khi mã hóa tất cả các khối bản rõ, hệ mật chuyển đến giai đoạn kết thúc
để tạo thẻ xác thực dùng 8 bước nữa. Độ dài của dữ liệu liên kết và độ dài thông
điệp được dùng để cập nhật trạng thái.
1. tmp = ( adlen msglen ) (MORUS-640), tmp = ( adlen msglen 0128 )
(MORUS-1280), trong đó adlen và msglen được biểu diễn bằng các số
nguyên 64 bits.
u +v
u +v
u +v
2. S4 = S 4  S0 .

3. Với i = u + v đến u + v + 9 , cập nhật trạng thái:


×