05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

366 7 Client-/Server-Programmierung <strong>mit</strong> Open<strong>SSL</strong><br />

<strong>SSL</strong>_CTX_set_cipher_list() <strong>und</strong> <strong>SSL</strong>_set_cipher_list() bereit, die die<br />

erlaubten Chiffrenfolgen für den <strong>SSL</strong>-Kontext bzw. die <strong>SSL</strong>-Verbindung setzen.<br />

Die Liste der erlaubten Algorithmen oder Klassen von Algorithmen wird<br />

den Funktionen über eine speziell formatierte Zeichenkette übergeben.<br />

#include<br />

<br />

int <strong>SSL</strong>_CTX_set_cipher_list( <strong>SSL</strong>_CTX *ctx,<br />

const char *cl );<br />

int <strong>SSL</strong>_set_cipher_list( <strong>SSL</strong> *ssl, const char *cl );<br />

Die Zeichenkette enthält, getrennt durch Doppelpunkte, eine textuelle Aufzählung<br />

der zugelassenen oder ausgeschlossenen Chiffrenfolgen. Bestimmte<br />

Schlüsselwörter stehen für ganze Klassen von Algorithmen, etwa ALL für alle<br />

Algorithmen, RSA für alle Chiffrenfolgen, die RSA zum Schlüsselaustausch verwenden<br />

oder MD5 für alle Chiffrenfolgen, die den MD5-Algorithmus als MAC<br />

einsetzen. Eine Klasse von Algorithemen kann dann z. B. <strong>mit</strong> einem einleitenden<br />

Ausrufezeichen aus der Menge der zugelassenen Chiffren ausgeschlossen<br />

werden. Eine Liste der von der lokalen Open<strong>SSL</strong>-Installation unterstützten<br />

Chiffrenfolgen erhält man am einfachsten über das openssl-Kommando:<br />

$ openssl ciphers -v<br />

DHE-RSA-AES256-SHA <strong>SSL</strong>v3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1<br />

DHE-DSS-AES256-SHA <strong>SSL</strong>v3 Kx=DH Au=DSS Enc=AES(256) Mac=SHA1<br />

AES256-SHA <strong>SSL</strong>v3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1<br />

...<br />

Die Ausgabe listet pro Zeile der Reihe nach die Bezeichnung der Chiffrenfolge,<br />

die Protokollversion, in der sie eingesetzt werden kann, den Algorithmus<br />

für den Schlüsselaustausch, das Authentifizierungsverfahren, das Verschlüsselungsverfahren<br />

<strong>und</strong> den MAC-Algorithmus auf.<br />

In der Praxis schränkt man eine Anwendung nur äußerst selten auf eine einzige<br />

Chiffrenfolge ein. Dies wäre bestenfalls dann sinnvoll, wenn alle Kommunikationspartner<br />

aus einer Hand stammen. Überschneiden sich nämlich die<br />

Chiffrenfolgen, die von den beteiligten Kommunikationspartnern unterstützt<br />

werden, nicht, so können sich die Parteien nicht auf einen gemeinsamen Satz<br />

von Algorithmen einigen <strong>und</strong> es kann folglich auch erst gar kein Verbindungsaufbau<br />

zustande kommen. Softwareentwickler sind deshalb also meist bemüht,<br />

ein möglichst universell einzusetzendes Client- oder Serverprogramm zu entwickeln.<br />

Beispielsweise soll ein neuer Mailserver ja zu möglichst vielen Mailclients<br />

kompatibel sein <strong>und</strong> nicht nur <strong>mit</strong> einigen wenigen Mailprogrammen<br />

kommunizieren können.<br />

Die Kunst ist es also, möglichst viele Chiffrenfolgen zu unterstützen, dabei<br />

aber auf die weniger sicheren Algorithmen zu verzichten. In der Literatur<br />

findet sich deshalb häufig die Empfehlung, die zulässigen Algorithmen

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!