Điểm:1

Khóa khối xChaCha20 cho Poly1305

lá cờ cn

Vì vậy, xChaCha20 có kích thước nonce đủ lớn để sử dụng an toàn một nonce ngẫu nhiên với cùng một khóa. Poly1305 thường sử dụng khối đầu ra đầu tiên của mật mã để tạo nonce của nó. Đối với xChaCha20, nó sẽ là khối 0 cho khóa/nonce poly1305 và phần còn lại của dữ liệu sẽ được mã hóa bằng khối 1 trở lên. Vì vậy, nếu một người gửi tin nhắn, bạn sẽ nhận được thứ gì đó dọc theo những dòng này (thứ tự có thể khác tùy thuộc vào giao thức):

$$\text{Msg} = \{ \text{Thẻ Poly1305}\} \mathbin\| \{\text{24 Byte Nonce} \} \mathbin\| \{ \text{Dữ liệu liên kết} \}\mathbin\| \{\text{Văn bản mật mã} \}$$

Bây giờ với bố cục này, có vẻ hơi lãng phí khi gửi và tạo nonce mới với mỗi tin nhắn i.g. Chi phí gói/tin nhắn 24 byte và thời gian CPU tạo nonce ngẫu nhiên. Đặc biệt là vì xChaCha20 có thể gửi $2^{64}$ các khối với một cặp khóa và nonce. Người ta chỉ có thể gửi nonce một lần và sau đó bắt đầu gửi luồng dữ liệu của họ và trên tin nhắn cuối cùng gửi thẻ poly1305. Tuy nhiên, nếu có nhiều dữ liệu phải đợi tất cả dữ liệu được gửi trước khi xác minh thì thẻ poly1305 có một số vấn đề riêng. Việc tạo các thẻ Poly1305 khi bạn thực hiện có vẻ thực tế hơn.

Tuy nhiên, gần như tất cả các cấu trúc mà tôi thấy chỉ sử dụng khối 0 cho khóa/nonce Poly1305, tôi thấy hoàn toàn hợp lý khi sử dụng các bộ đếm khối khác cho khóa Poly1305. Chẳng hạn, giả sử ai đó muốn gửi một luồng dữ liệu dài. Đối với mục đích minh họa, hãy xem xét một số cấu trúc thô gửi 7 khối xChaCha20 cùng một lúc:

xây dựng ví dụ

Bây giờ, câu hỏi của tôi là tại sao tôi không thấy một công trình dọc theo những dòng này? Có điều gì tôi đang xem xét, hoặc xChaCha20 quá mới hoặc đây là một mối quan tâm khá nhỏ, hoặc tôi đã không tìm kiếm đủ chăm chỉ? Vì một số cấu trúc dọc theo các dòng này cho phép một người xác minh dữ liệu khi họ nhận được và cũng tránh tạo ra nhiều nonce mới và phải liên tục gửi cho họ thêm chi phí tin nhắn.

Chỉnh sửa: Có lẽ nên rõ ràng hơn ở đây poly1305_tag(block_x) được cho là bao gồm cả bản mã và dữ liệu liên quan. Hình ảnh trên đã trở nên khá rộng đối với một cái gì đó như

$$poly1305_{tag}(block_x, \text{associated data} \mathbin\| ciphertext).$$

Tương tự như được đề cập trong ghi chú bên dưới, xChaCha20_x() bao gồm khóa và nonce. Chủ yếu đây là câu hỏi về việc sử dụng các bộ đếm khối khác ngoài 0 để làm khóa cho poly1305 tạo nhiều thẻ cho luồng dữ liệu dài hơn.

kelalaka avatar
lá cờ in
Dữ liệu liên kết phải được xác thực. Bạn có gặp sự cố không [tương tự như sự cố này](https://crypto.stackexchange.com/q/86080/18298).
lá cờ cn
Có lẽ tôi đã không đủ rõ ràng khi dữ liệu liên quan đang được chạy qua poly1305, ít nhất đó là ý định của tôi khi mô tả điều này. Nếu không thì tất nhiên nó có thể bị thao túng. Điều tôi đã nói ở trên là nó đang chạy poly1305 với số khối x là khóa poly1305.
lá cờ cn
Ngoài ra, không cần phải sử dụng các khối khác nhau để khóa thẻ xác thực poly1305 trên đường đi. Khi tôi xem xét các triển khai, họ chỉ sử dụng khối 0 của chacha20. Tôi không hiểu lý do tại sao việc sử dụng đầu ra khối khác từ chacha20/xchacha20 sẽ gây ra sự cố vì poly1305 sẽ tiếp tục nhận được các đầu vào duy nhất. Điều đó sau đó bạn có thể sử dụng để tạo thẻ để xác thực văn bản mật mã và bất kỳ dữ liệu liên quan nào. Về cơ bản, cấu trúc giống như những gì bạn thường làm cho block_0 và sau đó mã hóa block_1 thành block_n, nhưng thay vào đó, bạn sử dụng nhiều khối từ xchacha20 cho nhiều thẻ poly1305
kelalaka avatar
lá cờ in
Bạn có thể chỉnh sửa câu hỏi của mình, đặc biệt là làm rõ về mục tiêu của bạn. Ma quỷ là trong các chi tiết.
lá cờ cn
Đã thêm một bản chỉnh sửa tóm tắt những gì tôi đã nói ở đây.

Đă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.