Sunteți pe pagina 1din 46

Criptografia – terminologie și modelul de bază al unui criptosistem

► Criptologia - Cadrul general: combinație între ”kruptos” (= ascuns) și „logos” (= studiu, știință).
Prin urmare, cuvântul criptologie implică dezvoltarea de metode pentru criptarea mesajelor, semnalelor,
(în general informații formulate ca secvențe de biți, fișiere text, secvențe vocale, video, etc.) precum și
metode de decriptare a acestora.
Astfel, criptologia poate fi împărțită în două domenii: criptografie și criptanaliză.
► Criptografia: scriere secretă (”Kruptos” - ascuns și ”grafie” - scriere) studiul metodelor care
permit transformarea sau codificarea informațiilor transmise printr-un canal de comunicație, într-o formă
care nu poate fi înțeleasă pentru oricine nu cunoaște o cheie adecvată.
► Canal de comunicație: rețea telefonică, rețea de calculatoare, rețeaua Internet, etc.
perturbări de ordin fizic⟹ erori de transmitere: zgomote, demodulări, etc.
detectarea și corectarea ∈ Teoria Codurilor
nesiguranță informația poate fi interceptată în vederea consultării neavizate
(atac pasiv al canalului)
informația poate fi modificată, ștearsă, distrusă (atac activ al canalului)

Figura 1: modul în care un expeditor transmite date unui receptor a.î. orice entitate care
interceptează datele nu poate determina conținutul acestora:

Figura 1: Modelul de bază al unui criptosistem

Componentele modelului:

► Text clar /mesaj în clar: mesajul în forma inițială (mesajul care se trimite)
► Criptare: transformarea mesajului în clar, pentru a îl face de neînțeles de către o altă persoană,
în afară de cea care a creat mesajul și cea care este beneficiarul mesajului
► Text criptat (criptogramă): mesajul rescris prin criptare
► Decriptare: inversul procesului de criptare – recuperarea textului clar din textul criptat
► Algoritm criptografic: funcția matematică folosită pentru criptare și decriptare. (În general,
există două funcții corelate: una pentru criptare și cealaltă pentru decriptare.)
1
► Cheie criptografică: atât funcția de criptare, cât și funcția de decriptare utilizează o informație
suplimentară (șir de caracter), care poate lua una din mai multe valori posibile (spațiul cheilor).
- Cheia de criptare este o valoare cunoscută pentru expeditor. Expeditorul introduce cheia de criptare în
algoritmul de criptare împreună cu textul clar pentru a genera textul criptat.
- Cheia de decriptare este cunoscută de receptor. Cheia de decriptare este relaționată cu cheia de criptare,
dar nu este întotdeauna identică cu aceasta. Receptorul introduce cheia de decriptare în algoritmul de
decriptare împreună cu textul criptat pentru a genera textul clar.
► Criptosistem: sistemul format din algoritmii criptografici de criptare/decriptare împreună cu
textele în clar/textele criptate și spațiul cheilor.
► Interceptor/adversar sau criptanalist: persoana care interceptează criptograma și încearcă să
obțină textul clar aplicând diverse metode, însă fără a avea cheia de decriptare.
► Criptanaliza: studiul metodelor de obținere a semnificației mesajelor criptate (recâștigarea
conținutului), fără acces la informațiile secrete care sunt de obicei necesare în acest sens (fără un acces
autorizat la cheile de decriptare).

► În formalizare matematică, un criptosistem este descris prin structura: (P, C, K, ε, D), unde:

1) P= {x | x ∈ V} este mulțimea finită a textelor clare, scrise peste un alfabet nevid V (uzual V = {0, 1}).

2) C= {y | y ∈ W} este mulțimea finită a textelor criptate, scrise peste un alfabet nevid W (uzual W=V ).
3) K este spațiul cheilor: o mulțime finită –mulțimea tuturor cheilor .

4) Pentru fiecare cheie k ∈ K există o metodă de criptare ek ∈ ε, ek : P → C și o metodă de decriptare


dk ∈ D, dk : C → P a.î. pentru orice text clar x ∈ P, y = ek(x) este testul criptat corespunzător, iar
dk (ek(x)) = x.

Conform proprietății 4), dacă un text clar x este criptat folosind ek, iar textul criptat rezultat este apoi
decriptat folosind dk, atunci rezultă textul original x.
Obs:
1) P, C şi K sunt mulţimi finite dar, de obicei prea mari pentru a le enumera explicit elementele.
2) Funcția de criptare este o funcție injectivă, altfel decriptarea nu poate fi realizată fără ambiguitate.
Astfel, dacă y = ek(x1) = ek(x2) cu x1 ≠ x2, nu se poate aprecia dacă y se va decripta în x1 sau în x2.
3) Dacă P = C , atunci fiecare funcție de criptare este de fapt o permutare.
Deci, dacă mulțimea textelor clare și mulțimea textelor criptate sunt identice, atunci fiecare funcție de
criptare va realiza de fapt o permutare a elementelor mulțimii textelor clare.

2
Obiective de securitate ale unui criptosistem:
- Confidențialitatea / secretul / protecţia datelor ( confidentiality / secrecy / privacy): asigură
inaccesibilitatea conţinutului informaţiei transmise între transmițător și receptor pentru un utilizator
neavizat , deci păstrarea secretului pentru neavizaţi - obiectiv îndeplinit cu ajutorul funcţiilor de criptare.
- Integritatea: asigură faptul că informaţia nu a fost modificată, alterată, schimbată sau ștearsă pe
parcursul transmisiei de către un posibil adversar - obiectiv îndeplinit cu ajutorul funcţiilor hash, care
fac ca modificarea unui singur bit de informaţie să poată fi detectată.
- Autentificarea: asigură faptul că părțile implicate în comunicare se pot identifica reciproc. De
asemenea, informațiile furnizate pe canal trebuie autentificate în sensul că au fost generate dintr-o
sursă autorizată. Există deci are două aspecte distincte: autentificarea entităţilor şi autentificarea
informaţiei.
- Non-repudierea: asigură faptul că părțile implicate în comunicare nu ar trebui să poată nega
implicarea lor în comunicare; deci, dacă la un moment dat o entitate neagă ca ar fi emis o anume
informaţie, entitatea care a primit informaţia respectivă poate demonstra unei părţi neutre că informaţia
provine într-adevăr de la entitatea în cauză. Non-repudierea se realizează prin utilizarea semnăturilor
digitale.
- Controlul accesului: asigură faptul că numai utilizatorii legitimi li se acordă acces la resurse sau
informații.

Criterii pentru un criptosistem bun:


- funcțiile de criptare ek și de decriptare dk trebuie să fie ușor de calculat.
- un adversar, după ce a interceptat un șir y – text criptat, ar trebui să nu poată determina cheia k (care a
fost folosită), sau șirul x – textul clar.
- fiind date funcția de criptare ek și textul clar x ∈ P, este ușor de calculat textul criptat y = ek(x)

- fiind date funcția de decriptare dk și textul criptat y∈ C, este ușor de calculat textul clar x = dk(y)
- textul criptat y = ek(x) nu trebuie să fie mult mai lung decât textul clar, x
- textul clar x ∈ P este imposibil de determinat din textul criptat y = ek(x), fără a cunoaște funcția de
decriptare, dk
- mulțimea de chei trebuie să fie foarte mare
- modificări minore la nivelul textul clar sau la nivelul cheii conduc la schimbări majore în textul criptat

Obs:
- aprecierea ”ușor de calculat” se traduce, în termeni de complexitate algoritmică prin utilizarea unui
algoritm polinomial de grad mic.
- aprecierea ” imposibil de calculat” se traduce, în termeni de complexitate algoritmică prin faptul că
pentru această problemă nu se cunosc decât algoritmi de complexitate exponențială.

3
Clasificarea criptosistemelor

► Clasice (perioada pre-computațională) versus Moderne (perioada post-computațională)


Criptografia clasică:
- bazată pe transformări elementare:
- substituții: înlocuirea unui caracter din mesajul în clar cu un alt caracter în mesajul criptat;
- transpoziții: rearanjarea (prin permutare) a ordinii de apariție a simbolurilor în textul cifrat (nu
implică schimbarea valorii simbolurilor);
- transformări mixte (cifru produs): repetarea succesivă a celor două tipuri de transformări,
pentru a mări gradul de securitate al sistemului;
- procedura de criptare este ținută secretă, altfel sistemul ar fi complet ineficient (oricine ar putea decripta
mesajul).

Criptografia modernă:
- rezolvă această problemă de securitate, astfel încât, de obicei, cifrul utilizat este cunoscut public, dar
execuția sa de criptare / decriptare folosește o informație privată suplimentară, numită cheie
criptografică, care este un alt parametru de intrare.

► Simetrice (single-key/ secret-key/ private-key) versus Asimetrice (two-key, public-key)


Criptosisteme cu chei simetrice:
- cheile folosite la criptare şi decriptare sunt identice: ek = dk (în cele mai multe cazuri) sau dk = ek-1
(cheile nu sunt identice, dar cheia de decriptare se poate calcula ușor din cheia de criptare)
- două tipuri:
- criptosisteme cu cifruri bloc: textul clar este împărțit în grupuri de biți de lungime fixă (32 –
256 biți), care sunt criptate succesiv; transformările de bază folosite pentru criptare şi decriptare sunt
substituţiile şi transpoziţiile, repetate iterativ.
- criptosisteme cu cifruri stream (secvențiale): cheia este combinată cu simbolul din textul clar
pentru a obține simbolul cifrat, de exemplu se aplică funcţia XOR între biţii cheii şi biţii de cifrat.
Avantaj: viteza mare de criptare şi decriptare.
Dezavantaje:
- nu permit efectuarea unei comunicări pe un canal nesecurizat în prealabil (necesită partajarea
prealabilă a unui secret)
- nu oferă un nivel de securitate adecvat: de exemplu, într-un grup mai mare de utilizatori, dacă unul
dintre aceștia părăsește grupul/ dezvăluie algoritmul de criptare, ceilalți trebuie să schimbe algoritmul.
- odată cu creşterea numărului de participanţi la comunicare creşte şi numărul de chei secrete care trebuie
cunoscute; de exemplu pentru comunicarea între n participanți este nevoie de n(n -1)/2 chei secrete.
4
- se mai numesc algoritmi de criptare/decriptare cu utilizare restricționată.
Obs: criptografia clasică se încadrează în clasa criptografiei cu chei simetrice.

Criptosisteme cu chei asimetrice:


- utilizează o pereche de chei: o cheie publică (poate fi cunoscută „tuturor”) pentru criptarea textului clar
și o cheie privată (cunoscută doar de destinatarul mesajului criptat) pentru decriptarea textului criptat.
Cele două chei sunt legate matematic, însă cheia privată nu poate fi obținută din cheia publică.
- nu necesită schimbul prealabil de chei secrete, deci comunicaţia poate fi efectuată şi pe un canal
nesigur.

Criptosisteme fără cheie: - bazate pe generatoare de numere aleatoare


- bazate pe funcții hash

Criptosisteme clasice bazate pe substituții

substituție simplă sau substituție monoalfabetică: fiecare caracter al textului clar este înlocuit cu
un caracter corespunzător în textul criptat.

substituție omofonică (cu reprezentare multiplă): fiecare caracter al textului clar este înlocuit cu
un caracter corespunzător în textul criptat, dar, un caracter al alfabetului mesajului clar poate să aibă mai
multe reprezentări. Astfel, caracterul textului clar va fi înlocuit nu de un singur simbol, ci de un simbol
ales la întâmplare dintre acestea. Într-o versiune mai sofisticată, se alege numărul de simboluri
proporțional cu frecvența de apariție a literei din mesajul clar.

substituție polialfabetică: principiul constă în utilizarea unor substituţii monoalfabetice diferite:


înlocuirea fiecărei litere a mesajului printr-o nouă literă, aleasă din mai multe alfabete aleatorii asociate.

substituție poligramică: se substituie grupuri de n litere ale textului clar (poligrame ) cu alte grupuri
de caractere

Cifruri de substituţie monoalfabetică

► Cifruri de deplasare (”Shift Ciphers”)

- fiecare literă a textului clar este înlocuită în criptogramă cu o altă literă, obținută printr-o deplasare
alfabetică
- cheia secretă k (aceeași la criptare și la decriptare) este numărul care indică deplasarea alfabetică:

5
k{1, 2, 3,…, n–1}, unde n este lungimea alfabetului.
Funcțiile de criptare și decriptare se scriu: ek (x) = (x + k) mod 26
dk (y) = (y - k) mod 26
Obs: În cazul alfabetului englez, n = 26.

Caracteristicile criptosistemului bazat pe deplasare în Z26:


P = C = K = Z26.
Pentru 0≤ k ≤ 25: ek (x) = (x + k) mod 26
dk (y) = (y - k) mod 26 , (∀) x, y ∈ Z26
dk(ek(x)) = x (∀) x ∈ Z26

Obs:
Pentru k = 3, criptosistemul se numește Cifrul Cezar, după Iulius Cezar, care folosea acest cifru pentru
a comunica cu generalii săi.

Elemente de aritmetică modulară

Def: Fie a și b sunt numere întregi, iar m este un număr întreg pozitiv. Atunci scriem a ≡ b (mod m)
dacă m divide (b – a). Expresia a ≡ b (mod m) se numește congruență și înseamnă „a este congruent cu
b modulo m.” Întregul m se numește modul.
Cf. teoremei împărțirii cu rest a lui a și respectiv b la m:
a = m⋅ q1 + r1 , 0 ≤ r1 < m
⟹ a ≡ b (mod m) ⟺ r1 = r2
b = m⋅ q2 + r2 , 0 ≤ r2 < m
⟹ a ≡ b (mod m) ⟺ a mod m = b mod m
Prin a mod m se notează restul împărțirii întregi a lui a la m
Prin b mod m se notează restul împărțirii întregi a lui b la m
În aritmetica modulo m, Zm este mulțimea {0 , 1 , 2 , m-1}, pe care sunt definite operațiile aritmetice, cu
condiția ca rezultatele operațiilor să fie reduse modulo m.

Proprietăți ale relației de congruență modulo m:

1. (∀) a, b ∈ Zm, a + b ∈ Zm
2. (∀) a, b ∈ Zm, a + b = b +a
3. (∀) a, b, c ∈ Zm, (a + b) + c = a + (b + c)

6
4. (∀) a ∈ Zm, a + 0 = 0 + a = a
5. (∀) a ∈ Zm, opusul lui a este (m-a), adică a + (m-a) = (m-a) + a = 0
6. (∀) a, b ∈ Zm, a ⋅ b ∈ Zm
7. (∀) a, b ∈ Zm, a ⋅ b = b⋅a
8. (∀) a, b, c ∈ Zm, (a ⋅ b) ⋅ c = a ⋅ (b ⋅ c)
9. (∀) a ∈ Zm, a ⋅ 1 = 1 ⋅ a = a
10. (∀) a, b, c ∈ Zm, (a + b) ⋅ c = (a ⋅ c) + (b ⋅ c), iar a ⋅ (b + c) = (a ⋅ b) + (a ⋅ c)

Exemple de operații în Zm:


12 x 9 în Z7: 12 x 9 = 108, iar 108 = 7⋅ 15 + 3, deci 12 x 9 = 3 în Z7
20 – 27 în Z31 = -7 mod 31:
Conform proprietății 5.: a + (m-a) = (m-a) + a = 0 ⟹ 7 + (31-7) = (31-7) + 7 = 0 ⟺ 7 + 24 = 24 + 7 =
0 ⟹ -7 mod 31 = 24

Exemplu de aplicație al cifrului de deplasare:

- în primul rând se creează o corespondență între literele alfabetului englez și numerele de la 0 la 25:
A se identifică cu 0, B cu 1, C cu 2, ..., Z cu 25.

A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25

- se convertește textul clar într-o secvență de numere întregi folosind corespondența specificată.
- se alege cheia, de exemplu pentru k = 11 se obține: ek (F) = (5 + 11) mod 26 = 16 = Q
dk (Q) = (16 - 11) mod 26 = 5 = F
De exemplu, pentru textul clar CIFRULCAESAR se obține textul criptat astfel:
C I F R U L C A E S A R
2 8 5 17 20 11 2 0 4 18 0 17
+11mod 26 13 19 16 2 5 22 13 11 15 3 11 2
N T Q C F W N L P D L C

Pentru a decripta textul criptat, se va transforma mai întâi textul criptat în secvența de numere întregi
corespunzătoare, apoi va scădea 11 din fiecare valoare (reducând modulo 26) și în final secvența de
numere întregi se va transforma în caractere alfabetice:
De exemplu: (2 – 11) mod 26 = -9 mod 26 = 17

7
N T Q C F W N L P D L C
13 19 16 2 5 22 13 11 15 3 11 2
-11mod 26 2 8 5 17 20 11 2 0 4 18 0 17
C I F R U L C A E S A R

Obs:
1) Criptosistemul bazat pe deplasare în Z26 nu este sigur, deoarece poate fi criptanalizat prin metoda de
căutare exhaustivă a cheilor. Deoarece există doar 26 de chei posibile, se poate încerca orice regulă
posibilă de decriptare dk până la obținerea unui text clar cu sens.

De exemplu: Să se decripteze mesajul: IXOVZUYOYZKS YOSKZXOI utilizând cifrul de deplasare în


Z26. Indicați cheia de cifrare.

Se verifică pe rând, toate cheile posibile:


0 1 2 3 4 5 6 ............ 25
A B C D E F G ............ Z
k=1 B C D E F G H ............ A
k=2 C D E F G H I ............ B
k=3 D E F G H I J ............ C
k=4 E F G H I J K ............ D
k=5 F G H I J K L ............ E
k=6 G H I J K L M ............ F
........... ............ ............ ............ ............ ............ ............ ............ ............ ............

pentru k = 6 se obține:
I X O V Z U Y O Y Z K S Y O S K Z X O I
8 23 14 21 25 20 24 14 24 25 10 18 24 14 18 10 25 23 14 8
-6 mod 26

2 17 8 15 19 14 18 8 18 19 4 12 18 8 12 4 19 17 8 2
C R I P T O S I S T E M S I M E T R I C

2) În aprilie 2006 a fost arestat șeful Mafiei siciliene, Bernardo Provenzano, în urma descoperirii a 350
de criptograme în alfabetul sicilian. În urma decriptării lor, au fost descoperite nume ale colaboratorilor.
Criptarea a fost realizată prin codul ”Binnu”, care realizează o deplasare alfabetică cu cheie k =4 peste
alfabetul sicilian cu 21 de litere:
A B C D E F G H I L M N O
0 1 2 3 4 5 6 7 8 9 10 11 12
P Q R S T U V Z
13 14 15 16 17 18 19 20

De exemplu, scrisoarea, scrisă în ianuarie 2001 de Angelo Provenzano către tatăl său, a fost găsită
împreună cu alte documente când unul dintre membrii, Nicola La Barbera, a fost arestat:
"...I met 512151522 191212154 and we agreed that we will see each other after the holidays...,".Numele
decriptat a fost Binnu Riina, cheia fiind k=4:
8
5 12 15 15 22 19 12 12 15 4
-4

1 8 11 11 18 15 8 8 11 0
B I N N U R I I N A
2) Shannon a definit, folosind conceptul de entropie (care măsoară incertitudinea variabilei aleatoare X),
distanța de unicitate a unei scheme de criptare, care reprezintă lungimea minimă a textului criptat
(apreciată în cazul Criptosistemul bazat pe deplasare în Z26 ca numărul de caractere) pentru care se
așteaptă să existe doar un singur text clar atunci când este decriptat cu toate cheile posibile.
Deci textele criptate, mai lungi decât distanța de unicitate pot avea o singură decriptare care să aibă sens.
Estimările teoretice pentru distanța de unicitate a criptosistemului CEZAR în Z26 sugerează că sunt
necesare doar două litere pentru a recupera cheia (și, prin urmare, textul clar). Acest număr trebuie privit
doar ca o limită inferioară.
Deci fiind dat un cifru de cel puțin 2 caractere este posibilă o decriptare unică.

► Cifrul afin
Caracteristici:
P = C = Z26, K = {(a,b) ∈ Z26 x Z26 | cmmdc(a,26) = 1}.
(∀) (a,b) ∈ K, și x ∈ P, funcțiile de criptare / decriptare se definesc astfel:

y = e(a,b)(x) = (ax + b) mod 26


d(a,b)(y) = a-1(y - b) mod 26 ⟺ d(a,b)(y) = (a-1y +a-1(26-b)) mod 26
Se verifică faptul că dk(ek(x)) = x, (∀) x ∈ P și k =(a,b) ∈ K

Obs:
- Pentru a = 1 se obține cifrul de deplasare.
- Condiţia cmmdc(a, 26) = 1 asigură existența lui a-1 și injectivitatea funcţiei ek

Exemplu de cifru afin cu cheia k = (7, 2):


Funcția de criptare este: ek(x) = (7x + 2) mod 26
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
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
2 9 16 23 4 11 18 25 6 13 20 1 8 15 22 3 10 17 24 5 12 19 0 7 14 21
C J Q X E L S Z G N U B I P W D K R Y F M T A H O V

Astfel, textul clar: CRIPTOSISTEM SIMETRIC se criptează în QRGDFWYGYFEI YGIEFRGQ


Pentru decriptare, se calculează 7-1 (mod 26):
Fie 7-1 (mod 26) = q ⟹ 7⋅q (mod 26) = 1 ⟹ q = 15.
Tabelul următor conține inversele elementelor relativ prime cu 26:
9
1-1 3-1 5-1 7-1 11-1 17-1 25-1
1 9 21 15 19 23 25

Cum 7-1 = 15 (mod 26) , funcția de decriptare devine:


dk(y) = (a-1y +a-1(26-b)) mod 26 = (15y + 15(26-2))mod 26 = (15y + 15⋅24) mod 26 = (15y + 22)mod
26
Verificare: dk(ek(x)) = dk((7x + 2) mod 26)= (15(7x + 2) + 22)mod 26 = (105x + 52) mod 26= x
Deci pentru decriptarea textului QRGDFWYGYFEI YGIEFRGQ se utilizează funcția de decriptare:
dk(y) = (15y + 22)mod 26
Astfel: Q ⟷ 16 și dk(16) = (15⋅16 + 22)mod 26 = 2 ⟷ C
R ⟷ 17 și dk(17) = (15⋅17 + 22)mod 26 = 17 ⟷ R
--------------------------------------------------------------
Obs:
1) Dimensiunea spațiului cheilor pentru acest criptosistem este dată de produsul dintre mulțimea
valorilor pentru a și pentru b. Cum sunt 12 numere prime cu 26, a∈ {1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23,
25}, iar b poate lua 26 de valori, rezultă 12 x 26 = 312 valori.
Rezultă că nici acest criptosistem nu este sigur, deoarece poate fi criptanalizat prin metoda de căutare
exhaustivă a cheilor.
2) Pentru un cifru afin peste Zm, dimensiunea spațiului cheilor se calculează folosind indicatorul lui
Euler:
Indicatorul lui Euler se notează cu φ(m) (unde m este un număr natural nenul ) și φ(m) reprezintă
numărul de numere mai mici sau egale cu m și prime cu acesta.

dacă m  p1k1  p2k2  ..........  prkr este descompunerea în factori primi distincți ai lui m, atunci

( m )  ( p1  1 ) p1k1 1  ..........  ( pr  1 ) prkr 1 ,

iar numărul cheilor posibile este egal cu m⋅ φ(m).

De exemplu:
- pentru m = 26: 26 = 2⋅13 și φ(m) = (2-1)⋅(13-1) = 12, iar spațiul cheilor are dimensiunea 12⋅26 = 312.
- pentru m = 60: 60 = 22⋅3⋅5 și φ(m) = (2-1)⋅2⋅(3-1)⋅(5-1) = 16, iar spațiul cheilor are dimensiunea 60⋅16
= 960.
Într-adevăr, sunt 16 numere mai mici sau egale cu 60 și prime cu acesta: {1 , 7 , 11 , 13 , 17 , 19 , 23 ,
29 , 31 , 37 , 41 , 43 , 47 , 49 , 53 , 59}

► Cifrul lui Polybius (istoric și om de stat grec în antichitate, Sec. II î.Hr.)

10
Literele alfabetului sunt scrise într-un tabel bidimensional, cu liniile și coloanele numerotate –
pătratul lui Polybius. O literă este apoi reprezentată de coordonatele sale din tabel. Pentru alfabetul
englez, literele I şi J sunt combinate pentru a forma un singur caracter, iar tabelul va avea 5 linii x 5
coloane pentru a reprezenta cele 25 de caractere.

1 2 3 4 5
1 A B C D E
2 F G H I/J K
3 L M N O P
4 Q R S T U
5 V W X Y Z

În procesul de criptare, fiecare caracter va fi reprezentat printr-o pereche de numere (x, y) ∈{1,
2, 3, 4, 5} care dau linia, respectiv coloana pe care se află caracterul.
De exemplu, textul clar ”CRIPTARE” devine (13)(42)(24)(35)(44)(11)(42)(15) deci
1342243544114215.
Se spune că Polybius trimitea mesaje la distanțe mari cu ajutorul torțelor. Expeditorul, de pe un
vârf de deal, ținea o torță în fiecare mână și ridica succesiv torța din mâna dreaptă de un număr de ori
pentru a semnaliza rândul, iar torța din mâna stângă de un număr de ori pentru a semnaliza coloana.
O altă interpretare a cifrului lui Polybius a implicat transformarea cifrelor în sunete. O aplicație
cunoscută în secolul al XX-lea a fost cea dezvoltată de prizonierii ruși care foloseau lovituri în zid pentru
a transmite mesajul. Ei foloseau alfabetul chirilic de 36 de litere și astfel aveau un pătrat Polybius de 6
× 6. Fiecare literă era transmisă printr-un număr de bătăi în perete egal cu cele două coordonate ale literei
(fiecare coordonată fiind un număr întreg în intervalul [1, 6]). Procedau astfel succesiv pentru a trimite
un mesaj complet.
Astăzi codul nu este sigur, un criptanalist descoperă relativ rapid că criptarea constă în secvențe
de întregi de 2 cifre, cu fiecare cifră din intervalul [1,5], dar principiul de construire se regăsește în câteva
dintre criptosistemele moderne (bazate pe numere binare, nu pe litere), folosit pentru a converti secvențe
de litere în secvențe numerice, metoda fiind extinsă prin creșterea numărului de dimensiuni:
- cu 33 (un cub tridimensional) ce stochează 27 de simboluri. Fiecare simbol este criptat într-o secvență
de cifre din intervalul [0, 2] (cifre ternare sau trituri).
- cu 28 (structură în 8 dimensiuni) cu 256 de simboluri, fiecare simbol fiind codificat cu 8 biți – criptare
care stă la baza codului EBCDIC (extended BCD Interchange code)

► Cifrul de substituție simplă

Caracteristici:
P = C = Z26,
K = S26 = {𝜋 : Z26 → Z26 } – mulțimea tuturor permutărilor de 26 de elemente
(∀) 𝜋∈ K, funcțiile de criptare / decriptare se definesc astfel:
e𝜋 (x) = 𝜋(x)
d𝜋 (y) = 𝜋-1(y) , unde 𝜋-1 este permutarea inversă a permutării 𝜋
11
De exemplu, fie textul clar: x = CRIPTARE și se alege permutarea 𝜋 = (1, 2, 3, ..., 25, 0) :
0 1 2 3 ....................... 23 24 25
𝜋=

1 2 3 4 ....................... 24 25 0
Criptarea:
Pornind de la corespondența între literele alfabetului englez și numerele de la 0 la 25, se calculează
valoarea numerică a mesajului:
x=C R I P T A R E

02 17 08 15 19 00 17 04
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25

Se calculează e𝜋 (x) = 𝜋(x) = 0318091620011805 = DSJQUBSF:

x = 02 17 08 15 19 00 17 04

𝜋(x) = 03 18 09 16 20 01 18 05 = y

D S J Q U B S F

Decriptarea:
Pornind de la permutarea 0 1 2 3 ....................... 23 24 25 se calculează permutarea 𝜋-1
𝜋=

1 2 3 4 ....................... 24 25 0
știind că 𝜋⋅ 𝜋-1 = e (permutarea identică), cu e(i) = i:
0 1 2 3 ....................... 23 24 25 0 1 2 3 ....................... 23 24 25 0 1 2 3 ....................... 23 24 25

⋅ =

1 2 3 4 ....................... 24 25 0 25 0 1 2 ....................... 22 23 24 0 1 2 3 ....................... 23 24 25

Se calculează d𝜋 (y) = 𝜋-1(y) = 𝜋-1(0318091620011805) = 0217081519001704 = CRIPTARE


y = 03 18 09 16 20 01 18 05

𝜋-1(y) = 02 17 08 15 19 00 17 04

C R I P T A R E
12
Obs:
1) Comparativ cu criptosistemul bazat pe deplasare în Z26, unde spațiul cheilor avea dimensiunea |K| =
26, spațiul cheilor în acest caz include toate permutările posibile ale alfabetului de 26 de caractere, deci
|K| = 26! >4·1026, un număr extrem de mare.
Mai mult, efortul computațional în cazul căutării exhaustive crește prin înmulțire cu un factor de ordinul
n atunci când se trece de la un alfabet cu (n-1) litere la un alfabet cu n litere.
2) Deși un atac de tip căutare exhaustivă a cheilor de criptare nu este posibil în acest caz, toate sistemele
de substituție monoalfabetică prezentate sunt sensibile la atacuri bazate pe frecvenţa de apariţie a
caracterelor în text, deoarece aceeași literă din textul clar este întotdeauna criptată în aceeași literă în
textul criptat; rezultă că distribuția frecvenței caracterelor din textul criptat este aceeași cu cea din textul
clar.

Criptanaliza prin analiza frecvențelor


Dacă un text criptat este suficient de lung şi se cunoaște limba în care este scris textul clar,
sistemul poate fi spart printr-un atac bazat pe frecvenţa apariţiei literelor într-o limbă. Aceasta poate fi
realizată prin analizarea unei cantități suficiente de text, deoarece literele individuale ale oricărei limbi
apar cu frecvențe foarte variate.

De exemplu:
► în limba rusă, O este cea mai comună literă.
► în limba engleză, litera E este cea mai frecvent folosită, care apare aproximativ 12% din timp (adică
puțin peste una din zece litere este o literă „E”). În texte scurte, alte litere pot fi mai frecvente, dar în
aproape orice text de 1.000 de litere sau mai mult, E va fi cea mai frecventă literă.
Tabelul de mai jos prezintă frecvența de apariție a literelor în textele limbii engleze (H. Beker, F.Piper):

Tabelul 1: frecvența de apariție a literelor în limba engleză 2

A 0.082 N 0.067
B 0.015 O 0.075
C 0.028 P 0.019
D 0.043 Q 0.001
E 0.127 R 0.06
F 0.022 S 0.063
G 0.02 T 0.091
H 0.061 U 0.028
I 0.07 V 0.01
J 0.002 W 0.023
K 0.008 X 0.001
L 0.04 Y 0.02
M 0.024 Z 0.001

13
Histograma frecvenței de apariție a literelor în limba engleză

► o analiză a textului în limba română arată următoarea frecvenţă a literelor:

Tabelul 2: frecvența de apariție a literelor în limba română 1

Aceste frecvențe sunt păstrate atunci când textul este criptat cu ajutorul unui cifru de substituție.
Astfel, textul criptat poate fi decriptat prin compararea distribuției de frecvență a caracterelor din textul
criptat cu distribuția de frecvență (cunoscută) a caracterelor din textul clar, prin următorul algoritm:
1. Se calculează frecvența de apariție a literelor în textul criptat, care poate fi reprezentată ca o
histogramă.
2. Se compară frecvențele de apariție a literelor în textul criptat cu frecvențele de apariție ale literelor
limbajului textului clar.
3. Se pleacă de la presupunerea că cea mai frecvent întâlnită literă din textul criptat reprezintă cea mai
frecvent întâlnită literă din textul clar.
Se repetă pentru cea de a doua cea mai frecvent întâlnită literă din textul criptat, etc.
4. Se caută secvențe de caractere din care se deduc cuvinte.
De exemplu, secvența CARX apare de mai multe ori, din care este ușor de presupus că caracterul X din
textul criptat corespunde caracterului E din textul clar.
Obs:
1) Criptanaliza prin analiza frecvențelor este o abordare empirică, de tip ”trial and error” deoarece
distribuția frecvenței caracterelor din textul clar nu este neapărat identică cu cea așteptată pentru limba
respectivă, iar procesul de decriptare implică un anumit timp de calcul.
14
2) În anumite criptosisiteme nu este relevantă analiza frecvențelor literelor individual, ci este util de
analizat frecvența de apariție a unităţilor de mesaje: perechi de litere (digrafe), triplete de litere (trigrafe)
sau blocuri de k litere.
În limba engleză:
- cele mai utilizate digrafe, în ordine descrescătoare a frecvenței de apariție sunt:
TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT, HA, ND, OU, EA, NG, AS, OR, TI, IS,
ET, IT, AR, TE, SE, HI, OF.
- cele mai utilizate trigrafe, în ordine descrescătoare a frecvenței de apariție sunt:
THE, ING, AND, HER, ERE, ENT, THA, NTH, WAS, ETH, FOR, DTH.

Exemplul 1: În urma analizei privind frecvenţa de apariţie a caracterelor în textul criptat, rezultă
următoarea distribuție de frecvențe:

Histograma frecvenței de apariție a literelor


în textul criptat
30

25

20

15

10

0
A Ă Â B C D E F G H I Î J K L MN O P Q R S Ș T Ț U VWX Y Z

În limba română, cele mai utilizate litere sunt, conform tabelului, în ordine: E, A, I, R, N, U, C, ....
Conform amplitudinii frecvențelor, se poate aprecia că:
- literei I din textul criptat îi corespunde litera E din textul sursă
- literelor F și L din textul criptat le corespund literele A și I din textul sursă (nu neapărat în această
ordine)
- literelor Î și U din textul criptat le corespund literele N și R din textul sursă (nu neapărat în această
ordine)
- literelor V și X din textul criptat le corespund literele U și C din textul sursă (nu neapărat în această
ordine)
etc.

Exemplul 2: Utilizând analiza frecvenţei de apariţie a caracterelor într-un text criptat cu cifrul afin, să
se decripteze textul pentru a obține textul clar.
Un text în limba engleză a fost criptat cu cifrul afin (ignorând spațiul și punctuația), după cum urmează:

15
BHJUHNBULSVULRUSLYXHONUUNBWNUAXUSNLUYJSSWXRLK
GNBONUUNBWSWXKXHKXDHUZDLKXBHJUHBNUONUMHUGSW
HUXMBXRWXKXLUXBHJUHCXKXAXKZSWKXXLKOLJKCXLCMX
ONUUBVULRRWHSHBHJUHNBXMBXRWXKXNOZLJBXXHBNFUB
HJUHLUSWXGLLKZLJPHUULSYXBJKXSWHSSWXKXNBHBHJUH
YXWNUGSWXGLLK
În textul criptat, frecvența de apariție a celor 26 de litere ale alfabetului, în ordine descrescătoare este
dată în tabelul de mai jos:

X 32 S 15 Y 4 P 1
U 30 W 14 Z 4
H 23 J 11 C 3
B 19 O 6 A 2
L 19 R 6 D 2
N 16 G 5 V 2
K 15 M 4 F 1

Se comparară aceste frecvențe cu frecvențele din Tabelul 1: E T A O I N ..................

X U H B L N
Se încearcă o primă asociere:

f(E) = X 4 → 23 f(4) = 23 4 a + b = 23 (mod 26)


⟹ ⟹ ⟹ ⟹ -15 a = 3 (mod 26) ⟹
f(T) = U 19 → 20 f(19) = 20 19a + b = 20 (mod 26)

11 a = 3 (mod 26) ⟹ a = 5 ⟹ 20 + b = 23 (mod 26) ⟹ b = 3


Deci cheile de criptare sunt (5,3)
e(a,b)(x) = (5x + 3) mod 26
d(a,b)(y) = 5-1(y - 3) mod 26
5-1(mod 26) = q ⟹ 5⋅q (mod 26) = 1 ⟹ q =21
deci funcția de decriptare este: d(a,b)(y) = 21(y - 3) mod 26
Astfel, în textul decriptat:
B ⟷ 1 ⟹ 21(y - 3) mod 26 = 21(1 - 3) mod 26 = -42 mod 26 = (-26 -16) mod 26 = -16 mod 26 = 10,
iar 10 ⟷ k
Deci B se decriptează în k
H ⟷ 7 ⟹ 21(y - 3) mod 26 = 21(7 - 3) mod 26 = 84 mod 26 = 6, iar 6 ⟷ g
Deci H se decriptează în g
---------------------

16
Se obține textul decriptat kgwtgcktmootmitdmzegxc.........care nu are sens.
Următoarea presupunere este ca
f(E) = X 4 → 23 f(4) = 23 4 a + b = 23 (mod 26)
⟹ ⟹ ⟹ ⟹ 4 a + 7 = 23 (mod 26) ⟹
f(A) = H 0→7 f(0) = 7 b = 7 (mod 26)

4 a = 16 (mod 26) ⟹ a = 4 , care nu este inversabil, deci soluția nu convine


a = 17, soluție care convine
Deci cheile de criptare sunt (17,7)
e(a,b)(x) = (17x + 7) mod 26
d(a,b)(y) = 17-1(y - 7) mod 26
17-1(mod 26) = q ⟹ 17⋅q (mod 26) = 1 ⟹ q =23
deci funcția de decriptare este: d(a,b)(y) = 23(y - 7) mod 26
Astfel, în textul decriptat:
Astfel, în textul decriptat:
B ⟷ 1 ⟹ 23(y - 7) mod 26 = 23(1 - 7) mod 26 = -138 mod 26 = (-5⋅26 - 8) mod 26 = -8 mod 26 = 18,
iar 18 ⟷ s
Deci B se decriptează în s
H ⟷ 7 ⟹ 23(y - 7) mod 26 = 23(7 - 7) mod 26 = 0, iar 0 ⟷ a
Deci H se decriptează în a
J ⟷ 9 ⟹ 23(y - 7) mod 26 = 23(9 - 7) mod 26 = 20, iar 20 ⟷ u
Deci J se decriptează în u

---------------------
Se obține textul decriptat s a u n a i s n o t k n o w n t o b e a...............

Exemplul 3: Utilizând analiza frecvenţei de apariţie a caracterelor într-un text criptat cu cifrul afin, să
se decripteze textul pentru a obține textul clar.
Pe baza analizei frecvențelor, au fost deduse următoarele ecuații:
f(S) = E 18 → 4 f(18) = 4 18 a + b = 4 (mod 26)
⟹ ⟹ ⟹
f(U) = A 20 → 0 f(20) = 0 20a + b = 0 (mod 26)

18 a + b = 4 (mod 26)
⟹ -2a =4 (mod 26)
20a + b = 0 (mod 26)
17
dar -2 (mod 26) = 24 ⟹ 24a = 4(mod 26) ⟹ a =11
⟹ 20⋅11 + b = 0 (mod 26) ⟹ b = 14
Deci cheile de criptare sunt (11,14)
e(a,b)(x) = (11x + 14) mod 26
d(a,b)(y) = 11-1(y - 14) mod 26
11-1(mod 26) = q ⟹ 11⋅q (mod 26) = 1 ⟹ q =19
deci funcția de decriptare este: d(a,b)(y) = 19(y - 14) mod 26

Cifruri de substituţie omofonică

Un caracter al alfabetului mesajului clar poate fi înlocuit în textul criptat nu printr-un singur
simbol, ci printr-un simbol ales aleator din mai multe simboluri. Într-o versiune mai sofisticată, se alege
un număr de simboluri proporțional cu frecvența de apariție a literei din textul clar. Astfel, se obține o
inversare a frecvențelor care permite eliminarea completă a indicațiilor furnizate de frecvența de apariție.
În acest cifru, oricărui caracter x din textul clar, x∈ P i se asociază o mulțime H(x), astfel încât:

- H(x1) ⋂ H(x2) ≠ ⏀ ⟺ x1 ≠ x2
- dacă x1 are frecvența de apariție mai mare decât x2 în textul clar, atunci card(H(x1)) ≥ card(H(x2))
Criptarea unui caracter x se face cu un element ales aleator din H(x).
De exemplu, pentru alfabetul englez poate fi folosit următorul cifru:

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
7 5 6 1 5 3 1 1 4 1 1 2 3 4 2 5 1 6 3 1 2 2 1 1 1 1
02 56 12 66 13 08 71 92 58 99 43 33 77 85 20 67 10 04 44 62 64 59 49 61 73 82
11 21 16 32 17 81 25 63 80 57 65 53 42 72 75
21 45 19 22 73 39 69 41 55 38 98
13 07 51 04 18 52 01 46
26 03 14 07 88 48
15 09 54
74

În a doua linie a tabelului apar frecvențele de apariție ale literelor în textul clar, iar în coloane, sub fiecare
literă x este H(x). De exemplu, H(L) = {33 , 25}.
Secvența ”av” din textul clar se poate cripta folosind secvențele:
{0259, 1159, 2159 , 1359 , 2659 , 1559 , 7459 , 275 , 1175 , 2175 , 1375 , 2675 , 1575 , 7475}

18
Cifruri de substituţie polialfabetică

Cifrurile de substituție monoalfabetică folosesc doar o substituție (o permutare a alfabetului)


pentru a cripta întregul mesaj, iar vulnerabilitatea lor vine din faptul că substituția păstrează distribuția
de frecvențe (cu caractere schimbate).
Folosind mai multe substituții se obține ceea ce se numește substituție polialfabetică - astfel încât
apariții diferite ale aceluiași caracter pot fi criptate diferit.
Acest mod de criptare anihilează corespondența unu-la-unu între caracterele textului clar și
caracterele textului criptat, astfel încât analiza frecvenței devine inutilă.

► Cifrul Vigenère (numele celui care l-a creat – un diplomat și criptograf francez care a trăit în
secolul al XVI-lea)
Caracteristici:
P = C = K = Zl26
(∀) k = (k1,k2, ... , kl) ∈ K, și x = (x1,x2, ... , xl)∈ P, funcțiile de criptare / decriptare se definesc astfel:
ek(x1,x2, ... , xl) = (x1 + k1,x2 +k2, ... , xl + kl) mod 26
dk(y1,y2, ... , yl) = (y1 - k1,y2 - k2, ... , yl - kl) mod 26

Folosind o corespondenţă biunivocă între literele alfabetului şi elementele claselor de resturi modulo 26
( A=0, B=1, ..., Z=25 ), acest criptosistem criptează l caractere simultan: se convertesc elementele
textului clar folosind corespondența biunivocă, apoi se separă în grupuri de l elemente (lungimea cheii),
la care se adună modulo 26, elementul de pe poziția respectivă din cheie.

Exemplu:

Fie l = 5 cu cheia: k = CIFRU. Cheii k îi corespunde cheia numerică echivalentă: (2 , 8 , 5 , 17 , 20)


Fie textul clar: CRIPTOSISTEMULVIGENERE
Se convertesc elementele textului clar folosind corespondența biunivocă, apoi se separă în grupuri de 5
elemente (lungimea cheii), la care se adună modulo 26, elementul de pe poziția respectivă din cheie.
Când cheia se termină, ea se reia ciclic.

C R I P T O S I S T E M U L V I G E N E R E
2 17 8 15 19 14 18 8 18 19 4 12 20 11 21 8 6 4 13 4 17 4
2 8 5 17 20 2 8 5 17 20 2 8 5 17 20 2 8 5 17 20 2 8
4 25 13 6 13 16 0 13 9 13 6 20 25 2 15 10 14 9 4 24 19 12
Textul criptat devine:
EZNGNQANJNGUZCPKOJEYTM

19
Decriptarea se realizează similar, scăzând (modulo 26) din codul caracterului criptat, codul caracterului
corespunzător din cheie:
E Z N G N Q A N J N G U Z C P K O J E Y T M

4 25 13 6 13 16 0 13 9 13 6 20 25 2 15 10 14 9 4 24 19 12
2 8 5 17 20 2 8 5 17 20 2 8 5 17 20 2 8 5 17 20 2 8
2 17 8 15 19 14 18 8 18 19 4 12 20 11 21 8 6 4 13 4 17 4

13 – 20 (mod 26) = -7 (mod 26) = 19


6 – 17 (mod 26) = -11 (mod 26) = 15
Obs: Pentru ușurința calculelor, pentru a nu mai converti literele alfabetului în elementele claselor de
resturi modulo 26, la adunarea cu codul numeric din cheie se poate folosi următoarea tabelă:

0 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
1 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
2 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 b
3 d e f g h i j k l m n o p q r s t u v w x y z a b c
4 e f g h i j k l m n o p q r s t u v w x y z a b c d
5 f g h i j k l m n o p q r s t u v w x y z a b c d e
6 g h i j k l m n o p q r s t u v w x y z a b c d e f
7 h i j k l m n o p q r s t u v w x y z a b c d e f g
8 i j k l m n o p q r s t u v w x y z a b c d e f g h
9 j k l m n o p q r s t u v w x y z a b c d e f g h i
10 k l m n o p q r s t u v w x y z a b c d e f g h i j
11 l m n o p q r s t u v w x y z a b c d e f g h i j k
12 m n o p q r s t u v w x y z a b c d e f g h i j k l
13 n o p q r s t u v w x y z a b c d e f g h i j k l m
14 o p q r s t u v w x y z a b c d e f g h i j k l m n
15 p q r s t u v w x y z a b c d e f g h i j k l m n o
16 q r s t u v w x y z a b c d e f g h i j k l m n o p
17 r s t u v w x y z a b c d e f g h i j k l m n o p q
18 s t u v w x y z a b c d e f g h i j k l m n o p q r
19 t u v w x y z a b c d e f g h i j k l m n o p q r s
20 u v w x y z a b c d e f g h i j k l m n o p q r s t
21 v w x y z a b c d e f g h i j k l m n o p q r s t u
22 w x y z a b c d e f g h i j k l m n o p q r s t u v
23 x y z a b c d e f g h i j k l m n o p q r s t u v w
24 y z a b c d e f g h i j k l m n o p q r s t u v w x
25 z 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

Criptanaliza cifrului Vigenère


Cifrul Vigenère peste Z26 are dimensiunea spațiului cheilor, | K |= 26l, unde l este lungimea
cheii. Astfel, metoda căutării exhaustive a cheilor nu este viabilă dacă se folosește o cheie suficient de
lungă – de exemplu, cu mai mult de 20 de caractere.
Ideea de bază pentru a criptanaliza cifrul Vigenère: este suficient determinarea lungimii cheii.
Odată făcut acest lucru, restul este ușor: textul criptat este împărțit în l segmente, fiecare constând din
caractere a căror poziție aparține aceleiași clase de congruență modulo l, iar apoi se decifrează textul
efectuând analiza frecvenței pe fiecare dintre aceste segmente, separat.
Există două metode pentru determinarea lungimii cheii:
► Testul Kasiski (descris de Friedrich Kasiski în 1863):
20
ideea este că dacă se observă că aceeași secvență de k litere (k ≥3) apare în diferite locuri în textul criptat,
este foarte probabil ca acea secvență să fi fost criptată în mod repetat cu aceeași parte a cheii. Atunci
criptanalistul măsoară distanțele dintre diferitele apariții ale acestor secvențe care se repetă în textul
criptat. Kasiski a demonstrat că lungimea cheii este un divizor comun pentru toate aceste distanțe.
Ulterior, se încearcă decriptarea începând inițial cu o lungime a cheii egală cu cel mai mare dintre acești
divizori. În caz de nereușită, se testează o lungime a cheii egală cu următorul cel mai mare divizor, etc.
Exemplu:
Se consideră textul criptat: EZNGNCZJTOEZNGNQANJNGUZCPKOJEYTM, care este criptograma
textului clar: CRIPTOSISTEMULVIGENERE, criptat cu cheia k = CIFRU.
- Se observă că secvența EZNGN se repetă de 2 ori, începând cu poziția 1 și poziția 11, deci lungimea
cheii, l , este un divizor al lui 10, deci lungimea poate fi 5 sau 10.

► Metoda indicelui de coincidență:


Fie x = x1x2x3.......xn un șir de n caractere ale alfabetului. Indicele de coincidență al lui x, notat Ic(x)
este definit ca probabilitatea ca două elemente alese aleator din șirul x să fie identice.
Astfel, într-un text criptat cu n litere, dacă litera A are frecvența de apariție fA, probabilitatea de a alege
aleator litera A este p(A) = fA/n.
Ulterior, probabilitatea de a alege aleator tot litera A este (fA-1)/(n-1).
Atunci, probabilitatea comună de a alege aleator două litere de A este produsul celor două probabilități:
fA/n ⋅ (fA-1)/(n-1) = [fA(fA-1)]/[n(n-1)].
În loc de litera A, se poate proceda la fel pentru orice literă și rezultă că probabilitatea de a alege aleator
aceleași două litere este egală cu suma probabilităților calculate pentru fiecare literă.
Această formulă a condus la definiția formulei lui Friedman pentru indicele de coincidență:

Z fi ( fi  1 ) 25 fi ( fi  1 )
I  
i A n( n  1 ) i 0 n( n  1 )

Fie x = x1x2x3.......xn un șir (text) de n caractere într-un alfabet în care frecvențele relative de apariție ale
literelor alfabetului sunt p0, p1, ......, pr-1.
Conform formulei de mai sus, pentru un text de lungime n cu frecvențele f0, f1, ..., fr-1:
r 1 r 1 r 1 r 1 2
 fi  1
r 1 fi ( fi  1 )  fi 2   fi  fi 2  n    
i 0  n  n r 1  f i 
2 r 1
Ic ( x )    i 0 i 0
 i 0
       pi2
i 0 n( n  1 ) n( n  1 ) 1
n2 (1  )
1
(1  ) i 0  n  i 0
n n ,
1 f
deoarece pentru n foarte mare,  0 , iar frecvență relativă i = pi
n n
Dacă x este un text în limba engleză, conform frecvențelor relative de apariție a literelor în limba engleză
din Tabelul 1, rezultă că:

21
25
I c ( x )   pi2  0.0822  0.0152  .....  0.0012  0.0655
i 0

Obs: Pentru un text într-un limbaj în care frecvențele relative de apariție ale celor 26 de litere sunt egale
(limbaj ipotetic), indicele de coincidență va fi:
2
 1  1
I c ( x )  26      0.038
 26  26

S-a demonstrat că:


- În cazul în care frecvențele de apariție ale literelor într-un text criptat sunt extrem de variate, atunci
cifrul care a stat la baza criptării este mai probabil să fie monoalfabetic decât polialfabetic.
- Pe de altă parte, în cazul în care frecvențele literelor sunt distribuite mai uniform, atunci cifrul este
mult mai probabil să fie polialfabetic.
S-a demonstrat că pentru criptarea cu Cifrul Vigenère peste Z26, indicele de coincidență este utilizat
pentru a estima lungimea cheii de criptare, formula fiind:

( 0.0655  0.0385 )n 0.0270n


l 
0.0655  I  n( I  0.0385) 0.0655  I  n( I  0.0385)

Exemplu: Se consideră un text de 270 de caractere, criptat cu Cifrul Vigenère, în care frecvența de
apariție a literelor este dată în următorul tabel:

Litera A B C D E F G H I J K L M
Nr. apariții 13 7 12 6 20 7 16 16 15 9 4 10 3
Litera N O P Q R S T U V W X Y Z
Nr. apariții 11 6 18 6 13 8 18 5 7 8 15 8 9

Indicele de coincidență se calculează cu formula:


1
I ( 13  12  7  6  12  11  .....  9  8 )  0.0429
270  269
Deoarece valoarea este mai apropiată de valoarea 0.038 decât decât de valoarea 0.0655, cifrul care a stat
la baza criptării este mai probabil să fie polialfabetic.

Pentru a estima lungimea cheii de criptare se folosește formula:

( 0.0655  0.0385 )n 0.0270n


l 
0.0655  I  n( I  0.0385) 0.0655  I  n( I  0.0385) ,

unde n = 270, iar I= 0.0429 ⟹ l = 5.8896 ≃ 6

22
► Cifrul Vernam (”One-time pad” – cheie de unică folosință)

Creat de Gilbert S. Vernam și J. Mauborgne în 1917, este o variantă a cifrului Vigenère, dar
peste un alfabet binar. Se diferenţiază prin cheia de cifrare, care este reprezentată de o secvenţă de
caractere aleatoare, care nu se repetă.

Caracteristici:
P = C = K = Zn2 = {0,1}n
Cheia k = (k1,k2, ... , kn) ∈ K este o secvență aleatoare de biți, generată cu un generator de numere
aleatoare. Algoritmul de generare va alege chei din mulțimea {0,1}n, cu o distribuție uniformă
(∀) k = (k1,k2, ... , kn) ∈ K, și x = (x1,x2, ... , xn)∈ P, funcțiile de criptare / decriptare se definesc astfel:

ek(x1,x2, ... , xn) = (x1 + k1,x2 +k2, ... , xn + kn) mod 2


dk(y1,y2, ... , yn) = (y1 + k1,y2 + k2, ... , yn + kn) mod 2

Obs: Operația mod 2 este echivalentă cu rezultatul aplicării oreratorului XOR, operație notată cu ⨁.
Deci, atât funcția de criptare, cât și funcția de decriptare aplică operatorul XOR între biții textului clar
și biții cheii:
ek(x) = x ⨁ k
dk(y) = y ⨁ k
Deci:
ek(x1,x2, ... , xn) = (x1 ⨁ k1,x2 ⨁ k2, ... , xn ⨁ kn)
dk(y1,y2, ... , yn) = (y1 ⨁ k1,y2 ⨁ k2, ... , yn ⨁ kn)

Matematic, operatorul XOR este o funcție f : {0,1} → {0,1} cu proprietățile:


f(0,0) = f(1,1) = 0 și f(0,1) = f(1,0) = 1

Alte proprietăți: dacă x, y, z ∈ {0,1}, atunci


1. f(x,y) = f(y,x) comutativitate
2. f(x,x) = 0
3. f(x,0) = x 0 este elementul neutru
4. f(x, f(y,z)) = f(f(x,y),z) asociativitate

Concluzionând:
a) 0 XOR 0 = 1 XOR 1 = 0
b) 0 XOR 1 = 1 XOR 0 = 1
23
c) x XOR y = y XOR x
d) x XOR x = 0
e) x XOR 0 = x
f) (x XOR (y XOR z)) = ((x XOR y) XOR z)

Mai mult, XOR în cazul a două șiruri de biți este rezultatul aplicării acestui operator pentru fiecare
pereche de biți, corespunzător.

De exemplu: 110010 ⨁ 101011 = [1 ⨁ 1] [1 ⨁ 0] [0 ⨁ 1] [0 ⨁ 0] [1 ⨁ 1] [0 ⨁ 1] = 011001

În baza acestor proprietăți, se poate verifica și faptul că: dk(ek(x)) = x:

dk(ek(x)) = dk(x ⨁ k) = (x ⨁ k) ⨁ k = x ⨁ (k ⨁ k) = x ⨁ 0 = x.

Criptanaliza cifrului Vernam

În primul rând, în acest criptosistem o cheie este o secvență de biți generați aleator. Această
secvență, combinată prin operatorul XOR cu un mesaj clar nealeator produce un mesaj criptat complet
aleator. Cheile fiind echiprobabile, un adversar nu are informații pentru criptanaliză, iar complexitatea
căutării exhaustive pentru spargerea cifrului în care s-a utilizat o cheie de dimensiune k este O(2k).
Mai mult, dacă lungimea cheii este egală cu lungimea textului clar și cheia este utilizată o singură
dată, cifrul Vernam devine un cifru ideal ce nu poate fi spart.
Dezavantajele acestui criptosistem:
- dimensiunea foarte mare a cheii: cheia trebuie să aibă lungimea egală cu lungimea textului clar.
- o cheie nu poate fi reutilizată; în acest caz, chiar pentru o cheie de dimensiune măsurată în Gigabytes,
dacă un criptanalist are mai multe criptograme ale căror chei sunt identice, el poate reconstrui textul clar.
- expeditorul și receptorul trebuie să fie perfect sincronizați; mai mult, dacă unii biți sunt modificați în
timpul transmisiei (din cauza zgomotului aleatoriu), acești biți vor fi decriptați incorect.
- Siguranța criptării depinde de cât de aleatoare sunt numerele folosite, în sensul de a nu conține forme
repetitive ușor de observat, cum ar fi șirul binar 01010101...

Folosit pentru securizarea comunicațiilor guvernamentale (a fost folosit și în comunicațiile pe


Linia directă dintre Statele Unite și fosta Uniune Sovietică), acest criptosistem este încă folosit: de
exemplu, editorul de texte WordPerfect îl folosește într-o versiune ușor modificată, dar este folosit și în
alte sisteme, de exemplu, DES – ”Data Encryption Standard” și AES – ”Advanced Encryption
Standard”.

24
Generatoare de numere aleatoare

În multe sisteme criptografice, cheile de criptare trebuie generate aleator, cu valori dintr-o
anumită mulțime – spațiul cheilor, de asemenea, multe scheme de semnături digitale (ce oferă
echivalentul digital al semnăturii de mână) necesită generarea unor secvențe de numere aleatoare (care
nu urmează nici un fel de model şi nu pot fi prezise) în procesul pentru semnare digitală.
Generarea unor chei de dimensiune mare, cu adevărat aleatorii este foarte greu de obținut, chiar
cu calculatoarele actuale, deoarece acestea sunt de fapt dispozitive cu stări finite, deci repetă anumite
operații, ceea ce implică un anumit grad de predictibilitate.
În practică este foarte dificil de demonstrat că secvențele lungi de biți (generați arbitrar) sunt
aleatorii. Euristic, se verifică faptul că în secvența de biți 1 apare la fel de frecvent ca 0, 11 apare la fel
de frecvent ca 00, 10 sau 01, dar de două ori mai rar decât 1 sau 0. Există și teste de randomness – teste
statistice pentru verificarea caracteristicilor numerelor aleatoare obținute, implicit calitatea cheilor cu
care se face criptarea. De exemplu, Robert Brown prezintă seria de teste Dieharder
(http://www.phy.duke.edu/~rgb/General/dieharder.php).
Calculatoarele oferă de exemplu subrutine pentru generare aleatoare, de fapt pseudoaleatoare,
deoarece sunt construite prin reguli deterministe: Cryptographically Secure Pseudorandom Number
Generators (CSPRNG). Un generator de numere pseudoaleatoare este o funcție, astfel încât output-ul
(rezultatul produs) nu este complet aleator, fiind determinat de intrare.

Proprietățile unui CSPRNG:

- Secvența de biți generată trebuie să fie aleatoare d.p.d.v. statistic, ceea ce înseamnă că niciun algoritm
ce lucrează în timp polinomial nu poate distinge rezultatul generat de acest generator, de rezultatul
generat de un generator de numere cu adevărat aleatoriu, cu probabilitate mai mare de 1/2 (generatoarele
sunt indistinctibile computational - ” computationally indistinguishable” .
- Pentru fiecare bit din rezultatul generat, următorul bit din rezultat trebuie să fie imposibil de anticipat,
chiar dacă se cunosc toți biții precedenți, și se cunoaște algoritmul folosit.
- Secvența de biți generată să nu conțină repetiții; practic, nu se poate construi un generator cu perioadă
infinită, deci generatorul trebuie să aibă o perioadă cât mai mare.
- Secvența de biți generată să conțină biți independenți unul de celălalt (cu o corelare cât mai slabă).
Gradul de independență se verifică cu ajutorul testelor statistice.

Generatoare de numere pseudo-aleatoare

► Generatori liniari congruențiali

Generează secvențe aleatoare obținute prin generarea unei secvențe de resturi modulo M, fiecare
element al secvenței fiind o funcție liniară modulo M de elementul anterior din secvență:

25
xn = (a⋅xn-1 + b) mod M, unde:

xn este al n-lea număr din secvență


xn-1 este numărul anterior generat din secvență
x0 este valoarea inițială (”seed”), 0 ≤ x0 ≤ M
a (multiplicatorul) și b (incrementul) și M sunt parametrii generatorului – valori constante
M > 0 și a < M, b < M.

Un generator liniar congruențial are o perioadă de repetiție de cel mult M. Pentru anumite valori
ale lui a și b (de exemplu în cazul în care cmmdc(b,M)=1) perioada de repetiție va fi maximă, deci egală
cu M.
Exemplu: Pentru M = 31, x0 = 0, a = 3 și b = 5 se obține formula:

xn = (3⋅xn-1 + 5) mod 31, care va genera o secvență repetitivă de 31 de numere:


x0 = 0
x1 = 5
x2 = 20
x3 = 3
-------
x29 = 15
x30 = 19
x31 = 0
x32 = 5 , etc

Elementele generate pot fi convertite într-un șir binar prin utilizarea reprezentării binare a numerelor,
extrăgând anumiți biți din fiecare element convertit în binar, de exemplu bitul cel mai puțin semnificativ.

De exemplu, într-o reprezentare pe 8 biți:

0 = (00000000) și se alege bitul 0


5 = (00000101) și se alege bitul 1
19 = (00010011) și se alege bitul 1, etc.

► Generatori pătratici și cubici

Obținuți prin extensia relației de recurență liniare:

xn = (a⋅x2n-1 + b⋅xn-1 +c) mod M


xn = (a⋅x3n-1 + b⋅x2n-1 +c⋅xn-1 + d) mod M

Obs:

1) Parametrii generatorului trebuie aleși astfel încât să se obțină o perioadă maximă.

26
S-a demonstrat (D.E. Knuth – ”The art of computer programming – Vol. 2”) că șirul de numere obținut
de generatorul congruenţial pătratic are o perioadă maximă de mărime M dacă şi numai dacă:

1. c este prim cu M;
2. b = a-1 este multiplu de p, pentru orice p - divizor prim al lui M;
3. b este un multiplu de 4 dacă M este un multiplu de 4.

2) Aceste generatoare sunt simplu de implementat, dar nu sunt sigure d.p.d.v. criptografic. Pentru un
număr suficiente de mare de valori generate, pot fi aflați parametrii generatorului. Pentru a converti
secvența generată de un astfel de generator într-o secvență complet aleatoare, există posibilitatea unor
prelucrări ulterioare.
Un exemplu de prelucrare pentru îmbunătățirea caracteristicilor numerelor aleatoare obținute
este Algoritmul lui John von Neumann:

Fie un generator liniar congruențial care generează o secvență de biți 0 și 1 cu probabilitatea p


(necunoscută), respectiv 1-p. Secvența va fi divizată în blocuri de câte 2 biți, ce vor fi codificați prin
următoarea regulă:

00 → Ʌ, 0l → 0, 10 → 1, 11→ Ʌ unde Ʌ desemnează o secvență vidă

Exemplu: Fie secvența generată inițial: 1011101101001001. Se divide secvența în blocurile:


10, 11, 10, 11, 01, 00, 10, 01.
Aplicând codificarea Neumann se obține secvența: 1Ʌ1Ʌ0Ʌ10 = 11010, secvență complet aleatoare de
4 biți, obținută din secvența inițială de 16 biți.
Secvența rezultată va avea biți 0 și 1 echiprobabil, deoarece blocurile de biți 01 și 10 (care se mapează
în 0 și respectiv 1) au probabilități egale cu p(1-p).

Dezavantajul metodei: secvența rezultată este de lungime mult mai mică decât secvența inițială.
Dacă secvența inițială are lungimea L, lungimea maximă pentru secvența rezultată se obține atunci când
în secvența inițială p = 1/2, în acest caz obținându-se o lungime de L/4 biți.

► Generatori liniari congruențiali combinați

Combină doi sau mai mulți generatori liniari congruențiali în scopul de a obține perioade de
repetiție mai mari.
Generează secvențe aleatoare obținute astfel:
Fie xi,1, xi,2,, ..., xi,k al i-lea număr obținut din k generatori liniari congruențiali.
Al j-lea generator xj este obținut conform formulei:

27
xi+1,j = (aj⋅xi + bj) mod Mj
Generatorul produce numere întregi xij cu o distribuție uniformă în intervalul [0 , Mj-1], iar perioada
maximă de repetiție este: (M1-1)⋅(M2-1)⋅ .... ⋅(Mk-1)/2k-1

► Generatorul Blum-Blum-Shub (BBS) – generatorul rezidual pătratic

Generează secvențe aleatoare obținute astfel:

Fie p și q două numere prime, cu proprietatea: p ≡ q ≡ 3 (mod 4) și fie n = p⋅q (n se numește


întreg Blum).
Fie x0 o valoare inițială, aleasă aleator, x0 fiind un reziduu pătratic: x0 = k2 (mod n).
Se definește recursiv: xi = x2i-1 (mod n) și bi = xi (mod 2), i = 1, ..., m.
Biții pseudoaleator generați vor fi {b1, b2, …, bm}.

Exemplu: Fie p = 83 și q = 383 ⟹ n = 83⋅ 383 = 31789.


Fie x0 = 2752 (mod 31789) = 12047. Atunci:
x1 = 120472 (mod 31789) = 13424 ⟹ b1 = 0
x2 = 134242 (mod 31789) = 23724 ⟹ b2 = 0
x3 = 237242 (mod 31789) = 3931 ⟹ b3 = 1
----------------

Acest generator este lent, dar este suficient de sigur pentru a fi utilizabil în criptografie în cadrul
protocoalelor de generare a cheii de criptare.

► Generatorul congruențial invers

Generează secvențe aleatoare obținute prin generarea unei secvențe de resturi modulo M, fiecare element
al secvenței fiind o funcție liniară modulo M de elementul anterior din secvență:

xn = (a⋅Inv[xn-1] + b) mod M, unde: xn este al n-lea număr din secvență


xn-1 este numărul anterior generat din secvență
(Inv[z]*z) mod M = 1
x0 este valoarea inițială (”seed”), 0 ≤ x0 ≤ M
a (multiplicatorul) și b (incrementul) și M sunt parametrii generatorului – valori constante

► Cifrul Hill (numele celui care l-a creat în 1929)

Schemele de criptare monoalfabetică sunt vulnerabile la atacuri bazate pe analiza frecvențelor,


deoarece criptează caracterele alfabetului unul câte unul, astfel încât schimbarea unei litere în textul clar
schimbă doar o literă în criptogramă.

28
Analiza frecvențelor poate fi mult îngreunată atunci când sunt criptate blocuri de simboluri
simultan, în așa fel încât schimbarea unui simbol într-un bloc de text clar poate să schimbe toate
simbolurile din blocul corespunzător din textul criptat.
O astfel de schemă de criptare este ceea ce se cheamă cifru bloc, în care P și C sunt formate din
mulțimi de simboluri de lungime fixă, t (lungimea blocului), peste un alfabet 𝛴.
Acest tip de criptare este foarte general:
- Schemele de criptare monoalfabetică sunt cifruri bloc de lungime t = 1
- Cifrul Vigenère este un cifru bloc cu lungimea blocului egală cu lungimea cheii.

La modul general, un cifru bloc este descris astfel:


Fie t un număr natural, fixat.
P = C = Zt26

K, = {A ∈ Mtxt(Z26) | det(A)≠0 și cmmdc(det(A), 26)=1


o cheie de criptare este o matrice A pătrată și nesingulară, de dimensiune t, cu elemente din Z26, iar A-1
formează cheia de decriptare:
(∀) A ∈ K, și v ∈ Zt26, funcțiile de criptare / decriptare se definesc astfel:

eA(v) = v⋅A
dA(v) = v⋅A-1

Concret:
- La criptare: textul clar se împarte în blocuri de lungime t: x = 𝛼1.......𝛼n, |𝛼i|=t.
Prin criptare se obține textul criptat: y = 𝛽1.......𝛽n, 𝛽i = eA(𝛼i) =𝛼i⋅A(mod 26), i =1,...,n
- La decriptare: se folosește relația dA(𝛽i) = 𝛽i⋅A-1(mod 26)

De exemplu, fie t = 2 și fie A o matrice 2x2 pentru care există A-1(mod 26).
- se convertesc litere din textul clar într-o listă de numere, apoi se grupează aceste numere în ordine în
matrici linie cu dimensiunea 1 × 2 (să poată fi efectuată înmulțirea cu matricea A).
- ultima matrice linie va fi completată numai dacă lungimea textului clar este un multiplu al numărului
de rânduri din A (în acest caz 2). Dacă nu, atunci textul trebuie completat la sfârșit cu alte litere (cu o
literă în acest caz)
- fie un text clar de lungime n, convertit corespunzător în șirul de numere x1, x2, x3,. . . , xn.
- șirul corespunzător de numere ale textului criptat y1, y2, y3,. . . , yn se determină din următoarele produse
matriceale:

[y1 y2] = [x1 x2] ⋅ A (mod 26)


[y3 y4] = [x3 x4] ⋅ A (mod 26)
29
...............................................
[yn-1 yn] = [xn-1 xn] ⋅ A (mod 26)

- numerele textului criptat y1, y2, y3,. . . , yn sunt convertite înapoi în litere pentru a genera textul criptat.
- dacă textul criptat a fost obținut cu relația: y = x⋅A (mod 26), atunci pentru decriptare se calculează:
x = y⋅A-1 (mod 26).
[x1 x2] = [y1 y2] ⋅ A-1 (mod 26)
[x3 x4] = [y3 y4] ⋅ A-1 (mod 26)

...............................................
[xn-1 xn] = [yn-1 yn] ⋅ A-1 (mod 26)

Exemplu: să se cripteze textul CRIPTAREAHILL, cu matricea de criptare:


8 1
A=
19 14
Deoarece textul clar conține 13 litere, la sfârșitul textului clar se adaugă litera A, a. î. lungimea textului
clar să fie multiplu de 2.

- se convertesc literele din textul clar într-o listă de numere, în baza corespondenței între literele
alfabetului englez și numerele de la 0 la 25:
C R I P T A R E A H I L L A
2 17 8 15 19 0 17 4 0 7 8 11 11 0

Se calculează următoarele produse matriceale:

[2 17] ⋅ A (mod 26) = [2 17] ⋅ 8 1 (mod 26) = [1 6] (mod 26)


19 14

[8 15] ⋅ A (mod 26) = [8 15] ⋅ 8 1 (mod 26) = [11 10] (mod 26)
19 14

[19 0] ⋅ A (mod 26) = [19 0] ⋅ 8 1 (mod 26) = [22 19] (mod 26)
19 14

[17 4] ⋅ A (mod 26) = [17 4] ⋅ 8 1 (mod 26) = [4 21] (mod 26)


19 14

[0 7] ⋅ A (mod 26) = [0 7] ⋅ 8 1 (mod 26) = [3 20] (mod 26)


19 14

[8 11] ⋅ A (mod 26) = [8 11] ⋅ 8 1 (mod 26) = [13 6] (mod 26)


19 14

[11 0] ⋅ A (mod 26) = [11 0] ⋅ 8 1 (mod 26) = [10 11] (mod 26)
19 14
30
-numerele textului criptat sunt convertite înapoi în litere pentru a general textul criptat:

1 6 11 10 22 19 4 21 3 20 13 6 10 11

B G L K W T E V D U N G K L
Pentru decriptare se calculează: x = y⋅A-1 (mod 26):

- în primul rând se calculează A-1 (mod 26) și se obține matricea: 20 19


23 4

- se convertesc literele din textul criptat într-o listă de numere, în baza corespondenței între literele
alfabetului englez și numerele de la 0 la 25:
B G L K W T E V D U N G K L
1 6 11 10 22 19 4 21 3 20 13 6 10 11
- Se calculează următoarele produse matriceale:

[1 6] ⋅ A-1 (mod 26) = [1 6] ⋅ 20 19 (mod 26) = [2 17] (mod 26)


23 4

[11 10] ⋅ A-1 (mod 26) = [11 10] ⋅ 20 19 (mod 26) = [8 15] (mod 26)
23 4

[22 19] ⋅ A-1 (mod 26) = [22 19] ⋅ 20 19 (mod 26) = [19 0] (mod 26)
23 4

[4 21] ⋅ A-1 (mod 26) = [4 21] ⋅ 20 19 (mod 26) = [17 4] (mod 26)
23 4

[3 20] ⋅ A-1 (mod 26) = [3 20] ⋅ 20 19 (mod 26) = [0 7] (mod 26)


23 4

[13 6] ⋅ A-1 (mod 26) = [13 6] ⋅ 20 19 (mod 26) = [8 11] (mod 26)
23 4

[10 11] ⋅ A-1 (mod 26) = [10 11] ⋅ 20 19 (mod 26) = [11 0] (mod 26)
23 4
În final, numerele obținute se convertesc înapoi în litere pentru a genera textul clar:
2 17 8 15 19 0 17 4 0 7 8 11 11 0
C R I P T A R E A H I L L A

Obs:
1) calculator on-line pentru inversa unei matrice, de ex. https://www.apprendre-en-
ligne.net/crypto/hill/compl.html

31
2) O matrice A(nxn) pătratică este inversabilă dacă și numai dacă determinantul său este nenul, iar matricea
inversă este calculată prin formula:

A1  det( A )1  A* , unde A* (matricea adjunctă a matricei A) se obține prin înlocuirea fiecărui element
al matricei At (transpusa matricei A) cu complementul său algebric: (-1)i+j ⋅ Mij i,j =1,...,n
Mij se numește minorul elementului aij din matricea At și este egal cu determinantul obținut din At prin
eliminarea liniei i și coloanei j.
De exemplu, pentru o matrice A(3x3) cu elemente în Z26, A-1 mod 26 există ⟺ cmmdc(det(A), 26) = 1.
Pentru calculul lui det(A)-1 în Z26 se utilizează rezultatele din tabelul ce conține inversele elementelor
relativ prime cu 26:

det(A) 1 3 5 7 9 11 15 17 19 21 23 25
(det(A))-1 1 9 21 15 3 19 7 23 11 5 17 25

iar A* se obține astfel:

a b c a d g e h - b h b e
A = d e f ⟹ A = b e h ⟹ A* =
t
f i c i c f
g h i c f i
-d g a g - a d
f i c i c f

d g - a g a d
e h b h b e

6 14 13 6 0 1 -96 52 63 8 0 11
Exemplu: fie în Z26 A = 0 21 24 ⟹ A = 14 21 4 ⟹ A* =
t
24 -13 -144 = 24 13 12
1 4 0 13 24 0 -21 -10 126 5 16 22

15⋅8 15⋅0 15⋅11


-1 -1
det(A) = -513 mod 26 = -19 mod 26 = 7 ⟹ det(A) = 15 ⟹ A = 15⋅24 15⋅13 15⋅12
15⋅5 15⋅16 15⋅22
16 0 9
⟹ A-1 = 22 13 24
23 6 18

Criptanaliza cifrului Hill


- În primul rând, schimbarea unei litere în textul clar poate să schimbe t litere în criptogramă, și
anume, toate literele din blocul criptogramei corespunzător blocului textului clar ce conține litera
modificată.
În exemplul de mai sus, dacă se schimbă litera T în textul clar și anume se înlocuiește T cu B, la criptare,
înmulțirea matriceală:
[19 0] ⋅ A (mod 26) = [19 0] ⋅ 8 1 (mod 26) = [22 19] (mod 26)
19 14
devine:
32
[1 0] ⋅ A (mod 26) = [1 0] ⋅ 8 1 (mod 26) = [8 1] (mod 26)
19 14

deci, în textul criptat, blocul WT corespunzător secvenței [22 19] devine IB, corespunzător noii secvențe
[ 8 1]
Acest lucru este în contrast cu schemele de criptare anterioare și face analiza frecvenței
ineficientă dacă dimensiunea blocului, t, nu este mică. Situația poate fi descrisă cel mai bine făcând
referire la conceptul de difuzie, introdus de Shannon în 1949:
O schemă de criptare are o grad înalt de difuzie, dacă schimbarea unui caracter în textul clar
produce schimbarea multor caractere în criptogramă, efect constatat în cazul cifrului Hill.
- În al doilea rând, într-un cifru Hill în care matricea A, cheia de criptare, cu elemente din Z26 este
o matrice 2x2 sunt posibile 262 matrici linie [yi yi+1]. Analog, dacă t=3, deci matricea A este 3x3, sunt
posibile 263 = 17576 matrici linie [yi y+1]. La modul general, pentru dimensiunea t, sunt posibile 26t
matrici linie, număr cu creștere exponențială.
În cazul unei căutări exhaustive, decriptarea întregii matrici A de dimensiune 2x2 presupune 264
= 456976 încercări, deoarece numărul tuturor matricilor de dimensiune 2x2 cu elemente din Z26 este 264.
Deci, chiar și pentru matrici cheie relativ mici, criprosistemele Hill sunt mult mai rezistente la un atac
de tip forță brută decât criptosistemele de substituție. Mai important, criprosistemele Hill pot fi construite
cu orice nivel dorit de securitate, prin simpla folosire a unei matrice suficient de mari. Din punct de
vedere matematic, nu există nici o limită în alegerea dimensiunii matricei: se pot folosi, de exemplu
matrici pătrate de dimensiune 10x10 pentru a cripta 10 litere simultan.
Totuși, criptogramele obținute printr-o criptare Hill sunt vulnerabile la atacuri, în condițiile în
care un atacator ar cunoaște sau ar ghici o mică parte din textul clar. De exemplu, poate fi cunoscut de
unde sau de la cine a provenit mesajul și atunci se poate presupune că primele câteva litere din textul
clar indică un aspect legat de locație sau că ultimele câteva litere din textul clar reprezintă numele
expeditorului.

► Cifrul Polybius în varianta polialfabetică

Cifrul Polybius monoalphabetic poate fi extins la un cifru polialfabetic. Se alege o cheie care va
fi de asemenea criptată cu ajutorul tabelei Polybius, rezultatul fiind o secvență de numere din câte 2
cifre.
Textul clar este de asemenea criptat cu tabela Polybius, rezultând o altă secvență de numere de câte 2
cifre.
Cele două secvențe sunt combinate prin adunarea numerelor corespunzătoare. Cifrele celor două numere
adunate sunt în intervalul [1, 5], astfel încât fiecare cifră a sumei este în intervalul [2, 10], unde 10 este
scris ca un singur 0.
Decriptarea se face scăzând cheia din criptogramă. Fiecare cifră a criptogramei este mai mare decât cifra
corespunzătoare a cheii, cu excepția cifrelor din criptogramă care sunt zero. Dacă o cifră din criptogramă
este zero, aceasta trebuie înlocuită cu numărul 10 înainte de scădere.

33
De exemplu, fie textul clar: ”CRIPTARE POLYBIUS” iar cheia ”ZENITH”. Cele două secvențe
numerice corespunzătoare și suma lor sunt:
C R I P T A R E P O L Y B I U S : 13 42 24 35 44 11 42 15 35 34 31 54 12 24 45 43
Z E N I T H : 55 15 33 24 44 23

13 42 24 35 44 11 42 15 35 34 31 54 12 24 45 43 +
55 15 33 24 44 23 55 15 33 24 44 55 15 33 24 44
68 57 57 59 88 34 97 30 68 58 75 09 27 57 69 87

La decriptare:
68 57 57 59 88 34 97 30 68 58 75 09 27 57 69 87 se scrie:
68 57 57 59 88 34 97 30 68 58 75 109 27 57 69 87
Deci:
68 57 57 59 88 34 97 30 68 58 75 109 27 57 69 87 -
55 15 33 24 44 23 55 15 33 24 44 55 15 33 24 44
13 42 24 35 44 11 42 15 35 34 31 54 12 24 45 43
care se va decripta în textul clar: ”CRIPTARE POLYBIUS”

Obs: Criptosistemul Polybius în varianta polialfabetică poate oferi un grad ridicat de securitate dacă
dimensiunea cheii este egală cu dimensiunea textului clar, cheia este aleatorie și este folosită o singură
dată.

Substituții generalizate – substituția poligramică

Cifrul de substituție simplă poate fi generalizat în sensul că substituția se aplică unor blocuri
(secvențe) de simboluri: grupuri de litere ale textului clar (poligrame) sunt criptate împreună, fiind
substituite cu alte grupuri de litere. Astfel, litera nu mai este identificabilă ca entitate, iar frecvența
relativă a literelor unui alfabet, cunoscută apriori, nu mai are relevanță, aspect important în criptanaliză.
Alt aspect important în criptanaliză: numărul de poligrame este mult mai mare decât numărul de
litere unice și, în consecință, pot fi individualizate mai greu.
În substituția simplă: K = S26 = {𝜋 : Z26 → Z26 } – mulțimea tuturor permutărilor de 26 de elemente.

Generalizând, în locul utilizării unei permutări f : Z26 → Z26, se utilizează permutări f : Zn26 → Zn26, sau,
pentru un alfabet 𝛴 oarecare, f : 𝛴n → 𝛴n.
În cazul cel mai simplu, pentru grupuri de două litere (bigrame), se utilizează permutări f : Z26 x Z26 →
Z26 x Z26.

34
Dacă în substituția simplă spațiul cheilor include toate permutările posibile ale alfabetului de 26 de
caractere, deci |K| = 26!, în cazul substituției poligramice pentru n = 2 spațiul cheilor include (26 x 26)!
= 676! permutări, iar pentru un n oarecare dimensiunea crește la (26n)!
Având în vedere dimensiunea mare a unei chei (pt. n = 2 : 676) se utilizează o reprezentare
matriceală. De exemplu, criptosistemul Playfair (inventat de Ch Wheatstone în 1854 și promovat ulterior
de către lordul Playfair) utilizează un alfabet de 25 de simboluri, în care litera J este considerată împreună
cu litera I.
Criptarea se realizează în două etape:
● În prima etapă se construiește matricea de criptare:
- se introduc în matricea de dimensiune 5 x 5 literele cheii de criptare (care poate fi un cuvânt
sau mai multe cuvinte). Matricea ce completează rând cu rând, de la stânga la dreapta, eliminând literele
care se repetă.
- se completează spațiile rămase libere în matrice cu restul alfabetului englez (A – Z) care nu se
regăsesc în cheie.
De exemplu, pentru cheia PLAYFAIR CRIPTOSISTEM, rezultă următoarea matrice:

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

● În a doua etapă se criptează textul clar:


- mesajul clar se separă în grupuri de câte două litere, pentru care se aplică algoritmul de criptare
conform regulilor următoare. Dacă literele din grup coincid sau textul are un număr impar de simboluri,
se adaugă litera X după prima literă sau la sfârșitul textului. De exemplu, PROGRAMARE
CALCULATOARE devine:
PR OG RA MA RE CA LC UL AT OA RE
- Dacă cele două litere din grup se regăsesc în matrice pe aceași linie (coloană), se merge ciclic
cu o poziție la dreapta (respectiv în jos). Deci RE se criptează în EH, MA în KC, CA în MC.
La decriptare se merge ciclic cu o poziție la stânga (respectiv în sus).
- Dacă cele două litere din grup (fie acestea x1, x2) nu se regăsesc în matrice pe aceeași linie
(coloană), atunci regula de criptare este regula dreptunghiului: dacă x1, x2 sunt dispuse în vârfurile opuse
ale unui dreptunghi, atunci vor fi înlocuite cu caracterele din celelalte vârfuri ale dreptunghiului (fie
acestea c1, c2), c1 fiind în aceeași linie cu x1. De exemplu PR devine LI, OG devine IQ, RA devine CL,
LC devine AR, etc.
La decriptare se folosește aceeași regulă.

Mesajul clar PR OG RA MA RE CA LC UL AT OA RE devine prin criptare:

LI IQ CL KC EH MC AR VP YC CF EH
35
▪ Playfair a fost folosit de armata britanică în timpul războiului anglo-bur din Africa de Sud și în
primul război mondial, dar și de serviciile de informații britanice și de militarii mai multor țări, inclusiv
din Statele Unite și Germania, în timpul celui de-al doilea război mondial.
▪ În literatura universală există multe exemple de scrieri criptate cu cifrul Playfair, cea mai
sugestivă fiind nuvela ” Have His Carcase” scrisă de Dorothy Sayers, care oferă totodată un exemplu de
criptanaliză a acestui cifru.
▪ Criptosistemul Playfair este implementat în criptosistemele actuale astfel:
- în prima etapă literele sunt codificate binar
- perechile criptate sunt combinate apoi prin operația XOR: o pereche criptată va fi combinată prin
operația XOR cu perechea criptată anterior.

Criptosisteme bazate pe transpoziții

În acest tip de criptare, textul clar rămâne același, dar ordinea caracterelor din text este schimbată.
● Într-o formă simplistă, textul clar este scris în secvențe de caractere pe diagonală și ulterior
asamblat ca o secvență de rânduri.
De exemplu, fie textul clar: CRIPTOSISTEM DE TRANSPOZITIE. Textul va fi rescris:
C I T S S E D T A S O I I
R P O I T M E R N P Z T E
iar mesajul criptat va fi: CITSSEDTASOIIRPOITMERNPZTE

În afară de scrierea pe diagonală, există și alte scheme, de exemplu scrierea în format


triunghiular:
C T S D A O I
R P O I T M E R N P Z T E
I S E T S I

Criptanaliza în acest caz ar fi banală, prin simpla comparare a frecvenței caracterelor din
criptogramă cu cea a frecvenței caracterelor limbii în care este scris textul.
● În cazul transpoziției coloanelor, textul clar se scrie linie cu linie, într-o formă matriceală cu l
linii și k coloane, textul fiind recitit pe coloane în funcție de cheia de criptare reprezentată de un cuvânt
de lungime egală cu k. Ordinea alfabetică a literelor din cuvântul cheie va da ordinea în care se vor citi
coloanele.
De exemplu: fie textul clar: CRIPTOSISTEM DE TRANSPOZITIE, cheia fiind CRIPTARE.
Literele din cheie sunt scrise în ordine alfabetică:
1 2 3 4 5 6 7 8
A C E I P R R T
36
ceea ce generează permutarea: (2, 6, 4, 5, 8, 1, 7, 3)
Cheia are dimensiunea 8, deci textul clar va fi scris într-o matrice cu 8 coloane și deoarece
lungimea textului nu este multiplu de 8 se completează ultima linie cu caractere X:
2 6 4 5 8 1 7 3
C R I P T O S I
S T E M D E T R
A N S P O Z I T
I E X X X X X X

Textul criptat se obține din coloanele tabelei, citite în ordinea dată de permutare:
OEZXCSAIIRTXIESXPMPXRTNESTIXTDOX

Pentru a decripta mesajul de 32 de caractere cu cheia de 8 caractere, criptograma se împarte în blocuri


de 32/8 =4 caractere, numerotate de la 1 la 8:
OEZX CSAI IRTX IESX PMPX RTNE STIX TDOX
1 2 3 4 5 6 7 8
Blocurile vor constitui coloanele matricei de decriptare, acestea fiind scrise conform permutării dată de
ordinea alfabetică a literelor din cuvântul cheie: (2, 6, 4, 5, 8, 1, 7, 3)
2 6 4 5 8 1 7 3
C R I P T O S I
S T E M D E T R
A N S P O Z I T
I E X X X X X X

Textul clar rezultă din citirea linie cu linie a matricei rezultate: CRIPTOSISTEM DE TRANSPOZITIE.
Obs: Criptarea pe coloane poate fi mai sigură dacă se realizează succesiv, două sau mai multe
transpoziții. Va rezulta o permutare mai complexă ce va fi mult mai greu analizată.
De exemplu, pentru textul clar CRIPTOSISTEM DE TRANSPOZITIE, a rezultat în urma primei aplicări
a criptării, criptograma OEZXCSAIIRTXIESXPMPXRTNESTIXTDOX, care va fi încă o dată criptată
în baza aceluiași algoritm:
2 6 4 5 8 1 7 3
O E Z X C S A I
I R T X I E S X
P M P X R T N E
S T I X T D O X
Textul criptat se obține din coloanele tabelei, citite în ordinea dată de permutare:

37
SETDOIPSIXEXZTPIXXXXERMTASNOCIRT

Criptanaliza cifrului pe coloane: se încearcă descoperirea numărului de coloane, deoarece numărul


corect de coloane va conduce la obținerea textului clar inițial. Astfel, se poate folosi căutarea exhaustivă,
prin încercări succesive de împărțire a textului în coloane: 2, 3, etc.
► O altă variantă a criptării bazate pe transpoziții o constituie Grilele rotative: mesajul este criptat
și decriptat folosind o cheie ce constă într-o grilă pătrată cu ferestre la intervale neregulate.

Exemplul 1: descifrarea unei criptograme reprezintă un element cheie în acțiunea celor trei romane
scrise de Jules Verne, ce alcătuiesc seria ”Călătoriilor extraordinare”: ”O călătorie spre centrul
pământului”, ”800 de leghe pe Amazon” și ”Mathias Sandorf”.
În ultimul dintre acestea, pentru decriptarea criptogramei este folosită o grilă perforată rotativă, ceea ce
reprezintă o criptare bazată pe transpoziții. Mesajul criptat era**:
ihnalz zaemen ruiopn iar grila este:
arnuro trvree mtqssl
odxhnp estlev eeuart
aeeeil ennios noupvg
spesdr erssur ouitse
eedgnc toeedt artuee

Distribuția literelor în text este următoarea:


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
5 0 1 4 22 0 2 2 5 0 0 4 2 9 7 4 1 10 9 8 7 3 0 1 0 2
deci p(A) = 5/108= 0.046; p(B) = 0; p(C) = 0.009; p(D) = 0.037; p(E) = 0.204; ....; p(Z) = 0.018
r 1
Indicele de coincidență este I c ( x )   pi2  0.08 , ceea ce indică o limbă romanică, deoarece acestea
i 0

au, de obicei, indici de coincidență în jur de 0.08 (franceză 0.0778, italiană 0.738, spaniolă 0.0775,
portugheză 0.0791), spre deosebire de engleză, unde este 0.065.
Dispunerea textului sugerează o criptare prin transpoziții cu o grilă de 6x6.
La modul general, dacă criptograma este grupată în n rânduri cu n coloane, grila trebuie să aibă
corespunzător același număr de linii și coloane, astfel încât să acopere exact textul.
Se poziționează grila peste text și se rețin literele care rămân vizibile în locațiile perforate. Se
stabilește un sens de rotație al grilei, apoi se rotește grila la 90 de grade și se reține următorul set de litere
vizibil. Se continuă, rotind grila, până la decriptarea întregului mesaj.
În cazul acestei criptograme, grila se aplică, prin rotire, făcând 4 rotații în sens orar, pentru toate
cele 3 grupuri de 6x6 litere. În final, textul decriptat este:
“Tout est prêt. Au premier signal que vous nous enverrez de Trieste, tous se lèveront en masse pour
l’indépendance de la Hongrie. Xrzah.”

38
Exemplul 2: în primul război mondial, nemții au folosit pentru criptarea mesajelor sistemul de grile
perforate rotative de diferite dimensiuni, pe care le-au denumit: ANNA(5×5), BERTA (6×6),
CLARA(7×7), DORA(8×8), EMIL (9×9) și FRANZ (10×10).

Exemple de aplicații ale sistemelor de criptare

► Mișcarea nihilistă a fost o mișcare rusească înființată în anii 1860, membrii ei fiind cunoscuți în
întreaga Europă drept susținători ai utilizării violenței pentru a produce schimbări politice. Următoarea
scrisoare[3] este o criptogramă care se bazează pe un sistem de scriere secretă folosit frecvent de nihiliști,
în care textul este aparent inocent, dar conține un mesaj ascuns ucigător. Comunicarea secretă obținută
prin ascunderea unui mesaj este cunoscută sub numele de steganografie, derivată din cuvintele grecești
steganos, care înseamnă „acoperit” și grafen, care înseamnă „a scrie”.
Principiul steganogramei nihiliste se bazează pe particularitatea scrierii de mână, în care nu sunt
unite toate literele unui cuvânt. Pauzele sunt aparent cauzate de ridicarea stiloului, ceea ce se întâmplă
frecvent în care caligrafia persoanelor care au ocazii rare de a scrie. În scrisoare se observă că sfârșitul
unora dintre literele neconectate se orientează în jos, în timp ce altele se curbează în sus. Acestea din
urmă, indiferent dacă apar la finalul unui cuvânt sau nu, indică sfârșitul grupului criptat. De la stânga la
dreapta, se numără câte litere are fiecare grup. Cu aceste numere se formează perechi ce vor reprezenta
coordonatele literelor reprezentate în tabela lui Polybius (coloana,linia):

ARN - 3, OLD - 3 (33) DEARI - 5, T-1 (51) WASGO - 5, O - 1 (51) DNEW - 4, S – 1 (41)
TO – 2 , HEA – 3 (23) , RTHA – 4, TYO – 3 (4,3) , UHA – 3, VEF – 3 (33), OUNDA – 5, J -1 (51),
OBIN – 4, PARIS – 5 (45), A – 1, NN – 2 (12), AHOP – 4, ESY – 3 (43) ......... LLS – 3, NIA – 3 (33)

În final, mesajul numeric ascuns era: 33, 51, 51, 41, 23, 43, 33, 51, 45, 12, 43, 24, 11, 34, 34, 11, 34, 34,
42, 33, 11, 44, 42, 43, 33.
Fiecare pereche va reprezenta coordonatele literelor (coloana,linia) în tabela lui Polybius:
1 2 3 4 5
1 A B C D E
2 F G H I/J K
3 L M N O P
4 Q R S T U
5 V W X Y Z
39
iar mesajul decriptat era: NEEDMONEYFORASSASSINATION.
Utilizarea combinată a tehnicilor criptografice și steganografice pentru secretizare este astăzi utilizată în
e-banking sau în securizarea datelor biometrice.

Criptosisteme bazate pe transformări mixte (cifru produs)

Criptarea bazată pe transpoziții devine mai eficientă prin combinarea cu substituții, în cadrul unui
proces de fracționare – o etapă preliminară, prin care fiecare caracter din textul clar este înlocuit cu alte
simboluri; de exemplu, în cazul tabelei Polybius, fiecare literă a mesajului clar este înlocuită cu o pereche
de componente, ce reprezintă coordonatele literei în tabelă. În general, procesul de fracționare implică
un alfabet multifid: în fracționarea bifidă, fiecare simbol al alfabetului are 2 componente, în cazul trifid
3 componente, etc.
Ulterior fracționării, mesajul suportă prelucrări prin transpoziție, a.î. componentele
corespunzătoare fiecărui caracter din textul clar ajung să fie separate și împrăștiate în mesaj, obținând
astfel efectul de difuzie (schimbarea unui caracter în textul clar produce schimbarea multor caractere în
criptogramă).
Exemple de criptosisteme ce utilizează astfel de prelucrări: cifrul ADFGVX, cifrurile inventate
de Félix Delastelle în 1901(cifrul bifid, cifrul trifid, cifrul patru pătrate), cifrul VIC.

► Cifrul ADFGVX
Proiectat de Fritz Nebel (ofițer de comunicații în armata germană) și introdus de armata germană
în iunie 1918, cifrul ADFGVX a fost cel mai avansat din acea perioadă, deoarece a combinat
fracționarea, substituția și transpoziția. Descifrarea de către criptanalistul francez Georges Painvin
(1886–1980) a unui mesaj criptat cu acest cifru, cunoscut sub denumirea de „Le Radiogramme de la
Victoire”, a furnizat aliaților Antantei detalii critice despre o viitoare ofensivă majoră germană la
începutul lunii iunie 1918. A fost utilizat și pe Frontul de Est, pentru comunicații strategice între Berlin
și mai multe avanposturi din Est, cum ar fi România, Imperiul Turc și Misiunea Militară Germană în
Caucaz.
Interceptările criptogramelor germane de către posturile de ascultare britanice și americane din
perioada iulie-decembrie 1918, publicate de J.R. Childs în cartea ”General solution of the ADFGVX
Cipher System” este un exemplu al capacităților criptanalitice ale serviciului SIGINT (Allied Signals
Intelligence) la sfârșitul războiului.
Sistemul combină tehnici de substituție și transpoziție și este denumit după cele șase simboluri
Morse, A, D, F, G, V și X, singurele simboluri utilizate la transmiterea mesajelor ADFGVX. Aceste
simboluri au fost alese în mod deliberat, deoarece echivalentele lor de cod Morse erau suficient de
diferite pentru a minimiza erorile de transmisie.
- În etapa de substituție, se înlocuiește fiecare caracter (literă A- Z sau cifră 0 - 9) din textul clar cu
perechea de simboluri corespunzătoare din tabela ADFGVX, în care primul simbol reprezintă linia, iar
al doilea coloana:

40
A D F G V X
A B 3 M R L I
D A 6 F ∅ 8 2
F C 7 S E U H
G Z 9 D X K V
V 1 Q Y W 5 P
X N J T 4 G O

Tabela de criptare

De exemplu, fie textul clar: ”CRIPTAREA ADFGVX”


Secvența corespunzătoare este: FA AG AX VX XF DA AG FG DA DA GF DF XV GX GG
- În etapa de transpoziție secvența rezultată va fi plasată într-un alt dreptunghi pentru a se obține
criptograma finală, folosind o cheie numerică după cum urmează:
De exemplu: fie cheia DREPTUNGHI.
Literele din cheie sunt scrise în ordine alfabetică:

1 2 3 4 5 6 7 8 9 10
D E G H I N P R T U
ceea ce generează permutarea: (1, 8, 2, 7, 9, 10, 6, 3, 4, 5)
Cheia are dimensiunea 10, deci textul clar va fi scris într-o matrice cu 10 coloane:
1 8 2 7 9 10 6 3 4 5
F A A G A X V X X F
D A A G F G D A D A
G F D F X V G X G G
Textul criptat se obține din coloanele tabelei, citite în ordinea dată de permutare:
FDGAADXAXXDGFAGVDGGGFAAFAFXXGV
După transpunere, cele două simboluri ADFGVX care reprezintă o literă de text sau o cifră nu vor apărea
cel mai probabil unul lângă celălalt în text. Acest efect se numește fracționare – efect ce crește
semnificativ securitatea criptării.

Pentru a decripta mesajul de 30 de caractere cu cheia de 10 caractere, criptograma se împarte în blocuri


de 30/10 =3 caractere, numerotate de la 1 la 10:
FDG AAD XAX XDG FAG VDG GGF AAF AFX XGV
1 2 3 4 5 6 7 8 9 10
Blocurile vor constitui coloanele matricei de decriptare, acestea fiind scrise conform permutării dată de
ordinea alfabetică a literelor din cuvântul cheie: (1 8 2 7 9 10 6 3 4 5)

41
1 8 2 7 9 10 6 3 4 5
F A A G A X V X X F
D A A G F G D A D A
G F D F X V G X G G
Textul clar rezultă din citirea linie cu linie a matricei rezultate, apoi împărțirea acestuia în perechi de
simboluri ADFGVX și înlocuirea fiecărei perechi cu litera sau cifra de text corespunzătoare, în
conformitate cu tabela de criptare:
(F A) (A G) (A X) (V X) (X F) (D A) (A G) (F G) (D A) (D A) (G F) (D F) (X V) (G X) (G G)
CRIPTAREA ADFGVX

Obs: în cazul criptării ADFGVX, spațiul cheilor este egal cu produsul dintre numărul posibil de
substituție unice, (6x6)! = 36! și n!, unde n este dimensiunea cheii numerice.

► Cifrul bifid
- În etapa de substituție, se înlocuiește fiecare caracter din textul clar cu perechea de simboluri
corespunzătoare din tabela Polybius, în care primul simbol reprezintă linia, iar al doilea coloana, cu
deosebirea că în acest caz coordonatele sunt scrise vertical, în coloane.
1 2 3 4 5
1 A B C D E
2 F G H I/J K
3 L M N O P
4 Q R S T U
5 V W X Y Z
Tabela Polybius

De exemplu, fie textul clar: ”MESAJ SECRET CIFRU BIFID”


Secvența corespunzătoare este: 3 1 4 1 2 4 1 1 4 1 4 1 2 2 4 4 1 2 2 2 1
2 5 3 1 4 3 5 3 2 5 4 3 4 1 2 5 2 4 1 4 4
- În etapa de transpoziție, în primul rând are loc o grupare a numerelor în blocuri de o anumită
dimensiune – o perioadă, ce poate fi orice număr.
De exemplu, se alege perioada 3 și se obțin blocuri de lungime 3:
3 1 4 1 2 4 1 1 4 1 4 1 2 2 4 4 1 2 2 2 1
2 5 3 1 4 3 5 3 2 5 4 3 4 1 2 5 2 4 1 4 4
Ulterior, are loc procesul de fracționare: blocurile de perechi de câte 3 numere sunt citite ca o singură
secvență, de la stânga la dreapta, bloc după bloc:
3 1 4 2 5 3 1 2 4 1 4 3 1 1 45 3 2 1 4 15 4 3 2 2 4 4 1 2 4 1 2 5 2 4
2 2 1 1 4 4

42
Urmează împărțirea șirului rezultat în perechi de simboluri și înlocuirea fiecărei perechi cu litera
corespunzătoare, în conformitate cu tabela de Polybius:
(3 1) (4 2) (5 3) (1 2) (4 1) (4 3) (1 1) (4 5) (3 2) (1 4) (1 5) (4 3) (2 2) (4 4) (1 2) (4 1)
(2 5) (2 4) (2 2) (1 1) (4 4)
Se obține următorul mesaj criptat: LRXBQSAUMDESGTBQKIGAT

Pentru decriptare, se reiau pașii, în sens invers.

► Cifrul trifid

În locul tabelei Polybius se utilizează un format de 27 de caractere dispuse într-un grid 3x3x3.
Conform gridului, rezultă următoarea stratificare pe niveluri:

1 2 3 1 2 3 1 2 3
1 A B C 1 J K L 1 S T U
2 D E F 2 M N O 2 V W X
3 G H I 3 P Q R 3 Y Z ⋅
nivelul 1 în cub nivelul 2 în cub nivelul 3 în cub

Indicii fiecărei litere din textul clar sunt scriși pe coloană, iar ulterior are loc citirea numerelor în perechi
de câte 3, rând cu rând.
De exemplu, fie textul clar: ”MESAJ SECRET CIFRU TRIFID”
Secvența corespunzătoare este: 2 1 3 1 2 3 1 1 2 1 3 1 1 1 2 3 3 2 1 1 1 1
2 2 1 1 1 1 2 1 3 2 1 1 3 2 3 1 1 3 3 2 3 2
1 2 1 1 1 1 2 3 3 2 2 3 3 3 3 3 2 3 3 3 31
Rezultă secvența liniară:
(2 1 3) (1 2 3) (1 1 2) (1 3 1) (1 1 2) (3 3 2) (1 1 1) (1 2 2) (1 1 1) (1 2 1) (3 2 1)
(1 3 2) (3 1 1) (3 3 2) (3 2 1) (2 1 1) (1 1 2) (3 3 2) (2 3 3) (3 3 3) (2 3 3) (3 3 1)
În baza cubului, grupurile de numere sunt convertite iar în litere, rezultând următorul text criptat:

LFBGBZAEADVHSZVJBZR⋅RS

Decriptarea unui mesaj criptat cu cifrul trifid se face parcurgând etapele în ordine inversă: în primul rând
se convertește fiecare literă în coordonatele numerice, conform gridului; apoi, se împarte secvența de
numere rezultată în 3 rânduri egale și numerele corespunzătoare fiecărei coloane se convertesc în literele
textului clar.

► Cifrul patru pătrate

Utilizează 4 matrice pătrate de dimensiune 5x5, dispuse într-un pătrat ce conține literele alfabetului:

43
a b c d e E X A M P
f g h i j L B C D F
k l m n o G H I J K
p r s t u N O R S T
v w x y z U V W Y Z

K E Y W O a b c d e
R D A B C f g h i j
F G H I J k l m n o
L M N P S p r s t u
T U V X Z v w x y z
Cele două matrice cu majuscule vor fi asociate textului criptat, iar cele două matrice cu litere mici vor
fi asociate textului clar. De aceea, matricele cu majuscule nu sunt aranjate în ordine alfabetică.
De exemplu, fie textul clar: ”CIFRUL PATRU PATRATE”
Algoritmul de criptare este următorul:
- Se împarte textul clar în digrame: CI FR UL PA TR UP AT RA TE
- Se identifică în matricea stânga sus prima literă din digraf, pe linia l1 și coloana c1: litera C, linia 1 și
coloana 3
- Se identifică în matricea dreapta jos a doua literă din digraf, pe linia l2 și coloana c2: litera I, linia 2 și
coloana 4
- Se determină prima literă din textul criptat ca fiind cea din matricea dreapta sus, situată pe linia l1 și
coloana c2: litera M
- Se determină a doua literă din textul criptat ca fiind cea din matricea stânga jos, situată pe linia l2 și
coloana c1: litera A
Se continuă în același mod cu celelalte digrafe și se obține textul criptat:
CI FR UL PA TR UP AT RA TE
MA BL OJ NK OP NS ML NE TW

Decriptarea unui mesaj criptat cu cifrul Patru pătrate se face parcurgând etapele în ordine inversă: în
primul rând digrafele textului criptat se separă: primul caracter se identifică în matricea dreapta sus, iar
al doilea caracter în matricea stânga jos; se localizează celelalte colțuri ale dreptunghiului format, care
vor reprezenta digraful din textul clar, prima componentă fiind ce a din matricea stânga sus.

► Cifrul VIC
Utilizat de spionii ruși în anii ’50, acest sistem combină o etapă de substituție și două transpoziții,
utilizând o ”tablă de șah pentru uniformizare” – ”straddling checkerboard” pentru normalizarea
distribuțiilor de frecvențe într-un mesaj, practic, o tabelă de substituție care are rolul de a re-substitui
cele mai frecvente caractere din limbaj, prin alte caractere.
În vara anului 1953, un tânăr distribuitor de ziare din Brooklyn a constatat că una dintre monezile
primite ca plată era neobișnuită. I s-a părut ciudată și aruncând-o la pământ, moneda s-a desfăcut, iar în
interior era o bucată de microfilm cu 10 coloane de numere. Timp de 4 ani, agenții FBI la care a ajuns
44
microfilmul au încercat decriptarea mesajului, dar, neavând nici un alt text criptat astfel, nu au reușit
decât în 1957, când, un fost ofițer rus cu numele de cod Victor, emigrat în America, le-a dezvăluit
algoritmul de criptare:
- În prima etapă a criptării, textul clar este codificat prin tabela de substituție, urmând ca secvența astfel
obținută să fie supusă ulterior la două prelucrări diferite prin transpoziție.
Tabela de substituție ”straddling checkerboard”, în forma originală a fost concepută și adaptată limbii
ruse și substituie cele mai frecvente litere din limba rusă.

Riley Dankovich (2014). Straddling checkerboard using the keyword СНЕГОПА (“snowfall”)

Tabela codifică literele cele mai des utilizate în valori de o singură cifră. Toate celelalte litere
sunt codate în valori din două cifre. Acest lucru reduce considerabil dimensiunea mesajului (aproximativ
1.5 cifre / literă față de 2.0 pentru sistemele fixe cu două cifre).
Conform histogramei frecvenței de apariție a literelor în limba engleză, literele E, T, O, A, I, N,
S, H, R sunt cele mai frecvente. Astfel, în prima linie a tabelei de dimensiune 4x10 este introdusă o
combinație formată din aceste litere, de exemplu ETONISAR:
4 9 1 6 0 8 5 2 3 7

E T O N I S A R

3 B C D F G H J K L M

7 P Q U V WXY Z . /

Primul rând conține cele zece cifre, 0-9. Acestea pot fi scrise în ordine sau amestecat, pentru o
securitate suplimentară. Al doilea rând este cel completat cu 8 litere de mare frecvență lăsând două spații
goale. Rândurile rămase sunt etichetate cu fiecare cifră căreia nu i s-a atribuit o literă în cel de-al doilea
rând, apoi sunt completate cu restul alfabetului. Ca și ordonarea cifrelor din rândul de sus, alfabetul
poate fi prezentat în ordine ( așa cum este în acest exemplu), sau amestecat.
Deoarece tabela are 20 de locații și numai 18 sunt completate cu literele din restul alfabetului,
celelalte locații pot fi completate cu alte simboluri, în acest exemplu simbolul ”.” și simbolul ”/”.
- La criptare, o literă din al doilea rând este înlocuită de numărul care etichetează coloana sa, iar
literele din al treilea și al patrulea rând sunt înlocuite cu un număr format din două cifre care reprezintă
numărul rândului și al coloanei.
De exemplu, mesajul CRIPTAREA VIC se va transformă în secvența:
3920749524576039

45
- Dar, înainte de a efectua aceste substituții, mesajul este tăiat la întâmplare în două părți care vor
fi interschimbate. Tăietura este indicată prin semnul ”/”.
- Se trece la următoarea etapă de criptare, prin care se adună modulo 10 o cheie numerică secretă,
de exemplu 0 3 4 2 :

3920749524576039 +
0342034203420342
3262773727996371
Obs: mesajele transmise aveau o dimensiune mult mai mare, ceea ce genera o matrice de numere
rezultate în urma criptării. Adunarea modulo 10 se efectua acelor linii al căror număr corespundea unor
numere selectate aleator din almanahurile statisticilor industriale. Astfel de cărți au fost considerate
suficient de plictisitoare pentru a nu stârni suspiciunea în cazul în care un agent ar fi fost percheziționat
(mai ales că poveștile de acoperire ale agenților erau ca oameni de afaceri).
- Ulterior, matricea rezultată este supusă la două etape succesive de transpoziții pe coloane,
conform unor chei de transpoziție.
Siguranța criptării prin acest sistem rezultă din combinația celor două metode simple: substituția
monoalfabetică și transpoziția pe coloane:
- substituția este complicată de caracteristicile tabelei de substituție: tabelele de substituție obișnuite,
neavând linii neetichetate, generează pentru fiecare literă din textul clar o substituție cu două caractere
(cele două coordonate). În cazul cifrului VIC se produce la criptare o alternanță între substituții cu două
caractere și substituții cu un singur caracter, a.î. pentru un criptanalist este dificil să împartă secvența de
numere rezultată, în perechi de numere și respectiv numere singure.
- această neregularitate mărește de asemenea, dificultatea reconstrucției tabelelor de transpoziții.

46

S-ar putea să vă placă și