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
¿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
@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