Keystream

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În criptografie, termenul keystream se referă la un flux de caractere pseudo-aleatorii care sunt combinate cu mesajul text simplu pentru a produce mesajul criptat. „Caracterele” din fluxul de taste pot fi biți , octeți , numere sau caractere alfanumerice , după caz.

Fluxul cheie stă la baza cifrelor de flux (flux cifrat), dar sunt, de obicei, utilizate și în tampoane unice . Cifrele de blocuri pot fi folosite pentru a produce fluxuri de chei folosindu-le în modul CTR : în acest mod, cifrarea de blocuri este transformată într-un flux de cifrare real.

Criptarea / decriptarea are loc prin adăugarea, scăderea sau combinarea cu o operație XOR a fiecărui caracter al textului simplu la un caracter al fluxului de chei pentru a genera un caracter criptat. În implementările IT, algoritmii de criptare funcționează la nivelul de biți pentru care, în general, fluxul de chei este combinat cu textul simplu folosind XOR, deoarece această operație logică are prerogativa de a fi reversibilă: aceasta înseamnă că, prin combinarea unui bit din textul clar cu un flux de chei dat bit, se obține un bit criptat care, atunci când este recombinat de XOR cu același bit keystream, returnează bitul inițial clar.

Generator de flux de chei

Fluxul de chei, sau fluxul de chei, este generat de un algoritm de cifrare specific, care este utilizat pentru a crea fluxul de caractere pseudo-aleatorii care va fi utilizat pentru criptare, inițializat în mod normal utilizând cheia de criptare furnizată de utilizator; se folosește de asemenea o nonce , o valoare numerică introdusă în fluxul de chei pentru a varia fluxul de date. De fapt, o problemă cunoscută cu acest mod de operare este că un generator de flux de chei va produce fluxuri de date identice cu chei identice: de aceea este întotdeauna recomandabil, cu cifere de flux, să schimbați cheia secretă la fiecare operațiune de criptare sau să introduceți un nonce. să varieze fluxul de chei.

Securitate Keystream

Pentru securitatea cifrului în sine, fluxul de chei trebuie să îndeplinească trei cerințe de bază:

  1. trebuie să pară cât mai casual posibil;
  2. trebuie să aibă o perioadă cel puțin la fel de lungă ca textul care trebuie criptat;
  3. nu trebuie să aibă secvențe de caractere care se repetă periodic.

Este evident că nu este posibil să utilizați un flux de chei complet aleatoriu, deoarece fluxul de chei trebuie să fie identic atât pentru operația de criptare, cât și pentru decriptare: dacă ați avea un flux de chei cu adevărat aleatoriu, nu ați putea recupera textul complet original, chiar dacă folosind aceeași cheie secretă, generatorul de flux de chei ar produce un flux total diferit de cel creat pentru criptare. Acesta este motivul pentru care fluxul trebuie să apară cât mai aleatoriu posibil în ochii unui criptanalist, dar să fie repetabil: în acest caz vorbim de pseudo-aleatoriu.

În ceea ce privește durata perioadei, este important ca generatorul să nu repete aceeași secvență deja generată înainte ca tot textul simplu să fie criptat, altfel diferite porțiuni din acesta din urmă ar fi criptate cu același flux de date, oferind unui criptanalist informații utile. pentru decriptarea textului cifrat.

Dar, deși lungimea perioadei este, de asemenea, de o importanță vitală, nu este singurul element care determină siguranța acesteia: este, de asemenea, important să nu aibă secvențe periodice sau prea mulți biți de zero sau o valoare. De fapt, dacă un generator produce biți zero pentru aproape toate fluxurile de taste, textul în clar va fi, în acest caz, aproape identic cu textul cifrat. Dar repetitivitatea este, de asemenea, un factor care scade securitatea fluxului de chei: un criptanalist poate de fapt selecta o secvență de biți și prezice datele care vor fi generate ulterior.