Software-Projektpraktikum: Entwurf Sicherer Kommunikationsprotokolle

Übersicht

How Standards Proliferate

  • SWS: 4, ECTS: 6
  • Veranstalter: Prof. Dr. Klaus Wehrle
  • Assistierende: Oscar Soria Dustmann, Daniel Schemmel
  • Studiengang: Bachelor Informatik
  • Wichtige Termine:
    • Kick-off Meeting: 17. Februar um 10:30 (2016-02-17T10:30:00).
    • Praktikumsstart: Anfang April (Genauer Termin TBA)
    • Wöchentliche Treffen: Termin wird in Abstimmung mit den Teilnehmenden festgelegt
    • Abschlusspräsentationen: Ende der Vorlesungszeit bzw. Anfang der vorlesungsfreien Zeit.

 

Inhalte des Praktikums

Eine der wichtigsten Regeln der Kryptographie lautet: "Implementiere niemals kryptographische Funktionen selbst!" In diesem Software-Projektpraktikum werden wir diese Regel gründlich verletzen. Anstelle von standardisierten Verfahren, wie etwa TLS, und bekannten Bibliotheken die diese Implementieren, wie etwa OpenSSL, wird in diesem Praktikum von den Studierenden ein eigenes Verfahren selbst entworfen und auch implementiert.

Zu Beginn muss gemeinsam ein Protokoll entworfen werden, das mittels RSA, einer schnellen symmetrischen Chiffre, einem Message Authentication Code und eines Zero Knowledge Proofs eine sichere Verbindung aufbaut und dabei sicherstellt, dass beide Seiten ihren Kommunikationspartner erkennen können. Dieses Protokoll wird dann in Gruppen implementiert und am Ende Allen vorgestellt.

Folgende Technologien werden auf jeden Fall in dem Praktikum verwendet:

  • SSH um auf die von uns gestellte Entwicklungs-/Testumgebung zuzugreifen
  • GIT als Versionskontrollsystem
  • C++ als Programmiersprache (ISO 14882:2014 um genau zu sein)
  • Linux sockets um die Pakete zu übertragen
  • RSA um die Verbindung mit dem Server aufzubauen
  • Symmetrische Kryptographie um den eigentlichen Kommunikationskanal zu sichern
  • Message Authentication Codes um die Unveränderlichkeit des Kanals zu sichern
  • Zero Knowledge Proofs um den Client gegenüber dem Server zu identifizieren

Was muss ich mitbringen?

Grundsätzlich sind Vorkenntnisse im Bereich von Netzwerkprogrammierung und Softwareentwicklung hilfreich für dieses Praktikum, aber nicht erforderlich.

Bei einer Teilnahme am Praktikum wird folgendes erwartet:

  • Kenntnis einiger der oben genannten Technologien ist hilfreich, wenn auch nicht unbedingt nötig
  • Anwesenheit bei den Treffen und fristgerechte Bearbeitung
  • Einhalten von Codingstandards
  • Teamfähigkeit und aktive Teilnahme in der Gruppe
  • student.knows("C++") || (student.knows("C") && student.knows("Any Object Oriented Language"))
  • Folgende Veranstaltungen sind von besonderer Bedeutung für dieses Software-Projektpraktikum:
    • Programmierung
    • Betriebssysteme und Systemsoftware
    • Praktikum Systemprogrammierung
    • Berechenbarkeit und Komplexität
    • Datenstrukturen und Algorithmen
- Impressum -