Licencia bloqueada por hardware: ¿qué piezas de hardware debo usar?

Recientemente he implementado un sistema de licencia bloqueado por hardware con la coincidencia aproximada para manejar los cambios en el hardware sin requerir una reactivación, pero necesito más piezas de hardware para ser más seguro / crear una coincidencia difusa más confiable.

En este momento estoy emparejando contra lo siguiente:

  • Dirección mac física
  • Número de serie del disco duro
  • Número de pieza de RAM / fabricante / tamaño
  • ID del procesador

¿Cuáles son algunos otros números de serie de hardware no cambiantes específicos de la máquina que serían buenos para usar en esta situación y se pueden recuperar fácilmente desde C #?

Los ejemplos de código de recuperación de dicha información de hardware se apreciarían también.

ACLARACIÓN

Cuando dije “Sin cambios”, me refiero a las publicaciones en serie del hardware o la información que no cambiará sin modificar el hardware en la máquina directamente. (IE, no cambiará por su cuenta, o por software)

Habiendo trabajado en una empresa que realiza este tipo de huellas digitales de hardware, puedo decirle que las alternativas comerciales son generalmente bastante sólidas, pero todas fallarán en algunos casos legítimos.

Tenga en cuenta que algunas patentes en este espacio se aplican de manera muy activa. Algunas empresas grandes y exitosas (como Microsoft) que crearon algoritmos de locking de hardware han sido demandadas con éxito. Si tienes mucho éxito en lo que haces, lamentablemente eso te puede pasar.

Si cree que necesita un locking de hardware, seleccione una compañía que le facilitará brindar servicio al cliente a aquellos clientes que realicen una actualización legítima a su sistema que termine rompiendo las reglas de coincidencia difusa. Y, prepárese para brindar ese servicio de manera rápida y eficiente.

Para la mayoría de los casos de uso, me gustaría advertir contra el locking de hardware. Coloca limitaciones en su software que tenderán a obstaculizar los legítimos deseos de sus clientes legítimos de usar el software.

Actualizar

Aquí hay algunas métricas que se pueden usar además de las que usted enumera. No he comprobado cuáles son particularmente fáciles de obtener desde C #, ya que la mayoría del código que traté en este nivel era C ++ portátil con algún ensamblaje específico de la plataforma, según sea necesario.

  • Suma de comprobación de la BIOS
  • Número y tipo de procesadores (la ID del procesador no está disponible para todos los procesadores)
  • Detalles de la tarjeta gráfica (parte que a menudo se actualiza, pero proporciona un poco de entropía adicional)
  • Número de monitores conectados, resolución (es) de pantalla, marcas (varía a menudo, pero nuevamente es un poco de entropía agregada).
  • Fuentes instaladas que son inusuales y altamente diferenciadoras (p. Ej., Ignorar las que recibe de Office, etc.)
  • Addess de Mac de todas las NIC instaladas (por ejemplo, WiFi, por cable)
  • Serie de todos los HDs instalados
  • Enumerar otros dispositivos (por ejemplo, DVD, CD, lectores de tarjetas incorporados)

Tenga en cuenta que las computadoras portátiles se conectan a las estaciones de acoplamiento y pueden obtener una serie de puertos adicionales, nuevos monitores, etc.