2009-02-17 6 views
7

Estoy trabajando en una aplicación que me gustaría vender algún día, ¡más temprano que tarde! Me gustaría desarrollar un esquema de número de serie razonablemente simple para protegerlo.¿Cuál es un buen enfoque para desarrollar un simple generador/verificador de números de serie?

  • Una simple combinación de números/letras no más de 25-30 caracteres alfanuméricos (piensa claves de producto de Microsoft)
  • no requiere que el usuario introduzca información personal (como una dirección de correo electrónico) como parte de la verificación

He estado pensando en esto (muy poco), y creo que la criptografía de clave pública es un buen lugar para comenzar. Podría generar una cadena que identifique la licencia (como el número de serie integral SKU + plain ole), codificarla, encriptarla y codificar el número de serie + identificador en una clave alfanumérica de 25 dígitos (más o menos). La aplicación decodificaría la clave en un número de serie y "firma", generaría un hash identificador, descifraría la "firma" utilizando una clave pública correspondiente y la compararía con el hash identificador generado.

Básicamente, la clave del producto contiene dos datos: el número de serie que el usuario declara poseer y una especie de firma que el programa puede usar para verificar esa afirmación. No sé si 25 caracteres alfanuméricos (que codifican 5 bits cada uno para un total realista de 120 bits) son suficientes para todo esto. Pero no tiene que ser criptográficamente seguro, lo suficiente como para que los códigos no sean fáciles de adivinar. Estoy bien con longitudes de clave cortas y hashes cortos.

En lo que va aplicación, la aplicación está escrito en Objective-C para Mac OS X, pero teniendo en cuenta lo fácil que es para inyectar código en aplicaciones Cocoa, probablemente voy a escribir el código de verificación en C. recta

Respuesta

9

No usaría ninguna criptografía fuerte, ya que tiene que descifrarla en el programa de todos modos, haciendo que los keygens o al menos las grietas sean fáciles de hacer.

Haría lo siguiente: tome, por ejemplo, un número de 25 dígitos. Ahora agregue algunas reglas, tales como: - número debe ser divisible por 31 - debe empezar y terminar con la última letra ...

generan siempre teclas usando estas reglas. Use 20 reglas o más (más, mejor). Al implementar la aplicación, use un número menor de reglas, p. 10 para verificar si la clave es válida. Estas reglas se desmantelarán y se usarán para crear keygen.

En cada actualización habilite una de las reglas que no utilizó antes. Si las reglas se seleccionan correctamente, deshabilitará la mayoría de las claves generadas por keygens.

+0

¿Cómo sería la criptografía más fácil de descifrar? Cualquier método que utilizo para verificar la clave se puede descifrar, entonces ¿qué hace que la criptografía sea más vulnerable? ¿Cómo escribirías un generador para números que cumplan con tantas reglas? Parece que sería difícil de hacer. – Alex

+0

@Alex: los algoritmos criptográficos se implementan generalmente en bibliotecas estándar (nunca debe implementar su propia implementación de cifrado a menos que realmente sepa lo que está haciendo). Su código contiene clave privada, por lo que los crackers solo necesitan obtener eso, no es necesario revertir el código del ingeniero. – bh213

1

Me gusta el método de @ bh213, pero no evitará que se arreglen las llaves al actualizar las reglas de su número de serie.

En una nota de preferencia más personal, prefiero el generador de claves basado en un método de conjunto de reglas porque si los piratas informáticos tienen que parchar un binario, puede obtener una mala revisión de su software debido a un parche de pirata y el consiguiente batalla entre usted y los piratas informáticos.

Mi preferencia se basa en una verdad de software universal: El software puede ser pirateado si es lo suficientemente popular, no existe un esquema, ningún método ingenioso que evite que esto suceda. Esta batalla es entre el desarrollador que tiene recursos limitados y tiempo limitado y un grupo de piratas informáticos con tiempo ilimitado en sus manos.

Su esquema de generación de claves es realmente solo para mantener honestos a los clientes honestos: es más fácil obtener un cheque de Cuentas por Pagar que obtener que la Seguridad firme en un generador de claves.

+0

Cualquiera que revise el software con una copia descifrada probablemente no sea el tipo de persona que atraería clientes de pago de todos modos, ¿verdad? Pero estás en lo correcto. Cualquier esquema será eludido. Es un hecho de la vida.Intento no agobiar indebidamente a los clientes honestos. – Alex

1

Como Redbeard 0x0A es correcto, las claves de CD son para mantener honestos a los clientes honestos. Simplemente debe ser un poco menos difícil comprar su producto que encontrar un keygen.

Si está vendiendo su producto en línea, entonces la mejor manera de hacerlo es darles un archivo que contenga el número de serie. De esta manera, el número de serie puede ser el tiempo que desee y sus clientes que pagan no tienen que perder tiempo ingresando una serie.

Un esquema de serie puede ser muy simple:

  1. tener un gran espacio en serie (25 alfanumérico es de aproximadamente 10 , pero sólo tiene que utilizar un archivo de serie y hacer 80 de char x 16 filas de una clave espacio de 10)
  2. Seleccionar algunas reglas para reducir el espacio número de serie válido a 100 veces más de lo que cree que va a vender en sus sueños más salvajes

Si su producto tiene una componente en línea (como cómo los juegos tienen multijugador en línea), puede reducir números de serie válidos usando un generador de números aleatorios criptográficamente fuerte (para seleccionar un subconjunto de las claves basadas en reglas, reglas de productos para verificar serie, servidor usa la lista de series verdadera final) . Cuando su producto solicita el servicio de su servidor, el servidor puede verificar el serial.

+0

No, no hay un componente en línea. No me gustaría ir a la ruta del archivo de licencia porque parece demasiado engorroso. Creo que una clave es con lo que la gente está familiarizada y también la más fácil. Como dijiste, tiene que ser más fácil comprarlo que crackearlo. – Alex

1

Todas las reglas, ya sea desarrolladas a medida o basadas en cifrado, se pueden descubrir y descifrar. Piensa para quién estás creando tu solicitud. Muchos de mis productos son para empresas, de modo que lo van a comprar o no lo harán. Por lo general, no van a ejecutar una versión pirateada en sus redes. No es probable que las personas que buscan un keygen compren tu producto independientemente. Solo quiere asegurarse de no molestar a su cliente hasta el punto en que ya no quiera comprar su aplicación.

Dicho esto, he escrito una biblioteca para este tipo de cosas para usar en mis aplicaciones basadas en el cifrado AES. Lo estoy vendiendo por $ 25, y usa una frase de contraseña y una sal para hacer que su número de serie sea único. Si está interesado, puede encontrarlo aquí: http://simpleserials.com

0

Hay una publicación de blog en sigpipe.macromates.com que explica cómo usar la clave criptográfica privada/pública para verificar un número de serie. Puede verificar que el usuario y el número de serie coincidan. (Firmando/Verificar). Probablemente agregue algo de sal, solo para estar seguro.

Como esta publicación es de 2004, debe considerar la longitud de la clave recomendada en keylength.com.

Cuestiones relacionadas