Cách bước đột phá khóa công khai của Whitfield Diffie làm cho HTTPS, nhắn tin an toàn và nhận dạng số trở nên khả thi—giải thích bằng các ý tưởng chính và ứng dụng thực tế.

Mỗi lần bạn đăng nhập vào ngân hàng, mua hàng trực tuyến, hoặc gửi một tin nhắn riêng tư, bạn đang dựa vào một ý tưởng đơn giản: bạn có thể truyền thông tin qua mạng mà người khác có thể theo dõi, nhưng vẫn giữ những phần quan trọng bí mật.
Điều đó giờ nghe có vẻ hiển nhiên, nhưng trước đây nó là một mớ hỗn độn thực tế. Nếu hai người muốn dùng mã hóa, họ phải thỏa thuận một khóa bí mật chung trước. Làm điều đó an toàn thường cần một người đưa thư đáng tin cậy, một cuộc gặp đã sắp xếp, hoặc mạng công ty bảo mật—những tùy chọn không thể mở rộng cho hàng triệu người lạ trên internet.
Mã hóa khóa công khai thay đổi quy tắc. Nó giới thiệu cách công khai một khóa (khóa công khai) trong khi giữ một khóa khác bí mật (khóa riêng). Với sự tách này, bạn có thể bắt đầu một mối quan hệ an toàn mà không cần chia sẻ bí mật trước. Whitfield Diffie là nhân vật trung tâm trong việc đưa bước đột phá này ra công chúng và chứng minh tầm quan trọng của nó.
Chúng ta sẽ liên kết các khái niệm lõi với những thứ bạn thực sự dùng:
Bạn sẽ nhận được giải thích bằng tiếng thường, với đủ trực giác toán học để hiểu tại sao các mẹo hoạt động—không biến tài liệu này thành sách giáo khoa. Mục tiêu là làm cho mật mã khóa công khai ít giống phép màu hơn và hơn hết là một công cụ thực tế âm thầm bảo vệ đời sống hàng ngày.
Trước khi có mã hóa khóa công khai, giao tiếp an toàn chủ yếu là mã hóa đối xứng: cả hai bên dùng cùng một khóa bí mật để khóa và mở tin nhắn.
Hãy nghĩ nó như ổ khóa và một chìa chung. Nếu bạn và tôi đều có bản sao của cùng một chìa, tôi có thể khóa một hộp, gửi cho bạn, và bạn có thể mở nó. Việc khóa và mở thật đơn giản—miễn là chúng ta đã có chìa đó từ trước.
Khó khăn thì rõ ràng: làm sao chúng ta chia sẻ khóa một cách an toàn ngay từ đầu? Nếu tôi gửi bằng email, có thể bị chặn. Nếu nhắn tin, cũng vậy. Nếu bỏ trong phong bì kín và gửi bưu điện, điều đó có thể phù hợp cho một vài trường hợp đơn lẻ, nhưng chậm, tốn kém và không phải lúc nào cũng tin cậy.
Điều này tạo ra vòng luẩn quẩn:
Mã hóa đối xứng hoạt động tốt khi chỉ có vài người và cách trao đổi khóa đáng tin cậy từ trước. Nhưng trên internet mở, nó nhanh chóng thất bại.
Hãy tưởng tượng một trang web cần kết nối riêng tư với hàng triệu khách truy cập. Với chỉ các khóa đối xứng, trang web sẽ cần một khóa bí mật khác cho mỗi khách, chưa kể cách an toàn để chuyển từng khóa. Số lượng khóa và công việc xử lý (tạo, lưu trữ, xoay vòng, thu hồi) trở thành gánh nặng vận hành lớn.
Không có nghĩa là mã hóa đối xứng “xấu.” Nó xuất sắc ở việc nó làm: mã hóa nhanh, hiệu quả cho lượng lớn dữ liệu (như phần lớn dữ liệu gửi qua HTTPS). Vấn đề trước Diffie không phải là tốc độ—mà là thiếu mảnh ghép thực tế: cách để những người lạ thỏa thuận một bí mật mà không cần chia sẻ trước.
Đầu những năm 1970, giao tiếp an toàn phần lớn có nghĩa là bí mật chung. Nếu hai người muốn mã hóa, họ cần cùng một khóa bí mật—và họ phải tìm cách trao đổi an toàn trước đó. Giả định đó phù hợp cho môi trường nhỏ, kiểm soát, nhưng không mở rộng cho thế giới nơi những người lạ cần liên hệ an toàn.
Whitfield Diffie là một nhà nghiên cứu trẻ quan tâm đến quyền riêng tư và giới hạn thực tế của mật mã thời đó. Ông hợp tác với Martin Hellman tại Stanford; công trình của họ chịu ảnh hưởng từ quan tâm học thuật đang tăng lên về bảo mật máy tính và mạng—những lĩnh vực bắt đầu chuyển từ hệ thống cô lập sang kết nối.
Đây không phải câu chuyện thiên tài đơn độc mà là ý tưởng đúng gặp môi trường đúng: các nhà nghiên cứu trao đổi, thử nghiệm tư duy và đặt câu hỏi về những giới hạn “hiển nhiên” mà nhiều người đã chấp nhận suốt vài thập kỷ.
Đột phá của Diffie và Hellman là ý tưởng rằng mã hóa có thể dùng hai khóa liên quan thay vì một bí mật chung:
Sức mạnh không chỉ ở việc có hai khóa—mà ở chỗ chúng có vai trò khác nhau. Khóa công khai thiết kế để phân phối an toàn, trong khi khóa riêng để kiểm soát và độc quyền.
Điều này định hình lại vấn đề chia sẻ khóa. Thay vì sắp xếp một cuộc gặp bí mật (hoặc người đưa thư đáng tin cậy) để trao đổi một khóa, bạn có thể công bố một khóa công khai rộng rãi và vẫn giữ an ninh.
Sự thay đổi này—từ “phải gặp nhau trước” sang “có thể bắt đầu an toàn bằng thông tin công khai”—là nền tảng khái niệm sau này cho phép duyệt web an toàn, nhắn tin mã hóa và hệ thống nhận dạng số hiện đại.
Diffie–Hellman (DH) là một phương thức thông minh để hai người tạo cùng một bí mật chung ngay cả khi mọi thông điệp của họ đều có thể bị xem. Bí mật chung đó sau đó có thể dùng làm khóa đối xứng để mã hóa một cuộc trò chuyện.
Hãy nghĩ DH như trộn các nguyên liệu theo cách dễ thực hiện thuận chiều, nhưng cực kỳ khó để “tách” lại. Công thức dùng:
Kẻ nghe lén có thể thấy tham số công khai và hai giá trị công khai trao đổi. Những gì họ không thể làm được là phục hồi được bất kỳ giá trị bí mật nào—hoặc tính được bí mật chung—từ những mẩu công khai đó nếu tham số được chọn tốt. Việc khôi phục lại quá trình sẽ đòi hỏi năng lực tính toán phi thực tế.
DH không tự mã hóa tin nhắn—nó tạo khóa chung để mã hóa đối xứng nhanh, sử dụng hàng ngày.
Mật mã khóa công khai hoạt động vì một số phép toán mang tính bất đối xứng: thực hiện theo một chiều thì dễ, nhưng đảo ngược mà không có mảnh thông tin đặc biệt thì cực kỳ khó.
Một mô hình hữu ích là “hàm một chiều.” Hãy tưởng tượng một máy biến một đầu vào thành đầu ra nhanh chóng. Ai cũng có thể chạy máy, nhưng chỉ có đầu ra thì rất khó đoán đầu vào ban đầu.
Trong mật mã, chúng ta không dựa vào bí mật của máy. Ta dựa vào việc đảo ngược đòi hỏi giải một bài toán khó—một bài toán người ta tin rằng cần lượng tính toán không thực tế.
“Khó” không có nghĩa là không bao giờ có thể. Nó nghĩa là:
Vì vậy, an ninh dựa trên giả định (những gì các nhà toán học và mật mã học tin về các bài toán này) cộng với thực tiễn (kích thước khóa, triển khai an toàn và tiêu chuẩn cập nhật).
Nhiều toán công khai xảy ra “theo mô-đun”—hãy nghĩ nó như một cái đồng hồ.
Trên đồng hồ 12 giờ, nếu là 10 giờ và bạn cộng 5 giờ, bạn không được 15; bạn quấn vòng về 3. Hành vi quấn vòng này là toán mô-đun.
Với các số lớn, các phép toán “quấn vòng” lặp lại có thể tạo ra các kết quả trông như bị xáo trộn. Làm thuận chiều thì nhanh; làm ngược chiều (tìm ra bắt đầu) có thể rất chậm trừ khi bạn biết một đường tắt bí mật—như khóa riêng.
Khoảng cách dễ-làm/khó-đảo ngược này là động cơ đằng sau trao đổi khóa và chữ ký số.
Khi bạn thấy biểu tượng ổ khóa trên trình duyệt, bạn thường đang dùng HTTPS: một kết nối mã hóa giữa thiết bị của bạn và một trang web. Web không thể mở rộng đến hàng tỷ kết nối an toàn nếu mỗi trình duyệt phải chia sẻ khóa bí mật với mỗi máy chủ trước đó.
Mã hóa khóa công khai giải quyết vấn đề “gặp lần đầu”: nó cho phép trình duyệt thiết lập an toàn một bí mật chung với máy chủ chưa từng gặp trước.
Bắt tay TLS hiện đại là một đàm phán nhanh thiết lập riêng tư và độ tin cậy:
Các phép toán khóa công khai chậm hơn và thiết kế cho thỏa thuận và xác thực, không phải cho dữ liệu khối lớn. Khi TLS đã thiết lập khóa phiên, nó chuyển sang mã hóa đối xứng nhanh (như AES hoặc ChaCha20) để bảo vệ mọi thứ bạn gửi—yêu cầu trang, mật khẩu và cookie.
Nếu bạn muốn lời giải thích đơn giản về khác biệt giữa HTTP và HTTPS, tham khảo các tài liệu cơ bản về HTTPS và HTTP.
Một chữ ký số là công cụ khóa công khai để làm cho một tin nhắn trở nên có thể chứng minh. Khi ai đó ký một tập tin hoặc tin nhắn bằng khóa riêng, bất kỳ ai cũng có thể xác minh chữ ký bằng khóa công khai tương ứng.
Một chữ ký hợp lệ chứng minh hai điều:
Hai ý tưởng này thường bị lẫn:
Bạn có thể làm một mà không cần cái kia. Ví dụ, một thông báo công khai có thể được ký (để mọi người tin tưởng) mà không bị mã hóa (vì ai cũng nên đọc được).
Chữ ký số xuất hiện ở những nơi bạn có thể dùng hàng ngày:
Ưu điểm chính là xác minh không yêu cầu chia sẻ bí mật. Người ký giữ khóa riêng mãi mãi bí mật, trong khi khóa công khai có thể phân phối rộng rãi. Sự tách biệt này—riêng cho ký, công khai cho xác minh—cho phép người lạ xác thực thông điệp ở quy mô mà không cần sắp xếp mật khẩu hay khóa chung trước.
Mã hóa đối xứng sử dụng một khóa bí mật chung để mã hóa và giải mã. Nó nhanh và rất phù hợp cho dữ liệu lớn, nhưng có vấn đề khi thiết lập: bạn cần một cách an toàn để chia sẻ khóa đó trước.
Mã hóa khóa công khai tách vai trò thành khóa công khai (có thể chia sẻ) và khóa riêng (giữ bí mật), điều này cho phép “liên lạc an toàn lần đầu” mà không cần bí mật được chia sẻ trước.
Nó giải quyết vấn đề phân phối khóa: hai người lạ có thể bắt đầu liên lạc an toàn qua mạng có thể bị quan sát mà không cần gặp nhau để trao đổi một khóa bí mật.
Sự thay đổi này làm cho bảo mật ở quy mô internet trở nên khả thi cho:
Diffie–Hellman (DH) là một phương pháp để tạo bí mật chung qua kênh công cộng.
Trong thực tế:
DH tự nó không mã hóa tin nhắn; nó giúp các bên đồng thuận về khóa sẽ dùng để mã hóa.
Không tự nó. DH thuần túy cung cấp thỏa thuận khóa, nhưng không chứng minh bạn đang nói chuyện với ai.
Để ngăn tấn công trung gian, DH thường được kết hợp với xác thực, ví dụ:
TLS dùng mật mã khóa công khai chủ yếu cho xác thực và thỏa thuận khóa trong quá trình bắt tay, sau đó chuyển sang khóa đối xứng cho dữ liệu.
Một nhìn đơn giản:
Chữ ký số cho phép ai đó chứng minh họ tạo ra một nội dung và nội dung đó không bị thay đổi.
Các ứng dụng phổ biến:
Bạn dùng khóa công khai để kiểm tra; chỉ người giữ khóa riêng mới tạo được chữ ký hợp lệ.
Chứng chỉ kết hợp một khóa công khai với một danh tính (ví dụ tên trang web) bằng chữ ký của một tổ chức được tin cậy.
Trình duyệt tin chứng chỉ vì nó có thể xây dựng một chuỗi từ chứng chỉ trang web qua các chứng chỉ trung gian lên tới một CA gốc tin cậy được cài sẵn trong hệ điều hành/trình duyệt.
Về mặt vận hành, đây là lý do vì sao gia hạn chứng chỉ, cấu hình hostname chính xác và xác thực đúng là quan trọng để HTTPS hoạt động ổn định.
Các ứng dụng mã hóa đầu-cuối vẫn cần một cách để thiết lập khóa chung giữa các thiết bị chưa từng trao đổi bí mật trước đó.
Họ thường dùng các trao đổi kiểu DH (thường là trên đường cong elliptic) để:
Passkey (FIDO2/WebAuthn) thay thế đăng nhập bằng mật khẩu bằng thử thách–phản hồi có chữ ký.
Trong thực tế:
Điều này giảm rủi ro lừa đảo và tái sử dụng thông tin đăng nhập vì không có bí mật có thể gõ lại vào form để bị đánh cắp.
Hầu hết lỗi là do triển khai và vận hành, chứ không phải toán học lõi.
Những sai sót phổ biến:
Nguyên tắc thực tế: dùng thư viện đã được đánh giá, mặc định an toàn, và coi quản lý khóa là yêu cầu hệ thống quan trọng.