Puncte:0

Cum se utilizează nonce, counter și IV în AES-256-CTR?

drapel id

prefaţă: nu sunt priceput criptografic. Există întrebări similare pe această tablă, dar nu oferă răspunsul de care am nevoie.

cum construiesc un IV valid, având în vedere un nonce? Ce legătură are asta cu un contor?

Fac comunicare bidirecțională cu un modul bluetooth (este serverul pentru clientul telefonului meu) și datele sale sunt criptate folosind AES-256-CTR cu o cheie de 32B și un contor de 128 de biți (16B). după conectare cu succes, mi se oferă cheia 32B și un nonce pe 96 de biți (12B).

lib-ul pe care îl folosesc pentru decriptare necesită un IV. Nu înțeleg pe deplin ce este, dar am încercat să concatenez 12B nonce cu „00 00 00 01” (hex) pentru a face contorul și îl folosesc ca IV. fara zaruri.

cum testez, trec prin API-ul modulului pentru a transmite „hello world” prin bluetooth de la server. clientul primește un șir criptat așa cum era de așteptat, dar aceeași „hello world” este criptată în ceva diferit de fiecare dată.

mai multe detalii disponibile daca este nevoie!

forest avatar
drapel vn
IV este doar un alt cuvânt pentru nonce în CTR.
Maarten Bodewes avatar
drapel in
@forest De obicei nonce este mai mic decât IV; este format doar din biți de ordin superior. A avea un nonce aleatoriu de dimensiunea contorului complet nu are sens, deoarece poate fi necesar să criptați mai puțini biți pentru a intra într-o coliziune. Dacă ultima parte este toți biți zero, atunci cel puțin știți cantitatea de spațiu dintre două non-uri ulterioare.
forest avatar
drapel vn
@MaartenBodewes Am auzit întotdeauna că cele două sunt interschimbabile, cu excepția cazului în care vorbiți despre intrarea reală în cifrul bloc în sine, mai degrabă decât despre parametrii cifrului bloc în modul CTR?
kelalaka avatar
drapel in
@forest de fapt, NIST le numește doar contrabloc, [pagina 16 și vezi, de asemenea, 19](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf) și
Puncte:2
drapel in

cum construiesc un IV valid, având în vedere un nonce? Ce legătură are asta cu un contor?

Poate că nu vă așteptați la asta, dar depinde; mai multe scheme sunt la fel de sigure (de exemplu, big endian vs little endian). În general, valoarea contorului este un întreg big endian fără semn pe 128 de biți. Nonce este partea cea mai semnificativă (cea mai din stânga) a acelui număr întreg.

În plus, partea inițială inferioară a contorului ar începe de la (toate) zero - nici un ca in exemplul tau.

Deci ai avea:

NNNNNNNN NNNNNNNN NNNNNNNN 00000000

ca valoare de pornire (ca hexazecimale, unde N reprezintă o cifră hexagonală a nonce), unde stânga este partea cea mai semnificativă. Desigur, acesta este cazul unui nonce pe 96 de biți și al unui contor de 32 de biți. Această valoare de pornire este denumită în mod obișnuit IV.

Deoarece dimensiunea nonce poate varia în multe biblioteci, de obicei creșterea contorului se face pe modul $2^{128}$, cu dezavantajul că un overflow în cei mai mici 32 de biți va afecta nonce. De obicei, depinde de utilizatorul bibliotecii AES să testeze acest lucru (dar ai avea nevoie $2^{32} * 16 = 64 \text{GiB}$ sau aproape $69 \text{GB}$ a ajunge acolo).

dar aceeași „hello world” este criptată în ceva diferit de fiecare dată

Da, deci cel mai probabil nonce se schimbă de fiecare dată. Ori asta sau cheia se schimbă, sau chiar atât cheia, cât și nonce.

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.