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$ và $\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)$ Là $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.