Autenticar el servicio del cliente al dispositivo de red

0

Mi empresa está desarrollando un dispositivo que se comunica a través de Ethernet con una aplicación cliente de control y monitoreo. Queremos aumentar la seguridad de esta conexión agregando un paso de autenticación antes de que el dispositivo acepte comandos o envíe información a través del enlace.

Actualmente, la comunicación entre el dispositivo y la aplicación cliente se realiza a través de TCP con TLS1.2. Como un paso adicional, nuestra biblioteca de clientes "API" está escrita solo para confiar en nuestros certificados. Esto debería proteger contra el simple espionaje entre el dispositivo y la aplicación cliente, así como contra un ataque MitM. Pero no hace mucho para evitar que una aplicación cliente maliciosa se conecte a un dispositivo y la controle directamente.

Por lo tanto, estoy buscando opciones para autenticar el cliente en el dispositivo además de lo que ya estamos haciendo. Quiero adherirme a un esquema de autenticación estándar de la industria tanto como sea posible, pensando que debería ser más seguro que algo que pueda crear yo mismo. Además, la aplicación cliente debe poder ejecutarse como un servicio sin la interacción del usuario, por lo que cualquier tipo de credencial debe almacenarse de alguna manera, de la forma más segura posible.

¿Alguna recomendación para un enfoque de mejores prácticas para esto?

Un par de cosas en las que he pensado son:

  1. Implemente SSL autenticación mutua para que el servidor verifique el certificado del cliente de la misma manera que el cliente verifica el certificado del servidor. Esto parece bastante simple y debería proporcionar un poco más de protección.
  2. Requerir autenticación de contraseña de alguna variedad (contraseña establecida en el dispositivo por el usuario en la instalación). La validación de la contraseña se realizó a través de algún tipo de protocolo desafío-respuesta . Esto agregaría otra capa en caso de que el certificado del cliente se vea comprometido o un atacante esté utilizando la API oficial de alguna manera.

El código para la autenticación de contraseña será personalizado en ambos extremos (C ++ en el dispositivo y C # en el cliente), así que quiero asegurarme de que todo se haga bien. ¿Son estos un buen enfoque? ¿Hay algo mejor que podamos usar?

    
pregunta plasmoidia 10.01.2017 - 01:34
fuente

0 respuestas

Lea otras preguntas en las etiquetas