Hệ mã hóa:
Merkle - Hellman (Knapsack)
Giảng Viên : TS Trịnh Nhật Tiến
Học viên thực hiện: Lê Thị Đào
Nội Dung Trình Bày
Giới thiệu bài toán sắp ba lô
Hệ mã hóa MHK
Tạo khóa
Mã hóa
Giải mã
Độ an toàn
1.Hệ mã hóa MHK
Là hệ mã hóa công khai (bất đối xứng )
Được công bố lần đầu vào những năm 1978
2. Ý tưởng bài toán sắp ba lô
2. 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
Ví dụ (1,2,5,7) không phải vector siêu tăng
Ví dụ (1,2,5,9) là vector siêu tăng
3. Tạo khóa
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).
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
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
Bước 4 : Khóa bí mật là bộ 3 (a,q,r)
3. Tạo khóa (tiếp)
Chọn vector siêu tăng a =(3, 5, 15, 25, 54, 110, 225) ( với n=7)
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
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
Khóa bí mật là :
•
Vector a (3, 5, 15, 25, 54, 110, 225)
•
q =439
•
r = 10
4. 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
Ta biểu diễn từng chữ cái trong từ “hello” 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)
5. Giải mã
Bước 1: Tìm số nghịch đảo của r theo modulo q
Bước 2 : Tính T’ = T * r
-1
(mod q)
Bước 3 : Dùng vector siêu tăng a để giải bài toán
Ví dụ
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)
Với T
h
= 280
T’
h
= 280 * 44 mod (439) = 28
Với a = (3, 5, 15, 25, 54, 110, 225)
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
3.2. BD Hoạt Động “Đăng Kí Mới”
3.3. BD Tuần Tự “Đăng Kí Mới”
4.1. Lớp UC “Sang Tên”
4.2. BD Hoạt Động “ Sang Tên”
4.3. BD Trình Tự “ Sang Tên”
4.3. BD Trình tự “ Sang Tên” <tiếp>
5.1. Lớp UC “ Đổi Biển Số” _ Triệu
5.2. BD Hoạt Động “ Đổi Biển”
5.3. BD Tuần Tự “Đổi Biển”
6.1. Lơp UC “Thu Hồi”
6.2. BD Hoạt Động “ Thu Hồi”
6.3. BD Tuần Tự “Thu Hồi”
7.1. Lớp UC “ Báo cáo xe hết hạn SD”
7.2 . BĐ Hoạt Động “ Báo cáo xe hết hạn SD”
7.3. BĐ cộng tác “ Báo cáo xe hết hạn SD”
8. BĐ lơp chi tiết