Puncte:1

Încerc să înțeleg modul SIV

drapel jp

Încerc să-mi înțeleg conceptul de SIV în contextul criptării. Înțeleg aspectul utilizării greșite a nonce etc. Și înțeleg că caracteristica cheie pentru SIV este că se asigură că, în timp ce criptarea aceluiași mesaj cu aceeași cheie va dezvălui că este identic, nu va dezvălui nimic altceva.

În special, utilizarea aceleiași chei pe mesaje diferite nu va avea o problemă catastrofală cu nonce reutilizare în alt sistem.

Dacă am înțeles bine, puteți construi un mod de operare SIV folosind:

def encrypt(msg, key):
   siv = hash_shake256(bits=192, msg)
   returnează xchacha20(cheie, siv, msg), siv

Cu alte cuvinte, mai întâi calculăm un hash cu cheie pe mesaj, apoi folosim acea valoare ca nonce pentru criptarea reală.

Ieșirea este textul cifrat, precum și cel generat siv, ambele pot fi împărtășite în siguranță fără a dezvălui nimic unui adversar.

Securitatea provine din caracterul nereversibil al funcției hash cu cheie și din faptul că pentru fiecare msg trecem ca intrare, suntem asigurați că nu vom avea un nonce duplicat.

  • Înțeleg lucrurile corect?
  • Este sigur să folosiți aceeași cheie atât pentru hash cu cheie, cât și pentru criptare?
  • Presupun real siv utilizarea este puțin mai mult decât simpla hashing a intrării?
kelalaka avatar
drapel in
Există deja HS1-SIV; [Avantajele HS1-SIV față de ChaCha20-Poly1305-SIV?](https://crypto.stackexchange.com/q/33068/18298) și [Ar fi sigur să folosiți hash-ul mesajului ca IV în ChaCha?]( https://crypto.stackexchange.com/q/59886/18298)
kelalaka avatar
drapel in
Am văzut un mod SIV pentru ChaCha, cu toate acestea, nu am putut găsi hârtia.
Maarten Bodewes avatar
drapel in
Ceea ce nu înțeleg din întrebare este că `hash_shake256` este folosit doar peste mesaj, dar că vorbiți despre „securitatea vine din funcția hash **keyed**”. SHAKE256 nu este deloc o funcție hash cu taste, ați folosi de ex. KMAC pentru asta (acesta este practic același cu SHA-256 vs HMAC-SHA-256).
Maarten Bodewes avatar
drapel in
Rețineți că HS1-SIV folosește o funcție hash cu cheie și că de fapt XOR este rezultatul cheii înainte de criptare. Da, doar folosirea unui hash simplu este o idee proastă. Oricine poate cunoaște hash-ul și oricine poate cunoaște textul cifrat. Aceasta înseamnă că puteți doar să răsturnați biți în rezultatul hash și mesajul pentru a obține un rezultat valid. Este absolut necesar să utilizați un hash cu cheie.
kelalaka avatar
drapel in
Și rețineți că, cu XChaCha20, ChaCha20 nu are nevoie de un mod SIV, deoarece are nonce-uri de 192 de biți și nonce aleatoare sunt libere de coliziuni nonce, nu ne așteptam niciodată să vadă una!
SAI Peregrinus avatar
drapel si
@kelalaka https://eprint.iacr.org/2020/067 poate să fi fost ziarul pe care l-ați văzut.
kelalaka avatar
drapel in
@SAIPeregrinus da, exact, multumesc.
Puncte:1
drapel cn

Înțeleg lucrurile corect?

SIV necesită MAC, nu doar hash. Hash cu cheie poate fi folosit ca MAC. Cu toate acestea, nu aveți un hash cu cheie în exemplul dvs. (dar spuneți hash cu cheie).

Este sigur să folosiți aceeași cheie atât pentru hash cu cheie, cât și pentru criptare?

În general, pentru MAC și criptare ar trebui să fie utilizată o cheie diferită. Deși în unele cazuri poate fi bine cu aceeași cheie, dacă MAC și criptarea sunt suficient de diferite. De exemplu, dacă utilizați CBC-MAC și CTR ambele cu AES, folosirea aceleiași chei este proastă. Modul SIV definește modul în care obțineți cheile din cheia principală.

Presupun că utilizarea reală a siv este puțin mai mult decât simpla hashing a intrării?

Ei bine, din nou trebuie să utilizați MAC. Ar trebui să verificați varianta SIV reală pentru mai multe detalii. De exemplu SIV cu AES (CMAC și CTR): https://datatracker.ietf.org/doc/html/rfc5297

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.