Điểm:4

$H(k || m) \oplus k$ có an toàn không?

lá cờ fr

được biết rằng $H(k || m)$ (khi sử dụng SHA1) là một hàm MAC không an toàn vì nó dễ bị mở rộng độ dài hàm băm.

Nhưng những gì về $H(k || m) \oplus k$? Hiện tại, một tiện ích mở rộng độ dài hàm băm thông thường dường như là không thể. Ngay cả khi cùng một khóa được sử dụng nhiều lần, tôi thấy không có vấn đề gì miễn là đầu ra của $H$ là đủ ngẫu nhiên. Tôi có đúng không?

kelalaka avatar
lá cờ in
Chào mừng đến với Cryptography.SE Đây có phải là câu hỏi về bài tập về nhà không? Nguồn gốc của câu hỏi này là gì?
Maarten Bodewes avatar
lá cờ in
Lưu ý rằng đối với các thuộc tính bảo mật của SHA-3, chỉ $H(k \| m)$ được coi là an toàn - KMAC không có gì khác hơn thế (nhưng nó sử dụng SHAKE, không phải SHA).
Johny Dow avatar
lá cờ fr
@kelalaka Tôi đã xem qua một số bản ghi CTF và tìm thấy cuộc tấn công mở rộng độ dài hàm băm. Bây giờ tôi chỉ băn khoăn về việc xây dựng này.
kelalaka avatar
lá cờ in
Nó là quá mức cần thiết cho các hàm băm an toàn như SHA3 và Blake2.
Điểm:6
lá cờ ng

Xem xét $H$ được định nghĩa là: SHA-512, với đầu ra được XOR với 512 bit đầu tiên của thông báo đầu vào (được đệm bằng số 0 cho thông báo ngắn). Với ví dụ $H$, MAC đề xuất không an toàn. Tuy nhiên, theo như chúng tôi biết, điều này $H$ không tệ hơn SHA-512 từ quan điểm tiêu chuẩn.

Đối số: quan sát rằng nếu $H(m_1\mathbin\|m_2)=\operatorname{SHA-512}(m_1\mathbin\|m_2)\oplus m_1$$\operatorname{MAC}_k(m)=H(k\mathbin\|m)\oplus k$, sau đó cho khóa 512-bit¹ $k$ nó giữ $\operatorname{MAC}_k(m)=\operatorname{SHA-512}(k\mathbin\|m)$. Vì vậy điều này $\operatorname{MAC}$ dễ bị tấn công mở rộng chiều dài².

Vì vậy, không thể chứng minh rằng $H(k\mathbin\|m)\oplus k$ là một MAC an toàn mà không có thông tin chi tiết về cấu trúc bên trong của $H$.

Tôi khá tự tin rằng cấu trúc MAC được đề xuất thực tế an toàn cho các giá trị băm của họ SHA-2 và thậm chí cho SHA-1. chúng tôi có thể muốn chứng minh bảo mật theo giả định hàm băm có Merkle-DamgÃ¥rd cấu trúc, một chức năng nén được xây dựng từ mật mã khối $E$ mỗi Davies-Meyer xây dựng, với khối thích hợp và kích thước khóa cho $E$. Tôi nghĩ điều này có thể thực hiện được theo mô hình mật mã lý tưởng, nhưng không phải là mô hình bảo mật tiêu chuẩn của $E$. Vấn đề là XOR khóa với đầu ra của mật mã khối có thể làm yếu nó. Đó là trường hợp e.g.đối với AES-128 ở chế độ giải mã, trong đó XOR loại bỏ giá trị bảo mật của một vòng.


¹ Đối với khóa có kích thước tùy ý, $\operatorname{MAC}_k(m)=\operatorname{SHA-512}(k\mathbin\|m)\oplus F_{|k|}(m)$ ở đâu $F_{|k|}(m)$$0^{\min(|k|,512)}$, tiếp theo là đầu tiên $\min(\max(512-|k|,0),|m|)$ bit của $m$, theo dõi bởi $0^{\max(512-|k|-|m|,0)}$. Điều này vẫn cho phép tấn công.

² Trái ngược với những gì tôi đã viết ban đầu, chúng tôi không thể khôi phục $k$ từ các truy vấn.

cisnjxqu avatar
lá cờ us
Tôi đang gặp khó khăn trong việc chứng minh rằng $H$ là hàm băm chống va chạm. Đặt $H(m_1\|m_2) = \mathrm{SHA}(m_1\|m_2)\oplus m_1$.Với xung đột của $H(m_1\|m_2)$, chúng ta cần tạo xung đột cho $\mathrm{SHA}$. Đặt $m_a, m_b$ là hai đầu vào xung đột của $H$ với $m_a \neq m_b$ và $H(m_a) = H(m_b)\iff\mathrm{SHA}(m_{a_1}\|m_{a_2} )\oplus m_{a_1} = \mathrm{SHA}(m_{b_1}\|m_{b_2})\oplus m_{b_1}$. Thật dễ dàng để tìm ra xung đột nếu $m_{a_1} = m_{b_1}$, nhưng nếu chúng khác biệt thì sao? Chúng ta có thể giới hạn xác suất mà chúng khác biệt không?
fgrieu avatar
lá cờ ng
@cisnjxqu: Tôi nghĩ chúng ta có thể chứng minh rằng $H$ được xác định sao cho $H(m_1\mathbin\|m_2)=\mathrm{SHA}(m_1\mathbin\|m_2)\oplus m_1$ có khả năng chống va chạm theo mô hình $\mathrm{SHA}$ như một tiên tri ngẫu nhiên. Tuy nhiên, đó là một mô hình kém, vì nó không tính đến thuộc tính mở rộng độ dài. Tôi nghĩ rằng chúng ta có thể chứng minh điều đó một cách cẩn thận hơn với một mô hình $\mathrm{SHA}$ tốt hơn, nơi chúng ta sử dụng cấu trúc Merkle-DamgÃ¥rd thực tế và một hàm vòng được mô hình hóa bởi một nhà tiên tri ngẫu nhiên.
cisnjxqu avatar
lá cờ us
Điều đó có thể là có thể, vâng. Tôi cho rằng câu hỏi của tôi là liệu có hàm băm chống va chạm hay không (ở đây $\mathrm{SHA}$) sao cho $H$ có khả năng chống va chạm _not_.
fgrieu avatar
lá cờ ng
@cisnjxqu: Vâng. Ví dụ: xác định $S(m)$ là bit đầu tiên của $m$, được nối với hàm băm lý tưởng của phần còn lại của $m$. $S$ có khả năng chống va chạm, nhưng $H$ được xác định bởi $H(m_1\mathbin\|m_2)=S(m_1\mathbin\|m_2)\oplus m_1$ thì không, vì bit đầu tiên của đầu vào của $ H$ không ảnh hưởng đến kết quả.
Johny Dow avatar
lá cờ fr
@fgrieu Cảm ơn rất nhiều! Bạn có thể cho tôi thêm một số mẹo về cách khôi phục khóa bằng phần mở rộng độ dài hàm băm không? Tôi không thể tìm ra nó ..
fgrieu avatar
lá cờ ng
@Johny Dow: Tôi đã nhầm, chúng tôi không thể khôi phục khóa. Xem sửa đổi hai đoạn đầu tiên của câu trả lờ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.