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