Autenticar el dispositivo de seguimiento con el servidor TCP

3

Estoy construyendo un dispositivo de rastreo y estoy buscando un método de autenticación seguro para usar cuando el dispositivo quiera establecer una conexión con el servidor.

El servidor es un servidor TCP con el que abrimos una conexión a través de TLS. Utilizamos TLS para cifrar el tráfico entre el dispositivo y el servidor para descartar las posibilidades de que un pirata informático rastree los datos. El dispositivo establece una conexión con el servidor utilizando los datos de la red móvil de la tarjeta SIM integrada.

Si el dispositivo está físicamente comprometido, esto no es un problema (no nos preocupa evitarlo, ya que, de todos modos, como si lo hubieran perdido, no es su ubicación). Además, como estamos usando TLS, no tenemos que preocuparnos por que alguien escanee las comunicaciones entre el dispositivo y la red móvil. La principal preocupación es evitar que alguien falsifique / emule uno de los dispositivos de rastreo. No queremos que los piratas informáticos establezcan la ubicación del dispositivo de rastreo de otro usuario.

¿Sería suficiente proporcionar una ID de dispositivo y una contraseña hash segura que enviemos al servidor TCP para la autenticación (obviamente única para cada dispositivo) cuando se establece una conexión? No estoy seguro de los métodos de autenticación aquí y agradecería cualquier orientación.

BOUNTY EDIT: Algunos comentarios mencionan que la mejor manera de hacerlo es a través de certificados de clientes. No tengo ningún conocimiento en esta área y si esta es la mejor opción, estaría interesado en ver una respuesta que explique esto con más detalle. Además, en una nota al margen completa, ¿sería una mala idea dejar de usar TLS en nuestros dispositivos y usar otro método que no incluya cifrado? Somos conscientes de la sobrecarga adicional en la que incurrimos al usar TLS, por lo que si hay otro método para asegurar la autenticación que no use cifrado, me encantaría escucharlo. Después de todo, ¿cuáles son las posibilidades de que alguien realmente rastree el tráfico entre uno de nuestros dispositivos y una red móvil y luego use la identidad del dispositivo para enviar coordenadas maliciosas / falsas?

    
pregunta jskidd3 25.04.2016 - 17:25
fuente

1 respuesta

2

El ID único universalmente v 4 con registro previo de dispositivo suena bien para este tipo de aplicación. Cuando un dispositivo está en la fábrica, flashea su firmware con un UUID en él. Entonces usted registra ese UUID con el DB. Si el UUID existe, generará y flasheará uno nuevo.

Esto debería ser exactamente lo que quieres, porque ahora, si alguien toma un dispositivo, NO TIENE IDEA sobre qué otros dispositivos se han creado o cómo suplantar ese dispositivo sin hacer tantas conjeturas como existen átomos en el universo. Mejor aún, puede cifrar este UUID en algún tipo de cookie del lado del usuario permanente (como JWT) que se envía y solo se puede decodificar en el servidor y nunca necesita ser modificado por el cliente.

Ahora lo mejor que puede hacer una persona que robó uno es hacerse pasar por ese dispositivo ... y la pregunta es, ¿a qué fin? Ya has dicho que si eso sucede ya no te importa.

El registro previo del dispositivo es similar a las claves de clientes privados y cumple casi la misma función. Simplemente son más fáciles de implementar, ya que no tiene que ejecutar un control adicional en SSL. Solo tiene que descodificar la cookie que se envía y nunca se cambia y verificarla como el dispositivo en un almacén de datos en algún lugar. Mejor aún, incluso podría tener una manera de actualizar el valor de esta cookie en las actualizaciones de OTA para cambiarla de vez en cuando con algún tipo de datos de basura que no cambie el UUID.

Y si le preocupa la sobrecarga, esto se puede hacer con un script que genera el UUID, verifique si está en la base de datos, regenera si es necesario o se almacena, luego genera la cookie y, finalmente, modifica el firmware y parpadea El valor en el espacio de cookie permanente. Entonces, simplemente se convierte en una operación de botón pulsador.

    
respondido por el Robert Mennell 28.04.2016 - 01:45
fuente

Lea otras preguntas en las etiquetas