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 (228.81 KB, 7 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<b>ĐỀ XUẤT THUẬT TỐN TRAO ĐỔI KHĨA HIỆU QUẢ </b>
<b>SỬ DỤNG MẬT MÃ KHÓA ĐỐI XỨNG </b>
Trần Xuân Ban1,*, Hồ Văn Canh2
<i><b>Tóm tắt: </b>Có nhiều phương pháp trao đổi khóa: trao đổi khóa cơng khai và trao </i>
<i>đổi khóa bí mật. Sử dụng mật mã khóa cơng khai tốc độ tính tốn chậm vì độ khó </i>
<i>của bài tốn phụ thuộc vào việc chọn các số nguyên tố đủ lớn. Đối với các hệ thống </i>
<i>có năng lực tính tốn hạn chế như các thiết bị thông minh, các thiết bị trong mạng </i>
<i>internet of things thì cần thiết phải sử dụng những hệ thống mật mã nhẹ </i>
<i>(lightweight). Bài báo này đề xuất một thuật toán trao đổi khóa dựa trên mật mã đối </i>
<i>xứng. Thuật toán đơn giản dễ sử dụng, có độ an toàn cao và đặc biệt kích thước </i>
<i>khóa nhỏ, tốc độ tính tốn nhanh phù hợp với phát triển các phương pháp mã hóa </i>
<i>hạng nhẹ dựa theo phương pháp mã hóa khóa đối xứng có độ dài mầm khóa là 30 ký </i>
<i>tự La tinh, tương đương 240 bít được sử dụng để tạo khóa bí mật. </i>
<b>Từ khóa</b>: Mã hóa bí mật, Mã hóa nhẹ, Trao đổi khóa.
<b>1. ĐẶT VẤN ĐỀ </b>
Mật mã khóa đối xứng (Symmetric Key Cryptography), bao gồm Hệ mật truyền
thống và Hệ mật mã hiện đại, có nhiều ưu điểm như: tốc độ mã hóa/giải mã nhanh
và độ mật đã được khẳng định. Hiện nay, đã có nhiều thuật tốn có tốc độ mã hóa
rất nhanh và độ an toàn cao. Loại mật mã này hiện nay đang được sử dụng rộng rãi
để bảo mật thông tin, đặc biệt là những thông tin liên quan đến thương mại. Tuy
nhiên các hệ mật khóa đối xứng có hạn chế về vấn đề trao đổi khóa mã và thực
hiện ký số. Hiện nay, có thể sử dụng Hệ mật mã khóa cơng khai (Asymmetric Key
Cryptography) để thực hiện trao đổi khóa và ký số để đảm bảo an tồn. Tuy nhiên,
việc trao đổi khóa bằng mật mã khóa cơng khai làm cho kích cỡ bản mã tăng lên
đáng kể (có thể tăng gấp đơi bản mã gốc) và rất có thể làm giảm độ an tồn cho
khóa mã. Trong thực hành việc giải mã với khóa cơng khai rất chậm so với mật mã
Để giải quyết vấn đề này, cần một hệ mã có kích thước nhỏ song vẫn đảm bảo
độ an tồn tối thiểu trong trao đổi khóa. Bài báo này trình bày thuật tốn về trao
đổi khóa dựa trên mật mã khóa đối xứng nhằm đảm bảo bảo tính nhẹ (lightweight)
khi xây dựng khóa nhưng vẫn đảm bảo độ an toàn. Bài báo gồm 4 phần: đầu tiên là
phần giới thiệu về vấn đề trao đổi khóa, tiếp theo là đề cập đến mật mã hóa đối
xứng và trao đổi khóa, phần 3 là thuật tốn do nhóm tác giả đề xuất, cuối cùng là
kết luận và hướng phát triển.
<b>2. NỘI DUNG CẦN GIẢI QUYẾT </b>
<b>2.1. Hệ mã khóa đối xứng và trao đổi khóa </b>
<i>2.1.1. Hệ mật mã DES </i>
DES (Data Encryption Standard) là một Hệ mật mã khối điển hình, khóa của nó
là một dãy bít giả ngẫu nhiên độ dài 64 bít. Ta ký hiệu khóa là k = k1,k2,..., k64, với
ki ϵ{0,1}, i= 1,2,...,64. Mỗi khi tiến hành mã hóa một bản rõ nào đó, thuật tốn
DES sẽ bỏ qua 8 bít ở các vị trí 8,16, 24, 32, 40, 48, 56 và 64. Như vậy, thực tế
khóa chỉ cịn 56 bít. Để đơn giản, trong nghiên cứu này chúng ta coi như khóa DES
có độ dài 56 bít. Việc truyền khóa k độ dài 56 bít thực hiện trên kênh cơng cộng
với mã hóa cơng khai (ví dụ như RSA).
Giả sử A muốn chuyển cho B một bản rõ X =x1, x2,..., xn, trong đó, xiϵ{a, b,
c,..., z}, dùng Hệ mật mã DES mã hóa bản rõ X bởi khóa k (56 bít ). Khi đó, bản
mã sẽ được ký hiệu là Y = y1, y2,..., yn. B cần có khóa mã k để giải bản mã Y thành
- A lấy khóa cơng khai (N, bB) và tính: Z = kbBmod(N), sau đó gửi cặp (Z, Y)
cho B trên kênh công cộng (>56 bit).
- B nhận được cặp (Z, Y) và sử dụng khóa riêng (N, aB) để khơi phục khóa k (k
= ZaB mod(N), thực hiện giải mã Y.
Vì cặp (Z, Y) lớn hơn bản mã Y nhiều, có thể gấp hai lần, nên làm tăng kích
thước bộ nhớ và dẫn đến tăng thời gian truyền và có thể gây mất an tồn (vì thời
gian truyền trên mạng lâu).
Như vậy, với hệ thống mạng có các thiết bị hạn chế năng lượng, hạn chế về bộ
nhớ thì phương pháp trao đổi khóa trên là khơng phù hợp. Vì yêu cầu cần giảm
kích thước dữ liệu khi truyền song vẫn đảm bảo tính an tồn, độ tin cậy, đặc biệt
như trong mạng IoT cần sự tương tác nhanh chóng giữa các thiết bị.
<i>2.1.2. Hàm băm và ứng dụng xây dựng thuật toán trao đổi khóa </i>
Hàm băm mật mã học (Cryptographic hash function) được sử dụng trong nhiều
ứng dụng bảo mật thơng tin như chứng thực (authentication), kiểm tra tính ngun
vẹn của thông tin (message integrity), tạo chữ ký số,… Đầu vào hàm băm (hash) là
một xâu có độ dài tùy ý, đầu ra là xâu có độ dài cố định. Hàm băm có các tính
chất: cho trước h việc tìm m sao cho h = hash (m) là rất khó; 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ó; và
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ó. Độ dài của đầu ra càng lớn thì độ khó trong phá hàm băm càng cao.
<b>2.2. Đề xuất thuật toán trao đổi khóa bí mật sử dụng phương pháp mật mã </b>
<b>đối xứng </b>
Độ dài của một khóa bí mật phụ thuộc vào yêu cầu của từng thuật toán mã hóa
cụ thể. Như độ dài của khóa mật mã khối DES là 56 bít tương ứng với 7 ký tự
Latinh; độ dài khóa của thuật tốn mã hóa IDEA (International Data Encryption
Algorithm) là 128 bit; tương ứng với 16 ký tự Latinh, v.v…
số tự nhiên tùy ý nhưng cố định do hai thực thể thống nhất trước. Để đảm bảo an
toàn số m phải lớn hơn hay bằng 5 (m ≥ 5).
<i>Thuật tốn sinh khóa bí mật: </i>
<b>Input</b>: Cho x(n) là một dãy các ký tự Latinh có độ dài n tùy ý, một số nguyên
dương cho trước d cố định tùy ý và một số nguyên m ≥ 5 cho trước.
<b>Output</b>: một dãy gồm d chữ cái.
<i>Các bước tiến hành của thuật toán như sau</i>:
Bước 1. Nếu n < md thì viết liên tiếp và lặp lại dãy x(md) = x1,x2,...xn,<b>x1, x2, </b>
<b>..., xmd.</b>
Bước 2. Đổi dãy x(md) sang dãy số nguyên dương theo nguyên tắc:
- Chữ cái nào ở trong dãy x(md) có giá trị bé nhất được đánh số 1;
- Nếu trong dãy x(md) có m ký tự đều có giá trị bé nhất thì ưu tiên đánh số 1
cho ký tự xuất hiện đầu tiên, tiếp đó là số 2, v.v. cho đến ký tự thứ m và cuối cùng
là ký tự có giá trị lớn nhất được đánh số.
Như vậy, dãy y(md) sẽ có md số khác nhau. Tuy dãy các ký tự x(md) không độc
lập, chúng được phân bố theo qui luật Maxkov nhưng dãy số y(md) thì độc lập [2].
Bước 3. Lập bảng (ma trận) B = ( bij )mxd.
Bước 4. Điền các số của dãy y(md) vào bảng B theo thứ tự tự nhiên cho đến khi
bảng B được lấp đầy các ô của bảng.
Bước 5. Với j = 1,2, ..., d tính:
zj = (Ʃi=1,m bij ) mod 26
Bước 6. Khi được dãy (z1, z2,..., zd) thuật toán dừng và đổi dãy (z1, z2,..., zd)
sang ký tự trong bảng mã ASCIL được dãy các ký tự chính là mầm khóa mà hai
thực thể A và B cần có để liên lạc mật với nhau.
<b>3. TÍNH TỐN ÁP DỤNG VÀ BÀN LUẬN </b>
<b>3.1. Tính tốn áp dụng </b>
<i>3.1.1. Mã hóa dãy ký tự </i>
<b>Input: </b>Dãy ký tự x(37) = "coongj hoaf xax hooij chur nghiax vieetj nam", với
n=37. Lấy d = 10 và m = 5.
<b>Output</b>: Dãy gồm 10 chữ cái.
Bước 1: n=37< m*d = 5.10 = 50 nên thực hiện viết liên tiếp dãy x(37) cho đến
khi được dãy x(50). Dãy x(50) = "coongj hoaf xax hooij chur nghiax vieetj nam
coongj hoaf xax".
Bước 2: Thực hiện đổi dãy ký tự x(50) sang dãy số y(50) được:
7,34,35,30,14,25,17,36,1,12,46,2,47,18,37,38,22,26,8,19,44,42,31,15,20,23,3,4
8,45,24,10,11,43,27,32,4,29,9,39,40,33,16,28,21,41,5,13,49,6,50.
<i><b>Bảng 1.</b>Giá trị ma trận kích thước m </i>x <i>d. </i>
7 34 35 30 14 25 17 36 1 12
46 2 47 18 37 38 22 26 8 19
44 42 31 15 20 23 3 48 45 24
10 11 43 27 32 4 29 9 30 40
33 16 28 21 41 5 13 49 6 50
Bước 5: Tính các giá trị zj theo (1), với j = 1,2,...,10. Kết quả:
z1= (7+46+44+10+33)mod26 = 10 = K,
z2 = (34+2+42+11+16)mod26 = 1 = B,
z3= (35+47+31+43+28)mod26 = 2= C
z4= (30+18+15+27+21)mod26 = 7 = H
z5 = (14+37+20+32+41)mod26 = 14 = O
z6 =(25+38+23+4+5)mod26 = 17 = R
z7 = (17+22+3+29+13)mod26 = 6 = G
z8 = (36+26+48+9+49)mod26 = 12 = M
z9 = (1+8+45+39+6)mod26 = 21 = V
z10 = (12+19+24+40+50)mod26 = 15 = P .
Vậy mầm khóa là Z =(K, B, C, H, O, R,G, M, V, P)
<i>3.1.2. Giấu tin mật trong ảnh số </i>
Xét trường hợp tổng quát:
<b>Input:</b> Ảnh C.
<b>Output: </b>Dãy khóa k = k1, k2,..., kd, ki ϵ{ 0,1} với d là độ dài khóa mã.
Bước 1: Trích chọn tất cả hoặc một phần các MSB (Most Significant Bit) do hai
thực thể liên lạc mật với nhau qui định trước của ảnh C và tạo thành ảnh thứ cấp
C(1) = c1, c2,...,cN .
Bước 2: Lập bảng (ma trận) gồm m dòng , d cột với m ≥ 5: A (ai,j)mxd .
Bước 3: Viết các bít c1, c2,..., cN theo thứ tự tự nhiên vào bảng A.
Bước 4: For j = 1,2,...,d tính các bj = Ʃi=1,m aij (mod2).
Bước 5: Viết dãy b1, b2,..., bd . Đây là dãy giá trị của khóa bí mật cần giấu trong
ảnh mà hai bên muốn trao đổi.
<b>3.2. Bàn luận </b>
của việc trao đổi khóa. Bên cạnh đó cịn chưa tính đến đầu vào bản rõ là quy ước
giữa nơi gửi và nơi nhận đích thực nên kẻ tấn cơng khó biết được dãy ký tự đầu
vào. Như vậy, việc tấn công vét cạn (brute force attack) đối với thuật tốn này là
khơng khả thi.
Thấy rằng: Trong thuật toán, tại Bước 5 nếu biết trước giá trị zj để tìm ngược lại
các giá trị 26 và Ʃi=1,m bij là khó.
Phương pháp trao đổi khóa bí mật trên đây có thể được dùng cho mọi Hệ mật
mã khóa đối xứng và cùng lúc cho nhiều người khác nhau. Việc chọn một đoạn
văn bản rõ làm đầu vào cho thuật toán là tùy ý, thậm chí có thể lấy một dãy số bất
kỳ hoặc một hỗn hợp cả chữ cái và chữ số, có thể một dãy các bản rõ được lặp lại,
chẳng hạn: "thi dua thi dua thi dua", vv... mà khơng sợ làm giảm độ an tồn cho
Hiện nay, có 2 phương pháp trao đổi khóa: sử dụng mã khóa bí mật
(Diffie-Hellman) và sử dụng mã khóa cơng khai (RSA).
<i>* Trong trao đổi khóa bí mật Diffie-Hellman: </i>
A và B khi thỏa thuận khoa bí mật sẽ thực hiện như sau:
- A thống nhất với B một phần tử nguyên thủy g trong vành <i>Z</i>*<i>p</i> và số nguyên tố
p đủ lớn. Khi đó sơ đồ thỏa thuận khóa như sau:
- A sẽ chọn một giá trị x bí mật trong khoảng (0, p-2) và tính <i>gx</i>mod<i>p</i>rồi gửi
giá trị này cho bên B.
- B chọn một giá trị bí mật y trong khoảng (0, p-2) và tính <i>y</i>mod
<i>g</i> <i>p</i> rồi gửi giá
trị này cho bên A.
- Hai bên A, B tính khóa bí mật dựa vào các giá trị x, y, <i>gx</i>mod<i>p</i>, <i>gy</i>mod<i>p</i>.
Khóa bí mật chung là: KA,B= <i>K</i>1<i>A</i>.
Như vậy, thỏa thuận khóa bí mật Diffie-Hellman rất đơn giản. Để đảm bảo an
<i>* Trong trao đổi khóa cơng khai RSA: </i>
Trao đổi khóa bí mật dựa trên Lược đồ RSA được áp dụng rộng rãi. Để sử dụng
lược đồ này thì cả hai bên A và B đều phải sử dụng hệ mật RSA. Quá trình trao đổi
khóa diễn ra như sau:
- A có cặp khóa bí mật và cơng khai là ( 1
<i>A</i>
<i>K</i> , 2
- B có cặp khóa bí mật và cơng khai là (<i>K</i>1<i>B</i>,
2
<i>B</i>
<i>K</i> );
- A muốn gửi 1 khóa bí mật K cho B cần thực hiện:
+ A sử dụng khóa cơng khai của B (<i>K<sub>B</sub></i>2) và tính: <i>K</i>2<i>B</i>modn
<i>B</i>
<i>y</i><i>K</i> , với
* q
<i>B</i> <i>B</i> <i>B</i>
<i>n</i> <i>p</i> , <i>p<sub>B</sub></i>, <i>q<sub>B</sub></i>là 2 số nguyên tố đủ lớn và khác nhau của hệ RSA của B. A
thực hiện gửi y cho B.
+ B thực hiện tính (<i>sau khi nhận được y từ A</i>) để xác định khóa K:
1
modn
<i>B</i>
<i>K</i>
<i>B</i>
<i>K</i> <i>y</i> . Nếu cần khẳng định lại K có phải là khóa do A gửi khơng thì B
lấy khóa cơng khai của A (<i>K<sub>A</sub></i>2) và tính: ' <i>K</i>2<i>A</i>modn
<i>A</i>
<i>y</i> <i>K</i> , với <i>n<sub>A</sub></i> <i>p<sub>A</sub></i>* q<i><sub>A</sub></i>, <i>p<sub>A</sub></i>,
<i>A</i>
<i>q</i> là 2 số nguyên tố đủ lớn và khác nhau của hệ RSA của A. B thực hiện gửi y’
+ A thực hiện tính tốn ra khóa mới theo các thông tin B gửi và so sánh với
khóa K trước đó: ' '<i>K</i>1<i>A</i>modn
<i>A</i>
<i>K</i> <i>y</i> . So sánh K và K’nếu giống nhau thì đúng khóa
A đã gửi cho B.
Ở đây ta thấy: để đảm bảo an toàn cho K thì <i>n<sub>A</sub></i>và <i>n<sub>B</sub></i>phải đủ lớn tránh việc tấn
cơng phân tích thành thừa số 2 số ngun tố. Theo tiêu chuẩn X.509 thì mỗi số này
phải có độ dài tối thiểu là 1024 bit (cỡ 10310 số thập phân). Với kích thước lớn như
vậy các thiết bị hạn chế sẽ không thể thực hiện được (kích thước các thiết bị này
thường cỡ vài MB).
<i>* Đối với mơ hình trao đổi khóa bí mật do nhóm tác giả đề xuất: </i>
Khơng sử dụng 2 lược đồ trao đổi khóa trên (mã khóa bí mật và mã khóa cơng
khai). Trong 2 lược đồ này luôn yêu cầu bộ nhớ của các thiết bị phải đủ lớn, điều
này hồn tồn khơng phù hợp cho các thiết bị trong mạng IoT. Thuật tốn mà
nhóm đã đề xuất khơng u cầu thiết bị tính tốn lớn, phù hợp với các thiết bị hạn
chế và phù hợp với các khóa mã bí mật trong mã hạng nhẹ (lightweight). Như đề
cập trên, đầu vào của thuật tốn là cơng khai, chỉ cần giữ bí mật: độ dài khóa, độ
sâu của hàm tựa hàm băm và thuật toán giữa 2 bên A và B. Những tham số này do
quy ước chứ hồn tồn khơng truyền qua một kênh nào nên đảm bảo sự an tồn.
Mơ hình trao đổi khóa đề xuất có khả năng ứng dụng thực tiễn trong cơng tác an
ninh, quốc phịng.
<b>4. KẾT LUẬN </b>
Trên cơ sở nghiên cứu một số hệ mật phổ biến, nhóm tác giả đã đề xuất một
thuật tốn sinh khóa đơn giản, hiệu quả và dễ triển khai trong thực tiễn để áp dụng
cho việc trao đổi khóa, xác thực thông tin giữa bên gửi và bên nhận.
Đặc tính của các thiết bị trong mạng IoT có năng lực tính tốn thấp, u cầu
việc xác thực phải nhanh chóng. Thuật tốn sinh khóa trên đơn giản, song vẫn đáp
ứng độ bảo mật sẽ phù hợp với yêu cầu thực tiễn.
<b>TÀI LIỆU THAM KHẢO </b>
[1]. Hồ Văn Canh, Nguyễn Viết Thế, "<i>Nhập mơn phân tích thơng tin có bảo mật</i>".
NXB Hà Nội T&T. 2010.
[2]. Nguyễn Đào Trường, Lê Mỹ Tú, “<i>Cải tiến phương pháp phân phối khóa mật </i>
<i>mã an tồn trong mạng có tài nguyên hạn chế”</i>, Kỷ yếu Hội thảo Quốc gia
lần thứ X về Nghiên cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR), Đà
Nẵng, 2017.
[3]. Đặng Minh Tuấn, Nguyễn Văn Căn, Nguyễn Ánh Việt, Nguyễn Tiến Xuân,
“<i>Đề xuất chữ ký số ủy nhiệm và ứng dụng cho ủy nhiệm chi trong hệ thống </i>
<i>Bitcoin</i>”, Kỷ yếu Hội thảo Quốc gia lần thứ X về Nghiên cứu cơ bản và ứng
dụng Công nghệ thông tin (FAIR), Đà Nẵng, 2017.
[4]. Lưu Hồng Dũng, Hồ Ngọc Duy, Tống Minh Đức, Bùi Thế Truyền, Đặng
Hùng Việt, “<i>Giao thức trao đổi khoa an toàn cho các hệ mật khóa đối xứng</i>”,
Kỷ yếu Hội thảo Quốc gia lần thứ X về Nghiên cứu cơ bản và ứng dụng Công
nghệ thông tin (FAIR), Đà Nẵng, 2017.
[5]. Nguyễn Đào Trường, Lê Mỹ Tú, Nguyễn Doãn Cường, “<i>Một phương pháp </i>
[6]. Nguyễn Đức Toàn, Bùi Thế Hồng, Nguyễn Văn Tảo, “<i>Về một thuật toán mã </i>
<i>hóa khóa đối xứng cải tiến”,</i> Kỷ yếu Hội thảo Quốc gia lần thứ X về Nghiên
cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR), Đà Nẵng, 2017.
<i>[7].</i> Trịnh Nhật Tiến, "<i>Bảo mật thông tin và an toàn dữ liệu"</i>. NXB ĐHQG Hà
Nội, 2009.
[8]. Peter Brockwell , Richard A. Davis, <i>Time Series: Theory and Methods.</i>
-Springer Series In Statistics, Spriger-Verlag: New York, Berlin Heidelberg,
London, Paris, Tokyo (1987).
<i>[9].</i> Rafael Alvarez, Cándido Caballero-Gil, Juan Santonja and Antonio Zamora
1, “<i>Algorithms for Lightweight Key Exchange”,</i> 2016.
[10]. Daniel Dinu, Yann Le Corre, Dmitry Khovratovich, L´eo Perrin, Johann
Großschadl, Alex Biryukov, <i>Triathlon of Lightweight Block Ciphers for the </i>
<i>Internet of Things</i>, University of Luxembourg
[11]. Kai Fan, Jie Li and Hui Li, Xiaohui Liang, Xuemin (Sherman), Yintang
Yang, <i>ESLRAS: A Lightweight RFID Authentication Scheme with High </i>
<i>Efficiency and Strong Security for Internet of Things</i>, 2012 Fourth
International Conference on Intelligent Networking and Collaborative
Systems.
[12]. Doughlas R. Stison, <i>"Cryptography: Theory and Practices"</i>. CRC Press
1999.
[13]. FIPS, "<i>Key management using ANSI X9,17</i>" Federal Information Proceeding.
Standards Publication 171. U.S. Department of Commerce /N.I.S.T.
[14]. M. Bellare and P. Rogaway, "<i>Provably Secure Session Key Distribution</i>".
Proceedings of The 27th Annal ACM Symposium.