Comunicación bidireccional cifrada entre dos sistemas

0

Tengo dos pares de red que necesitan usar un protocolo de aplicación cifrado y personalizado para comunicarse entre sí. Los mensajes intercambiados son bastante pequeños, generalmente menos de un par de cientos de bytes, y el intercambio de claves se realiza en persona. Entonces, ¿es razonable hacer las siguientes suposiciones:

  1. No se necesita una autoridad de certificación, ya que ambas partes se conocen y acuerdan utilizar un par de claves en particular.

  2. Como los mensajes intercambiados son pequeños y la cantidad de tráfico es muy pequeña, el cifrado y descifrado de los mensajes no causa picos medibles en la carga de la CPU o el retardo de la red, por lo tanto, no es necesario utilizar una sesión simétrica clave (todo el tráfico se cifra mediante el par de claves RSA 4096).

  3. Se agrega una marca de tiempo, HW ID y HMAC a cada mensaje para verificar la integridad de los datos y la autenticación del mensaje.

  4. Debido a esto, no se necesita TLS en toda regla, RSA es suficiente.

¿Me estoy perdiendo algo? ¿Sería este mecanismo inmune al MITM y los ataques de repetición, así como a la fuerza bruta?

    
pregunta Ulrik 02.03.2017 - 01:08
fuente

1 respuesta

6
  

todo el tráfico se cifra mediante el par de claves RSA 4096

¿Entonces no te gusta el rendimiento?

  

HMAC

Espera, HMAC, que requiere una clave compartida. Si tiene una clave de autenticación compartida, ¿por qué utiliza RSA? Use una clave compartida para la confidencialidad también.

  

Una marca de tiempo

¿Qué pasa si los relojes divergen?

  

Debido a esto, no se necesita TLS en toda regla, RSA es suficiente.

Lo tienes al revés. ¿Qué, en su escenario, requiere el uso de un protocolo no estándar? Un protocolo no estándar significa:

  • Más errores porque no ha tenido tanta revisión por parte de expertos.
  • Más errores porque tuvo que escribir código personalizado en lugar de usar bibliotecas bien probadas y mantenidas.

Tenga en cuenta que no he revisado su protocolo, 1. porque no nos dijo cuál es su protocolo, y 2. porque revisar un protocolo es más trabajo de lo esperado en una respuesta de Intercambio de pila. Pero solo pasar un minuto con las cosas que mencionaste levanta varias banderas rojo-anaranjadas.

Use TLS con una clave previamente compartida a menos que tenga una buena razón para hacerlo de otra manera. Una buena razón para no usar TLS es si desea intercambiar mensajes individuales en lugar de mantener una sesión. En este caso, los viajes de ida y vuelta necesarios para TLS son un desperdicio, y probablemente debería usar DTLS en su lugar.

    
respondido por el Gilles 02.03.2017 - 01:36
fuente

Lea otras preguntas en las etiquetas