2. pg. 1
Hệ mật mã Merkle-Hellman
Nội dung chính:
I Lịch sử
II Một số định nghĩa
III Ý tưởng của hệ mật mã
VI Quá trình mã hóa và giải mã của hệ
V Ưu điểm, nhược điểm và ứng dụng
VI Quá trình phá mã
VII Quản lý trao đổi khóa
Chi Tiết
I Lịch sử:
Năm 1976 Diffie và Hellman đưa ra phương pháp trao đổi
thôngtin bằng mật mã mã hóa khóa bất đối xứng.
Từ ý tưởng đó năm 1978 Merkle và Hellman đã lập ra hệ
mật mã ba lô (knapsack) Merkle-Hellman.
Năm 1982 Adi Shamir đã phá giải được thuật toán của hệ
mật mã Merkle-Hellman.
II Định nghĩa phương pháp mã hóa khóa công khai:
Mã hóa Khóa Công Khai (PKI Cryptography - viết tắt là
PKC) - còn được xem như đồng nghĩa với mã Khóa Bất
Đối Xứng (Asynmetric Cryptography)
3. pg. 2
Trong đó khóa dùng để Mã Hóa (Encrypt)khác với khóa
dùng để Giải Mã (Decrypt).
Trong PKC, người dùng có một cặp khóa : Khóa Công
Khai (ký hiệu là P) và Khóa Cá Nhân (Private Key – ký
hiệu là Q).
Khóa Cá Nhân được giữ kín trong khi Khóa Công Khai
lại được công bố rộng rãi đến các đối tượng tham gia giao
dịch. Tuy hai khóa này có quan hệ toán học chặt chẽ với
nhau nhưngviệc dò tìm Khóa Cá Nhân thôngqua Khóa
Công Khai trên thực tế được xem như không thể thực
hiện.
III Ý tưởng của hệ mã:
Ý tưởng của hệ mật mã Merkle-Hellman bắt nguồn từ
việc giải một bài toán khó, đó là bài toán “ba lô” hay “cái
túi” (knapsack). Bài toán này là bài toán không thể giải
quyết trong miền thời gian đa thức hay nói cách khác là
chưa có thuật toán nào hiệu quả tối ưu (có thể giải quyết
nhanh bài toán). Vấn đề của bài toán là tối ưu hóa tổ hợp.
Nội dung bài toán như sau:
Một kẻ trộm đột nhập vào một cửa hiệu tìm thấy có n mặt
hàng có trọng lượng và giá trị khác nhau, nhưng hắn chỉ
mang theo một cái túi có sức chứa về trọng lượng tối đa là
M. Vậy kẻ trộm nên bỏ vào ba lô những món nào và số
4. pg. 3
lượng bao nhiêu để đạt giá trị cao nhất trong khả năng mà
hắn có thể mang đi được.
Định nghĩa bài toán:
Ta có n loại mặt hàng, x1 tới xn. Mỗi đồ vật xj có một giá
trị pj và một khối lượng wj. Khối lượng tối đa mà ta có
thể mang trong ba lô là C.
Để giải quyết bài toán “ba lô” này Merkle và Hellman đã
dựa vào một trường hợp đặc biệt của bài toán “ba lô” đó
là bài toán tổng của các tập hợp con.
5. pg. 4
Định nghĩa bài toán tổng của tập hợp con:
Cho một tập hợp các số A và một số B, tìm một tập hợp
con của A sao cho tổng bằng B.
Liên hệ giữa hai bài toán:
A là một ba lô phức tạp (hard knapsack)
B là một ba lô đơn giản (easy knapsack) hay một ba lô
siêu tăng (superincreasing knapsack)
Các hệ số và phần tử nghịch đảo theo module được dùng
để chuyển đổi ba lô đơn giản B vào ba lô phứctạp A.
Ba lô B là một ba lô đơn giản khi vetor w (w1, w2, …, wj,
…,wn) trọnglượng của n mặt hàng tạo thành một chuỗi
siêu tăng
Wj ≥ ∑ wi
j−1
i với i < j ≤ n
Có cực đại hóa ∑ pixin
i
Và các mặt hàng x (x1, x2, …,xn) (tồn tại dưới dạng nhị
phân)sao cho
M = ∑ wixin
i=1
Khi đó các yếu tố khác gọi là ba lô phứctạp A. Tìm được
xi là một bài toán khó.
6. pg. 5
Bài toán tổng của các tập hợp con (tìm xi) nếu có kết quả
có thể dùng thuật toán tham lam để giải quyết trong miền
thời gian đa thức.
Begin
For i=n downto 1 do
If M ≥ Ai then
M=M - Ai
xi=1
else
xi=0
if then
là giải pháp cần tìm
Else
Không tồn tại giải pháp nào.
End
VI Quá trình mã hóa và giải mã của hệ mật mã
Merkle-Hellman:
1 Quá trình mã hóa:
B1: Thông điệp (bản rõ) cần được dịch sang dạng nhị
phân M (M1, M2, … , Mn).
B2: Chọn chuỗi siêu tăng B (B1, B2, …, Bj, …, Bn) tức là
7. pg. 6
Bj > ∑ Bin−1
i=1
Chọn số nguyên ngẫu nhiên q sao cho:
q > ∑ Bin
i=1
Chọn số nguyên r sao cho r và q là hai số nguyên tố
cùng nhau hay:
GCD(r, q) = 1
B3: Tìm khóa công khai: A (A1, A2, … , An)
Ai = r . Bi mod q
B4: Tìm bản mã:
Ci = ∑ MiAin
i=1
Trong đó A là khóa công khai, còn B, q, r là các
khóa riêng
2 Quá trình giải mã
B1: Tìm phần tử nghịch đảo của r theo module q (r -1
)
bằng giải thuật EUCLID mở rộng như sau:
int y0 = 0, y1 = 1;
while r > 0 do
{ a = q mod r
if a = 0 then Break
b = q div r
8. pg. 7
y = y0 - y1 * b
q = r
r = a
y0 = y1
y1 = y }
return y
B3: Tìm bản rõ:
M = C . r -1
mod q
Ví dụ:
Cho bản rõ M: Hello
Quá trình mã hóa:
Dịch từ “Hello” về dạng nhị phân
H : 1001000
e : 1100101
l : 1101100
: 1101111
Chọn dãy số siêu tăng:
B = (3,5,15,25,54,110,225)
Chọn số nguyên q:
q > ∑ Bi7
i=1 = 437
=> q = 439
9. pg. 8
Chọn số nguyên r = 10
Tính khóa công khai: Ai = r.Bi mod q
3.10 mod 439 = 30
5.10 mod 439 = 50
15.10 mod 439 = 150
25.10 mod 439 = 250
54.10 mod 439 = 101
110.10mod 439 = 222
225.10mod 439 = 55
Tạo được dãy khóa công khai:
A = (30, 50, 150, 250, 101, 222, 55)
CH = 1 . 30 + 0 . 50 + 0 . 150 + 1 . 250 + 0 . 101 + 0 .
222 + 0 . 55 = 280;
Tương tự ta tính được: Ce = 236, Cl = 431, Co= 708
Quá trình giải mã:
Tìm phần tử nghịch đảo của r theo module q:
Bước i q r a b y0 y1 y
0 439 10 9 43 0 1 -43
1 10 9 1 1 1 -43 44
2 9 1 0
r -1
= 44 (10 . 44 mod 439 = 1)
MH = CH . r -1
mod q = 280 . 44 mod 439 = 28
10. pg. 9
28 > 25 => 28 - 25 = 3; 3 – 3 = 0.
1 0 0 1 0 0 0
3 25
3 5 15 25 54 110 225
=>MH=1001000
Tương tự tìm được:
Me = 1100101
Ml = 1101100
Mo = 1101111
V Ưu điểm, nhược điểm và ứng dụng:
1 Ưu điểm:
Đơn giản hơn các hệ mật mã mã khóa công khai khác.
Nếu chọn r và q đủ lớn thì người thám mã để tìm được r
và q phải tốn nhiều thời gian hơn
2 Nhược điểm:
Thuật toán mã hóa đã bị Adi Shamir phá được nên không
còn an toàn.
Thuật toán mã hóa có khối lượng tính toán nhiều => tốc
độ mã hóa chậm.
3 Ứng dụng:
Bảo mật thông tin và truyền tin.
11. pg. 10
Chứng thực và chữ ký điện tử.
VI Quá trình phá mã:
Phương pháp tấn công tổng thể - vét cạn
Nếu quá trình mã hóa và giải mã sử dụng r và q đủ lớn thì
phương pháp duyệt tổng thể hay vét cạn khóa là rất khó
lên đến 2n trường hợp x có thể xảy ra, do đó thời gian để
thực hiện quá trình phá mã là rất lớn => bất khả thi.
Thuật toán phá mã của Adi Shamir:
Shamir-Adleman đã chỉ ra chỗ yếu của hệ mật mã này
này bằng cách đi tìm một cặp (r0, q0) sao cho nó có thể
biến đổi ngược A về B (từ Public key về Private key).
1984, Brickell tuyên bố sự đổ vỡ của hệ thống Knapsack
với dung lượng tính toán khoảng 1 giờ máy Cray-1
, với 40
vòng lặp chính và cỡ 100 trọng số.
VII Quản lý trao đổi khóa:
Để trao đổi thôngđiệp với Bob, Alice gửi khóa công khai
của mình cho Bob, Bob dùng khóa công khai của Alice
mã hóa thông điệp rồi gửi lại cho Alice. Sau đó Alice giải
mã thông điệp bằng khóa riêng của mình. Phương pháp
này không an toàn do tính xác thực không cao.
Để an toàn và tính xác thực cao Alice có thể trao đổi
thôngđiệp với Bob qua trung tâm chứng thựcCA …
12. pg. 11
Tài liệu tham khảo tại các trang:
https://en.wikipedia.org/wiki/Merkle%E2%80%93Hellma
n_knapsack_cryptosystem
https://en.wikipedia.org/wiki/Superincreasing_sequence
https://vi.wikipedia.org/wiki/B%C3%A0i_to%C3%A1n_
x%E1%BA%BFp_ba_l%C3%B4
http://text.123doc.org/document/2237677-trinh-bay-he-
ma-hoa-merkle-hellman-knapsack-tieu-luan-mon-an-
ninh-he-thong-thong-tin.htm
https://vi.wikipedia.org/wiki/Gi%E1%BA%A3i_thu%E1
%BA%ADt_Euclid_m%E1%BB%9F_r%E1%BB%99ng
http://113.171.224.165/videoplayer/merkle-hellman-
knapsack-based-public-key-
method.pdf?ich_u_r_i=1a6ab00766e5c508f959f510b3758
b4b&ich_s_t_a_r_t=0&ich_e_n_d=0&ich_k_e_y=164505
8913750963002407&ich_t_y_p_e=1&ich_d_i_s_k_i_d=3
&ich_u_n_i_t=1