Sonntag, 17. Mai 2015
Postankündigung 2
Wir haben vor einiger Zeit eine Reihe von Vorträgen zu verschiedenen Themen gehört. Dazu haben die Gruppen jeweils auch Handouts erstellt, die uns aber, aus welchen Gründen auch immer, bis heute nicht ausgeteilt wurden. Aus diesem Grund finden sich zu diesen Themen auf meinem Blog bisher keine Einträge, die werden aber natürlich folgen, sobald ich die Handouts habe.
SMTP/POP3
Kommunikationsprotokolle
SMTP ist ein Kommunikationsprotokoll. Dieses Protokoll ist eine Vereinbarung, die die Datenübertragung zwischen mindestens zwei „Parteien“ im digitalen Datenverkehr regelt. Es Handelt sich um eine Art Regelbuch zu entscheidenden Elementen wie:· Syntax (Reihenfolge)
· Semantik (Bedeutung)
· Synchronisation
Es gibt eine riesige Anzahl an Kommunikationsprotokollen, zu
den bekanntesten gehören das Internet Protocol (IP), sowie das Transmission Control
Protocol (TCP). Häufig werden, vor allem in Netzwerken, Protokolle mit einander
kombiniert, das nennt man dann Protokollstapel.
SMTP
SMTP steht für Simple Mail Transfer Protocol und ist ein textbasiertes Kommunikationsprotokoll. Es ist ein zentraler Bestandteil für die Übertragung von E-Mails. Mit SMTP können E-Mails entgegengenommen und weitergeleitet werden. Über SMTP wird eine Kommunikation zwischen einem E-Mail Client und einem SMTP-Server, oder zwischen zwei SMTP-Servern hergestellt. Das endgültige zustellen einer E-Mail ist mit SMTP aber nicht möglich, dafür kommt ein anderes Kommunikationsprotokoll zum Einsatz.
Ablauf
Mit SMTP werden wie bereits bekannt, E-Mails vom E-Mail
Client, also dem Benutzer, zu einem Ziel-SMTP-Server geleitet. Der Genaue
Ablauf beim Verschicken einer E-Mail sieht folgendermaßen aus: Vom E-Mail
Client wird die Mail an einen SMTP-Server weitergeleitet. Dieser startet mit
den in der E-Mail gegeben Empfängeradresse eine Anfrage an einen DNS-Server, um
eine genaue Zieladresse zu bekommen. Sobald die Antwort vom DNS-Server da ist,
wird die Mail über eine Zahl von Servern bis zum letztendlichen
Ziel-SMTP-Server weitergeleitet. Dort liegt sie nun wie in einem Briefkasten
und wartet darauf, durch ein anderes Protokoll abgeholt zu werden. Am Beginn des Prozesses herrscht eine rege Kommunikation
zwischen dem E-Mail Client und dem SMTP-Server, da der Client den Server zuerst
auffordern muss, seine E-Mail anzunehmen. Diese Kommunikation erfolgt durch
drei-stellige Zahlencodes, so steht z.B. 250 für „Server bestätigt“.
POP3 Ähnlich wie SMTP ist POP3 ein Übertragunsprotokoll. Es ist
dafür zuständig, die E-Mails, die zuvor über SMTP bis zum „Briefkasten“
transportiert wurden, an den jeweiligen Empfänger zuzustellen. Der Nachteil von
POP3 sind allerdings die stark eingeschränkten Fähigkeiten, so ist es nur
möglich, E-Mails abzuholen, aufzulisten und zu löschen. Das alternative Übertragunsprotokoll
IMAP biete weitaus mehr Möglichkeiten.
SMTP ist ein Kommunikationsprotokoll. Dieses Protokoll ist eine Vereinbarung, die die Datenübertragung zwischen mindestens zwei „Parteien“ im digitalen Datenverkehr regelt. Es Handelt sich um eine Art Regelbuch zu entscheidenden Elementen wie:· Syntax (Reihenfolge)
SMTP
SMTP steht für Simple Mail Transfer Protocol und ist ein textbasiertes Kommunikationsprotokoll. Es ist ein zentraler Bestandteil für die Übertragung von E-Mails. Mit SMTP können E-Mails entgegengenommen und weitergeleitet werden. Über SMTP wird eine Kommunikation zwischen einem E-Mail Client und einem SMTP-Server, oder zwischen zwei SMTP-Servern hergestellt. Das endgültige zustellen einer E-Mail ist mit SMTP aber nicht möglich, dafür kommt ein anderes Kommunikationsprotokoll zum Einsatz.
Ablauf
POP3
Vigenère Verschlüsselung
Eine weitere Verschlüsselungstechnik ist die Vigenère Verschlüsselung, benannt nach dem frnzösischen Diplomat Laise de Vigenère. Diese Verschlüsselung ist anders als die Caesar Verschlüsselung keine monoalphabetische, sonder eine polyalphabetische. Das bedeutet, dass die Grundlage der Chiffrierung nicht nur eins, sonder mehrere, in diesem Fall 26 Alphabete sind. Diese Verschlüsselung gilt als deutlich sicherer, ist aber trotzdem nicht unknackbar. Die Grundlage bildet Das Vigenère Quadrat.
Es lässt sich klar erkennen, dass sich jeder Buchstabe aus dem Alphabet einmal zu Beginn einer Zeile befindet. Beim Verschlüsseln geht man nun so vor, dass man jeweils einen original Text und ein beliebig langes Codewort hat. Nun Nimmt man den ersten Buchstaben aus dem original Text und den ersten Buchstaben aus der Code Wort. Man sucht jeweils außen am Vigenère Quadrat die entsprechenden Buchstaben, dort wo sich die Zeile und die Spalte treffen steht der verschlüsselte Buchstabe. An dem Beispielbild sieht man, dass der Buchstabe G mit dem Buchstaben M verschlüsselt wurde, heraus kommt S. Für die nächsten Buchstaben geht man genau so vor. Leerzeichen werden weggelassen. Wichtig ist, dass das Codewort einfach wieder von Vorne beginnt, wenn es kürzer als das Original ist. Dieses muss natürlich auch zum Empfänger gelangen, damit dieser die Nachricht wieder entschlüsseln kann.
In BlueJ sieht das Prinzip der Verschlüsselung in etwa so aus:
(ORIGINAL (Als ASCII Zahl) - 65) + (Entsprechender CODEBUCHSTABE -65) %26 +65
Das Prinzip ist dem der Caesar Verschlüsselung also sehr ähnlich, trotzdem ist sie um einiges sicherer. In den nächsten Stunden werden wir weiter daran arbeiten, auch die Vigenère Verschlüsselung in BlueJ umzusetzten, der entsprechende Post wird dann folgen.
Ver- und Entschlüsselung mit Caesar
Verschlüsselung von Nachrichten gab es schon zu Zeiten der Römer. Sinn einer Verschlüsselung ist es z.B. geheime Informationen auch beim Übermitteln zu schützen, so dass ein Feind, die originale Nachricht nicht mehr entziffern kann. Auch heut zu Tage spielt Verschlüsselung in der Informatik eine wichtige Rolle. Einerseits werden inzwischen auch wichtige politische und geheimdienstliche Informationen mit Hilfe des Internets übermittelt, andererseits finden vor allem viele Online Bezahlvorgänge statt. In beiden Fällen, ist es wichtig, dass die Informationen nicht ungeschützt in World wide web geschickt werden. Deshalb gibt es eine Vielzahl an Verschlüsselungsmethoden, mit denen wir uns in diesem Semester beschäftigen werden.
Um mit der einfachsten anzufangen, haben als erstes die Caesar Verschlüsselung behandelt. Diese ist eine sogenannte monoalphabetische, symmetrische Verschlüsselung, die schon die Römer benutzten. Diese Chiffrierung ist deshalb so einfach, weil man ganz normal von unserem Alphabet mit 26 Buchstaben ausgeht, dann ein zweites darüber legt und dies um eine gewisse Anzahl verschiebt. So ergibt sich für jeden originalen Buchstaben ein neuer, bei der Verschlüsselung wird einfach jeder Buchstabe mit dem neuen ersetzt. Um die Verschiebung festzulegen, definiert man zuerst einen Schlüssel in Buchstabenform. Dieser Schlüsselbuchstabe gilt dann im neuen Alphabet als A.
Wenn man nun also das Wort HALLO mit dem Schlüssel C verschlüsselt sieht das ganze so aus:
Schlüssel C --> C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
H --> J A--> C L --> N O --> Q
= JCNNQ
Es wird schnell klar, warum diese Verschlüsselung so simpel ist. Unsere Aufgabe war es nun, in BlueJ ein Programm zu schreiben, mit dem man beliebige Wörter mit der Caesar Verschlüsselung verschlüsseln kann.
Das Prinzip hinter solch einem Programm ist recht simpel, trotzdem haben wir einige Zeit gebraucht, bis wir es hin bekommen haben. Man braucht Methoden zur Eingabe des Originaltextes, zur Eingabe des Schlüssels, zum Chiffrieren, sowie zur Ausgabe des Verschlüsselten Textes.
Das Prinzip beim Chiffrieren ist sehr einfach: Man nimmt den jeweiligen Buchstaben mit seiner ASCII-Code Zahl, subtrahiert 65 um die normalen Alphabet-Zahlen zu haben (0=A, 25=Z) rechnet dann den jeweiligen Schlüssel dazu und addiert wieder 65. Weil das Alphabet ja nach Z wieder bei A beginnt, muss man sein Ergebnis vor der Addition von 65 durch 26 teilen, der Rest ist dann der verschlüsselte Buchstabe. Die Rechenweise dafür heißt Modulo und wird durch ein Prozentzeichen dargestellt.
Nun zur Programmierung:
Um mit der einfachsten anzufangen, haben als erstes die Caesar Verschlüsselung behandelt. Diese ist eine sogenannte monoalphabetische, symmetrische Verschlüsselung, die schon die Römer benutzten. Diese Chiffrierung ist deshalb so einfach, weil man ganz normal von unserem Alphabet mit 26 Buchstaben ausgeht, dann ein zweites darüber legt und dies um eine gewisse Anzahl verschiebt. So ergibt sich für jeden originalen Buchstaben ein neuer, bei der Verschlüsselung wird einfach jeder Buchstabe mit dem neuen ersetzt. Um die Verschiebung festzulegen, definiert man zuerst einen Schlüssel in Buchstabenform. Dieser Schlüsselbuchstabe gilt dann im neuen Alphabet als A.
Wenn man nun also das Wort HALLO mit dem Schlüssel C verschlüsselt sieht das ganze so aus:
Schlüssel C --> C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
H --> J A--> C L --> N O --> Q
= JCNNQ
Es wird schnell klar, warum diese Verschlüsselung so simpel ist. Unsere Aufgabe war es nun, in BlueJ ein Programm zu schreiben, mit dem man beliebige Wörter mit der Caesar Verschlüsselung verschlüsseln kann.
Das Prinzip hinter solch einem Programm ist recht simpel, trotzdem haben wir einige Zeit gebraucht, bis wir es hin bekommen haben. Man braucht Methoden zur Eingabe des Originaltextes, zur Eingabe des Schlüssels, zum Chiffrieren, sowie zur Ausgabe des Verschlüsselten Textes.
Das Prinzip beim Chiffrieren ist sehr einfach: Man nimmt den jeweiligen Buchstaben mit seiner ASCII-Code Zahl, subtrahiert 65 um die normalen Alphabet-Zahlen zu haben (0=A, 25=Z) rechnet dann den jeweiligen Schlüssel dazu und addiert wieder 65. Weil das Alphabet ja nach Z wieder bei A beginnt, muss man sein Ergebnis vor der Addition von 65 durch 26 teilen, der Rest ist dann der verschlüsselte Buchstabe. Die Rechenweise dafür heißt Modulo und wird durch ein Prozentzeichen dargestellt.
Nun zur Programmierung:
Ganz zu Beginn wird die Klasse beschrieben, anschließend werden die Variablen definiert. Dann folgt die erste Methode "setzeOriginal". Mit dieser Methode gibt man den originalen, unverschlüsselten Text als String ein, der automatisch in reine Großbuchstaben umgewandelt wird.
In der nächsten Methode setzt man nach dem gleichen Prinzip den Schlüssel, allerdings als Einzelbuchstabe, also Char.
Dannach folgt das gleiche für die Eingabe des Verschlüsselten Textes, denn diesem Programm kann sowahl ver- als auch entschlüsseln.
Die erste Methode hier zeigt den verschlüsselten Text an, darauf folgende den entschlüsselten.
Die dritte Methode funktioniert ähnlich wie die letze, die beiden sind zum umwandeln der Buchstaben jeweils von original zu verschlüsselt und andersrum da. Dabei wird genau so vorgegangen, wie ich es oben bereits beschrieben habe.
Mit diesen zwei Methoden werden mit Hilfe von Schleifen jeweils die ganze Worte chiffriert bzw dechiffriert. Buchstabe für Buchstabe wird mit der Methode aus dem vorherigen Bild "umgewandelt" und dann wieder an das Wort gehängt.
Will man nun mit diesem Programm einen Text verschlüsseln:
1. gibt man seinen Text mit der Methode setzeOriginal ein
2. setzt dann den Schlüssel mit der Methode setzeSchlüssel
3. chiffiert anschließend mit der Methode chiffriere
4. und lässt sich zuletzt den verschlüsselten Text mit der Methode gibVerschluesseltes anzeigen.
Abonnieren
Posts (Atom)