¿Es una contraseña preestablecida en un sistema integrado lo suficientemente segura?

1

Tengo un dispositivo integrado de seguridad crítico, que envía actualizaciones de datos (en solicitudes de obtención) y extrae configuraciones de un servidor. El dispositivo utiliza un microcontrolador / wifi integrado llamado Particle P1; esto toma todos los datos enviados y lo encripta con AES, lo envía a un servidor propiedad de la compañía de chipsets (que suponemos que por ahora es lo suficientemente seguro), se descifra y luego se envía a través de SSL a mi servidor. Para asegurarse de que nadie pueda enviar datos o configuraciones falsos al servidor, cada dispositivo tiene un número de serie accesible públicamente y una contraseña preestablecida generada de manera aleatoria de ~ 50 caracteres correspondiente a ese número de serie. El servidor busca el número de serie en una base de datos y compara la contraseña dada a la que está archivada antes de considerar cualquiera de los datos.

¿Este tipo de sistema de token de acceso permanente es seguro?

EDITAR: De acuerdo con el proveedor del microcontrolador, el enlace entre el dispositivo y ellos está bien asegurado con la clave pública TLS:

  

La nube de partículas utiliza RSA para el intercambio de claves de sesión y la autenticación, y luego AES para el cifrado de datos para todas las transacciones en la nube. Cada dispositivo tiene su propia copia de la clave pública de la nube de partículas y su propia clave privada. No conozco una referencia a un documento, pero el código fuente está en github para que todos lo puedan ver.

    
pregunta 0xDBFB7 21.03.2016 - 17:41
fuente

3 respuestas

3

Muy bien, la principal preocupación aquí es que un atacante podría interceptar el tráfico entre la compañía de chipset y su servidor.

¿Cómo sabe el dispositivo que está hablando con el servidor correcto? Si intercepté el tráfico entre el dispositivo y el servidor y simulé que era el servidor, ¿el dispositivo me dará su contraseña? / p>

La forma "correcta" de hacer esto es usar SSL autenticado por el cliente. Esto significa que en lugar de una "contraseña", cada dispositivo obtiene un único RSA o ECC par de llaves, y un certificado correspondiente del servidor (que es un Autoridad de certificación en este caso). Esto le permite usar el Handshake TLS autenticado por el cliente .

Hay formas seguras de realizar la autenticación utilizando un secreto precompartido que tanto el servidor como el cliente conocen, pero "¡aquí está mi contraseña, asegúrese de que coincida!" no es uno de ellos (al menos no sin resolver de forma independiente el problema "¿cómo sé que estoy hablando con el servidor correcto?"). Una forma es tener ambos extremos MAC el masaje con una clave derivada del secreto compartido. Luego, la otra parte puede calcular el mismo MAC usando su copia del secreto compartido y asegurarse de que tengan el mismo MAC. Otra forma es usar AES en modo de cifrado autenticado (AE) .

... O como apunta @SEJPM, omita todo lo relacionado con "rodar su propia cosa" y simplemente use uno de los Ciphersuites (TLS-PSK) .

    
respondido por el Mike Ounsworth 21.03.2016 - 18:24
fuente
1

Sin que el cliente verifique el servidor, cualquier esquema como este es vulnerable a la suplantación. Específicamente, al implementar un servidor falso y obligar al cliente a conectarse a él (quizás a través de una regla de firewall), el servidor falso recibiría los detalles enviados por el cliente, y luego podría usarlos para enviar más contenido malicioso al servidor legítimo. .

Para protegerse contra esto, el cliente podría comparar el certificado del servidor legítimo con el del servidor al que se está conectando y solo enviar datos si coinciden. Sin embargo, esto requeriría que el cliente conozca el certificado público correspondiente a la parte privada utilizada por el servidor, lo que no siempre es posible en los dispositivos integrados (por ejemplo, tienden a carecer de la capacidad de actualización después de los cambios de certificado).

Por lo tanto, sería posible utilizar otros métodos que permitan que ambos extremos verifiquen el otro: tal vez un nonce, generado por el servidor y enviado al cliente, utilizando un método predefinido (por ejemplo, concatenando un definió la cadena para el nonce, y luego el hashing con un algoritmo de hashing criptográfico), y devolvió. Dado que la cadena predefinida nunca se envía, esto debería ser difícil de romper sin acceso al dispositivo o al servidor (ambos necesitan conocer la cadena), incluso si conoce el nonce para una solicitud determinada.

Esencialmente, necesita verificar que se está comunicando con el otro dispositivo esperado, desde ambos extremos, para asegurarse de que sus datos no puedan ser alterados. Sin embargo, esto implica varios pasos.

    
respondido por el Matthew 21.03.2016 - 18:24
fuente
0

A riesgo de ser demasiado amplio, su solución es segura, salvo en dos circunstancias.

  

"Cada dispositivo tiene su propia copia de la clave pública de la nube de partículas"

Esto significa que (salvo un error de software que permita que algo como engañar al cliente para que use una versión débil de TLS / SSL) el dispositivo solo se sentirá cómodo al hablar con el servidor que tiene la clave privada correcta, a saber, la "nube de partículas" anfitrión. Por lo tanto, el servidor y el dispositivo tienen una forma de autenticación bidireccional y se realiza en secreto para que haya confidencialidad y no rechazo.

El otro extremo flexible es, ¿qué sucede si se compromete la clave privada de la Nube de partículas? La gestión adecuada de certificados (a través de una CA) permite esta inevitabilidad al invalidar una clave y reemplazarla por una nueva. Si la clave está codificada, esto suena como que solo es posible a través de una actualización de firmware.

¿Hay actualizaciones de firmware disponibles en banda? ¿fuera de banda? ¿Solo como parte de esta mecanización de la nube? ¿De ningún modo? La respuesta a eso podría ser lo que determina qué tan cómodo se siente usted al creer que el canal de comunicación está listo para las aplicaciones de seguridad personal. Cualquier problema con estas dos advertencias puede dejar a los dispositivos tristemente desprotegidos hasta que se realice una actualización del firmware para parchear el problema a todos los dispositivos, de una manera segura (no puedo confiar en la nube para que la presione más si la clave está comprometida, ¿eh?)

    
respondido por el Jeff Meden 21.03.2016 - 20:51
fuente

Lea otras preguntas en las etiquetas