Humboldt-Universität zu Berlin - Mathematisch-Naturwissenschaftliche Fakultät - Komplexität und Kryptografie

Vorlesung: OpenSSL - Kryptologie in C - 1. Teil

Dozent: Prof. Dr. E. G. Giessmann



Termine: VL Mi 09-11 (RUD 25, 3.113)

Zuordnung: Hauptstudium, HK - 1. Teil

Inhalte und Lernziele

Die Kryptographie stellt technische Mittel zur Verfügung, mit denen der Zugriff auf elektronische Daten geregelt werden kann. Man kann damit Nachrichten vor unberufenem Mitlesen durch Verschlüsseln schützen, vor bewußter oder unbeabsichtigter Veränderung bewahren elektronische Signaturen oder kryptographische Prüfsummen. Im Internet werden alle diese Schutzmechanismen auch beispielsweise beim Aufbau von SSL-Verbindungen (allerdings meist unbemerkt) benutzt.

Die entsprechenden Routinen werden durch das OpenSSL-Paket bereitgestellt. Dazu gehören die symmetrischen Verschlüsselungsverfahren wie AES, Blowfish, DES und die verschiedenen RCs, die in einer Vorlesung bei Interesse noch um einen exotischen Algorithmus wie beispielsweise Гост, Bear oder Shark ergänzt werden können. Die bekannten asymmetrischen Verfahren wie RSA, DSA und der Diffie-Hellman-Schlüsselaustausch sind natürlich ebenfalls in OpenSSL implementiert und werden folglich in diesem Kurs betrachtet. Neuerdings findet man in den aktuellen OpenSSL-Versionen auch die auf elliptischen Kurven basierenden Algorithmen, die die Grundlage für den elektronischen Reisepass und zukünftig auch den elektronischen Personalausweis bilden, und denen deshalb einige Vorlesungen gewidmet werden.

Neben der algorithmischen Beschreibung wird grundsätzlich immer auch die effiziente Implementierung und die bitgenaue standardkonforme Umsetzung dieser Algorithmen behandelt. Der sichere Umgang mit so genannten ASN.1-Strukturen muss ebenfalls geübt werden. Glücklicherweise bietet dazu das OpenSSL-Paket umfangreiche Unterstützung an, deren Nutzen man in der Vorlesung kennen und schätzen lernt. Der Standard X.509 und der RFC 5280, seine Anpassung für das Internet, werden damit zu echten Hilfsmitteln beim Einsatz kryptographischer Verfahren.

Ziel der Vorlesung ist es nicht nur, dass sich die Hörerinnen und Hörer die Grundlagen der Kryptologie aneignen, sondern auch, zu vermitteln, wie man diese Algorithmen verwendet und was man aus Implementierungsfehlern wie dem kürzlich bekannt gewordenen Debian-Bug lernen kann. Tatsächlich sind nur wenige kryptographische Schwächen durch die Algorithmen selbst bedingt, viel eher ergeben sie sich aus konzeptionellen Fehlern in der Infrastruktur, bei der Schlüsselerzeugung oder beim praktischen Einsatz der Verfahren.

Wichtige Hinweise:

  • Die Vorlesung in diesem Semester ist nur die erste Hälfte eines Halbkurses. Sie wird durch eine schriftliche Erfolgskontrolle abgeschlossen, die die Voraussetzung für die mündliche Prüfung am Ende der zweiten Hälfte im kommenden Sommersemester darstellt.
  • Es wird keine Übung geben, die Hörerinnen und Hörer müssen sich die erforderlichen Fähigkeiten selbst erarbeiten. Dies wird jedoch in der Vorlesung durch die ständige Benutzung des OpenSSL-Programmpakets mit seiner Vielzahl von Kommandooptionen erleichtert.
  • Zur Vorlesung gibt es kein Skript, von vielen OpenSSL-Tricks werden Sie nur hören und Sie können sie sich nur durch eigene Benutzung aneignen. Deshalb sind die regelmäßige physische Anwesenheit und fleißige Mitarbeit für den Besuch dieses Halbkurses und seinen erfolgreichen Abschluss leider zwingend erforderlich.

Empfohlene Literatur

Die Vorlesung orientiert sich an der aktuellen Version des OpenSSL-Pakets und erfordert deshalb einige Grundkenntnisse der C-Programmierung.

Darüber hinaus kann man auch folgende Quellen benutzen:

  • A. Menezes, P. van Oorschot, S. Vanstone: Handbook of Applied Cryptography, CRC Press 1997, das "grüne Buch",
  • B. Schneier: Applied Cryptography, Wiley 1993 und 1996, das "blaue" und das "rote Buch",
  • R. M. Avanzi, H. Cohen, Ch. Doche, G. Frey, T. Lange, K. Nguyen, F. Vercauteren: Handbook of Elliptic and Hyperelliptic Curve Cryptography, CRC Press 2005, das "schwarze Buch".

Links

Jede Link-Liste wäre unvollständig und würde zudem die Entdeckerfreude trüben. Die Hörerinnen und Hörer sind ausdrücklich aufgefordert, selbstständig zu suchen und interessante Fundstellen in der Vorlesung auch vorzustellen.

Als Ausgangspunkt kann man mit folgenden Links beginnen: