T r a n g | i

LỜI CẢM ƠN

Trước tiên, tôi xin gửi lời cảm ơn sâu sắc nhất đến thầy TS. Lê Phê Đô và thầy

TS. Phùng Văn Ổn, người thầy đã tận tâm, tận lực hướng dẫn, định hướng phương

pháp nghiên cứu khoa học cho tôi, đồng thời cung cấp nhiều tài liệu và tạo điều kiện

thuận lợi trong suốt quá trình học tập và nghiên cứu để tôi có thể hoàn thành luận

văn này.

Tôi xin được gửi lời cảm ơn đến các thầy, cô trong bộ môn Hệ thống thông tin và

Khoa Công nghệ thông tin, Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội

đã nhiệt tình giảng dạy và truyền đạt những kiến thức, kinh nghiệm quý giá trong

suốt thời gian tôi học tập tại trường.

Tôi xin gửi lời cảm ơn đến các bạn học viên lớp K22-QLHTTT, những người

đồng hành trong suốt khóa học và có nhiều góp ý bổ ích cho tôi. Cảm ơn gia đình,

bạn bè đã quan tâm và động viên giúp tôi có nghị lực phấn đấu để hoàn thành tốt

luận văn này.

Do kiến thức và thời gian có hạn nên luận văn chắc chắn không tránh khỏi những

thiếu sót nhất định.

Một lần nữa xin gửi lời cảm ơn chân thành và sâu sắc.

Hà Nội, tháng 12 năm 2017

Học viên thực hiện

Nguyễn Khắc Hưng

T r a n g | ii

LỜI CAM ĐOAN

Luận văn thạc sĩ đánh dấu cho những thành quả, kiến thức tôi đã tiếp thu được

trong suốt quá trình rèn luyện, học tập tại trường. Tôi xin cam đoan luận văn “Hàm

băm trong mật mã hạng nhẹ” được hoàn thành bằng quá trình học tập và nghiên

cứu của tôi dưới sự hướng dẫn của TS. Lê Phê Đô và TS. Phùng Văn Ổn

Trong toàn bộ nội dung nghiên cứu của luận văn, các vấn đề được trình bày

đều là những tìm hiểu và nghiên cứu của cá nhân tôi hoặc là trích dẫn các nguồn tài

liệu đều được đưa ra ở phần tài liệu tham khảo.

Tôi xin cam đoan những lời trên là sự thật và chịu mọi trách nhiệm trước thầy

cô và hội đồng bảo vệ luận văn thạc sĩ.

Hà Nội, tháng 12 năm 2017

Nguyễn Khắc Hưng

T r a n g | iii

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

Từ viết tắt Thuật ngữ tiếng anh Thuật ngữ tiếng việt

Internet of Things Internet kết nối vạn vật IoT

Hash-based Message Hàm băm dựa vào mã xác HMAC

Authentication Code thực thông điệp

Message-Digest Tóm lược thông điệp MD

Message-Digest Algorithm 5 Hàm băm MD5 MD5

Secure Hash Algorithm Thuật toán băm an toàn SHA

Radio Frequency Identification Nhận dạng đối tượng bằng RFID

sóng vô tuyến

Near Field Communication Kết nối không dây trong phạm NFC

vi tầm ngắn

Data Encryption Standard Chuẩn mã hóa dữ liệu/ Hệ mật DES

DES

T r a n g | iv

DANH MỤC BẢNG

Bảng 1.1: Một số hệ mật nhẹ và một số hệ mật “nặng” truyền thống ..................... 16

Bảng 1.2: Thông tin về yêu cầu phần cứng của một vài hệ mật nhẹ ....................... 17

Bảng 2.1: Hộp S-Box 4 bit của hệ mật PRESENT trong hệ thập lục phân. ............ 23

Bảng 2.2: Hoán vị bit sử dụng trong PRESENT .................................................... 24

Bảng 2.3: Hộp S-Box 4 bit nghịch đảo của hệ mật PRESENT trong hệ thập lục phân

.............................................................................................................................. 25

Bảng 2.4: Nghịch đảo việc hoán vị bit trong hệ mật PRESENT ............................. 25

Bảng 2.5: S-Box và vị trí của từng thành phần trong S-Box ................................... 28

Bảng 2.6: S-Box sau khi thực hiện quá trình gây nhiễu theo công thức Caesar ...... 29

Bảng 3.1: Một số hàm băm nhẹ ............................................................................. 34

T r a n g | v

DANH MỤC HÌNH ẢNH

Hình 1.1: Cấu trúc của một thiết bị RFID ................................................................ 8

Hình 1.2: Thiết kế sự hoán đổi các yếu tố trong mật mã nhẹ .................................. 13

Hình 1.3: Đồ thị so sánh theo thông số bề mặt của một số hàm băm nhẹ ............... 17

Hình 1.4: Đồ thị so sánh theo thông số thông lượng của một số hàm băm nhẹ ....... 18

Hình 1.5: Đồ thị so sánh năng lượng sử dụng ở mức cao của một số hàm băm nhẹ 18

Hình 1.6: Đồ thị so sánh năng lượng sử dụng ở mức thấp của một số hàm băm nhẹ

.............................................................................................................................. 19

Hình 2.1: Quy trình mã hóa của PRESENT ........................................................... 22

Hình 2.2: Tính toán khóa cho PRESENT-80.......................................................... 26

Hình 2.3: Tính toán khóa cho PRESENT-128 ........................................................ 27

Hình 3.1: Tạo chữ ký điện tử ................................................................................. 32

Hình 3.2: Xác thực chữ ký điện tử ......................................................................... 32

Hình 3.3: Cấu trúc băm sử dụng công thức Davies-Mayer ..................................... 35

Hình 3.4: Kiến trúc của hàm băm PRESENT theo cấu trúc Davies Mayer với đầu

vào 64 bit và khóa 80 bit........................................................................................ 36

Hình 3.5: Cấu trúc Merkle Damgard ...................................................................... 36

Hình 3.6: Sơ đồ tuần tự hàm băm của hệ mật PRESENT theo công thức

DaviesMayer và cấu trúc Merkle Damgard ............................................................ 38

Hình 4.1: Sử dụng Jni như cầu nối để gọi qua lại giữa Java và C/C++ ................... 41

Hình 4.2: Cài đặt chương trình bảo mật của hàm PRESENT ................................. 42

Hình 4.3: Cài đặt chương trình bảo mật của hàm PRESENT ................................. 42

Hình 4.4: Sơ đồ tuần tự phần mật khẩu của chương trình bom báo ........................ 43

T r a n g | vi

MỤC LỤC

DANH MỤC TỪ VIẾT TẮT ..................................................................................... iii

DANH MỤC BẢNG ................................................................................................... iv

DANH MỤC HÌNH ẢNH ............................................................................................ v

MỞ ĐẦU ..................................................................................................................... 1

Chương 1: TỔNG QUAN VỀ MẬT MÃ NHẸ ............................................................. 4

1.1 Mật mã nhẹ ................................................................................................ 4

1.1.1 Khái niệm mật mã nhẹ ......................................................................... 4

1.1.2 Đặc điểm của mật mã nhẹ .................................................................... 5

1.2 Động lực thúc đẩy mật mã nhẹ phát triển.................................................... 6

1.2.1 Internet kết nối vạn vật ........................................................................ 8

1.2.2 Công nghệ nhận dạng tần số sóng vô tuyến (RFID) ............................. 8

1.2.3 Thiết bị gia dụng điện và TiVi thông minh........................................... 9

1.2.4 Bộ cảm biến nông nghiệp thông minh ................................................ 10

1.2.5 Cảm biến y tế ..................................................................................... 11

1.3 Chiến lược thiết kế cho mật mã nhẹ .......................................................... 12

1.4 Một số mật mã nhẹ ................................................................................... 16

Chương 2: HỆ MẬT PRESENT VÀ CẢI TIẾN S-BOX............................................. 20

2.1 Hệ mật PRESENT .................................................................................... 20

2.1.1 Ý tưởng thiết kế ................................................................................. 20

2.1.2 Quá trình mã hóa ............................................................................... 21

2.1.3 Quá trình giải mã ............................................................................... 24

2.1.4 Tính toán khóa ................................................................................... 25

2.2 Cải tiến S-Box .......................................................................................... 28

T r a n g | vii

Chương 3: HÀM BĂM NHẸ ...................................................................................... 30

3.1 Khái niệm ................................................................................................. 30

3.1.1 Các yêu cầu cơ bản của hàm băm nhẹ ................................................ 30

3.1.2 Động lực phát triển của hàm băm nhẹ ................................................ 30

3.2 Ứng dụng của hàm băm nhẹ ..................................................................... 31

3.3 Thách thức của hàm băm nhẹ ................................................................... 33

3.4 Một số hàm băm nhẹ ................................................................................ 33

3.5 Hàm Băm của hệ mật PRESENT .............................................................. 34

Chương 4: THỰC NGHIỆM ...................................................................................... 39

4.1 Mục đích thực nghiệm .............................................................................. 39

4.2 Tiến hành thực nghiệm ............................................................................. 39

4.2.1 Xây dựng chương trình băm PRESENT ............................................. 39

4.2.2 Tích hợp vào app di động................................................................... 41

4.3 Kết quả thực nghiệm ................................................................................ 41

KẾT LUẬN ................................................................................................................ 44

CÔNG TRÌNH ĐÃ CÔNG BỐ .................................................................................. 45

TÀI LIỆU THAM KHẢO .......................................................................................... 46

PHỤ LỤC................................................................................................................... 48

T r a n g | 0

T r a n g | 1

MỞ ĐẦU

Cơ sở khoa học và thực tiễn của đề tài:

Ngày nay, chúng ta có thể dễ dàng bắt gặp thuật ngữ IoT ở bất cứ nơi nào.

Thuật ngữ này là viết tắt của cụm từ “Internet of Things”, ám chỉ những vật được

kết nối internet và có khả năng trao đổi dữ liệu. IoT trong những năm gần đây rất

phổ biến, phổ biến đến mức nó đã được thêm vào từ điển Oxford [14] dưới dạng

một danh từ. Đặc điểm chung của những thiết bị này là kích thước nhỏ gọn và năng

lượng tiêu thụ thấp. Ví dụ như các thiết bị cảm biến môi trường, cảm biến y tế …

Phần lớn các thiết bị IoT đang gặp phải vấn đề về bảo mật, là làm sao để thông tin

không bị sửa đổi trong khi trao đổi dữ liệu, làm sao để thông tin không bị đánh cắp

…? Trong năm 2004, thuật ngữ “Lightweight cryptography” được đưa ra thảo luận

tại nhiều hội nghị và cuối cùng nó đã được đem vào sử dụng trong thực tế[6]. Thuật

ngữ này ám chỉ những hệ mật “nhẹ” có khả năng cài đặt trên các thiết bị bị giới hạn

bởi năng lượng tiêu thụ và khả năng lưu trữ. Như vậy, mật mã nhẹ rất phù hợp để áp

dụng vào bảo mật cho các thiết bị IoT. Do đó, việc phát triển nhanh và mạnh của

internet of things cũng chính là động lực để thúc đẩy mật mã nhẹ phát triển.

Từ khi khái niệm mật mã nhẹ được đưa vào sử dụng cho đến nay thì mật mã

nhẹ phát triển rất nhanh và mạnh. Thể hiện bởi số lượng và chất lượng các công

trình nghiên cứu. Trong luận văn này, tác giả nghiên cứu về mật mã nhẹ và đi sâu

vào một nhánh con của nó là hàm băm. Bên cạnh đó, tác giả sẽ trình bày đề xuất cải

tiến hệ mật của mình, đó là cải tiến S-Box. Đề xuất này được in trong hội thảo Quốc

Gia lần thứ XX, là một phần của bài báo: “Cải tiến mã khối hạng nhẹ họ LED và

Neokeon”. Với cải tiến này, nếu chương trình cài đặt theo hướng tối ưu hóa về mặt

thời gian thì cải tiến sẽ không làm tăng bất cứ chi phí nào cả nhưng lại tăng được độ

mật của thuật toán.

IoT phát triển là một lợi thế rất lớn cho mật mã nhẹ. Tuy nhiên, đây đồng

thời là thách thức không hề nhỏ dành cho ngành nghiên cứu này. Làm sao để độ bảo

T r a n g | 2

mật phù hợp? Làm sao để năng lượng tiêu thụ thấp? Làm sao để không gian lưu trữ

nhỏ?

Nội dung đề tài và những vấn đề cần giải quyết:

Hướng nghiên cứu

- Nghiên cứu một cách tổng quan nhất về mật mã nhẹ.

- Đi sâu nghiên cứu một nhánh nhỏ trong mật mã nhẹ là hàm băm.

- Cải tiến S-Box, nâng cao hiệu quả bảo mật nhưng không làm phát sinh thêm

chi phí.

- Xây dựng ứng dụng xác thực mật khẩu trong chương trình trên điện thoại

thông minh.

Nội dung nghiên cứu

Ngoài phần mở đầu và kết luận, luận văn được trình bày theo 3 chương với

các nội dung như sau:

Chương 1: Tổng quan về mật mã nhẹ

Trong chương này, tác giả giới thiệu một cách tổng quan nhất về mật mã nhẹ,

các khái niệm cơ bản, động lực thúc đẩy mật mã nhẹ phát triển.

Sau khi giới thiệu tổng quan về mật mã nhẹ, tác giả sẽ trình bày về hệ mật

PRESENT. Phần này cũng là tiền đề để tác giả trình bày hàm băm tương ứng ở

chương 2, hàm băm nhẹ.

Chương 2: Hệ mật PRESENT và một số cải tiến Noekeon, LED

Tác giả trình bày những tìm hiểu của mình về hệ mật PRESENT và một số

cải tiến. Trong đó, tác giả đề xuất phương án cải tiến S-Box 4 bit mà LED sử dụng.

Với cải tiến này, ta có thể áp dụng cho tất cả các hệ mật khác sử dụng S-Box nói

chung và S-Box 4 bit nói riêng.

Chương 3: Hàm băm nhẹ

T r a n g | 3

Hàm băm nhẹ là một trong những nhánh của mật nhẹ mà được ứng dụng

nhiều nhất, do đó tác giả sẽ trình bày các khái niệm cơ bản, đồng thời trình bày một

số hàm băm phổ biến, ứng dụng …

Phần cuối cùng của chương, tác giả sẽ trình bày hàm băm của hệ mật

PRESENT theo công thức Davies Mayer và cấu trúc Merkle Damgard.

Chương 4: Thực nghiệm

Xây dựng chương trình xác thực mật khẩu cho ứng dụng trên điện thoại

thông minh nền tảng Android.

Hiện tại, việc ứng dụng xác thực mật khẩu trên dòng điện thoại thông minh

chưa làm nổi bật được tính “nhẹ” của hệ mật này. Tuy nhiên, đây là tiền đề để tác

giả có thể ứng dụng vào các thiết bị bị giới hạn sau này.

Kết quả đạt được

Sau thời gian tìm hiểu và nghiên cứu, luận văn đã đạt được một số kết quả

ban đầu. Đó là việc nghiên cứu một cách tổng quan nhất về mật mã nhẹ và hàm băm

nhẹ. Sau đó là việc tập trung nghiên cứu hệ mật PRESENT, hàm băm của

PRESENT theo công thức Davies Mayer. Trong luận văn, tác giả cũng trình bày

phương án cải tiến của mình để tăng tính bảo mật cho hệ mật. Đặc điểm của phương

án này là làm tăng độ mật nhưng lại không làm tăng độ phức tạp của thuật toán và

cũng không làm phát sinh thêm bất kỳ chi phí nào.

Với kết quả hiện tại của mình, tác giả chưa cài đặt được trên các thiết bị IoT

bị hạn chế bởi năng lượng tiêu thụ và khả năng lưu trữ để đánh giá độ “nhẹ” của hệ

mật. Tuy nhiên, đây là tiền đề để tác giả có thể áp ụng hệ mật vào các thiết bị như

Arduino, hoặc các thiết bị bị giới hạn khác. Từ đó, có thể ứng dụng vào các lĩnh vực

trong thực tế như bảo mật cho các thiết bị đo thời tiết, bảo mật cho các thiết bị gia

dụng thông minh.

T r a n g | 4

Chương 1: TỔNG QUAN VỀ MẬT MÃ NHẸ

1.1 Mật mã nhẹ

Như tác giả đã trình bày ở phần mở đầu, mật mã nhẹ ra đời hướng tới các

thiết bị bị giới hạn bởi năng lượng tiêu thụ và không gian lưu trữ do đó mục tiêu của

các hệ mật nhẹ là vừa “bảo mật”, vừa “chi phí thấp”, vừa “hiệu suất cao”. Ta có

thể dễ thấy, ba yếu tố này không thể cùng đi lên nên việc duy nhất có thể làm là cân

bằng ba yếu tố này trong trường hợp áp dụng cụ thể.

Đối với mỗi ngành, mỗi nghề, mỗi lĩnh vực, tùy theo độ quan trọng của bảo

mật mà ta lựa chọn thiết kế cho phù hợp. Nếu như an ninh cần thắt chắt thì buộc ta

phải tăng yếu tố chi phí để có được một mã an toàn và hiệu suất cao. Nếu như yêu

cầu bảo mật ở mức thấp, ta nên thiết kế một thuật toán đủ nhẹ để chi phí ở mức thấp

và cũng để có thể áp dụng vào trong thực tế.

1.1.1 Khái niệm mật mã nhẹ

Không có một ranh giới rõ ràng nào để phân biệt sự nhẹ của một hệ mật với

các hệ mật thông thường [4]. Mật mã nhẹ là một nhánh nghiên cứu con của mật mã

hướng tới việc tối ưu sự tinh gọn của hệ mật để có thể cài đặt và chạy hiệu quả trên

các thiết bị vô cùng nhỏ bé và bị giới hạn bởi năng lượng tiêu thụ và khả năng lưu

trữ. Ví dụ như các thẻ chip, thẻ từ dùng gắn trên các bao bì sản phẩm hay có thể gắn

vào bất cứ vật nào chúng ta muốn theo dõi.

Các công trình nghiên cứu mật mã nhẹ đã tăng rất nhanh chóng trong những

năm gần đây, cả về số lượng và chất lượng. Nhiều hệ thống đã được đề xuất trong

các cuộc họp, đồng thời nhiều hội nghị diễn ra xoay quanh chủ đề này. Năm 2004,

tại châu âu đã diễn ra chương trình khung thứ 6 và 7 với tên gọi ENCRYPT I và

ENCRYPT II và chủ đề là mật mã nhẹ [6], đây cũng là tiền đề, là động lực để mật

mã nhẹ phát triển. Nhật bản không phải nước đi đầu nhưng lại là nước có những

bước tiến rất lớn trong những năm trở lại đây với những nghiên cứu nhỏ gọn và việc

triển khai mật mã nhẹ trên các hệ thống của họ trong thực tiễn.

T r a n g | 5

Hiện nay, các hệ thống đánh giá mật mã nhẹ vẫn đang trong quá trình hoàn

thiện. Năm 2015 viện tiêu chuẩn và công nghệ quốc gia Hoa Kỳ cũng đã bắt tay vào

đánh giá và chuẩn hóa kỹ thuật mã hóa nhẹ. Đến thời điểm hiện tại, chưa có một

thông báo chính thức như thế nào mới được coi là “mật mã nhẹ”. Tuy nhiên trong

ISO/IEC 29192 đã định nghĩa một số thuật toán nhẹ cho một vài lĩnh lực kỹ thuật và

ISO/IEC 29167 đã mô tả công nghệ mã hóa cho các thiết bị RFID. Đo đó, khi áp

dụng vào lĩnh vực cụ thể, ta có thể tham chiếu để lựa chọn thuật toán cho phù hợp.

Phù hợp về mặt bảo mật, phù hợp về mặt chi phí, phù hợp về mặt “nhẹ”.

Đặc điểm của mật mã nhẹ là chi phí thấp, tiêu thụ năng lượng thấp do vậy

công nghệ mã hóa nhẹ sẽ được sử dụng trong các thiết bị bao gồm cả thiết bị trên xe

và thiết bị y tế (gắn các vi mạch, chip vào cơ thể người để theo dõi tình trạng sức

khỏe). Nó sẽ trở thành một trong những công nghệ bảo mật hữu ích cho việc thiết

lập các dịch vụ mạng thế hệ tiếp theo như IoT và hệ thống mạng không gian.

Nhiều phương pháp đã được đề xuất cho công nghệ mã hóa nhẹ. Trong đó,

một số tìm kiếm sự “nhẹ” trong kích thước cài đặt trên các thiết bị phần cứng và

giảm thiểu sự tiêu thụ điện năng, một số khác tìm kiếm sự “nhẹ” trong kích thước

bộ nhớ yêu cầu của phầm mềm nhúng. Tuy nhiên, đây không phải là hai hướng đi

duy nhất trong mảnh đất màu mỡ này, các nhà mật mã học vẫn đang ngày đêm để

nghiên cứu tạo ra các thuật toán mới và cải tiến những thuật toán hiện có.

1.1.2 Đặc điểm của mật mã nhẹ

Tuy không có một khái niệm rõ ràng về mật mã nhẹ nhưng ta có thể nhận

dạng nó thông qua một vài thông số như kích thước khối, kích thước khóa, số vòng

mã hóa, và pha tính toán khóa của hệ mật.

Kích thước khối nhỏ: Để tiết kiệm bộ nhớ, mã khối nhẹ thông thường sử

dụng khối nhỏ, chẳng hạn như 64 bit hoặc 80 bit [11].

Kích thước khóa nhỏ: Một vài mã khối nhẹ sử dụng khóa nhỏ, kích thước

nhỏ hơn 96 bit. Tuy nhiên nó vẫn đảm bảo tính hiệu quả trong việc mã hóa [11]. Ví

dụ như PRESENT 80 bit khóa.

T r a n g | 6

Các vòng mã hóa đơn giản: Nhìn vào sơ đồ mã hóa của mã nhẹ, ta có thể dễ

thấy các công thức tính toán tương đối đơn giản. Ví dụ trong mật mã nhẹ, S-Box

được đề xuất sử dụng để tăng cường tính bảo mật cho hàm mã hóa. Có nhiều S-Box

được đề xuất nhưng S-Box 4 bit lại được yêu thích hơn cả bởi tính hữu dụng và tiết

kiệm chi phí. Ví dụ với PRESENT sử dụng S-Box 4 bit chỉ yêu cầu 28 GEs còn

AES sử dụng S-Box khác yêu cầu 295 GEs [11].

Tính toán khóa đơn giản: Pha tính toán khóa nếu sử dụng một công thức thức

tạp sẽ dẫn đến việc tăng chi phí về lưu trữ, tăng độ trễ và năng lượng tính toán [11].

Như vậy, nhìn vào sơ đồ tính toán khóa của một mã nhẹ không thể nào lại là một

công thức rối ren, phức tạp được.

Cài đặt đơn giản: Tổng thể mà nói, một mã nhẹ bao gồm các phần tử, các

vòng lặp rất đơn giản nên sơ đồ mã hóa tổng thể của nó không thể nào phức tạp

được. Do đó, khi xem xét một mã có là nhẹ hay không ta có thể tìm xem nó có bao

hàm thành phần nào phức tạp hay không. Nếu phần lớn các mô đun trong nó đều

phức tạp thì chắc chắn mã đó không phải là mã nhẹ, ngược lại nếu các mô đun này

chứa những phần tử, những công thức cực kỳ đơn giản và sáng sủa thì khả năng rất

cao nó là mã nhẹ. Trong trường hợp sơ đồ mã hóa chứa một vài thành phần phức

tạp ta có thể đặt lên bàn cân để xem xét. Tuy nhiên, chưa có một khái niệm nào

vạch ra ranh giới rõ ràng giữa nhẹ và nặng, do đó ta không nên quá cứng nhắc.

Nhiệm vụ hiện tại là chọn và thiết kế, cài đặt những mã phù hợp với yêu cầu sử

dụng.

1.2 Động lực thúc đẩy mật mã nhẹ phát triển

Hiện nay, mọi người có thể kết nối mạng ở bất cứ nơi đâu khi sử dụng thiết

bị điện thoại thông minh, máy tính bảng hay laptop cá nhân của mình. Có thể chia

sẻ hình ảnh, chia sẻ thông điệp hay gửi tin nhắn … bất cứ lúc nào mong muốn. Điều

ta nên đặt ra câu hỏi là việc gửi và nhận như vậy có đảm bảo an toàn? Manh nha ở

đâu đó, chúng ta có thể nghe những thuật ngữ như “nhà thông minh”, thẻ chíp, thẻ

từ … Và khi bắt tay vào tìm hiểu, chúng ta sẽ đặt ra câu hỏi, làm sao để một ngôi

T r a n g | 7

nhà được gọi là thông minh trước mối nguy hại phá hoại và tấn công từ nhiều phía?

Làm sao để những thẻ chíp, thẻ từ có thể sống sót trước sự nhòm ngó của kẻ thù?

Đáp ứng những yêu cầu này, “mật mã nhẹ” là một ứng cử viên đầy hứa hẹn.

Chúng ta không cần phải dữ dội phòng thủ bằng những mật mã “nặng” thông

thường, vì những mã này bảo vệ thì tốt thật nhưng nó sẽ làm tốn kha khá chi phí của

ta, và còn chiếm một lượng lớn tài nguyên hệ thống của thiết bị. Chưa kể, đối với

những thiết bị bị hạn chế về tài nguyên thì những mã nặng có thể làm chậm, đơ hệ

thống và tiêu tốn năng lượng.

Đặc điểm của phần lớn những thiết bị IoT là bị giới hạn về dung lượng lưu

trữ và năng lượng tiêu thụ. Do đó nếu áp dụng các hệ mật truyền thống sẽ dẫn đến

việc chậm hệ thộng và sự bảo mật quá lớn là không cần thiết. Ví dụ với các thẻ chip

thẻ từ trong siêu thị thì không cần thiết bảo mật đến mức quá lớn.

Trong thực tế, có rất nhiều thiết bị sử dụng năng lượng của pin, do đó chúng

ta càng tiết kiệm năng lượng được bao nhiêu càng tốt. Ví dụ, các thiết bị đo môi

trường thường được cài đặt tại các vị trí không có nguồn điện có sẵn. Thiết bị cấy

ghép y học chỉ dựa vào năng lượng pin và được yêu cầu càng nhỏ càng tốt để giảm

tác động lên cơ thể con người. Thuật toán mật mã nhẹ được mong đợi sẽ phục vụ

các ứng dụng này. Một số ứng dụng đòi hỏi tính trôi nổi tốt và độ trễ thấp. Để giữ

mức tiêu thụ pin càng thấp càng tốt, một số thiết bị được bật ngay trước khi gửi dữ

liệu, chỉ hoạt động trong quá trình truyền dữ liệu và sau đó tắt. Phương pháp mã hóa

nhẹ với độ trễ thấp rất hữu ích cho mục đích này. Nó cũng có thể thích hợp để điều

khiển ô tô, nơi thời gian đáp ứng chậm có thể làm ảnh hưởng đến an ninh.

Các phần sau, tác giả sẽ trình bày các ví dụ cụ thể trong thực tế nên áp dụng

mật mã nhẹ để đảm bảo an toàn cho thông tin và thiết bị như: TV thông minh, công

nghệ RFID (tác giả trình bày ở phần 1.2.2, công nghệ này là một trong những công

nghệ rất được quan tâm trong những năm gần đây bởi khả năng áp dụng trong thực

tế của nó), thiết bị đo môi trường trên đất nông nghiệp, thiết bị y tế, thiết bị kiểm

soát công nghiệp và ô tô.

T r a n g | 8

1.2.1 Internet kết nối vạn vật

Những năm gần đây, thuật ngữ “Internet of things” [7] (IoT) rất phổ biến mà

ai trong chúng ta đều có thể gặp ở bất cứ nơi đâu. Thuật ngữ này bắt đầu xuất hiện

từ cuối những năm 90 của thế kỷ trước. Nhưng đến năm 1999 khi Keven Ashton

đưa ra thì cụm từ này mới thực sự được xác nhận tồn tại [9].

IoT là một thuật ngữ đại diện cho một mạng lưới các vật tham gia kết nối

internet. Ở đó, các vật có thể thu thập thông tin và truyền tải dữ liệu. Đây cũng

chính là một điểm sáng rất lớn, là kỳ vọng cho lĩnh vực tự động hóa trong hầu hết

các ngành nghề.

Như tác giả đã trình bày ở phần mở đầu, triển vọng của IoT là rất lớn nhưng

kéo theo thách thức không hề nhỏ về mặt bảo mật. Do đó, khi mật mã nhẹ tham gia

vào mạng lưới này thì đây chính là cơ hội, là thách thức. Nhiệm vụ của những nhà

mật mã học là nghiên cứu để tìm ra các hệ mật mới phù hợp và cải tiến những hệ

mật đã có.

1.2.2 Công nghệ nhận dạng tần số sóng vô tuyến (RFID)

Như đã nhắc ở phần 1.2.1, ở phần này tôi sẽ trình bày kỹ hơn một chút về

công nghệ RFID [8]. Công nghệ nhận dạng (hay còn gọi là nhận diện dùng để đọc

dữ liệu từ chip, thẻ hoặc là thu lấy hình ảnh của đối tượng để mang về máy tính xử

lý) không tiếp xúc, sử dụng tần số sóng vô tuyến.

Hình 1.1: Cấu trúc của một thiết bị RFID

RFID là một công nghệ điển hình của nhận dạng không dây. Nếu như chỉ

lướt qua thôi thì ta rất khó phân biệt nó với các công nghệ khác như NFC hay là mã

T r a n g | 9

QR. Điểm khác nhau giữa các công nghệ này là hình thức nhận diện thiết bị. RFID

giao tiếp thông qua tần số sóng vô tuyến. NFC giao tiếp thong qua từ trường. Ưu

điểm của tần số sóng vô tuyến là có thể phát đi được rất xa, do đó triển vọng của

việc áp dụng trong thực tế của công nghệ này rất lớn. Tuy nhiên, thách thức mà

RFID đang gặp phải là khi phạm vi này càng lớn thì độ nhiễu sóng càng cao dẫn tới

kết quả nhận diện bị sai lệch nhiều hoặc có thể không còn chính xác nữa. Và một

điểm là phạm vi phủ sóng càng cao thì chi phí chi cho việc phát sóng càng lớn. Do

đó phải tính toán và cân nhắc thật kỹ khi áp dụng loại hình công nghệ này.

Hiện nay, RFID đang được nghiên cứu rất nhiều để áp dụng trong lĩnh vực tự

động hóa. Ví dụ như ô tô tự động hóa, tự động hóa trả phí đường bộ …

1.2.3 Thiết bị gia dụng điện và TiVi thông minh

Khi nhắc tới thuật ngữ TiVi thông minh, chúng ta ám chỉ những TiVi có thể

cài đặt ứng dụng, kết nối internet và chạy trên một giao diện thân thiện, thông minh

với người dùng. Ngày nay để giảm thiểu chi phí khi sản xuất nên hầu hết các TiVi

được ra đời trong điều kiện CPU ở mức thấp [6]. Như vậy, nó vừa đảm nhiệm

nhiệm vụ của một chiếc TiVi thông thường, vừa đảm nhiệm chức năng của một

chiếc máy vi tính. Do đó, giống như hầu hết các thiết bị IoT thông thường, việc tích

hợp thêm bất cứ một chương trình nào lên TiVi thông minh là điều đáng cân nhắc,

làm sao để không làm nặng chương trình. Thông thường, người dùng rất khó để

nhận biết xem thiết bị này có bảo mật hơn thiết bị kia hay không nhưng rất dễ mẫn

cảm với sự chậm chạp của thiết bị. Như vậy, nếu chương trình gây chậm hệ thống

thì không một nhà sản xuất nào chấp nhận áp dụng. Tuy nhiên, do yêu cầu của việc

bảo mật nên các TiVi thông minh không tránh khỏi việc phải áp dụng. Làm sao để

vừa đảm bảo được tính năng bảo mật, vừa không gây chậm hệ thống, lại vừa không

ngốn tài nguyên. Đứng trước yêu cầu cấp thiết này, sự ra đời và phát triển của mật

mã nhẹ là rất kịp thời và đúng lúc. Vừa đảm bảo được yếu tố bảo mật, vừa đảm bảo

thêm các yếu tố về tài chính và hiệu suất.

T r a n g | 10

Trong thời gian sắp tới, nhiều thiết bị gia dụng sẽ tham gia mạng lưới này

giống như một phần của công nghệ IoT. Do đó, việc ta cần làm là làm sao để các

thiết bị này không bị truy cập trái phép, làm sao để sự riêng tư không bị xâm phạm?

Đây cũng chính là điểm thuận lợi để có thể triển khai mật mã nhẹ trong thực tế,

nhưng đồng thời cũng là thách thức vô cùng lớn.

1.2.4 Bộ cảm biến nông nghiệp thông minh

Trong nông nghiệp, để có được sản phẩm năng suất và chất lượng cao, điều

quan trọng nhất là thời tiết phải ổn định và điều hòa. Từ trước đến thời điểm hiện

tại, phần lớn người nông dân ở nước ta vẫn đang canh tác dựa trên kinh nghiệm.

Những năm mưa thuận, gió hòa năng suất của người dân ở mức ổn định và đáp ứng

được nhu cầu sống. Tuy nhiên, nước ta là nước nằm trong vành đai lửa thái bình

dương nên sẽ không tránh khỏi sự thất thường của thời tiết, từ việc lượng mưa và

nắng thất thường cho tới kiểu thời tiết khô hoặc bão. Do đó mà cuộc sống của người

nông dân bình thường đã ở mức thấp, thêm yếu tố phụ thuộc tự nhiên nên rất bấp

bênh.

Hiện nay, với sức mạnh của công nghệ thông tin, việc áp dụng công nghệ sẽ

điều hòa được “khí hậu” của vườn ươm và ruộng nuôi trồng. Khi cần ánh sáng ta có

thể tăng sáng, khi cần nhiệt ta có thể thay đổi nhiệt độ … mà không phụ thuộc vào

yếu tố tự nhiên nữa.

Để điều hòa thời tiết trong vườn, ruộng ta cần thu thập các thông tin về thời

tiết ở địa điểm hiện tại để phân tích. Độ chính xác của việc phân tích dữ liệu tăng

lên cùng với độ phân giải của giám sát. Vì vậy, tốt hơn là chia một nông trại lớn

thành các phần và thu thập dữ liệu từ từng phần. Nông dân có thể mong đợi các

thiết bị giám sát có thể vận hành với một lượng lao động nhỏ với chi phí thấp trong

một thời gian dài. Để đáp ứng nhu cầu này, việc sử dụng các mạng lưới cảm biến

môi trường đang dần dần lan rộng.

Các cảm biến của các mạng như vậy có các yêu cầu sau [6]:

T r a n g | 11

- Tự điều khiển,

- Quy mô nhỏ,

- Tiêu thụ điện năng thấp, và

- Được sử dụng với số lượng lớn.

Đối với việc thu thập dữ liệu tốt, cần có nhiều bộ cảm biến, thuật toán trọng

lượng nhẹ chi phí thấp phù hợp với mục đích này.

Ngoài việc giám sát thời tiết, việc quan sát các chuyển động của vỏ trái đất

có thể góp phần dự đoán kịp thời các trận động đất, núi lửa phun trào và sạt lở đất.

Bộ cảm biến phục vụ các mục đích này thường được lắp đặt tại các địa điểm không

dễ tiếp cận được bởi người dân hoặc nơi không có nguồn điện. Hơn nữa, vì dữ liệu

về phòng ngừa thiên tai là rất quan trọng đối với an ninh của công dân, nên phải

ngăn chặn việc giả mạo, nghiêm trọng hơn nhiều so với nghe trộm. Nếu dữ liệu bị

giả mạo thì có thể đưa ra cảnh báo sai. Mật mã hóa nhẹ với xác thực là phù hợp để

ngăn chặn dữ liệu nhạy cảm không bị giả mạo.

1.2.5 Cảm biến y tế

Khi một người nhập viện, một số loại cảm biến có thể gắn liền với bệnh nhân

để đo điện tâm đồ, huyết áp, mạch, đường trong máu, và nồng độ trong máu và oxy.

Những cảm biến thường được kết nối với các đơn vị chính với cáp để mang dữ liệu

và nhận điện năng, mà ức chế chuyển động của bệnh nhân. Bệnh nhân được phép ra

khỏi bệnh viện có thể cần phải có các điều kiện theo dõi tại nhà và tại nơi làm việc

và cần phải có dụng cụ đo được cấy ghép vào cơ thể của họ. Các thiết bị bên ngoài

và nội bộ này được sử dụng để thường xuyên đo lường dữ liệu và xác định thời gian

dùng thuốc. Thiết bị cấy ghép thường được để lại trong cơ thể trong một thời gian

dài, do đó nó phải có khả năng truyền dữ liệu mà không cần dây và chạy trên pin

trong một khoảng thời gian dài. Ngay cả trong trường hợp các thiết bị gắn ngoài, kết

nối không dây cung cấp sự tự do di chuyển đòi hỏi bộ cảm biến chạy trong thời gian

dài trên pin.

T r a n g | 12

Những cảm biến thu thập rất nhiều dữ liệu cá nhân phải được che giấu để bảo

đảm tính riêng tư của người dùng. Hiện nay, đặc biệt trong lĩnh vực cảm biến cấy

ghép, các nhà nghiên cứu đang tiến hành nghiên cứu và phát triển quá trình thu nhỏ

cảm biến và các thiết bị (các thiết bị tính trên đơn vị nano mét đang được phát

triển). Do đó việc ta tích hợp mật mã cũng phải cải thiện để làm giảm chi phí nhưng

vẫn đảm bảo được bảo mật và hiệu suất.

Với sự tiến bộ của những năm gần đây đối với các thiết bị đeo, một khái

niệm mới gọi là "mHealth" đã nổi lên, là thuật ngữ viết tắt của "Mobile Health".

Thuật ngữ này hàm ý người dùng sẽ đeo thiết bị để thiết bị thu thập dữ liệu về sinh

học ví dụ như nhịp tim, hơi thở để đảm bảo sức khỏe của người đeo. Dữ liệu được

tích lũy hàng ngày và có thể được nộp trong quá trình kiểm tra vật lý hoặc khám sức

khoẻ tại bệnh viện. Không chỉ dữ liệu sinh học mà cả các hoạt động tiến hành cải

thiện sức khoẻ cũng được ghi lại. Ngày nay, các thiết bị quảng cáo y tế [6] thông

thường như máy đo bước chân có thể phát hiện thông tin cá nhân như vị trí của một

người từ GPS tích hợp sẵn.

Tùy thuộc vào việc sử dụng của nó, truyền dẫn không dây có thể được yêu

cầu đối với thiết bị liên tục thu thập dữ liệu được nhận, biên soạn và phân tích bởi

các thiết bị khác. Vì những dữ liệu này rất cá nhân nên chúng phải được che giấu

hoàn toàn để bảo vệ sự riêng tư của một người.

1.3 Chiến lược thiết kế cho mật mã nhẹ

Mật mã nhẹ là một nhánh nghiên cứu khá trẻ, là sự giao thoa giữa các ngành

kỹ thuật điện, mật mã học và khoa học máy tính. Nó tập trung vào việc nghiên cứu

ra những thiết kế mới, khả năng thích ứng và việc cài đặt hiệu quả. Đứng trước

thách thức bởi sự vô cùng hạn chế về chi phí và mô hình tấn công mạnh mẽ, đặc

biệt đáng chú ý là khả năng tấn công bởi các tác nhân vật lý. Như vậy, sự cải thiện

và tăng cường bảo mật mật mã nhẹ là vô cùng cần thiết trong những mô hình tính

toán phổ biến.

T r a n g | 13

Mỗi một chiến lược thiết kế mật mã nhẹ đều phải đối phó với sự đánh đổi

giữa bảo mật, chi phí và hiệu suất. Đối với mã khối thì chiều dài khóa là sự đánh

đổi lẫn nhau giữa độ bảo mật và chi phí. Trong khi số lượng vòng là sự hoán đổi lẫn

nhau giữa độ bảo mật và hiệu suất. Và kiến trúc phần cứng là sự hoán đổi giữa chi

phí và hiệu suất [10]. Ta hãy xem hình 1.2 bên dưới:

Hình 1.2: Thiết kế sự hoán đổi các yếu tố trong mật mã nhẹ

Luôn luôn, chúng ta chỉ có thể đạt được hai trong số ba chiến lược trong khi

thiết kế. Lựa chọn bảo mật tốt và chi phí thấp nhưng như vậy thì hiệu suất lại thấp.

Lựa chọn bảo mật tốt và hiệu suất cao thì lúc này chi phí của ta buộc phải cao. Hay

cuối cùng ta chọn chi phí thấp và hiệu suất cao thì sự bảo mật lại lỏng lẻo.

Như vậy, chúng ta có ba hướng tiếp cận để tối ưu hóa một hệ mật khi xây

dựng ứng dụng [10]:

- (1) Tối ưu hóa chi phí cài đặt trên phần cứng theo chuẩn và thuật toán tin

tưởng.

- (2) Sử đổi một chút theo một nghiên cứu tốt và mã tin tưởng.

- (3) Thiết kế các mã mới để đạt được chi phí cài đặt phần cứng thấp theo

yêu cầu thiết kế.

Ngày nay, phần lớn mã khối được thiết kế chủ yếu với thuộc tính cài đặt

phần mềm tốt. Và không cần quan tâm nhiều tới đặc điểm kỹ thuật của phần cứng.

Cách tiếp cận này là đúng đắn vì phần lớn các thuật toán được cài đặt vào phần

T r a n g | 14

mềm và chạy trên môi trường máy tính hoặc các thiết bị nhúng hay chạy trên các

thiết bị không tốn kém nhưng lại có hiệu suất rất cao. Bây giờ, khi IoT phát triển,

các thiết bị phần cứng bị giới hạn rất nhiều nên những thuật toán này không còn phù

hợp nữa. Do vậy, với cách tiếp cận thứ nhất chúng ta phải tối ưu hóa chi phí cài đặt

trên các thiết bị phần cứng để làm sao những thuật toán cũ hoạt động hiệu quả.

Ý tưởng chính là sử dụng một thuật toán đã được chứng minh về độ mật và

đang được sử dụng. Sau đó, ta sẽ tối ưu hóa việc cài đặt của hệ mật này trên phần

cứng hoặc tạo ra biến thể của hệ mật [10]. Các hướng bước của chiến lược này là:

- Sử dụng một cấu trúc phần cứng nối tiếp làm giảm sự phức tạp của cổng:

Với ý tưởng đầu tiên, nếu chúng ta áp dụng với thuật toán DES, chúng ta

phải đạt được cài đặt nhỏ hơn 35% cổng so với AES (thuật toán được biết tới với sự

hiệu quả cài đặt nhất).

Trong báo cáo về DES khi thực hiện cài đặt tối ưu hóa trên phần cứng, thông

số bề mặt phải hoán đổi cho thông lượng. Việc thực hiện cũng yêu cầu khoảng 86%

chu kỳ xung nhịp cho việc mã hóa một khối so với việc thực hiện AES tuần tự

(1032 chu kỳ so với 144) làm cho nó dễ dàng sử dụng hơn trong các giao thức

chuẩn RFID. Tuy nhiên, bảo mật cung cấp bị giới hạn bởi các khóa 56-bit. Do đó,

việc thực hiện này chỉ nên áp dụng trong trường hợp cần an ninh ngắn hạn, hoặc khi

các giá trị được bảo vệ tương đối thấp. Tuy nhiên, chúng ta có thể tưởng tượng rằng

trong một số ứng dụng chi phí thấp như vậy mức độ bảo mật là đủ.

Với cách tiếp cận thứ hai: để có một mã nghiên cứu tốt, thì thiết kế của nó

cũng phải thực thi tốt với phần cứng có chi phí rẻ. Một mã phổ biến nhưng lại đáp

ứng được yêu cầu này là DES (như đã đề cập ở phần trên). DES được thiết kế nửa

đầu những năm 1970 và mục tiêu là cài đặt trên môi trường phần cứng. Do đó, so

với tiêu chuẩn phần cứng ngày nay thì phần cứng những năm đó vô cùng hạn chế.

Đến những năm 2000 thì thuật toán này không được áp dụng nhiều nữa do công

nghệ phần cứng quá phát triển trên các thiết bị thời đó. Tuy nhiên, từ khi khái niệm

IoT ra đời, các thiết bị bị giới hạn đồng loạt bùng nổ thì thuật toán này lại tỏ ra hữu

T r a n g | 15

ích một lần nữa. Và vì thế, tuy DES không được sử dụng nhiều nữa trong các

chương trình trên vi tính hay những chương trình trên các thiết bị có năng lượng

tính toán và dung lượng lớn nhưng nó lại có đóng góp không nhỏ đối với những

thiết bị bị giới hạn nhiều mặt.

Hướng đi của ý tưởng này là:

- Tùy chọn áp dụng khóa trắng để làm cho các cuộc tấn công brute-force

không thể

- Tùy chọn thay thế cho 8 S-Box ban đầu bởi một thành phần đơn giản hơn

làm giảm hơn nữa mức độ phức tạp cổng.

Trong trường hợp đầu vào cần phải có mức độ bảo mật cao vừa phải chúng ta

cần khóa trắng, với DES ta xác định ở đây như sau, kí hiệu là DESX:

DESXk.k1.k2 (x) = k2  DESk (k1  x)

Việc thêm cổng XOR vào sẽ tăng số lượng cổng lên 14%. Sự tấn công tìm

kiếm khóa tốt nhất lựa chọn đánh đổi giữa thời gian và bộ nhớ yêu cầu 2120 lần và

264 địa chỉ bộ nhớ.

Với ý tưởng này, khi chúng ta cực kỳ cần một hệ mật nhẹ, ta có thể giảm đô

phức tạp của cổng của thuật toán xuống, giả sử với DES, ta thay thế tám cổng S-

Box nguyên thủy bởi một cổng mới đơn giản hơn. Như vậy, ta đã có một biến thể

của DES (hay với một hệ mật khác, ta đã có biến thể của hệ mật đó theo cách này)

Để tăng cường độ mạnh của hệ mật, khóa trắng có thể áp dụng với mật độ

DESXL. Câu hỏi quan trọng là sức mạnh của DESL và DESXL là gì đối với các

cuộc tấn công phân tích. Ta nhận thức rõ rằng bất kỳ thay đổi nào đối với mật mã

đều có thể mở ra cánh cửa để tấn công, ngay cả khi những thay đổi đã được thực

hiện rất cẩn thận và kiểm tra chống lại các cuộc tấn công đã biết. Tuy nhiên, trong

từng trường hợp cụ thể ta có thể lựa chọn để dùng.

Cách tiếp cận thứ 3 là thiết kế các mã mới để đạt được độ bảo mật và hiệu

suất phù hợp nhưng lại có chi phí cực kỳ rẻ. Cũng là lý do hàng loạt các hệ mật nhẹ

T r a n g | 16

ra đời. Trong luận văn này, tác giả sẽ trình bày chi tiết về hệ mật PRESENT, là một

mã mới được nghiên cứu bởi Bogdanov và các cộng sự của ông trong báo cáo [5].

1.4 Một số mật mã nhẹ

Trong những năm gần đây, số lượng và chất lượng mã nhẹ tăng lên rất đáng

kể. Rất nhiều nhà mật mã học tại nhiều quốc gia bắt tay vào nghiên cứu. Trong vài

năm trở lại đây nổi trội nhất là Nhật Bản và Mỹ. Rất nhiều mã đang dần trở nên bổ

biến như mã khối có: PRESENT, mCrypton, TEA, HIGHT, DESXL, AES … Và

mã dòng có: Grain, Trivium, … Những mã này có độ mật tương đối tốt nhưng chi

phí cho phần cứng lại thấp hơn rất nhiều so với các mã “nặng” truyền thống. Ta có

thể theo dõi bảng 1.1.

Các thông số thống kê trên tham khảo từ bảng 1 của tài liệu [12] và bảng 2.8

của tài liệu [13]. Qua đó ta có thể thấy, các mã “nặng” truyền thống yêu cầu phần

cứng lớn hơn rất nhiều so với các mã nhẹ. Ngay từ đơn vị của dùng để tính đã là

Gbps và kGE còn mã nhẹ đơn vị sử dụng là Kbps và GE. Ví dụ Keccack-1600 là

thuật toán dùng để cài đặt SHA3 có thông lượng yêu cầu 22 Gbps và bề mặt là 48

kGE, PRSENT-80 yêu cầu thông lượng là 11.4 Kbps và bề mặt là 1075 GE. Như

vậy, yêu cầu phần cứng của mã nhẹ thấp hơn rất nhiều so với các mã nặng.

Mã nhẹ

Mã nặng truyền thống

Tên

Bề mặt (GE)

Tên

Bề mặt (kGE)

Thông lượng (Kbps)

Thông lượng (Gbps)

PRESENT – 80

11.4

1075

Keccak-1600

22

48

DES

44.5

2309

BLAKE-512

18.8

79

mCrypton

492.3

2681

Skein-512

58

61

TEA

100

2355

Grain

100

1294

Trivium

100

2599

Bảng 1.1: Một số hệ mật nhẹ và một số hệ mật “nặng” truyền thống

Để biết rõ hơn thông tin về năng lượng tiêu thụ và các chi phí về phần cứng

của các hệ mật nhẹ, ta có thể theo dõi bảng 1.2 [6]. Nhìn vào những thông tin được

T r a n g | 17

liệt kê trong bảng, ta có thể nắm được phần nào về yêu cầu phần cứng. Từ đó, có

thể dùng những thông tin này để đưa ra quyết định lựa chọn một hệ mật sao cho phù

hợp với thiết bị nhẹ của mình.

Bảng 1.2: Thông tin về yêu cầu phần cứng của một vài hệ mật nhẹ

Để có một cái nhìn trực quan hơn về các thông số thống kê được, tác giả xin

được liệt kê một vài đồ thị tham khảo từ tài liệu [6].

Hình 1.3: Đồ thị so sánh theo thông số bề mặt của một số hàm băm nhẹ

T r a n g | 18

Hình 1.4: Đồ thị so sánh theo thông số thông lượng của một số hàm băm nhẹ

Hình 1.5: Đồ thị so sánh năng lượng sử dụng ở mức cao của một số hàm băm nhẹ

T r a n g | 19

Hình 1.6: Đồ thị so sánh năng lượng sử dụng ở mức thấp của một số hàm băm nhẹ

Như vậy, thông qua dữ liệu đã được chứng minh về các mật mã nhẹ, người

quản lý hệ thống hay thiết bị có thể lựa chọn hệ mật phù hợp với công việc của

mình. Cân đối giữa các yếu tố hiệu suất, yếu tố bảo mật và yếu tố chi phí. Hình 1.3,

1.4, 1.5 và 1.6 biểu diễn so sánh theo các hướng thông số bề mặt, thông số thông

lượng, thông số năng lượng tiêu thụ ở mức cao, thông số thông lượng tiêu thụ ở

mức thấp. Từ đó, ta có thể cân nhắc thêm với các yếu tố bảo mật để lựa chọn thiết

bị cho phù hợp.

T r a n g | 20

Chương 2: HỆ MẬT PRESENT VÀ CẢI TIẾN S-BOX

2.1 Hệ mật PRESENT

Trong phần này, tác giả sẽ trình bày hiểu biết của mình về hệ mật PRESENT

[5] đã được công bố trong bài báo “Present: An Ultra-Lightweight Block Cipher”

của A. Bogdanov và các cộng sự.

Tác giả sẽ trình bày từ kế hoạch thiết kế cho tới việc thiết kế chi tiết hệ mật

này. Đây cũng là cách tiếp cận thứ 3 đã được đề cập ở mục 1.3 (chiến lược thiết kế

cho mật mã nhẹ) là thiết kế một hệ mật mới phù hợp với yêu cầu bảo mật của các

thiết bị bị giới hạn.

2.1.1 Ý tưởng thiết kế

Mục tiêu khi Bogdanov và các cộng sự thiết kế PRESENT là muốn xây dựng

một hệ mật thật đơn giản nhưng hiệu quả. Trong phần này, tác giả sẽ trình bày

quyết định thiết kế của những nhà mật mã học ấy.

Những ý tưởng ban đầu là thiết kế một mã khối phù hợp với các môi trường

cực kỳ hạn hẹp. Cân nhắc tới đặc điểm này, các tác giả của bài báo thấy rằng AES

đã đảm nhiệm rất tốt, do đó việc tạo ra một mã tương tự là điều không cần thiết.

Cuối cùng, nhóm Bogdanov đã đi đến quyết định, thiết kế mã mới và nhắm vào

những đặc điểm mà AES chưa đáp ứng được. Những đặc điểm này là:

- Mã hóa sẽ được thực hiện trong phần cứng.

- Các ứng dụng sẽ chỉ yêu cầu mức bảo mật vừa phải. Do đó, khóa 80 bit là

một khóa có độ dài phù hợp.

- Các ứng dụng sẽ không yêu cầu mã hóa một lượng lớn dữ liệu. Do đó, việc

thực hiện cài đặt có thể đạt được tối ưu cho hiệu suất hoặc bề mặt mà không bị tác

động bởi thực tế quá nhiều.

- Trong một số triển khai cài đặt cụ thể, có thể khóa sẽ được cố định vào thời

điểm sản xuất thiết bị. Những trường hợp như vậy, ta sẽ không cần phải yêu cầu

T r a n g | 21

thiết lập khóa từ phía người dùng, điều này cũng loại trừ được vô số các cuộc tấn

công không cần thiết.

- Sau khi đã xem xét yếu tố bảo mật thì yếu tố tiếp theo cần quan tâm là yếu

tố phần cứng và mức tiêu thụ năng lượng. Ta có thể tham khảo thêm các hình 1. 3:

Đồ thị so sánh theo thông số bề mặt của một số hàm băm nhẹ, hình 1.4: Đồ thị so

sánh theo thông số thông lượng của một số hàm băm nhẹ.

- Yếu tố thứ 3 được quan tâm sau bảo mật và năng lượng tiêu thụ là thời gian

thực thi. Ta có thể tham khảo hình 1.5 Đồ thị so sánh năng lượng sử dụng ở mức

cao của một số hàm băm nhẹ, hình 1.6: Đồ thị so sánh mức năng lượng sử dụng ở

mức thấp của một số hàm băm. Một chương trình cài đặt mã nhẹ không thể chấp

nhận một mã có độ trễ cao được.

Từ những phác thảo về quyết định thiết kế, Bogdanov và các cộng sự đã đề

xuất hệ mật PRESENT. Đặc điểm của hệ mật này là kích thước khối 64 bit, kích

thước khóa 80 bit. Tuy nhiên, tùy vào cài đặt cụ thể, các tác giả cũng đề xuất thêm

một PRESENT với 64 bit khối và 128 bit khóa.

PRESENT chịu ảnh hưởng bởi hầu hết các cuộc tấn công vào hệ mật nói

chung và các cuộc tấn công nhằm vào mã khối nói riêng. Điều này là không tránh

khỏi và cũng không phải là yếu tố quan trọng đáng lưu tâm.

2.1.2 Quá trình mã hóa

PRESENT là một ví dụ điển hình về mạng SP bao gồm 31 vòng mã hóa.

Chiều dài của khối là 64 bit và hai chiều dài khóa được đề xuất là 80 bit và 128 bit.

Nhóm nghiên cứu của PRESENT khuyến nghị nên sử dụng khóa 80 bit, vì việc

triển khai sẽ phù hợp với các thiết bị nhẹ, cân bằng yếu tố bảo mật và các yếu tố

khác. PRESENT rất thuận lợi để triển khai trên các thiết bị nhẹ như thẻ từ, thẻ chip.

Mỗi vòng trong số 31 vòng bao gồm một thao tác XOR để đưa ra một khóa tròn Ki

sao cho 1 ≤ i ≤ 32, trong đó K32 được sử dụng cho post-whitening, hoán vị bitwise

tuyến tính và một lớp thay thế không tuyến tính. Lớp phi tuyến tính sử dụng S-Box

T r a n g | 22

4 bit đơn, được áp dụng song song 16 lần trong mỗi vòng. Các vòng mã hóa được

mô tả trong hình 2.1 bao gồm các pha sinh khóa, addRoundKey, S-Box layer,

pLayer. Hoạt động của từng pha sẽ được trình bày ở các phần ngay bên dưới đây.

Hình 2.1: Quy trình mã hóa của PRESENT

sao cho 1 <= i <= 32 và STATE hiện

Giả sử ta có tập khóa Ki =k

Hàm addRoundKey

…. k

bj  k

tại là b63…b0, hàm addRoundKey bao gồm vòng lặp từ 0 <= j <= 63 thỏa mãn: bj 

Hàm sBoxLayer

.  F Đây là kết quả trực tiếp của việc theo đuổi hiệu suất phần cứng, với việc thực hiện

Các tác giả của PRESENT sử dụng S-Box 4 bit tới S-Box 4 bit: F

cài đặt S-Box như vậy thì chi phí thường nhỏ hơn nhiều so với S-Box 8 bit. Nhóm

Bogdanov đưa ra một số điều kiện bổ sung trên S-Box. Chính xác hơn, S-Box cho

+

PRESENT phải thỏa mãn các điều kiện sau:

() = ∑ S

є

và bất kỳ

(−1)

thì:

Đối với bất kỳ trường hợp cố định đầu vào khác 0,khác ∆I F

| S(x) + S (x + ∆I) = ∆O} <= 4

# {x єF

trường hợp cố định đầu ra khác 0 khác ∆O  F

T r a n g | 23

và bất kỳ

sao cho wt(∆I) = wt(∆O) = 1thì:

| S(x) + S (x + ∆I) = ∆O} = ф

# {x єF

(a)| ≤ 8

Đối với tất cả khác 0, a  F

và tất cả khác 0, b  F

giữ | S

sao cho wt(a) = wt(b) = 1 nó

và tất cả khác 0, b  F

Đối với bất kỳ trường hợp cố định đầu vào khác 0, khác ∆I € F trường hợp cố định đầu ra khác ∆O  F

Đối với tất cả a  F (a)| ≤ 4. giữ |S

Như vậy, những điều kiện này sẽ đảm bảo rằng PRESENT là kháng đối với

các cuộc tấn công khác biệt và tuyến tính. Sử dụng phân loại tất cả các S-Box 4 bit

đáp ứng các điều kiện trên, Bogdanov và các cộng sự đã chọn một S-Box đặc biệt

phù hợp để thực hiện cài đặt trên phần cứng hiệu quả.

.

 F F

Hộp S-Box được sử dụng trong PRESENT là S-Box 4 bit đến S-Box 4 bit:

Cho x = (x3||x2||x1||x0) biểu thị cho 4 bit đầu vào.

Cho S(x) = (S3(x)||S2(x)||S1(x)||S0(x)) biểu thị 4 bit đầu ra.

Bằng cách sử dụng công cụ tối ưu hóa boolean espresso, ta thu được bốn bit

đầu ra kiểu boolean cho S-Box hiện tại:

Trong đó “·” biểu thị phép logic AND, “+” biểu thị phép logic OR. Bảng 2.1

x

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

S[x] C

5

6

B

9

0

A

D

3

E

F

8

4

7

1

2

là S-Box trong hệ thập lục phân:

Bảng 2.1: Hộp S-Box 4 bit của hệ mật PRESENT trong hệ thập lục phân.

T r a n g | 24

Hàm pLayer

Khi chọn một lớp trộn, tập trung của nhóm tác giả Bogdanov là vào hiệu suất

phần cứng. Do đó, cần yêu cầu một lớp tuyến tính có thể thực hiện với một số lượng

tối thiểu các phần xử lý. Điều này dẫn đến việc sử dụng các hoán vị bit thông

thường trong thuật toán. Lợi ích của phương pháp này là làm cho thuật toán sáng

sủa, rõ ràng và dễ dàng phân tích. Sự hoán vị bit của PRESENT được cho bởi bảng

2.2, hoán vị bit sử dụng trong PRESENT.

Bảng 2.2: Hoán vị bit sử dụng trong PRESENT

Bit i của STATE được chuyển sang vị trí bit P (i).

Cũng có thể viết P-layer theo cách sau:

P(i) = . 16 63, є {0, … , 62 } 63, = 63

2.1.3 Quá trình giải mã

Ở phần trên, tác giả đã trình bày những tìm hiểu của mình đối với quá trình

mã hóa của PRESENT. Phần tiếp ngay sau đây, tác giả sẽ trình bày những tìm hiểu

của mình về quá trình giải mã PRESENT. Các pha giải mã của PRESENT thực chất

là việc làm ngược lại các pha mã hóa.

sao cho 1 <= i <= 32 và STATE hiện tại

Giả sử ta có tập khóa Ki =k

Hàm addRoundKey

…. k

k

b63…b0, hàm addRoundKey bao gồm vòng lặp từ 0 <= j <= 63 thỏa mãn: bj  bj 

T r a n g | 25

Hàm invSBoxlayer

F

Hộp S-Box được sử dụng trong giải mã của PRESENT là sự nghịch đảo của đã được mô tả trong phần 2.1.2. Tác động của S-Box 4 bit đến S-Box 4 bit: F

x

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

S[x] 5

E

F

8

C

1

2

D

B

4

6

3

0

7

9

A

hộp S-Box ngược trong hệ lục phân được cho bởi bảng sau:

Bảng 2.3: Hộp S-Box 4 bit nghịch đảo của hệ mật PRESENT trong hệ thập lục phân

Đối với invSBoxLayer, STATE hiện tại b63 … b0 được coi là 16 phần tử 4 bit

w15 …w0 trong đó:

Wi = b4*i+3||b4*i+2||b4*i+1||b4*i với 0 <= i <= 15 và kết quả đầu ra S[wi] cung

cấp các giá trị cập nhật trạng thái.

invPLayer

Các hoán vị bit được sử dụng trong giải mã của PRESENT được cho trong

bảng 2.4 phía dưới đây. Bit i của STATE được chuyển sang vị trí bit P(i).

Bảng 2.4: Nghịch đảo việc hoán vị bit trong hệ mật PRESENT

2.1.4 Tính toán khóa

Như tác giả đã trình bày ở các phần trước, một khóa 80 bit là phù hợp với hệ

mật PRESENT để đảm bảo bảo mật cho các thiết bị IoT bị giới hạn. Tuy nhiên,

trong phần này tác giả cũng sẽ trình bày phần tìm hiểu của mình cả về cách tính

toán khóa 80 bit và 128 bit.

T r a n g | 26

Khóa của PRESENT có thể do người dùng cung cấp, có độ dài là 80 bit hoặc

128 bit tùy yêu cầu cài đặt. Tuy nhiên, trong một số lĩnh vực cụ thể hoặc trong một

số cài đặt cụ thể, người lý thiết bị hoặc quản trị hệ thống có thể tự cài đặt khóa cho

thiết bị hoặc hệ thống của mình. Điều này khá hữu ích vì nó giúp hệ thống hoặc

thiết bị tránh được khá nhiều các cuộc tấn công.

Tính toán khóa cho PRESENT-80

Khóa do người dùng cung cấp được lưu trữ lại trong thiết bị, ký hiệu là K và

được biểu diễn là k79k78 … k0. Tại vòng i, khóa tròn 64 bit Ki = κ63κ62 … κ0 bao

gồm 64 bit trái là nội dung hiện tại của K. Như vậy tại vòng i ta có:

Ki = κ63κ62 … κ0 = k79k78 … k16

Sau khi tách vòng khóa Ki, khóa K = k79k78 … k0 được cập nhật như sau:

1. [k79k78 … k1 k0] = [k18k17 … k20k19]

2. [k79k78k77k76] = S [k79k78k77k76]

3. [k19k18k17k16k15] = [k19k18k17k16k15]  round_counter

Hình 2.2: Tính toán khóa cho PRESENT-80

Ta có thể dễ dàng thấy, 61 bit phía bên trái sẽ dịch 19 bit về bên phải, còn 19

bit phía bên phải sẽ dịch 61 bit về phía bên trái. Sau đó 4 bit ngoài cùng phía bên

trái sẽ đi qua S-Box. Và các bit k19k18k17k16k15 sau phép dịch bit của K sẽ XOR trực

tiếp với vòng của nó. Để trực quan hơn, hình 2.2 mô tả rất rõ sự dịch chuyển này.

T r a n g | 27

Tính toán khóa cho PRESENT-128

Tính toán khóa cho 128 bit cũng tương tự như khóa 80 bit. Ban đầu, khóa do

người dùng cung cấp sẽ được lưu trữ lại, ký hiệu là K và và được biểu diễn dưới

dạng k127k126 … k0. Tại vòng thứ i thì vòng khóa 64 bit Ki = κ63κ62 … κ0 bao gồm

64 bit trái của khóa lưu trữ. Vì thế, tại vòng thứ i ta có:

Ki = κ63κ62 … κ0 = k127k126 … k64.

Sau khi tách vòng khóa Ki, khóa đăng ký K = k127k126 … k0 được cập nhật

như sau:

1. [k127k126 … k1k0] = [k66k65 … k68k67]

2. [k127k126k125k124] = S[k127k126k125k124]

3. [k123k122k121k120] = S[k123k122k121k120]

4. [k66k65k64 k63k62] = [k66k65k64 k63k62]  round_counter

Hình 2.3: Tính toán khóa cho PRESENT-128

Ta có thể dễ dàng thấy, 61 bit phía bên trái sẽ dịch 67 bit về bên phải, còn 67

bit phía bên phải sẽ dịch 61 bit về phía bên trái. Sau đó ta sẽ có 2 cặp 4 bit là 8 bit

ngoài cùng phía bên trái sẽ đi qua S-Box. Và các bit k66k65k64k63k62 sau phép dịch

bit của K sẽ XOR trực tiếp với vòng của nó. Để trực quan hơn, hình 2.3 mô tả rất rõ

sự dịch chuyển này.

T r a n g | 28

2.2 Cải tiến S-Box

Trong hội thảo quốc gia với chủ đề: “Một số vấn đề chọn lọc của công nghệ

thông tin và truyền thông” nhóm nghiên cứu và tác giả đã đề xuất phương án cải

tiến cho hệ mật Noekeon và LED [1]. Trong đó, tác giả đề xuất phương án cải tiến

S-Box. Nhằm nâng cao độ mật cho hệ mật nhưng không làm tăng độ phức tạp tính

toán. Cải tiến này có thể áp dụng cho tất cả các hệ mật nhẹ sử dụng S-Box.

S-Box của LED được liệt kê như trong bảng 2.5 (hệ thập lục phân). Sử dụng

10

11

12

13

14

15

một S-Box 4 bit của PRESENT.

x

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

S[x] C

5

6

B

9

0

A

D

3

E

F

8

4

7

1

2

12

11

10

13

14

15

Pos

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Bảng 2.5: S-Box và vị trí của từng thành phần trong S-Box

Quyết định cải tiến

LED là mã khối nhẹ có độ an toàn cao, do đó ta có thể tiến hành cải tiến LED

để áp dụng cho các thiết bị IoT có giới hạn lưu trữ và xử lý ở tầm trung cho đến tầm

cao. Và những thiết bị đó yêu cầu một thuật toán mã hóa có độ bảo mật tốt.

Để cải tiến LED ta nên đi theo hướng bù đắp các yếu điểm của thuật toán mã

hóa khối. Có 3 hướng chính là tăng kích thước khối hoặc khóa, tăng độ hỗn loạn,

tăng tính khuếch tán. Hiện tại độ dài khối và khóa của LED đang ở mức rất tốt là

64bit và 128bit do đó ta không nên phá vỡ cấu trúc này.

Ở bài báo này, chúng tôi lựa chọn phương pháp cải tiến là tăng độ hỗn loạn

và rắc rối để kẻ tấn công từ bỏ việc dịch ngược đoạn mã. Vị trí cải tiến là S-Box và

phương pháp cải tiến là áp dụng công thức của mã Caesar trong việc thay thế từng

thành phần trong S-Box.

Áp dụng vào S-Box ta có công thức mã hóa:

T r a n g | 29

Pos’ = (Pos+k) mod 16

Trong đó Pos là vị trí hiện tại của từng thành phần trong S-Box được đánh số

như hình 1. Pos’ là vị trí thay thế. Sau khi có Pos’ ta chuyển đổi trả lại về mã

Hecxa. k là số đơn vị dịch chuyển để thay thế.

Tương tự như vậy, ta có công thức giải mã:

Pos = (Pos’ – k) mod 16

Do LED sử dụng S-Box của PRESENT và cố định nên ta cũng nên cố định k

khi thiết kế. Mục đích tăng sự phức tạp khi có kẻ tấn công nhưng đồng thời không

làm phức tạp quá trình giải mã. Ở đây bài báo chọn k bằng 10 theo tỉ lệ vàng 16/10

của Toán học [3].

Việc sử dụng tỉ lệ vàng trong toán học sẽ tránh được các điểm đầu, cuối, giữa

là những điểm đặc biệt. Điều này giúp cho LED tránh được tối đa các cuộc tấn vét

cạn.

Sau khi thực hiện việc dịch chuyển, ta có Pos, Pos’ và S-Box’ được phân bố

theo bảng 2.6 phía bên dưới:

Pos

0

1

2

3

4

5

10

11

12

13

14

15

6

7

8

9

Pos’

10

11

12

13

14

15

0

1

2

3

4

5

6

7

8

9

S[x]’ 15

8

4

7

1

2

12

5

6

11

9

0

10

13

3

14

F

C

B

A

D

E

Bảng 2.6: S-Box sau khi thực hiện quá trình gây nhiễu theo công thức Caesar

T r a n g | 30

Chương 3: HÀM BĂM NHẸ

3.1 Khái niệm

Hàm băm nhẹ là một phần nhỏ trong nhánh nghiên cứu của mật mã nhẹ nên

nó cũng không có một ranh giới rõ ràng nào để phân biệt nhẹ hay không nhẹ [4].

Mục tiêu của hàm băm nhẹ hướng tới sự nhỏ gọn trong cài đặt để phù hợp với các

thiết bị bị giới hạn bởi dung lượng lưu trữ và năng lượng tiêu thụ.

3.1.1 Các yêu cầu cơ bản của hàm băm nhẹ

Tuy không có một khái niệm rõ ràng nào về hàm băm nhẹ, nhưng nó vẫn

phải tuẩn thủ những nguyên tắc cơ bản của một hàm băm thông thường. Ba yếu tố

dưới đây phải đảm bảo:

- Preimage resistant: Cho trước h việc tìm m sao cho h = hash(m) là rất khó.

Yêu cầu này để đảm bảo rằng việc dịch ngược hàm băm là rất khó. Khó đến mức

chi phí lớn hơn hoặc bằng chi phí thử sai thì hệ mật đó rất an toàn.

- Second preimage resistant: Cho thông điệp m1, việc tìm một thông

điệp m2 (khác m1) sao cho hash(m1) = hash(m2) là rất khó.

- Collision-resistant: Việc tìm 2 thông điệp khác nhau m1 và m2 sao cho

hash(m1) = hash(m2) là rất khó.

Hai điều kiện second preimage và collision resistant để đảm bảo rằng hai mã

băm của hai thông điệp không bị trùng nhau và cũng để hạn chế các cuộc tấn công

như tấn công ngày sinh nhật [2].

3.1.2 Động lực phát triển của hàm băm nhẹ

Hàm băm nhẹ là một nhánh nghiên cứu con trong mật mã nhẹ và là một

trong những nhánh quan trọng bậc nhất và cấp thiết nhất cho tới thời điểm hiện tại

bởi tính hữu dụng của nó.

Khi IoT phát triển, xung quanh ta có rất nhiều thiết bị muốn kết nối internet.

Từ những thiết bị gia dụng cho tới những phương tiện tham gia giao thông hay thẻ

T r a n g | 31

chip, thẻ từ. Để ý thấy, các thiết bị này đều là những thiết bị mang tính riêng tư, như

vậy ta cần bảo mật để không một ai khác ngoài chúng ta có thể kiểm soát. Mật khẩu

là một trong những cơ chế tốt nhất để bảo vệ tính cho tới thời điểm hiện tại. Mà mật

khẩu chính là một ứng dụng của hàm băm. Đặc điểm của phần lớn các thiết bị IoT

là bị giới hạn rất nhiều về nặng lượng tiêu thụ và khả năng tính toán, do đó đây

cũng chính là điểm mạnh của hàm băm nhẹ, là động lực thúc đẩy mật mã nhẹ nói

chung và hàm băm nhẹ nói riêng phát triển.

IoT có nghĩa là vạn vật kết nối với nhau và trao đổi thông tin. Làm sao để ta

có thể biết trong quá trình truyền tin của mình, tin tức không bị sửa đổi? Đây cũng

là một ứng dụng rất quan trọng của hàm băm là kiểm tra tính toàn vẹn của thông

điệp. Với IoT, hàm băm nhẹ tỏ ra hữu dụng hơn cả so với các hàm “nặng” truyền

thống trong việc kiểm tra tính toàn vẹn này.

Mặt khác, hàm băm nhẹ là một hàm băm nên có có đầy đủ tính chất của một

hàm băm. Đo đó, các ứng dụng của hàm băm thông thường thì hàm băm nhẹ đều có

thể áp dụng. Tuy nhiên, hàm băm nhẹ sẽ áp dụng cho các thiết bị bị giới hạn là chủ

yếu. Còn hàm băm truyền thống sẽ áp dụng cho các ứng dụng thông thường trên vi

tính hoặc điện thoại thông minh.

3.2 Ứng dụng của hàm băm nhẹ

Như tác giả đã trình bày ở phần triển vọng của hàm băm nhẹ, do hàm băm là

nhánh con của hàm băm nhẹ nên ứng dụng của nó cũng không ngoài ứng dụng của

hàm băm. Như vậy, ta có thể điểm qua một vài ứng dụng của hàm băm nhẹ như sau:

- Xác thực mật khẩu [2]: Đối với công nghệ IoT, mật khẩu là thứ không thể

tách rời. Mỗi người, mỗi vật đều có một định danh, một mật khẩu riêng khi tham

gia vào thế giới. Và với sự phát triển mạnh mẽ như hiện nay của công nghệ này thì

tương lai rất lớn của mật mã nhẹ là rất lớn. Và đặc biệt là hàm băm với ứng dụng

xác thực mật khẩu.

- Xác thực thông điệp [2]: Khi một thông điệp được gửi đi hay nhận về. Thật

khó khăn nếu như dữ liệu này vô cùng lớn và ta đem ra so sánh từng chữ một. Như

T r a n g | 32

vậy, việc ta sử dụng một hàm băm để băm rồi so sánh thì hiệu quả hơn gấp trăm vạn

lần. Chưa kể, còn có sai sót hoặc không thể tính được nếu như dữ liệu quá lớn và

năng lượng tiêu thụ của thiết bị lại bị giới hạn. Như vậy, ta cần tới hàm băm, tuy

nhiên lợi thế hơn rất nhiều khi ta dùng hàm băm nhẹ. Vì mục đích của ta chỉ đơn

giản là xác thực chứ không phải bảo mật nên hàm băm nhẹ hỗ trợ việc này tốt. Cộng

với việc hàm băm nhẹ thực hiện nhanh hơn hàm băm thông thường.

- Bảo vệ tính toàn vẹn của thông điệp [2]: khi gửi nhận trên mạng: Giống

như xác thực thông điệp thì việc bảo vệ tính toàn vẹn cần sự nhanh nhẹn khi băm và

khi so sánh. Do đó mà hàm băm nhẹ giúp ích vô cùng hiệu quả hơn các hàm băm

thông thường.

- Tạo và xác thực chữ ký điện tử [2]: Để biết ứng dụng của hàm băm nhẹ trong việc

tạo và xác thực chữ ký điện tử, ta có thể theo dõi hai hình ảnh phía bên dưới đây:

Hình 3.1: Tạo chữ ký điện tử

Hình 3.2: Xác thực chữ ký điện tử

T r a n g | 33

Qua hình 3.1 và 3.2 ta có thể thấy thông điệp được gửi đi sẽ kèm theo chữ ký điện

tử. Chữ ký này đại diện cho một người khi họ tham gia hoạt động nào đó như kí

nhận, gửi tin … Thông thường, thông điệp gửi theo chữ ký cũng được mã hóa để

đảm bảo tính bí mật.

3.3 Thách thức của hàm băm nhẹ

Thách thức lớn nhất đối với hàm băm nhẹ nói riêng và mật mã nhẹ nói chung

là việc làm sao để đảm bảo chương trình nhẹ nhàng để cài đặt trên các thiết bị bị

giới hạn bởi năng lượng tiêu thụ và khả năng lưu trữ, đồng thời phải đảm bảo yếu tố

bảo mật và yếu tố hiệu suất.

Bởi xuất phát từ thực tế, các thiết bị cài đặt theo chuẩn của IoT phải rẻ để có

thể cài đặt ở mọi nơi, mọi vật. Nếu chi phí cài đặt cao so với chi phí thiết bị thì sẽ

không thiết bị nào dùng. Yếu tố hiệu suất cũng là một yếu tố được quan tâm không

kém so với chi phí, vì một thiết bị IoT mà khả năng chạy chương trình chậm thì việc

triển khai là bất khả thi. Vì phần lớn các thiết bị này không cần quá nhiều bảo mật,

và việc đưa bảo mật vào để giảm quá nhiều hiệu suất thì không thiết bị nào dùng

đến nữa. Và yếu tố cuối cùng là bảo mật. Mật mã nhẹ hay hàm băm nhẹ phải triển

khai được tính bảo mật thỏa mãn yêu cầu của thiết bị.

Như vậy, thách thức đối với mật mã nhẹ nói chung và hàm băm nhẹ nói riêng

là rất lớn, làm sao để tối đa bảo mật, tối đa hiệu suất nhưng lại giảm chi phí. Thách

thức lớn đồng thời cũng là một mỏ vàng để các nhà mật mã học khai thác.

3.4 Một số hàm băm nhẹ

Hàm băm

Preimage Second

Collisions Công

preimage

Bề mặt (GE)

Kích thước khối

nghệ sử dụng

Năng lượng tiêu thụ

Thông lượng (Kb/s @ 100kHz)

(µW)

80

0.18 µm 4030/2923

109/27

280

280

240

ARMADILLO

128

2128

2128

264

6025/4353

1000/250

80

264

240

240

0.18 µm 85/1168

2.82/15.15

PHOTON

136

2128

264

264

0.18 µm 1379/2392

1.47/11.76 2.44/4.07

QUARK

T r a n g | 34

80

280

240

240

0.13 µm 738/1127

0.81/17.78 1.57/2.31

SPONGENT

Bảng 3.1: Một số hàm băm nhẹ

Thông qua bảng 3.1 (các thông sô tham khảo từ tài liệu [8]) ta có thể thấy

được một số hàm băm nhẹ và các thông số đi kèm của nó. Dễ thấy, những hàm băm

này có độ bảo mật rất khá thể hiện qua các thông số “cryptographic properties”. Ví

dụ với hệ mật Armadillo, khối băm là 80 bit thì thông số preimage và second preimage là 280 và collission là 240. Kế đến, ta có thể tham khảo thông số bề mặt và

thông lượng của hàm này tương ứng là 4030/2923 GE và 109/27 Kb/s tại 100 kHz

để biết được yêu cầu cài đặt không lớn do đó việc áp dụng vào các thiết bị IoT là rất

khả thi.

3.5 Hàm Băm của hệ mật PRESENT

Có rất nhiều lựa chọn để xây dựng một hàm băm 64 bit từ mã khối 64 bit.

Trong phần này, chúng ta tìm hiểu dựa trên công thức Davies-Mayer. Trong một vài

tài liệu sẽ lấy tiền tố DM- đặt trước hàm PRESENT và gọi là DM-PRESENT ám

chỉ hàm băm của hệ mật PRESENT sử dụng Davies-Mayer.

= E (Hi, M)  Hi

Công thức tính toán của chúng ta là:

là chuỗi băm đầu ra, E là hàm mã hóa, Hi là chuỗi đầu vào, là

H

Trong đó H

khóa.

Trong phần này, tác giả sẽ trình bày những tìm hiểu của mình về DM-

PRESENT-80, tức là hàm băm của hệ mật PRESENT với khóa 80 bit. Hàm băm với

khóa 128 bit sẽ tương tự.

Qua hình 3.3 ta có thể thấy được chuỗi đầu vào và khóa đi qua khối “Block

cipher encryption” chính là đi qua PRESENT để thực hiện quá trình mã hóa. Kết

quả thu được ta tiếp tục đem XOR với chuỗi đầu vào để thu được một chuỗi băm.

T r a n g | 35

Hình 3.3 cho chúng ta thấy một cái nhìn trực quan hơn về kiến trúc của hàm

băm của hệ mật PRESENT theo cấu trúc Davies Mayer. Đầu vào là 64 bit, khóa 80

bit và đầu ra là 64 bit.

Hình 3.3: Cấu trúc băm sử dụng công thức Davies-Mayer

Để có cái nhìn trực quan hơn về kiến trúc băm của hàm băm của PRESENT,

ta có thể theo dõi hình 3.4: Kiến trúc của hàm băm PRESENT theo cấu trúc Davies

Mayer với đầu vào 64 bit và khóa 80 bit và hình 3.6 Sơ đồ tuần tự hàm băm của hệ

mật PRESENT theo công thức DaviesMayer và cấu trúc Merkle Damgard.

Trong trường hợp đầu vào có kích thước nhỏ hơn 64 bit, ta phải thực hiện

một thao tác đó là nối chiều dài vào đầu vào sao cho kích thước của khối sau cùng

là 64 bit. Giả sử thông điệp H có chiều dài là len(H) < 64 khi đó ta sẽ thực hiện

thêm 1 bit 1 vào sau cùng của chuỗi và 64 – 1 – len (H) bit 0 ngay sau bit 1 vừa

thêm vào.

T r a n g | 36

Hình 3.4: Kiến trúc của hàm băm PRESENT theo cấu trúc Davies Mayer với đầu

vào 64 bit và khóa 80 bit

Trong trường hợp đầu vào có kích thước lớn hơn 64 bit, ta phải sử dụng thêm

một cấu trúc rất phổ biến là Merkle Damgard để tóm tắt thông điệp.

Hình 3.5: Cấu trúc Merkle Damgard

Qua hình 3.5 ta có thể thấy, thông điệp đầu vào sẽ được chia thành các thông

điệp nhỏ hơn có chiều dài 64 bit. Nếu thông điệp cuối cùng có chiều dài nhỏ hơn 64

bit thì nó sẽ được gắn thêm một chuỗi bit vào đằng sau như trường hợp đầu tiên

phía bên trên. IV chính là vector khởi tạo, là khóa do người dùng cung cấp. Sau

vòng mã hóa đầu tiên, IV sẽ được cập nhật là 64 bit đầu ra gắn liền phía sau là 16

bit cuối cùng của khóa. Cứ như vậy thực hiện băm đến hết chiều dài của chuỗi đầu

vào, ta sẽ thu được chuỗi băm đầu ra có kích thước 64 bit.

Ví dụ: Băm chuỗi x = “NguyenKhacHung”

T r a n g | 37

DM-PRESENT (x) = 0011 0001 0011 1111 1000 1001 1010 0011 0101 0111

1011 1000 0100 1011 1001 1110

Trong hệ thập lục phân sẽ là DM-PRESENT (x) = 313f89a357b84b9e

Với hàm PRESENT 80 bit khóa, khối 64 bit thì số vòng trên mỗi khối là 32.

Cài đặt trên phần cứng tính toán được là: thông lượng: 200 Kbps tại 100KHz, sử

dụng công nghệ 0.18 micromet và số vòng đạt được 1570 [5]. Như vậy hàm

PRESENT rất thuận lợi để cài đặt trên phần cứng của các thiết bị IoT bị giới hạn

nhiều bởi lượng tiêu thụ và khả năng lưu trữ. Với độ bảo mật hiện tại đại diện là

preimage và second preimage của hàm nén PRESENT là 264 thì việc áp dụng hàm

này vào thực tế rất khả thi.

T r a n g | 38

Hình 3.6: Sơ đồ tuần tự hàm băm của hệ mật PRESENT theo công thức

DaviesMayer và cấu trúc Merkle Damgard

T r a n g | 39

Chương 4: THỰC NGHIỆM

Ở chương 4, tác giả tiến hành cài đặt thuật toán băm PRESENT theo cấu trúc

Merkle Damgard sau đó ứng dụng vào xác thực mật khẩu trên các app di động nền

tảng Android.

4.1 Mục đích thực nghiệm

Cài đặt và ứng dụng chương trình băm PRESENT vào các app di động.

Tương lai có thể áp dụng vào các thiết bị bị giới hạn bởi năng lượng tiêu thụ và khả

năng lưu trữ như Arduino.

4.2 Tiến hành thực nghiệm

4.2.1 Xây dựng chương trình băm PRESENT

Chương trình PRESENT bao gồm các pha tính toán khóa, addRoundKey, …

như mã nguồn bên dưới. Chương trình tham khảo tại [15]. Ngoài ra, trên trang

lightweightcrypto.org còn chứa các mã nguồn khác của PRESENT theo các hướng

cài đặt tối ưu trên phần cứng với khóa 64 bit, 128 bit (có cả mã nguồn bổ sung của

// ******************************************************************************

S-Box 8 bit).

for(int round=0;round<32;round++){

subkey[round] = keyhigh; //61-bit shift trái

temp = keyhigh;

keyhigh <<= 61;

keyhigh |= (keylow<<45);

keyhigh |= (temp>>19);

keylow = (temp>>3)&0xFFFF;

temp = keyhigh>>60; //S-Box

keyhigh &= 0x0FFFFFFFFFFFFFFF;

temp = sBox4[temp];

keyhigh |= temp<<60;

keylow ^= ( ( (round+1) & 0x01 ) << 15 );

keyhigh ^= ( (round+1) >> 1 );

}

// ****************** Kết thúc pha tính toán khóa *************************************

T r a n g | 40

// ****************** Mã hóa *****************************************************

for(i=0;i<31;i++){

// ****************** Pha addRoundkey *********************************************

state ^= subkey[i];

// ****************** Kết thúc pha addRoundkey *************************************

// ****************** Pha sBoxLayer ***********************************************

for(sBoxNr=0; sBoxNr < 16; sBoxNr++){

sBoxValue = state & 0xF;

state &= 0xFFFFFFFFFFFFFFF0;

state |=sBox4[sBoxValue];

state = rotate4l_64(state);

}

// ****************** Kết thúc pha sBoxLayer ****************************************

// ****************** Pha pLayer **************************************************

temp = 0;

for(int k=0;k<64;k++){

int position = (16*k) % 63; // Hoán vị bit của p-Layer

if(k == 63) //Exception cho bit 63

position = 63;

temp |= ((state>>k) & 0x1) << position; //result writing

}

state=temp;

// ****************** Kết thúc pha pLayer *******************************************

}

// ****************** Hàm addRoundkey vòng thứ 32 **********************************

state ^= subkey[31];

// ******************************************************************************

// ****************** Băm chuỗi có độ dài nhỏ hơn 64 bit ******************************

if (len (H) < 64){

H = appendBit (H, len(H));

hashMess = hash (H, K);

} else if (len (H) > 64){ // Băm chuỗi có độ dài lớn hơn 64 bit, sử dụng Merkle Damgard

IteratorH = Merkle (H);

numOfH = len (H) % 64;

for (int i = 0; i < numOfH-1; i ++){

temp = hash (IteratorH[i], &K);

newKey = makeNewKey(temp, K);

T r a n g | 41

K = newKey;

hashMess = temp;

}

if (len (IteratorH[numOfH-1]) < 64)

{

H = appendBit (H, len(H));

}

hashMess = hash((IteratorH[numOfH-1]), K);

} else

{

hashMess = hash (H, K);

}

// ****************************** Kết thúc băm ************************************

4.2.2 Tích hợp vào app di động

Build hàm băm PRESENT theo dạng thư viện tĩnh sau đó thông qua Jni để

sử dụng như một thư viện của Java/Android. IDE sử dụng Android Studio ver 3.0.

Cấu trúc sử dụng như hình 4.1 bên dưới:

Hình 4.1: Sử dụng Jni như cầu nối để gọi qua lại giữa Java và C/C++

4.3 Kết quả thực nghiệm

Xây dựng chương trình Bom Báo. Chương trình này cho phép người dùng

lưu lại thời gian sự kiện cần nhắc nhở. Sau đó đến thời điểm đã được đặt sẵn,

chương trình sẽ thông báo cho người dùng. Chương trình băm PRESENT đảm bảo

chức năng bảo mật cho mã bảo vệ, giúp thông tin của người dùng không bị xâm

phạm. Chương trình Bom Báo, phần cài đặt mật khẩu và yêu cầu xác thực mật khẩu

thể hiện như hình 4.4: Sơ đồ tuần tự phần mật khẩu của chương trình Bom Báo.

T r a n g | 42

Chương trình được cài đặt như hình 4. 2 và 4.3:

Hình 4.2: Cài đặt chương trình bảo mật của hàm PRESENT

Hình 4.3: Cài đặt chương trình bảo mật của hàm PRESENT

T r a n g | 43

Hình 4.4: Sơ đồ tuần tự phần mật khẩu của chương trình Bom Báo

T r a n g | 44

KẾT LUẬN

Cùng với sự phát triển như vũ bão của công nghệ IoT thì mật mã nhẹ nói

chung và hàm băm nhẹ nói riêng sẽ được quan tâm rất nhiều trong những năm sắp

tới đây. Điều này đặt ra thách thức rất lớn cho lĩnh vực còn mới mẻ này là làm sao

để đảm nhiệm được sứ mệnh được giao? Tuy nhiên, nhìn sự phát triển 5 năm trở lại

đây thì ta có thể tin vào một tương lai cực kỳ rực rỡ.

Thách thức lớn nhất là làm sảo để đảm bảo được yếu tố bảo mật, đồng thời

chi phí thấp nhưng hiệu suất lại cao. Đây là ba yếu tố không thể đồng thời cùng đi

lên nên điều chúng ta cần làm là làm sao để cân bằng được 3 yếu tố này với thiết bị

cần áp dụng. Cũng chính vì thách thức lớn như vậy nên nó đồng thời lại là một mỏ

vàng lớn để những nhà mật mã học khai thác, để những nhà mật mã học thỏa sức

thể hiện tài năng của mình.

Trong luận văn này của mình, tác giả đề xuất phương án cải tiến S-Box để

tăng tính hỗn loạn. Điều này gây khó khăn trong việc giải mã của kẻ tấn công

nhưng lại không làm tăng độ phức tạp của thuật toán.

Hướng phát triển

- Cài đặt bảo mật trên các thiết bị Arduino và những thiết bị bị giới hạn.

Những thiết bị này được cài đặt các chương trình thu thập thông tin về thời

tiết như nhiệt độ và độ ẩm.

- Nghiên cứu mã khối 16 bit và 128 bit của hệ mật PRESENT để có thể áp

dụng vào bất cứ thiết bị nào được yêu cầu (thiết bị bị giới hạn hoặc là

không).

- Cài đặt PRESENT theo hai hướng: Hướng đàu tiên là tối ưu hóa tốc độ xử lý,

hướng thứ hai là tối ưu hóa không gian lưu trữ. Đưa ra đánh giá chi tiết về

hai hướng cài đặt này để cuối cùng có thể áp dụng vào các thiết bị cụ thể.

T r a n g | 45

CÔNG TRÌNH ĐÃ CÔNG BỐ

[1] Lê Phê Đô, Mai Mạnh Trừng, Nguyễn Khắc Hưng, Trần Văn Mạnh, Lê

Trung Thực, Lê Thị Len và Nguyễn Thị Hằng, Cải tiến mã khối hạng nhẹ họ LED

và Neokeon, Hội thảo quốc gia lần thứ XX, 11 – 2017, trang 41 - 48.

[2] Lê Phê Đô, Mai Mạnh Trừng, Lê Trung Thực, Nguyễn Thị Hằng, Vương

Thị Hạnh, Nguyễn Khắc Hưng, Đinh Thị Thúy và Lê Thị Len, Nghiên cứu một số

hệ mật mã nhẹ và ứng dụng trong IoT, Đặc san an toàn thông tin, 5 - 2017.

T r a n g | 46

TÀI LIỆU THAM KHẢO

Tài liệu tiếng việt

[1] Lê Phê Đô, Mai Mạnh Trừng, Nguyễn Khắc Hưng, Trần Văn Mạnh, Lê Trung

Thực, Lê Thị Len và Nguyễn Thị Hằng, Cải tiến mã khối hạng nhẹ họ LED và

Neokeon, Hội thảo quốc gia lần thứ XX, 11 – 2017, trang 41 - 48.

Tài liệu tiếng anh

[2] Joseph Sterling Grah, Hash Functions in Cryptography, 2008.

[3] Medha A. Bodas, Fibonacci sequences and the golden section, 2001.

[4] Wenling Wu and Shuang Wu and Lei Zhang and Jian Zou and Le Dong, LHash:

A Lightweight Hash Function.

[5] A. Bogdanov and L.R. Knudsen and G. Leander and C. Paar and A. Poschmann

and M.J.B. Robshaw and Y. Seurin and C. Vikkelsoe, Present: An Ultra-

Lightweight Block Cipher.

[6] Naofumi Homma and WG members, Cryptrec Cryptographic Technology

Guideline (Lightweight Cryptography), Mar – 2017.

[7] Jen Clark, IoT and the telecommunications industry, Sep 13 – 2016.

[8] https://www.cryptolux.org/index.php/Lightweight_Hash_Functions

[9] https://vi.wikipedia.org/wiki/Internet_V%E1%BA%A1n_V%E1%BA%ADt

[10] Axel York Poschmann, Cryptographic Engineering for Pervasive World, Feb

– 2009.

[11] Kerry A. McKay and Larry Bassham and Meltem Sonmez Turan and Nicky

Mouha, Report on Lightweight Cryptography, March 2017.

[12] Bogdanov, G. Leander, C. Paar and A. Poschmann and M.J.B Robshaw and Y.

Seurin, Hash Function and RFID Tag: Mind the Gap 2008.

T r a n g | 47

[13] Zhijie Shi and Chujiao Ma and Jordan Cote and Bing Wang, Hardware

implementation of hash function, 2013.

[14] https://en.oxforddictionaries.com/definition/internet_of_things

[15] http://www.lightweightcrypto.org/implementations.php

T r a n g | 48

PHỤ LỤC