Cryptologie, cryptografie en cryptoanalyse

Laten we ingaan op de theoretische kennis die u nodig heeft bij het schrijven van het uiteindelijke project. Laten we meer leren over cryptografie en de samenstellende delen ervan. En tegelijkertijd leren we meer over het cijfer dat u zult gebruiken bij het schrijven van het uiteindelijke project.

1. Cryptologie en zijn samenstellende delen

Cryptologie is een kennisgebied dat het volgende omvat:

  • Cryptografie (de wetenschap van cijfers).

    Bij cryptografie draait alles om het versleutelen van informatie om deze te beschermen tegen ongeoorloofde toegang. Deze informatie kan tekst zijn, een digitaal beeld, een audiosignaal, enz. Het versleutelingsproces produceert een versleutelde versie van de informatie (gegevens), die de cijfertekst of codetekst wordt genoemd.

  • Cryptanalyse (methoden om deze cijfers te kraken).

    Cryptanalyse onderzoekt methoden om cijfers te breken en hoe deze methoden kunnen worden toegepast. Met andere woorden, cryptanalyse voert de omgekeerde taak uit en bestudeert manieren om versleutelde informatie om te zetten in leesbare tekst.

2. Cryptografische sleutel

Een sleutel is een selectie van gegevens die wordt gebruikt om informatie te versleutelen en te ontsleutelen. De mogelijkheid om informatie met succes te decoderen, hangt af van welke sleutel wordt gebruikt. Als een sleutel om de een of andere reden verloren gaat, is het onmogelijk om de gegevens te decoderen.

De grootte van cryptografische sleutels wordt gemeten in bits. En dit betekent dat een cryptografische sleutel een lengte heeft van . Goede coderingssterkte wordt geleverd met een lengte van 128 bits.

Soorten cryptografische sleutels:

  1. Symmetrische sleutels (geheime sleutels). Het is niet verwonderlijk dat dergelijke sleutels worden gebruikt in zogenaamde symmetrische-sleutelalgoritmen. Hun hoofddoel is het uitvoeren van voorwaartse of achterwaartse cryptografische transformaties (versleuteling/ontsleuteling, verificatie van de authenticatiecode van het bericht).

  2. Asymmetrische toetsen. Ze worden gebruikt in versleutelingsalgoritmen met asymmetrische sleutels (bijvoorbeeld bij het verifiëren van een elektronische digitale handtekening).

Aangezien we zullen werken met een symmetrische-sleutel-encryptie-algoritme, zullen we hier niet te veel in detail treden.

3. Vervangingsalfabet

Een vervangend alfabet is een complete set tekens die wordt gebruikt om invoertekens te coderen.

4. Benaderingen van cryptoanalyse

Er zijn veel verschillende cryptanalysebenaderingen en -methoden, dwz manieren om cijfers te kraken.

We zullen de eenvoudigste beschrijven:

  1. Brute kracht (of brute kracht zoeken) probeert alle mogelijke sleutels totdat we de juiste vinden. Het voordeel van deze methode is de eenvoud. Het nadeel is dat het niet geschikt is voor cijfers met een groot aantal mogelijke sleutels.

  2. Cryptanalyse op basis van statistische gegevens — bij deze benadering verzamelen we statistieken over het voorkomen van verschillende karakters in de cijfertekst, en ontsleutelen we vervolgens op basis van statistieken over de frequentie van voorkomen van verschillende karakters in leesbare tekst.

    Bijvoorbeeld: we weten dat de frequentie van de letter P in Engelse teksten 1,9% is. Terwijl we de cijfertekst analyseren, zoeken we naar een symbool dat met dezelfde frequentie voorkomt en concluderen dan dat het de letter P is.

    Het nadeel van deze benadering is de afhankelijkheid van de specifieke taal, auteur en stijl van de tekst.

5. Caesarcijfer

Dit is een van de eenvoudigste en meest bekende coderingsmethoden. De naam komt natuurlijk van keizer Gaius Julius Caesar, die deze methode gebruikte om in het geheim met generaals te corresponderen.

Een Caesarcijfer is een vervangend cijfer waarin elk teken in de leesbare tekst wordt vervangen door een teken dat een constant aantal posities links of rechts ervan in het alfabet is.

Laten we zeggen dat we de verschuiving instellen op 3. In dit geval wordt A vervangen door D, wordt B E, enzovoort.

Dit is de minimale hoeveelheid theorie die je nodig hebt om het afstudeerproject te voltooien. Laten we verder gaan met de taakbeschrijving!

Eindproject voor de Java Syntax-module. Laten we een cryptanalyzer schrijven

Het is jouw taak om een ​​programma te schrijven dat werkt met Caesarcijfers.

Laat uw cryptografisch alfabet bestaan ​​uit alle letters van het Engelse alfabet en leestekens (. , ””: - ! ? SPACE). Als je tekens tegenkomt die geen deel uitmaken van ons vervangingsalfabet, sla ze dan gewoon over.

Verplichte eisen

Het programma moet 2 modi hebben:

  1. Versleuteling/ontsleuteling. Het programma moet tekst versleutelen en ontsleutelen met behulp van een bepaalde cryptografische sleutel.

    Het programma zou een pad naar een tekstbestand met brontekst moeten ontvangen en een bestand moeten maken met de bijbehorende cijfertekst.

  2. Cryptanalyse door brute force-aanval

    In deze modus moet het programma de cijfertekst in een invoertekstbestand kraken.

    Als de gebruiker brute kracht selecteert, moet het programma onafhankelijk de mogelijke sleutels opsommen, de juiste sleutel selecteren en de tekst decoderen.

    Bedenk welke criteria het programma moet gebruiken om met succes de juiste sleutel te identificeren. Mogelijk moet u letten op de spaties tussen woorden of het juiste gebruik van leestekens.

Aanvullende (optionele) eisen

1. Cryptanalyse door statistische analyse

De gebruiker moet een van de twee cryptanalysemethoden kunnen kiezen. Als de gebruiker de statistische analysemodus selecteert, vraag de gebruiker dan om een ​​extra tekstbestand in leesbare tekst te laden, bij voorkeur van dezelfde auteur en in dezelfde stijl. Op basis van de inhoud van het tweede bestand zou het programma statistieken moeten samenstellen over het voorkomen van karakters en deze statistieken vervolgens proberen te gebruiken om cryptanalyse van de cijfertekst uit te voeren.

2. Gebruikersinterface

Maak naar eigen goeddunken dialoogvensters voor interactie met de gebruiker. Indien gewenst kunt u gebruik maken van de grafische frameworks Swing en JavaFX.

Upload uw voltooide oplossing naar een openbare Git-repository.

Het project wordt gecontroleerd wanneer de groep het doorloopt