Distribución de claves desde un servidor central [cerrado]

0

Tengo un sistema compuesto por diferentes computadoras que deben comunicarse en un contexto en tiempo real.

Todas las comunicaciones deben estar cifradas y este sistema no está conectado a Internet, es solo un grupo de computadoras que están conectadas a través de diferentes switches.

Cada computadora puede tener diferentes conexiones con las otras, actuando como servidor y / o cliente, usando UDP y / o TCP.

Lo que me gustaría hacer es implementar algo que no sea voluminoso o demasiado complejo. Mi idea fue usar de alguna manera AES 128 (o 256) y el modo GCM.

Estaba pensando que podría haber un servidor central a cargo de la distribución de una sola clave que puedan usar todas las demás computadoras para cifrar todos los datos. Específicamente, estaba pensando en cargar todas las claves públicas a esta computadora y luego cada cliente, al iniciar el sistema, recupera la clave del servidor y usa esta clave para cifrar la comunicación con AES. Básicamente, estoy diciendo que use AES con una clave precompartida que se puede obtener desde un servidor central.

La contraseña creada en el servidor central se puede cambiar de forma manual o automática todos los días.

¿Qué opinas sobre este diseño? Estoy planeando desarrollar todo en C ++, ¿alguna sugerencia sobre qué tecnología / biblioteca debo usar?

He visto que hay libcrypto ++ de bajo nivel, pero que también hay OpenSSL que proporciona capacidades TLS y DTLS. ¿Es posible configurar OpenSSL para crear un sistema como el que he descrito o debo usar otras bibliotecas como libcrypto ++?

    
pregunta svoltron 06.07.2018 - 11:17
fuente

1 respuesta

1

Esto es un comentario, pero el espacio es limitado.

Según la información proporcionada, el mejor consejo es: no intentes esto.

  

para usar de alguna manera AES 128 (o 256) y modo GCM

Vaya a ver algunas vulnerabilidades de seguridad relacionadas con el cifrado. El algoritmo es importante, pero la mayoría de los problemas surgen en la parte "de alguna manera".

  

Todas las comunicaciones deben estar cifradas

Luego, debe modificar todo el código del cliente y todo el código del servidor o volver a escribir la pila de red en el sistema operativo.

¿Por qué necesitan estar encriptados? ¿Es solo por confidencialidad cuando los datos cruzan la red? ¿Desea implementar una autenticación bidireccional?

  

este sistema no está conectado a Internet ... para un sistema que debe permanecer en línea en Internet

¿Eh?

¿Los hosts se conectan / proveen cosas que no sean los servicios que está tratando de proteger?

Parece que solo necesitas una VPN.

  

¿Alguna sugerencia sobre qué tecnología / biblioteca debo usar?

Realmente no entiendes lo que estás tratando de lograr, por lo que es comprensible que no puedas hacer las preguntas correctas. Hay muchas tecnologías disponibles que están bien escritas, mantenidas y son compatibles (pero aquí no hay suficiente información para señalarle en la dirección correcta).

    
respondido por el symcbean 06.07.2018 - 13:25
fuente

Lea otras preguntas en las etiquetas