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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

6.3 Open<strong>SSL</strong>-Basisfunktionalität 353<br />

RAND_seed() eingespeist werden. Beide Funktionen entnehmen dem referenzierten<br />

Puffer buf insgesamt num Zeichen zur Initialisierung des Pseudozufallszahlengenerators.<br />

Während bei RAND_add() über den Parameter entropy die<br />

Entropie, also die ”<br />

Zufallsgüte“ der gelieferten Startwerte in Bytes angegeben<br />

werden kann (vgl. dazu auch RFC 1750 [ECS94]), geht RAND_seed() implizit<br />

von der maximalen Entropie entropy = num aus. 24<br />

#include<br />

<br />

int RAND_status( void );<br />

void RAND_add( const void *buf, int num,<br />

double entropy );<br />

void RAND_seed( const void *buf, int num );<br />

int RAND_egd( const char *path );<br />

int RAND_load_file( const char *file, long max_bytes );<br />

int RAND_write_file( const char *file );<br />

Besser, als sich selbst um geeignete Startwerte für den PRNG zu kümmern,<br />

ist es im Allgemeinen, eine verlässliche externe Quelle, wie z. B. einen Entropy<br />

Gathering Dæmon (EGD) <strong>mit</strong> dieser sicherheitskritischen Aufgabe zu betrauen.<br />

Open<strong>SSL</strong> stellt hierfür die Funktion RAND_egd() bereit, die den Open<strong>SSL</strong>eigenen<br />

Pseudozufallszahlengenerator <strong>mit</strong> Hilfe eines EGD initialisiert. Als<br />

Parameter file erwartet die RAND_egd()-Funktion den für die Kommunikation<br />

<strong>mit</strong> dem Dæmon benötigten <strong>Unix</strong>-Socket-Pfad des anzusprechenden<br />

EGDs. Da<strong>mit</strong> der RAND_egd()-Aufruf erfolgreich ist, muß ein passender EGD<br />

auf dem lokalen <strong>Unix</strong>-System installiert <strong>und</strong> gestartet sein. Bekannte <strong>und</strong><br />

auf <strong>Unix</strong>-Systemen verbreitet eingesetzte Entropy Gathering Dæmons sind<br />

EGD, 25 PRNGD 26 <strong>und</strong> EGADS. 27<br />

Die RAND_egd()-Funktion liest insgesamt 255 Bytes vom angegebenen EGD<br />

<strong>und</strong> speist diese <strong>mit</strong>tels RAND_add() in den Pseudozufallszahlengenerator der<br />

ssl-Bibliothek ein. Die Funktion liefert als Rückgabewert die Anzahl der vom<br />

Entropy Gathering Dæmon gelesenen Bytes. Schlägt der Verbindungsaufbau<br />

zum angegebenen Dæmon fehl oder reichen die gelesenen Daten nicht aus<br />

um den PRNG der ssl-Bibliothek zu initialisieren, so zeigt RAND_egd() den<br />

Fehler über den Rückgabewert -1 an.<br />

24 Gilt entropy = num, so haben alle num Bytes des angegebenen Puffers buf absolut<br />

zufälligen Inhalt.<br />

25 http://egd.sourceforge.net/<br />

26 http://www.aet.tu-cottbus.de/personen/jaenicke/postfix tls/prngd.html<br />

27 http://www.securesw.com/egads/

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!