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.

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ải bản đầy đủ (PDF)

(123 trang)