2009-02-10 16 views
8

Estoy desarrollando una pequeña aplicación de Windows usando C++ y me gustaría obtener algún tipo de huella digital del software/hardware en una PC para que puede permitir que la aplicación se ejecute solo en ciertas PC's.Cómo obtener una firma única de hardware/software desde una PC de Windows en c/C++

Soy consciente de que la aplicación se puede descifrar, pero estoy realmente interesado en implementar algo como esto.
¿Alguna idea de cómo puedo lograr esto?

+0

Nota: se ha agregado una etiqueta de protección contra copia – newgre

Respuesta

10

Básicamente depende de qué tan apretado desee acoplar su software al hardware subyacente. Por ejemplo, podría obtener información de hardware del registro, leer la dirección MAC de la tarjeta LAN, recuperar el fabricante de gfx, la id. De la CPU, etc. y analizar todos estos datos.
Puede utilizar este hash como un código challenge que se envía a su empresa. El cliente luego recibe la versión firmada (con su clave privada) de este hash.
Al iniciar su aplicación, puede verificar si la firma del hash es buena o mala (es decir, ha sido firmada por su empresa).
Esto no solo ata el software a una cierta configuración de hardware, sino que también obliga a los crackers a parchear la aplicación (porque necesitarían parchar la clave pública de su ejecutable y reemplazarla para escribir un keygen). Muchas personas consideran dos veces instalar una grieta obtenida de varias fuentes, en contraste con simplemente ingresar una copia en serie válida de un keygen.

Editar:
Con el fin de comprobar la firma del hash, nada de RSA sobre DSA a ECC se puede utilizar. Puedo recomendar Crypto++ o libTomCrypt para eso.

0

No hay una manera confiable de hacerlo en una PC vanilla; la gente lo ha intentado por años. El problema es que puede cambiar cualquier componente en cualquier momento, incluida la CPU y las ROM de la BIOS. Las personas más cercanas que han venido están usando un "protegido criptográficamente" dongle "pero eso ha probado ser insatisfactorio en el funcionamiento y no muy seguro.

Si se te ocurre algo, patentarlo; sería muy valioso

0

Como han dicho los demás, no hay nada perfecto para lo que quiere. Hice un intento poco entusiasta de un problema similar y terminé con una combinación de ID de volumen de unidad (no es bueno porque se puede reformatear) y la clave de sistema operativo (desde Windows).

Al final no pasé mucho tiempo en ello, como si la gente realmente quisiera descifrar su software, probablemente lo puedan hacer. Dejé la "protección" de las licencias dinky, pero es bastante pobre.

Dedique el tiempo/esfuerzo en hacer que quieran comprarlo haciéndolo sobresaliente.

Cuestiones relacionadas