Prima privire la $\operatorname{SHA3}(S)$
$\operatorname{SHA3}$ este o funcție hash criptografică construită pentru pre-imagine, pre-imagine secundară și rezistență la coliziune. Dacă utilizați $\operatorname{SHA3}-512$ atunci veți obține rezistență la prima și a doua rezistență pre-imagine de 512 biți și rezistență la coliziune de 256 biți.
În cazul dumneavoastră, rezistența pre-imagine este importantă, iar succesul găsirii pre-imagine este un eveniment neglijabil. În medie, atacatorul trebuie să încerce $2^{512}$ diferite intrări pentru a găsi o imagine prealabilă.
Singurul caz problematic aici este dimensiunea secretului. Dacă secretul este mai mic de 512 de biți, atunci securitatea pre-imagine nu este de 512 de biți, este $= \min\{512,bitLen(secret)\}$ deoarece atacatorul trebuie să caute doar acest spațiu. Prin urmare, păstrați secretul cel puțin mai mare decât 256â¡ bit pentru a obține securitatea de cel puțin 256 de biți.
$h = \operatorname{SHA3}(K + \operatorname{SHA3}(S))$
Atașul primește $K$ și $h$. Ca și mai sus, de această dată, cu rezistență completă înainte de imagine (512 biți) va împiedica atacatorul să ajungă $SHA3(S)$ încă singur accesând $S$. Cu toate acestea, ei încă pot căuta $S$ deci tot avem $ \min\{512,bitLen(secret)\}$ Securitate. Dimensiune secretă bună pentru $S$ este necesar, din nou.
Chiar și unul singur $\operatorname{SHA3}$ apel este suficient, dublu $\operatorname{SHA3}$ apelul este exagerat cu o dimensiune bună a tastei (secrete).
Construcția dvs. este similară cu HMAC, unde este utilizat hash-ul dublu, deoarece funcțiile hash MD sunt vulnerabile la atacurile de extensie de lungime. SHA3, pe de altă parte, are rezistență la acest lucru, precum BLAKE2.
Există deja o construcție MAC de la SHA3 numită KMAC, care este în termeni simpli datorită rezistenței la atacurile de extensie de lungime
$$\operatorname{KMAC}(cheie,m) = \operatorname{SHA3}( cheie\mathbin\|m)$$
în notația dvs
$$\operatorname{KMAC}(S,K) = \operatorname{SHA3}( S\mathbin\|K)$$
Acesta este un MAC securizat și nu dezvăluie cheia atacatorului sub nicio formă. Puteți utiliza pur și simplu KMAC pentru a obține ceea ce doriți cu o dimensiune bună a tastei!
â¡Unii ar putea argumenta că securitatea pe 128 de biți este suficientă. Cu toate acestea, evoluțiile viitoare, cum ar fi computerele Cryptographical Quantum, reprezintă o amenințare pentru imaginile prealabile de 128 de biți ale funcțiilor hash și, de asemenea, ca o contramăsură pentru atacurile multi-țintă, ar trebui să se folosească securitatea de cel puțin 256 de biți.