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.

352 6 Netzwerkprogrammierung <strong>mit</strong> <strong>SSL</strong><br />

weiter oben beschriebenen fünf Callback-Funktionen registriert <strong>und</strong> unsere<br />

Initialisierungsfunktion liefert den Rückgabewert 1.<br />

Beispiel 6.4 zeigt die zu Beginn von Beispiel 6.2 eingeb<strong>und</strong>ene Headerdatei<br />

"openssl-thread-init.h", in der lediglich der Prototyp der Initialisierungsfunktion<br />

openssl_thread_init() vereinbart ist. Über diese Headerdatei<br />

kann die Signatur der openssl_thread_init()-Funktion auch in anderen<br />

Quelldateien bekannt gemacht werden.<br />

1 #ifndef OPEN<strong>SSL</strong>_THREAD_INIT_H<br />

2 #define OPEN<strong>SSL</strong>_THREAD_INIT_H<br />

Beispiel 6.4. openssl-thread-init.h<br />

3<br />

4 int openssl_thread_init( void );<br />

5<br />

6 #endif<br />

6.3.7 Pseudozufallszahlengenerator<br />

Wie in Abschnitt 6.1.1 ausgeführt, basieren die von Open<strong>SSL</strong> implementierten<br />

kryptographischen Verfahren auf sogenannten Pseudozufallszahlen, also<br />

von einem Pseudozufallszahlengenerator (PRNG) berechneten, möglichst<br />

nicht (zumindest nicht von außen) vorhersehbaren Zahlenfolgen. Dazu wurde<br />

in Open<strong>SSL</strong> ein eigener PRNG implementiert, der die Berechnung dieser<br />

Zahlenfolgen übernimmt. Nun gilt es allerdings, diesen Pseudozufallszahlengenerator<br />

vor der ersten Bearbeitung kryptographischer Aufgaben <strong>mit</strong> einem<br />

möglichst guten Seed zu versorgen, also den PRNG <strong>mit</strong> möglichst guten Startwerten<br />

zu initialisieren.<br />

Die geeignete Initialisierung des PRNG, <strong>mit</strong> der die Wirksamkeit der eingesetzten<br />

kryptographischen Verfahren steht <strong>und</strong> fällt, liegt dabei generell im<br />

Verantwortungsbereich der Anwendung. Sofern allerdings das zugr<strong>und</strong>eliegende<br />

<strong>Unix</strong>-System <strong>mit</strong> einer Gerätedatei für Pseudozufallszahlen ausgestattet ist<br />

(z. B. /dev/random), übernimmt die ssl-Bibliothek diese sicherheitskritische<br />

Aufgabe selbständig <strong>und</strong> da<strong>mit</strong> transparent für die Anwendung.<br />

Mit Hilfe der Bibliotheksfunktion RAND_status() kann eine Anwendung den<br />

Status des Open<strong>SSL</strong>-eigenen Pseudozufallszahlengenerators er<strong>mit</strong>teln. Liefert<br />

die parameterlose Funktion den Wert 1, so ist der PRNG ordnungsgemäß<br />

initialisiert. Liefert RAND_status() dagegen den Rückgabewert 0, muß die<br />

Anwendung die Initialisierung des Generators selbst übernehmen. Geeignete<br />

Startwerte können in diesem Fall über die Funktionen RAND_add() oder

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!