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.
Trang 1MỤC LỤC
Mục lục 1
Lời nói đầu 2
1 Giới thiệu chung 3
1.1 Hệ mã khóa bất đối xứng ( khóa công khai) 3
1.2 Hệ mã hóa Merkle–Hellman 4
2 Mã hóa và giải mã MHK 4
2.1 Ý tưởng của hệ mã hóa 4
2.2 Tạo khóa 6
2.3 Mã hóa 7
2.4 Giải mã 8
3 Đánh giá hệ mã khóa MHK 9
Kết luận 10
Tài liệu tham khảo 11
Trang 2LỜ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 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
Trang 31 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
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ã
Trang 4 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
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?
Trang 5Việ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= (a1, a2,… aj,… an) sao cho
aj > ai 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 =(x1, x2, x3, x4) thật dễ dàng Đặt T = T0
x4 = 1 T1 = T0 - x4 = 6 => x =(x1, x2, x3, 1)
x3 = 1 T2 = T1 – x3 = 2 => x =(x1, x2, 1, 1)
x2 = 1 T3 = T2- x2 = 0 => x =(x1, 1, 1, 1)
x1 = 0 => x =(0, 1, 1, 1)
Ở bước thứ i, tổng đích là Ti (tức là phải tìm các aj sao cho tổng bằng Ti 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
Trang 6chọ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 xi để 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
Công việc tạo mã gồm 3 bước :
o Bước 1 : Chọn vector siêu tăng a= (a1, a2,… aj,… an) ( 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 > ai 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 = (ai *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ó ai = 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
Trang 7 ( 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 * Xi
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ã
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 :
Th =1*30 + 1* 250 =280
Te =30 +50 +101 + 55 = 236
Tl = 30+50+250 +101 = 431
To =30+50+250+101 +222 + 55 = 708
Do đó ta có được bản mã là : (280,236,431,431,708)
Trang 82.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 Th = 280
T’h = 280 * 44 mod (439) = 28 Với a = (3, 5, 15, 25, 54, 110, 225) x4< 28 -> x4 = 1 T = 3
x1 = 3 => x1 = 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
Trang 93 Đá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 2n 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ố
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
Trang 10đâ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
Trang 11TÀ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