Đầu tiên nhìn vào $\operatorname{SHA3}(S)$
$\operatorname{SHA3}$ là một hàm băm mật mã được xây dựng cho hình ảnh trước, hình ảnh trước thứ cấp và khả năng chống va chạm. Nếu bạn dùng $\operatorname{SHA3}-512$ sau đó bạn sẽ nhận được khả năng chống ảnh trước hình ảnh thứ nhất và thứ hai 512-bit và khả năng chống va chạm 256-bit.
Trong trường hợp của bạn, điện trở của hình ảnh trước là quan trọng và sự thành công của việc tìm kiếm hình ảnh trước là một sự kiện không đáng kể. Trung bình kẻ tấn công cần cố gắng $2^{512}$ đầu vào khác nhau để tìm một hình ảnh trước.
Trường hợp có vấn đề duy nhất ở đây là kích thước của bí mật. Nếu bí mật nhỏ hơn 512-bit thì bảo mật trước hình ảnh không phải là 512-bit, mà là $= \min\{512,bitLen(bí mật)\}$ vì kẻ tấn công chỉ cần tìm kiếm không gian này. Do đó giữ bí mật ít nhất lớn hơn 256â¡ bit để đạt được bảo mật ít nhất 256 bit.
$h = \operatorname{SHA3}(K + \operatorname{SHA3}(S))$
Người đính kèm nhận được $K$ và $h$. Như trên, lần này với khả năng chống tiền hình ảnh đầy đủ (512-bit) sẽ ngăn kẻ tấn công lấy được $SHA3(S)$ chưa một mình truy cập $S$. Tuy nhiên, họ vẫn có thể tìm kiếm $S$ vẫn vậy, chúng ta có $ \min\{512,bitLen(bí mật)\}$ Bảo vệ. Kích thước bí mật tốt cho $S$ được yêu cầu, một lần nữa.
Ngay cả một người duy nhất $\operatorname{SHA3}$ gọi là đủ, gấp đôi $\operatorname{SHA3}$ cuộc gọi là quá mức cần thiết với kích thước khóa (bí mật) tốt.
Cấu trúc của bạn tương tự như HMAC trong đó hàm băm kép được sử dụng do các hàm băm MD dễ bị tấn công theo chiều dài. Mặt khác, SHA3 có khả năng chống lại điều này như BLAKE2.
Đã có cấu trúc MAC từ SHA3 được gọi là KMAC, nói một cách đơn giản nhờ khả năng chống lại các cuộc tấn công kéo dài
$$\operatorname{KMAC}(key,m) = \operatorname{SHA3}( key\mathbin\|m)$$
trong ký hiệu của bạn
$$\operatorname{KMAC}(S,K) = \operatorname{SHA3}( S\mathbin\|K)$$
Đây là một MAC an toàn và không tiết lộ khóa cho kẻ tấn công bằng bất kỳ phương tiện nào. Bạn chỉ cần sử dụng KMAC để đạt được những gì bạn muốn với kích thước khóa tốt!
â¡Một số người có thể lập luận rằng bảo mật 128-bit là đủ. Tuy nhiên, những phát triển trong tương lai như máy tính lượng tử mật mã là mối đe dọa đối với tiền hình ảnh 128-bit của hàm băm và như một biện pháp đối phó với các cuộc tấn công đa mục tiêu, người ta cũng nên sử dụng bảo mật ít nhất 256-bit.