Criptare

De la Wikipedia, enciclopedia liberă
Jump to navigation Jump to search

În criptografie, criptarea este procesul de mascare a informației pentru a o face ilizibilă fără cunoștințe speciale. În prezent, este utilizată în protejarea unei mari varietăți de sisteme, precum e-comerț, rețele de telefonie mobilă și ATM-urile băncilor.

Criptarea poate fi folosită pentru a asigura discreția și/sau intimitatea, dar și alte tehnici sunt necesare pentru a face comunicațiile sigure. În mod particular verificarea integrității și autenticității unui mesaj, de exemplu un cod de autentificare a mesajelor (CAM) sau semnături digitale. Alt motiv este protecția împotriva analizei traficului.

Criptarea sau ascunderea codului de software este folosit în protecția copierii de software împotriva ingineriei inverse, analiza aplicațiilor neautorizată, crack-uri și pirateria software.

Obiectivele de criptare[modificare | modificare sursă]

Criptarea este utilizată pentru a stoca informații importante în surse nesigure și a le transfera prin canale de comunicare neprotejate. Acest transfer de date reprezintă două procese reciproc inverse:

  • Înainte de a trimite date prin linia de comunicație sau înainte de a le depozita, acestea sunt 'criptate'.
  • Pentru a restaura datele originale de la acestea criptate, se aplică procedura de 'decriptare'.

Criptarea a fost inițial utilizată numai pentru transferul de informații confidențiale. Cu toate acestea, ulterior informațiile au fost criptate în scopul stocării în surse nesigure. Se folosește acum criptarea informațiilor în scopul stocării, evitând astfel necesitatea stocării protejate fizic.

În prezent există o mulțime de metode de criptare. Majoritatea acestor metode sunt împărțite, în funcție de structura cheilor utilizate, de metodele simetrice și de metodele asimetrice. În plus, metodele de criptare pot avea rezistențe criptografice diferite și pot gestiona datele de intrare în diferite moduri - cipuri bloc și cipuri de flux. Prin toate aceste metode, crearea și analiza acestora este angajată în știința criptografiei.

Metode de criptare[modificare | modificare sursă]

  • Criptarea simetrică utilizează aceeași cheie pentru criptare și decriptare.
  • Criptarea asimetrică utilizează două chei diferite: una pentru criptare (care se mai numește și deschisă), cealaltă pentru decriptare (numită închisă).

Aceste metode rezolvă anumite sarcini și au atât avantaje, cât și dezavantaje. Alegerea specifică a metodei utilizate depinde de scopurile cu care informațiile sunt criptate.

Criptarea simetrică[modificare | modificare sursă]

Criptarea simetrică

În criptosistemele simetrice, aceeași cheie este folosită pentru criptare și decriptare. Prin urmare, numele este simetric. Algoritmul și cheia sunt selectate în prealabil și cunoscute de ambele părți. Menținerea unei chei în secret este o sarcină importantă pentru stabilirea și menținerea unui canal de comunicare securizat. În această privință există o problemă a transferului cheie inițial (sincronizarea cheii). În plus, există metode de atacuri cripte care permit într-un fel sau altul să decripteze informațiile fără a avea o cheie sau prin utilizarea intercepției sale în etapa de coordonare. În general, aceste momente reprezintă problema tăriei criptografice a unui algoritm specific de criptare și reprezintă un argument atunci când se alege un anumit algoritm.

Metodele simetrice și mai specific algoritmii de criptare alfabetică au fost printre primii algoritmi [1]. Mai târziu, a fost inventată criptarea asimetrică, în care cheile interlocutorilor sunt diferite [2].

Schema de implementare

Sarcina. Există doi interlocutori - Alice și Bob, doresc să facă schimb de informații confidențiale.
  • Generarea cheii.
Bob (sau Alice) selectează cheia de criptare și algoritmii (funcții de criptare și decriptare).
  • Criptare și trimitere a unui mesaj.
Alice criptează mesajul folosind cheia obținută .
Și trimite lui Bob textul rezultat . Bob face același lucru dacă dorește să trimită lui Alice un mesaj.
  • Decriptarea mesajului.
Bob (Alice), folosind aceeași cheie , decriptează textul cifric .

Dezavantajele cripțiunii simetrice sunt problema transferului cheii către interlocutor și incapacitatea de a stabili autenticitatea sau autoritatea textului. Prin urmare, de exemplu în centrul tehnologiei semnăturii digitale sunt schemele asimetrice.

Criptare asimetrică (cu cheie publică)[modificare | modificare sursă]

Criptare asimetrică

În sistemele cu cheie publică sunt utilizate două chei - deschise și închise, conectate într-un mod matematic unul cu celălalt. Cheia publică este transmisă printr-un canal deschis (adică, neprotejat, vizibil) și este folosit pentru a cripta mesajul și pentru a verifica EDS. O cheie secretă este utilizată pentru a decripta mesajul și a genera EDS.

Această schemă rezolvă problema circuitelor simetrice asociate transferului inițial al cheii către cealaltă parte. Dacă atacatorul interceptează cheia în scheme simetrice, poate atât să "asculte", cât și să corecteze informațiile transmise. În sistemele asimetrice, o cheie publică este transmisă celeilalte părți, ceea ce vă permite să criptați, dar nu să decriptați informațiile. Astfel se rezolvă problema sistemelor simetrice, legate de sincronizarea cheilor [2].

Primii cercetători care au inventat și descoperit conceptul de criptare open-source au fost Whitfield Diffie și Martin Hellman de la Universitatea Stanford și Ralph Merkle de la Universitatea Berkeley din California. În 1976, lucrarea lor "New Directions in Cryptography Modern" a deschis un nou domeniu în criptografie, acum cunoscut sub numele de criptografie cu chei publice.

Schema de implementare

Sarcina. Există doi interlocutori - Alice și Bob, Alice dorește să transfere informații confidențiale lui Bob.
  • Generarea unei perechi de chei.
Bob selectează algoritmul și perechea cheilor private deschise este și trimite lui Alice cheia publică peste canalul deschis .
  • Criptare și transmitere de mesaje.
Alice criptează informațiile utilizând cheia publică a lui Bob .
Și trimite lui Bob ciphertextul primit .
  • Decriptarea mesajului.
Bob, folosind cheia privată , decriptează textul cipher .

Dacă este necesar să se stabilească un canal de comunicare în ambele direcții, primele două operațiuni trebuie făcute pe ambele părți, astfel încât toată lumea să știe cheile publice private și cheia publică a interlocutorului. Cheia privată a fiecărei părți nu este transmisă pe un canal neprotejat, rămânând astfel în secret.

Managementul cheie[modificare | modificare sursă]

După cum sa spus anterior, atunci când criptează este foarte important să se conțină și să se distribuie corect cheile între interlocutori deoarece acesta este cel mai vulnerabil loc al oricărui sistem criptos. Dacă dvs. și interlocutorul dvs. faceți schimb de informații printr-un sistem de criptare ideal, există întotdeauna posibilitatea de a găsi un defect nu în sistemul utilizat, ci în cei care îl folosesc. Puteți să furați cheile de la o persoană de încredere sau să o mituiți și de multe ori este mult mai ieftină decât hacking cifrul. Prin urmare, procesul al cărui conținut este compilarea și distribuirea cheilor între utilizatori, joacă un rol crucial în criptografie ca bază pentru asigurarea confidențialității schimbului de informații.

Obiectivele administrării cheiei[modificare | modificare sursă]

  • Păstrarea confidențialității cheilor private și a informațiilor transmise.
  • Asigurarea fiabilității cheilor generate.
  • Împiedicați utilizarea neautorizată a cheilor private sau publice, de exemplu, utilizând o cheie care a expirat.

Managementul cheie în criptosisteme este implementat în conformitate cu politica de securitate. Politica de securitate dictează amenințările pe care sistemul trebuie să le confrunte. Sistemul care controlează cheile este împărțit într-un sistem de generare a cheilor și un sistem de control cheie.

Exemplu de implementare[modificare | modificare sursă]

Este specificat un text care conține numai litere latine, spații și transferuri de linie.

Un cuvânt este o succesiune de litere latine consecutive, registrul nu contează.

În procesul de criptare, fiecărui cuvânt i se atribuie un identificator unic - un număr de la 1 la n, unde n este numărul de cuvinte diferite din acest text.

  • dacă cuvântul curent apare pentru prima dată, îi este atribuit un nou identificator care nu a fost folosit înainte (adică în ordinea 1, 2, ...).
  • dacă cuvântul curent a fost deja întâlnit, atunci noul identificator nu este atribuit, dar se utilizează cel existent

Este necesară criptarea textului și ieșirea acestuia sub forma unei secvențe numerice.

 1 #include <iostream>
 2 #include <vector>
 3 #include <string>
 4 #include <set>
 5 using namespace std;
 6 
 7 const int INF = INT_MAX / 2;
 8 
 9 void func(string &s1) {
10     for (int i = 0; i < s1.length(); i++) {
11         s1[i] = tolower(s1[i]);
12     }
13 }
14 
15 int main() {
16     set <pair <string, int>> ans;
17     string::size_type k = 0;
18 
19     string s;
20     int cnt = 1;
21     while(getline(cin, s)) {
22 		s+=" ";
23 		k=s.find(" ");
24 		while (k != string::npos) {
25 
26 			string s1 = s.substr(0,k);
27 			func(s1);
28 			s.erase(0, k + 1);
29 			if (s1.length() == 0) {
30 				k = s.find(" ");
31 				continue;
32 			}
33 			bool f = false;
34 			set <pair <string, int>> :: iterator  it = ans.lower_bound(make_pair(s1, -INF));
35 			if (it != ans.end() && (*it).first == s1) {
36 				cout << (*it).second << ' ';
37 				f = true;
38 			}
39 			if (!f) {
40 				ans.insert(make_pair(s1, cnt));
41 				cout << cnt << ' ';
42 				cnt++;
43 			}				
44 			k=s.find(" ");
45 		}
46     }
47     return 0;
48 }

Vezi și[modificare | modificare sursă]

Referințe[modificare | modificare sursă]

Legături externe[modificare | modificare sursă]

Criptografie
Istoria criptologiei | Criptanaliză | Portalul criptografiei | Subiecte în criptografie
Algoritm cu chei simetrice | Cifru bloc | Cifru stream | Criptografie cu chei publice | Funcție hash criptografică | Cod de autentificare a mesajelor | Număr aleatoriu