Tengo un programa A que necesita enviar mensajes a varias instancias del programa B (B1, B2, etc.). Los mensajes deben estar encriptados, y también firmados. Lo que significa que solo las instancias de B n se pueden decodificar, y deben asegurarse de que los mensajes provienen de A.
Además, B1 no debería poder enviar mensajes a B2, etc. ...
En teoría, debería ser posible utilizar un solo par de claves RSA, con una clave para A y una clave para Bn. Una vez decodificado por Bn, si el mensaje recuperado se valida (por ejemplo, mediante una función hash), debe haber sido enviado por A, que no reveló su clave a nadie. En ese caso, ambas claves son privadas (lo que significa que deben intercambiarse en un canal seguro)
-
¿Se recomienda esto o hay un argumento sólido a favor de tener pasos independientes de cifrado y firma con pares de claves independientes?
-
En la práctica, en la biblioteca Crypto ++, la clase
PrivateKey
también contiene la clave pública. ¿Hay alguna forma de cargar una clave privada solamente?