Kryptologi, kryptografi og kryptoanalyse

La oss hoppe inn i den teoretiske kunnskapen du trenger når du skriver sluttprosjektet. La oss lære mer om kryptografi og dens bestanddeler. Og samtidig lærer vi mer om chifferen du skal bruke når du skriver sluttprosjektet.

1. Kryptologi og dens bestanddeler

Kryptologi er et kunnskapsfelt som inkluderer:

  • Kryptografi (vitenskapen om chiffer).

    Kryptografi handler om å kryptere informasjon for å beskytte den mot uautorisert tilgang. Denne informasjonen kan være tekst, et digitalt bilde, et lydsignal osv. Krypteringsprosessen produserer en kryptert versjon av informasjonen (dataene), som kalles chifferteksten eller kodeteksten.

  • Krypteringsanalyse (metoder for å knekke disse chiffer).

    Krypteringsanalyse undersøker metoder for å bryte chiffer og hvordan disse metodene kan brukes. Med andre ord, kryptoanalyse utfører den omvendte oppgaven, og studerer måter å gjøre kryptert informasjon om til klartekst.

2. Kryptografisk nøkkel

En nøkkel er et utvalg data som brukes til å kryptere og dekryptere informasjon. Evnen til å dekryptere informasjon avhenger av hvilken nøkkel som brukes. Hvis en nøkkel går tapt av en eller annen grunn, vil det være umulig å dekryptere dataene.

Størrelsen på kryptografiske nøkler måles i biter. Og dette betyr at en kryptografisk nøkkel har en lengde . God krypteringsstyrke er utstyrt med en lengde på 128 biter.

Typer kryptografiske nøkler:

  1. Symmetriske nøkler (hemmelige nøkler). Ikke overraskende brukes slike nøkler i det som er kjent som symmetriske nøkkelalgoritmer. Hovedformålet deres er å utføre forover eller bakover kryptografiske transformasjoner (kryptering/dekryptering, verifisering av meldingens autentiseringskode).

  2. Asymmetriske nøkler. De brukes i krypteringsalgoritmer med asymmetrisk nøkkel (for eksempel ved verifisering av en elektronisk digital signatur).

Siden vi skal jobbe med en krypteringsalgoritme med symmetrisk nøkkel, vil vi ikke gå for mye i detalj her.

3. Substitusjonsalfabet

Et substitusjonsalfabet er et komplett sett med tegn som brukes til å kode inndatategn.

4. Tilnærminger til kryptoanalyse

Det finnes mange forskjellige kryptoanalysetilnærminger og metoder, dvs. måter å knekke chiffer.

Vi vil beskrive den enkleste av dem:

  1. Brute force (eller brute force search) prøver alle mulige nøkler til vi finner den riktige. Fordelen med denne metoden er dens enkelhet. Ulempen er at den ikke er egnet for chiffer som involverer et stort antall mulige nøkler.

  2. Krypteringsanalyse basert på statistiske data — i denne tilnærmingen samler vi statistikk om forekomsten av forskjellige tegn i chifferteksten, og deretter dekrypterer vi basert på statistikk om hyppigheten av forekomst av forskjellige tegn i klartekst.

    For eksempel: vi vet at frekvensen av bokstaven P i engelske tekster er 1,9 %. Når vi analyserer chifferteksten, ser vi etter et symbol som forekommer med samme frekvens og konkluderer så med at det er bokstaven P.

    Ulempen med denne tilnærmingen er dens avhengighet av det spesifikke språket, forfatteren og stilen til teksten.

5. Cæsar-chiffer

Dette er en av de enkleste og mest kjente krypteringsmetodene. Navnet kommer selvfølgelig fra keiseren Gaius Julius Caesar, som brukte denne metoden for å korrespondere i hemmelighet med generaler.

Et Cæsar-chiffer er et erstatnings-chiffer der hvert tegn i klarteksten erstattes av et tegn som er et konstant antall posisjoner til venstre eller høyre i alfabetet.

La oss si at vi setter skiftet til 3. I dette tilfellet vil A bli erstattet av D, B blir E, og så videre.

Dette er minimumsmengden teori du trenger for å fullføre det endelige prosjektet. La oss gå videre til oppgavebeskrivelsen!

Avsluttende prosjekt for Java Syntax-modulen. La oss skrive en kryptoanalysator

Din oppgave er å skrive et program som fungerer med Cæsar-chiffer.

La ditt kryptografiske alfabet bestå av alle bokstavene i det engelske alfabetet samt skilletegn (. , ”” : - ! ? SPACE). Hvis du møter tegn som ikke er en del av vårt substitusjonsalfabet, er det bare å hoppe over dem.

Obligatoriske krav

Programmet skal ha 2 moduser:

  1. Kryptering/dekryptering. Programmet må kryptere og dekryptere tekst ved hjelp av en gitt kryptografisk nøkkel.

    Programmet skal motta en sti til en tekstfil som inneholder kildetekst og lage en fil som inneholder den tilsvarende chifferteksten.

  2. Krypteringsanalyse ved brute force angrep

    I denne modusen må programmet knekke chifferteksten i en inndatafil.

    Hvis brukeren velger brute force, må programmet uavhengig telle opp de mulige nøklene, velge riktig nøkkel og dekryptere teksten.

    Tenk på hvilke kriterier programmet skal bruke for å lykkes med å identifisere den riktige nøkkelen. Du må kanskje være oppmerksom på mellomrommene mellom ordene eller riktig bruk av skilletegn.

Ytterligere (valgfrie) krav

1. Krypteringsanalyse ved statistisk analyse

Brukeren skal kunne velge en av to kryptoanalysemetoder. Hvis brukeren velger statistisk analysemodus, be brukeren om å laste en ekstra tekstfil i ren tekst, helst av samme forfatter og i samme stil. Basert på innholdet i den andre filen, bør programmet kompilere statistikk over forekomsten av tegn og deretter prøve å bruke denne statistikken til å utføre krypteringsanalyse av chifferteksten.

2. Brukergrensesnitt

Lag dialogbokser for interaksjon med brukeren etter eget skjønn. Om ønskelig kan du bruke Swing og JavaFX grafiske rammeverk.

Last opp den ferdige løsningen til et offentlig Git-depot.

Prosjektet vil bli sjekket når gruppen går gjennom det