Hay dos clientes y un servidor. Cada cliente genera un par de claves RSA y carga una clave pública al servidor. El servidor asocia la clave pública con el identificador de usuario que se especifica durante la carga.
Luego, el cliente A necesita compartir los datos con el cliente B. Solicita al servidor la clave pública del cliente B. La huella digital de la clave pública se presenta al usuario para la verificación visual. Es responsabilidad del usuario A decidir si confía en la clave pública del usuario B y viceversa.
Después de que ambos usuarios confiaran en las claves públicas de cada uno, pueden cifrar los datos entre sí. El cliente A cifra los datos con la clave pública del cliente B y los carga en el servidor. El cliente B descarga los datos y los descifra.
Los clientes se comunican con el servidor mediante TLS implementado por el sistema operativo. El servidor autentica a los clientes utilizando OAuth2 con el token MAC.
Aunque la pregunta más importante es, por supuesto, si este sistema desde esta perspectiva elevada ya tiene algunos problemas de seguridad, la pregunta de esta publicación es sobre los certificados.
En una situación como esa, cuando el objetivo más alto es proporcionar un cifrado de extremo a extremo, y una de las decisiones es hacer que los usuarios verifiquen las claves públicas de cada uno, ¿hay algún beneficio de tener certificados autofirmados en Además de solo las claves públicas?
Se dice, por ejemplo, que el certificado autofirmado garantiza que alguien que lo generó también tiene la clave privada correspondiente. Cuando no hay certificados involucrados, ¿existe un riesgo de seguridad para el cliente A al cifrar algo con lo que se cree que es una clave pública del cliente B, pero en realidad no es una clave pública?