Điểm:2

Cách băm lặp hiệu quả hơn

lá cờ sk

Đây là một cách khả thi để thực hiện băm mật mã lặp nhanh gấp đôi so với cách thông thường.

Đưa ra một chức năng nén $f: \{0,1\}^{a+b} \rightarrow \{0,1\}^b$. Giả sử tin nhắn có độ dài $4a$ bit sau khi đệm. Thông thường, bốn khối thông báo được đưa lần lượt vào khối dữ liệu $x_i \in \{0,1\}^b$:

$$ m = m_0 \| m_1 \| m_2 \| m_3; \; |m_i| = một $$ $$ x_{i+1} = f(x_i \| m_i); \; i=0,1,2,3; \; x_0 = IV $$ $$ h = x_4 $$ Ý tưởng đầu tiên để băm nhanh hơn là đơn giản hóa chức năng nén, e. g. thay thế $f$ bởi một chức năng $g$ được xây dựng tương tự nhưng chỉ sử dụng $\frac 1 4$ của các vòng trong. tính toán $x_4$ như trên với việc sử dụng $g$ thay vì $f$ và hoàn thiện bằng $h=p(x_4)$, ở đâu $p$ là một hàm giả ngẫu nhiên không cho phép tính toán $x_4$ từ hàm băm $h$.

Tôi cho rằng điều này có thể an toàn trước các cuộc tấn công tạo ảnh trước chứ không phải tấn công va chạm, bởi vì có quá nhiều mối tương quan giữa $x_i$$x_{i+1}$, cho phép xây dựng các khối tin nhắn $m_i, \overline m_i, m_{i+1}, \overline m_{i+1}$ để có thể $$g(g(x_i\|m_i)\|m_{i+1})=g(g(x_i\|\overline m_i)\|\overline m_{i+1})$$ Ý tưởng bây giờ là chèn mỗi khối tin nhắn hai lần:

$$ x_{i+1} = g(x_i \| m_{i \bmod 4}); \; i=0,...,7 $$ $$ h = x_8 $$ Bây giờ có ít nhất năm cuộc gọi đến $g$ giữa các lần tiêm của hai khối khác nhau $m_i, m_j$. Ví dụ $m_2$ được băm khi $i=2$$m_3$ khi nào $i=7$, do đó không nên có mối tương quan có thể khai thác giữa $x_2$$x_7$. Tuy nhiên, lược đồ này chỉ sử dụng $\frac 1 2$ tổng số vòng, so với phương pháp thông thường.

Điều này có an toàn không, với số tròn $f$ chỉ đủ để làm cho phương pháp thông thường an toàn?

Điểm:2
lá cờ my

Đây là một cách tiếp cận rõ ràng để cố gắng tìm ra một va chạm:

  • Tìm kiếm một cặp $m_1, \overline{m_1}$ với tài sản mà $g(x \| m_1) = g(x \| \overline{m_1})$ cho một phần không cần thiết của $x$. Cho rằng $g$ có số vòng giảm, điều này có thể thực hiện được.

  • Bây giờ, bắt đầu với một cố định $x_i$ (tương ứng với tiền tố tin nhắn đã biết) và tìm kiếm một $m_0$ s.t. $g(x_i \| m_0)$ là một trong những tiền đề va chạm cho $m_1, \overline{m_1}$.

  • Cuộc gọi $g(g(x_0 \| m_0) \| m_1)$ giá trị $x_2$; tìm kiếm một $m_2, m_3$ ghép sao cho $g(g(g(x_2 \| m_2) \| m_3) \| m_0)$ cũng là một cặp xung đột.

Nếu chúng ta có thể tìm thấy điều đó, thì tin nhắn sẽ chặn $(m_0, m_1, m_2, m_3)$$(m_0, \overline{m_1}, m_2, m_3$) xung đột khi được thêm vào tiền tố tin nhắn.

Làm thế nào có thể làm được điều này? Điều đó phụ thuộc vào mức độ khả thi của bước đầu tiên (và mức độ có thể xảy ra $x$ giá trị là một tiền ảnh va chạm) - nếu chúng ta có thể nhận được xác suất của một tiền ảnh va chạm lên đến $2^{-N}$, thì lượng nỗ lực được sử dụng bởi các bước còn lại là dự kiến $2^{N+1}$ công việc...

ThomasM avatar
lá cờ sk
Cuộc tấn công này có thể bị cản trở bằng cách nhập số lần lặp vào mỗi bước nén: $x_{i+1}=g(x_i \| m_{i \bmod 4}, 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.