Kryptologie, Kryptographie und Kryptoanalyse

Lassen Sie uns auf das theoretische Wissen eingehen, das Sie zum Schreiben des endgültigen Projekts benötigen. Erfahren Sie mehr über Kryptographie und ihre Bestandteile. Und gleichzeitig erfahren wir mehr über die Chiffre, die Sie beim Schreiben des endgültigen Projekts verwenden werden.

1. Kryptologie und ihre Bestandteile

Kryptologie ist ein Wissensgebiet, das Folgendes umfasst:

  • Kryptographie (die Wissenschaft der Chiffren).

    Bei der Kryptographie geht es darum, Informationen zu verschlüsseln, um sie vor unbefugtem Zugriff zu schützen. Diese Informationen können Text, ein digitales Bild, ein Audiosignal usw. sein. Der Verschlüsselungsprozess erzeugt eine verschlüsselte Version der Informationen (Daten), die als Chiffretext oder Codetext bezeichnet wird.

  • Kryptoanalyse (Methoden zum Knacken dieser Chiffren).

    Die Kryptoanalyse untersucht Methoden zum Brechen von Chiffren und wie diese Methoden angewendet werden können. Mit anderen Worten: Die Kryptoanalyse führt die umgekehrte Aufgabe aus und untersucht Möglichkeiten, verschlüsselte Informationen in Klartext umzuwandeln.

2. Kryptografischer Schlüssel

Ein Schlüssel ist eine Auswahl von Daten, die zum Verschlüsseln und Entschlüsseln von Informationen verwendet werden. Die Fähigkeit, Informationen erfolgreich zu entschlüsseln, hängt davon ab, welcher Schlüssel verwendet wird. Wenn ein Schlüssel aus irgendeinem Grund verloren geht, können die Daten nicht mehr entschlüsselt werden.

Die Größe kryptografischer Schlüssel wird in Bits gemessen. Und das bedeutet, dass ein kryptografischer Schlüssel eine Länge hat . Mit einer Länge von 128 Bit ist eine gute Verschlüsselungsstärke gegeben.

Arten von kryptografischen Schlüsseln:

  1. Symmetrische Schlüssel (geheime Schlüssel). Es überrascht nicht, dass solche Schlüssel in sogenannten symmetrischen Schlüsselalgorithmen verwendet werden. Ihr Hauptzweck besteht darin, kryptografische Vorwärts- oder Rückwärtstransformationen durchzuführen (Verschlüsselung/Entschlüsselung, Überprüfung des Nachrichtenauthentifizierungscodes).

  2. Asymmetrische Schlüssel. Sie werden in Verschlüsselungsalgorithmen mit asymmetrischen Schlüsseln verwendet (z. B. bei der Überprüfung einer elektronischen digitalen Signatur).

Da wir mit einem Verschlüsselungsalgorithmus mit symmetrischem Schlüssel arbeiten, gehen wir hier nicht zu sehr ins Detail.

3. Substitutionsalphabet

Ein Substitutionsalphabet ist ein vollständiger Zeichensatz, der zur Codierung von Eingabezeichen verwendet wird.

4. Ansätze zur Kryptoanalyse

Es gibt viele verschiedene Ansätze und Methoden der Kryptoanalyse, also Möglichkeiten, Chiffren zu knacken.

Wir beschreiben die einfachsten davon:

  1. Brute-Force (oder Brute-Force-Suche) bedeutet, alle möglichen Schlüssel auszuprobieren, bis wir den richtigen finden. Der Vorteil dieser Methode ist ihre Einfachheit. Der Nachteil besteht darin, dass es nicht für Verschlüsselungen mit einer großen Anzahl möglicher Schlüssel geeignet ist.

  2. Kryptoanalyse basierend auf statistischen Daten – bei diesem Ansatz sammeln wir Statistiken über das Vorkommen verschiedener Zeichen im Chiffretext und entschlüsseln dann basierend auf Statistiken über die Häufigkeit des Vorkommens verschiedener Zeichen im Klartext.

    Beispiel: Wir wissen, dass die Häufigkeit des Buchstabens P in englischen Texten 1,9 % beträgt. Während wir den Chiffretext analysieren, suchen wir nach einem Symbol, das mit der gleichen Häufigkeit vorkommt, und kommen dann zu dem Schluss, dass es sich um den Buchstaben P handelt.

    Der Nachteil dieses Ansatzes ist die Abhängigkeit von der jeweiligen Sprache, dem Autor und dem Stil des Textes.

5. Caesar-Chiffre

Dies ist eine der einfachsten und bekanntesten Verschlüsselungsmethoden. Der Name stammt natürlich von Kaiser Gaius Julius Caesar, der diese Methode nutzte, um heimlich mit Generälen zu korrespondieren.

Eine Caesar-Chiffre ist eine Substitutions-Chiffre, bei der jedes Zeichen im Klartext durch ein Zeichen ersetzt wird, das sich an einer konstanten Anzahl von Stellen links oder rechts davon im Alphabet befindet.

Nehmen wir an, wir setzen die Verschiebung auf 3. In diesem Fall wird A durch D ersetzt, B wird zu E und so weiter.

Dies ist der Mindestumfang an Theorie, den Sie benötigen, um das Abschlussprojekt abzuschließen. Kommen wir zur Aufgabenbeschreibung!

Abschlussprojekt für das Java-Syntax-Modul. Schreiben wir einen Kryptoanalysator

Ihre Aufgabe ist es, ein Programm zu schreiben, das mit Caesar-Chiffren arbeitet.

Lassen Sie Ihr kryptografisches Alphabet aus allen Buchstaben des englischen Alphabets sowie Satzzeichen (. , „“ : - ! ? SPACE) bestehen. Wenn Sie auf Zeichen stoßen, die nicht zu unserem Ersatzalphabet gehören, überspringen Sie diese einfach.

Obligatorische Anforderungen

Das Programm sollte zwei Modi haben:

  1. Verschlüsselung/Entschlüsselung. Das Programm muss Text mit einem bestimmten kryptografischen Schlüssel verschlüsseln und entschlüsseln.

    Das Programm sollte einen Pfad zu einer Textdatei mit Quelltext erhalten und eine Datei mit dem entsprechenden Chiffretext erstellen.

  2. Kryptoanalyse durch Brute-Force-Angriff

    In diesem Modus muss das Programm den in einer Eingabetextdatei enthaltenen Geheimtext knacken.

    Wenn der Benutzer Brute Force wählt, muss das Programm die möglichen Schlüssel selbstständig aufzählen, den richtigen Schlüssel auswählen und den Text entschlüsseln.

    Überlegen Sie, nach welchen Kriterien das Programm den richtigen Schlüssel erfolgreich identifizieren soll. Möglicherweise müssen Sie auf die Leerzeichen zwischen Wörtern oder die korrekte Verwendung von Satzzeichen achten.

Zusätzliche (optionale) Anforderungen

1. Kryptoanalyse durch statistische Analyse

Der Benutzer soll zwischen zwei Kryptoanalysemethoden wählen können. Wenn der Benutzer den statistischen Analysemodus auswählt, fordern Sie ihn auf, eine zusätzliche Textdatei im Klartext zu laden, vorzugsweise vom gleichen Autor und im gleichen Stil. Basierend auf dem Inhalt der zweiten Datei sollte das Programm Statistiken über das Auftreten von Zeichen erstellen und dann versuchen, diese Statistiken zu verwenden, um eine Kryptoanalyse des Chiffretexts durchzuführen.

2. Benutzeroberfläche

Erstellen Sie nach eigenem Ermessen Dialogfelder für die Interaktion mit dem Benutzer. Auf Wunsch können Sie die Grafikframeworks Swing und JavaFX nutzen.

Laden Sie Ihre fertige Lösung in ein öffentliches Git-Repository hoch.

Das Projekt wird überprüft, wenn die Gruppe es durchgeht