Tải bản đầy đủ (.pptx) (31 trang)

Báo cáo môn Mã Hóa và An toàn dữ liệu Hệ mã hóa Merkle Hellman (Knapsack)

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 (444.47 KB, 31 trang )

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

×