Việc xây dựng không thể được thực hiện an toàn CCA
Thuật toán mà bạn đã viết không cho biết cách thuật toán giải mã lấy khóa xác minh chữ ký.
Nếu khóa xác minh là một phần của khóa chung, thì không ai có thể mã hóa vì không ai có quyền truy cập vào khóa ký (như Mark đã quan sát trong các nhận xét ở trên). Ngoài ra, điều này dường như không phù hợp với đề xuất sử dụng chữ ký một lần của bạn.
Nếu khóa xác minh được bao gồm trong bản mã (rõ ràng), thì điều này cũng không hoạt động. Bây giờ bản mã có dạng $$(c=\textsf{Enc}(pk,m), vk, \sigma=\textsf{Sign}(sk,c\|vk))$$ ở đâu $(sk,vk)$ là một cặp khóa chữ ký một lần. Tôi có thể lấy một bản mã ở dạng này, sửa đổi $c$ trong bất kỳ cách nào, và thay thế $vk,\sigma$ Với riêng tôi $vk',\sigma'$ mà tôi tạo ra. Điều này cho phép tôi trực tiếp thực hiện bất kỳ cuộc tấn công bản mã đã chọn nào chống lại $\textsf{Enc}$ trên sơ đồ mới này.
Nếu khóa xác minh nằm trong mã hóa, điều này sẽ tốt hơn nhưng vẫn không an toàn. Bây giờ bản mã có dạng $$(c=\textsf{Enc}(pk,m\|vk), \sigma=\textsf{Sign}(sk,c))$$ Mục tiêu là chương trình mới an toàn với CCA cho không tí nào lựa chọn bảo mật CPA $\textsf{Enc}$. Tuy nhiên, có thể xây dựng sơ đồ bảo mật CPA bệnh lý, trong đó có thể thay đổi $\textsf{Enc}(pk,m\|vk)$ vào trong $\textsf{Enc}(pk,m\|vk')$ bất cứ gì $vk'$ của sự lựa chọn của kẻ tấn công, và không có kiến thức về $m$ hoặc $vk$. Vì vậy, một cuộc tấn công CCA vào sơ đồ mới liên quan đến việc thay đổi $c$ vào trong $c'$ theo cách này, với $vk'$ được lựa chọn bởi kẻ tấn công.Sau đó, kẻ tấn công có thể tạo chữ ký chính xác trên mới $c'$ và yêu cầu nó được giải mã để tiết lộ $m$.
Không có cấu trúc "đơn giản" biên dịch bảo mật CPA thành CCA
Có một vấn đề mở nổi tiếng trong mật mã học:
Có cấu trúc hộp đen của sơ đồ mã hóa khóa công khai bảo mật CCA từ sơ đồ mã hóa khóa công khai bảo mật CPA tùy ý, trong mô hình đơn giản không?
Có thể xây dựng lược đồ bảo mật CCA từ lược đồ bảo mật CPA nếu chúng ta thay đổi các tham số của bài toán mở này:
Nếu chúng ta rời khỏi mô hình đơn giản và cho phép các tiên tri ngẫu nhiên, thì phép biến đổi Fujisaki-Okamoto đạt được bảo mật CCA.
Nếu chúng tôi cho phép các cấu trúc không phải hộp đen, thì chúng tôi có thể đạt được bảo mật CCA bằng cách sử dụng phép biến đổi Naor-Yung. Không phải hộp đen có nghĩa là sơ đồ bảo mật CCA bằng cách nào đó sử dụng mã nguồn của chương trình bảo mật CPA. Trong trường hợp của Naor-Yung, bạn cần mã nguồn của sơ đồ bảo mật CPA để chứng minh tuyên bố không có kiến thức về các bản mã.
Có một số tiến bộ một phần chứng minh vấn đề mở này -- đặc biệt, không thể có cấu trúc như vậy nếu thuật toán giải mã CCA không sử dụng thuật toán mã hóa CPA.
Các kỹ thuật bạn sử dụng trong câu hỏi này đều là hộp đen và do đó không có khả năng hữu ích trong việc xây dựng sơ đồ bảo mật CCA.
Các kỹ thuật tương tự hoạt động nếu kế hoạch CPA dựa trên danh tính
Công trình của bạn làm tôi nhớ đến Biến đổi Canetti-Halevi-Katz từ một CPA an toàn dựa trên danh tính lược đồ sang lược đồ bảo mật CCA (không dựa trên danh tính).
Để cho $\textsf{Enc}(pk,id,m)$ biểu thị mã hóa dựa trên danh tính (IBE) của $m$ để nhận dạng $id$, sử dụng các tham số toàn cục công khai $pk$. Khi đó công thức CHK là:
$$ \textsf{Enc}^*(pk,m) = (vk, c = \textsf{Enc}(pk, vk, m), \sigma = \textsf{Sign}(sk,c)) $$
Nói cách khác, để mã hóa:
- tạo cặp khóa chữ ký một lần $(sk,vk)$.
- mã hóa bản rõ bằng IBE, sử dụng $vk$ như danh tính
- ký bản mã IBE với $sk$
- cho $vk$, bản mã IBE và chữ ký
Kết quả là bảo mật CCA và trực giác sơ bộ là IBE bảo mật CPA có thể dễ uốn đối với văn bản gốc, nhưng nó phải không dễ uốn đối với văn bản gốc. bản sắc.