0
Tải bản đầy đủ (.ppt) (54 trang)

Phương thức mã hóa dùng khoá công khai (Public-Key Crytography)

Một phần của tài liệu BÁO CÁO MẬT MÃ VÀ AN TOÀN DỮ LIỆU CÁC VẤN ĐỀ CHUNG VỀ BẢO MẬT HỆ THỐNG VÀ MẠNG (Trang 29 -40 )

Private key

2.2. Phương thức mã hóa dùng khoá công khai (Public-Key Crytography)

(Public-Key Crytography)

Phương thức mã hóa dùng khoá công khai được phát minh bởi

Whitfield Diffie và Martin Hellman vào năm 1975;

Phương thức mã hóa này sử dụng 2 khóa là Public key và Private

Key có các quan hệ toán học với nhau.

Trong đó Private Key được giữ bí mật và không có khả năng bị

lộ do không cần phải trao đổi trên mạng;

Public key không phải giữ bí mật và mọi người đều có thể

nhận được khoá này.

Do phương thức mã hóa này sử dụng 2 khóa khác nhau, nên người

ta gọi nó là phương thức mã hóa phi đối xứng.

Mặc dù Private key được giữ bí mật, nhưng không giống với

"secret Key" được sử dụng trong phương thức mã hóa đối xứng sử dụng khoá bí mật do Private Key không được trao đổi trên mạng.

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Public key và Private key tương ứng của nó có quan hệ toán học

với nhau và được sinh ra sau khi thực hiện các hàm toàn học;

Các hàm toán học này luôn thoả mãn điều kiện là sao cho không

thể tìm được private key từ public key và ngược lại.

Do đó, một cặp khoá public key và private key tương ứng được

gọi là key pair.

Do có mối quan hệ toán học với nhau, một message được mã hóa

bằng public key chỉ có thể giải mã được bằng private key tương ứng;

Một message được mã hóa bằng private key chỉ có thể giải mã

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Thuật toán Public key có tính thuận nghịch nếu nó có khả năng sử

dụng cả cho bảo mật và ký điện tử.

Nó là không có tính thuận nghịch nếu chỉ có khả năng ký.

Với các thuật toán bất thuận nghịch, private key chỉ có thể mã

hóa plaintext (tức là quá trình ký) mà không có khả năng giải mã ciphertext.

Một loại khác của thuật toán mã hóa public-key là hoặc không

thể mã hóa hoặc không thể ký; thuật toán này được gọi là thuật toán key exchange (thuật toán chuyển đổi khóa).

Thuật toán Public-key dựa trên mối quan hệ toán học giữa Public

key và private key.

Bảng sau đây liệt kê các thuật toán public-key thông dụng như sau:

Tên Thuật toán Type Nền tảng toán học DSA Digital signature Thuật toán rời rạc RSA Digital signature,

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

RSA, là tên của 3 nhà toán học đã tìm ra phương thức mã hóa

này, đó là Rivest, Shamir và Adleman.

RSA là thuật toán public-key thông dụng nhất từ trước tới nay.

RSA có thể sử dụng cả cho mã hóa, ký, và key exchange.

Chiều dài của key có thể thay đổi, thông thường trong phạm

vi từ 512 đến 2048 bits.

Việc lựa chọn chiều dài key phải đảm bảo cân bằng giữa tốc

độ tính toán và độ phức tạp của phương thức mã hóa.

DSA (Digital Signature Algorithm), phương thức mã hóa này

được ra đời từ chuẩn DSS (Digital Signature Standard), được giới thiệu vào năm 1994.

DSA chỉ có thể ký vào một message;

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Cơ chế làm việc của phương pháp mã hoá sử dụng khoá công khai

được mô tả bằng hình sau:

Encrytion Public key

Plaintext Ciphertext Decrytion Plaintext Private key

Hình. Phương thức mã hóa phi đối xứng

Giả sử A muốn gửi cho B một message được mã hóa theo phương thức

public-key.

A sử dụng Public key của B để mã hóa Plaintext tạo thành ciphertext

(A có thể nhận được Public Key của B do Public Key là khoá công khai).

Sau đó ciphertext này được chuyển tới B.

Ở phía nhận B sử dụng private key của mình để giải mã Ciphertext và

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Do đó, để thực hiện phương thức mã hóa dùng khoá công khai, có

một số vấn đề cần giải quyết như sau:

Câu hỏi 1: Làm thế nào để A có thể kiểm tra tính xác thực của

Public Key của B?

Câu hỏi 2: Làm thế nào để B biết được chính xác là message đó

được gửi đi từ A.

Chúng ta xem xét các tình huống có thể bị tấn công đối với phương

thức mã hoá phi đối xứng như sau:

Trường hợp có kẻ nghe trộm thông tin trao đổi trên mạng:

C là một người nghe trộm, C có thể lấy được ciphertext

chuyển từ A đến B, nhưng không thể giải mã được message này vì C không có private key của B.

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Trường hợp giả mạo khoá công khai:

Vấn đề đặt ra là làm thế nào để A có thể biết chính xác Public

key mà A sử dụng đúng là Public Key của B.

Trong trường hợp này, nếu D giả mạo B gửi Public key của D

đến A (A nhận được Public key là của D mà không phải là của B), và A vẫn mã hoá message của mình;

Khi đó message đến D sẽ vẫn giải mã được do D có private key

của mình.

Để khắc phục hạn chế này người ta xây dựng một hệ thống các

tổ chức thứ ba đóng vai trò trung gian trong việc xác thực tín đúng đắn của một Public Key.

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Trường hợp sử dụng Private Key để mã hoá:

Nếu như A sử dụng private key của mình để mã hóa một

message và gửi message đó tới B?

Khi đó, B có thể sử dụng Public key của A để giải mã

message từ A.

Một người thứ ba C cũng có Public key của A (public key là

một khóa công khai) nên nếu nhận được message gửi từ A cũng có thể giải mã được message và đọc nó.

Do đó, A không thể sử dụng private key của mình để mã hóa

một message.

Tuy nhiên dựa vào đặc điểm ánh xạ 1:1 giữa Private Key và

Public Key ta có thể thấy rằng message được mã hoá là được gửi từ A mà không phải là một người khác.

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Một hạn chế của phương thức mã hóa dùng khoá công khai là

làm giảm tốc độ thực hiện thao tác xuống từ 100 đến 1000 lần so với phương thức mã hóa đối xứng.

Do đó, phương thức mã hóa này ít được sử dụng để mã hóa

với dữ liệu kích thước lớn.

Phương thức này thường được sử dụng cho giai đoạn khởi

đầu của kết nối giữa hai thực thể cần giao tiếp với nhau và sau đó một khoá bí mật (secret key) được tạo để thực hiện quá trình trao đổi dữ liệu (khoá bí mật này chỉ tồn tại trong một session làm việc duy nhất).

Việc sử dụng kỹ thuật mã hoá dùng dùng khoá công khai cho

quá trình bắt tay giữa hai thực thể cần trao đổi thông tin có yêu cầu bảo mật kết hợp với thuật toán dùng khoá bí mật cho quá trình trao đổi dữ liệu tạo thành một phương thức mã hóa lai.

Để thực hiện được phương thức mã hoá lai, Netscape đã đưa

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Qua các phân tích trên, chúng ta thấy rằng có hai khả năng cần phải

khắc phục khi sử dụng phương thức mã hóa dựa trên nền tảng Public key đó là:

Nếu sử dụng Public key để mã hóa một message thì đảm bảo

message đó là hoàn toàn bảo mật; nhưng cần phải kiểm tra tính xác thực của public key. (1)

Nếu sử dụng Private key để mã hóa một message thì có thể giải

mã được bởi nhiều người có được public key; nhưng lại có thể sử dụng phương thức này để kiểm tra tính xác thực của một người ký vào message đó. (2)

2.2. Phương thức mã hóa dùng khoá công khai(Public-Key Crytography)

(Public-Key Crytography)

Vấn đề đặt ra là có thể tận dụng được hai đặc điểm này để đảm bảo

phiên giao dịch là hoàn toàn bảo mật và tin cậy. Cụ thể như sau:

Người ta sẽ sử dụng private key để ký vào một message; mà nội

dung của message này là public key của người đó.

Quá trình này đảm bảo được rằng public key đúng là của

người;

Điều này khắc phục được nhược điểm (1) đã nêu ở trên.

Sau đó một message được mã hóa bằng public key vừa gửi đến

đảm bảo rằng chỉ có người có private key của nó mới có khả năng giải mã được.


Một phần của tài liệu BÁO CÁO MẬT MÃ VÀ AN TOÀN DỮ LIỆU CÁC VẤN ĐỀ CHUNG VỀ BẢO MẬT HỆ THỐNG VÀ MẠNG (Trang 29 -40 )

×