Kryptologi, kryptografi og kryptoanalyse

Lad os springe ind i den teoretiske viden, du skal bruge, når du skriver det afsluttende projekt. Lad os lære mere om kryptografi og dens bestanddele. Og samtidig lærer vi mere om den chiffer, du skal bruge, når du skriver det afsluttende projekt.

1. Kryptologi og dens bestanddele

Kryptologi er et vidensfelt, der omfatter:

  • Kryptografi (videnskaben om chiffer).

    Kryptografi handler om at kryptere information for at beskytte den mod uautoriseret adgang. Denne information kan være tekst, et digitalt billede, et lydsignal osv. Krypteringsprocessen producerer en krypteret version af informationen (dataene), som kaldes chifferteksten eller kodeteksten.

  • Krypteringsanalyse (metoder til at knække disse cifre).

    Krypteringsanalyse undersøger metoder til at bryde cifre, og hvordan disse metoder kan anvendes. Med andre ord udfører kryptoanalyse den omvendte opgave og studerer måder at omdanne krypteret information til klartekst.

2. Kryptografisk nøgle

En nøgle er et udvalg af data, der bruges til at kryptere og dekryptere information. Evnen til succesfuldt at dekryptere information afhænger af, hvilken nøgle der bruges. Hvis en nøgle går tabt af en eller anden grund, vil det være umuligt at dekryptere dataene.

Størrelsen af ​​kryptografiske nøgler måles i bits. Og det betyder, at en kryptografisk nøgle har en længde . God krypteringsstyrke er forsynet med en længde på 128 bit.

Typer af kryptografiske nøgler:

  1. Symmetriske nøgler (hemmelige nøgler). Ikke overraskende bruges sådanne nøgler i det, der er kendt som symmetriske nøglealgoritmer. Deres hovedformål er at udføre fremadgående eller omvendte kryptografiske transformationer (kryptering/dekryptering, verifikation af meddelelsesgodkendelseskoden).

  2. Asymmetriske nøgler. De bruges i krypteringsalgoritmer med asymmetriske nøgler (for eksempel ved verificering af en elektronisk digital signatur).

Da vi skal arbejde med en krypteringsalgoritme med symmetrisk nøgle, vil vi ikke gå for meget i detaljer her.

3. Erstatningsalfabet

Et substitutionsalfabet er et komplet sæt tegn, der bruges til at kode inputtegn.

4. Tilgange til kryptoanalyse

Der findes mange forskellige kryptoanalysetilgange og metoder, altså måder at knække ciphers på.

Vi vil beskrive den enkleste af dem:

  1. Brute force (eller brute force search) prøver alle mulige nøgler, indtil vi finder den rigtige. Fordelen ved denne metode er dens enkelhed. Ulempen er, at den ikke er egnet til cifre, der involverer et stort antal mulige nøgler.

  2. Krypteringsanalyse baseret på statistiske data — i denne tilgang samler vi statistik om forekomsten af ​​forskellige tegn i chifferteksten, og derefter dekrypterer vi baseret på statistik om hyppigheden af ​​forekomst af forskellige tegn i klartekst.

    For eksempel: vi ved, at frekvensen af ​​bogstavet P i engelske tekster er 1,9 %. Når vi analyserer chifferteksten, leder vi efter et symbol, der forekommer med samme frekvens, og konkluderer derefter, at det er bogstavet P.

    Ulempen ved denne tilgang er dens afhængighed af tekstens specifikke sprog, forfatter og stil.

5. Cæsar-chiffer

Dette er en af ​​de enkleste og mest kendte krypteringsmetoder. Dens navn kommer selvfølgelig fra kejser Gaius Julius Cæsar, som brugte denne metode til at korrespondere hemmeligt med generaler.

En Cæsar-ciffer er en substitutionsciffer, hvor hvert tegn i klarteksten er erstattet af et tegn, der er et konstant antal positioner til venstre eller højre i alfabetet.

Lad os sige, at vi sætter skiftet til 3. I dette tilfælde vil A blive erstattet af D, B bliver til E, og så videre.

Dette er den mindste mængde teori, du skal bruge for at gennemføre det afsluttende projekt. Lad os gå videre til opgavebeskrivelsen!

Afsluttende projekt for Java Syntax modulet. Lad os skrive en kryptoanalysator

Din opgave er at skrive et program, der fungerer med Cæsar-cifre.

Lad dit kryptografiske alfabet bestå af alle bogstaverne i det engelske alfabet samt tegnsætningstegn (. , ”” : - ! ? MELLEMRUM). Hvis du støder på tegn, der ikke er en del af vores substitutionsalfabet, skal du bare springe dem over.

Obligatoriske krav

Programmet skal have 2 tilstande:

  1. Kryptering/dekryptering. Programmet skal kryptere og dekryptere tekst ved hjælp af en given kryptografisk nøgle.

    Programmet skal modtage en sti til en tekstfil, der indeholder kildetekst, og oprette en fil, der indeholder den tilsvarende chiffertekst.

  2. Krypteringsanalyse ved brute force angreb

    I denne tilstand skal programmet knække chifferteksten indeholdt i en inputtekstfil.

    Hvis brugeren vælger brute force, så skal programmet selvstændigt opregne de mulige nøgler, vælge den korrekte nøgle og dekryptere teksten.

    Tænk over, hvilke kriterier programmet skal bruge for at kunne identificere den korrekte nøgle. Du skal muligvis være opmærksom på mellemrummene mellem ordene eller den korrekte brug af tegnsætningstegn.

Yderligere (valgfri) krav

1. Krypteringsanalyse ved statistisk analyse

Brugeren skal kunne vælge en af ​​to kryptoanalysemetoder. Hvis brugeren vælger statistisk analysetilstand, så bed brugeren om at indlæse en ekstra tekstfil i almindelig tekst, helst af samme forfatter og i samme stil. Baseret på indholdet af den anden fil, bør programmet kompilere statistik over forekomsten af ​​tegn og derefter forsøge at bruge disse statistikker til at udføre krypteringsanalyse af chifferteksten.

2. Brugergrænseflade

Lav dialogbokse til interaktion med brugeren efter eget skøn. Hvis det ønskes, kan du bruge Swing og JavaFX grafiske rammer.

Upload din færdige løsning til et offentligt Git-lager.

Projektet vil blive tjekket, når gruppen gennemgår det