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

TÌM HIỂU VỀ MẬT MÃ DÒNG HẠNG NHẸ TRIVIUM

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.08 MB, 55 trang )

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

LUẬN VĂN THẠC SĨ
TÌM HIỂU VỀ MẬT MÃ DÒNG HẠNG NHẸ
TRIVIUM

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 CÁC HÌNH VẼ ....................................................................... iii
DANH MỤC BẢNG BIỂU ........................................................................... iv
LỜI MỞ ĐẦU ................................................................................................ 1
CHƯƠNG 1: TỔNG QUAN VỀ MẬT MÃ HẠNG NHẸ VÀ MÃ DÒNG .... 3
1.1 Giới thiệu chung về mật mã hạng nhẹ ......................................... 3
1.1.1 Khái niệm ............................................................................ 3
1.1.2 Động cơ thúc đẩy phát triển ................................................. 3
1.1.3 Nguyên lý thiết kế thuật toán mật mã hạng nhẹ.................... 5
1.1.4 Các yêu cầu đối với mật mã hạng nhẹ .................................. 6
1.1.5 Mật mã khóa bí mật hạng nhẹ .............................................. 9
1.1.6 Mật mã khóa cơng khai hạng nhẹ....................................... 13
1.2 Giới thiệu chung về mã dòng .................................................... 16
1.2.1. Định nghĩa về mã dòng ..................................................... 17
1.2.2 Một số đặc điểm của hệ mã dòng ....................................... 17
1.2.3 Phân loại mã dòng ............................................................ 18
CHƯƠNG 2: MẬT MÃ DỊNG HẠNG NHẸ TRIVIUM ............................ 24


2.1. Mơ hình tổng qt cho mã dòng .............................................. 24
2.1.1 Thuật ngữ và định nghĩa .................................................... 24
2.1.2 Các ký hiệu ....................................................................... 26
2.1.3 Bộ tạo dòng khóa đồng bộ ................................................ 27
2.1.4 Các hàm đầu ra .................................................................. 28
i


2.2 Bộ tạo dịng khóa Trivium ........................................................ 29
2.2.1 Tổng quan.......................................................................... 29
2.2.2 Trạng thái bên trong........................................................... 29
2.2.3 Hàm khởi tạo Init ............................................................... 30
2.2.4 Hàm trạng thái tiếp theo Next ............................................ 31
2.2.5 Hàm dịng khóa Strm ......................................................... 31
2.3 Hướng dẫn cài đặt và sử dụng mã dòng Trivium ...................... 31
2.3.1 Song song hóa ................................................................... 31
2.3.2 Khuyến nghị sử dụng các giá trị khởi tạo ........................... 32
2.3.3 Bảng tính năng................................................................... 34
2.3.4 Đánh giá độ an tồn ........................................................... 35
CHƯƠNG 3 CÀI ĐẶT CHƯƠNG TRÌNH MƠ PHỎNG MÃ DỊNG HẠNG
NHẸ TRIVIUM ........................................................................................... 37
3.1 Cài đặt chương trình mơ phỏng mã dịng Trivium .................... 37
3.1.1 Một số lưu đồ giải thuật chính trong chương trình ............. 37
3.1.2 Cài đặt và thử nghiệm chương trình ................................... 41
3.2 Đánh giá chất lượng dịng khóa trivium .................................... 43
3.2.1 Chu kỳ ............................................................................... 43
3.2.2 Các phép kiểm tra chất lượng dòng bit............................... 43
3.2.3 Đánh giá chất lượng dòng bit tạo ra ................................... 47
KẾT LUẬN .................................................................................................. 49
TÀI LIỆU THAM KHẢO ............................................................................ 50


ii


DANH MỤC CÁC HÌNH VẼ
Hình 1.1: Ba ngun lý thiết kế thuật tốn mật mã hạng nhẹ .......................... 5
Hình 1.2: Các loại mật mã hạng nhẹ ............................................................. 10
Hình 1.3: Thanh ghi dịch phản hồi tuyến tính ............................................... 20
Hình 2.1: Một cài đặt của TRIVIUM sử dụng thanh ghi dịch ....................... 30
Hình 3.1: Lưu đồ thuật tốn của hàm khởi tạo Init ....................................... 37
Hình 3.2: Lưu đồ thuật tốn của hàm trạng thái tiếp theo Next ..................... 39
Hình 3.3: Lưu đồ thuật tốn của hàm dịng khóa Strm .................................. 40

iii


DANH MỤC BẢNG BIỂU
Bảng 1.1: Hiệu quả phần cứng của một số giải thuật mật mã hạng nhẹ .......... 6
Bảng 1.2: Kết quả triển khai các thuật tốn mã hóa hạng nhẹ trên phần cứng
(1) [6] ........................................................................................................... 12
Bảng 1.3: Kết quả triển khai các thuật tốn mã hóa hạng nhẹ trên phần cứng
(2) [6] ........................................................................................................... 13
Bảng 2.1: Các thuộc tính hạng nhẹ của Enocoro và Trivium ........................ 34
Bảng 3.1: Giá trị phân vị của phân bố chuẩn tắc trong thống kê .................. 44
Bảng 3.2: Giá trị phân vị của phân bố 2 ...................................................... 44

iv


LỜI MỞ ĐẦU

Mật mã hạng nhẹ hướng tới việc tạo ra các giải pháp cài đặt rất gọn nhẹ
nhưng không làm giảm q nhiều về tính an tồn. Nó là một giải pháp đưa ra
thỏa hiệp giữa độ an toàn và tính hiệu quả trong cài đặt của các thuật toán mật
mã.
Nếu xét theo số bit xử lý, mật mã khóa đối xứng có hai loại là mã dịng
(stream cipher) và mã khối (block cipher). Mã khối làm việc bằng cách chia
khối dữ liệu cần mã hóa thành những khối có độ dài nhất định và xử lý (mã
hóa/giải mã) trên các khối dữ liệu này. Yêu cầu của mã khối là phải biết trước
kích thước bản rõ. Tuy nhiên khơng phải dữ liệu cần mã hóa nào cũng rõ
ràng, tường minh ngay từ đầu, mà thường không biết trước kích thước hoặc
biến thiên theo thời gian. Mật mã dịng hoạt động với dữ liệu đầu vào được
mã hóa từng bit một có thể đáp ứng được sự biến thiên theo thời gian trên
những khối bản rõ (plaintext) riêng biệt.
Mật mã dòng thực sự phát triển từ những năm 1960 với rất nhiều tổ
chức sử dụng như các quân đội, ngoại giao, các tổ chức gián điệp, các doanh
nghiệp, viễn thơng... Mã dịng ngày càng trở lên phổ biến nhất là khi những
thiết bị mã hóa điện tử bán dẫn bắt đầu xuất hiện với dung lượng bộ nhớ thấp.
Nhất là với tốc độ phát triển của IoT như ngày nay, theo dự đốn của SICCO
thì đến năm 2020 có thể có đến 50 tỷ thiết bị tham gia vào Internet. Ngồi
máy tính, các thiết bị có cấu hình cao thì cịn có rất nhiều thiết bị chỉ có chip
xử lý hạn chế như tủ lạnh, điều hòa, máy giặt...
So với các thuật tốn mã hóa dịng khác, các thuật tốn mã hóa dịng
nhẹ dành được ưu thế về sự đơn giản trong triển khai. Theo thực nghiệm của
Good, T., & Benaissa, M, RC4 cần 50000 GE và có thơng lượng 10 Gbps;
Snow 3G cần 11000 GE, 1.72 Gbps; A5/1 cần 700 GE; trong khi các thuật
tốn mã hóa nhẹ tiêu biểu như Grain 80 chỉ cần đến 1294 GE để đạt thông
1


lượng 725 Mbps, hay Trivium x64 chỉ cần đến 4921 GE để có thơng lượng

22300 Mbps.
Mã dịng hạng nhẹ Trivium được giới thiệu trong tiêu chuẩn ISO/IEC
29192-3 là một trong những loại mã dịng có nhiều ưu điểm, có tính thực tiễn
cao

2


CHƯƠNG 1: TỔNG QUAN VỀ MẬT MÃ HẠNG NHẸ VÀ
MÃ DÒNG
1.1 Giới thiệu chung về mật mã hạng nhẹ
1.1.1 Khái niệm
Do sự phát triển của tính tốn khắp nơi (ubiquitous computing) người
ta cần những thuật tốn hạng nhẹ để có thể cài đặt trong các thiết bị thâm
nhập khắp nơi (pervasive devices) với kích thước nhỏ và năng lực tính tốn ở
mức độ thích hợp. Vì thế mà mật mã hạng nhẹ (lightweight cryptograhy) với
thuật tốn nhanh, an tồn và chi phí thực hiện thấp ra đời và ngày càng phát
triển.
Hiện nay, chưa có một tổ chức nào đưa ra khái niệm chính xác hay định
lượng cụ thể về mật mã hạng nhẹ. Vì vậy có rất nhiều phiên bản để định nghĩa
mật mã hạng nhẹ. Một trong số đó là tiêu chuẩn ISO/IEC 29192-1 [3] đã đưa
ra khái niệm cơ bản về mật mã hạng nhẹ trong phần tổng quan của tiêu chuẩn.
Mật mã hạng nhẹ là mật mã được dùng cho mục đích bảo mật, xác thực, thiết
lập và trao đổi khóa; phù hợp cài đặt cho những mơi trường tài ngun hạn
chế. Trong ISO/IEC 29192, tính chất nhẹ được mô tả dựa trên nền tảng cài
đặt. Trong triển khai phần cứng, diện tích chip và năng lượng tiêu thụ là
những biện pháp quan trọng để đánh giá tính nhẹ của hệ mật. Trong triển khai
phần mềm thì kích thước mã nguồn, kích thước RAM lại là tiêu chí cho một
hệ mật được coi là nhẹ.
Đồ án trình bày về động cơ phát triển loại hình mật mã này, một số

nguyên thủy mật mã đối xứng hạng nhẹ.
1.1.2 Động cơ thúc đẩy phát triển
Mật mã hạng nhẹ hướng tới việc tạo ra các giải pháp cài đặt rất gọn nhẹ
nhưng khơng làm giảm q nhiều về tính an tồn. Nó là một giải pháp đưa ra
thỏa hiệp giữa độ an tồn và tính hiệu quả trong cài đặt của các thuật toán mật
mã.
Ngày càng nhiều các sản phẩm được nâng cấp thành các thiết bị thâm
nhập khắp nơi nhờ năng lực tính tốn nhúng. Quan hệ mật thiết giữa các thiết
bị này dẫn đến triển vọng rằng tính tốn khắp nơi sẽ là mơ hình tiếp theo
trong cơng nghệ thông tin.
3


Việc triển khai hàng loạt của các thiết bị thâm nhập khắp nơi hứa hẹn
đem đến nhiều lợi ích như chi phí “hậu cần” thấp hơn, các chuỗi cung cấp
được tối ưu hoặc có thêm các dịch vụ dựa trên xác định vị trí.
Ví dụ, cơng nghệ RFID được tin là công nghệ cho phép đối với
(internet of things). Về cơ bản, các thẻ RFID bao gồm một hệ thống phát nhận
tín hiệu và một anten có khả năng nhận dữ liệu từ xa, từ một máy chủ RFID
hoặc thiết bị đọc. Nhìn chung, các thẻ RFID có thể được chia thành các thiết
bị chủ động và bị động: các thẻ chủ động được trang bị nguồn cung cấp năng
lượng riêng (ví dụ ở dạng pin), trong khi các thẻ bị động chỉ dựa vào năng
lượng của tín hiệu mạng được truyền đi bởi thiết bị đọc. Do vậy, các thiết bị
RFID bị động khơng chỉ rẻ hơn, mà cịn có kích thước chip nhỏ hơn và có chu
kỳ sống lâu hơn.
Tính thâm nhập khắp nơi của thiết bị dẫn đến việc triển khai hàng loạt
và việc triển khai hàng loạt lại kéo theo các ràng buộc giảm giá thành đối với
công nghệ được sử dụng. Các cài đặt phần mềm thông thường bị ràng buộc về
dung lượng của bộ xử lý, bộ nhớ và năng lượng. Vấn đề năng lượng có thể
được giải quyết trong q trình thiết kế bằng cách tránh các truy cập tiêu thụ

năng lượng tới bộ nhớ EEPROM hoặc bộ nhớ Flash và bằng cách giảm các
chu kỳ đồng hồ được yêu cầu. Các đòi hỏi giảm chi phí đưa đến các yêu cầu
năng lực, năng lượng và diện tích cần phải giữ cực tiểu đối với ASIC. Một thẻ
RFID giá thành thấp, đầy đủ tính năng, có thể có từ 1.000 đến 10.000 GE
(Gate Equivalent), trong đó, các thành phần an tồn chỉ có khoảng 200 - 2.000
GE.
Bên cạnh những lợi ích ở trên, tính tốn khắp nơi cũng chứa đựng
nhiều hiểm họa. Nhiều ứng dụng yêu cầu cao về độ an toàn, chẳng hạn như
các mạng cảm biến không dây cho các ứng dụng qn sự, tài chính hoặc tự
động hóa.
Một nhân tố làm tăng nguy cơ mất an toàn là các thiết bị thâm nhập
khắp nơi thường triển khai trong một môi trường khơng được kiểm sốt mà là
một mơi trường mà đối phương có thể truy cập vật lý tới thiết bị hoặc điều
khiển thiết bị. Điều đó làm tăng thêm khả năng tấn công vật lý vào các kịch
bản tấn công tiềm năng, nhất là các tấn công kênh kề, chẳng hạn như phân
4


tích năng lượng vi sai/phân tích năng lượng tương quan hoặc các tấn công bức
xạ điện từ. Thực tế đã chỉ ra rằng, các giải pháp an tồn có sử dụng một thuật
tốn an tồn về mặt mật mã, nhưng được cài đặt khơng có các biện pháp
chống tấn cơng kênh kề thì có thể dễ dàng bị phá bởi các tấn cơng như vậy. Vì
thế, khả năng an tồn của bản thân việc cài đặt cần được hết sức chú trọng.
1.1.3 Nguyên lý thiết kế thuật toán mật mã hạng nhẹ
Một hệ mật tốt nhất cần phải thỏa hiệp giữa giá thành, hiệu suất và độ
an toàn. Với các mã khối, độ dài khóa là sự thỏa hiệp giữa độ an tồn và giá
thành, trong đó số vịng là sự cân bằng giữa hiệu suất và độ an toàn, như biểu
diễn trên hình 1.1. Tuy nhiên, rất khó để có thể tối ưu hóa cả ba khía cạnh
trên.


Hình 1.1: Ba nguyên lý thiết kế thuật toán mật mã hạng nhẹ
Độ an toàn: Khi thiết kế bất kỳ một hệ mật nào, điều đầu tiên người
thiết kế cần quan tâm là độ an toàn của hệ mật. Độ an toàn có thể coi là một
yếu tố sống cịn của một hệ mật. Với mật mã nhẹ, người thiết kế cần thiết kế
một hệ mật “đủ an toàn” trong điều kiện cho phép về chi phí và hiệu quả cài
đặt. Dĩ nhiên độ an toàn của mật mã nhẹ chỉ đạt đến một ngưỡng an tồn chấp
nhận được nào đó trong một điều kiện cụ thể.
Hiệu quả cài đặt: thường được đánh giá qua các độ đo tài nguyên
được sử dụng bởi thuật tốn như: diện tích bề mặt, số chu kỳ xung nhịp, thời
5


gian thực thi, thông lượng, nguồn cung cấp, năng lượng, điện tích… Yêu cầu
này liên quan mật thiết đến chi phí cài đặt, hiệu suất và khả năng tính tốn
trên đường truyền. Độ đo cho tính hiệu quả của phần cứng chính bằng tỷ lệ
thơng lượng và điện tích sử dụng của hệ mật mã đó.
Bảng 1.1: Hiệu quả phần cứng của một số giải thuật mật mã hạng nhẹ

Mã pháp

Mã khối
Present
Hight
mCrypton
Mã dịng
Trivium
Grain

Chu
kỳ

Số
Số
xung
bits bits nhịp
khóa khối trên
một
khối

Thơng
lượng

100MHz
(Kbps)

Xử
Điện

tích
logic
(GEs)
(m)

80
128
96

64
64
64


32
34
13

200
188
492

0.18
0.18
0.13

1570
3048
2681

80
80

1
1

1
1

100
100

0.13
0.13


2599
1294

Giá thành của thuật toán: Thông thường các hệ mật mã nhẹ thường
được áp dụng trên một số lượng lớn các thiết bị như hệ thống IoT. Chính vì
vậy giá thành của thuật tốn cũng đóng ý nghĩa quan trọng trong việc triển
khai.
Một hệ mật tốt cần phải cân bằng giữa giá thành, hiệu suất và độ an
toàn. Tuy nhiên, việc cân bằng cả ba yếu tố này là một bài tốn khó. Tùy từng
điều kiện, yêu cầu cụ thể, người thiết kế có thể cân đối nên ưu tiên khía cạnh
nào hơn. Ví dụ như khi thực hiện cài đặt bằng phần cứng có hiệu suất cao thì
thường dẫn tới các u cầu cao về diện tích, giá thành cao. Mặt khác, khi thiết
kế các hệ mã ưu tiên độ an toàn trên một thiết bị có phần cứng thấp thì hiệu
suất có thể sẽ rất thấp.
1.1.4 Các yêu cầu đối với mật mã hạng nhẹ
• Các u cầu an tồn
Độ an tồn (security strength) của các thuật tốn mật mã được tính
bằng số lượng cơng việc (nghĩa là số phép tính) được yêu cầu để phá vỡ một
thuật toán mật mã hoặc hệ thống mật mã. Khái niệm này có thể được sử dụng
6


cho các cơ chế mật mã khác nhau. Hai cơ chế được xem là tương đương nếu
lượng công việc cần thiết để phá hủy các cơ chế hoặc việc xác định các khóa
là xấp xỉ bằng nhau bằng cách sử dụng tài nguyên cho trước.
Theo tiêu chuẩn ISO/IEC 29192-1, mức an toàn 80 bit được xem là
mức an toàn thấp nhất cho mật mã hạng nhẹ. Việc chống lại tấn cơng kênh kề
có thể là quan trọng trong một số ứng dụng của mật mã hạng nhẹ. Biện pháp
chống phân tích kênh kề thường yêu cầu thêm diện tích chip (với thuật tốn

được cứng hóa) hoặc thêm mã chương trình (thuật toán phần mềm). Các biện
pháp chống lại khác nhau phụ thuộc vào kỹ thuật, và phương thức cụ thể áp
dụng cho một cài đặt cụ thể. Việc kháng kênh kề nằm ngồi phạm vi của tiêu
chuẩn này.
• Các u cầu cài đặt phần cứng
Hai yếu tố sau đều là các đặc trưng vật lý quan trọng của mật mã hạng
nhẹ trong cài đặt phần cứng:
- Diện tích chip
- Năng lượng tiêu thụ
Với mục tiêu của ISO/IEC 29192-1, diện tích chip được đo qua các
cổng tương đương (GE). Điều này cho phép chuẩn hóa việc so sánh giữa các
cơ chế mật mã khi triển khai bằng phần cứng. Khơng có số liệu cụ thể nào
cho kích cỡ mục tiêu phù hợp cho các cài đặt bởi vì phụ thuộc vào thực tế của
ứng dụng, cơ chế mật mã được xem xét và triển khai. Trong một số ứng dụng
mật mã hạng nhẹ, các biện pháp chống lại tấn công kênh kề là cần thiết và
địi hỏi thêm chi phí.
Việc so sánh năng lượng tiêu thụ giữa các cơ chế mật mã là khó bởi vì
phụ thuộc vào cơng nghệ riêng mà các cơ chế được cài đặt. Một vài cơ chế
mật mã có thể được cài đặt trên phần cứng với mức năng lượngtiêu thụ thấp
nhưng diện tích chip lớn, tuy nhiên trong ISO/IEC 29192-1, năng lượng tiêu
thụ được đánh giá bằng cách cài đặt sử dụng phần cứng với diện tích chip
nhỏ.
Thực tế, tất cả các mã khối và mã dịng cho mục đích cài đặt trên phần
cứng cung cấp tóm tắt các thơng tin dưới đây hỗ trợ người sử dụng lựa chọn
một cơ chế phù hợp nhất với ứng dụng:
7


a) Diện tích chip
b) Chu kỳ

c) Số bit/Chu kỳ
d) Cơng suất
e) Năng lượng
f) Năng lượng mỗi bit
g) Công nghệ: Thư viện cụ thể và số phiên bản đã sử dụng để thu được
kết quả đó.
• Các u cầu cài đặt phần mềm
Trong một số ứng dụng của mật mã hạng nhẹ cài đặt phần mềm được
ưu tiên hơn các cài đặt phần cứng. Các khía cạnh dưới đây có thể rất quan
trọng trong cài đặt phần mềm trong các môi trường hạn chế:
- Kích thước chương trình
- Kích thước RAM
Các cơ chế mật mã hạng nhẹ được ưu tiên trên một số lượng lớn các
bộ vi xử lý, nghĩa là như có thể được xem xét hạng nhẹ vì các yêu cầu để
phân loại cơ chế hạng nhẹ ít phụ thuộc vào tập lệnh cụ thể được cài đặt trên
công nghệ cụ thể.
Trong thực tế, mục tiêu của tất cả các mã khối và mã dòng cho cài đặt
trên phần mềm là cung cấp tóm tắt các thơng tin sau hỗ trợ người dùng lựa
chọn cơ chế tốt nhất cho ứng dụng:
a) Kích thước mã chương trình
b) Kích thước RAM
c) Tốc độ
• Các đặc tính tối ưu khác
Hiệu śt đầu vào ngắn: Trong một số ứng dụng mật mã hạng nhẹ
thông điệp/ bản rõ/ bản mã ngắn được xử lý bởi các cơ chế mật mã. Khi có
nhiều thơng điệp ngắn/ bản rõ/ bản mã ngắn được xử lý độc lập, hiệu suất đầu
vào ngắn đầu vào trở thành một yếu tố quan trọng được xem xét, và áp dụng
8



cho tất cả các loại mật mã hạng nhẹ. Thậm chí nó có thể là mật mã hạng nhẹ
ngun thủy được thiết kế để có một hiệu suất đầu vào ngắn tốt và trong
trường hợp này, thực tế được chỉ ra bởi cơ chế này.
Các yếu tố ảnh hưởng đến hiệu suất đầu vào ngắn là tỉ lệ của kích thước
xử lý (số bit khóa, kích thước khối của bản mã, hoặc kích thước khối của đầu
vào hàm băm nén) so với kích thước thơng điệp cũng như thời gian thiết lập
ban đầu cho mỗi tiến trình của mỗi thơng điệp đơn.
Độ trễ: Trong một số hệ thống liên lạc (như mạng cảm biến) độ trễ
được xem xét bởi cơ chế mật mã là yếu tố rất quan trọng. Cần quan tâm tới độ
trễ vì các cơ chế bị ảnh hưởng bởi công nghệ được sử dụng để cài đặt cơ chế,
và tối ưu hóa việc thực hiện.
Ví dụ: Khi mã hóa các gói tin thời gian thực trên đường truyền thoại,
tiến trình mã hóa sinh ra trễ. Nếu độ trễ quá lớn (so với chi phí của một cơ chế
hạng nhẹ như việc triển khai tuần tự với kích thước nhỏ), người dùng điện
thoại sẽ gặp phải sự chậm trễ và không thoải mái trong cuộc trao đổi hai
chiều.
1.1.5 Mật mã khóa bí mật hạng nhẹ
ECRYPT (European Network of Excellence for Cryptology) là một
mạng lưới nghiên cứu về mật mã nổi tiếng ở Châu Âu và được IST tài trợ từ
năm 2004. ECRYPT đã giới thiệu 4 loại nguyên thủy mật mã là mã khối, mã
dòng, hàm băm và mã xác thực thơng báo. Những thuật tốn đã được đề cập
đến bao gồm: Về độ an toàn, mục tiêu xây dựng các hệ mã hạng nhẹ là thiết
kế một hệ mật khơng q yếu (và khơng với mục đích thay thế các thuật toán
mã truyền thống khác), nhưng phải đủ an tồn (tất nhiên khơng thể kháng lại
được các đối phương có đủ mọi điều kiện), chi phí (cài đặt, sản xuất) thấp và
một yêu cầu quan trọng đối với các thiết bị kiểu này là tính gọn nhẹ “on-thefly”. Tóm lại, cần xây dựng một hệ mật khơng phải tốt nhất, mà phải cân bằng
giữa giá thành, hiệu suất và độ an toàn.

9



Hình 1.2: Các loại mật mã hạng nhẹ
Qua các hội nghị ECRYPT đã đề cập đến nhiều hệ mật như:
• Mã khối: DESXL, HIGHT, KASUMI, KATAN, KTANTAN,
mCRYPTON, PRESENT, SEA, XTEA, ...
• Mã dịng: Grain 1, Grain - 128, MICKEY v2 và Trivium
• Hàm băm: MAME, DM-PRESENT, H-PRESEN, Keccak, Quark
và Armadillo
• Mã xác thực thông báo (SQUASH).
Những báo cáo liên quan tới thuật toán mật mã đối xứng hạng nhẹ cũng
đã được trình bày trong hội nghị ECRYPT 2011 như: Mã khối (PUFFIN,
PUFFIN2, LBlock, Piccolo, TWINE) và Hàm băm (SPONGENT).
Nếu xét theo số bit xử lý, mật mã khóa đối xứng có hai loại là mã dịng
(stream cipher) và mã khối (block cipher). Mã khối làm việc bằng cách chia
khối dữ liệu cần mã hóa thành những khối có độ dài nhất định và xử lý (mã
hóa/giải mã) trên các khối dữ liệu này. Yêu cầu của mã khối là phải biết trước
kích thước bản rõ. Tuy nhiên khơng phải dữ liệu cần mã hóa nào cũng rõ
ràng, tường minh ngay từ đầu, mà thường khơng biết trước kích thước hoặc
biến thiên theo thời gian. Mật mã dòng hoạt động với dữ liệu đầu vào được
mã hóa từng bit một có thể đáp ứng được sự biến thiên theo thời gian trên
những khối bản rõ (plaintext) riêng biệt. Mật mã dòng thực sự phát triển từ
những năm 1960 với rất nhiều tổ chức sử dụng như các quân đội, ngoại giao,
các tổ chức gián điệp, các doanh nghiệp, viễn thông...
10


Mã dòng ngày càng trở lên phổ biến nhất là khi những thiết bị mã hóa
điện tử bán dẫn bắt đầu xuất hiện với dung lượng bộ nhớ thấp. Nhất là với tốc
độ phát triển của IoT như ngày nay, theo dự đốn của SICCO thì đến năm
2020 có thể có đến 50 tỷ thiết bị tham gia vào Internet. Ngồi máy tính, các

thiết bị có cấu hình cao thì cịn có rất nhiều thiết bị chỉ có chip xử lý hạn chế
như tủ lạnh, điều hòa, máy giặt... So với các thuật tốn mã hóa dịng khác, các
thuật tốn mã hóa dịng nhẹ dành được ưu thế về sự đơn giản trong triển khai.
Theo thực nghiệm của Good, T., & Benaissa, M [17], RC4 cần 50000 GE và
có thơng lượng 10 Gbps; Snow 3G cần 11000 GE, 1.72 Gbps; A5/1 cần 700
GE; trong khi các thuật tốn mã hóa nhẹ tiêu biểu như Grain 80 chỉ cần đến
1294 GE để đạt thông lượng 725 Mbps, hay Trivium x64 chỉ cần đến 4921
GE để có thơng lượng 22300 Mbps.

11


Bảng 1.2: Kết quả triển khai các thuật toán mã hóa hạng nhẹ
trên phần cứng (1) [6]

12


Bảng 1.3: Kết quả triển khai các thuật toán mã hóa hạng nhẹ
trên phần cứng (2) [6]

1.1.6 Mật mã khóa cơng khai hạng nhẹ
Sự phát triển nhanh chóng của giao dịch điện tử trên toàn thế giới tạo ra
nhu cầu lớn đối với các giải pháp mật mã khóa cơng khai an tồn, nhanh và
giá thành thấp. Bên cạnh tính bí mật, các nhà mật mã học cần giải quyết bài
toán quan trọng là xác thực. Một số lược đồ mật mã đã được đề xuất để giải
quyết các vấn đề này.
Để đánh giá ưu việt của các lược đồ đã được đề xuất, ba tính chất chính
được đưa ra xem xét, trong đó, quan trọng nhất là độ an toàn. Rõ ràng, một hệ
thống được chấp nhận rộng rãi bởi được khẳng định rằng khơng có ai có khả

năng hủy hoại nó. Tất nhiên điều này là quan trọng, nhưng trong nhiều ứng
13


dụng, nó khơng đủ đảm bảo thỏa mãn u cầu về độ an toàn. Một cách khác
là cố gắng chứng minh độ an tồn theo nghĩa tốn học, tức là, thiết lập các
định lý mà khẳng định rằng thực hiện các hành động không hợp pháp, chẳng
hạn như mạo danh, cũng khó như việc giải một bài tốn cụ thể mà tính khó
của nó đã được xác định.
Tiếp theo, kích thước của dữ liệu trong lược đồ có một ý nghĩa thực
hành quan trọng. Người ta thường dùng các khóa riêng và khóa cơng khai
ngắn, nhất là khi chúng được lưu trong các thiết bị gọn nhẹ như các thẻ chip,
có khả năng lưu trữ nhỏ. Chúng ta cũng muốn giảm lượng thông tin truyền
phát và độ dài của các chữ ký. Độ dài chữ ký là một tham số quan trọng trong
các ứng dụng, mà đối với chúng nhiều chữ ký cần phải được lưu trữ (ví dụ,
trong giao dịch điện tử) hoặc phải truyền đi (ví dụ, truyền hình trả tiền).
Tính chất quan trọng khác là độ phức tạp thời gian, nó trực tiếp chi
phối giá thành của các thiết bị có thể cài đặt một lược đồ. Ở đây, cần phải
phân biệt giữa những tính tốn có thể thực hiện trước (không trực tuyến và
được lưu kết quả trong bộ nhớ) với những tính tốn phải thực hiện trực tuyến
trong q trình xác thực hoặc tính tốn chữ ký. Yếu tố sau thường là điểm
“nghẽn cổ chai” của nhiều ứng dụng, đặc biệt khi sử dụng các thẻ thông minh.
Một nhược điểm đã được biết đến của các ngun thủy mật mã khóa
cơng khai là chúng địi hỏi chi phí tính tốn lớn hơn so với các nguyên thủy
mật mã đối xứng hạng nhẹ. Việc thiết kế được một thuật tốn mật mã khóa
cơng khai thuộc hạng nhẹ khó hơn so với việc thiết kế ra một thuật tốn mật
mã đối xứng hạng nhẹ. Chính vì vậy mà có rất ít các ngun thủy mật mã
khóa cơng khai được coi là hạng nhẹ. Trên trang web của ECRYPT về mật
mã hạng nhẹ khơng nói tới các thuật tốn mật mã khóa cơng khai hạng nhẹ.
Tuy nhiên, trong hội nghị ECRYPT về Mật mã hạng nhẹ năm 2011 có đề cập

đến 2 giao thức xác thực là Ring- LPN và CANAuth.
Một thuật tốn mật mã khóa cơng khai như vậy đã được đề xuất ứng
dụng trong thực tế là GPS (tên ba tác giả của thuật toán là Marc Girault,
Guillaume Poupard và Jacques Stern).
GPS được gọi là thuật toán “khi đang chạy” (on the fly), do ứng dụng
điển hình của GPS là xác thực xe ơtơ “khi đang chạy” tại điểm trả tiền cầu
14


đường. Ý tưởng đầu tiên là trang bị cho mỗi xe ôtô được cấp phép một thẻ
thông minh không tiếp xúc với giá thành thấp. Khi xe chạy qua một điểm thu
phí, nó khơng phải dừng mà chỉ cần thực hiện một xác thực GPS để chứng
minh rằng nó là một người dùng hợp pháp. Trong một ứng dụng như vậy, thời
gian cho phép để truyền dữ liệu và thực hiện các tính tốn trực tuyến là rất
ngắn, khoảng 100 ms.
Lược đồ GPS đã được đề xuất lần đầu bởi Girault tại hội nghị
Eurocrypt 91, như một ví dụ của một lược đồ cùng với các khóa cơng khai tự
chứng thực (self- certified) nhưng khơng có phân tích độ an tồn. Sau đó,
phiên bản đầu tiên của phép chứng minh độ an toàn cho lược đồ GPS đã được
báo cáo tại hội nghị Eurocrypt 98. Một tài liệu phát hành năm 2002 đã mơ tả
những bước hồn thiện bao gồm: mơ hình phân tích độ an tồn chính xác hơn,
phép chứng minh độ an toàn đầy đủ hơn, nhiều chi tiết kỹ thuật đã được sắp
xếp lại và chỉ giả thiết về tính khó của việc tính các logarit rời rạc cùng với
các số mũ ngắn.
Lược đồ GPS đã được đệ trình tới dự án NESSIE của châu Âu và được
đưa vào dự án như một nguyên thủy mật mã mạnh. Lược đồ xác thực GPS và
lược đồ chữ ký số GPS đã được ISO/IEC chuẩn hoá.
Bài báo “Some Modes of Use of the GPS Identification Scheme” có
trình bày chi tiết, mô tả lược đồ xác thực GPS và lược đồ chữ ký GPS. Những
ưu điểm của hai lược đồ mật mã này như sau:

- Thuộc dạng an toàn chứng minh được. Phép chứng minh được dựa
trên bài toán logarit rời rạc trên nhóm hữu hạn tùy ý.
- Có kích thước khóa ngắn, kích thước chữ ký và các thơng tin truyền
phát ngắn.
- Được thực hiện với các tính tốn trực tuyến cực tiểu. Phép nhân theo
modulo cũng được tránh, mà thay vào đó là phép nhân bình thường của các số
nguyên.
- Được thực hiện mà không cần phải biết bậc của nhóm cũng như
khơng cần biết bậc của phần tử cơ sở của nhóm.

15


Bài báo cũng trình bày việc lựa chọn các tham số cùng với các kích
thước mà được cho là an tồn vào thời điểm năm 2006, ví dụ như kích thước
của nhóm là 1536 bit, đồng thời cũng đưa ra những kết quả cài đặt thử
nghiệm. Trên máy tính Pentium III với bộ xử lý tốc độ 450 MHz và chương
trình phần mềm C sử dụng thư viện số học có độ chính xác bội GMP, lược đồ
nhận thực GPS có thể đạt tới các khoảng thời gian tính tốn như sau:
- Sinh tham số: khoảng 1 giây.
- Người chứng minh tính “cam kết”: 10,1 ms (5940 lần trong 1 phút).
- Người chứng minh tính “phúc đáp”: nhỏ hơn 1 ms.
- Người kiểm tra xác minh: 11,8 ms (5084 lần trong 1 phút).
Cũng lược đồ xác thực đó, nhưng khi thực hiện trên ứng dụng thẻ thông
minh dựa trên chip 6805 thì kích thước chương trình rất nhỏ, chỉ khoảng 300
byte. Thời gian tính tốn nhỏ (dưới 2ms), cịn phần lớn thời gian là để cho
nhu cầu liên lạc giữa thẻ và máy tính. Nếu tốc độ truyền tin là 9600 bauds thì
thời gian truyền tin là 38 ms và tổng thời gian là 40 ms, còn nếu tốc độ truyền
tin là 115000 bauds thì thời gian truyền tin là 3,1 ms và tổng thời gian là 5ms.
Năm 2009, một luận án tiến sĩ đã trình bày việc thiết kế một chip phần

cứng thực hiện giao thức GPS, nhưng trên nhóm các điểm đường cong ellip.
1.2 Giới thiệu chung về mã dịng
Trong khoa học mật mã có hai ngun lý cơ bản là nguyên lý chuyển vị
và nguyên lý thay thế. Đây cũng là hai nguyên lý được áp dụng trong mật mã
khóa bí mật. Căn cứ vào ngun lý được áp dụng, các hệ mật khóa bí mật
được chia làm hai loại là hệ mật chuyển vị và hệ mật thay thế. Tuy nhiên,
trong mật mã khóa bí mật cịn có một số hệ mật áp dụng cả hai nguyên lý
trên. Hơn nữa, các hệ mật thay thế còn có thể chia thành hệ mã dịng và hệ mã
khối.
Hệ mã dịng là một trong hai mơ hình hệ mật được ứng dụng trong thực
tế. Trong hệ mã dòng, mỗi ký tự ri (i = 1,2,..., n) của bản rõ R = r1r2

rn được

mã hóa bởi một phần tử khóa ki (i = 1,2,..., n) của dịng khóa z = k1k2...kn .
Hơn nữa, nếu khóa là một dãy ngẫu nhiên và được dùng một lần thì hệ mật sẽ
16


đạt độ an tồn vơ điều kiện. Điển hình là các hệ mã dịng: hệ mã dịng với
dịng khóa sinh bởi hệ thức truy tốn, hệ mã khóa tự sinh, hệ mã Vernam, ...
1.2.1. Định nghĩa về mã dòng
Trong các hệ mã được xét ở trên, các phần tử (là các ký tự hoặc các bộ
m ký tự) liên tiếp của bản rõ được mã hóa bằng cùng một khóa K theo quy tắc
sau:
M = m1 m2

= EK ( r1 ) EK ( r2 )

Các hệ mã thuộc dạng này thường được gọi là mã khối. Một mơ hình

khác được sử dụng là mật mã dòng. Trong hệ mã dòng, một dịng khóa

z = z1 z2 ... được sinh ra và được dùng để mã hóa một xâu bản rõ R = r1 r2
theo quy tắc sau:

M = m1 m2 ... = Ez1 (r1) Ez2 (r2 ) ...
Một hệ mã dòng đồng bộ được định nghĩa như sau:
Định nghĩa 1.1: Một hệ mã dòng đồng bộ là một bộ (R, M, K, L, E,D)
thoả mãn các điều kiện sau:
1. R là một tập hữu hạn các bản rõ có thể.
2. M là tập hữu hạn các bản mã có thể.
3. K là tập hữu hạn các khóa (mầm khóa) có thể.
4. L là tập hữu hạn các ký tự của dịng khóa.
5. g là bộ tạo dịng khóa. Với đầu vào là khóa K , g sẽ tạo một dịng
khóa z = z1 z2 ... , với zi L và i  1.
6. Với mỗi dịng khóa z = z1 z2 ... có một quy tắc mã Ez E và một
quy tắc giải mã tương ứng Dz D . Ez : R → M và Dz : M → R là các hàm
thỏa mãn Dz ( Ez ( R ) ) = R với mọi bản rõ R R .
Ta có thể coi mã khối là một trường hợp đặc biệt của mã dịng, trong đó
dịng khóa khơng đổi. zi = K với mọi i  1.
1.2.2 Một số đặc điểm của hệ mã dòng
Trong hệ mã dòng, phép lập mã và dịch mã là các phép biến đổi đơn
giản và tuyến tính theo dịng khóa được sử dụng. Các hệ mã dịng có một số
đặc điểm cơ bản sau:
17


- Phép lập mã và phép dịch mã được thực hiện trên cùng một dịng
khóa.
- Độ dài bản rõ và độ dài bản mã là như nhau và bằng độ dài dịng

khóa.
- Biết bản rõ và bản mã dễ dàng tính ra dịng khóa tương ứng.
- Độ bảo mật của hệ mã dòng phụ thuộc vào độ bảo mật của khóa.
- Nếu khóa là ngẫu nhiên và dùng một lần thì hệ mã dịng có độ bảo
mật cao nhất.
Một hệ mã dịng được gọi là tuần hồn với chu kỳ d nếu zi +d = zi với
mọi số nguyên i  1. Ví dụ: mã Vigenère với độ dài từ khóa m có thể coi là
mã dịng tuần hồn với chu kỳ m.
Trong hệ mã dòng, bảng chữ cái rõ, bảng chữ cái mã, và bảng chữ cái
khóa thường được mô tả trong bộ chữ nhị phân

0,1 ,

tức là

 R = M = L = Z2 . Trong trường hợp này, phép lập mã và dịch mã là phép
cộng modulo 2:
Ez ( r ) = (r + z ) mod 2


Dz ( m ) = (m + z ) mod 2 .

1.2.3 Phân loại mã dòng
- Hệ mã dòng đồng bộ: là hệ mã dịng mà dịng khóa được sinh ra
khơng phụ thuộc vào xâu bản rõ. Tức là dịng khóa được sinh từ hàm của
mầm khóa S.
Hệ mã dịng này có ưu điểm là khơng có hiệu ứng lan truyền lỗi, mỗi
bit lỗi khi truyền sẽ dẫn đến sai lệch chỉ một bít bản mã khi dịch. Hơn nữa, hệ
mã này cịn bảo vệ khỏi việc chèn, xóa hay dùng lại các ký tự của bản mã, các
thao tác này sẽ làm mất đồng bộ và ngay lập tức sẽ bị phát hiện ở bên nhận.

Hệ mã dòng với dịng khóa sinh bởi phép đệ quy tuyến tính: trong hệ
mã dịng này có R = M = L = Z2 , K = ( Z 2 )m , (m  1) . Với mỗi khóa
K = ( k1 ,

, km ) , đặt zi = ki , (1  i  m ) , sinh dịng khóa theo phép đệ quy

tuyến tính cấp m như sau:

18


zi + m =



được

 c j zi + j

mod 2 , với i  1 ,

j =0

, cm−1  Z2 là các hằng số cho trước, các phép lập mã và

trong đó c0 ,
dịch

m −1


cho

bởi

quy

tắc

sau:

Ez ( r ) = (r + z ) mod 2



Dz ( m ) = (m + z ) mod 2 .

Ở đây khóa K gồm 2m giá trị k1,

( k1,

, km ) = ( 0,

, km , c0 ,

, cm−1 . Nếu

, 0 ) thì dịng khóa sẽ chứa tồn các số 0. Điều này phải

tránh vì khi đó bản mã sẽ đồng nhất với bản rõ. Tuy nhiên, nếu chọn thích
hợp các hằng số c0 ,


( k1,

, cm−1 thì với một vector khởi tạo bất kì khác

, km ) sẽ tạo nên một dịng khóa tuần hồn có chu kỳ lớn nhất là 2m − 1.

Bởi vậy, một khóa ngắn sẽ tạo nên một dịng khóa có chu kỳ rất lớn.
Ví dụ: với m = 4 và dịng khóa được sinh bởi phép đệ quy tuyến tính:

zi +4 = ( zi + zi +1) mod 2 , với i  1. Nếu dịng khóa được bắt đầu với một
vector khởi tạo bất kỳ khác (0,0,0,0) thì sẽ sinh ra một dịng khóa tuần hồn
có chu kỳ 15. Ví dụ với vector khởi tạo K = (1,0,0,0) ta sẽ được dịng khóa
là:
1 0 0 0 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 1 0 ......
Bất kỳ vector khởi tạo khác khơng khác sẽ tạo một hốn vị vịng
(cyclic) của cùng dịng khóa.
Trong thực tế, việc tạo dịng khóa bằng phép đệ quy tuyến tính có thể
được thực hiện hiệu quả bằng phần cứng với bộ ghi dịch phản hồi tuyến tính
(hay LFSR). Khi đó, ta dùng một bộ ghi dịch có m ơ nhớ. Vector khởi tạo

( k1,

, km ) sẽ được dùng để khởi tạo (đặt các giá trị ban đầu) cho thanh ghi

dịch. Ở mỗi đơn vị thời gian, các phép toán sau sẽ được thực hiện đồng thời
1. k1 được tánh ra dùng làm bit tiếp theo của dịng khóa.
2. k2 ,..., km sẽ được dịch một ơ nhớ về phía bên trái.
m −1


3. Giá trị mới của km sẽ được tính bằng cơng thức:

 c j k j +1 (đây là
j =0

phản hồi tuyến tính).

19


Ta thấy rằng, thao tác tuyến tính sẽ được tiến hành bằng cách lấy tín
hiệu ra từ một số ơ nhớ nhất định của thanh ghi dịch (được xác định bởi các
hằng số c j có giá trị "1") và tính tổng theo modulo 2 (là phép hoặc loại trừ).
Hình 1.3 mơ tả LFSR dùng để tạo dịng khóa cho ví dụ trên.

+

k1

k2

k3

k4

Hình 1.3: Thanh ghi dịch phản hồi tuyến tính
- Hệ mã dịng tự đồng bộ: là hệ mã dịng mà mỗi phần tử của dịng
khóa zi phụ thuộc vào một phần tử rõ hoặc các phần tử rõ trước đó
( r1, r2 , ..., ri −1 và/hoặc m1, m2 , ..., mi −1 ) và khóa K.
Hệ mã dịng này có nhược điểm là lan truyền các lỗi. Hơn nữa, rất khó

để phát hiện ra việc chèn, xố hay dùng lại các ký tự của bản mã, nếu phát
hiện được thì cũng khơng dịch đúng các bản mã.
Hệ mã khóa tự sinh: đây là hệ mã dịng do Vigenère đề xuất và được
mô tả như sau:
Cho R = M = K = L = Z26
Đặt z1 = K và định nghĩa zi = ri −1 , với ( i  2 ) .
Với 0  z  25 , định nghĩa

Ez ( r ) = (r + z ) mod 26

Dz ( m ) = (m − z ) mod 26
trong đó ( r , m  Z 26 ) .
Lý do sử dụng thuật ngữ "khóa tự sinh" là ở chỗ bản rõ được sử dụng
để sinh dịng khóa (ngồi mầm khóa K).
Ví dụ: giả sử mầm khóa là K = 8 và bản rõ là R =
HANOIANHHUNG. Trước tiên, ta biến đổi bản rõ thành dãy các số nguyên:
7. 0. 13. 14. 8. 0. 13. 7. 7. 20. 13. 6
Dịng khóa được sinh ra như sau:
20


×