No estoy seguro de cuál es tu caso de uso aquí. Si solo está cifrando un archivo para que su socio pueda leerlo y nadie más, y no le importe la autenticación, la reproducción o MitM, y está completamente seguro del proceso que usted y su socio utilizan para intercambiar claves públicas. , entonces puedes usar un procedimiento muy simple.
-
Genere una clave simétrica utilizando una algoritmo de su preferencia.
- Encripta el archivo con la clave simétrica
- Cifre la clave simétrica con la clave pública del receptor
- Envía 2 y 3 a tu pareja.
No estoy seguro de por qué desea incluir su propia clave privada en el proceso. Siempre que el receptor pueda descifrar la clave (y él puede, porque usted usó su clave pública), entonces el secreto ya está "compartido" porque lo generó para que, obviamente, lo sepa.
Lo único en lo que puedo pensar es que quizás desee que el receptor se asegure de que el archivo proviene de usted y de nadie más. En ese caso, supongo que podrías
- Toma un hash de todo el lío
- Cifre el hash con su clave privada
- Envía el resultado de 6 junto con 2 y 3
... asumiendo que el receptor tiene una manera de estar seguro de que tiene una copia correcta de su clave pública (que no es necesariamente trivial).
Si no está completamente confiado en el proceso que usted y su compañero utilizan para intercambiar claves públicas, entonces deberá aprovechar una infraestructura PKI o cambiar a un esquema más simple como un secreto compartido con intercambio fuera de banda.