Establezca un canal seguro con autenticación mutua con claves públicas compartidas previamente

2

Supongamos que tengo un sistema por el cual las partes se identifican por su clave pública (con un algoritmo de clave asimétrica preseleccionado). Supongamos que tengo una parte PUB1 que quiere establecer un canal seguro con una parte PUB2. Esto necesariamente significa que la parte PUB1 ya tiene la clave pública de PUB2.

Dado un medio no confiable con MITM, ¿cómo pueden las partes establecer un canal seguro (sin intercepción, no MITM) mientras se autentican mutuamente como la parte que posee los secretos PRIV1 / PRIV2 que coinciden con la identidad PUB1 / PUB2?

Entiendo que Diffie-Hellman con claves públicas puede hacer exactamente esto. ¿Es correcto? ¿Existen implementaciones estándar para .NET que tengan soporte incorporado para este modo de operación?

    
pregunta RomanSt 03.07.2012 - 10:46
fuente

3 respuestas

2

Sí, Diffie-Hellman con claves públicas previamente compartidas proporciona un canal de autenticación mutua. Sin embargo, si lo usa, será culpable de usar su propia implementación criptográfica y, en parte, su propio protocolo criptográfico, que no es un pecado tan grande como usar su propio algoritmo criptográfico, pero es mejor evitarlo. A menos que tenga una buena razón para no hacerlo, use SSL (con certificados autocompactados compartidos previamente, o para obtener más flexibilidad con los certificados firmados por una CA interna).

    
respondido por el Gilles 03.07.2012 - 14:28
fuente
1

Para autenticar el mensaje, simplemente haga que PUB1 cifre el mensaje que se envía con su clave privada y lo agregue al final del mensaje en texto sin formato. PUB2 utilizará la clave pública de PUB1 para descifrar el texto cifrado adjunto para confirmar la identidad de PUB1.

Si desea establecer un canal seguro para transferir datos, se puede usar un algoritmo de clave asimétrica para establecer una clave para su uso en un algoritmo de clave simétrica. - también conocido como Cryptosystems híbridos .

No tengo experiencia personal con la implementación de .NET, así que no puedo comentar sobre eso.

    
respondido por el Ayrx 03.07.2012 - 12:12
fuente
1

Sí y no, el intercambio de claves Diffie-Hellman no proporciona ninguna autenticación.

Sin embargo, solo la clave coincidente encripta / descifra los datos, la sección de clave pública en Wikipedia dice cómo agregar tales habilidades. Básicamente, envíe un mensaje aleatorio cifrado con una clave pública a la otra parte que lo desencripta (demostrando que tiene la clave privada) y lo vuelve a cifrar con la clave pública original del remitente y lo envía de vuelta. Le sugiero que lo repita al revés. luego haga Diffie-Hellman normalmente para obtener claves de sesión simétricas.

    
respondido por el ewanm89 03.07.2012 - 13:30
fuente

Lea otras preguntas en las etiquetas