2010-05-07 11 views
0

J'ai besoin d'accéder aux clés de cryptage (chiffrement, écriture) générées à partir de la clé principale générée à partir de l'API C OpenSSL. Je sais que je peux accéder à la clé maître à l'aide du struct SSL comme suit:Clé d'écriture du client d'accès client et clé d'écriture du serveur d'API OpenSSL C

ssl->session->master_key 

recherche Malheureusement le code OpenSSL ne m'a pas obtenu très loin que l'API est pas très bien documenté et regarder GDB a été une douleur ainsi que. Sont-ils exposés quelque part?

Merci

Répondre

0

Je travaille sur la même chose aussi. bien pour les connexions SSL v3, vous pouvez accéder au bloc de clé par,

ssl->s3->tmp.key_block 

Cependant, je réussi à obtenir ce à la fin de la méthode de ssl3_setup_key_block qui est défini dans le fichier s3_enc.c. Je veux dire que j'ai changé le code source et recompilé openssl. Donc je ne sais pas encore si cela change ou se perd après le retour de cette fonction.

Ce bloc de clé est une chaîne et comme défini dans http://www.ietf.org/rfc/rfc2246.txt sa structure est;

{ 

clientWriteMACSecret, 

    serverWriteMACSecret, 

    clientWriteKey, 

    serverWriteKey, 

    clientWriteIV, 

    serverWriteIV 

} 

La longueur de chaque section varie en fonction de la suite de chiffrement utilisée.

Pour les connexions SSLv2, je suppose que vous pouvez à nouveau accéder à ces zones en appelant ssl->s2->something. s2 est un objet de structure ssl2_state_st qui est défini dans ssl2.h. Vous pouvez regarder ça à partir de là.

Je ne sais pas comment c'est pour les connexions TLSv1. Mais il y a aussi une variable d1 dans la structure SSL. En guise de note personnelle, le code source d'openssl est vraiment un tas de poubelle. Pas de bons commentaires de code, pas de bonne documentation. Errant à l'intérieur du code source afin de trouver la chose la plus simple est une douleur.