Tải bản đầy đủ (.docx) (10 trang)

Tiểu luận môn Mã hóa và an toàn dữ liệu Mã hóa và giải mã MHK Merkle–Hellman

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 (156.5 KB, 10 trang )

MỤC LỤC
LỜI NÓI ĐẦU
Trong thời đại công nghệ số phát triển nhanh chóng và ngày càng đa
dạng, con người giảm bớt được rất nhiều công việc cần phải thực hiện thủ công
như trước đây, nhưng bên cạnh đó, yêu cầu bảo mật khi tiến hành truyền thông
tin đặc biệt là những thông tin quan trọng trên mạng càng vô cùng cần thiết,
không thể thiếu.
Ngày nay, vấn đề không dừng lại ở việc bảo vệ thông tin mà còn là những
vấn đề cấp bách, mang tính sống còn trong thời đại mất thông tin là mất tất cả,
thông tin càng cần phải bảo mật, do đó càng có nhiều hơn những phương pháp
bảo mật, giúp con người cảm thấy an toàn trong các giao dịch truyền tin qua
- 1 -
mạng, một mạng lưới rộng lớn nhưng không an toàn nếu không có những biện
pháp bảo vệ thông tin hợp lý, đầy đủ.
Một trong những biện pháp bảo mật thông tin của mình gửi đi, đảm bảo
không lộ thông tin ra ngoài đó là mã hóa thông tin để chỉ có người có được khóa
để giải mã mới có thể xem được thông tin, cũng như các hệ mã hóa càng ngày
càng phát triển để người ngoài không thể dễ dàng giải được mã có được chìa
khóa giải mã được thông tin.
1. Giới thiệu chung
1.1. Hệ mã khóa bất đối xứng ( khóa công khai)
Hệ mã hóa đối xứng và hệ mã hóa bất đối xứng là hai hệ mã hóa
phổ biến trong hệ thống bảo mật an toàn thông tin.
Hệ thống đối xứng( hệ mã hóa bí mật) do hai bên gửi và nhận có
vai trò như nhau khi thực hiện sử dụng chung một khóa bí mật. Tuy nhiên
các hệ mã hóa đối xứng có những nhược điểm cơ bản như sau:
• Vấn đề quản lý khóa( tạo, lưu mật, trao quyền…) là rất phức tạp
trong khi sử dụng trong môi trường trao đổi thông tin giữa rất nhiều
người dùng. Với số lượng người dùng là n thì số lượng khóa cần
tạo lập là n(n-1)/2. Mối người dùng phải tạo và lưu n-1 khóa bí mật
để làm việc với n-1 người khác trên mạng. Như vậy rất khó khăn và


không an toàn khi n tăng lớn dần
- 2 -
• Thứ hai là, trên cơ sở mã đối xứng ta không thể thiết lập được chữ
kí điện tử ( được thực hiện thay thế cho chức năng của chữ kí tay
trong thực tế) và cũng do đó không thể cung cấp dịch vụ không thể
phủ nhận cho các giao dịch thương mai trên mạng.
Ngoài ra trong hệ thống mã khóa đối xứng ( hệ mã hóa khóa bí
mật), thông tin mật được chia sẽ chung của cả hai bên, do đó bên A cũng
có thể thực hiện được các giao dịch như bên B và ngược lại. Do đó giải
pháp cho vấn đề này là phải thêm thành phần thứ ba trong các giao dịch là
người có thẩm quyền tin tưởng và làm trọng tài trong khi xảy ra tranh cãi
giữa A và B.
Do những vấn đề trên cần xây dựng một hệ mã khóa có tư tưởng
mới , xây dựng xung quanh một người sử dụng, người chủ của hệ thống
mã hóa thay vì một cặp người sử dụng như trước đây. Trong hệ thống này
mỗi người có hai chìa khóa : một chìa là chìa khóa bí mật và chìa còn lại
là khóa công khai. Khóa bí mật thì chỉ mình người sử dụng biết và giữ bí
mât cho riêng mình, còn khóa thứ hai là khóa công khai, người sử dụng có
thể tự do phổ biến công khai. Khóa bí mật thường gắn liên với thuật toán
giải mã, còn khóa công khai thường gắn liền với thuật toán sinh mã, tuy
nhiên cũng có trường hợp ngược lại.
Có 2 hình thức sử dụng của hệ mã khóa bất đối xứng ( hệ mã hóa
công khai).
• Sử dụng trong trường hợp mã hóa : khóa công khai để mã hóa , khóa bí
mật dùng để giải mã.
• Sử dụng trong chữ kí điện tử : khóa công khai để giải mã, khóa bí mật
để mã hóa.
- 3 -
1.2. Hệ mã hóa Merkle–Hellman
Hệ mã hóa Merkle–Hellman là một trong những hệ mã hóa khóa

công khai đầu tiên được phát minh bởi Ralph Merkle và Martin Hellman
trong năm 1978.Hệ mã hóa khóa công khai này được coi là đơn giản hơn
hệ mã hóa RSA. Tuy nhiên hệ mã hóa này đã bị phá bỏ và hiện tại không
còn được sử dụng.
Hệ mã hóa Merkle–Hellman là hệ mã hóa bất đối xứng, trong đó có
2 khóa : khóa công khai và khóa bí mật. Hơn nữa không giống như RSA,
nó là một chiều: khóa công khai dùng để mã hóa và khóa bí mật dùng để
giải mã. Do đó ta không thực hiện xác thực bằng hệ mã hóa này giống
như hệ mã hóa RSA.
2. Mã hóa và giải mã MHK
2.1. Ý tưởng của hệ mã hóa
Xuất phát từ việc giải bài toán : Làm thế nào đặt các đồ vật vào ba
lô sao cho tổng giá trị của nó là lớn nhất có thể và tổng khối lượng không
được lớn hơn 15kg?
- 4 -
Việc giải bài toán sẽ được áp dụng với thuật toán giải mã trong hệ
mã hóa MHK. Bài toán giải quyết vấn đề này là một vấn đề khó, chưa có
cách nào tối ưu hơn thuật toán vét cạn, do đó Merkel đã áp dụng một mẹo
nhỏ để có thể giải quyết bài toán một cách dễ dàng hơn, nhờ vào thuật
toán tham ăn, vì việc tính ngược sẽ trở lên dễ dàng hơn.
• Vector siêu tăng
Vector siêu tăng là vector tuần tự a= (a
1,
a
2,…
a
j,…
a
n
) sao cho

a
j
>Σ a
i
với i từ 1 đến j-1 và j<=n
Để thấy được việc sử dụng vector siêu tăng giúp giải quyết vấn đề
một cách nhanh chóng dễ dàng hơn, ta thực hiện nghiên cứu ví dụ đơn
giản sau:
Cho T= 14, ta thấy việc thực hiện tìm x =(x
1,
x
2,
x
3,
x
4
) thật dễ dàng .
Đặt T = T
0
x
4
= 1 T
1
= T
0
- x
4
= 6 => x =(x
1,
x

2,
x
3,
1)
x
3
= 1 T
2
= T
1
– x
3
= 2 => x =(x
1,
x
2,
1
,
1)
x
2
= 1 T
3
= T
2
- x
2
= 0 => x =(x
1,
1

,
1
,
1)
x
1
= 0 => x =(0
,
1
,
1
,
1)
Ở bước thứ i, tổng đích là T
i
(tức là phải tìm các a
j
sao cho tổng
bằng T
i
.ta đem so sánh T với thành phần lớn nhất trong phần còn lại của
vector, nếu lớn hơn thì thành phần này được chọn tức là x tương ứng được
chọn là 1, ngược lại thì x tương ứng là bằng 0. Sau đó tiếp tục chuyển
sang các bước sau.
Như vậy ta có thể dễ dàng tìm được số lượng vật x
i
để tìm được
tổng khối lượng đúng bằng số cho trước bằng cách đơn giản như trên.
2.2. Tạo khóa
Như ta đã biết, hệ mã khóa công khai( hệ mã hóa bất đối xứng )

gồm 2 khóa, khóa công khai để mã hóa, khóa bí mật để giải mã. Do đó
việc đầu tiên cần thực hiện là tạo được 2 khóa công khai và bí mật này.
Khóa công khai, người dùng công khai trên mạng để người cần chuyển tin
dùng khóa công khai này cùng với thông điệp cần chuyển mã hóa thành
bản mã để chuyển cho người dùng cần chuyển. Người này nhận bản mã
dùng khóa bí mật để giải mã, lấy được thông điệp đã được chuyển tới
mình.
- 5 -
Công việc tạo mã gồm 3 bước :
o Bước 1 : Chọn vector siêu tăng a= (a
1,
a
2,…
a
j,…
a
n
) ( trong đó n là
số bit trong bản rõ cần mã hóa và giải mã là n bit).
o Bước 2 : Chọn một số nguyên dương q >Σ a
i
và số nguyên
dương r là số nguyên tố cùng nhau với q; r<q
o Bước 3 : tính khóa công khai là vector β (β
1,
β
2…,
β
j,….
β

n
)
Khóa công khai được tính bằng công thức như sau :
β
i
= (a
i
*r ) mod q
o Bước 4 : Khóa bí mật là bộ 3 (a,q,r)
1. Ví dụ :
o Chọn vector siêu tăng a =(3, 5, 15, 25, 54, 110, 225) ( với n=7)
o Ta có Σ a
i
= 3+5+15+25+54+110+225 = 437
Chọn q = 439 >437; r =10 là số nguyên tố cùng nhau với q
o Khóa công khai β =( 30, 50, 150, 250, 101, 222, 55) vì
 ( 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*10 ) mod 439 =222
 ( 225*10 ) mod 439 =55
o Khóa bí mật là :
 Vector a (3, 5, 15, 25, 54, 110, 225)
 q =439
 r = 10
2.3. Mã hóa
Khi B muốn gửi một thông điệp X đến cho bên A và đã biết được
khóa công khai của A là β, B chỉ cần tạo bản mã bằng cách lấy khóa công

khai nhân với bản mã( n bit tương ứng) .
T = Σ β
i
* X
i
Việc mã hóa của thuật toán là tương đối dễ dàng, đầu tiên, ta chỉ cần biểu
diễn thông điệp dưới dạng n bit dựa trên khóa công khai số bit được biểu
diễn bằng số lượng trong khóa công khai được người đó công khai trên
mạng. Sau đó lấy từng bit tương ứng này nhân với khóa công khai ta có
được bản mã sau khi mã hóa. Bản mã này sau khi được mã hóa xong sẽ
được gửi đến cho A để A dựa vào khóa bí mật của mình tiến hành giải mã.
- 6 -
• Ví dụ : Tạo mã hóa cho thông điệp hello với khóa công khai như
trên ví dụ phần tạo mã.
Ta biểu diễn từng chữ cái trong từ thành 7 bit :
 h = 1001000
 e = 1100101
 l = 1101100
 o = 1101111
Khóa công khai là β =( 30, 50, 150, 250, 101, 222, 55)
Ta tính được :
 T
h
=1*30 + 1* 250 =280
 T
e
=30 +50 +101 + 55 = 236
 T
l
= 30+50+250 +101 = 431

 T
o
=30+50+250+101 +222 + 55 = 708
Do đó ta có được bản mã là : (280,236,431,431,708)
2.4. Giải mã
Thuật toán giải mã là thuật toán dựa vào khóa bí mật chỉ có người
tạo khóa mới biết được khóa của mình là như thế nào để có thể giải được
thông điệp. Trong khi có khóa thì ta có thể giải được khá dễ dàng thông
điệp người gửi gửi đến cho mình.
Thuật toán giải mã bao gồm 3 bước :
o Bước 1: Tìm số nghịch đảo của r theo modulo q
o Bước 2 : Tính T’ = T * r
-1
(mod q)
o Bước 3 : Dùng vector siêu tăng a để giải bài toán
• Giải mã bản mã (280,236,431,431,708) với khóa bí mật biết trước
là :
 Vector a = (3, 5, 15, 25, 54, 110, 225)
 q =439
 r = 10
Ta tính được nghịch đảo của r theo modulo q là 44 vì 10x44 = 1
mod(q)
o Với T
h
= 280
T’
h
= 280 * 44 mod (439) = 28
Với a = (3, 5, 15, 25, 54, 110, 225)
- 7 -

x
4
< 28 -> x
4
= 1 T = 3
x
1
= 3 => x
1
= 1
Vậy ta có biểu diễn dưới dạng 7 bit là 1001000
Tương tực với các số khác trong bản mã thì ta se giải mã
được thông điệp.
3. Đánh giá hệ mã khóa MHK
Ban đầu, với những người không biết khóa bí mật ( a, q,r) muốn giải
mã phải thực hiện thuật toán vét cạn qua 2
n
khả năng của X, vì vậy với n
đủ lớn thì việc tìm kiếm theo thuật toán vét cạn được gọi là bất khả thi do
đó nó được gọi là khá an toàn.
Nhưng việc tìm kiếm giải mã theo kiểu vét cạn không phải là cách duy
nhất. Năm 1982, Shamir- Adleman đã chỉ ra chỗ yếu của giải pháp này
bằng cách đi tìm một cặp (r, q) sao cho có thể biến đổi ngược β về a ( tính
được khóa bí mật từ khóa công khai). Năm 1984, Brickell tuyên bố sự đổ
vỡ của hệ thống Knapsack với dung lượng tính toán khoảng một giời máy
Cray-1 với 40 vòng lặp chính và cỡ 100 trọng số.
- 8 -
KẾT LUẬN
Hệ mã hóa MHK mặc dù hiện tại không còn được sử dụng trong thực tế vì
tính bảo mật kém cũng như dễ dàng có thể tìm được khóa của bài toán. Nhưng

đây là hệ mã hóa tiền đề để phát triển những hệ mã hóa bất đối xứng tiếp theo
phát triển thay thế cho hệ mã hóa đối xứng ( khóa bí mật) có nhiều nhược điểm.
Hệ mã hóa MHK là bước đầu tiên cho việc phát triển việc sử dụng chữ ký
số, vì là hệ mã hóa bất đối xứng nên có thể dùng hai chiều : hoặc sử dụng để mã
hóa, hoặc sử dụng chữ kí số, điển hình là hệ mã hóa RSA, chữ kí số RSA.
- 9 -
TÀI LIỆU THAM KHẢO
1. Phan Đình Diệu. Lý thuyết mật mã và An toàn thông tin, 2004.
2. Khoa CNTT Đại học Hàng Hải, Giáo trình An toàn và bảo mật thông tin ,
2008.
3. Trịnh Nhật Tiến, Bài giảng An toàn dữ liệu, 2005
4. Kanmogne Pekam Linda, Basic Merkle-Hellman Knapsack cryptosystem
- 10 -

×