Criptologie, criptografie și criptoanaliza

Să sărim în cunoștințele teoretice de care veți avea nevoie atunci când scrieți proiectul final. Să aflăm mai multe despre criptografie și părțile ei constitutive. Și, în același timp, vom afla mai multe despre cifrul pe care îl veți folosi atunci când scrieți proiectul final.

1. Criptologia și părțile ei constitutive

Criptologia este un domeniu de cunoaștere care include:

  • Criptografia (știința cifrurilor).

    Criptografia se referă la criptarea informațiilor pentru a le proteja de accesul neautorizat. Aceste informații ar putea fi text, o imagine digitală, un semnal audio etc. Procesul de criptare produce o versiune criptată a informațiilor (date), care se numește text cifrat sau text cod.

  • Criptanaliză (metode de spargere a acestor cifre).

    Criptanaliza examinează metodele de spargere a cifrurilor și modul în care aceste metode pot fi aplicate. Cu alte cuvinte, criptoanaliza îndeplinește sarcina inversă, studiind modalități de a transforma informațiile criptate în text simplu.

2. Cheie criptografică

O cheie este o selecție de date care este utilizată pentru a cripta și decripta informații. Capacitatea de a decripta cu succes informațiile depinde de cheia folosită. Dacă o cheie este pierdută dintr-un motiv oarecare, atunci va fi imposibil să decriptați datele.

Mărimea cheilor criptografice este măsurată în biți. Și asta înseamnă că o cheie criptografică are lungimea . Puterea bună de criptare este furnizată cu o lungime de 128 de biți.

Tipuri de chei criptografice:

  1. Chei simetrice (chei secrete). Deloc surprinzător, astfel de chei sunt folosite în ceea ce sunt cunoscuți sub numele de algoritmi cu cheie simetrică. Scopul lor principal este de a efectua transformări criptografice înainte sau inversă (criptare/decriptare, verificarea codului de autentificare a mesajului).

  2. Chei asimetrice. Ele sunt utilizate în algoritmii de criptare cu cheie asimetrică (de exemplu, la verificarea unei semnături digitale electronice).

Deoarece vom lucra cu un algoritm de criptare cu cheie simetrică, nu vom intra în prea multe detalii aici.

3. Alfabetul de substituție

Un alfabet de substituție este un set complet de caractere folosit pentru a codifica caracterele introduse.

4. Abordări ale criptoanalizei

Există multe abordări și metode diferite de criptoanaliza, adică modalități de a sparge cifrurile.

Vom descrie cele mai simple dintre ele:

  1. Forța brută (sau căutarea cu forța brută) încearcă toate cheile posibile până când o găsim pe cea corectă. Avantajul acestei metode este simplitatea ei. Dezavantajul este că nu este potrivit pentru cifrurile care implică un număr mare de chei posibile.

  2. Criptanaliză bazată pe date statistice — în această abordare, adunăm statistici privind apariția diferitelor caractere în textul cifrat și apoi decriptăm pe baza statisticilor privind frecvența de apariție a diferitelor caractere în textul simplu.

    De exemplu: știm că frecvența literei P în textele în limba engleză este de 1,9%. Pe măsură ce analizăm textul cifrat, căutăm un simbol care apare cu aceeași frecvență și apoi concluzionăm că este litera P.

    Dezavantajul acestei abordări este dependența sa de limba, autorul și stilul specific al textului.

5. Cifrul Caesar

Aceasta este una dintre cele mai simple și mai cunoscute metode de criptare. Numele său, desigur, vine de la împăratul Gaius Iulius Caesar, care a folosit această metodă pentru a coresponde în secret cu generalii.

Un cifru Caesar este un cifr de substituție în care fiecare caracter din textul simplu este înlocuit cu un caracter care este un număr constant de poziții la stânga sau la dreapta sa în alfabet.

Să presupunem că setăm schimbarea la 3. În acest caz, A va fi înlocuit cu D, B va deveni E și așa mai departe.

Aceasta este cantitatea minimă de teorie de care veți avea nevoie pentru a finaliza proiectul final. Să trecem la descrierea sarcinii!

Proiect final pentru modulul Java Syntax. Să scriem un criptoanalizator

Sarcina ta este să scrii un program care să funcționeze cu cifrurile Caesar.

Lăsați alfabetul dvs. criptografic să fie format din toate literele alfabetului englez, precum și din semne de punctuație (. , ”” : - ! ? SPAȚIU). Dacă întâlnești caractere care nu fac parte din alfabetul nostru de substituție, atunci omite-le.

Cerințe obligatorii

Programul ar trebui să aibă 2 moduri:

  1. Criptare/decriptare. Programul trebuie să cripteze și să decripteze textul utilizând o anumită cheie criptografică.

    Programul ar trebui să primească o cale către un fișier text care conține text sursă și să creeze un fișier care să conțină textul cifrat corespunzător.

  2. Criptanaliză prin atac cu forță brută

    În acest mod, programul trebuie să spargă textul cifrat conținut într-un fișier text de intrare.

    Dacă utilizatorul selectează forța brută, atunci programul trebuie să enumere independent cheile posibile, să selecteze cheia corectă și să decripteze textul.

    Gândiți-vă la ce criterii ar trebui să folosească programul pentru a identifica cu succes cheia corectă. Poate fi necesar să fiți atenți la spațiile dintre cuvinte sau la utilizarea corectă a semnelor de punctuație.

Cerințe suplimentare (opționale).

1. Criptanaliză prin analiză statistică

Utilizatorul ar trebui să poată alege una dintre cele două metode de criptoanaliza. Dacă utilizatorul selectează modul de analiză statistică, atunci solicitați utilizatorului să încarce un fișier text suplimentar în text simplu, de preferință de același autor și în același stil. Pe baza conținutului celui de-al doilea fișier, programul ar trebui să întocmească statistici privind apariția caracterelor și apoi să încerce să folosească aceste statistici pentru a efectua criptoanaliza textului cifrat.

2. Interfata utilizator

Creați casete de dialog pentru interacțiunea cu utilizatorul la discreția dvs. Dacă doriți, puteți utiliza cadrele grafice Swing și JavaFX.

Încărcați soluția finală într-un depozit public Git.

Proiectul va fi verificat atunci când grupul îl parcurge