Al menos en un algoritmo de cifrado de clave pública típico (por ejemplo, RSA) no existe realmente una gran diferencia entre la clave pública y la privada. Cuando genera claves, obtiene dos claves.Usted mantiene una privada y publica la otra, pero no importa mucho cuál publique y cuál mantenga privada.
Cualquier cosa que cifre con una clave se puede descifrar con la otra tecla. Para fines normales, publica una clave, que permite a cualquier persona encriptar algo que solo usted puede descifrar. Desde un punto de vista técnico, el reverso funciona bien: si encriptas algo con tu clave privada, cualquiera que tenga la clave pública puede descifrarla. Esto normalmente se usa para cosas como la verificación de firma (es decir, cualquier persona con la clave pública puede verificar que la firma tuvo que haberse creado con la clave privada). Sin embargo, normalmente quiere usar pares de claves separadas para el cifrado y la firma.
Para su caso, está abierto a algunas preguntas lo que realmente va a lograr. Ciertamente puede encriptar algunos datos necesarios para usar el programa, por lo que el usuario necesita la clave para descifrarlo y usar el programa, pero si el usuario está dispuesto a dar una copia del código a una persona no autorizada, es probable que gane 'dude en darles una copia de la clave también. Como tal, a pesar de que el cifrado/descifrado hará su trabajo, es poco probable que brinde una protección real.
Un sistema de licencias más típica está ligada a algo así como una dirección IP específica, por lo que algo así como el cifrado de la dirección IP, a continuación, utilizar el resultado como una clave para descifrar los datos necesarios para utilizar el programa. Si la dirección IP es incorrecta, los datos no se descifrarán correctamente y el programa no funcionará. Siempre que el usuario tenga una dirección IP estática, esto puede funcionar bien, pero causará problemas junto con DHCP.
Mi consejo inmediato sería simplemente no hacer esto en absoluto. Si insiste en hacerlo de todos modos, no lo haga usted mismo, obtenga algo como FlexNet para manejarlo por usted. Es mejor sin él, pero al menos de esta manera obtendrás algo que tipo de funciona, y no perderás tiempo y esfuerzo en ello que podría ser mejor para mejorar tu software.
Esto está mal. Para el cifrado asimétrico, encripta con la clave pública del destinatario. –
@Matthew No dije lo contrario. Dije que no * debería * estar distribuyendo su clave privada. – Kevin
entonces en mi caso, ¿qué debería estar haciendo? Suponiendo que utilizaré la misma clave pública y privada para todos los clientes. – jax