Vorlesung: OpenSSL - Kryptologie in C - 2. Teil
Dozent: Prof. Dr. E. G. Giessmann
keine Einschreibng über Agnes (Fortsetzung aus dem Sommer)
Termine: |
VL Mi 09-11 (RUD 25, 3.113) |
Zuordnung: |
Master: Modul - 2. Teil Diplom-Hauptstudium: Modul - 2. 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 Debian-Bug vor einigen Jahren 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 die zweite Hälfte eines Moduls mit 2 SWS VL (ohne Übung; diese fand im Sommer statt).
- 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 1.1.0 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: