Bonjour,
J'ai un mini programme client/serveur qui s'authentifie et s'échange des données sécurisées.
Je code en C et j'utilise OpenSSL.
Les deux parties utilisent Diffie Hellman pour se partager la clef de session.
J'utilise la fonction DH_compute_key( ) pour calculer la clef de session (g^x)^y de chaque coté, une fois que chaque partie obtient la clef publique g^x ou g^y.
Ma fonction DH_compute_key( unsigned char *key, BIGNUM *pub_key, DH *dh) doit génerer une clef de session de 128 bits que je compte utiliser par la suite dans le chiffrement des données échangées avec AES 128 CM.
Mon problème: comment générer exactement une clef de 128 bits à partir des paramètre diffie Hellman ?
la doc http://www.openssl.org/docs/crypto/DH_generate_key.html dit que key doit pointer sur une mémoire de taille DH_size(dh) qui sera la taille de la clef de session.
Pour info, avec un g=2, p=1024 j'obtiens DH_size(dh) = 128 octets
g=2, p=3200 j'obtiens DH_size(dh= = 400 octets.
il faut quel p et quel g pour obtenir un DH_size(dh) de 16 ocets = 128 bits ? Est ce que c'est bien comme cela qu'il faut procéder ou c'"est une démarche complètement fausse ?
Est ce que quelqu'n aurait une doc qui explique comment procéder pour obtenir la clef de session avec une taille voulue ( 128, 192, 256 )?
Merci d'avance pour votre aide.