Quy trình tạo và mở phong bì số (Digital Envelope)
1. Tổng quan
A. Định nghĩa
Là kỹ thuật mật mã lai (Hybrid Cryptography) kết hợp hiệu năng mã hóa nhanh của khóa đối xứng với khả năng phân phối khóa an toàn của khóa công khai: dữ liệu được mã hóa bằng khóa phiên đối xứng, còn riêng khóa phiên đó được mã hóa bằng khóa công khai của người nhận rồi gửi kèm.
Phong bì số trở nên rõ ràng khi hiểu theo đúng phép ẩn dụ "phong bì" trong tên gọi. Nội dung thư (bản rõ) được khóa bằng một ổ khóa rẻ và nhanh (khóa phiên đối xứng), còn chìa khóa của ổ khóa đó (khóa phiên) được đặt vào một phong bì đặc biệt mà chỉ người nhận mới mở được (khóa công khai của người nhận) rồi gửi đi cùng. Nhờ vậy, dữ liệu khối lượng lớn được xử lý bằng khóa đối xứng nhanh, trong khi chính bài toán khó là chuyển giao khóa lại được giải quyết an toàn bằng khóa công khai. Nói cách khác, điểm cốt lõi là phong bì số không phải một thuật toán mật mã mới, mà là thiết kế mang tính giao thức, kết hợp hai loại mật mã đã được kiểm chứng theo đúng vai trò.
B. Bối cảnh xuất hiện và sự cần thiết
Mật mã khóa đối xứng (AES, v.v.) nhanh và phù hợp với dữ liệu lớn, nhưng điểm yếu căn bản là bài toán phân phối khóa (Key Distribution Problem): bên gửi và bên nhận phải chia sẻ trước cùng một khóa. Gửi thẳng khóa đối xứng qua mạng sẽ bị nghe lén, còn việc chia sẻ an toàn từ trước là phi thực tế trong truyền thông quy mô lớn. Bài toán bùng nổ số khóa, khi có n đối tác liên lạc thì cần n(n-1)/2 khóa khác nhau, cũng bắt nguồn từ đây. Ngược lại, mật mã khóa công khai (RSA, v.v.) chỉ cần biết khóa công khai của đối phương nên việc phân phối khóa rất gọn, nhưng phép lũy thừa mô-đun nặng nề khiến nó quá chậm để mã hóa trực tiếp dữ liệu lớn. Thông thường, RSA được biết là chậm hơn AES hàng trăm đến hàng nghìn lần khi xử lý cùng lượng dữ liệu, nên mã hóa toàn bộ tệp bằng RSA không phải lựa chọn thực tế.
Phong bì số bù trừ nhược điểm của hai phương thức bằng phân công vai trò: "mã hóa nhanh do khóa đối xứng đảm nhận, trao đổi khóa an toàn do khóa công khai đảm nhận". Nhờ cấu trúc này, dù lượng dữ liệu thực sự được mã hóa lớn đến đâu, phép toán khóa công khai chỉ được dùng một lần cho một khóa phiên ngắn (ví dụ: 256 bit), nên gánh nặng hiệu năng được giảm tối thiểu. Dù dữ liệu là 1GB hay 1TB, đối tượng của phép toán khóa công khai nặng nề luôn chỉ là một khóa phiên dài vài chục byte — đó là lý do quyết định giúp phong bì số có tính thực tiễn.
C. Đặc điểm
Đặc điểm của phong bì số là đồng thời đạt được hiệu năng và an toàn, cô lập rủi ro nhờ khóa phiên dùng một lần, và khả năng mở rộng khi kết hợp với chữ ký số. Bằng cách tạo mới rồi hủy khóa phiên cho mỗi lần liên lạc, dù khóa của một phiên bị lộ thì các phiên khác không bị ảnh hưởng; và nếu gắn thêm chữ ký số vào cấu trúc phong bì, có thể cung cấp không chỉ tính bảo mật mà cả tính toàn vẹn, xác thực và chống chối bỏ trong một thông điệp duy nhất.
2. Cấu trúc tổng thể
Điểm cốt lõi để hiểu cấu trúc tổng thể của phong bì số là "hai phép mã hóa được áp dụng cho hai đối tượng khác nhau". Một là mã hóa đối xứng đối với bản rõ, hai là mã hóa khóa công khai đối với chính khóa đối xứng (khóa phiên) đó. Sơ đồ cấu trúc dưới đây cho thấy bức tranh tổng thể, trong đó hai nhánh mã hóa ở phía người gửi được gộp thành một phong bì.
flowchart LR
subgraph Sender["Người gửi"]
M["Bản rõ (dung lượng lớn)"] -->|"Mã hóa đối xứng bằng khóa phiên"| C["Bản mã"]
K["Tạo khóa phiên (dùng một lần)"] -->|"Mã hóa bằng khóa công khai người nhận"| EK["Khóa phiên đã mã hóa"]
end
C --> ENV["Phong bì số"]
EK --> ENV
ENV -->|"Truyền qua mạng"| RCV["Người nhận"]
Điều đáng chú ý trong sơ đồ là tính bất đối xứng. Dữ liệu (bản rõ) lớn và cần xử lý nhanh nên do khóa đối xứng đảm nhận, còn khóa (khóa phiên) nhỏ nhưng cần được chuyển giao an toàn nên do khóa công khai đảm nhận. Hai nhánh này được gói thành một phong bì (bản mã + khóa phiên đã mã hóa) để truyền đi. Người nhận chỉ cần nhận một phong bì này là có đủ mọi nguyên liệu cần cho giải mã mà không cần chia sẻ khóa trước — đó là nguyên lý giúp phong bì số hiện thực hóa "liên lạc an toàn không cần chia sẻ trước".
3. Quy trình tạo (người gửi)
Điểm cốt lõi là mỗi lần đều tạo mới khóa phiên. Khóa phiên là khóa đối xứng tạm thời chỉ dùng cho một lần liên lạc rồi hủy, nên dù bị lộ cũng không ảnh hưởng đến các lần liên lạc trong quá khứ · tương lai, qua đó nâng cao tính an toàn. Nhờ tính chất dùng một lần này, ngay cả khi khóa phiên của một phiên bị đánh cắp vì lý do nào đó, thiệt hại cũng chỉ giới hạn trong phiên đó.
Sơ đồ quy trình dưới đây thể hiện thứ tự người gửi tạo phong bì. Việc tạo khóa phiên, mã hóa bản rõ và mã hóa khóa phiên nối tiếp nhau tuần tự và cuối cùng được kết hợp thành một phong bì.
flowchart TD
S1["1. Tạo khóa phiên dùng một lần (khóa đối xứng)"] --> S2["2. Mã hóa đối xứng bản rõ bằng khóa phiên → bản mã"]
S2 --> S3["3. Mã hóa khóa phiên bằng khóa công khai người nhận → khóa phiên đã mã hóa"]
S3 --> S4["4. Kết hợp bản mã + khóa phiên đã mã hóa → phong bì số"]
S4 --> S5["5. Gửi phong bì số"]
Thứ nhất, ở bước tạo khóa phiên, tạo một khóa đối xứng tạm thời dựa trên số ngẫu nhiên không thể dự đoán. Vì chất lượng số ngẫu nhiên chính là chất lượng bảo mật, phải dùng bộ sinh số ngẫu nhiên an toàn về mặt mật mã (CSPRNG). Nếu số ngẫu nhiên yếu, khóa phiên có thể bị đoán ra và việc bọc nó kỹ đến đâu bằng khóa công khai cũng trở nên vô nghĩa.
Thứ hai, ở bước mã hóa đối xứng bản rõ, dùng khóa phiên vừa tạo để mã hóa nhanh bản rõ dung lượng lớn. Đây là phần đảm nhận hiệu năng của phong bì số; dù dữ liệu lớn, thông lượng của mật mã đối xứng cao nên vẫn đáp ứng được cả liên lạc thời gian thực.
Thứ ba, bước mã hóa khóa phiên bằng khóa công khai đảm nhận tính an toàn. Vì khóa phiên được mã hóa bằng khóa công khai của người nhận, khóa phiên đã mã hóa này chỉ có thể giải bằng khóa riêng của người nhận. Do đó, dù phong bì bị chặn giữa đường, bên thứ ba không có khóa riêng không lấy được khóa phiên, và không có khóa phiên thì cũng không giải được bản mã.
Thứ tư · thứ năm, ở bước kết hợp và truyền, bản mã và khóa phiên đã mã hóa được gói làm một để gửi đi. Lý do gửi cả hai cùng nhau là để người nhận nhận được một lần mọi nguyên liệu cần cho giải mã (bản mã + khóa phiên đã được bọc). Ở đây cần nhấn mạnh nhiều lần rằng thứ nằm trong phong bì là "khóa phiên đã được bọc" chứ không phải khóa phiên gốc. Khóa phiên gốc chỉ tồn tại tạm thời trong bộ nhớ người gửi rồi bị hủy sau khi dùng, nên trên mạng tuyệt đối không có khóa phiên ở dạng bản rõ bị lộ. Đây là điểm làm nên nghịch lý "gửi khóa đi kèm mà vẫn an toàn".
| Thứ tự | Nội dung | Lý do |
|---|---|---|
| 1 | Tạo khóa phiên (khóa đối xứng) dùng một lần | Dùng một lần cho mỗi lần liên lạc → giảm thiểu thiệt hại khi bị lộ |
| 2 | Mã hóa đối xứng bản rõ bằng khóa phiên → bản mã | Xử lý nhanh dữ liệu lớn |
| 3 | Mã hóa khóa phiên bằng khóa công khai người nhận | Để chỉ người nhận giải được bằng khóa riêng |
| 4 | Gửi bản mã + khóa phiên đã mã hóa = phong bì số | Chuyển giao dữ liệu và khóa cùng nhau |
4. Quy trình mở (người nhận)
Việc mở là thứ tự đảo ngược chính xác của việc tạo. Người nhận trước tiên dùng khóa riêng chỉ mình có để lấy khóa phiên trong phong bì ra, rồi dùng khóa phiên đó giải mã đối xứng bản mã để khôi phục bản rõ. Nhờ tính chất của mật mã khóa công khai là thứ đã khóa bằng khóa công khai chỉ mở được bằng khóa riêng tương ứng, bên thứ ba chặn được phong bì giữa đường không có khóa riêng nên không lấy được khóa phiên. Không lấy được khóa phiên thì bản mã, vốn được khóa chắc chắn bằng khóa đối xứng, không thể bị giải.
Phân rã thứ tự như sau. Trước tiên, người nhận dùng khóa riêng của mình giải mã phần "khóa phiên đã mã hóa" trong phong bì nhận được để khôi phục khóa phiên ban đầu. Bước này thành công đồng nghĩa với việc phong bì này được tạo ra với chính mình là người nhận được chỉ định. Tiếp theo, dùng khóa phiên đã khôi phục để giải mã đối xứng bản mã thì bản rõ ban đầu được trả lại nguyên vẹn. Vì giải mã bằng khóa riêng chỉ áp dụng cho một khóa phiên ngắn, gánh nặng của phép toán khóa công khai nặng nề cũng được giảm tối thiểu ở phía mở.
| Thứ tự | Nội dung |
|---|---|
| 1 | Giải mã khóa phiên đã mã hóa bằng khóa riêng người nhận → lấy được khóa phiên |
| 2 | Giải mã đối xứng bản mã bằng khóa phiên → khôi phục bản rõ |
5. Kết hợp chữ ký số (dịch vụ bảo mật)
Chỉ riêng phong bì số thì chỉ bảo đảm được tính bảo mật (che giấu nội dung). Nhưng liên lạc an toàn thực tế còn đòi hỏi "thông điệp này có bị giả mạo · sửa đổi không (tính toàn vẹn)", "có thực sự đúng người đó gửi không (xác thực)", "có thể chối bỏ việc đã gửi không (chống chối bỏ)". Chỉ với tính bảo mật, nội dung tuy được che giấu nhưng không bảo đảm được rằng nội dung đó là nguyên vẹn và thực sự do người đó gửi.
Để làm được điều này, người gửi gửi kèm phong bì một chữ ký số, tức giá trị băm của thông điệp được ký bằng khóa riêng của chính mình. Điều quan trọng ở đây là chiều sử dụng khóa hoàn toàn ngược với phong bì số. Phong bì số bọc bằng khóa công khai của người nhận để chỉ khóa riêng của người nhận mở được, còn chữ ký số ký bằng khóa riêng của người gửi để bất kỳ ai cũng kiểm tra được bằng khóa công khai của người gửi. Người nhận kiểm tra chữ ký bằng khóa công khai của người gửi; nếu chữ ký hợp lệ thì đồng thời xác nhận được rằng chủ sở hữu khóa riêng đó đã gửi (xác thực · chống chối bỏ) và giá trị băm của thông điệp khớp nên không bị sửa đổi (tính toàn vẹn).
| Dịch vụ | Cách hiện thực | Khóa sử dụng |
|---|---|---|
| Tính bảo mật | Phong bì số (mã hóa khóa phiên bằng khóa công khai người nhận) | Khóa công khai/khóa riêng người nhận |
| Tính toàn vẹn | So sánh giá trị băm của thông điệp | Hàm băm |
| Xác thực · chống chối bỏ | Ký số bằng khóa riêng người gửi, kiểm tra bằng khóa công khai | Khóa riêng/khóa công khai người gửi |
Như vậy, khi kết hợp phong bì số (dùng khóa người nhận) và chữ ký số (dùng khóa người gửi), có thể cung cấp 4 dịch vụ bảo mật chính: bảo mật · toàn vẹn · xác thực · chống chối bỏ trong một thông điệp duy nhất. Thực tế, các chuẩn bảo mật email như S/MIME · PGP sử dụng chính xác tổ hợp này, để một bức thư vừa được che giấu (bảo mật) vừa được ký (toàn vẹn · xác thực · chống chối bỏ) khi chuyển đi.
Thứ tự áp dụng cũng có hàm ý thực tiễn. Thông thường thứ tự "ký trước rồi mã hóa (Sign-then-Encrypt)" được khuyến nghị; làm như vậy chữ ký được giấu bên trong bản mã nên danh tính người ký không bị lộ ra ngoài. Ngược lại, nếu ký sau khi mã hóa, chữ ký nằm ở mặt ngoài phong bì và bên thứ ba có thể biết ai là người gửi. Như vậy, cùng các thành phần nhưng thuộc tính bảo mật thay đổi theo thứ tự kết hợp, nên thiết kế phong bì số phải xem xét không chỉ lựa chọn thuật toán mà cả thứ tự giao thức.
6. Tình huống áp dụng thực tế và so sánh với các khái niệm tương tự
Phong bì số không phải lý thuyết trừu tượng mà là khung xương thực tế của liên lạc an toàn chúng ta dùng hằng ngày. Thứ nhất, phương thức trao đổi khóa RSA trong TLS là cấu trúc phong bì số điển hình, trong đó máy khách mã hóa khóa phiên (chính xác là pre-master secret) bằng khóa công khai của máy chủ rồi gửi đi. Thứ hai, mã hóa email của S/MIME · PGP mã hóa nội dung bằng khóa phiên và bọc khóa phiên bằng khóa công khai người nhận để gửi. Thứ ba, khi phân phối an toàn cùng một tài liệu cho nhiều người nhận, nội dung chỉ được mã hóa một lần bằng khóa phiên, còn riêng khóa phiên được bọc nhiều lần bằng khóa công khai của từng người nhận rồi đính kèm, qua đó bảo đảm hiệu quả.
Ở đây cần chỉ ra sự khác biệt với khái niệm tương tự là phương thức thỏa thuận khóa (Key Agreement). Phong bì số (vận chuyển khóa, Key Transport) là phương thức người gửi tự tạo khóa phiên rồi bọc bằng khóa công khai người nhận để "chuyển giao", còn thỏa thuận khóa họ Diffie-Hellman (DH) là hai bên trao đổi giá trị của mỗi bên để "cùng tính toán" khóa phiên. Sự khác biệt này dẫn đến hệ quả quyết định đối với bí mật chuyển tiếp. Với phương thức vận chuyển khóa, nếu khóa riêng của máy chủ bị lộ về sau thì ngay cả khóa phiên của lưu lượng đã bị bắt giữ trong quá khứ cũng bị giải mã, còn với thỏa thuận khóa DH dùng khóa tạm thời cho mỗi phiên thì dù khóa riêng bị lộ cũng không thể khôi phục khóa phiên quá khứ. Vì lý do này, TLS hiện đại đã chuyển từ vận chuyển khóa RSA kiểu phong bì số sang thỏa thuận khóa họ DH.
Một khái niệm khác cần phân biệt là quan hệ với chữ ký số. Phong bì số và chữ ký số đều dùng mật mã khóa công khai nhưng mục đích và chiều khóa hoàn toàn ngược nhau. Phong bì số có mục đích "che giấu" nên bọc bằng khóa công khai người nhận, còn chữ ký số có mục đích "chứng minh" nên ký bằng khóa riêng người gửi. Người mới học dễ nhầm lẫn hai khái niệm vì cả hai đều dùng "một cặp khóa công khai và khóa riêng", nhưng chúng được phân biệt rõ bởi việc dùng cặp khóa của bên nào. Nếu tóm lại rằng cần tính bảo mật thì dùng cặp khóa của đối phương (người nhận), cần xác thực · chống chối bỏ thì dùng cặp khóa của mình (người gửi), sẽ tránh được nhầm lẫn trong bài thi.
7. Chuyên sâu — Bí mật chuyển tiếp và mật mã kháng lượng tử (PQC)
Cốt lõi từ góc nhìn Kỹ sư chuyên nghiệp (Professional Engineer) là chỉ ra "mắt xích yếu" của cấu trúc phong bì số nằm ở đâu. Tính an toàn của phong bì số phụ thuộc vào hai trục, đó là tính dùng một lần của khóa phiên và độ tin cậy của khóa công khai người nhận. Khóa phiên được tạo mới và cô lập cho mỗi lần liên lạc, nhưng phần khóa công khai bọc khóa phiên lại cố định trong thời gian tương đối dài nên trở thành mục tiêu tấn công.
Vấn đề thứ nhất là bí mật chuyển tiếp (PFS, Perfect Forward Secrecy). Phong bì số dựa trên vận chuyển khóa RSA có nguy cơ bị giải mã hồi tố cả lưu lượng quá khứ nếu khóa riêng của máy chủ bị lộ. Kẻ tấn công lưu trữ trước khối lượng lớn bản mã ("Harvest Now, Decrypt Later") rồi khi chiếm được khóa riêng về sau thì toàn bộ liên lạc quá khứ bị mở. Vì nguy cơ này, TLS 1.3 đã loại bỏ vận chuyển khóa RSA và chỉ cho phép thỏa thuận khóa họ ECDHE dùng khóa tạm thời, qua đó bảo đảm PFS theo mặc định.
Vấn đề thứ hai là mối đe dọa từ máy tính lượng tử. Phần khóa công khai mở phong bì (RSA · ECC) có thể bị vô hiệu hóa khi xuất hiện máy tính lượng tử quy mô lớn chạy thuật toán Shor. Ngay cả khi đó, bản thân khóa phiên đối xứng (AES) trong phong bì vẫn tương đối an toàn, nên nhiệm vụ cốt lõi là thay thế phần khóa công khai bọc khóa phiên bằng mật mã kháng lượng tử (PQC, Post-Quantum Cryptography). Trong xu hướng này, NIST của Mỹ đã chọn làm chuẩn ML-KEM (tên cũ CRYSTALS-Kyber), một cơ chế đóng gói khóa (KEM) dựa trên lưới, và hiện đang thảo luận về chuyển đổi lai, dùng đồng thời thuật toán hiện có và PQC. Các chi tiết như số hiệu chuẩn chính xác và thời điểm chấp thuận cần được xác nhận lại bằng tài liệu mới nhất.
Về chiến lược làm bài thi, sau khi trình bày chính xác quy trình tạo · mở phong bì số kèm sơ đồ, nếu bàn luận đồng thời lý do căn bản "vì sao phải lai (đánh đổi giữa hiệu năng và phân phối khóa)" và "hướng phát triển PFS · PQC", bài làm sẽ khác biệt rõ rệt so với bài chỉ học thuộc lòng.
8. Những điểm cần cân nhắc và hàm ý
- Quản lý gốc tin cậy (Root of Trust): Để bảo đảm khóa công khai người nhận thực sự là của người đó, cần tiền đề là hệ thống tin cậy dựa trên PKI · chứng chỉ (CA). Nếu không, khóa phiên sẽ bị đánh cắp qua tấn công xen giữa (MITM), trong đó kẻ tấn công ngụy trang khóa công khai của mình thành của người nhận.
- Vòng đời khóa và HSM: Để tạo, lưu giữ và hủy khóa riêng · khóa phiên an toàn, mô-đun bảo mật phần cứng (HSM) và quản lý vòng đời khóa có hệ thống là bắt buộc. Đặc biệt, khóa riêng của máy chủ gây thiệt hại lớn khi bị lộ nên đòi hỏi lưu trữ cách ly về mặt vật lý.
- Bảo đảm bí mật chuyển tiếp: Phương thức vận chuyển khóa RSA khiến cả lưu lượng quá khứ gặp nguy hiểm khi khóa riêng bị lộ, nên trong thiết kế mới nên chọn mặc định các phương thức thỏa thuận khóa cung cấp PFS như ECDHE.
- Chuẩn bị chuyển đổi sang kháng lượng tử: Để đối phó mối đe dọa "Harvest Now, Decrypt Later", với dữ liệu cần bảo mật dài hạn, phải xây dựng ngay từ bây giờ lộ trình chuyển đổi lai sang đóng gói khóa dựa trên PQC.
- Chất lượng số ngẫu nhiên và bảo mật khi hiện thực: Chất lượng số ngẫu nhiên dùng để tạo khóa phiên chính là cận dưới của toàn bộ bảo mật. Số ngẫu nhiên yếu và các lỗ hổng hiện thực như padding oracle có thể phá vỡ toàn bộ hệ thống dù thuật toán an toàn, nên bắt buộc phải dùng thư viện đã được kiểm chứng cùng padding · chế độ an toàn.
Tài liệu tham khảo
- NIST, "Post-Quantum Cryptography Standardization" — https://csrc.nist.gov/projects/post-quantum-cryptography
- IETF RFC 8446, "The Transport Layer Security (TLS) Protocol Version 1.3" — https://datatracker.ietf.org/doc/html/rfc8446
Tóm tắt một câu: Phong bì số là kỹ thuật lai mã hóa đối xứng nhanh bản rõ bằng khóa phiên dùng một lần và chỉ mã hóa khóa phiên đó bằng khóa công khai người nhận rồi gửi kèm; người nhận dùng khóa riêng giải khóa phiên để khôi phục, khi kết hợp với chữ ký số sẽ cung cấp 4 dịch vụ bảo mật · toàn vẹn · xác thực · chống chối bỏ, và đang phát triển theo hướng bí mật chuyển tiếp (PFS) · mật mã kháng lượng tử (PQC).