đưa ra một hàm băm H() , như sha256
và một văn bản bí mật S
và một muối công P
sẽ biết H(S) tiết lộ HMAC(P, S)?
để làm rõ: câu hỏi là liệu có thể tìm hiểu thông báo chứ không phải bí mật.
Trong trường hợp cụ thể của tôi, HMAC(S) thực sự là HKDF(S), nhưng tôi cho rằng đối với câu hỏi này, phần liên quan đến an toàn chỉ là giai đoạn giải nén.
giao thức như sau:
Alice->Bob: tìm nạp message2 sau message1 có nội dung H(message1)
Bob->Alice: message2 từ Charlie nói: chacha(HKDF(message1), rõ ràng)
Có vẻ như khá rõ ràng rằng việc cưỡng bức S vẫn không khả thi:
Đối với mỗi vòng, kẻ tấn công sẽ có khả năng kiểm tra H(S) hoặc HMAC(S) nhưng điều này không giúp được gì vì nỗ lực là giống hệt nhau. Thử nghiệm với cả hai chỉ làm cho nó chậm gấp đôi.
Tuy nhiên, chúng tôi quan tâm đến tính bí mật của chính hàm băm, vì đó là khóa dẫn xuất. Ngay cả khi chúng tôi cho rằng có thể "tiếp tục" một hàm băm chỉ từ thông báo của nó [1]
và sau đó tiếp tục nó dưới dạng HMAC, nó sẽ chỉ hoạt động với H(S+salt), không hoạt động với H(salt+S), mà HKDF là [2]
Bây giờ, điều cuối cùng tôi không hiểu là entropy. Việc tiết lộ hàm băm của S có làm giảm entropy của nó để hmac yếu hơn không? Theo như tôi hiểu, một thông báo về một thứ gì đó thực sự phân tán entropy để nó không thể phân biệt được với tính ngẫu nhiên. Vì vậy, bạn không thể "làm lại" cùng một sự phân tán, nếu nó đã biến mất.
- https://stackoverflow.com/questions/20895009/what-state-needs-to-be-stored-to-allow-resumable-hash-computations
- Tại sao HKDF sử dụng HMAC(salt, key) thay vì HMAC(key, salt)?