¿Qué tan lejos debo llegar para proteger el UUID de SMBIOS de un usuario?

7

Mi servidor recibirá datos de varios cientos de computadoras. Como parte de hacer un seguimiento de qué computadora envió qué, voy a tomar las huellas digitales del hardware y guardar los resultados en mi base de datos.

Hoy en día, la fuente más sensata para usar es el UUID SMBIOS. Estos números de 128 bits son establecidos por el fabricante de la placa base y se supone que son únicos, pero no tan impredecibles. Por ejemplo, la última parte a menudo contiene la dirección MAC de la NIC integrada, y varios bits de ellos son específicos del fabricante.

Debido a que no gano mucho al saber el UUID exacto, estoy de acuerdo con usar un hash. Eso ya introduciría algo de privacidad. Sin embargo, dado que (sin medidas adicionales) los hashes se pueden calcular rápidamente, y esos UUID no proporcionan en realidad 128 bits de entropía, supongo que sería factible rastrear el hash hasta algún UUID.

¿Valdría la pena introducir una función hash más cara para evitar lo anterior, en caso de que mi servidor se vea comprometido? No creo que pueda usar sal con él, porque no puedo almacenar el sal en el hardware y se supone que los datos ya vienen con un hash (no para comunicar el UUID real). En el servidor debería poder agrupar los datos procedentes de la misma fuente. ¿Qué tan útil podría ser conocer el UUID de alguna computadora, que también podría saber que pertenece a una empresa o individuo en particular?

La ID derivada que se utilizará debe sobrevivir a las reinstalaciones del sistema, por lo que una alternativa basada únicamente en el software no funcionará. La introducción de hardware personalizado (por ejemplo, llave de hardware / dongle) no es una opción. Otras ideas que he tenido, de las que no estoy seguro de lo buenas que son:

  • Acortar deliberadamente el hash hasta el punto que aún es poco probable que encuentre el mismo hash más de una vez para un solo usuario (por lo que todavía podré distinguir sus sistemas) mientras no se conserve la suficiente entropía para ser reversible. No estoy seguro de cuál sería la longitud adecuada y cuánta mejora sería si, en lugar de un UUID real, se pudiera establecer un conjunto bastante limitado de UUID potenciales
  • Agregando un poco de hardware adicional al hash, a costa de que sea más probable que cambie, pero aumentando un poco la entropía de la fuente
pregunta Thijs van Dien 15.10.2015 - 23:20
fuente

1 respuesta

1
  1. Al menos puede agregar sal específica de la aplicación (codificada en la aplicación), por lo que no vale la pena crear una tabla de arco iris solo para su pequeña base de datos.
  2. Puede usar una función hash más lenta (antes de calcular el hash solo una vez por inicio de la aplicación).
  3. Agregar más entropía si es posible para tu aplicación sería de gran ayuda.
  4. Si es posible, no asocie los hashes con información identificable, ni complique la asociación, por ejemplo, solicitando la contraseña del usuario para descifrar su hash UID. (para obtener más sugerencias, deberíamos saber más sobre para qué lo necesita)

Acortar el hash puede ayudar en algunos casos, pero puede ser perjudicial en otros. En mi humilde opinión no haría mucho en una situación en la que el UID está asociado con otra información como IP, o Nombre / Compañía.

    
respondido por el Peter Harmann 20.04.2018 - 12:33
fuente

Lea otras preguntas en las etiquetas