Sunteți pe pagina 1din 40

Criptografie

Proiect realizat de: Grosu Mihnea-Constantin


Ce este
criptografia ?
Criptografia reprezintă o ramură a matematicii care se ocupă cu
securizarea informației precum și cu autentificarea și restricționarea accesului
într-un sistem informatic. În realizarea acestora se utilizează atât metode
matematice (profitând, de exemplu, de dificultatea factorizării numerelor foarte
mari), cât și metode de criptare cuantică (arbordare bazată pe fizica cuantică).

Termenul de criptografie este compus din cuvintele de origine greacă


κρυπτός kryptós (ascuns) și γράφειν gráfein (a scrie).

Criptologia este considerată ca fiind cu adevărat o știință de foarte


puțin timp. Aceasta cuprinde atât criptografia – scrierea secretizată – cât și
criptanaliza. De asemenea, criptologia reprezintă nu numai o artă veche, ci și o
știință nouă: veche pentru că Iulius Cezar a utilizat-o deja, dar nouă pentru că a
devenit o temă de cercetare academico-științifică abia începând cu anii 1970.
Manuscrisul lui Voynich (manuscrisul de
Această disciplină este legată de multe altele, de exemplu de teoria la Vila Mondragon) este un manuscris
numerelor, algebră, teoria complexității, informatică. cifrat misterios, încă nedescifrat, despre
care nu se cunoaște nici autorul și nici
data apariției.
Noțiune de bază care trebuie știute
Transformarea numerelor în baza 2 și 16

Ce este o baza de numeraţie?


Baza unui sistem de numerație se definește ca fiind numărul unităților de același ordin de mărime care
formează o unitate de ordin imediat superior. Altfel spus, baza unui sistem de numerație reprezintă numărul de semne
distincte necesare scrierii unui număr.
Pentru scrierea numerelor in baza 10 se folosesc cifrele: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Pentru scrierea numerelor in baza 9 se folosesc cifrele: 0, 1, 2, 3, 4, 5, 6, 7, 8.
Pentru scrierea numerelor in baza 8 se folosesc cifrele: 0, 1, 2, 3, 4, 5, 6, 7.

Pentru scrierea numerelor in baza 2 se folosesc cifrele: 0, 1.

Atentie: Pe parcursul aniilor o să întâlniți și alte baze de numerație, cum ar fi baza 11 (sau mai comun în
informatică – baza 16). Aceste baze folosesc toate cifrele disponibile în baza 10 (0 -> 9) precum și litere din alfabet (A
– Z). Baza 16 folosește următoarele simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
-Convertirea unui numar din baza 10 in baza 2-

Procedeul de lucru este următorul:


1. Împărțim numărul nostru la 2 (deoarece vrem să îl convertim în baza 2). Dacă doream să îl convertim în
baza 5 atunci împărțeam totul la 5.
2. Împărțim până în momentul în care rezultatul devine 0.
3. După ce am terminat de împărțit, luăm toate resturile în ordine inversă și scriem numărul obținut.
Exemplu: vom transforma numărul 420 din baza 10 în baza 2

-Convertirea unui numar din baza 2 in baza 10-

Procedeul de lucru este următorul:


1. Luăm fiecare cifră (începând de la stânga la dreapta) pe rând.
2. Înmulțim rezultatul precedent cu 2 (deoarece convertim numărul din baza 2).
3. Adunăm cifra curentă la ceea ce am obținut la pasul 2.
-Convertirea unui numar din baza 10 in baza 16-

În sistemul hexazecimal se utilizează 16 simboluri: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Semnificația zecimală a


simbolurilor A,B,C,D,E,F este, în ordine, 10,11,12,13,14,15.
Pentru a trece un număr din baza 10 în baza 16 se procedează astfel :
1. Se împarte succesiv la 16 numărul (apoi câturile) si se reţin resturile.
2. Dacă acestea sunt 10,11,12,13,14,15 se înlocuiesc cu A,B,C,D,E,F.
3. Resturile obţinute formează cifrele numărului scris în baza 16 (de la ultimul rest la primul).
Exemplu:
2156(10)=…(16)*2156 = 134 x 16 +12 => 134 = 8 x 16 + 6 => 8 = 0 x 16 + 8 => X = 86C(16)

-Convertirea unui numar din baza 16 in baza 10-

Pentru a trece un număr din baza 16 în baza 10 se procedează la fel ca la trecerea din baza 2 în baza 10,
avându-se în vedere înlocuirea literelor A, B, C, D, E, F cu 10, 11, 12, 13, 14, 15.
Un număr în baza 16 are corespondent in baza 10 un numar egal cu suma produselor dintre fiecare cifră și 16
la exponentul egal cu poziția pe care se află cifra în numărul scris în baza 16 (poziția este calculată de la dreapta la
stânga).

Exemplu:

86C(16) = 8 x 16^2 + 6 x 16^1 + 12 x 16^0 = 2156(10)


Operații pe biți

Operațiile pe biți se aplică numai datelor de tip întreg, și presupun manipularea directă a biților din
reprezentarea în memorie a operanzilor.

Operatorul de negație ~
Operatorul de negație pe biți (~) este singurul operator unar pe biți. Acesta schimbă fiecare bit al operandului
în opusul său. Deci, biții 0 vor deveni 1, iar biții 1 vor deveni 0.

Exemplu:
x = 00010110
~x = 11101001

Operatorul de conjuncție biți & (AND)


Este un operator binar care are ca rezultat numărul obținut prin conjuncția fiecărei perechi de biți ce apar în
reprezentare în memorie a operanzilor:
Exemplu: să calculăm 13 & 151.
Reprezentarea lui 13 este 0000000000001101. Reprezentarea lui 151 este
0000000010010111:

0000000000001101 &
0000000010010111

Se obține:0000000000000101, adică 5 Deci: 13 & 151 == 5


Operatorul de disjuncție pe biți | (OR)
Este un operator binar care are ca rezultat numărul obținut prin disjuncția fiecărei perechi de biți ce apar în
reprezentare în memorie a operanzilor:
Exemplu: să calculăm 13 | 151.
Reprezentarea lui 13 este 0000000000001101. Reprezentarea lui 151 este 0000000010010111:

0000000000001101 |
0000000010010111

Se obține: 0000000010011111, adică 159 Deci: 13 | 151 == 159


Operatorul de disjuncție exclusivă ^ (XOR)
Este un operator binar care are ca rezultat numărul obținut prin disjuncția exclusivă fiecărei perechi de biți ce
apar în reprezentare în memorie a operanzilor:

Exemplu: să calculăm 13 ^ 151.


Reprezentarea lui 13 este 0000000000001101. Reprezentarea lui 151 este 0000000010010111:

0000000000001101 ^
0000000010010111

Se obține: 0000000010011010, adică 2 + 8 + 16 + 128 = 154.

Deci: 13 ^ 151 == 154


Operatorul de deplasare spre stânga – shift left <<

Este un operator binar care are ca rezultat numărul obținut prin deplasare spre stânga a biților din
reprezentarea în memorie a primului operand cu un număr de poziții egal cu al doilea operand.

Exemplu: să calculăm 13 << 3.


Reprezentarea lui 13 este 0000000000001101. Deplasând toți biții spre stânga cu 3 poziții se obține:
0000000001101000, adică 104.

Să observăm că 104 este egal cu 13 * 2^3. În general n << k este n * 2^k.


! Pentru a calcula 2^n putem folosi operația 1 << n !

Operatorul de deplasare spre dreapta – shift right >>

Este un operator binar care are ca rezultat numărul obținut prin deplasare spre dreapta a biților din
reprezentarea în memorie a primului operand cu un număr de poziții egal cu al doilea operand.

Exemplu: să calculăm 133 >> 3.


Reprezentarea lui 133 este 0000000010000101. Deplasând toți biții spre dreapta cu 3 poziții se obține:
0000000000010000 adică 16.

Să observăm că 16 este egal cu 133 / 2^3.


! În general n >> k este n / 2^k. !
Aritmetică modulară

Aritmetica modulară (numită uneori „aritmetică a ceasului” , deoarece acest principiu este baza pentru
calcularea orelor în cicluri de 12 sau 24 de ore) este o ramură importantă a matematicii. Se Găsesc aplicații în
criptografie,teoria numerelor (în special în căutarea numerelor prime) și stă la baza multora dintre cele mai frecvente
operații aritmetice și algebrice.

Este un sistem de aritmetică întreagă, în care numerele "se înfășoară în jurul lor" ori de câte ori ajung la
multiplii unui număr dat „n” , cunoscută sub numele de formă. Pentru a înțelege, gândiți-vă la funcționarea unui ceas în
format de 12 ore: după ce treceți de ora 12, "începeți din nou" de la numărul 1 pentru a număra orele. A spune "este
ora 15" (format de 12 ore) este același lucru cu "este 3 PM" (format de 24 de ore). Tradus în termeni matematici,
înseamnă că . Se citește, 15 este congruent la 3 modular 12 (sau 15 modulo 12 este 3) .

Aritmetica modulară și notația obișnuită a congruențelor au fost introduse oficial în 1801.


Diverse metode de
criptare a textului
Substituția monoalfabetică Pentru a înțelege, scrieți alfabetul peste
O substituție alfabetică este un cifru de alfabetul clasic:
substituție în care literele alfabetului sunt înlocuite cu
altele în conformitate cu o corespondență 1-1 (o literă
simplă corespunde întotdeauna aceleiași litere de cifru).
Substituția implică o înlocuire în textul simplu
a tuturor literelor din primul rând cu literele asociate în
Se spune că substituția este monoalfabetică
al doilea rând.
deoarece înlocuiește o singura literă cu o alta.
Exemplu: Toate literele „A” devin „N”, toate „B”
Substituția monoalfabetică constă în utilizarea
rămân „B”, toate „C” devin „A”, etc.
unui alfabet mixt (cu literele într-o ordine neobișnuită) și
înlocuirea literelor alfabetului normal cu acesta.
Exemplu: Cu această substituție „DCODE”
este criptat ca „JAKJY”.
Exemplu:
NBAJYFOWLZMPXIKUVCDEGRQSTH este un
alfabet total aleatoriu cu cele 26 de litere ale alfabetului
latin.
Bacon Cipher (inventat de
Francis Bacon în 1605)
Criptarea lui Bacon folosește un alfabet de substituție bazat pe 2 litere (numite biliteral), adesea A și B,
înlocuind literele alfabetului.

Aceste două tabele sunt, de obicei, utilizate


atât pentru criptarea, cât și pentru decriptarea
mesajelor

Exemplu: DCODE este criptat AAABB, AAABA, Exemplu: AAABB AAABA ABBAB AAABB
ABBAB, AAABB, AABAA AABAA este echivalent cu DCODE
The Caesar cipher

Codul Cezar este un cifru de substituție monoalfabetic, unde fiecare literă este înlocuită cu o altă literă situată
puțin mai departe în alfabet (prin urmare, deplasată). Distanța de deplasare este aleasă de un număr numit decalaj,
care poate fi la dreapta (de la „A” la „B”) sau la stânga (de la „B” la „A”).

Exemplu: să criptăm „DCODEX” cu un shift de 3.

Pentru a cripta „D”, luați alfabetul și căutați 3 litere după: „G”. Deci „D” este criptat cu „G”.
Pentru a cripta „X”, va trebui să luați alfabetul de la capaăt : după „X” : „Y”, după „Y” : „Z”, după „Z” : „A”. Deci „X” este
codificat drept „A”.
„DCODEX” este codificat „GFRGHA”

Un alt mod de a cripta, mai matematice, ar fi să notăm „A” = 0, „B” = 1, ..., „Z” = 25, și se adaugă o constantă
(shift-ul), apoi modulo rezultat 26 (lungimea alfabetului) este textul codificat.

Exemplu: Pentru a cripta „D” (care are valoarea 3), adăugați shift-ul de 3: 3+3=6 și găsiți litera pentru 6:
6=„G”, deci „D” este criptat cu „G”. Pentru a cripta „X” = 23, 23 + 3 = 26 și 26 mod 26 = 0, 0 = „A”, astfel încât „X” este
criptat cu „A”, etc.

Pentru a decripta un mesaj criptat prin metoda Caesar, trebuie să înlocuiești literele în funție de shift și să
mergi în sens contrar în alfabet față de sensul luat pentru criptarea mesajului.
Criptare simetrică și asimetrică bazată pe chei
NIVEL DE COMPLEXITATE - MEDIU

Ce este o cheie criptografică?

În criptografie, o cheie este o informație utilizată pentru încăierarea datelor, astfel încât să pară aleatorie; de
multe ori este un număr mare, sau șir de numere și litere. Când datele necriptate, numite și text simplu (plaintext), sunt
puse într-un algoritm criptografic folosind cheia, textul simplu iese în cealaltă parte ca date cu aspect aleatoriu. Cu
toate acestea, oricine are cheia potrivită pentru decriptarea datelor le poate pune înapoi în formă de text simplu.

De exemplu, să presupunem că luăm un mesaj text simplu, "salut", și îl criptăm cu o cheie; să spunem că
cheia este "2jd8932kd8." Criptat cu această cheie, "salutul" nostru simplu devine "X5xJCSycg14=", care pare a fi o
combinație de text aleatoriu. Cu toate acestea, decriptându-l cu aceeași cheie, obținem "salut" înapoi.

Plaintext + key = ciphertext:


hello + 2jd8932kd8 = X5xJCSycg14

Ciphertext + key = plaintext:


X5xJCSycg14 + 2jd8932kd8 = hello

Acesta este un exemplu de criptografie simetrică, în care se utilizează o singură cheie. În criptografia cu
cheie publică, ar exista în schimb două chei. Cheia publică ar cripta datele, iar cheia privată le-ar decripta.
Ce este criptografia cu cheie publică ?

Criptografia cu cheie publică este o metodă de criptare sau semnare a datelor cu două chei diferite și de a
face una dintre chei, cheia publică, disponibilă pentru oricine să o utilizeze. Cealaltă cheie este cunoscută sub numele
de cheie privată. Datele criptate cu cheia publică pot fi decriptate numai cu cheia privată. Din cauza acestei utilizări a
două chei în loc de una, criptografia cu cheie publică este cunoscută și sub numele de criptografie asimetrică. Este
utilizat pe scară largă, în special pentru TLS(Transport Layer Security) / SSL(Secure Sockets Layer), ceea ce face
HTTPS( Hypertext transfer protocol secure) posibil.

Cum se folosesc protocoalele TLS/SSL de sistemul criptografic de chei publice ?

Criptografia cu cheie publică este extrem de utilă pentru stabilirea comunicațiilor securizate prin Internet (prin
HTTPS). Certificatul SSL/TLS al unui site web, care este partajat public, conține cheia publică, iar cheia privată este
instalată pe serverul de origine - este "deținută" de site-ul web.

TLS Handshake utilizează criptografia cheii publice pentru a autentifica identitatea serverului de origine și
pentru a face schimb de date care sunt utilizate pentru generarea cheilor de sesiune. Un algoritm de schimbare de
cheie, cum ar fi RSA sau Diffie-Hellman, utilizează perechea de chei public-privată pentru a conveni asupra cheilor de
sesiune, care sunt utilizate pentru criptarea simetrică odată ce handshake-ul este completă. Clienții și serverele pot
conveni asupra unor noi chei de sesiune pentru fiecare sesiune de comunicare, astfel încât actorii răi să nu poată
decripta comunicațiile chiar dacă identifică sau fură una dintre cheile sesiunii dintr-o sesiune anterioară.
Diverse metode de criptare a textului
VIGENERE CIPHER
-CRIPTARE POLI-ALFABETICĂ-

CUM SE CODEAZĂ CU VIGNERE CIPHER ?


Criptarea cu Vigenere utilizează o cheie din litere (și un alfabet). Există mai multe modalități de a realiza
manual cifrul:
Vigenere Ciphering prin adăugarea de litere
Pentru a cripta un text, luați prima literă a mesajului și prima literă a cheii, adăugați valoarea lor (literele au o
valoare în funcție de rangul lor în alfabet, începând cu 0). Rezultatul adăugării modulo 26 (26 = numărul de litere din
alfabet) dă rangul literei cifrate.
Exemplu: Pentru a cripta „DCODE”, cheia este KEY și alfabetul este ABCDEFGHIJKLMNOPQRSTUVWXYZ.
Luați primele litere ale textului simplu D (valoare = 3) și ale cheii K (valoare = 10) și adăugați-le (3+10=13), litera cu
valoarea 13 este N. Continuați cu următoarea literă a textului simplu și cu următoarea literă a cheii. Când ajungeți la
sfârșitul cheii, reveniți la prima literă a cheii.

Vigenere Ciphering folosind un tabel

Pentru a cripta folosind metoda Vigenere, cel mai simplu mod este de a avea o grilă de intrare dublă (un
tabel) (atunci când alfabetul este ABCDEFGHIJKLMNOPQRSTUVWXYZ):
Vigenere Deciphering prin scăderea literelor

Exemplu: Pentru a decripta NGMNI, cheia este cheie și


alfabetul este ABCDEFGHIJKLMNOPQRSTUVWXYZ.

Pentru a decripta, luați prima literă a cifrului și prima literă a


cheii și scădeți valoarea lor (literele au o valoare egală cu poziția lor în
alfabet începând de la 0). Dacă rezultatul este negativ, adăugați 26 (26
= numărul de litere din alfabet), rezultatul dă rangul literei simple.
Vigenere Ciphering folosind un table

Localizează prima literă a cheii în coloana din stânga și


localizează pe rând prima literă a mesajului cifru. Apoi, du-te în stânda
pe coloană pentru a citi prima literă. Aceea este litera simplă
corespunzătoare.
Exemplu: Găsiți litera K pe prima coloană și, pe rândul
acesteia, găsiți celula literei N, numele coloanei sale este D. Aceea
este prima literă a mesajului simplu.
COLUMNAR TRANSPOSITION CIPHER
Cifrul de transpunere este numele dat oricărei criptări care implică rearanjarea literelor plaintext-ului într-o
nouă ordine.

Cu toate acestea, în literatura de specialitate, termenul de cifru de transpunere este în general asociat cu un
subset: transpunere columnară (sau transpunere dreptunghiulară) care constă în scrierea mesajului simplu într-un
tabel / grilă / dreptunghi, apoi aranjarea coloanelor din acest tabel în conformitate cu o permutare definită.

Exemplu: Cuvântul „KEY” face permutările 2, 1, 3 :

În special, cifrul de transpunere columnară constă în scrierea unui mesaj într-un tabel cu lățimea N (unde N
este numărul de permutării), rând cu rând (sau coloană cu coloană), pentru a permuta coloanele în funcție de ordinea
alfabetică a literelor cheii și a citi rezultatul în coloane (sau după linii).

Exemplu: Criptare plaintextului „MESSAGE” prin transpunerea columnară cu cheia „CODE” (permutare
1,3,4,2) dă „MASESEG” .
Exerciții rezolvate
1.War plan
2.
3.
4.
5.
6.
7.
Site-uri și aplicații utile
pentru criptografie

Cryptool 1
Cryptool 2
dCode - Online Ciphers, Solvers, Decoders, Calculators
Cipher Identifier (online tool) | Boxentriq
Binary Calculator
Hex Calculator
Criptografia modernă
NIVEL DE COMPLEXITATE - RIDICAT

Foarte diferită de
criptografia clasică, criptografia
modernă se bazează pe principii
matematice, computer science,
inginerie samd.
Principalele caracteristici ale
criptografiei moderne sunt:
● Funcționează cu date binare;
● Unele dintre metodele criptografiei
moderne sunt imposibil de spart;
● Toate procesele sunt automatizate,
nu este necesară interacțiunea
manuală, deoarece fiecare metodă de
criptare este realizată de un
computer.
AES (RIJNDAEL)
(Advanced Encryption Standard)
VĂ MULȚUMESC PENTRU
ATENȚIA ACORDATĂ

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