Chặn xung đột mật mã với các khóa khác nhau
Nếu có cặp khóa bản rõ $m,k$ mang lại một số bản mã và tồn tại một khóa khác, cặp thông báo $m_1,k_1$ cũng tạo ra cùng một bản mã, đây có phải là vấn đề tương tự như xung đột hàm băm không?
Vâng, nó tương tự như va chạm băm, có trường hợp tấn công nếu sử dụng cùng một khóa, xem phần tiền thưởng. Đối với các khóa khác nhau, nó không tiết lộ bất cứ điều gì.
Nếu bạn đang sử dụng CTR (bất kỳ chế độ phát trực tuyến nào) thì nếu bạn gặp xung đột bản mã, điều này sẽ không hiển thị các thông báo vì
$$m_1 \oplus o_1 = c_1 = c_2 = m_2 \oplus o_2$$ bởi vì
$$m_1 m_2 \oplus = o_1 \oplus o_2$$ và điều này sẽ không tiết lộ các tin nhắn ngay cả khi bạn đoán một tin nhắn.
Và tương tự, chế độ CBC sẽ chống lại sự va chạm dưới các phím khác nhau.
Khả năng xung đột bản mã
giả sử chúng tôi mã hóa AES 'mặt trăng' bằng khóa 'morehotquestions' nhận được 'fjydhpdag'. và chúng tôi mã hóa 'mặt trời' bằng khóa 'câu hỏi mạng nóng' cũng nhận được 'fjydhpdag'. điều này thậm chí có thể?
Nếu chúng tôi coi AES là một PRP, thì chúng tôi có tình trạng giống hệt như cuộc tấn công sinh nhật. Xác suất để hai khối đơn lẻ có cùng một bản mã là $1/2^{128}$ cho khối ECB.
Tìm chúng tôi dễ dàng hơn nhiều vì AES không thể đảo ngược. Hãy xem xét ECB cho trường hợp dễ dàng.Vì AES không thể đảo ngược, hãy lấy một bản mã và giải mã nó bằng hai khóa khác nhau. Sau đó, bạn sẽ nhận được hai tin nhắn khác nhau. Tất nhiên, chúng không nhất thiết phải có ý nghĩa, đây là cách dễ dàng để tìm/hiển thị điều này.
Các hệ thống chữ ký như RSA-Sign
Hệ thống chữ ký sử dụng hàm băm của tin nhắn để ký. Một trong những cách để giả mạo kẻ tấn công cần một cuộc tấn công tiền ảnh thứ hai vào hàm băm. Điều gì sẽ xảy ra nếu chúng ta có một người ký ác ý hoặc thư ký ác ý của người ký? Giả sử rằng họ sử dụng MD5 khi xung đột sắp xảy ra (không sử dụng MD5 và SHA-1 cho chữ ký) thì họ có thể tìm thấy hai thư có cùng giá trị băm. $h(m_1) = h(m_2)$ với $m_1 \neq m_2$ thì hai giá trị $$\operatorname{RSA-Sign}(h(m_1)) = \operatorname{RSA-Sign}(h(m_2))$$ giống nhau.
Luôn sử dụng các hàm băm mật mã chống va chạm như SHA-256, SHA-512, SHA-3, BLAKE2, v.v. để giảm thiểu cuộc tấn công này.
Phần thưởng: Xung đột mật mã khối với cùng một khóa
Vâng, có những cuộc tấn công và lo ngại về điều này; như Sweet32;
Sweet32: Các cuộc tấn công sinh nhật vào mật mã khối 64 bit trong TLS và OpenVPN
Tóm lại, đối với mật mã khối có kích thước $b$, nếu bạn đang mã hóa $2^b$ khối dưới cùng một khóa người ta có thể bị xung đột trên bản mã của chế độ CBC mà nó $c_i = c_j$ với $i \neq j$. Đó là;
$$m_i \oplus c_{i-1} = m_j \oplus c_{j-1}$$
Sau đó, sử dụng các thuộc tính của CBC, chúng ta có thể nhận được
$$m_i \oplus m_j = c_{1-1} \oplus c_{j-1}.$$
Như chúng ta có thể thấy đây chỉ là x-or của các khối bản rõ mà kẻ tấn công thụ động có thể khai thác.
Tôi chỉ nói về chế độ CBC, tuy nhiên, trang đề cập nhiều hơn và còn lại để điều tra tương tự như CBC;
Điều này đặc biệt quan trọng khi sử dụng các phương thức hoạt động phổ biến: chúng tôi yêu cầu mật mã khối phải an toàn với tối đa $2^n$ truy vấn, nhưng hầu hết các chế độ hoạt động (ví dụ: CBC, CTR, GCM, OCB, v.v.) không an toàn với hơn $2^{n/2}$ khối tin nhắn (giới hạn sinh nhật).
Tất nhiên, chúng tôi là gần như không còn sử dụng mật mã có kích thước khối 64 bit. Tuy nhiên, cuộc tấn công này thậm chí có thể xảy ra nếu bạn đang mã hóa quá nhiều dữ liệu bằng cùng một khóa. Người ta có thể nói mã hóa một $2^{64}$ dữ liệu quá nhiều, chúng tôi sẽ không mã hóa kích thước như vậy. Sau đó, chúng tôi có một cuộc tranh luận sâu sắc hơn, 50% cuộc tấn công sinh nhật là quá nhiều cho lợi thế của kẻ tấn công, nó là xa không đáng kể. Họ thậm chí có thể tìm kiếm xác suất thấp hơn để tiết lộ một số khối tin nhắn. Bạn nên hạn chế $2^{32}$-block để giảm lợi thế của kẻ tấn công.