Các hệ mật mã khoá công khai

Một phần của tài liệu Nghiên cứu ứng dụng hạ tầng cơ sở mật mã khoá công khai cho hệ thống đấu thầu qua mạng (Trang 45)

Các thuật toán khoá công khai sử dụng một khoá để mã hoá và một khoá khác để giải mã (tạo thành một cặp khoá). Chúng có tính chất quan trọng sau đây:

- Khó có thể xác định được khoá giải mã nếu chỉ căn cứ vào các thông tin về thuật toán và khoá mã hoá.

- Một trong hai khoá được sử dụng để mã hoá, khoá còn lại được sử dụng để giải mã.

Hình 2.4. Minh hoạ quá trình mã hoá và xác thực khoá công khai

a) Mã hoá

Các bước cơ bản của quá trình mã hoá công khai thể hiện trên hình 4.4 ở trên bao gồm:

1. Hệ thống sinh ra một cặp khóa, cặp khoá này được sử dụng để mã hoá và giải mã các thông báo mà nó nhận được. Cặp khoá này không được suy ra nhau một cách dễ dàng nếu không có cửa sập.

2. Hệ thống công bố khóa mã hoá của mình bằng cách đặt khoá này vào trong một thanh ghi công khai hoặc một file. Đây chính là khoá công khai. Khoá cùng cặp được giữ bí mật.

3. Nếu A muốn gửi cho B một thông báo, nó mã hoá thông báo bằng khoá công khai của B.

4. Khi B nhận được thông báo, B giải mã thông báo bằng khoá riêng của B.

Về lý thuyết, không một người nhận nào khác có thể giải mã thông báo, bởi vì chỉ có B mới biết khoá riêng của mình.

Với cách giải quyết này, tất cả các thành viên tham gia truyền thông có thể truy nhập vào các khoá công khai. Khoá riêng do mỗi thành viên sinh ra không bao giờ được phân phối. Quá trình liên lạc chỉ an toàn chừng nào hệ thống còn kiểm soát được khoá riêng của mình. Một hệ thống có thể thay đổi các khoá riêng của nó bất cứ lúc nào, đồng thời công bố các khoá công khai cùng cặp để thay thế khoá công khai cũ.

Nguồn A đưa ra một thông báo và bản rõ của thông báo là X=[X1, X2,...,XM]. A dự định gửi thông báo cho đích B. B sinh ra một cặp khoá là

khoá công khai KUb, khoá riêng KRb. Chỉ có B biết KRb, còn KUb được công bố công khai, do vậy A có thể có được khoá công khai này.

Với đầu vào là thông báo X và khoá mã hoá KUb, A tạo ra một bản mã Y =[Y1, Y2, ..., YN] với Y=EKUb(X).

Người nhận hợp lệ (người sở hữu khoá riêng) thu được X, qua phép biến đổi ngược X=DKRb(Y).

Đối phương (có thể có được Y và KUb nhưng không có KRb hoặc X) phải tìm cách khôi phục lại X và/hoặc KRb. Giả sử rằng, anh ta có các thông tin về thuật toán mã hoá (E) và giải mã (D), có thể khôi phục thông báo X, bằng cách sinh ra một bản rõ X ước lượng. Tuy nhiên, để đọc được các thông báo mới, đối phương phải khôi phục được KRb bằng cách sinh ra một KRb ước lượng.

b) Xác thực

Hình 2.5. Hệ mật khoá công khai: Xác thực

Trong trường hợp này, A chuẩn bị một thông báo để gửi cho B và ký trên thông báo bằng khoá riêng của mình trước khi truyền đi. B kiểm tra chữ ký trên thông báo bằng khoá công khai của A. Chữ ký trên thông báo được ký bằng khoá riêng của A nên có thể khẳng định chỉ có A là người tạo ra và chịu trách nhiệm về thông báo đó. Người ta không thể sửa đổi thông báo nếu không có khoá riêng của A, chính vì vậy thông báo được xác thực cả nguồn gốc lẫn tính toàn vẹn dữ liệu.

Việc sử dụng lược đồ khoá công khai có thể đảm bảo tính xác thực và bí mật:

Hình 2.6. Hệ mật khoá công khai: Bí mật và xác thực

Z=EKUb [EKRa(X)] X=DKUa [DKRb(Z)]

Trước hết, chúng ta mã hoá một thông báo bằng khoá riêng của người gửi, đưa ra một chữ ký số. Tiếp theo, mã hoá một lần nữa bằng khoá công khai của người nhận. Chỉ có người nhận hợp pháp mới giải mã được bản mã cuối cùng này vì anh ta có khoá riêng cùng cặp. Như vậy sẽ đảm bảo được tính bí mật. Khó khăn của biện pháp này là thuật toán khoá công khai phải tiến hành 4 lần thay vì 2 lần cho mỗi cuộc truyền thông.

Nếu toàn bộ thông báo được mã hoá, nó đòi hỏi khả năng lưu giữ lớn. Mỗi tài liệu phải được lưu giữ ở dạng rõ. Bản sao được lưu giữ ở dạng mã, nên chúng ta có thể kiểm tra được nguồn gốc và các nội dung trong trường hợp tranh chấp. Một cách hiệu quả hơn để có được các kết quả như trên là mã hoá một khối nhỏ các bit. Khối này được gọi là dấu xác thực. Nó phải có tính chất là mọi thay đổi trên tài liệu dẫn đến sự thay đổi của dấu xác thực. Nếu dấu xác thực được mã hoá bằng khoá riêng của người gửi, nó được sử dụng như một chữ ký. Chữ ký được sử dụng để kiểm tra nguồn gốc, nội dung và trình tự.

c) Dấu xác thực (MACs)

Hầu hết thuật toán MACs được sử dụng đều dựa trên cipher – block – chaining – code (tạm dịch là chế độ liên kết khối mã) có nội dung cụ thể như sau: (Ở đây giả sử dùng mã khối DES để tạo ra MAC):

1. Cho x là một thông điệp độ dài tuỳ ý;

3. Cắt x’ thành từng khối có độ dài 64 bits, ký hiệu là x1, x2, ... xm; 4. Cho trước một vector nhị phân 64 bits ký hiệu là t;

5. Đặt yo = t;

6. Mã hoá yi = EK(yi-1  xi) với i = 1, 2, ....; 7. Giải mã: (adsbygoogle = window.adsbygoogle || []).push({});

yo = t; xi = yi-1  DK(yi) với i = 1, 2, ...

trong đó: EK(.) là mã hoá DES bởi khoá K cho trước

DK(.) là quá trình giải mã bởi thuật toán giải mã DES với k cho trước

Sau đó đặt MAC = ym. Khi chuyển bản thông báo rõ x = x1x2...xm có kèm theo khối 64 bits ym tức là thông báo truyền đến nơi nhận là (x1, ...., xm, xm+1 (xm+1 = ym)). Rõ ràng là bất kỳ sự thay đổi nào trên bản rõ x đều kéo theo sự thay đổi của khối xm+1.

Một phần của tài liệu Nghiên cứu ứng dụng hạ tầng cơ sở mật mã khoá công khai cho hệ thống đấu thầu qua mạng (Trang 45)