Gần đây tôi đã biết về sàn giao dịch McCallum-Relyea cho phép một phương thức ký quỹ khóa mà không thực sự truyền khóa.
Nó được phát triển tại RedHat và được sử dụng bởi tang và khoan các tiện ích (và được mô tả thêm đây) để cho phép giải mã tự động, đặc biệt đối với phân vùng gốc được mã hóa cho các máy Linux. Vì vậy, máy khách chỉ có thể khởi động và giải mã đĩa của nó nếu nó ở trên mạng nơi nó có thể truy cập vào máy chủ.
Tôi chưa tìm thấy bất kỳ phân tích nào về giao thức này nên tôi băn khoăn không biết nó cung cấp mức độ bảo mật nào so với phương pháp thông thường hơn, chẳng hạn như máy chủ lưu trữ khóa và truyền khóa qua kênh TLS, đồng thời liệu có bất kỳ sai sót nào trong trao đổi có thể được khai thác.
Trao đổi là phiên bản sửa đổi/mở rộng của ECDH có chức năng như sau:
Trước tiên, phía máy chủ tạo cặp khóa EC tồn tại lâu dài với khóa riêng $s$ và khóa công khai $S = [s]G$.
Khách hàng, muốn bảo vệ một tin nhắn $M$, tạo khóa riêng $c$ và khóa công khai $C = [c]G$. Sau đó, máy khách yêu cầu một khóa từ máy chủ qua kênh văn bản gốc. Máy chủ phản hồi với $S$ đã ký với $s$. Người dùng phía máy khách xác thực khóa máy chủ thông qua một số phương thức ngoài băng tần và ghi lại hàm băm của khóa máy chủ. Sau đó, khách hàng thực hiện một nửa trao đổi ECDH để mang lại $K = [c]S = [cs]G$. $K$ sau đó được sử dụng (trực tiếp hoặc gián tiếp) để mã hóa $M$ thông qua một mật mã đối xứng, sau đó khách hàng loại bỏ $K$ và $c$ và chỉ giữ lại $C$. Tại thời điểm này, khách hàng không thể giải mã $M$ không có máy chủ.
Khi khách hàng muốn giải mã $M$, nó tạo ra một cặp khóa tạm thời $e$ và $E = [e]G$, sau đó tính toán $X = C + E$ và gửi $X$ đến máy chủ. Sau đó, máy chủ thực hiện một nửa trao đổi ECDH với $X$ và $s$ để tạo ra $Y = [s]X$ và truyền $Y$ quay lại máy khách, sử dụng $S$ để ký tin nhắn.
đã nhận được $Y$ từ máy chủ và xác thực chữ ký của máy chủ, sau đó máy khách sẽ thực hiện một nửa ECDH khác với $S$ và $e$ tính toán $Z = [e]S$. Khách hàng sau đó tính toán:
Y - Z = sX - eS
= s(C + E) - eS
= sC + sE - eS
= scG + seG - esG
= scG
= K
để phục hồi $K$ và giải mã $M$.