Criptosistem simetric. Protecția informațiilor criptografice de către Alexander Prokhorov

Protecția informațiilor criptografice

Alexandra Prokhorova

Un extras din cartea lui Alexander Prokhorov „Internetul: Cum funcționează”, informații despre carte pot fi găsite la abordare .

Să ne uităm la un exemplu concret. Lăsați directorul companiei A să trimită un document important directorului companiei B prin e-mail (Fig. 1). Ce probleme apar în ceea ce privește securitatea comunicațiilor?

La primirea scrisorii, directorul companiei B pune următoarele întrebări. Dacă acest document a fost efectiv trimis de către directorul A (identificarea expeditorului). La urma urmei, există posibilitatea ca scrisoarea să provină de la o altă persoană care se prezintă drept directorul companiei A. Documentul a fost interceptat și modificat de-a lungul rutei de livrare (autentificarea mesajului). Dacă documentul a fost citit de altcineva decât destinatarul (secret)

Un e-mail și fișierele atașate pot fi citite cu ușurință în puncte intermediare ale călătoriei sale pe internet, de exemplu, pe serverul furnizorului

Este cunoscut faptul că păstrarea secretului (confidenţialitatea mesajelor) se poate realiza prin criptarea datelor. Se pare că toate aceste trei probleme pot fi rezolvate folosind criptarea, iar criptografia se ocupă de aceste probleme.

Criptografia (din grecescul „cryptos” – secret) este știința și tehnologia de criptare a informațiilor importante pentru a le proteja de modificări și acces neautorizat. Criptografia servește nu numai la convertirea textelor într-o formă criptată imposibil de citit, ci vă permite și să rezolvați problemele de autentificare și identificare a utilizatorilor atunci când lucrează pe Internet.

Criptografia este baza comunicațiilor securizate. În fig. 1 am dat un exemplu de corespondență între doi corespondenți. Trebuie remarcat faptul că pe internet comunicăm nu numai cu oamenii, ci și cu diverse servicii. De exemplu, atunci când urmează să descărcam un program de pe un server, este, de asemenea, important să știm că acest server aparține companiei dezvoltatoare, și nu unei companii pirat care distribuie ilegal software piratat.

Criptare cu o cheie

Procesul de criptare cu o cheie constă în combinarea textului simplu cu un șir de numere (cheia) după regulile unui algoritm (algoritm criptografic) pentru a obține un mesaj criptat.

Să presupunem că dorim să criptăm textul simplu „Bună ziua Vasya” folosind cel mai simplu algoritm - înlocuirea literelor cu numerele lor din alfabet. Ca urmare, vom primi un text criptat de forma: 17 18 10 3 6 20 3 1 19 33. Evident, dacă un străin învață algoritmul de criptare, atunci este imposibil să-l folosească în viitor.

Acest dezavantaj poate fi evitat prin utilizarea criptării cheilor. Pentru a explica esența procesului de criptare cu o cheie, dăm un exemplu simplu (Fig. 3).

Să notăm literele textului și să le scriem numerele în alfabet sub ele. Pe a treia linie notăm literele cheii, repetând acest cuvânt pe întreaga linie. Sub literele cheii le vom nota numerele în alfabet, iar în al patrulea rând vom nota suma, care va fi mesajul criptat: 20 19 29 36 etc.

Cunoscând cheia și algoritmul, este ușor de descifrat mesajul: 20 - 3 = 17, iar a șaptesprezecea literă a alfabetului este „P”, etc. Chiar dacă atacatorul cunoaște algoritmul, dar nu cunoaște cheia, este imposibil să citești mesajul fără o procedură lungă de selectare a cheii. Astfel, un algoritm poate fi utilizat cu mai multe taste pentru diferite canale de comunicare, atribuind o tastă separată fiecărui corespondent.

Evident, cu cât cheia de criptare este mai lungă, cu atât mai mult este necesar să se încerce diferite combinații la decriptare și, în consecință, este mai dificilă decodarea mesajului. Cifrurile cu chei mai lungi de 128 de biți sunt numite puternice.

Principiul criptării cu o cheie secretă

Criptare cheie simetrică

Să luăm în considerare un exemplu concret: corespondenții A și B să își scrie o scrisoare unul altuia (Fig. 4). Fiecare are propria sa cheie secretă (un cod secret specific) care poate fi folosită pentru a cripta datele înainte de a le trimite pe Internet. Pentru a descrie mai clar schema de criptare, vom folosi pictograme (Fig. 2), adică să descriem cheia sub forma unei chei obișnuite și mesajul criptat sub forma unui document sigilat într-un plic. Apoi procesul de criptare și decriptare poate fi reprezentat sub forma Fig. 3.

Schemă de criptare cu cheie secretă (simetrică).

Utilizatorul A criptează mesajul cu cheia sa secretă, trimite mesajul prin Internet, iar destinatarul B (folosind aceeași cheie secretă) decriptează mesajul. Dacă te uiți la figură, este ușor să vezi că circuitul este simetric. Utilizatorii din stânga și din dreapta folosesc aceleași chei (simetrice), așa că acest tip de criptare se numește criptare cu chei simetrice.

Problema criptării cheii secrete are anumite dezavantaje. În primul rând, criptarea simetrică nu rezolvă problema de autentificare. De exemplu, A poate scrie o scrisoare către o terță parte C și poate pretinde că B a făcut-o.

O cheie simetrică trebuie instalată pe computerul expeditorului și al destinatarului înainte ca mesajele secrete să fie schimbate. Adică, trebuie să știți dinainte care două computere vor „vorbi” unul cu celălalt. Evident, criptarea pentru comunicarea sigură pe Internet are sens atunci când corespondenții nu trebuie să se întâlnească personal. Problema apare la transmiterea cheii private. Într-adevăr. Dacă A îi dă lui B cheia secretă în formă necriptată, aceasta poate fi interceptată. Dacă cheia este trimisă în formă criptată, B nu o va putea primi. Pentru a corespunde cu mai mulți corespondenți, trebuie să aveți o cheie pentru fiecare corespondent, ceea ce este incomod. Pentru a rezolva problemele de mai sus, a fost propusă o schemă de criptare asimetrică (criptare cu cheie publică).

Criptare cu chei publice

Criptarea cheii publice se bazează pe utilizarea unei perechi de chei: chei private (private) și publice (publice).

Mesajul poate fi criptat atât cu o cheie privată, cât și cu o cheie publică și decriptat doar cu a doua cheie a perechii. Adică, un mesaj criptat cu o cheie privată poate fi decriptat doar cu o cheie publică și invers. Cheia privată este cunoscută doar de proprietar și nu poate fi partajată cu nimeni, în timp ce cheia publică este distribuită deschis tuturor corespondenților.

O pereche de chei - private și publice - poate fi folosită atât pentru rezolvarea problemelor de autentificare (Fig. 4), cât și de secretizare (confidențialitate) (Fig. 6).

Conform primei scheme (Fig. 4): utilizatorul A trimite în prealabil cheia publică către corespondenții săi B și C, iar apoi le trimite un mesaj criptat cu cheia sa privată.

Mesajul putea fi trimis doar de A (doar el are cheia privată), adică problema de autentificare este garantată. Dar, de exemplu, B nu este sigur că scrisoarea nu a fost citită și de C. Astfel, problema confidențialității nu este asigurată

Schema care asigură secretul (confidenţialitatea) este prezentată în Fig. 6.

Mesajul poate fi citit doar de A, intrucat doar el are cheia privata care dezvaluie mesajul, adica problema confidentialitatii este rezolvata. Dar A nu poate fi sigur că mesajul nu a fost trimis de B pretinzând că este C. Astfel, problema de autentificare nu este rezolvată

Pentru a asigura schimbul confidențial de mesaje în corespondență între două persoane, este necesar să existe două perechi de chei (Fig. 5).

Pentru a asigura schimbul confidențial de mesaje în corespondență între două persoane, este necesar să aveți două perechi de chei

Când criptați folosind o pereche de chei, nu este necesar să trimiteți cheia publică tuturor corespondenților. Este mult mai convenabil să postați această cheie pe Internet pe un server cu acces deschis. Apoi toată lumea poate descărca această cheie și vă poate trimite un mesaj secret pe care nimeni, în afară de dvs., nu îl va citi.

Criptosistemele simetrice sunt înțelese ca sisteme în care aceeași cheie este folosită pentru a cripta și decripta mesajele (Fig. 9.1).

Întreaga varietate de sisteme simetrice se bazează pe următoarele clase de bază:

Substituții mono și multi-alfabetice;

Rearanjamente;

Cifre bloc;

Gumarea.

Înlocuiri

În substituțiile directe, fiecare caracter din textul sursă este înlocuit cu unul sau mai multe caractere. Una dintre subclasele importante de substituții directe este substituții monoalfabetice, în care se stabilește o corespondență unu-la-unu între caracterul e i al alfabetului original și caracterul corespunzător c j al textului cifrat. Toate metodele de substituție monoalfabetică pot fi reprezentate ca transformări numerice ale literelor din textul sursă, considerate numere, folosind următoarea formulă:

c ≡ (a*e +s) mod K , (5.1)

unde a este coeficientul zecimal; s – coeficientul de deplasare; e – codul literei textului sursă; c – codul literei criptate; K – lungimea alfabetului; mod este operația de calculare a restului de împărțire a expresiei în paranteze la modulul K.

Exemplu. Cifrul Cezarului

Să luăm în considerare criptarea într-un alfabet format din 26 de litere latine și un caracter spațiu (spațiul va fi reprezentat de semnul #). Atribuim codul 0 semnului #, codul 1 literei A, codul 2 la B, codul 26 literei Z.

Să luăm următorii parametri: a = 1 s = 2 K = 27

Formula de criptare va lua forma

c ≡ (e + 2) mod 27 (5.2)

Alfabetul de intrare:

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Ieșire alfabet

B C D E F G H I J K L M N O P Q R S T U V W X Y Z # A

(Literele sunt deplasate cu două poziții: A-C B-D etc.)

Apoi mesajul original în formă criptată va arăta astfel:

Pentru a decripta (pentru cazul în care a=1) se folosește următoarea formulă

e ≡ (K+ c - s) mod K (5.3)

Substituție polialfabetică simplă schimbă secvențial și ciclic alfabetele utilizate (în cazul anterior, un alfabet a fost folosit pentru criptare). Cu substituirea m-alfabetică, semnul a 1 din mesajul original este înlocuit cu un semn din alfabetul B 1, semnul a 2 - cu un semn din alfabetul B 2, ... semnul a m - cu un semn din alfabetul B m, semnul a m +1 - cu un semn din alfabetul B 1 etc. .d. Efectul utilizării substituției multi-alfabetice este că oferă mascarea statisticilor de frecvență a limbii sursă, deoarece un anumit caracter din alfabetul A este convertit în mai multe caractere diferite din alfabetul cifru B.

Exemplu

Mesajul original: WE#NEED#SNOW

Cheie: SECURITYSECU

Cuvântul SECURITATE este selectat ca cheie. Cuvântul este scris sub mesajul original, când literele cheii sunt epuizate, începem să repetăm ​​cuvântul până când literele mesajului original se epuizează. Fiecare literă a cheii (mai precis, codul acesteia) va specifica o schimbare în alfabetul sursă pentru a obține simbolul criptat. Folosim litere latine și semnul # în loc de spațiu ca alfabet.

Cheie inițială Cipher

(W + S) mod 27 = (23 + 19) mod 27 = 15→O

(E + E) mod 27 = (5 + 5) mod 27 = 10 → J

(# + C) mod 27 = (0 + 3) mod 27 = 3 → C

Exercițiu

Vă sugerăm ca exercițiu să compuneți criptarea până la capăt.

Rearanjamente

Caracterele din textul sursă pot fi rearanjate după o anumită regulă.

Exemplul 1. Permutarea liniară

Să presupunem că trebuie să criptați următorul text:

ÎNCĂRCARE#PORTOCALE#BUTOI

Să împărțim textul în grupuri de lungime, de exemplu 4 caractere:

GRUZ ITe# APEL BSIN Y#BO CHKAH

Să stabilim următoarea regulă de permutare: „rearanjați grupuri de patru litere în ordinea 1-2-3-4 în ordinea 3-1-4-2”.

Obținem următorul text cifrat:

UGRZ EI#T EALP INS BYO# ACHK

cometariu

Dacă lungimea mesajului nu este un multiplu al lungimii grupului, atunci ultimul grup este completat cu simboluri (de exemplu, spații) până la lungimea necesară.

Înregistrarea textului original și citirea ulterioară a textului cifrat se pot face pe diferite căi ale unei figuri geometrice, de exemplu, un pătrat sau dreptunghi.

Exemplul 2. zăbrele Cardano

O grilă Cardano este o carte dreptunghiulară cu găuri, de obicei pătrate, care atunci când este plasată pe o coală de hârtie lasă la vedere doar unele părți din ea. Numărul de rânduri și coloane este par. Cardul este realizat în așa fel încât atunci când este rotit secvenţial, fiecare celulă a foii care stă la baza acesteia să fie ocupată. Dacă grila este pătrată, atunci o puteți roti succesiv în jurul centrului pătratului cu 90°.

Criptare:

VAVOCHS MUNOTI MYZHROE UXOY MDOSTO YASNTV

Descifrați mesajul rotind grătarul în sensul acelor de ceasornic cu 90°. Scrieți mesajul în pătrat, rând cu rând.

Numai metodele de înlocuire și permutare nu oferă puterea criptografică necesară. Prin urmare, ele sunt utilizate împreună, precum și utilizarea metodei aditive. În criptarea aditivă, textul original este mai întâi criptat folosind metoda de substituție, transformând fiecare literă într-un număr, iar apoi se adaugă un gamma secret (vezi mai jos) fiecărui număr - o secvență de numere pseudo-aleatorie.

Cifre bloc

Cifrurile bloc sunt o familie de transformări reversibile ale blocurilor (porțiuni cu lungime fixă) ale textului sursă.

Prin bloc de N biți înțelegem o succesiune de zerouri și uni de lungime N:

x = (x 0 , x 1 , …x N -1) . (5,5)

x în Z 2, N poate fi interpretat ca un vector și ca o reprezentare binară a unui număr întreg

(5.6)

Prin cifru bloc înțelegem elementul

Unde x = (x 0 , x 1 , …x N -1), y = (y 0 , y 1 , …y N -1)

Deși cifrurile bloc sunt un caz special de substituții, acestea ar trebui luate în considerare în special pentru că, în primul rând, majoritatea cifrurilor simetrice utilizate în sistemele de transmisie de date sunt cifrurile bloc, iar în al doilea rând, cifrurile bloc sunt descrise mai convenabil în formă algoritmică decât ca substituții obișnuite .

Cifruri în flux

Cifrurile de flux sunt un tip de gamma și convertesc textul simplu în text criptat, câte un bit. Un generator de secvențe de chei, uneori numit generator de chei de rulare, produce o secvență de biți k 1 , k 2 , … k N . Această secvență de taste este adăugată modulo 2 („exclusiv sau”) cu secvența de biți a textului sursă e 1, e 2, ..., e N:

Pe partea de recepție, textul cifrat este adăugat modulo 2 cu o secvență de taste identică pentru a obține textul original:

Stabilitatea sistemului depinde în întregime de structura internă a generatorului de secvențe de taste. Dacă generatorul produce o secvență cu o perioadă scurtă, atunci stabilitatea sistemului este scăzută. Dimpotrivă, dacă generatorul produce o secvență infinită de biți cu adevărat aleatori, atunci vom obține un pad unic cu durabilitate ideală.

Cifrurile de flux sunt cele mai potrivite pentru criptarea fluxurilor continue de date, de exemplu în rețelele de date.

Întregul set de algoritmi este împărțit în două grupuri mari: blocȘi în linie. Diferența dintre ele este că algoritmii primului grup acceptă textul sursă în blocuri de mai multe caractere, în timp ce algoritmii celui de-al doilea grup transformă secvențial fluxul de text sursă caracter cu caracter sau chiar bit cu bit. Folosirea unui cifru bloc înseamnă că textul original este împărțit în blocuri de o anumită lungime și toate transformările sunt efectuate separat pe fiecare bloc. Uneori, transformările dintr-un bloc pot depinde de rezultatele transformărilor din blocurile anterioare.

Cu criptarea fluxului, fiecare caracter al textului sursă poate fi reprezentat sub formă de biți, adică în formă binară. Apoi, fiecare bit din secvența rezultată poate fi convertit conform unei anumite reguli. Ca o astfel de regulă de conversie, adăugarea pe biți a textului sursă cu o secvență secretă de biți este adesea folosită. Secvența de biți secretă joacă rolul cheii de criptare în cifrurile de flux simetrice. Operația de adăugare pe biți în sine, numită și operația de adăugare modulo doi, operația „SAU exclusivă” sau pur și simplu XOR, este foarte simplă. La adăugare, fiecare bit este înlocuit conform regulii:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0

Pentru a decripta, trebuie să efectuați procedura inversă. Convertiți criptograma în formă binară și adăugați-o bit cu bit cu aceeași secvență secretă care a fost folosită pentru criptare.

Baza majorității cifrurilor de flux este un fel de generator de secvențe pseudo-aleatorie. Sarcina unui astfel de generator este de a produce o secvență de biți bit cu bit, care este uneori numită și scara cheie a cifrului. Acest gamma este utilizat în operația de adăugare pe biți cu textul sursă. Cheia de criptare reală în acest caz este starea inițială (și, eventual, structura generatorului). Evident, oricine cunoaște algoritmul de generare a secvenței și datele inițiale de intrare pentru algoritm va putea produce întreaga gamă. Principala caracteristică a unor astfel de coduri de flux este puterea criptografică a generatorului de secvențe pseudo-aleatorie. Generatorul trebuie să ofere următoarele proprietăți importante:

- produce secvențe de biți care sunt apropiate de secvențele aleatoare în caracteristicile lor statistice;

- asigurarea producerii unor secvențe suficient de lungi, nerepetitive;

- au suficientă viteză pentru a lucra în timp real.

Prima dintre aceste proprietăți este necesară pentru a preveni un atacator să ghicească gama cheie a cifrului. A doua proprietate asigură că metoda de criptare este rezistentă la diferite atacuri. Această din urmă proprietate permite utilizarea practică a cifrurilor de flux în timp real.

Operațiune înlocuitori (transmutație), care se mai numește uneori și operație substituiri , constă în înlocuirea unor caractere din textul sursă cu alte caractere. Caracterele textului sursă și caracterele cu care sunt înlocuite pot aparține aceluiași alfabet (de exemplu, limba rusă) sau pot fi diferite.

Operațiune permutări constă în rearanjarea caracterelor textului sursă după o anumită regulă.

Cifrurile de substituție și permutare sunt printre cele mai vechi metode de criptare cunoscute. Metode similare sunt cunoscute din cele mai vechi timpuri. În timp, regulile de rearanjare și înlocuire au devenit mai complexe. Baza teoretică pentru construirea unor cifruri puternice a fost dezvoltată la mijlocul secolului trecut de celebrul om de știință american Claude Elwood Shannon (1916-2001), renumit și pentru lucrările sale fundamentale în domeniul teoriei informației. Odată cu apariția lucrării sale „Teoria comunicării în sistemele secrete”, criptografia se transformă într-o disciplină științifică strictă. S-a propus un aparat matematic pentru construirea de cifruri puternice și s-au formulat principiile de bază dispersieȘi agitând.


Difuzia – nivelarea influenței proprietăților statistice ale textului simplu asupra criptogramei. Scattering răspândește influența unui caracter de text simplu asupra unui număr mare de caractere criptograme. Imprăștirea este de obicei realizată folosind tehnici de permutare.

Amestecarea – complicarea restabilirii relației dintre proprietățile statistice ale textului simplu și criptogramă, precum și dintre cheie și criptogramă. Amestecarea corespunde utilizării metodelor de înlocuire [Alf2001].

Folosind aceste principii, în a doua jumătate a secolului trecut a fost propusă o arhitectură pentru construirea cifrurilor bloc simetrice. Arhitectura a fost numită Rețele Feisthal(Rețeaua Feistal), numită după Horst Feistal, un angajat IBM. Această arhitectură a determinat pentru o lungă perioadă de timp direcția principală de dezvoltare a standardelor în domeniul criptării datelor.

În rețeaua Feistal, blocul de date original este transformat. Ieșirea rețelei este un bloc de date convertit. Blocul original este împărțit în două părți X1 și X2. Blocul de date de ieșire constă, de asemenea, din două părți Y1 și Y2. Partea Y1 este valoarea directă a lui X2. Valoarea lui Y2 este rezultatul adunării părții X1 și a rezultatului funcții de criptare F. Funcția de criptare aici este înțeleasă ca o funcție a două argumente: blocul de date de intrare și cheia secretă. Funcția în sine reprezintă o transformare nespecificată asupra datelor. În rețeaua Feistal, argumentele funcției de criptare F sunt blocul de date de intrare X2 și cheia secretă de criptare K.

Formulele analitice pentru transformările descrise sunt următoarele:

Y1 = X2

Y2 = X1  F(X2, K)

O proprietate importantă a rețelei Feistal este că transformările efectuate cu ajutorul acesteia sunt reversibile. Transformările sunt reversibile chiar dacă funcția de criptare F nu este reversibilă. Adică, este întotdeauna posibil să se obțină blocul de date original X din blocul de date Y

X1 = Y2  F(Y1, K)

X2 = Y1

Standardele moderne de criptare a datelor deschise sunt cifruri bloc simetrice care utilizează transformări compuse (substituții, permutări etc.) pentru a cripta datele. Astfel de standarde sunt recomandate pentru protecția informațiilor comerciale și neclasificate. Recomandarea de utilizare a standardului pentru a proteja informațiile comerciale și neclasificate înseamnă că nu ar trebui să fie utilizat pentru a cripta informațiile care sunt secrete de stat sau care necesită o autorizare specială. Cu toate acestea, acest lucru nu înseamnă că algoritmul este instabil sau netestat. În marea majoritate a cazurilor, puterea algoritmului este suficientă pentru a preveni concurenții sau cei nedoritori să-l pirateze într-un timp acceptabil. Hackingul în acest caz înseamnă decriptarea criptogramelor, adică. dezvăluirea textului original al unui mesaj fără a cunoaște cheia secretă. Posibilitatea unui astfel de hack depinde foarte mult de resursele atacatorilor (financiare, de calcul, intelectuale și altele). Din acest punct de vedere, statele conducătoare au resurse totale care depășesc semnificativ potențialul celor mai mari corporații comerciale. Din acest motiv, pentru păstrarea secretelor de stat, este indicat să folosiți algoritmi mai persistenti și nepublicați. În plus, algoritmii mai robusti necesită, de obicei, mai multe resurse și funcționează mai lent. În același timp, în sistemele civile și comerciale, viteza operațiunilor este adesea unul dintre cele mai importante criterii. În cele din urmă, utilizarea algoritmilor ultra-puternici poate deveni ineficientă din punct de vedere al costurilor pentru criptarea informațiilor cu o durată de viață foarte scurtă. Există puține motive pentru a folosi un cifr care va dura mulți ani pentru a sparge sau pentru a proteja mesajele care vor fi lipsite de valoare în câteva zile sau ore. Din motivele expuse mai sus, standardele oficiale de criptare guvernamentale publicate au un anumit compromis între o serie de criterii, cum ar fi: rezistență, viteză, ușurință de implementare, cost și altele.

DES- vechi standard de criptare federal din SUA;

GOST 28147-89- standard intern de criptare a datelor;

AES- noul standard federal de criptare din SUA.

Prezentarea este dată în ordinea cronologică a apariției acestor standarde. Funcționarea algoritmilor criptografici simetrici poate fi considerată ca funcționarea „cutiilor negre”. Intrarea este textul original și o cheie de criptare cu dimensiune fixă. Ieșirea este o criptogramă. Structura internă a unor astfel de algoritmi este de interes pentru dezvoltatori și criptoanalisti. Utilizatorii sunt interesați în primul rând de caracteristicile comparative ale algoritmilor, de rezultatele analizei rezistenței acestora și de domeniul de aplicare.

Standardul de criptare digitală (DES) a servit ca standard federal de criptare în Statele Unite de peste 20 de ani. Algoritmul a fost Algoritmul care stă la baza standardului a fost dezvoltat în 1974 la IBM. În 1977, standardul a fost publicat de Biroul Național de Standarde al SUA (NBS). A fost apoi aprobat de Institutul Național de Standarde și Tehnologie al SUA (NIST) în 1980 pentru a proteja informațiile comerciale și neclasificate. Din 1986, a devenit un standard internațional adoptat de ISO sub denumirea DEA-1.

Algoritmul care stă la baza DES aparține grupului de cifruri bloc simetrice. Lungimea cheii este de 64 de biți. Din care fiecare al optulea bit este folosit pentru verificarea parității. În consecință, cheia conține doar 56 de biți secreti. Blocul de date de intrare este, de asemenea, de 64 de biți.

Algoritmul se bazează pe arhitectura de rețea Feistal. Esența sa este de a efectua transformări în această rețea de mai multe ori la rând. Blocul de date de ieșire după o transformare este blocul de intrare pentru următoarea transformare. Fiecare astfel de transformare este numită runda de criptare. Uneori se mai numesc DES și alți algoritmi similari cifruri bloc iterative, unde o iterație înseamnă efectuarea unei transformări în rețeaua Feistal. DES are un total de șaisprezece runde de criptare.

Numărul de runde de criptare este o caracteristică importantă a unor astfel de cifruri iterative. Puterea cifrului față de metodele moderne de criptoanaliza, cum ar fi criptoanaliza diferențială și liniară, depinde de această valoare. După cum sa menționat în [Var98], utilizarea acestor metode a dat cele mai bune rezultate în domeniul analizei sistemelor de criptare bloc. Prezența a șaisprezece runde de criptare este minimul necesar pentru a se asigura că metodele de criptoanaliza de mai sus nu sunt mai ușoare decât o căutare exhaustivă a tuturor cheilor posibile. Trebuie spus că metodele de criptoanaliza diferențială și liniară au fost publicate în literatura deschisă relativ recent. În același timp, DES a fost dezvoltat și analizat încă din anii 70 ai secolului trecut. Acest lucru sugerează că capacitățile unor astfel de metode de spargere a cifrurilor sunt cunoscute de serviciile speciale de destul de mult timp.

Fiecare rundă de criptare din rețeaua Feistal folosește o cheie de criptare pentru a o transmite la intrarea funcției de criptare. Se numesc astfel de chei chei rotunde. În total, sunt folosite șaisprezece chei rotunde diferite. Fiecare astfel de cheie rotundă este obținută din cheia originală. O metodă pentru generarea unor astfel de chei este publicată în descrierea DES.

Funcția de criptare în sine nu este complicată. Se bazează pe regula de transformare a blocului de date de intrare. Această transformare constă în adăugarea blocului de date de intrare cu o cheie rotundă și apoi transformarea rezultatului rezultat în așa-numita S-box. Un S-box în DES este o matrice de 4 rânduri și 16 coloane. Fiecare celulă a matricei conține un număr de la 0 la 15. Un total de 8 astfel de matrici sunt publicate și utilizate în standard.

De-a lungul existenței sale, DES a devenit un algoritm de criptare foarte comun, implementat în numeroase sisteme și aplicații. Cu toate acestea, astăzi este deja un algoritm învechit care nu poate oferi durabilitatea necesară. Acest lucru se datorează în primul rând lungimii insuficiente a cheii de criptare pe 56 de biți adoptată în standard. La sfârșitul anilor 90 ai secolului trecut, compania RSA Security a organizat o serie de competiții deschise pentru a-l pirata. Sarcina competiției a fost de a descifra o criptogramă publicată pe site-ul companiei. Toate opțiunile au fost rezolvate folosind un atac de forță brută, adică prin forțarea cu succes a tuturor opțiunilor cheie posibile. Mai jos este un tabel cu o cronologie a hackurilor DES în competițiile deschise desfășurate de RSA Security:

Data

Timp de hacking

Putere

18.06.1997

96 de zile

7 miliarde de chei/sec.

23.02.1998

39 de zile

34 de miliarde de chei/sec.

17.07.1998

3 zile

88 de miliarde de chei/sec.

19.01.1999

22 ore 15 minute

245 miliarde de chei/sec.

După cum puteți vedea din tabelul de mai jos, în timpul ultimei competiții, DES a fost spart în mai puțin de o zi. După aceasta, RSA Security a încetat să mai organizeze competiții de hacking DES. Cel mai recent hack a fost un efort comun între două organizații non-profit: Electronic Frontier Foundation (www.eff.org) și Distributed Computing Technologies, Inc. (www.distributed.net) Selectarea posibilelor opțiuni cheie a fost efectuată folosind un computer special numit Deep Cracker, care a costat 250.000 USD. În plus, în procesul de procesare a cheilor, a fost folosită puterea computerelor conectate la Internet.

Rezultatele obținute au demonstrat în mod elocvent necesitatea adoptării unui nou standard în domeniul criptării datelor și ușurării restricțiilor la exportul produselor criptografice care existau la acea vreme în Statele Unite. Un nou standard a fost adoptat în 2001 și a fost numit Advanced Encryption Standard (AES). Acest standard și algoritmul de bază sunt discutate mai jos. De la sfârșitul anilor 90 ai secolului trecut, ca o consolidare a standardului existent, a fost utilizată modificarea acestuia, numită „Triple-DES” (Triple-DES).

Algoritmul GOST 28147-89 este un cifru bloc simetric și se bazează pe arhitectura de rețea Feistal. Lungimea cheii este de 256 de biți. Blocul de date de intrare este de 64 de biți. Algoritmul folosește 32 de runde de criptare. Fiecare rundă de criptare folosește o cheie rotundă, ale cărei valori sunt derivate din cheia secretă de criptare originală.

Funcțiile de criptare ale algoritmului GOST 28147-89, utilizate în fiecare rundă de criptare, au o structură simplă și constau în înlocuire simplă și operații de schimbare ciclică. Înlocuirile se fac în blocul S într-o matrice specială. Pentru algoritmul GOST 28147-89, nu este specificat un anumit tip de matrice de înlocuire. Fiecare dezvoltator și producător își poate crea propria matrice sau poate face o cerere către serviciile speciale care pot ajuta la pregătirea unei matrice criptografice. Dacă doriți, puteți modifica matricea de înlocuire în timp. Datorită faptului că matricea nu este specificată, uneori este numită și element cheie înlocuibil. Matricea are opt rânduri, șaisprezece coloane și fiecare celulă stochează patru biți de informații. Dimensiunea matricei este de 512 biți. Dacă adăugăm la aceasta dimensiunea cheii de criptare, dimensiunea totală a informațiilor secrete va fi de 768 de biți. Acest lucru oferă 2.768 de opțiuni posibile pentru a încerca toate valorile informațiilor secrete. Enumerarea unui astfel de număr de opțiuni depășește chiar și puterea prevăzută a tehnologiei computerelor și este complet inaccesibil în viitorul apropiat. Cu toate acestea, în mod corect, trebuie spus că doar cheia de criptare pe 256 de biți este o informație cu adevărat secretă. Structura matricelor chiar și nepublicate poate fi determinată teoretic prin analizarea funcționării software-ului sau hardware-ului. De asemenea, pot exista încercări de acces neautorizat la documentația tehnică privind implementarea algoritmului GOST 28147-89. Dar chiar și în acest caz, pentru a enumera complet toate cheile posibile, va fi necesar să efectuați 2256 de încercări. Acest număr de opțiuni rămâne încă gigantic și asigură că algoritmul este absolut rezistent la atacurile de forță brută.

În publicațiile deschise, nu a fost încă luată în considerare o singură metodă de succes de a pirata standardul național de criptare a datelor. Cu toate acestea, lucrarea [Mol02] pledează în favoarea înlocuirii standardului existent cu un nou algoritm. Potrivit autorilor, standardul existent, datorită arhitecturii sale, nu poate îndeplini cerințele moderne pentru viteza de conversie a datelor (mai mult de 2 Gbit/s). În plus, se observă că într-o serie de lucrări din ultimii ani, au fost descrise diferite atacuri potențiale legate de algoritmul GOST 28147-89.

Pentru standardul GOST 28147-89, sunt definite următoarele patru moduri de operare:

Înlocuire ușoară. Acesta este principalul și cel mai simplu mod de operare al algoritmului. Folosit pentru a cripta informațiile cheie.

Gumarea . În acest mod, este posibil să se genereze un gamma pseudo-aleatoriu cu proprietăți statistice foarte bune. De fapt, folosirea acestui mod vă permite să obțineți un cifr de flux dintr-un cifru bloc. Folosit pentru criptarea datelor.

Jocuri cu feedback . Acest mod diferă de precedentul prin felul în care produce gamma. Următorul element gamma este generat ca urmare a transformării blocului anterior de date criptate. Acest mod este uneori numit și modul gamma cu blocuri de blocare [Dom2000]. Fiecare bloc criptogramă depinde de toate blocurile anterioare de text simplu. Modurile Gamma pot procesa blocuri de date de intrare mai mici de 8 octeți. Această proprietate este utilizată pentru a cripta matrice de date de dimensiuni arbitrare.

Modul de generare a inserției de simulare . O inserție simulată este o valoare calculată folosind datele originale și cheia secretă. Folosind inserarea simulată, puteți determina dacă informațiile au fost aduse modificări în timpul transmiterii acesteia. Acest mod este utilizat pentru a detecta distorsiunile într-o matrice de date criptate cu o probabilitate specificată.

Standardul de criptare avansat (AES) a fost selectat printr-o competiție internațională deschisă organizată de NIST din SUA. Începutul competiției a fost anunțat pe 2 ianuarie 1997. Ca urmare a selecției inițiale din august 1998, au fost selectați cincisprezece algoritmi candidați. Apoi, un an mai târziu, în august 1999, cinci algoritmi au fost identificați ca finaliști ai competiției. Concursul s-a încheiat în octombrie 2000. Câștigătorul a fost algoritmul belgian RIJNDAEL dezvoltat de Vincent Rijmen și Joan Daemen. Acest algoritm a fost ales ca standard AES. Versiunea finală a standardului a fost publicată în noiembrie 2001. Algoritmul a fost aprobat ca un nou standard federal de criptare în Statele Unite sub codul FIPS-197 și este destinat procesării informațiilor comerciale și a informațiilor care nu conțin secrete de stat. Standardul a intrat în vigoare la 26 mai 2002 [Zen2002].

Standardul AES se bazează pe o arhitectură diferită de cea a rețelei Feisthal. Autorii algoritmului au numit această nouă arhitectură „Pătrat”. Esența sa constă în faptul că blocul de date original este scris octet cu octet în matrice. Procesul de criptare în sine constă în efectuarea în mod repetat a diferitelor transformări cu elementele unei astfel de matrice, precum și cu rândurile și coloanele acesteia. Arhitectura propusă are proprietăți bune de împrăștiere și amestecare Shannon.

Standardul AES oferă trei moduri de funcționare, în funcție de lungimea cheii utilizate. Lungimile cheilor posibile sunt 128, 192 și 256 de biți. Numărul de runde de criptare depinde de lungimea cheii utilizate; acestea sunt 10, 12 sau, respectiv, 14. Dimensiunea blocului de date sursă de intrare și a blocului de text cifrat de ieșire sunt aceleași și sunt întotdeauna de 128 de biți.

În timpul analizei algoritmului ca parte a competiției în curs, nu au fost găsite puncte slabe în acesta. Pentru a fi corect, trebuie spus că acest lucru se aplică tuturor algoritmilor care au fost finaliști în competiție. Toți sunt algoritmi puternici. Cu toate acestea, pe baza caracteristicilor combinate de performanță, ușurință de implementare, intensitate a resurselor și altele, RIJNDAEL s-a dovedit a fi cel mai preferat ca standard de criptare universal.

Beneficiile standardului AES includ:

- eficiență ridicată a implementării pe orice platformă;

- durabilitate ridicată;

- cerințe reduse de memorie;

- posibilitate de implementare pe carduri inteligente;

- procedura de generare rapida a cheilor;

- posibilitatea de paralelism a operaţiilor.


Mai jos este un tabel rezumat cu caracteristicile standardelor de criptare a datelor considerate [Vin2001].

DES

GOST 28147-89

AES

Dimensiunea blocului de date (biți)

Dimensiunea cheii
(pic)

128, 192, 256

Arhitectură

Rețeaua Feistal

Rețeaua Feistal

"Pătrat"

Numărul de runde

10, 12, 14

Structură rotundă

Simplu

Simplu

Complex

Operații utilizate

Operații aditive, înlocuire, permutări, schimburi

Operații aditive, înlocuire, schimburi

Operații pe câmpuri finite

Pentru a enumera toate cheile posibile pentru algoritmul DES, trebuie să rulați aproximativ 7,2x1016 opțiuni. Dimensiunea minimă a cheii în algoritmul AES este de 128 de biți. Pentru a enumera toate cheile posibile în acest caz, va trebui să verificați aproximativ 3.4x1038 opțiuni. Aceasta este de aproximativ 1021 de ori mai mult decât în ​​cazul DES. Pentru a enumera toate cheile cu lungimea de 256 de biți, va trebui să verificați un număr astronomic de opțiuni - aproximativ 1,1x1077 chei. Puterea noului standard de criptare AES împotriva atacurilor cu forță brută a devenit abia acum egală cu standardul intern GOST 28147-89.

Algoritmul GOST 28147-89 face extrem de ușoară generarea cheilor de criptare rotunde. Ele sunt considerate componente ale cheii secrete inițiale de criptare. În același timp, DES și AES folosesc algoritmi mult mai complecși pentru calcularea cheilor rotunde.

În comparație cu DES, algoritmul GOST 28147-89 este mai rapid. De exemplu, pe procesoarele Intel x86 implementarea GOST 28147-89 este de peste două ori mai rapidă decât implementarea DES. Pe procesorul Pention Pro-200 MHz, limita de performanță a algoritmului GOST 28147-89 este de 8 MB/sec. Tabelul de mai jos prezintă indicatorii de performanță comparativi ai standardelor GOST 28147-89 și AES

GOST 28147-89

AES

Pentium 166 MHz

2,04 MB/s

2,46 MB/s

Pentium III 433 MHz

8,30 MB/s

9,36 MB/s

Algoritmul GOST 28147-89 este mai convenabil pentru implementarea hardware și software decât DES, dar mai puțin convenabil decât AES. Standardele GOST 28147-89 și AES au valori comparabile pentru principalele caracteristici.

Pentru algoritmii de criptare simetrică în bloc (AS), sunt definite mai multe moduri principale de utilizare a acestora. Aceste moduri au fost inițial specifice utilizării algoritmului DES, dar de fapt pot fi aplicate oricărui algoritm bloc. De exemplu, unele dintre aceste moduri sunt analoge ale modurilor de operare definite pentru algoritmul GOST 28147-89. Modul selectat determină domeniul de aplicare al algoritmului de criptare bloc. Fiecare mod de operare are propriile sale avantaje și dezavantaje.

Modul electronic de coduri .

Cartea electronică de coduri (ECB)

Textul sursă este împărțit în blocuri. În acest mod, fiecare bloc este introdus în algoritmul de criptare și este convertit independent unul de celălalt. Fiecare bloc este, de asemenea, decriptat independent.

Avantaje:

- ușurința de implementare;

- capacitatea de a cripta mai multe mesaje cu o singură cheie fără a reduce securitatea;

- posibilitatea de paralel.

Defecte:

- corespondență unu-la-unu între blocuri de text simplu și criptograme;

- capacitatea de a repeta blocuri și de a înlocui blocuri în pachetul de informații;

- propagarea erorilor de text cifrat.


Zona de aplicare:

- criptarea altor chei și, în general, informații aleatorii;

- criptarea stocurilor de date cu acces aleatoriu.

Modul de înlănțuire a blocurilor de text cifrat .

Cipher Block Chaining (CBC)

Textul sursă este împărțit în blocuri. Asa numitul vector de inițializare– o secvență nesecretă și aleatorie de biți, egală ca lungime cu un bloc de date primite. Primul bloc de date inițiale este adăugat la vectorul de inițializare. Rezultatul adăugării este introdus în algoritmul de criptare. Criptograma rezultată este adăugată la următorul bloc de text sursă. Rezultatul adăugării este transmis la intrarea algoritmului de criptare și așa mai departe.


Avantaje:

- este dificil de manipulat textul simplu (înlocuire și înlocuire);

- Puteți cripta mai multe mesaje cu o singură cheie;

- decriptarea poate fi efectuată în paralel.

Defecte:

- textul cifrat este cu un bloc mai lung decât textul simplu;

- o eroare de sincronizare este fatală;

- propagarea erorilor de text cifrat;

- criptarea nu poate fi efectuată în paralel.

Zona de aplicare:

- criptarea fișierelor și mesajelor.


Modul de feedback al textului cifrat.

Cipher Feed Back (CFB)

La început, vectorul de inițializare este alimentat direct la intrarea algoritmului de criptare. Textul sursă este format din blocuri de k biți și k n, Unde n- lungimea blocului de date de intrare. Fiecare bloc de text sursă este adăugat la o parte a secvenței de lungime k biți obținuți ca rezultat al algoritmului de criptare. Rezultatul adunării este un bloc de text cifrat. Valoarea secvenței obținute la ieșirea algoritmului de criptare este deplasată cu k biți la stânga. Cea mai corectă k biți ai secvenței sunt ocupați de biți ai criptogramei. Secvența de date de intrare nou formată este alimentată la intrarea algoritmului de criptare și așa mai departe.


Avantaje:

- Dimensiunea blocului de date poate diferi de dimensiunea standard;

- este dificil să manipulezi textul simplu;

- capacitatea de a cripta mai multe mesaje cu o singură cheie.

Defecte:

- unicitatea obligatorie (dar nu secretul) vectorului de inițializare;

- propagarea rapidă a erorilor de text cifrat.

Zona de aplicare:

- criptarea caracter cu caracter a fluxului de date (transferul de date între server și client în timpul procesului de autentificare).


Modul feedback de ieșire .

Feedback de ieșire (OFB)

Acest mod diferă de cel anterior prin aceea că partea din secvența de intrare nou generată este completată k biți nu ai criptogramei, ci ai secvenței de ieșire obținute la pasul anterior. Această diferență vă permite să formulați complet intervalul de cifrare în avans. Acest gamma poate fi apoi folosit pentru a cripta textul simplu, de exemplu, așa cum se întâmplă în cifrurile de flux.


Avantaje:

- erorile de text cifrat nu sunt propagate;

- posibilitatea pregătirii prealabile a scalei;

- Dimensiunea blocului de date poate diferi de dimensiunea standard.

Defecte:

- eroarea de sincronizare este fatală;

- ușor de manipulat text simplu;

- unicitatea obligatorie (dar nu secretul) vectorului de inițializare.

Zona de aplicare:

- sisteme sincrone de mare viteză (comunicații prin satelit);

- în general, în sistemele care funcționează într-un mediu cu probabilitate mare de erori în timpul transmiterii informațiilor.


Moduri suplimentare de criptare

Există, de asemenea, o serie de moduri de criptare suplimentare:

· Modul Propagation Block Chaining (PCBC).

· Modul de înlănțuire a blocurilor de text cifrat cu sumă de control (CBCC).

· Mod feedback neliniar de ieșire (OFBNLF).

· Plaintext Block Chaining (PBC).

· Modul Plaintext Feedback (PFB).

· Înlănțuirea blocurilor de text prin diferențe de text simplu (CBCPD).

Conceptul de criptare

Criptarea ¾ este o metodă de transformare a informațiilor folosită pentru a stoca informații importante în surse nesigure sau pentru a le transmite prin canale de comunicare nesecurizate. Conform GOST 28147-89, criptarea este procesul de criptare sau decriptare.

O cheie de criptare este informația secretă utilizată de un algoritm criptografic la criptarea/decriptarea mesajelor. Când utilizați același algoritm, rezultatul criptării depinde de cheie. Lungimea cheii este principala caracteristică a puterii criptografice și este măsurată în biți.

În funcție de structura cheilor utilizate, metodele de criptare sunt împărțite în următoarele tipuri:

· criptare simetrică: se folosește aceeași cheie pentru criptare și decriptare;

· criptare asimetrică: o cheie (publică) este folosită pentru criptare, iar alta (privată, secretă) este folosită pentru decriptare. Acest tip de criptare se mai numește și criptare cu cheie publică.

Diferite tipuri de criptare au puteri criptografice diferite.

Criptarea simetrică este o metodă de criptare în care aceeași cheie criptografică este utilizată pentru criptare și decriptare. Cheia algoritmului trebuie ținută secretă atât de expeditor, cât și de destinatarul mesajului. Cheia algoritmului este aleasă de părți înainte de începerea schimbului de mesaje.

Cifrurile simetrice vin în următoarele tipuri:

· cifruri bloc. Ei procesează informații în blocuri de o anumită lungime (64, 128 de biți etc.), aplicând o cheie blocului într-o ordine prescrisă, de obicei prin mai multe cicluri de amestecare și înlocuire, numite runde. Rezultatul repetării rundelor este un efect de avalanșă - o pierdere tot mai mare a corespondenței biților între blocurile de date simple și criptate.

· stream ciphers, în care criptarea este efectuată pe fiecare bit sau octet al textului original (plat) folosind gamma. Un cifr de flux poate fi creat cu ușurință pe baza unui cifru bloc (de exemplu, GOST 28147-89 în modul gamma), lansat într-un mod special. Gamma este procesul de „impunere” a unei anumite secvențe (secvență gamma) pe text simplu. De exemplu, aceasta ar putea fi o operațiune „SAU exclusivă”. La decriptare, operația se repetă, rezultând text simplu.

Parametrii algoritmilor de criptare: puterea, lungimea cheii, numărul de runde, lungimea blocului procesat, complexitatea implementării hardware/software.

Exemple de algoritmi simetrici: DES (Standard de criptare a datelor, standard de criptare a datelor), GOST 28147-89.

Comparație cu criptarea asimetrică:



Avantaje:

· viteza (conform Criptografiei Aplicate - cu 3 ordine de mărime mai mare);

· ușurință în implementare (datorită operațiunilor mai simple);

· lungime mai mică necesară a cheii pentru o durabilitate comparabilă;

· cunoștințe (datorită vârstei mai mari).

Defecte:

· complexitatea managementului cheilor într-o rețea mare. Înseamnă o creștere pătratică a numărului de perechi de chei care trebuie generate, transmise, stocate și distruse în rețea. Pentru o rețea de 10 abonați sunt necesare 45 de chei, pentru 100 deja 4950, pentru 1000 - 499500 etc.;

· complexitatea schimbului de chei. Pentru a-l utiliza, este necesar să se rezolve problema transferului fiabil al cheilor către fiecare abonat, deoarece este necesar un canal secret pentru a transfera fiecare cheie ambelor părți.

Pentru a compensa deficiențele criptării simetrice, în prezent este utilizată pe scară largă o schemă criptografică combinată (hibridă), în care datele sunt transmise folosind criptarea asimetrică. cheia de sesiune, folosit de părți pentru a face schimb de date folosind criptarea simetrică.

O proprietate importantă a cifrurilor simetrice este că nu pot fi folosite pentru a confirma calitatea de autor, deoarece cheia este cunoscută de fiecare parte.

Această parte abordează următoarele probleme:

  • Tipuri de cifruri
  • Cifre de substituție
  • Cifre de permutare
  • Metode de criptare
  • Algoritmi simetrici si asimetrici
  • Criptografia simetrică
  • Criptografia asimetrică
  • Blocați și transmiteți coduri în flux
  • Vectori de inițializare
  • Metode de criptare hibridă
Cifrurile simetrice sunt împărțite în două tipuri principale: substituție și permutare. Cifre de substituție înlocuiți biți, simboluri sau blocuri cu alți biți, simboluri sau blocuri. Cifre de permutare nu modificați textul sursă, ci mută semnificațiile originale în textul sursă - rearanjează biți, caractere sau blocuri de caractere pentru a ascunde sensul original.

Cifrurile de substituție folosesc o cheie care specifică modul în care trebuie efectuată înlocuirea. ÎN Cifrul lui Cezar fiecare caracter a fost înlocuit cu caracterul la trei poziții mai jos de acesta în alfabet. Algoritmul a fost alfabetul, iar cheia a fost instrucțiunea „schimbați cu trei caractere”.

Substituția este folosită de algoritmii simetrici moderni, dar este dificil de comparat cu o metodă atât de simplă precum cifrul Caesar. Cu toate acestea, cifrul Caesar este un exemplu simplu și clar al conceptului de funcționare a unui cifr de substituție.

Într-un cifr de permutare, valorile sunt amestecate sau puse într-o ordine diferită. Tasta specifică poziția în care trebuie mutată valoarea, așa cum se arată în Figura 6-6.

Figura 6-6. Cifru de permutare


Acesta este cel mai simplu exemplu de cifru de permutare, arată doar cum se efectuează permutarea. Dacă sunt implicate funcții matematice complexe, permutarea poate deveni destul de dificil de spart. Algoritmii simetrici moderni folosesc simultan secvențe lungi de substituții complexe și permutări ale simbolurilor mesajului criptat. Algoritmul conține posibil metode pentru procesele de substituție și permutare (reprezentate în formule matematice). Cheia sunt instrucțiunile pentru algoritm, specificând exact cum trebuie sa are loc prelucrarea și în ce secvență. Pentru a înțelege relația dintre algoritm și cheie, aruncați o privire la Figura 6-7. Figurat vorbind, algoritmul creează diverse casete, fiecare având propriul său set (diferit de celelalte) de formule matematice care indică etapele de substituție și permutare care trebuie efectuate asupra biților care se încadrează în această casetă. Pentru a cripta un mesaj, valoarea fiecărui bit trebuie să treacă prin casete diferite. Cu toate acestea, dacă fiecare dintre mesajele noastre trece prin același set de cutii poștale în aceeași secvență, un atacator poate face cu ușurință o inginerie inversă a acestui proces, să spargă cifrul și să obțină textul simplu al mesajului nostru.

Figura 6-7. Relația dintre cheie și algoritm


Pentru a contracara un atacator, se folosește o cheie, care este un set de valori care indică ce casete trebuie folosite, în ce secvență și cu ce valori. Deci, dacă mesajul A este criptat cu cheia 1, cheia necesită ca mesajul să treacă prin casetele 1, 6, 4 și 5. Când trebuie să criptăm mesajul B, folosim cheia 2, care necesită ca mesajul să treacă prin casetele 8 , 3, 2 și 9. Cheia adaugă aleatorie și secret la procesul de criptare.

Cifrurile simple de substituție și permutare sunt vulnerabile la atacurile care efectuează analiza frecventei (analiza de frecventa). În fiecare limbă, unele cuvinte și modele sunt folosite mai des decât altele. De exemplu, în textul englez, litera „e” este de obicei folosită mai des. Atunci când efectuează analiza de frecvență a unui mesaj, atacatorul caută cele mai frecvente modele repetate de 8 biți (care formează caracterul). Dacă găsește, de exemplu, 12 modele de opt biți într-un mesaj scurt, poate trage concluzia că cel mai probabil este litera „e” – litera cel mai des folosită în limbă. Acum atacatorul poate înlocui acești biți cu litera „e”. Acest lucru îi va oferi un avans într-un proces care îi va permite să facă inginerie inversă și să restabilească mesajul original.

Algoritmii moderni simetrici folosesc tehnici de substituție și permutare în procesul de criptare, dar folosesc (ar trebui să folosească) matematică care este prea complexă pentru a permite unui atac atât de simplu de analiză a frecvenței să aibă succes.

Funcții de generare a cheilor. Pentru a genera chei complexe, de obicei este creată mai întâi o cheie principală, din care apoi sunt generate cheile simetrice. De exemplu, dacă o aplicație este responsabilă pentru generarea unei chei de sesiune pentru fiecare entitate care o accesează, nu ar trebui să distribuie pur și simplu copii ale aceleiași chei. Diferitele entități necesită chei simetrice diferite pe fiecare conexiune pentru a minimiza durata de timp în care sunt utilizate. Chiar dacă un atacator interceptează traficul și sparge cheia, el va putea vedea doar informațiile transmise în cadrul sesiunii corespunzătoare. Noua sesiune va folosi o cheie diferită. Dacă două sau mai multe chei sunt generate dintr-o cheie principală, acestea sunt apelate subchei (subcheie).

Funcțiile de generare a cheilor (KDF – funcția de derivare a cheilor) sunt utilizate pentru a genera chei formate din valori aleatorii. Diferite valori pot fi utilizate independent sau împreună ca material cheie aleatoriu. Sunt creați algoritmi care folosesc hash-uri, parole și/sau săruri specifice care sunt trecute prin funcții matematice specificate de algoritm de multe ori. Cu cât acest material cheie trece de mai multe ori prin aceste funcții, cu atât este mai mare nivelul de încredere și securitate pe care îl poate oferi criptosistemul în ansamblu.


NOTĂ. Amintiți-vă că algoritmul rămâne static. Aleatoritatea proceselor de criptare este asigurată în principal de materialul cheie.


Deși există multe părți în procesul de criptare, există două părți principale: algoritmi și chei. După cum sa menționat mai devreme, algoritmii utilizați în sistemele informatice sunt formule matematice complexe care dictează regulile de conversie a textului simplu în text cifrat. Cheia este un șir de biți aleatori care este folosit de algoritm pentru a adăuga aleatorie procesului de criptare. Pentru ca două entități să comunice folosind criptarea, trebuie să utilizeze același algoritm și, în unele cazuri, aceeași cheie. În unele tehnologii de criptare, destinatarul și expeditorul folosesc aceeași cheie, în timp ce în alte tehnologii trebuie să folosească chei diferite, dar înrudite pentru a cripta și decripta informațiile. Următoarele secțiuni explică diferențele dintre aceste două tipuri de metode de criptare.

Algoritmii criptografici sunt împărțiți în algoritmi simetrici care folosesc chei simetrice (numite și chei secrete) și algoritmi asimetrici , care folosesc chei asimetrice (numite și chei publice și chei private).

Într-un sistem criptografic care utilizează criptografia simetrică, expeditorul și destinatarul folosesc două copii ale aceleiași chei pentru a cripta și decripta informațiile, așa cum se arată în Figura 6-8. Astfel, cheia are dublă funcționalitate și este utilizată atât în ​​procesul de criptare, cât și în procesul de decriptare. Se mai numesc și cheile simetrice chei secrete, deoarece Acest tip de criptare necesită ca fiecare utilizator să păstreze secretul cheii și să o protejeze în mod corespunzător. Dacă un atacator obține această cheie, o poate folosi pentru a decripta orice mesaj criptat pe ea care este interceptat.

Figura 6-8. Când se utilizează un algoritm simetric, expeditorul și destinatarul folosesc aceeași cheie pentru a cripta și decripta datele


Fiecare pereche de utilizatori necesită două copii ale aceleiași chei pentru a face schimb de date în siguranță, folosind criptografia simetrică. De exemplu, dacă Dan și Irina trebuie să facă schimb de date, ambii trebuie să obțină o copie a aceleiași chei. Dacă și Dan vrea să interacționeze cu Norm și Dave folosind criptografia simetrică, trebuie să aibă trei chei separate - una pentru fiecare prieten. Aceasta nu este o mare problemă până când Dan trebuie să interacționeze cu alte sute de oameni timp de câteva luni și să mențină un istoric al conversațiilor. La urma urmei, acest lucru va necesita utilizarea cheii adecvate pentru corespondența cu fiecare destinatar specific. În acest caz, poate deveni o sarcină descurajantă. Dacă zece persoane ar trebui să comunice în siguranță între ele folosind criptografia simetrică, ar avea nevoie de 45 de chei. Dacă o sută de oameni trebuie să interacționeze, vor avea nevoie de 4950 de chei. Formula pentru calcularea numărului necesar de chei simetrice este următoarea:

Numărul de chei = N(N – 1)/2, unde N este numărul de abonați


Când se utilizează algoritmi simetrici, expeditorul și destinatarul folosesc aceeași cheie pentru procesele de criptare și decriptare a informațiilor. Securitatea unor astfel de algoritmi depinde în întregime de cât de bine protejează utilizatorii cheile. În acest caz, securitatea depinde în întregime de personal, care trebuie să-și păstreze cheile secrete. Dacă o cheie este compromisă, toate mesajele criptate cu acea cheie pot fi decriptate și citite de un atacator. De fapt, devine și mai complex, deoarece cheile trebuie să fie distribuite în siguranță și actualizate atunci când este necesar. Dacă Den trebuie să interacționeze cu Norm pentru prima dată, Den trebuie să decidă cum să îi dea lui Norm în siguranță cheia. Dacă face acest lucru într-o manieră nesigură, cum ar fi pur și simplu trimițând cheia prin e-mail, acea cheie poate fi ușor interceptată și utilizată de un atacator. Prin urmare, Dan trebuie să dea cheia Normei într-un mod neconvențional. De exemplu, Dan ar putea să scrie cheia pe o unitate flash și să o așeze pe biroul lui Norm sau să o trimită către Norm printr-un curier de încredere. Procesul de distribuire a cheilor simetrice poate fi o sarcină foarte complexă și greoaie.

Deoarece ambii utilizatori folosesc aceeași cheie pentru a cripta și decripta mesajele, sistemele cripto simetrice pot oferi confidențialitate, dar nu autentificare sau non-repudiere. Un astfel de algoritm criptografic nu vă va permite să demonstrați cine a trimis cu adevărat mesajul, deoarece ambii utilizatori folosesc aceeași cheie.

Dar dacă criptosistemele simetrice au atât de multe deficiențe și probleme, de ce sunt folosite aproape peste tot? Deoarece oferă viteză de procesare foarte mare și sunt foarte greu de piratat. Algoritmii simetrici sunt mult mai rapizi decât cei asimetrici. Ele pot cripta și decripta cantități mari de date relativ rapid. În plus, datele criptate cu un algoritm simetric folosind o cheie lungă sunt foarte greu de spart.

Următoarea listă descrie punctele forte și punctele slabe ale criptosistemelor cu chei simetrice:

Puncte forte:

  • Mult mai rapid decât sistemele asimetrice
  • Este dificil de piratat atunci când utilizați o cheie lungă
Părți slabe:
  • Necesită un mecanism securizat de transfer al cheilor
  • Fiecare pereche de utilizatori are nevoie de o cheie unică; Pe măsură ce numărul de utilizatori crește, numărul tot mai mare de chei poate face ca gestionarea acestora să fie pur și simplu nerealistă.
  • Oferă confidențialitate, dar nu oferă autentificare sau non-repudiere
Mai jos sunt câteva exemple de algoritmi simetrici, care vor fi discutați în detaliu mai târziu în secțiunea Cifruri bloc și flux.
  • RC4, RC5 și RC6
Linkuri conexe:
  • Securitate în sisteme deschise, Nodul 208, „Criptografie cu chei simetrice”, de Paul Markovitz, Publicația specială NIST 800-7 (iulie 1994)
În criptografia cu cheie simetrică, aceeași cheie secretă este utilizată pentru criptare și decriptare, în timp ce în sistemele cu cheie publică sunt folosite chei diferite în aceste scopuri. asimetric ) cheile. În acest caz, două chei asimetrice diferite sunt legate între ele matematic. Dacă un mesaj este criptat cu o cheie, este necesară o altă cheie pentru a-l decripta.

În sistemele cu chei publice, se creează o pereche de chei, dintre care una este privată, iar cealaltă este publică. Cheie publică(cheia publică) poate fi cunoscută de toată lumea și cheie privată(cheia privată) ar trebui să fie cunoscută numai de proprietarul acesteia. Adesea, cheile publice sunt stocate în directoare și baze de date de adrese de e-mail care sunt disponibile public pentru oricine dorește să folosească acele chei pentru a cripta și decripta datele atunci când interacționează cu persoane. Figura 6-9 ilustrează utilizarea unor chei asimetrice diferite.
Cheile publice și private ale unui criptosistem asimetric sunt legate matematic, dar dacă cineva are cheia publică a unei alte persoane, este imposibil să cunoască cheia privată corespunzătoare. Astfel, dacă un atacator obține o copie a cheii publice a lui Bob, aceasta nu înseamnă că printr-o magie matematică va putea obține cheia privată corespunzătoare a lui Bob. Cu toate acestea, dacă cineva ajunge la cheia privată a lui Bob, va fi o mare problemă. Prin urmare, nimeni altul decât proprietarul nu ar trebui să aibă acces la cheia privată.

Figura 6-9. Criptosistem asimetric


Dacă Bob a criptat datele cu cheia sa privată, destinatarul ar avea nevoie de cheia publică a lui Bob pentru a le decripta. Destinatarul nu poate doar să decripteze mesajul lui Bob, ci și să îi răspundă lui Bob cu un mesaj criptat. Pentru a face acest lucru, trebuie să-și cripteze răspunsul cu cheia publică a lui Bob, apoi Bob poate decripta acest răspuns cu cheia sa privată. Când se folosește un algoritm asimetric, este imposibil să se cripteze și să decripteze un mesaj cu aceeași cheie aceste chei, deși sunt legate matematic, nu sunt aceleași (spre deosebire de algoritmii simetrici); Bob poate cripta datele cu cheia sa privată, apoi destinatarul le poate decripta cu cheia publică a lui Bob. Prin decriptarea unui mesaj folosind cheia publică a lui Bob, destinatarul poate fi sigur că mesajul a venit cu adevărat de la Bob, deoarece mesajul poate fi decriptat folosind cheia publică a lui Bob numai dacă a fost criptat folosind cheia privată corespunzătoare a lui Bob. Acest lucru oferă capabilități de autentificare deoarece Bob este (probabil) singurul care are această cheie privată. Dacă destinatarul dorește să fie sigur că singurul care poate citi răspunsul său va fi Bob, el trebuie să-și cripteze mesajul către Bob cu cheia publică a lui Bob. Atunci numai Bob va putea decripta acest mesaj, deoarece numai el are cheia privată necesară pentru a face acest lucru.

În plus, destinatarul poate alege să cripteze datele cu cheia privată, mai degrabă decât cu cheia publică a lui Bob. Ce ii va da asta? Autentificare. Bob va ști că mesajul a venit de la el și nu ar fi putut veni de la altcineva. Dacă el criptează datele cu cheia publică a lui Bob, aceasta nu va oferi autentificare deoarece oricine poate obține cheia publică a lui Bob. Dacă își folosește cheia privată pentru a cripta datele, atunci Bob poate fi sigur că mesajul a venit de la el. Cheile simetrice nu oferă autentificare deoarece ambele părți folosesc aceeași cheie, ceea ce nu poate garanta că mesajul provine de la o anumită persoană.

Dacă expeditorul este mai preocupat de confidențialitatea informațiilor transmise, ar trebui să-și cripteze mesajul cu cheia publică a destinatarului. Se numeste format de mesaj securizat (format de mesaj securizat), deoarece numai persoana care are cheia privată corespunzătoare va putea decripta acest mesaj.

Dacă autentificarea este mai importantă pentru expeditor, acesta ar trebui să cripteze datele transmise cu cheia sa privată. Acest lucru va permite destinatarului să fie sigur că persoana care a criptat datele este cea care are cheia privată corespunzătoare. Dacă expeditorul criptează datele cu cheia publică a destinatarului, aceasta nu oferă autentificare deoarece cheia publică este disponibilă tuturor.

Se apelează criptarea datelor folosind cheia privată a expeditorului format de mesaj deschis (format mesaj deschis), deoarece oricine poate decripta aceste date folosind cheia publică publică a expeditorului. Confidențialitatea nu este asigurată.

Atât cheile private, cât și cele publice pot fi folosite pentru a cripta și decripta datele. Nu credeți că cheia publică este necesară doar pentru criptare, iar cheia privată este necesară doar pentru decriptare. Trebuie înțeles că, dacă datele sunt criptate cu o cheie privată, nu pot fi decriptate cu aceasta. Datele criptate cu o cheie privată pot fi decriptate cu cheia publică corespunzătoare. Si invers.

Algoritmul asimetric este mai lent decât algoritmul simetric deoarece algoritmii simetrici efectuează funcții matematice relativ simple asupra biților din procesele de criptare și decriptare. Ele înlocuiesc și amestecă (mută) biți, ceea ce nu este foarte complicat și nu folosește mult procesor. Motivul pentru care sunt rezistenți la hacking este că îndeplinesc aceste funcții de multe ori. Astfel, în algoritmii simetrici, un set de biți trece printr-o serie mai lungă de substituții și permutări.

Algoritmii asimetrici sunt mai lenți decât algoritmii simetrici deoarece folosesc matematică mult mai complexă pentru a-și îndeplini funcțiile, ceea ce necesită mai mult timp CPU. Cu toate acestea, algoritmii asimetrici pot oferi autentificare și non-repudiere în funcție de algoritmul utilizat. În plus, sistemele asimetrice permit un proces de distribuție a cheilor mai simplu și mai ușor de gestionat decât sistemele simetrice și nu au problemele de scalabilitate pe care le au sistemele simetrice. Motivul acestor diferențe este că, în cazul sistemelor asimetrice, puteți trimite cheia publică tuturor persoanelor cu care doriți să interacționați, în loc să utilizați o cheie privată separată pentru fiecare dintre ele. În continuare, în secțiunea Metode de criptare hibridă a acestui domeniu, ne vom uita la modul în care aceste două sisteme pot fi utilizate împreună pentru a obține cele mai bune rezultate.

NOTĂ. Criptografia cu cheie publică este o criptare asimetrică. Acești termeni sunt folosiți interschimbabil.

Următoarele sunt punctele forte și punctele slabe ale algoritmilor cheie asimetrice:

Puncte forte

  • Proces de distribuție a cheilor mai bun decât sistemele simetrice
  • Scalabilitate mai bună decât sistemele simetrice
  • Poate oferi autentificare și non-repudiere
Părțile slabe
  • Funcționează mult mai lent decât sistemele simetrice
  • Efectuați transformări matematice complexe
Mai jos sunt exemple de algoritmi cu chei asimetrice.
  • Criptosistem cu curbă eliptică (ECC)
  • Algoritmul Diffie-Hellman
  • El Gamal
  • Algoritm de semnătură digitală (DSA – Algoritm de semnătură digitală)
  • Rucsac
Vom lua în considerare acești algoritmi în continuare în acest domeniu, în secțiunea „Tipuri de sisteme asimetrice”.

Tabelul 6-1 oferă un scurt rezumat al principalelor diferențe dintre sistemele simetrice și cele asimetrice.

Tabelul 6-1. Diferențele dintre sistemele simetrice și cele asimetrice


NOTĂ. Semnăturile digitale vor fi discutate mai târziu în secțiunea Semnături digitale.
Linkuri conexe:
  • Securitate în sisteme deschise, Nodul 210, „Criptografie cu chei asimetrice”, de Paul Markovitz, Publicația specială NIST 800-7 (iulie 1994)
  • Întrebări frecvente despre criptografia actuală, versiunea 4.1, secțiunea 2.1.4.5, „Ce este modul de feedback de ieșire?” de RSA Laboratories
Există două tipuri principale de algoritmi simetrici: cifrurile bloc, care operează pe blocuri de biți și cifrurile flux, care funcționează pe un bit la un moment dat.

Dacă utilizați pentru a cripta și decripta datele cifru bloc , mesajul este împărțit în blocuri de biți. Aceste blocuri sunt apoi transmise funcțiilor matematice pentru procesare, câte un bloc. Imaginați-vă că trebuie să criptați un mesaj către mama dvs. folosind un cifru bloc care funcționează în blocuri de 64 de biți. Mesajul dvs. are o lungime de 640 de biți, deci este împărțit în 10 blocuri separate de 64 de biți. Fiecare bloc este transmis secvenţial la intrarea funcţiei matematice. Acest proces continuă până când fiecare bloc este convertit în text cifrat. După aceea, îi trimiți un mesaj criptat mamei tale. Folosește același cifru bloc și aceeași cheie. Aceste 10 blocuri de text cifrat sunt introduse în algoritm în ordine inversă până când se obține textul simplu original.


Pentru a asigura puterea unui cifru, acesta trebuie să folosească suficient două metode de bază: confuzie și difuzie. Amestecarea se face de obicei folosind substituția, în timp ce difuziune - folosind rearanjare. Pentru ca un cifru să fie cu adevărat puternic, trebuie să folosească ambele metode pentru a face ingineria inversă practic imposibilă. Nivelul de amestecare și dispersie este indicat de caracterul aleatoriu al valorii cheie și de complexitatea funcțiilor matematice utilizate.

În algoritmi, împrăștierea poate apărea atât la nivelul biților individuali în blocuri, cât și la nivelul blocurilor în sine. Schimbarea se realizează folosind funcții de substituție complexe pentru a preveni un atacator să înțeleagă cum au fost înlocuite valorile originale și să obțină textul simplu original. Imaginează-ți că am 500 de blocuri de lemn, fiecare cu o literă pe el. Le aliniez pentru a face un mesaj (text simplu) din ei. Apoi înlocuiesc 300 dintre aceste blocuri cu blocuri dintr-un alt set (amesteci prin înlocuire). Apoi rearanjez toate aceste blocuri (dispersare prin amestecare) și las această grămadă. Pentru a putea reconstrui propoziția mea originală, trebuie să înlocuiți blocurile cu cele corecte și să le plasați în ordinea corectă. Noroc!

Schimbarea este efectuată pentru a crea o relație între cheie și textul cifrat rezultat. Această relație trebuie să fie cât mai complexă, astfel încât să fie imposibilă deschiderea cheii pe baza analizei textului cifrat. Fiecare valoare din textul cifrat trebuie să depindă de mai multe părți ale cheii, dar pentru un observator această relație dintre valorile cheii și valorile textului cifrat trebuie să apară complet aleatorie.

Scattering, pe de altă parte, înseamnă că un bit de text simplu afectează mai mulți biți de text cifrat. Înlocuirea unei valori în textul simplu ar trebui să aibă ca rezultat înlocuirea mai multor valori în textul cifrat, nu doar una. De fapt, într-un cifru bloc cu adevărat puternic, atunci când un bit din textul simplu este schimbat, aproximativ 50% dintre biții din textul cifrat ar trebui să se schimbe. Acestea. Dacă modificați doar un bit în textul simplu, aproximativ jumătate din textul cifrat se va schimba.

Cifrurile bloc folosesc atât amestecarea, cât și împrăștierea în metodele lor de operare. Figura 6-10 prezintă un exemplu conceptual de cifru bloc simplu. I se oferă patru blocuri a câte patru biți fiecare pentru procesare. Algoritmul bloc luat în considerare are două niveluri de cutii de înlocuire pe patru biți, numite cutii S. Fiecare S-box conține tabele de căutare utilizate de algoritm ca instrucțiuni pentru criptarea biților.

Figura 6-10. Mesajul este împărțit în blocuri de biți pe care sunt efectuate funcțiile de substituție și împrăștiere


Cheia specifică (vezi Figura 6-10) ce casete S ar trebui utilizate în procesul de amestecare a mesajului original de la text simplu citibil la text cifrat necitit. Fiecare S-box conține diferite metode de substituție și permutare care pot fi efectuate pe fiecare bloc. Acesta este un exemplu foarte simplu. În realitate, majoritatea blocurilor de criptare funcționează cu blocuri de 32, 64 sau 128 de biți și pot folosi mai multe S-box-uri.

După cum sa menționat mai devreme, cifrurile bloc îndeplinesc funcții matematice pe blocuri de biți. Spre deosebire de ei, cifruri în flux (cifrul fluxului) nu împărțiți mesajul în blocuri. Ei procesează mesajul ca un flux de biți și efectuează funcții matematice pe fiecare bit separat.

Când se folosește un cifru de flux, procesul de criptare convertește fiecare bit de text simplu într-un bit de text cifrat. Cifrurile de flux folosesc un generator de flux de chei care produce un flux de biți care sunt combinați XOR cu biți de text simplu pentru a produce un text cifrat. Acest lucru este prezentat în Figura 6-11.

Figura 6-11.Într-un cifr de flux, biții generați de generatorul de flux de cheie sunt XOR cu biții de text simplu ai mesajului

NOTĂ. Acest proces este foarte asemănător cu utilizarea tampoanelor unice de criptare descrise mai devreme. Biții individuali din pad-ul unic sunt utilizați pentru a cripta biții individuali ai mesajului utilizând operația XOR, iar în algoritmul de flux, biții individuali sunt creați de un generator de flux de cheie folosit și pentru a cripta biții mesajului folosind Operare XOR.

Dacă un criptosistem depinde doar de un algoritm de flux simetric, un atacator poate obține o copie a textului simplu și a textului cifrat rezultat, le poate XOR împreună și poate ajunge la un flux de chei utilizate pe care ulterior îl poate folosi pentru a decripta alte mesaje. Prin urmare, oamenii inteligenți au decis să introducă cheia în acest flux.

În cifrurile bloc, cheia determină ce funcții sunt aplicate textului simplu și în ce ordine. Cheia asigură caracterul aleatoriu al procesului de criptare. După cum sa menționat mai devreme, majoritatea algoritmilor de criptare sunt open source, astfel încât oamenii să știe cum funcționează. Singurul secret este cheia. În stream ciphers, aleatorietatea se realizează și prin cheie, făcând fluxul de biți cu care textul simplu este combinat cât mai aleatoriu posibil. Acest concept este ilustrat în Figura 6-12. După cum puteți vedea în această figură, atât expeditorul cât și destinatarul trebuie să aibă aceeași cheie pentru a genera același flux de chei pentru a putea cripta și decripta corect informațiile.

Figura 6-12. Expeditorul și destinatarul trebuie să aibă aceeași cheie pentru a genera același flux de chei



Vectorii de inițializare (IV) sunt valori aleatorii care sunt utilizate de algoritm pentru a se asigura că nu există modele în procesul de criptare. Acestea sunt partajate cu chei și nu trebuie să fie criptate atunci când sunt trimise destinatarului. Dacă nu se utilizează niciun vector de inițializare, două texte clare identice criptate cu aceeași cheie vor avea ca rezultat același text cifrat. Un astfel de șablon va simplifica în mod semnificativ sarcina atacatorului de a rupe metoda de criptare și de a dezvălui cheia. Dacă mesajul dvs. are o parte repetată (o frază sau un cuvânt), trebuie să vă asigurați că atunci când criptați fiecare parte repetată a textului simplu a mesajului, este creat un text cifrat diferit, de ex. nu va fi creat niciun șablon. Pentru a asigura o mai mare aleatorie în procesul de criptare, vectorul de inițializare este utilizat împreună cu cheia.

Cifrurile de flux puternice și eficiente au următoarele caracteristici:

  • Perioade lungi de modele care nu se repetă în valorile fluxului cheie. Biții generați de fluxul de chei trebuie să fie aleatori.
  • Flux de chei imprevizibil statistic. Biții produși la ieșirea generatorului keystream nu ar trebui să fie predictibili.
  • Fluxul de cheie nu are o relație liniară cu cheia. Dacă cineva a obținut valorile fluxului de cheie, acest lucru nu ar trebui să aibă ca rezultat să primească valoarea cheii.
  • Flux de chei uniform statistic (număr aproximativ egal de zerouri și unități). Fluxul cheie nu ar trebui să fie dominat de zerouri sau unu.
Cifrurile de flux necesită aleatorie și criptează câte un bit. Acest lucru necesită mai multe resurse CPU decât un cifru bloc, astfel încât cifrurile de flux sunt mai potrivite pentru implementare în hardware. Și cifrurile bloc, deoarece nu necesită atât de multe resurse de procesor, sunt mai ușor de implementat la nivel de software.
NOTĂ. Desigur, există atât cifruri bloc, implementate la nivel hardware, cât și cifruri flux, care funcționează la nivel software. Declarația de mai sus este pur și simplu un ghid de proiectare și implementare „cele mai bune practici”.


Cifre de flux și tampoane unice. Cifrurile în flux oferă același tip de securitate ca și pad-urile unice, așa că funcționează într-un mod similar. Cifrurile de flux nu pot oferi de fapt același nivel de securitate ca și pad-urile unice deoarece sunt implementate sub formă de software și instrumente automate. Cu toate acestea, acest lucru face cifrurile de flux mai practice.


Anterior, ne-am uitat la algoritmii simetrici și asimetrici și am observat că algoritmii simetrici sunt rapizi, dar au unele dezavantaje (scalabilitate slabă, management complex al cheilor, oferind doar confidențialitate), în timp ce algoritmii asimetrici nu au aceste dezavantaje, dar sunt foarte lenți. Acum să ne uităm la sistemele hibride care folosesc atât metode de criptare simetrice, cât și asimetrice.

Utilizarea combinată a algoritmilor asimetrici și simetrici


Criptografia cu cheie publică folosește două chei (publică și privată) generate de un algoritm asimetric, este folosit pentru a proteja cheile de criptare și pentru a le distribui. Cheia secretă este generată de un algoritm simetric și este utilizată pentru procesul principal de criptare. Aceasta este utilizarea hibridă a doi algoritmi diferiți: simetric și asimetric. Fiecare algoritm are propriile sale avantaje și dezavantaje, iar utilizarea lor împreună vă permite să obțineți ce este mai bun de la fiecare dintre ele.

Într-o abordare hibridă, aceste două tehnologii se completează reciproc, fiecare îndeplinește propriile funcții. Algoritmul simetric produce cheile utilizate pentru a cripta cea mai mare parte a datelor, iar algoritmul asimetric produce cheile folosite pentru a distribui automat cheile simetrice.

Cheia simetrică este folosită pentru a cripta mesajele pe care le trimiteți. Când prietenul tău primește un mesaj pe care l-ai criptat, el trebuie să-l decripteze, ceea ce necesită cheia simetrică pe care este criptat mesajul tău. Dar nu doriți să trimiteți această cheie într-un mod nesigur, deoarece... mesajul poate fi interceptat și cheia neprotejată poate fi extrasă din el de către un atacator pentru a fi folosită ulterior pentru a decripta și a citi mesajele dvs. Nu ar trebui să utilizați o cheie simetrică pentru a cripta mesajele decât dacă este protejată corespunzător. Pentru a securiza o cheie simetrică, se poate folosi un algoritm asimetric pentru a o cripta (vezi Figura 6-13). Dar de ce am folosi o cheie simetrică pentru a cripta mesajele și o cheie asimetrică pentru a cripta o cheie simetrică? După cum am menționat mai devreme, algoritmul asimetric este lent deoarece folosește matematică mai complexă. Și deoarece mesajul dvs. va fi cel mai probabil mai lung decât cheia, este mai logic să utilizați un algoritm mai rapid (simetric) pentru a-l cripta, iar unul mai lent (asimetric) care oferă servicii de securitate suplimentare este potrivit pentru criptarea cheii.

Figura 6-13.Într-un sistem hibrid, cheia asimetrică este utilizată pentru a cripta cheia simetrică, iar cheia simetrică este utilizată pentru a cripta mesajele


Cum funcționează asta în realitate? Să presupunem că Bill îi trimite lui Paul un mesaj și dorește ca numai Paul să-l poată citi. Bill criptează mesajul cu cheia secretă, acum are un text cifrat și o cheie simetrică. Cheia trebuie protejată, așa că Bill criptează cheia simetrică cu o cheie asimetrică. Algoritmii asimetrici folosesc o cheie privată și o cheie publică, așa că Bill criptează cheia simetrică cu cheia publică a lui Paul. Bill are acum textul cifrat al mesajului și textul cifrat al cheii simetrice. De ce a criptat Bill cheia simetrică cu cheia publică a lui Paul și nu cu cheia sa privată? Dacă Bill îl cripta cu propria sa cheie privată, oricine îl putea decripta cu cheia publică a lui Bill și putea obține o cheie simetrică. Totuși, Bill nu vrea ca cineva cu cheia sa publică să poată citi mesajele lui lui Paul. Bill vrea ca numai Paul să aibă această oportunitate. Așa că Bill a criptat cheia simetrică cu cheia publică a lui Paul. Dacă Paul și-ar fi protejat bine cheia privată, numai el ar putea citi mesajul lui Bill.

Paul primește mesajul lui Bill și își folosește cheia privată pentru a decripta cheia simetrică. Paul folosește apoi cheia simetrică pentru a decripta mesajul. Acum Paul poate citi un mesaj important și confidențial de la Bill.

Când spunem că Bill folosește o cheie pentru a cripta un mesaj și Paul folosește aceeași cheie pentru a-l decripta, asta nu înseamnă că ei fac toate aceste operațiuni manual. Software-ul modern face toate acestea pentru noi fără a ne cere să avem cunoștințe speciale pentru a-l folosi.

Totul aici este destul de simplu, trebuie să vă amintiți următoarele aspecte:

  • Un algoritm asimetric realizează criptarea și decriptarea utilizând chei private și publice care sunt legate matematic.
  • Algoritmul simetric realizează criptarea și decriptarea utilizând o cheie secretă partajată.
  • O cheie simetrică (secretă) este folosită pentru a cripta mesajele reale.
  • Cheia publică este folosită pentru a cripta cheia simetrică pentru o transmisie sigură.
  • O cheie secretă este aceeași cu o cheie simetrică.
  • O cheie asimetrică poate fi privată sau publică.
Deci, atunci când se folosește un sistem hibrid, algoritmul simetric creează o cheie secretă folosită pentru a cripta datele sau mesajele, iar cheia asimetrică criptează cheia secretă.

Cheia de sesiune (cheia de sesiune) este o cheie simetrică folosită pentru a cripta mesajele schimbate între doi utilizatori. O cheie de sesiune nu este diferită de cheia simetrică descrisă mai devreme, dar este valabilă doar pentru o sesiune de comunicare între utilizatori.

Dacă Tanya are o cheie simetrică pe care o folosește constant pentru a cripta mesajele dintre ea și Lance, acea cheie simetrică nu trebuie să fie regenerată sau schimbată. Pur și simplu folosesc aceeași cheie de fiecare dată când interacționează folosind criptarea. Cu toate acestea, reutilizarea prelungită a aceleiași chei crește probabilitatea interceptării acesteia și compromiterea comunicațiilor securizate. Pentru a evita acest lucru, ar trebui să generați o nouă cheie simetrică de fiecare dată când Tanya și Lance trebuie să comunice și să o utilizați doar pentru o sesiune de comunicare, apoi să o distrugeți (vezi Figura 6-14). Chiar dacă trebuie să interacționeze din nou în doar o oră, va fi generată o nouă cheie de sesiune.

Figura 6-14. O cheie de sesiune este generată pentru fiecare sesiune de interacțiune cu utilizatorul și este valabilă numai în cadrul acelei sesiuni


Plicuri digitale. Când oamenii sunt introduși pentru prima dată în criptografie, utilizarea împreună a algoritmilor simetrici și asimetrici poate provoca confuzie. Cu toate acestea, aceste concepte sunt foarte importante de înțeles deoarece sunt cu adevărat conceptele fundamentale ale criptografiei. Acest proces este folosit nu numai în clientul de e-mail sau în mai multe produse, el determină ordinea în care datele și cheile simetrice sunt procesate atunci când este transmis.
Utilizarea combinată a acestor două tehnologii se numește abordare hibridă, dar are și un nume mai general - plic digital (plic digital).




Cheia de sesiune oferă un nivel mai ridicat de protecție în comparație cu o cheie simetrică statică, deoarece este valabil doar pentru o sesiune de comunicare între două computere. Dacă un atacator este capabil să intercepteze cheia de sesiune, el o va putea folosi doar pentru a obține acces neautorizat la informațiile transmise pentru o perioadă scurtă de timp.

Dacă două computere trebuie să comunice folosind criptarea, trebuie mai întâi să treacă printr-un proces de „strângere de mână” în care convin asupra unui algoritm de criptare care va fi utilizat pentru a transmite o cheie de sesiune pentru a cripta în continuare datele pe măsură ce computerele comunică. În esență, două computere stabilesc o conexiune virtuală unul cu celălalt, numită sesiune. După încheierea unei sesiuni, fiecare computer distruge orice structuri de date create pentru acea sesiune, eliberează resurse și, printre altele, distruge cheia de sesiune utilizată. Sistemul de operare și aplicațiile efectuează aceste lucruri în fundal și utilizatorul nu trebuie să-și facă griji. Cu toate acestea, profesionistul în securitate trebuie să înțeleagă diferențele dintre tipurile de cheie și problemele asociate cu acestea.


NOTĂ. Cheile private și simetrice nu trebuie stocate și/sau transmise în text simplu. Deși acest lucru pare evident, multe produse software au fost deja compromise tocmai din acest motiv.

Probleme de securitate wireless. Am analizat diverse standarde 802.11 și protocolul WEP în domeniul 05. Printre lista extinsă de probleme cu WEP, există o problemă legată de criptarea datelor. Dacă este folosit doar WEP pentru a cripta traficul fără fir, atunci majoritatea implementărilor folosesc o singură cheie simetrică statistică pentru a cripta pachetele. Una dintre modificările și avantajele standardului 802.11i este că asigură că fiecare pachet este criptat cu o cheie de sesiune unică.