Conceptos de cifrado PKI y autenticación de firma digital [duplicado]

3

Estoy tratando de entender cómo SSL utiliza PKI y la autenticación de firma digital para garantizar comunicaciones seguras y verificadas. He leído varias fuentes en línea y, por lo que puedo ver, el proceso básico es:

  1. A un servidor se le otorga un certificado de una autoridad de certificación (CA).    Este certificado incluye (como mínimo) la clave pública del servidor y una firma digital.    La firma digital es un dato 'token' cifrado con la clave privada de la CA.
  2. El servidor envía datos a un cliente. También envía la firma digital con él.
  3. El Cliente comprueba que se confía en esta CA buscándola en una lista codificada de CA en el sistema local.
  4. El Cliente puede verificar esta firma digital descifrandola utilizando la clave pública de la CA y verificando los datos originales del "token".    El cliente ahora sabe que el servidor es confiable, según la CA.
  5. El cliente envía datos al servidor, encriptados por la clave pública del servidor y un algoritmo, por ejemplo. RSA.
  6. El servidor descifra los datos usando su clave privada.

Me gustaría saber si esta comprensión es correcta desde un nivel alto y, de no ser así, ¿qué es lo que me he equivocado / perdido? O cualquier fuente que debería leer en otro lugar que ayude.

    
pregunta petehallw 17.10.2018 - 14:39
fuente

1 respuesta

0

Tenemos una pregunta canónica que brinda una explicación muy detallada de TLS: ¿Cómo funciona SSL? / TLS trabajo?

Responderé a tu pregunta específica:

  

Al menos con RSA, el servidor cifra el mensaje a través de la clave privada y esto solo se puede descifrar con la clave pública ... pero como la clave pública está disponible para todos, ¿cómo sabemos que alguien más no ha interceptado? ¿Qué?

Di que tengo un mensaje:

I, Mike Ounsworth will give $10 from account XXXX-YYYY-ZZZZ to petehallw account XXXX-YYYY-ZZZZ.

Quiero firmar este mensaje para que:

  1. Todo el mundo sabe que vino de mí
  2. Nadie puede manipularlo y cambiarlo de $10 a $1000 , o cambiar el número de cuenta.

Si mira dentro de una operación de signo RSA, se vería algo así como ** ADVERTENCIA: ALERTA SOBRE SIMPLIFICACIÓN **. Primero me hago el masaje:

SHA2("I, Mike Ounsworth will give $10 from account XXXX-YYYY-ZZZZ to petehallw account XXXX-YYYY-ZZZZ.")
= 521C5EC6F1FEE551A2A5A8967EE183369424DBD26C4F25337EF72C42D01DB7E1

A continuación, calculamos una firma en el valor de hash (tiene el modelo mental de cifrar ese hash SHA256 con la clave privada, lo cual está bien, pero somos conscientes de que es una simplificación excesiva).

RSA-sign("521C5EC6F1FEE551A2A5A8967EE183369424DBD26C4F25337EF72C42D01DB7E1", privateKey)
= <binary_signature_blob>

Entonces cualquier persona con la clave pública puede verificar mediante:

  1. Ordenan su propio hash SHA256 del masaje que recibieron.
  2. Use la clave pública para "extraer" el SHA256 del blob de firma binaria.
  3. Asegúrese de que los dos hashes SHA256 coincidan.

Como se indicó anteriormente, esto ya es una simplificación excesiva, incluso para RSA, que es el código más simple de entender. Usted dijo que los diferentes artículos que leen parecen estar en desacuerdo sobre cómo funcionan las firmas RSA, probablemente porque el cifrado es complicado y cada artículo probablemente se simplifique a los términos de los laicos de una manera diferente.

    
respondido por el Mike Ounsworth 18.10.2018 - 19:10
fuente