Häufigkeitsanalyse für Caesar in Java

Mittels einer Häufigkeitsanalyse kann man Caesar knacken.

Count

Der erste Schritt einer Häufigkeitsanalyse ist das zählen der Häufigkeit der Buchstaben eines Textes. Diese Funktion kann in Java mittels einer HashMap umgesetzt werden, die aus einem Counter und Variablen besteht. Um die Funktionsweise zu testen, lasse ich die Werte für einen Beispieltext ausgeben.

Analyse

Vigenere in Java

vigenere1

Die Main-Methode sieht genauso aus, wie bei Caesar. Der einzige Unterschied ist, dass vom Schlüssel nicht nur der erste Buchstabe genommen wird. Sondern der ganze Text in ein CharArray  umgewandelt wird.

vigenere2

Wie bei Caesar unterscheide ich zwischen Groß- und Kleinbuchstaben. Um den richtigen Buchstaben des Schlüssels zu bekommen, nimmt man die i-te Position modulo der Position der Schlüssellänge. So kann mann dann die Caesar Ver- und Entschlüsselung anwenden.

vigenere3

Caesar in Java

caesar1caesar2

In der Main-Methode wird ein Scanner erstellt, um den Text in der Konsole einzulesen. Dieser wird in verschiedenen Variablen gespeichert und dann zu einem Char-Array umgewandelt, damit die Buchstaben sich einzeln verschieben lassen. Auf  dieses wird dann die Methode verschlüsseln angewandt, der Schlüssel und Klartext übergeben werden. Parallel ist auch der Code zum dechiffrieren aufgebaut.

caesar3

Zum Verschlüsseln erstellt man vorerst eine Hülle in Form eines Arrays. In diesem werden dann die verschobenen Buchstaben gespeichert. Es wird außerdem unterschieden zwischen Groß- und Kleinbuchstaben. Sie werden so verschoben, dass Kleinbuchstaben klein und Großbuchstaben groß bleiben und die Buchstaben nur innerhalb der 26 verschoben werden. Hierfür wird die Position des zu verschlüsselnden Buchstaben zum Schlüssel gerechnet und durch das Teilen die neue Position gespeichert. Diese wird dann durch das Addieren von 65/97 wieder zum richtigen Char zugeordnet, der im cryptArray gespeichert wird. Dies ist die Rückgabe der Methode, welche in der Main-Methode in der Konsole ausgegeben wird.

Caesar4

Beim Entschlüsseln wird ähnlich wie beim Verschlüsseln vorgegangen. Um zu verhindern, dass beim Abziehen des Schlüssels eine Zahl kleiner 0 entsteht, wird 26 zum Buchstaben im Schlüsselwort addiert. Dies beeinflusst die Codierung nicht, da mod 26 gerechnet wird. Am Ende wird die neue Position wieder dem richtigen char zugeordnet. Bei den Kleinbuchstaben ist es zusätzlich wichtig 6 abzuziehen, da zwischen dem „Z“ und dem „a“ weitere 6 Zeichen liegen.

Caesar- und Vigenere-Chiffre

Caesar-Chiffre:

Bei der „Caesar-Chiffre“ handelt es sich um eine der ältesten Verschlüsselungen. Sie ist symmetrisch und somit monographisches monoalphabetisch (Der Klartext wird in die Buchstaben zerlegt und es wird ein Alphabet zur Ver- und Entschlüsselung genutzt). Hierbei wird jeder zu verschlüsselnde Buchstabe um eine feste Anzahl verschoben und Groß- und Kleinschreibung ignoriert. Auf Grund der Einfachheit und Unsicherheit, wird die Caesar-Verschlüsselung heute kaum genutzt. Wenn der Verschlüsselte Text lang genug ist, kann man mittels Haufigkeitsanalysen die Zahl um die Verschoben wurde herausfinden und somit denn Text entschlüsseln.

Beispiel:

Klartext: H; Schlüssel C
Verschlüsseln: (H+C) % 26 = (72+67) % 26 = 9 mod 26
65 + 9 = 74 = J
Chiffrat: J

Klartext: HELLO World
Schlüssel: C
Chiffrat: JGNNQ Yqtnf

Vigenere:

Vigenere ist wie Caesar eine monographische Verschlüsselung, unterscheidet sich jedoch durch ein polyalphabetisches Verfahren. Während bei Caesar somit ein Buchstabe zur Verschiebung gewählt wird, nutzt Vigenere ein Wort, welches sich wiederholt. Die Buchstaben selbst,werden dann mit den Verschiedenen Schlüsseln wie bei Caesar verschlüsselt. Somit lässt sich auch Vigenere, jedoch mit geringerer Wahrscheinlichkeit, theoretisch ebenfalls durch Heufigkeitsanalysen knacken.

Vigenere

Einführung

ISO:

Die Aufgabe der 1947 gegründeten International Organization for Standardization kurz ISO ist es internationale Normen und Standards festzulegen. Von ihr festgelegt wurden Beispielsweise die Größen Bits und Bytes. Außerdem TCP/IP als vorherrschendes Protokoll, bei der Datenübertragung im Internet.

Bit und Byte:

„Bit (b)“ steht für „binary digit“ und ist somit die kleinstmögliche Dateneinheit. Es steht also für eine Stelle einer Binärzahl und kann entweder den Zustand 0 oder 1 (AN  oder AUS) haben. Die Kombination aus 8 aufeinanderfolgenden Bits ergibt ein Byte (B), welches die kleinste Datenmenge darstellt. Da es aus 8 Bits mit zwei möglichen Zuständen besteht, kann ein Byte 256 mögliche Zustände annehmen. Hiermit lassen sich dann Buchstaben, Zahlen und Befehle speichern. Die nächst größeren Einheiten sind Megabyte (MB), Kilobyte (KB), Gigabyte (GB) und Terabyte (TB), welche jeweils aus 1024 Teilen, der nächst kleineren Einheit bestehen (1 MB = 1024 B). Somit lässt sich mit der Einheit Byte die Speicherkapazität eines Mediums angeben.

Binärcode:

Ein Binärcode ist ein auf zwei Zuständen aufgebauter Code. Diese Zustände können AN und AUS, 0 und 1 oder WAHR und FALSCH sein. Diese binäre Grundlage bietet sich auf Grund ihrer Einfachheit in der Technik an, um Daten zu übermitteln und zu speichern. Durch Verknüpfung kann man logische Operationen durchführen (Taschenrechner) und mit dem Dualsystem Zahlen darstellen. Das Dualsystem arbeitet im Gegensatz zum allgemein üblichen Dezimalsystem mit der Basis zwei anstatt 10. Ohne den Binärcode würde weder ein Computer noch das Internet funktionieren, da jeder Datenfluss über die Zustände AN und AUS läuft. Außerdem wird jedes gecodete Programm mittels eines Compilers in Maschinencode übersetz,t, welcher nichts anderes als Binärcode ist.

 

Hexadezimalsystem

Das Hexadezimalsystem ist wie das Dual- oder Dezimalsystem eine Darstellung von Zahlen durch eine feste Basis. Beim Hexadezimalsystem wird hierzu die 16 genutzt. Auf Grund der Unübersichtlichkeit bei der Umrechnung großer Binärzahlen in das Dezimalsystem, ist das Hexadezimalsystem eine weitere verbreitete Darstellung. Die Basis 16 ist im Gegensatz zur 10  mit den Potenzen der 2 Kompatibel und ermöglicht somit ein leichtes Umrechnen.

allgemein
Umrechnen verschiedener Zahlensysteme ins Dezimalsystem (n = n-te Ziffer und b = Basis) 
bi de
Binär -> Dezimal
hexa binär
Binär <-> Hexadezimal
hex de
Hexadezimal -> Dezimal

 

de hex
Dezimal -> Hexadezimal

 

resume

ASCII-Code:

Der 1963 entstand der American Standard Code for Information Interchange (ASCII), welcher eine auf 7-Bit basierende Codierung für 33 un-  und 95 druckbare Zeichen ist. Hierbei wird jedem Zeichen eine feste Zahl zugeordnet. Der ASCII-Code dient somit dazu Buchstaben für den Computer so darzustellen, dass dieser sie verarbeiten kann. Neben ASCII gibt es noch andere Systeme mit der selbe Funktion. Ohne ein solches System wäre Software für den Menschen jedoch nicht realistisch nutzbar, da beim Compilieren eines Programmes ein Alphabet in für den Computer lesbaren Maschinencode (Dualsystem) umgewandelt wird. Der erste ASCII-Code enthielt noch keine Kleinbuchstaben und wurde 1986 erweitert.  Auf Grund der Kompatibilität wurden im Laufe der Zeit andere ASCII-Versionen auf 8-Bit Grundlage Entwickelt, die einerseits mehr Möglichkeiten wie auch weitere Sonderzeichen bieten. 

praxistipps.s3.amazonaws.com_ascii-tabelle-mit-hexadezimalzahlen_7a66a651
https://praxistipps.chip.de/ascii-buchstaben-in-binaerzahlen-umwandeln-so-gehts_96313

 

Wendet man nun die oben beschriebenen Methoden auf „HELLO World 2019“ an:

HA

 

Quellen:

ASCII Wikipedia

 

Dynamic Name System(DNS)

Ein DNS-Server dient zur Namensauflösung. Seine Aufgabe ist IP-Adressen den Webadressen zuzuordnen. Wenn ein Benutzer über die Domain auf eine Website zugreifen will, fragt der Provider bei dem DNS-Server die dazugehörige IP-Adresse ab. Die DNS-Server sind hierarchisch angeordnet und über die Welt verteilt und miteinander verknüpft. Wenn ein Server die Anfrage nicht bearbeiten kann, leitet er diese weiter an den nächst höheren Server. Hierbei sind häufig besuchte Websites in hierarchisch niedrigeren Servern angeordnet. Auf diese Server gibt es die Versuche von Dedos-Attacken. Hierbei werden bspw. von Botnetzen Fake-Anfragen an die DNS-Server gestellt, welche legale Anfragen verhindern verhindern. Der DNS-Server leitet diese an andere Server weiter. Die Idee dahinter ist, dass sich die Attacke somit auf andere Server ausbreitet. Die Anfragen werden jedoch so schnell weitergeleitet, dass sich die Attacke schnell im verläuft.

Peer-to-Peer vs. Client-Server Modell

Bei einer Peer-to-Peer (P2P) Verbindung, wird die Verbindung direkt zwischen zwei Rechnern aufgebaut. Alle Rechner sind gleichberechtigt und können alle Dienste in Anspruch nehmen. Beispiele hierfür sind das Darknet und Kryptowährungen. Im Kontrast hierzu steht das Client-Server-Modell, bei  dem ein Server n-Clients die Dienste zur Verfügung stellt. Da der Client den Server benötigt, gibt es innerhalb dieses Netzwerkes eine Hierarchie. Auf Grund dieser Struktur nutzt der Server eine andere Software als die Clients. Dieses Modell nutzen Web-, Mail- und Anwendungsserver.

Doch wann ist P2P und wann das Client-Server-Modell sinnvoll? 

Aufgrund der direkten Verbindung benötigt P2P keine zusätzliche Hardware. Auf Grund der Dezentralität ist es weniger fehleranfällig und schnell. Die Verwaltung ist jedoch im Gegensatz zum Client-Server-Modell aufwändig. Welches ebenfalls leichter zu skalieren  zu sichern ist.

Netzwerke und Topologien

Ein Netzwerk ist ein Modell, welches aus Einheiten (Knoten) und Verbindungen (Kanten) besteht. Ein Computer Netzwerk ist ein aus verschiedenen autonomen Systemen bestehender Verbund zur Datenkommunikation. Hierbei beschreibt die Topologie des Netzwerkes die Anordnung und Verbindung. Jede dieser Topologien hat seine Vor- und Nachteile.

Bustopologie:
Netzwerktopologie Bus

Auf Grund ihrer Einfachheit benötigt ein Netzwerk, welches in der Bustopologie angeordnet ist, benötigt es wenig Ressourcen und ist dementsprechend kostengünstig. Jedoch kann es in dieser Anordnung nur einen Sender zur Zeit geben. Außerdem ist so ein Netzwerk deutlich anfälliger für Ausfälle, da der Ausfall des zentralen Kabels  oder eines Gerätes das gesamte Netzwerk lahm legt. Zusätzlich ist es im Gegensatz zu den anderen Topologien ist es schwerer erweiterbar.

Sterntopologie:

Netzwerktopologie Stern
Bei der Sterntopologie  sind alle Endgeräte mit einem Verteiler verbunden, während untereinander keinerlei Verbindungen bestehen. Dadurch hat der Ausfall eines Gerätes keine Auswirkungen auf den Rest des Netzwerkes. Der Verteiler kann in Form einer Switch o.Ä. als zusätzlicher Signalverstärker dienen und das Netzwerk somit Leistungsfähiger machen. Durch den Verteiler ist es außerdem leicht erweiterbar und verschiedene Datenübertragungen können gleichzeitig stattfinden. Wenn als Verteiler statt einer Switch nur ein Hub benutzt wird, können zu viele Hosts das Netzwerk verlangsamen oder es kann zu Ausfällen kommen. Wenn beim Verteiler ein Fehler vorliegt kommt es zu einem Gesamtausfall des Netzwerks. In vielen mehrstöckigen Gebäuden wurde eine Mischform der beiden genutzt.

Ringtopologie:

Netzwerktopologie Ring

Bei der Ringtopologie werden immer jeweils zwei Hosts miteinender verbunden, sodass ein geschlossener Ring entsteht. Die Daten werden dann von Host zu Host durch das Netzwerk geleitet. Die geschlossene Form macht das Eindringen in das Netzwerk schwierig. Außerdem dient jeder Host innerhalb des Rings als Verstärker. Somit können große Datenmengen innerhalb des Netzwerks übertragen werden. Jedoch ist der Ring auf Grund der Abgeschlossenheit schwer erweiterbar und beim Ausfall eines Gerätes ist das Netzwerk nicht mehr funktionsfähig. Darüber hinaus können die Daten nur in eine Richtung übertragen werden.

Maschentopologie:

Netzwerktopologie vermaschtBei der Maschentopologie ist jeder Host mit einem oder mehreren Geräten verbunden. Beim Ausfall eines Gerätes, werden die Daten durch andere Routen übertragen. Somit ist ein Ausfall so gut wie unmöglich. Aus diesem Grund ist dieses Netzwerk sich und unendlich erweiterbar. Jedoch auch teuer, aufwändig in seiner Verwaltung und unübersichtlich. Wenn jedes  der Geräte mit jedem anderen Gerät verbunden ist, handelt es sich um ein voll-vermaschtes Netz.FullMeshNetwork Beim Ausfall einer oder mehrerer Hosts,  können die Daten immer über eine Alternativroute übertragen werden. Außerdem bewegen sich die Daten durch dieser Netzwerk in einer hohen Geschwindigkeit. Es ist jedoch sehr teuer und aufwändig zu erweitern.

Baumtopologie:

Von der Wurzel des Baums gehen verschiedene Teilbäume mit Endknoten aus. Bei der Baumtopologie ist der Ausfall eines Endgerätes für die Funktionalität des Netzwerkes unerheblich. Die Baumstruktur sorgt für eine leichte Erweiterbarkeit des Netzwerks und für die Möglichkeit große Entfernungen zurückzulegen. Außerdem unterstützt die Struktur Such- und Sortieralgorithmen. Es kann jedoch bei Überlastung von Verteilern zu Engpässen und beim Verteilerausfall zum Ausfall von Teilbäumen bis hin zum Gesamtausfall kommen.

Verteilte Systeme

Ein verteiltes System ist eine aus autonomen Komponenten, bestehendes System, mit dem die Benutzer konsistent arbeiten können, welches erweiterbar ist und deren Nutzer von nur einer Anwendung ausgehen.

Doch weshalb sollte man verteilte Systeme nutzen? 

Aufgrund der am häufigsten vertretenen Anordnung in verschiedenen Softwareschichten und der daraus resultieren Kohärenz, werden die Ressourcen als Teil, des Systems leicht zugreifbar. Außerdem verbirgt es dadurch, dass diese über ein Netzwerk verteilt sind und ist über dies offen und skalierbar.

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten