Nghiên cứu khoa học công nghệ<br />
<br />
PHƯƠNG PHÁP TRAO ĐỔI KHÓA MÃ ĐỐI XỨNG<br />
KHÔNG SỬ DỤNG MẬT MÃ KHÓA CÔNG KHAI<br />
Lê Danh Cường1*, Hồ Văn Canh2<br />
Tóm tắt: Mật mã là công cụ hữu hiệu, được sử dụng rộng rãi để bảo vệ bí mật<br />
thông tin trong quá trình trao đổi nhưng việc phân phối khóa mã qua kênh an toàn<br />
cho các mạng thông tin - thuộc các lĩnh vực Ngoại giao, An ninh, Quốc phòng - vốn<br />
có nhiều đầu mối, trên phạm vi địa lý rộng luôn là vấn đề khó khăn hàng đầu. Mật<br />
mã khóa công khai ra đời cuối những năm 1970 với nhiều ưu điểm đã làm giảm bớt<br />
những khó khăn trong khâu phân phối khóa; Tuy nhiên, mặt khác, mật mã khóa<br />
công khai làm tăng dung lượng bản mã, đồng thời cần nhiều tài nguyên trong quá<br />
trình xử lý, gây khó khăn triển khai ứng dụng trên những thiết bị hạn chế về bộ nhớ.<br />
Bài báo này trình bày những nghiên cứu và đề xuất một phương pháp trao đổi khóa<br />
mã dựa trên hệ mật khóa đối xứng, không sử dụng hệ mật khóa công khai.<br />
Từ khóa: Mật mã; Thám mã; Mật mã khóa đối xứng; Mật mã khóa bất đối xứng; Khóa bí mật; Khóa<br />
công khai.<br />
<br />
1. ĐẶT VẤN ĐỀ<br />
Ngoài ứng dụng các hệ mật mã khóa bí mật, hiện nay các thuật toán mã hóa khóa công<br />
khai (Asymmetric Key Cryptography) được sử dụng rộng rãi để bảo mật thông tin, đặc<br />
biệt là những thông tin nhạy cảm, liên quan đến thương mại điện tử [8, 9, 10]. Tuy nhiên,<br />
nhược điểm lớn nhất của chúng là vấn đề trao đổi khóa mã. Việc trao đổi khóa bằng hệ<br />
mật khóa công khai có một số nhược điểm như làm tăng đáng kể kích cỡ bản mã (so với<br />
bản mã gốc) và chậm hơn so với sử dụng mô hình mật mã khóa đối xứng (Symmetric Key<br />
Cryptography) [1]. Do vậy, làm cho việc mã hóa/ giải mã thông tin trở nên chậm chạp và<br />
tốn nhiều bộ nhớ, gây khó khăn trong việc ứng dụng trên những thiết bị hạn chế về loại tài<br />
nguyên này. Câu hỏi đặt ra là có hay không một phương pháp trao đổi, thỏa thuận khóa<br />
không cần sử dụng hệ mật khóa công khai? Câu trả lời là có [11].<br />
Vấn đề này đang được nhiều tổ chức, cá nhân tập trung nghiên cứu. Bài báo này đề<br />
xuất một phương pháp thỏa thuận khóa mã dựa trên hệ mật khóa đối xứng, thông qua trình<br />
bày một số thuật toán đơn giản, dễ thực hiện và có độ an toàn cao.<br />
2. NỘI DUNG NGHIÊN CỨU<br />
Trong hệ mật mã khóa đối xứng, chúng tôi chọn mật mã khối làm mục tiêu để nghiên<br />
cứu, với Chuẩn mật mã dữ liệu (DES - Data Encryption Standard) là đặc trưng. Sau đây là<br />
nội dung cụ thể.<br />
2.1. Hệ mật mã DES<br />
DES là hệ mật mã khối điển hình nhất trong số các mật mã khối nói chung. Khóa của<br />
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 , k 2 ,.., k 64 với<br />
k 0,1, i 1,2,..,64 . Trong hoạt động mã hóa thực tế, thuật toán DES sẽ bỏ qua 8 bít ở<br />
các vị trí 8,16,24,32,40,48,56,64 [12]. Như vậy, độ dài khóa DES chỉ còn 56 bít, nhưng<br />
để đơn giản trong phần nghiên cứu này chúng ta vẫn coi khóa DES có độ dài 64 bít.Mô tả<br />
hoạt động của hệ mật như sau:<br />
Giả sử nơi gửi (A) muốn chuyển bí mật cho nơi nhận (B) một bản rõ X x1 , x 2 ,.., x n<br />
trong đó xi a, b,.., z.<br />
<br />
<br />
Tạp chí Nghiên cứu KH&CN quân sự, Số 51, 10 - 2017 95<br />
Công nghệ thông tin & Cơ sở toán học cho tin học<br />
<br />
- A dùng Hệ mật DES với khóa mã K để mã hóa bản rõ X . Khi đó bản mã sẽ được ký<br />
hiệu là Y y1 , y 2 ,.., y n .<br />
- Khi nhận được bản mã Y , B cần có khóa mã K để giải bản mã và đọc được nội<br />
dung bản rõ X .<br />
- Việc trao đổi khóa K giữa A và B có thể có nhiều cách, phổ biến và thuận tiện nhất<br />
hiện nay là dùng mật mã khóa công khai, trong bài toán này ta giả sử sử dụng Hệ mật mã<br />
khóa công khai RSA. Giả sử B sử dụng Hệ mật mã RSA với cặp khóa công khai và khóa<br />
riêng lần lượt là ( N , bB ) và ( N , a B ) .<br />
- Để trao đổi khóa K cho B, người gửi A lấy khóa công khai ( N , bB ) và tính:<br />
Z K bB mod(N ) . Sau đó gửi cặp ( Z , Y ) cho B trên kênh công cộng tùy ý.<br />
- Khi nhận được cặp ( Z , Y ) , B sử dụng khóa riêng ( N , a B ) để khôi phục khóa K<br />
aB<br />
bằng cách tính: K Z mod(N ) . Vậy là B đã có khóa để giải bản mã Y.<br />
Như vậy, rõ ràng cặp ( Z , Y ) được truyền đi có kích cỡ lớn hơn bản mã Y , điều đó sẽ<br />
làm cho thời gian truyền, dung lượng bộ nhớ sử dụng tăng đáng kể, đồng thời làm giảm độ<br />
an toàn của hệ thống và không thích hợp cho các ứng dụng trên các thiết bị như<br />
smartphone. Hơn thế nữa, cách làm này còn phụ thuộc vào sự phổ biến, phát triển của mật<br />
mã khóa công khai và cách thức quản lý khóa công khai trong một mạng lưới liên lạc.<br />
Thực tế đó đòi hỏi phải có một phương pháp trao đổi khóa bí mật một cách thuận tiện an<br />
toàn và thực tế hơn.<br />
2.2. Phương pháp thỏa thuận khóa được đề xuất<br />
Ta biết rằng, độ dài 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ụ<br />
thể độ dài khóa mã hóa DES là 56 bit [5] - tương ứng với 7 ký tự la tinh; Độ dài khóa của<br />
thuật toán mã hóa IDEA là 128 bit [13] - tương ứng với 16 ký tự La tinhv.v... Mật mã<br />
nhóm tác giả đề xuất có độ dài mầm khóa 240 bit (tương ứng với 30 ký tự La tinh).<br />
Trong thuật toán sinh khóa bí mật, ta ký hiệu d là độ dài tính theo ký tự La tinh của<br />
mầm khóa (Key Seed) bí mật. Ký hiệu m 5 là một số tự nhiên tùy ý, cố định do hai thực<br />
thể thống nhất trước.<br />
2.2.1. Thuật toán 1<br />
Input: Cho X (x ) là một dãy các ký tự La tinh có độ dài n tùy ý, ví dụ:<br />
X (37 ) = coongj hoaf xax hooij chur nghiax Vieetj Nam.<br />
Output: Một dãy gồm d ký tự La tinh, với d là một số nguyên dương tùy ý, cố<br />
định trước.<br />
Các bước tiến hành của thuật toán như sau:<br />
Bước 1: Lấy một số nguyên dương m 5 tùy ý,<br />
Bước 2: Nếu n md thì viết liên tiếp X (n ) cho đến khi<br />
X (md ) x1 , x 2 ,.., xn , x1 , x2 ,.., xmd<br />
Bước 3: Đổi dãy X (md ) sang dãy số nguyên dương theo nguyên tắc sau:<br />
+ Chữ cái nào ở trong dãy X (md ) có giá trị bé nhất được đánh số 1;<br />
+ 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<br />
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ự<br />
<br />
<br />
<br />
96 L. D. Cường, H. V. Canh, “Phương pháp trao đổi khóa mã … mật mã khóa công khai.”<br />
Nghiên cứu khoa học công nghệ<br />
<br />
có giá trị lớn nhất được đánh số. Như vậy dãy Y (md ) sẽ có md số khác nhau; tức là<br />
Y (md ) gồm X (md ) chữ số khác nhau.<br />
Bước 4: Lập bảng (ma trận) B(bij ) md<br />
Bước 5: Đ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<br />
bảng B được lấp đầy các ô thì chuyển sang bước 6.<br />
m<br />
Bước 6: Với j 1,2,.., d ; tính tổng Z j b<br />
i 1<br />
ij mod 26<br />
<br />
Bước 7: Return ( Z 1 , Z 2 ,.., Z d )<br />
Thuật toán dừng và dãy Z (Z 1 , Z 2 ,.., Z d ) là mầm khóa mà hai thực thể A và B<br />
cần có để liên lạc mật với nhau.<br />
Mô tả ví dụ<br />
Giả sử từ khóa X (37 ) = ‘‘coongj hoaf xax hooij chur nghiax vieetj nam’’<br />
<br />
Lấy d 10 ; m 5 ; m.d 50 nên ta phải mở rộng X (37 ) thành X (50 ) :<br />
X (50 ) =‘‘coongj hoaf xax hooij chur nghiax vieetj nam coongj hoaf xax’’<br />
Bây giờ ta đổi X (50 ) sang dãy số<br />
Y (50) =7,34,35,30,14,25,17,36,1,12,46,2,47,18,37,38,22,26,8,19,44,42,31,<br />
15,20,23,3,48,45,24,10,11,43,27,32,4,29,9,39,40,33,16,28,21,41,5,13,49,6,50.<br />
Tiếp theo điền dãy Y (50) vào bảng B, ta có:<br />
7 34 35 30 14 25 17 36 1 12<br />
46 2 47 18 37 38 22 26 8 19<br />
44 42 31 15 20 23 3 48 45 24<br />
10 11 43 27 32 4 29 9 30 40<br />
33 16 28 21 41 5 13 49 6 50<br />
Với j 1, 2,..,10 , ta có:<br />
Z 1 (7 + 46 + 44 + 10 + 33) mod 26 10 : K<br />
Z 2 (34 + 2 + 42 + 11 + 16) mod 26 1 : B<br />
Z 3 (35 + 47 + 31 + 43 + 28) mod 26 2 : C<br />
Z 4 (30 + 18 + 15 + 27 + 21) mod 26 7 : H<br />
Z 5 (14 + 37 + 20 + 32 + 41) mod 26 14 : O<br />
Z6 (25 + 38 + 23 + 4 + 5) mod 26 17 : R<br />
Z7 (17 + 22 + 3 + 29 + 13) mod 26 6 : G<br />
Z8 (36 + 26 + 48 + 9 + 49) mod 26 12 : M<br />
Z9 (1 + 8 + 45 + 39 + 6) mod 26 21 : V<br />
Z10 (12 + 19 + 24 + 40 + 50) mod 26 15 : P<br />
Vậy mầm khóa là: Z (Z 1 , Z 2 ,.., Z d ) = (K, B, C, H, O, R, G, M, V, P)<br />
2.2.2. Thuật toán 2 (thường được áp dụng cho kỹ thuật giấu tin mật)<br />
<br />
<br />
<br />
Tạp chí Nghiên cứu KH&CN quân sự, Số 51, 10 - 2017 97<br />
Công nghệ thông tin & Cơ sở toán học cho tin học<br />
<br />
Input: ảnh C<br />
Output: Khóa mã K k1 , k 2 ,.., k n ; k i 0,1 và n là độ dài khóa mã.<br />
Step1: Trích chọn tất cả hoặc một phần các MSB ( Most Significant Bit ) do hai<br />
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<br />
C (1) c1 , c 2 ,.., c N<br />
Step 2: Lập bảng (ma trận) gồm m dòng, d cột ( d có độ dài tùy ý nhưng không<br />
bé hơn n còn m 5 , A( a ij ) m d<br />
Step 3: Viết các bít c1 , c2 ,.., c N theo thứ tự tự nhiên vào bảng A<br />
m<br />
Step 4: For j 1,2,.., d tính các tổng b j a<br />
i 1<br />
ij mod(2)<br />
<br />
Step 5: Return (b1 , b2 ,.., bd )<br />
Đây là khóa mã mà ta cần.<br />
Trong một số trường hợp, ta có thể áp dụng thuật toán trên bằng cách chọn từ khóa bất kỳ<br />
(theo quy ước) như sử dụng thông tin một số trường (họ tên, quê quá, địa chỉ… người nhận)<br />
sau đó viết lặp lại với số lần tùy ý rồi chuyển sang số hóa theo một quy tắc nhất định.<br />
Ví dụ: lee danh cuwowngf và d 30 còn m 5 . Ta làm như sau:<br />
Trước hết viết leedanhcuwowngf leedanhcuwowngf leedanhcuwowngf…<br />
(viết lặp lại 10 lần). Sau đó chuyển sang số hóa như đã thực hiện trong thuật toán 1. Từ đó<br />
viết dãy số này vào ma trận A theo thứ tự tự nhiên cho đến hết các ô trong bảng thì dừng.<br />
Step 4 và step 5 vẫn thực hiện như trên.<br />
2.2.3. Mầm khóa<br />
Trong hai thuật toán trên, mầm khóa sử dụng yêu cầu phải được giữ bí mật tùy theo<br />
tính chất, cách bố trí và tổ chức mạng liên lạc. Mỗi phiên, mầm khóa được các đầu mối<br />
liên lạc thống nhất lựa chọn ngẫu nhiên từ tập cơ sở dữ liệu đủ lớn, có thể là tập các văn<br />
bản hay các ma trận điểm ảnhv.v... Khi đó, chủ thể liên lạc sẽ sử dụng mầm khóa bí mật<br />
làm đầu vào của các thuật toán trên để trao đổi, thỏa thuận khóa cho các phiên liên lạc. Từ<br />
kết quả của hai thuật toán trên cho phép ta ứng dụng xây dựng các hệ mật mã khóa bí mật<br />
an toàn trong trao đổi thông tin.<br />
3. KẾT LUẬN<br />
Phương pháp thỏa thuận khóa bí mật trên đây có thể được dùng cho mọi hệ mật mã<br />
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 rõ làm<br />
đầu vào cho thuật toán là tùy ý, hoặc có thể lấy một dãy số bất kỳ hoặc một hỗn hợp cả<br />
chữ cái và chữ số và có thể một dãy các bản rõ được lặp lạiv.v... Độ an toàn của khóa K<br />
không bị ảnh hưởng, vì dãy số tương ứng chỉ phụ thuộc vào vị trí của các ký tự trong dãy<br />
và độc lập với bản thân ký tự đó.<br />
Lý thuyết Markov đã chứng minh kết quả thu được là dãy ngẫu nhiên độc lập [4, 7, 11].<br />
Do đó để thuận lợi và đơn giản trong trao đổi khóa, hai người A và B muốn liên lạc mật<br />
với nhau mà từ xa, có thể qui ước sử dụng ngày tháng ở đầu bản thông báo nào đó một<br />
cách công khai mà không sợ bị nghi ngờ. Điểm mạnh của phương pháp trao đổi này là<br />
thuật toán đơn giản, nhưng vẫn đảm bảo độ bí mật và an toàn cao.<br />
4. TÀI LIỆU THAM KHẢO<br />
[1]. Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone, ‘‘Hanhdbook of<br />
Applied Cryptography’’,CRC Press, 1999.<br />
<br />
<br />
<br />
98 L. D. Cường, H. V. Canh, “Phương pháp trao đổi khóa mã … mật mã khóa công khai.”<br />
Nghiên cứu khoa học công nghệ<br />
<br />
[2]. A. Menzes, M. Qu, and S. Vanstone, ‘‘Some new key agreement protocols providing<br />
implicit authentication’’. Ottawa, Canada, 1995.<br />
[3]. Doughlas R. Stison, ‘‘Cryptography: Theory and Practices’’. CRC Press 1999.<br />
[4]. FIPS, ‘‘Key management using ANSI X9, 17 Federal Information Proceeding.<br />
Standards Publication 171. U.S. Department of Commerce/ NIST.<br />
[5]. Hồ Văn Canh, Nguyễn Viết Thế, ‘‘Nhập môn phân tích thông tin có bảo mật’’. NXB<br />
Hà Nội T&T. 2010.<br />
[6]. M. Bellare and P. Rogaway, ‘‘Provably Secure Session Key Distribution’’.<br />
Proceedings of The 27th Annal ACM Symposium.<br />
[7]. Michael R.A. Huth, ‘‘Secure communicating Systems’’. Cambridge University Press,<br />
2001.<br />
[8]. M. Burmester, ‘‘On the risk of opening distributed keys’’. Advances in Crypto-94.<br />
[9]. Phan Đình Diệu, ‘‘Mật mã và an toàn thông tin’’. NXB ĐHQG Hà Nội, 2002.<br />
[10]. R. Blom, ‘‘Non-public key distribution’’. Advances in Cryptology- Proceedings of<br />
Crypto-o3.<br />
[11]. T. Leighton and S. Micall, ‘‘Secret key agreement without public-key cryptography’’.<br />
Advances in Crypto-04.<br />
[12]. Timothy Charles Clapp, ‘‘Statistical Methods for the Processing of communication<br />
data’’. University of Cambridge Press- 2000.<br />
[13]. Trịnh Nhật Tiến, ‘‘Bảo mật thông tin và an toàn dữ liệu’’. NXBĐHQG Hà Nội,<br />
2009.<br />
[14]. W. F. Ehrsam, S.M. Matyas, C.H. Meyer, and W.L. Tuchman, ‘‘A Cryptographic key<br />
manmagement scheme for implementing the Data Encyption Standard’’. IBM<br />
Systems Journal.<br />
ABSTRACT<br />
THE SECRET KEY EXCHANGING IN SYMMETRIC<br />
CRYPTOGRAPHY WITHOUT USING PUBLIC KEY CRYPTOGRAPHY<br />
Key distribution is one of the hardest problems in cryptography. Therefore,<br />
cryptography has been a special product used in the field of national security and<br />
defense, politics and foreign affair for a long time. Public key cryptography was<br />
invented at the end of 1970s with many advantages and quickly has application in<br />
many aspects of the daily life. In comparison with classical cryptography that uses<br />
symmetric keys and needs to keep the key secret, public key cryptography has<br />
greatly reduced the difficulty in key management and distribution. However, it also<br />
has lower computation speed and requires high performance devices as well as<br />
increases the size of the messages. In the paper, a method for exchanging secret key<br />
of symmetric key cryptography without using any public key cryptography is<br />
proposed. Input of the Algorithm is a character string of some Latin language.<br />
Keywords: Cryptography; Cryptanalysis; Symmetric key cryptography; Asymmetric key cryptography;<br />
Plaintext; Private key; Public key.<br />
<br />
Nhận bài ngày 22 tháng 6 năm 2017<br />
Hoàn thiện ngày 07 tháng 7 năm 2017<br />
Chấp nhận đăng ngày25 tháng 10 năm 2017<br />
<br />
Địa chỉ: 1 Cục Kỹ thuật, Bộ Công an;<br />
2<br />
Cục Kỹ thuật nghiệp vụ, Tổng cục I, Bộ Công an.<br />
*<br />
Email: cuongqt34@yahoo.com.<br />
<br />
<br />
<br />
Tạp chí Nghiên cứu KH&CN quân sự, Số 51, 10 - 2017 99<br />