If you're seeing this message, it means we're having trouble loading external resources on our website.

Nếu bạn đang sử dụng bộ lọc web, vui lòng kiểm tra lại xem bộ lọc có chặn hai tên miền *.kastatic.org*.kasandbox.org hay không.

Nội dung chính

Mã hoá khoá công khai

Hai máy tính thường có nhu cầu trao đổi dữ liệu bảo mật cho nhau qua mạng Internet. Khi nhập mật khẩu của mình để đăng nhập vào Khan Academy, chúng ta muốn dữ liệu đó được gửi đến máy chủ của Khan Academy một cách an toàn. Chúng ta không muốn phải lo lắng về việc kẻ tấn công có thể đang theo dõi lưu lượng truy cập Internet và xem mật khẩu của chúng ta khi nó đi qua các đường truyền mạng.
Kỹ thuật mã hóa đối xứng dựa trên việc cả người gửi và người nhận sử dụng cùng một khoá để mã hóa và giải mã dữ liệu. Vậy làm cách nào để máy tính của chúng ta và máy chủ của Khan Academy có thể trao đổi khóa một cách an toàn? Nếu kẻ tấn công có thể xem mật khẩu của chúng ta qua đường truyền mạng thì chúng cũng có thể thấy khóa mã hóa!
Mã hóa khóa công khai chính là giải pháp! Đây là một kỹ thuật mã hóa bất đối xứng sử dụng các khóa khác nhau để mã hóa và giải mã, cho phép các máy tính liên lạc với nhau qua Internet một cách an toàn.
Hãy cùng tìm hiểu quy trình mã hóa công phu bằng khóa công khai trong phần dưới đây.

Bước 1: Tạo khoá

Mỗi người (hoặc máy tính của họ) phải thiết lập một cặp khóa gồm khóa riêng tưkhóa công khai để xác định thiết bị.
Bạn có thể nhấn vào "Generate" (Tạo) ở ô dưới để tạo một cặp khoá, cách tạo khóa này sử dụng cùng một thuật toán RSA mà máy tính của bạn sử dụng. Trong đó, "private key" là khóa riêng tư và "public key" là khóa công khai.
Bạn có nhận thấy rằng để tạo khoá thành công thì chúng ta sẽ phải đợi vài giây không? Đó là bởi vì hệ thống cần thực hiện những phép tính toán học. Các khóa được tạo ra bằng cách nhân hai số nguyên tố rất lớn với nhau. Thuật toán liên tục tạo ra các số lớn ngẫu nhiên và kiểm tra xem chúng có phải là số nguyên tố hay không, cho đến khi tìm được hai số lớn ngẫu nhiên là số nguyên tố. Mặc dù các khóa được tạo trong bài đọc này mới chỉ dài 512 bit, nhưng quá trình tìm kiếm số nguyên tố này cũng đã mất một khoảng thời gian. Còn trong thực tế, độ dài khóa hiện được khuyến nghị trên toàn nước Mỹ là 2048 hoặc thậm chí là 3072 bit.

Bước 2: Trao đổi khoá

Máy tính gửi và máy tính nhận sẽ trao đổi các khóa công khai với nhau thông qua một kênh đáng tin cậy, chẳng hạn như TCP/IP. Các khóa riêng tư thì sẽ không bao giờ được trao đổi.

Bước 3: Mã hoá

Máy tính gửi sẽ mã hóa dữ liệu bí mật bằng khóa công khai của máy tính nhận cùng với một phép toán.
Sức mạnh của kỹ thuật mã hóa khóa công khai nằm ở phép toán này. Phép toán này hoạt động như "hàm một chiều", có nghĩa là sẽ rất khó để một máy tính khác đảo ngược phép toán và tìm ra dữ liệu gốc. Ngay cả khóa công khai cũng không thể giải mã dữ liệu.
Bạn có thể sao chép mã của khóa công khai bạn đã tạo ở trên (phần ký tự tính từ dòng thứ hai đến trước dòng cuối cùng) vào ô "Public key" (Khóa công khai) bên dưới và nhập một đoạn văn bản tùy ý trong phần "Plain text" (Văn bản thuần), sau đó nhấn "Encrypt" (Mã hóa) để xem thông điệp sau khi được mã hóa sẽ như thế nào:

Bước 4: Gửi dữ liệu được mã hóa

Giờ đây, người gửi có thể truyền dữ liệu đã được mã hóa một cách an toàn qua Internet mà không phải lo lắng có kẻ dòm ngó những dữ liệu đó.

Bước 5: Giải mã

Sau khi nhận được tin nhắn mã hóa, người nhận có thể giải mã tin nhắn bằng cách sử dụng khóa riêng tư của họ. Đó là chìa khóa duy nhất (trên thế giới!) mà họ có thể dùng để giải mã tin nhắn.
Hãy thử nhập tin nhắn được mã hóa (encrypted text) và khóa riêng tư (private key) đã tạo ở bước 1 và bước 3 để giải mã thông điệp:
Sau khi bạn dùng khoá riêng tư và giải mã thành công tin nhắn, hãy thử làm tương tự nhưng dùng khoá công khai để giải mã. Bạn sẽ thấy rằng tin nhắn sẽ không được giải mã với khoá công khai, chỉ khóa riêng tư mới có thể giải mã nó.

Phương pháp này được ứng dụng trong thực tế như thế nào?

Thật khó để tin rằng chúng ta có thể mã hóa thứ gì đó bằng một khóa và sau đó chỉ có thể dùng một khoá khác để giải mã. Trong suốt một thời gian dài, các nhà toán học đã luôn trăn trở liệu điều này có khả thi hay không và cuối cùng, họ đã tìm ra đáp án vào những năm 1970.
Nguyên lý của phép toán hàm một chiều được dựa trên các số nguyên tố, độ khó của việc phân tích các số nguyên tố lớn và các quy tắc về số học mô-đun. Nếu bạn muốn tìm hiểu sâu hơn về toán học trong khoa học máy tính, hãy tham khảo các bài giảng của Khan Academy liên quan đến mật mã hiện đại.
May mắn thay, tất cả chúng ta đều có thể sử dụng và nhận được lợi ích từ kỹ thuật mã hóa khóa công khai mà không cần phải hiểu phép toán phức tạp đằng sau nó. Trên thực tế, chúng ta có thể đều đang sử dụng kỹ thuật này hàng ngày khi truy cập máy tính và Internet. Nếu không có sự xuất hiện của kỹ thuật mã hóa khóa công khai, thế giới của chúng ta sẽ trở nên thế nào nhỉ?
🙋🏽🙋🏻‍♀️🙋🏿‍♂️Bạn có câu hỏi nào về chủ đề này không? Chúng tôi rất sẵn sàng hỗ trợ bạn — hãy để lại câu hỏi ở mục câu hỏi phía dưới nhé!

Tham gia cuộc thảo luận?

Chưa có bài đăng nào.
Bạn có hiểu Tiếng Anh không? Bấm vào đây để thấy thêm các thảo luận trên trang Khan Academy Tiếng Anh.