In diesem Schülerprojekt geht es um die Umsetzung einer Peer-to-Peer-Kommunikation zwischen zwei Rechnern innerhalb eines Netzwerkes. Diese wird verschlüsselt und unverschlüsselt in Python implementiert.
Sockets (» Steckdose«) sind Softwareobjekte, die eine bidirektionale Netzwerkkommunikation zwischen Server und Clients ermöglichen. Dabei geht es nicht nur um eine Verbindung von Programmen zum Internet, sondern auch um den internen Datenaustausch zwischen den Programmen. „Bei der Benutzung von Sockets spielt es keine Rolle, ob sich der Zielsocket auf dem eigenen Rechner, auf einem Rechner im lokalen Netzwerk oder auf einem Rechner im Internet befindet.“ [Ernesti und Kaiser] Das Betriebssystem stellt dabei die Sockets bereit und hat die Aufgabe alle benutzten Sockets zu verwalten.
Inhaltsverzeichnis
1 Grundlagen
1.1 Socket
1.2 Transmission Control Protocol
2 Netzwerkkommunikation
2.1 Unverschlüsselt
2.1.1 Peer-to-Peer Rechnermodell
2.1.2 Implementierung Rechner 1
2.1.3 Implementierung Rechner 2
2.2 Exemplarischer Chat–Verlauf
2.2.1 Rechner 1
2.2.2 Rechner 2
2.3 Verschlüsselt
2.3.1 Theoretische Grundlagen: Asymmetrische Verschlüsselung
2.3.2 Theoretische Grundlagen: RSA–Algorithmus
2.3.3 Schlüsselaustausch
2.3.4 Implementierung
Zielsetzung & Themen
Die vorliegende Arbeit befasst sich mit der technischen Realisierung einer verschlüsselten, bidirektionalen Netzwerkkommunikation mittels Python-Sockets. Das primäre Ziel ist die Entwicklung eines Peer-to-Peer-Chat-Systems, bei dem die Datenübertragung zunächst unverschlüsselt und in einer zweiten Ausbaustufe mittels des asymmetrischen RSA-Verschlüsselungsverfahrens gesichert erfolgt.
- Grundlagen der Netzwerkkommunikation mittels Sockets
- Aufbau und Implementierung von Peer-to-Peer-Verbindungen
- Theoretische Konzeption asymmetrischer Verschlüsselung
- Anwendung des RSA-Algorithmus auf Netzwerk-Datenströme
- Praktische Implementierung in Python unter Verwendung von PyCrypto
Auszug aus dem Buch
2.3.1 Theoretische Grundlagen: Asymmetrische Verschlüsselung
Eine sehr lange Zeit ging man davon aus, dass es nur symmetrische Verschlüsselungsverfahren gibt, bei denen beide Seiten den gleichen Schlüssel besitzen müssen, mit dem sowohl ver- als auch entschlüsselt wird. Im Jahre 1976 veröffentlichten die Kryptologen W. Diffie und M. Hellmann erstmals einen Fachartikel in dem das erste Public-Key-Verfahren vorgestellt wurde. Das heißt, dass Empfänger und Sender jeweils ein Schlüsselpaar mit einem öffentlichen und privaten Schlüssel besitzen. Dabei wird der öffentliche Schlüssel vom Sender benutzt, um eine Nachricht zu verschlüsseln, welche nur der Empfänger mit seinem geheimen Schlüssel entschlüsseln kann. Dabei spricht man von asymetrischer Verschlüsselung, da nicht mehr nur der gleiche Schlüssel für den Ver- und Entschlüsselungsvorgang benutzt wird.
Man kann sich das ganz einfach mit einem Briefkasten vorstellen. Der Sender wirft seine Nachricht in den öffentlich zugänglichen Briefkasten (entspricht dem öffentlichen Schlüssel) und nur dem Empfänger kann diesen Briefkasten mit seinem (privaten) Schlüssel wieder öffnen, um die Nachricht zu lesen.
Bei diesem Vorgang erhält jeder Teilnehmer T des Systems zuerst einen privaten Schlüssel d = dT , welcher unbedingt geheimgehalten werden muss und anschließend einen öffentlichen Schlüssel e = eT , welcher für alle Personen zugänglich sein kann und sollte. Ein allgemeiner Verschlüsselungsalgorithmus f ordnet unter einem öffentlichen Schlüssel e jedem Klartext m einen verschlüsselten Geheimtext c = fe(m).
Zusammenfassung der Kapitel
1 Grundlagen: Einführung in die Funktionsweise von Sockets im OSI-Schichtenmodell und Erläuterung des Transmission Control Protocol (TCP) als verbindungsorientiertes Protokoll.
2 Netzwerkkommunikation: Umfassende Darstellung der Implementierung einer P2P-Chat-Anwendung, unterteilt in einen unverschlüsselten Teil, eine exemplarische Demonstration des Verbindungsaufbaus und die theoretische sowie praktische Umsetzung einer RSA-Verschlüsselung.
Schlüsselwörter
Python, Sockets, Netzwerkkommunikation, Peer-to-Peer, TCP, RSA-Algorithmus, Asymmetrische Verschlüsselung, Kryptographie, Public-Key-Verfahren, PyCrypto, Datensicherheit, Verschlüsselung, Informatik, Client-Server-Modell, Datenaustausch.
Häufig gestellte Fragen
Worum geht es in dieser Arbeit grundsätzlich?
Die Arbeit beschäftigt sich mit der Programmierung eines verschlüsselten Chat-Programms für die Kommunikation zwischen zwei Rechnern über ein Netzwerk.
Was sind die zentralen Themenfelder?
Die Arbeit fokussiert sich auf die Netzwerkprogrammierung mittels Python-Sockets und die theoretischen sowie praktischen Aspekte moderner asymmetrischer Verschlüsselungsmethoden.
Was ist das primäre Ziel der Arbeit?
Ziel ist die Entwicklung einer sicheren Kommunikationsverbindung, bei der die Nachrichten durch den RSA-Algorithmus vor unbefugtem Mitlesen geschützt werden.
Welche wissenschaftliche Methode wird verwendet?
Es wird ein experimenteller Ansatz verfolgt: Zunächst wird eine funktionale, unverschlüsselte Basisimplementierung erstellt, welche anschließend durch die Integration kryptographischer Verfahren erweitert wird.
Was wird im Hauptteil der Arbeit behandelt?
Der Hauptteil gliedert sich in die Erläuterung der Socket-Technik, die detaillierte Beschreibung der P2P-Rechner-Implementierung sowie die mathematisch-theoretischen Grundlagen des RSA-Algorithmus.
Welche Schlüsselwörter charakterisieren die Arbeit?
Wichtige Begriffe sind Sockets, P2P, RSA, asymmetrische Verschlüsselung, Python und PyCrypto.
Warum wird für die verschlüsselte Kommunikation das Modul PyCrypto verwendet?
PyCrypto stellt standardisierte Funktionen für asymmetrische Verschlüsselungsverfahren zur Verfügung, was die Implementierung des RSA-Algorithmus ermöglicht.
Welche Herausforderungen traten bei der Implementierung auf?
Eine zentrale Herausforderung war die Kompatibilität des PyCrypto-Moduls mit modernen Python-Versionen, weshalb die Implementierung teilweise auf theoretischer Ebene verbleibt.
- Quote paper
- Florian Wolf (Author), Jonas Martin (Author), 2017, Implementierung einer verschlüsselten Netzwerkkommunikation unter der Verwendung von Python Sockets und des RSA-Algorithmus, Munich, GRIN Verlag, https://www.grin.com/document/372474