SSL utiliza un cifrado asimétrico como este:
- El servidor envía una copia de su clave pública asimétrica.
- El navegador crea una clave de sesión simétrica y la cifra con la clave pública asimétrica del servidor.
- El servidor descifra la clave pública asimétrica con su clave privada asimétrica para obtener la clave de sesión simétrica.
- El servidor y el navegador ahora cifran y descifran todos los datos transmitidos con la clave de sesión simétrica.
Pero, ¿qué sucede si alguien escucha esta comunicación en el "paso 1" y hace esto?
- Escuche la comunicación entre el servidor y el cliente en el paso 1.
- Cuando el servidor envía una copia de su clave pública asimétrica, el pirata informático la cambia a su propia clave pública (que también tiene su clave privada) y la envía al cliente.
- El cliente crea una clave de sesión y la cifra con la clave pública del pirata informático.
- Hacker escucha la línea, obtiene la clave de sesión y la desencripta con su clave privada.
Entonces él consigue la clave de sesión aquí. y luego ..
- Hacker cifra la clave de la sesión (que se descifra) con la última clave pública (el servidor enviado)
- Entonces el hacker tiene la clave de sesión ahora ...
Utilicé este algoritmo en mi proyecto para la comunicación entre el servidor y el cliente. No hay ninguna certificación entre ellos. ¿Es correcto agregar algunos caracteres en la clave pública y el cliente los comprueba y los hace válidos?
¿Cómo podemos arreglarlo? alguna idea?