Mô tả các quá trình tạo khoá, mã hoá, giải mã 3 2-

Một phần của tài liệu Hệ mật mã khóa công khai ứng dụng bảo mật thông tin trong thương mại điện tử (Trang 32 - 35)

Tạo khoá:

Nếu S > an Nếu S < an

Để sử dụng hệ mật mã khoá công khai ba lô Merkle-Hellman [1], [4],mỗi người sử dụng phải tạo riêng một cặp khoá gồm khoá công khai, và khoá riêng như sau:

 Chọn một vector ba lô siêu tăng a = (a1, a2,…,an). (khoảng 100 phần tử).

 Chọn một số nguyên m > n

i =1ai và một số w sao cho gcd (w, m) = 1.

 Nhân các phần tử của vector a với w modulo m, kết quả thu được là vector ba lô b = (b1, b2,…,bn), trong đó bi = w * ai mod m, và i = 1,…,n.

 Công bố vector ba lô b = (b1, b2,…,bn) như khoá công khai, các số w, m và vector ba lô siêu tăng a = (a1, a2,…,an) được giữ bí mật làm khoá riêng.  Mã hoá:

Hệ mật mã khoá công khai ba lô Merkle-Hellman, thực hiện mã hoá theo từng khối n-bits với n là số phần tử của vector ba lô lập mã b. Giả sử người sử dụng A muốn mã hoá thông điệp M để gửi cho B, thì phía A phải thực hiện như sau:

 Biến đổi các ký tự trong thông điệp thành chuỗi nhị phân theo qui tắc sau:

Bảng 2.1. Qui tắc chuyển đổi ký tự 5-bits nhị phân ( - khoảng trắng)

Ký tự Mã nhị phân Ký tự Mã nhị phân  00000 M 01101 A 00001 N 01110 B 00010 O 01111 C 00011 P 10000 D 00100 Q 10001 E 00101 R 10010 F 00110 S 10011 G 00111 T 10100 H 01000 U 10101 I 01001 V 10110 J 01010 X 10111 K 01011 Y 11000 L 01100 Z 11001

 Chia thông điệp thành từng khối có chiều dài n-bits với n là số phần tử của vector ba lô b, kết quả thu được một dãy gồm k khối M1, M2,…,Mk, mỗi khối là một vector Mi = (xi1, xi2,…, xin), với:

xị = {0, 1}, 1 ≤ i ≤ kvà 1 ≤ j ≤ n.

 Thực hiện mã hoá lần lượt từng khối bits Mi thành số nguyên Ci(i = 1,…, k) bằng cách tính: Ci = ij n i j x b    1 = b1 * xi1 +…+ bn * xin.

Tập các số nguyên C = {C1, C2,…,Ck} là bản mã chuyển đến người nhận B.  Giải mã:

Khi nhận được bản mã C, người nhận B giải mã lần lượt từng số Ci như sau:

 Tính các tổng Si = Ci * w-1 mod m, với i = 1,…, k. ở đây w-1 là phần tử nghịch đảo của w mod m: w * w-1 1 (mod m).

 Giải lần lượt bài toán ba lô siêu tăng với vector a = (a1, a2,…,an) với các số Si tính được. Kết quả là một dãy các khối số M1, M2,…,Mk trong đó mỗi khối là một vector Mi = (xi1, xi2,…, xin), với xij = {0, 1}, 1 ≤ i ≤ kvà1 ≤ j ≤ n.

 Thực hiện phép biến đổi ngược từ các chuổi bits thành các ký tự tương ứng, để phục hồi lại thông điệp M ban đầu.

Bảng 2.2 Các bước tạo khoá, mã hoá, giải mã của Hệ ba lô Merkele-Hellman

Tạo khoá:

 Tạo vector siêu tăng a = (a1,…,an).

 Chọn m sao cho m >   n i1 ai  chọnw sao cho gcd(w, m) = 1.  Tính vector b = (b1, b2,…,bn) với các phần tử bi = w * ai mod m

Mã hoá: Mã hoá thông điệp M

 Biến đổi M = (x1, x1,…, xn), với xi = {0, 1}.  Tính C = n i i i b x   1

Khoá công khai: b = (b1, b2,…,bn).

Khoá riêng: a = (a1, a2,…,an), w, m.

Gải mã: Phục hồi thông điệp M.

 Tính S = C * w -1 mod m.

 Giải bài toán ba lô với vector siêu tăng a = (a1, a2,…,an) và tổng S, khôi phục bản rõ M. (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Hệ mật mã khóa công khai ứng dụng bảo mật thông tin trong thương mại điện tử (Trang 32 - 35)