2008-11-03 11 views
14

Quiero crear una clave de licencia, ¿qué algoritmo de criptografía recomendaría?¿Criptografía .NET para claves de licencia?

Básicamente las entradas serían:

nombre de la empresa
importante número de versión
fecha de creación
fecha expirey
tiene feature1:
tiene característica2:
tiene feature3:

por ej. Acme Inc 5,0 20081102 20081102 0 1 0

relacionadas: Which built-in .NET cryptography algorithm is the most secure?

+0

Hay preguntas relacionadas en SO: http://stackoverflow.com/questions/79064/cryptography-algorithm y http://stackoverflow.com/questions/179220/best-cryptography-algorithm y http: // stackoverflow. com/questions/258721/which-built-in-net-crypotgraphy-algorithm-is-the-most-secure –

+1

¿Por qué se cerró esto? Las otras preguntas no responden a esto y la otra pregunta de ASDFdotASPX fue mucho más general. –

+0

Reabierto. Es similar, pero no duplicado, a los enlaces que proporcioné. –

Respuesta

7

Si usted está haciendo la validación en el lado del cliente, que desea usa cifrado asimétrico De esta forma, no tiene que distribuir la clave privada al cliente. Generaría una firma RSA usando SHA-256 y una clave de 2048 bits. Si lo hace, las operaciones criptográficas no serán el enlace débil. Un cracker podría, por supuesto, cambiar el código para omitir el paso de verificación, pero ningún algoritmo criptográfico lo ayudará.

Si está haciendo la validación del servidor, elegiría un HMAC basado en SHA-256.

10

Recomendaría: No dedique demasiado tiempo a proteger sus llaves. Con los idiomas compilados en bytes es muy fácil de descompilar y simplemente hacer que la aplicación omita el paso de validación. No importa cuán seguras sean sus claves, no importan cuando su función de validación siempre sea verdadera. Las claves en serie están ahí para mantener a la gente honesta honesta.

+0

Ha, ha, ha, "*** very easy ** para descompilar y simplemente hacer que la aplicación omita el paso de validación *". Ya que es muy fácil, adelante, agréguelos la última versión de HP Loadrunner, o la última versión de [Burp Suite] (https://portswigger.net/burp/download.html) y muéstrenos que es ** muy fácil * * para hacerlo. Un blogpost como prueba sería suficiente, por ejemplo [aquí hay uno para una (muy) vieja versión de Burp Suite] (http://blog.nibblesec.org/2013/01/anti-debugging-techniques-and-burp-suite .html). La pregunta ** real ** es, ¿cuántos programas valiosos ha invertido ingeniería? – Pacerier

+0

"* Las llaves en serie están ahí para mantener honestas a las personas honestas .. *" ** Incorrecto **. La gente honesta no necesita claves de serie para ser honesto, un mensaje como "no use esta característica a menos que me pague primero" sería suficiente. ** Las llaves en serie están ahí para mantener a la gente deshonesta honesta. ** Deshonesto, pero * barato *. [La seguridad es un problema de economía] primero (https://www.google.com/search?q=economics+of+security), luego un problema tecnológico. – Pacerier

0

Si desea ver un ejemplo de cifrado Triple DES, puede consultar my blog post al cifrar datos en una base de datos.

La publicación del blog contiene un video y el código fuente.

Aunque se centra en el cifrado de columnas de cadena en la base de datos, definitivamente puede modificarlo para que funcione con campos de licencia.

El código fuente está escrito en C# y utiliza algoritmos Triple DES.

1

que tiene que hacer 4 cosas:
No 1: Suma de control de su aplicación (MD5, con un contexto MD5 personalizado)
- contexto MD5 necesita ser encryptedly inicializado
- Comparar los agains de clave pública/cifrado suma de comprobación privada
segmento de texto de suma de comprobación de tu aplicación en ejecución
No 3:: nº 2 de encriptación clave uso de 4096 bits RSA privada-pública para la licencia
No 4: Cifrar cualquier cadena cruciales, como "clave incorrecto" o "tecla ok"

+0

MD5 es un algoritmo hash roto y no debe ser utilizado – Nayef

3

Para una clave de licencia, no tiene tanto interés en encriptarla, sino en firmarla. Al firmarlo, puede validar que la fecha de caducidad y la lista de funciones habilitadas no fueron manipuladas con.No es necesario ocultar (encriptar) la clave de licencia, ya que no hay ninguna amenaza que quiera mitigar ocultando la licencia al usuario final.

Las firmas criptográficas se realizan al calcular la licencia y luego encriptar el hash con una clave privada. Como cualquiera puede descifrar ese hash usando la clave pública correspondiente, cualquiera puede verificar si la licencia fue manipulada.

La función básica de CryptoAPI para firmar y verificar es CryptSignHash y CryptVerifySignature, consulte Example C Program: Signing a Hash and Verifying the Hash Signature.

El equivalente de .Net Framework son las clases RSAPKCS1SignatureFormatter y RSAPKCS1SignatureDeformatter.

Cuestiones relacionadas