windows 8 - online - ¿Está garantizado un ASHWID para identificar de manera única un dispositivo?
tag rename (2)
Queremos utilizar un identificador de dispositivo único en una aplicación Metro de Windows 8 y la recomendación es un ASHWID, documentado aquí:
http://msdn.microsoft.com/en-us/library/windows/apps/jj553431.aspx
Estoy luchando para ver cómo esto se puede garantizar único. El formato incluye dos bytes por componente de hardware, de los cuales los más identificables son la dirección MAC y el número de serie del disco duro. Pero solo dos bytes para esos valores realmente no parecen suficientes.
Si los bytes utilizados son algo más que los dígitos menos significativos (el más a la derecha, como un humano los lee), entonces dos computadoras portátiles idénticas adyacentes en la línea de producción probablemente tendrían los mismos ASHWID. Los MAC y las series de unidades probablemente sean adyacentes.
Entonces, supongo que el quid de la cuestión es cuántos dispositivos deben producirse con el mismo tipo de CPU y configuración de memoria antes de que sea probable que se produzca un duplicado. Parece el mismo tipo de problema que la paradoja del cumpleaños , así que encontré una calculadora para eso y enchufé los números :)
Con una dirección MAC y un disco duro con un identificador de dos bytes cada uno, tiene alrededor de 4 mil millones de permutaciones. Una vez que haya asignado solo 6,000 de ellos, es aproximadamente 50/50 que tiene dos iguales.
(vaya a http://jeff.aaron.ca/cgi-bin/birthday y conecte "6563" y "4294967296" para el cálculo real).
Entonces esto realmente no parece muy único en absoluto. ¿Estoy en lo cierto al ser extremadamente escéptico con respecto a este identificador, o me estoy perdiendo algo realmente significativo?
Del artículo:
El ASHWID proporciona un enlace fuerte entre la aplicación / paquete y el dispositivo representando varias características de hardware individuales. Para proteger la privacidad del usuario, el ASHWID varía de una aplicación a otra. A menos que el hardware subyacente haya cambiado, dos llamadas de la misma aplicación darán lugar a ASHWID idénticos. Sin embargo, el ASHWID cambia si el perfil de hardware del dispositivo cambia, como cuando el usuario desenchufa un adaptador Bluetooth USB. El servicio de la nube de back-end puede verificar el ASHWID y compararlo con los valores informados anteriormente. Aunque el ASHWID varía, se puede analizar para detectar si la varianza se debió simplemente a un cambio menor, como una adición de memoria al sistema. El nivel de tolerancia para la varianza depende de la implementación del servicio de la nube de fondo.
El ASHWID se compone de 9 componentes:
- ID de la CPU del procesador
- Tamaño de la memoria
- Número de serie del dispositivo de disco
- Adaptador de red (dirección MAC NIC - primera instancia)
- Adaptador de audio
- Estación de acoplamiento
- Dirección de Bluetooth
- ID de dispositivo de banda ancha móvil
- BIOS
La ID de CPU solo es exclusiva del modelo de procesador, pero la dirección MAC de NIC debe ser única. Una vez dicho esto, las direcciones MAC se pueden clonar y las NIC USB se pueden mover de un dispositivo a otro. Entonces, aunque supongo que es posible que dos dispositivos tengan el mismo ASHWID, es muy poco probable. Lo que es más desafiante al usar esta identificación es el hecho de que el hardware puede cambiar. Depende del servicio decidir qué partes del ASHWID permiten cambiar y qué partes no (variación aceptable). El artículo mismo proporciona una guía sobre eso.
No, ASHWID no garantiza la identificación exclusiva de un dispositivo. En el trabajo, he visto docenas de colisiones diarias en las que una de cada mes es nuestra tolerancia.
Además, el ASHWID podría cambiar con frecuencia para el mismo dispositivo, ya que Windows 8 a menudo se ejecutará en computadoras portátiles que podrían agregar una estación de acoplamiento, memoria USB o un adaptador Bluetooth enchufable. El mejor uso de ASHWID es para verificar que un usuario solo haya instalado su aplicación en un número limitado de dispositivos, y lo hace analizando el ASHWID y comparándolo selectivamente con los ASHWID previamente vistos por ese usuario.
En cuanto a un identificador de hardware único, sugiero un resumen MD5 de una cadena que contiene múltiples componentes, de los cuales algunos componentes de ASHWID pueden desempeñar un papel.
Puede generar aleatoriamente un número grande (64+ bits) y almacenarlo (por ejemplo, en el registro). Y, por supuesto, el nombre / ID de inicio de sesión del usuario debe ser exclusivo de ese usuario, si desea que se incluya algo más en un hash. También debe considerar lo que desea hacer si el usuario clona una instalación del sistema operativo o si reemplaza la HD después de una falla en la unidad.
De vuelta en el mundo del escritorio de Windows, utilicé la clave de registro MachineGuid y el número de serie del dispositivo de arranque, pero estoy luchando para tener acceso a esa información en una aplicación de la Tienda Windows. Si tiene acceso, MachineGuid está en HKLM/SOFTWARE/Microsoft/Cryptography
, que MS garantiza ser único. El número de serie del dispositivo de arranque ::GetVolumeInformationW(::SHGetFolderPathW(~),~)
será bastante único, pero solo 32 bits.