ĐẠ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
Có
Khơng
Mã dịng
Thay đổi
Có
Khơng
MAC
Thay đổi
Khơng
Có
Mã hóa-xác thực
Thay đổi
Có
Có
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ố
Ký
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 =
và
128 (MORUS-640);
128
adlen
msglen
u=
v
=
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: