Comunicación entre dos puntos finales abiertos, ¿es esto lo suficientemente seguro?

1

Estoy creando una herramienta (muy simple) para comunicarse entre dos servidores. Comencé preguntando si había una mejor alternativa que hacer un guión hecho en casa y llegamos a la conclusión de que para empezar, un guión hecho en casa era suficiente. (En el desbordamiento de pila, pero como la discusión solo ocurrió en los comentarios, la pregunta se cerró)

Para dejar las cosas claras, el proyecto es enviar una solicitud a un servidor (punto final de aplicación web) desde una aplicación web (administrador).

Dado que el punto final es accesible desde todos, implementé un sistema de verificación para ser un poco más seguro. Sé que un sistema seguro es algo que todos conocen (y no están cerrados).

Entonces esto es lo que hago:

Cuando el administrador envía una solicitud, concatena todo el valor de los parámetros que se POSTARÁN, más un token. Luego, sha256 la cadena resultante y lo envía entre los parámetros como una suma de comprobación.

En el punto final, concatené todos los parámetros (excepto la suma de comprobación) y agrego el token seguro, hago un sha256 y lo comparo con el parámetro de suma de comprobación. Si son iguales, todo está bien.

Esto garantiza que los datos enviados no se modifiquen (en caso de que alguien esté escuchando la red), los datos provienen de una fuente confiable (con el token seguro que normalmente solo se conoce en mis aplicaciones).

El único riesgo que puedo ver aquí es si alguien obtiene el token seguro. Entonces este protocolo falla. Pero en la misma idea, si alguien obtiene mi contraseña de Facebook, por ejemplo, ¡podrá publicar cualquier cosa!

¿Es esto suficiente? ¿Necesito implementar más pasos? Pensé en estos, ¿qué piensas?

  1. Agregar https en los puntos finales
  2. Verificando la IP de origen

Gracias

    
pregunta Cyril N. 22.10.2014 - 11:37
fuente

1 respuesta

3

Confía en la "seguridad a través de la oscuridad", y la implementación de este tipo de seguridad nunca es una buena idea.

Puede crear una solución mucho más segura y sencilla implementando SSL (o TLS) en su solución. Aquí hay un muy buen tutorial en Stunnel:

  • instala stunnel

  • crear certificados personalizados

  • encripta todo de forma transparente

Usando Stunnel puedes tratar todos los datos en texto claro, sin agregar complejidades como cifrado, codificación o autenticación.

    
respondido por el ThoriumBR 22.10.2014 - 14:58
fuente

Lea otras preguntas en las etiquetas