2012-09-03 6 views
4

Je voulais construire un serveur relais sur lequel des messages peuvent être relayés en toute sécurité entre 2 pairs (à des fins de traversée nat) pour la communication P2P. Particulièrement, je me suis référé aux étapes dans le diagramme dans ce document pour l'échange de clés secrètes .....java échange de clés publiques via un serveur de confiance

en particulier, il dit "clé publique de A codé avec la clé publique de B" et vice versa. Cependant, je suis tombé sur un problème: Lorsque j'utilise les deux clés à 1024 bits, j'ai effectivement obtenu un illegalblocksizeexception lorsque j'essaie d'utiliser la clé publique pour coder l'autre. En lisant les autres questions, certains ont répondu qu'il y a une limite à la taille des données que le public peut chiffrer en utilisant RSA. Puis-je savoir s'il y a des détails qui me manquent, qui sont omis dans le diagramme, ou est-ce que je fais la mauvaise chose, en essayant d'échanger des clés en tant que telles ...

Répondre

1

Les clés publiques RSA ne peuvent pas crypter les données qui sont plus long que le bit de leur module. Par conséquent, une clé publique RSA 1024 bits ne peut crypter qu'un maximum de 1024 bits de données. Un fichier de clé publique de 1024 bits sera plus grand que 1024 bits, car le module est seulement partie du total des données. Par conséquent, une clé publique RSA de 1024 bits ne peut pas chiffrer une autre clé publique RSA de 1024 bits.

Plus important encore: vous ne devriez pas cryptez une clé publique avec quoi que ce soit. Les clés publiques sont juste cela - public; il n'y a pas besoin de secret quand il s'agit de leur contenu. Si vous souhaitez "bénir" une clé publique comme étant adaptée à un but particulier, alors signez-la avec une clé privée d'une certaine importance. Ou mieux encore, émettre un certificat pour la clé publique auprès d'une autorité de certification approuvée par tous les participants de votre protocole.

Questions connexes