2015-12-15 1 views
-1

J'ai des difficultés à mettre en place des mesures de sécurité sur un réseau pour l'un de mes projets scolaires. Nous avons déjà un réseau complet fonctionnant avec Ruby. Nous essayons d'utiliser AES 256 CBC en utilisant la bibliothèque OpenSSL. Nous avons expérimenté avec l'utilisation de Diffie Hellman, mais c'est là que nous avons du mal: nœud 1 fonctionne:ruby ​​openssl mise en œuvre diffie hellman

require 'openssl' 
dh1 = OpenSSL::PKey::DH(256) 
der = dh1.public_key.to_der 
###we would send der to n2 here 

Apparemment, il est bien d'envoyer der vers n2, alors n2 aurait cette partie de code:

require 'openssl' 
dh2 = OpenSSL::PKey::DH(der) 

et maintenant ils ont l'information de chacun. Cependant, un nœud qui écoutait du trafic ne pourrait-il pas relever ce message et être en mesure d'avoir la clé de dh1? J'ai du mal à envelopper ma tête autour de ça.

+0

* "[comment le pair] ... va-t-il relever ce message et être capable d'avoir la clé de dh1" * - c'est le [problème de distribution de clé] (http://cs.wellesley.edu/~cs310/lectures /public_key_slides_handouts.pdf). Je pense que vous devez effectuer une lecture de fond. Est-ce que 'OpenSSL :: PKey :: DH (256)' signifie 256 bits dans Ruby? Si c'est le cas, il doit probablement être supérieur à 1024 bits en raison de [logjam] (http://www.schneier.com/blog/archives/2015/05/the_logjam_and_.html). – jww

Répondre

0

Oui, un nœud d'écoute peut avoir la clé publique de dh1. Voilà comment fonctionne Diffie Hellman. L'oreille indiscrète ne connaît pas la clé privée et ne connaît pas la clé privée partagée. Sans connaître l'une des clés privées, elle ne peut pas résoudre la clé partagée. Les équations modulo sont configurées de sorte que lorsque dh2 élève la clé publique de dh1 à la valeur de sa propre clé privée (dh1_public_key^dh2_private_key) le résultat de l'équation est la clé partagée, et vice versa.