Puncte:1

RSA criptează o cheie AES. Dar AES IV?

drapel pl

Trebuie să transmit în siguranță o cheie AES unui client de la distanță. Ceea ce am făcut până acum a fost să generez o cheie AES aleatorie și să o criptez folosind cheia publică RSA a clientului (padding-ul PKCS#1 v1.5 este îngrijit de biblioteca RSA pe care o folosesc, CryptJS).

Nu mi-am dat seama că AES necesită cheia dar și un IV. Nu știu care este modul corect de a trata IV. Ar trebui să-l criptez și eu și, practic, să trimit peste două blob-uri criptate? (unul pentru cheia AES și unul pentru IV). Sau pot atașa în siguranță IV-ul la cheia AES în sine și criptez matricea de octeți rezultată?

Folosesc RSA 2048bit, așa că pot cripta cu siguranță o sarcină utilă de 128+128=256biți.

Există vreo implicație de securitate dacă atașez IV la cheia AES și criptez RSA matricea de octeți rezultată?

Nu am găsit nicio bună practică în acest sens. Nici măcar nu știu dacă este sigur să trimiți IV-ul așa cum este, fără a-l cripta.

Eugene Styer avatar
drapel dz
IV-ul nu trebuie să fie secret (a se vedea https://crypto.stackexchange.com/questions/8592/iv-security-clarification). Nu văd nicio problemă cu includerea acestuia în criptarea RSA, dar nu este necesar.
Gianluca Ghettini avatar
drapel pl
Bună captură! Vă rugăm să răspundeți la întrebare (dacă doriți) și o voi accepta
Fractalice avatar
drapel in
Trimiterea lor separat poate cauza probleme de securitate, deoarece un atacator poate combina IV-uri și chei.
Fractalice avatar
drapel in
De asemenea, în mod ideal, expeditorul ar trebui să aibă și o cheie publică care este disponibilă pentru „clientul de la distanță” și mesajul RSA ar trebui să fie semnat. În caz contrar, un adversar poate pur și simplu să-și cripteze propria cheie AES cu cheia publică RSA și să o trimită către „clientul de la distanță”.
Fractalice avatar
drapel in
Și, desigur, criptarea RSA ar trebui să fie acoperită în siguranță (OAEP) și criptarea AES ar trebui să fie autentificată (AES-GCM).
Maarten Bodewes avatar
drapel in
@Fractalice Ați putea să aruncați o privire la [răspunsul dat de Eugene](https://crypto.stackexchange.com/a/95591/1172). Pare să contrazică primul tău comentariu...
Fractalice avatar
drapel in
@MaartenBodewes dacă IV este înăuntru (după cum sugerează Eugene), pare greu să faci ceva rău, dacă RSA este decriptat și verificat corespunzător.
Fractalice avatar
drapel in
@GianlucaGhettini Vă rugăm să rețineți că un server de decriptare PKCS v1.5 permite decriptarea textelor cifrate arbitrare pentru un atacator... (atacul lui Bleichenbacher).
Puncte:4
drapel dz

Acesta va fi probabil închis ca un duplicat, dar IV-ul nu trebuie să fie secret. Nu sunt sigur de cele mai bune practici, dar nu văd probleme în includerea IV-ului în criptarea RSA.

Puncte:1
drapel in

Nici măcar nu aveți nevoie de un IV randomizat dacă aveți deja o cheie secretă randomizată care se modifică pentru fiecare mesaj. Deci orice răspuns nu va fi fundamental greșit, deoarece nu există cerințe de securitate pentru IV. Totuși, ți-aș sugera să citești acest raspuns oferit de ursul nostru prietenos înainte de a întâlni o BĂRĂ mai puțin prietenoasă.

Cu toate acestea, nu aș include IV-ul cu cheia de intrare AES dintr-un motiv anume: nu ar fi compatibil cu niciun hardware sau HSM (sau orice alt depozit de chei) care efectuează împachetarea cheilor (adică criptarea unei chei cu o cheie de împachetare, în cazul dvs. cheia publică RSA). Deci, dacă decideți vreodată că aveți nevoie de asta, va trebui să schimbați protocolul. În caz contrar, ar trebui să decriptați și să stocați cheia în software. Aceasta nu este o problemă uriașă pentru a fi sincer, deoarece datele vor fi oricum în memorie, dar este ceva de luat în considerare.

Dacă insistați asupra unui IV aleatoriu, ați putea folosi de ex. un hash peste cheia înfășurată (adică textul cifrat RSA) ca IV, sau îl puteți deriva din materialul cheii înfășurate în sine (folosind o funcție de derivare a cheii sau KDF). Aceasta din urmă este probabil una dintre abordările folosite de majoritatea criptografilor de aici, chiar dacă este mai greu de înțeles și implementat (de exemplu, RSA-KEM, apoi HKDF-Extract, apoi de 2 ori HKDF-Expand - o dată pentru cheie, o dată pentru IV). - deși probabil că nu este compatibil nici cu mult hardware).


După cum se indică în comentarii, a avea un mesaj autentificat este adesea destul de important. Asta ar necesita de obicei semnează-apoi-criptează, care este totuși vulnerabil la atacurile de umplutură oracle atât pe PKCS#1, cât și pe CBC, dacă intenționați să utilizați acel mod. Dacă luați în considerare un singur destinatar și confidențialitatea și integritatea, atunci criptarea apoi semnarea poate funcționa mai bine pentru dvs.

Acest lucru necesită, desigur, și o pereche de chei RSA (de încredere) la receptor, în cele din urmă, totul este despre managementul cheilor.

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.