Claves públicas sin los certificados

4

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?

    
pregunta eofster 27.03.2014 - 09:38
fuente

1 respuesta

6

En general, los certificados autofirmados no ofrecen ningún beneficio de seguridad sobre las claves públicas sin formato (puede haber situaciones complicadas en las que la autofirma proporciona una "prueba de posesión" de la clave privada correspondiente, pero esto muy rara vez importa). Sin embargo, los certificados autofirmados pueden ofrecer un beneficio de usabilidad , ya que permite el uso de software basado en certificados.

Por ejemplo, en los sistemas Windows, a las claves privadas se les suele hacer referencia a través del certificado correspondiente: el usuario tiene algunos certificados en un "almacén de certificados" y cada certificado puede hacer referencia a la clave privada correspondiente. Si desea usar el formato CMS para firmas, con la clase .NET System.Security.Cryptography.Pkcs.SignedCms , debe firmar con " un certificado ", por lo que se debe usar algo que parezca un certificado X.509 genuino.

Esto equivale principalmente a reutilizar el formato de codificación de certificado (X.509) para el almacenamiento de claves públicas. Convenientemente, dicho formato incluye nombres legibles por humanos y fechas de validez; La GUI proporcionada por el sistema operativo también se puede usar para visualizar la "huella digital" del certificado, es decir, un hash del certificado (que se puede usar como un tipo de hash de la clave pública). De manera menos conveniente, el formato X.509 incluye un campo no opcional para una firma, por lo que debe haber una secuencia de bytes que al menos superficialmente parezca una firma: el hábito de usar autofirmas viene a partir de ese. Sin embargo, también podría almacenar una secuencia de bytes aleatorios de aproximadamente el tamaño correcto, también funcionaría.

    
respondido por el Tom Leek 27.03.2014 - 13:46
fuente

Lea otras preguntas en las etiquetas