ECDH được biết đến như một Cơ chế đóng gói chính, như bạn đã đề cập, tương tự như mã hóa khóa công khai, nhưng không giống nhau.
Có nhiều lý do để thích KEM hơn, tôi sẽ nhanh chóng đề cập đến một lý do.
Đầu tiên, lưu ý rằng KEM (chính thức) là một bộ gồm ba thuật toán $(\mathsf{KGen}, \mathsf{Encaps}, \mathsf{DCaps})$, ở đâu
$\mathsf{KGen}$ lấy làm đầu vào một số tham số bảo mật $1^\lambda$và xuất ra một cặp khóa $(sk, pk)$
$\mathsf{Encaps}$ lấy làm đầu vào là khóa công khai $pk$ (và có lẽ là một số ngẫu nhiên, thường chỉ ẩn) và trả về một cặp $(k, c)$ của một khóa dẫn xuất $k$, và "bản mã" $c$
$\mathsf{Decaps}$ lấy làm đầu vào là khóa bí mật $sk$ và "bản mã" $c$và xuất ra một khóa dẫn xuất khác $k'$.
KEM đúng nếu $k = k'$ cuối cùng, ví dụ: hai khóa dẫn xuất đồng ý.
Khái niệm bảo mật của KEM tương tự như của PKE, nghĩa là có một cách tự nhiên để mở rộng các khái niệm truyền thống về bảo mật IND-CPA/IND-CCA.
Lưu ý rằng người ta có thể tạo KEM bằng bất kỳ PKE nào, bằng cách có $\mathsf{Encaps}_{pk}(r) = \mathsf{Enc}_{pk}(r)$, ở đâu $r$ là tính ngẫu nhiên được sử dụng bởi KEM (đây là ý tưởng "mã hóa các khóa ngẫu nhiên thống nhất" mà bạn đã đề cập).
Có lẽ chúng ta nên viết rõ ràng $\mathsf{Enc}_{pk}(f(r))$ là một số chức năng của tính ngẫu nhiên --- Tôi sẽ không bận tâm đến điều này rõ ràng.
Vậy tại sao lại quan tâm đến KEM?
Trong khi có những điều khác bạn có thể đề cập, một lớn lao điểm là có một số thuộc tính nhất định mà KEM "tự nhiên" (chẳng hạn như ECDH) có mà KEM được xây dựng từ phương pháp "mã hóa khóa ngẫu nhiên" làm được không phải có.
Điều này có nghĩa là ECDH không "chỉ" là một KEM và có thể được sử dụng trong các ứng dụng mà mã hóa các khóa ngẫu nhiên không hoạt động.
Có lẽ tài sản rõ ràng nhất để trỏ đến là "không tương tác".
Cụ thể, ECDH có thể được viết là
- cả hai bên trao đổi cặp khóa diffie hellman $(g, g^{s_i})$, và sau đó
- tính toán một số chức năng đơn giản của các cặp khóa này.
Nếu chúng ta cố gắng viết điều này với cú pháp của KEM, chúng ta có thể nói rằng $\mathsf{KGen}(1^\lambda)$ tạo ra một cặp khóa $(g, s_0, g^{s_0})$, và đó $\mathsf{Encaps}_{g^{s_0}}(r) = (g, s_1, g^{s_1})$ tạo ra một cặp khóa khác, nơi chúng tôi mô hình hóa "bản mã" là $g^{s_1}$.
cái này có một rất tài sản tò mò mặc dù --- $g^{s_1}$, "bản mã" của sơ đồ, không không phải hoàn toàn phụ thuộc vào khóa chung (ngoài thông qua trình tạo nhóm $g$, có thể được chuẩn hóa thành tham số công khai).
Đây là một thuộc tính khá đáng ngạc nhiên và là thuộc tính mà lược đồ "mã hóa khóa ngẫu nhiên" không có.
Nó được gọi là sơ đồ Trao đổi khóa không tương tác (NIKE).
Tài sản là cả
hữu ích trong thực tế --- "bánh cóc kép" của Tín hiệu sử dụng thuộc tính này theo một cách quan trọng, điều này khiến cho việc "bỏ vào" một KEM khác để sử dụng cho tín hiệu trở nên khó khăn và
về mặt lý thuyết là không tầm thường --- nói chung, việc xây dựng NIKE yêu cầu một số nguyên thủy lạ mắt như mã hóa FHE/Chức năng. Có những kết quả đã biết cho thấy rằng có lẽ không thể xây dựng NIKE bằng cách sử dụng lưới (và mã hợp lý) với "tham số nhỏ".
Trên thực tế (không bao gồm các sơ đồ dựa trên mạng có tham số lớn), tôi chỉ biết về một NIKE hậu lượng tử, đó là CSIDH.Điều này có nghĩa là một sửa đổi đơn giản của Tín hiệu thành hậu lượng tử
- sử dụng CSIDH,
- sử dụng một biến thể kém hiệu quả hơn của sơ đồ NIST PQC (giả sử sơ đồ dựa trên mạng với các tham số nhỏ) hoặc
- tự sửa đổi giao thức Signal theo một cách nào đó, thường là đạt được một số hiệu quả nhất định.
Mặc dù có nhiều điều sắc thái hơn mà bạn có thể nói để so sánh PKE và KEM, nhưng về mặt lý thuyết thì có một rất lợi ích lớn cho ECDH --- đó là một NIKE hiệu quả, điều này hoàn toàn không phổ biến.