Me gustaría tener una conexión confiable (como en TCP) cifrada (autenticidad, integridad, confidencialidad) entre el programa A y el programa B. Soy el creador de A y B. Quiero A para comunicarse solo con B y viceversa. A y B no tienen intenciones maliciosas entre sí, por lo que si A le dice a B que es A, B puede confiar en él.
Ahora hay varias maneras de hacer esto, que incluyen, entre otras:
- A y B tienen el mismo certificado autofirmado
- A y B tienen cada uno su propio certificado que es:
- autofirmado; en este caso, A agrega el certificado de B a su lista de autoridades de certificación y viceversa
- firmado por la otra parte; Creo que cada parte confía en sí misma.
- firmado por mí, una autoridad de certificación de un solo hombre, usando mi clave privada.
...
¿Cuál es el mejor enfoque y por qué?
Soy bastante nuevo en la criptografía en general y me parece muy confuso. Estoy seguro de que este es un problema que surge con frecuencia en muchas aplicaciones, por lo que estoy seguro de que cada enfoque tiene sus pros y sus contras, y que posiblemente ni siquiera mencioné el mejor enfoque. Sé que la seguridad de la información es un campo minado, por lo que cualquier consejo es bienvenido.