Điểm:2

Làm cách nào để chia sẻ khả năng giải mã cho những người khác có khóa công khai không được sử dụng trong quá trình mã hóa?

lá cờ br
Leo

như tiêu đề đã nói, ví dụ A sử dụng khóa công khai của B để mã hóa một tin nhắn và gửi cho B. Trong các giai đoạn sau, một thành viên mới C tham gia và B muốn cho C xem được tin nhắn đã mã hóa này (tức là đưa khả năng giải mã thành C). Làm cách nào để đạt được điều này mà không để A mã hóa lại tin nhắn bằng khóa chung của C?

Một cách tôi có thể nghĩ đến bây giờ là B giải mã tin nhắn trước và sử dụng khóa chung của C để mã hóa lại rồi gửi cho C. Nhưng có phương pháp nào yêu cầu ít thao tác hơn để chia sẻ khả năng giải mã cho C một cách tự động hơn không? ? Cảm ơn.

Eugene Styer avatar
lá cờ dz
Xem https://crypto.stackexchange.com/questions/86483/using-public-key-cryptography-with-multiple-recipients
Leo avatar
lá cờ br
Leo
Cảm ơn @EugeneStyer. Nhưng vấn đề của tôi ở đây là để cho những người khác tham gia sau, những người không sử dụng khóa chung lúc đầu cũng có thể đọc tin nhắn, điều này hơi khác một chút so với câu hỏi này khi yêu cầu mã hóa tin nhắn bằng cách sử dụng nhiều khóa chung của người nhận .
Eugene Styer avatar
lá cờ dz
Lý do tôi liên kết với câu hỏi cụ thể đó là để lưu ý rằng với mã hóa kết hợp, chúng tôi mã hóa tin nhắn một lần bằng AES (hoặc tương tự), sau đó sử dụng mã hóa công khai để gửi khóa AES. Vì vậy, thêm một người nhận khác chỉ có nghĩa là mã hóa khóa AES bằng khóa chung của người nhận mới. Thực tế là điều này xảy ra sau đó không tạo ra nhiều khác biệt.
Điểm:0
lá cờ us

Nếu bạn muốn C có thể giải mã bất kỳ thứ gì được gửi tới B, thì điều đơn giản nhất là đưa khóa giải mã của B cho C.

Ngoài ra còn có một cái gì đó gọi là mã hóa lại proxy đó cũng là trên tinh thần "đánh địa chỉ lại" một bản mã. Trong mã hóa lại proxy, có một thuật toán $\textsf{ProxyKey}(sk_B, pk_C) \to rk_{B\to C}$: nó lấy khóa riêng của B và khóa chung của C làm đầu vào và tạo khóa mã hóa lại $rk_{B \to C}$. Ai có khóa mã hóa lại này có thể làm $\textsf{ReEncrypt}(rk_{B \to C}, ctxt) \to ctxt'$, lấy một bản mã $ctxt$ gửi đến $B$ và biến nó thành $ctxt'$, một mã hóa của cùng một thứ nhưng được gửi đến $C$.

(Cũng có những biến thể trong đó $\textsf{ProxyKey}$ cần khóa riêng của cả hai bên.)

Điểm khác biệt quan trọng ở đây là người "xác định lại địa chỉ" cho bản mã ("người đại diện") có thể là người khác không phải B hoặc C. Người được ủy quyền chỉ có $rk_{B\to C}$ nhưng những người không biết khóa riêng của B hoặc C không thể mở bản mã được gửi tới B hoặc C. Họ chỉ có thể chuyển đổi bản mã cho B thành bản mã cho C (chứ không phải ngược lại) mà không cần nhìn vào bên trong.Giả sử proxy và C là các bên riêng biệt, thì C chỉ có thể đọc các thư được gửi tới B mà proxy chọn để chuyển đổi.

Leo avatar
lá cờ br
Leo
Cảm ơn bạn @Mikero. Khóa riêng của B không thể được trao cho C trong trường hợp của tôi nên cách đơn giản nhất không thể hoạt động ở đây. Mã hóa lại proxy nghe có vẻ thú vị. Nhưng sau khi proxy sử dụng khóa mã hóa lại rkB-C để mã hóa lại ctxt để lấy ctxt' và gửi cho C, làm thế nào C có thể giải mã ctxt'? Có phải nó đang sử dụng khóa riêng của C không?
lá cờ us
Có, ctxt' thường trông giống như một bản mã bình thường được gửi trực tiếp tới C và sẽ được giải mã theo cách thông thường.
Leo avatar
lá cờ br
Leo
Âm thanh tuyệt vời. Tôi sẽ tìm kiếm và thử trước. Cảm ơn bạn @Mikero. Tôi đã tìm thấy một thư viện có vẻ tốt https://github.com/nucypher/pyUmbral. Chỉ cần tự hỏi làm bạn có đề nghị những người?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.