Estaba teniendo una conversación con algunos amigos programadores acerca de cómo proteger una API sin modificar el servidor.
Solo se permite el acceso SFTP al sistema de archivos y se instala la extensión OpenSSL, el administrador no le permitirá instalar certificados SSL y, por lo tanto, en este experimento mental, solo puede cargar archivos de código normal al servidor.
Me encantaría que alguien aquí pueda abrir agujeros en la solución.
Por favor ignore los problemas de identidad, esta solución ignora los ataques MITM al saber que se demuestra que el cliente y el servidor son quienes deben ser. Por lo tanto, todo tipo de ataques a nivel de red o DNS no forman parte de la discusión.
Por lo tanto, la comunicación es la siguiente
- El cliente genera su propia clave pública, así que asegure las respuestas
- El cliente conoce el punto final en el servidor para solicitar su clave pública
- El cliente se conecta al punto final, obtiene la clave pública del servidor
- El cliente desea iniciar sesión en el servidor, genera un mensaje e inserta su clave pública para que las respuestas se cifren con
- El servidor recibe el mensaje, lo desencripta utilizando su clave privada, extrae la clave pública y interpreta y genera el mensaje de respuesta
- El servidor cifra el mensaje final utilizando la clave pública del cliente y envía los datos de vuelta
- El cliente descifra los datos usando su clave pública y el ciclo comienza de nuevo
¿La primera pregunta que surge es que este sistema ya existe y tiene un nombre?
Por supuesto, los certificados SSL pueden resolver este problema, pero en este experimento mental, no puedes instalarlos, por lo que no ayudarán a resolver este problema.
¿Es seguro el método anterior? y si no, ¿en qué agujeros puedes pensar?