viernes, marzo 30, 2007

MundoJava se pone la gorra

Aunque soy un agradecido de todo lo que sea open-source y mis búsquedas de librerías las haga siempre en SourceForge, hoy me pongo la gorra de policía y presento una API para manejar licencias: JLicense.
Lo cierto es que siempre nos toca desarrollar una aplicación que necesita manejar licencias, generalmente para poder brindar una versión "demo" a nuestro futuro Cliente.
JLicense nos permite crear distintos tipos de licencias para empaquetar nuestra aplicación sin necesidad de crear claves y comprobaciones manualmente. Nos sirve cuando estamos apurados por completar esa parte del soft, pero por otro lado, nos perdemos toda la diversión de explorar la el paquete java.crypto y java.security (lo tengo como una materia pendiente).
Para explicar en detalle el método que utiliza JLicense para generar la licencia, debería tener una larga charla con mi amigo Dr. Crow, quien me ha avivado muchas veces con problemas de seguridad y la tiene más clara, pero en esta ocasión, me limitaré a dar las bases.

JLicense utiliza el algoritmo DSA (criptografía asimétrica) para generar 2 claves (una pública y otra privada). Para generarla podemos utilizar la aplicación createDSAKey aunque aquí aparece la primera desventaja: JLicense no es open-source. Pero, el binario se puede utilizar gratuitamente. El problema está en que deberíamos modificar un archivo de código fuente para poder utilizar nuestra clave pública.

Si queremos generar una licencia, podemos utilizar la utilidad createLicense (línea de comandos) o podemos utilizar la clase LicenseTool. Esto nos genera un archivo license.lic, que deberemos empaquetar con nuestra aplicación.

Por último, deberemos incorporar a nuestra aplicación, las librerías: com.websina.license y com.websina.util y NADA MÁS (a menos que le dejemos una backdoor a cualquier cracker).
Y en nuestro código:

LicenseManager manager = LicenseManager.getInstance();
boolean valid = manager.isValid();


Y listo, validamos. Pero, amigos, al final de todo, nunca nada es completamente seguro, sin mencionar la facilidad de decompilación del código Java. Sin embargo, es una buena herramienta para practicar y lograr resultados rápidamente.

Saludos

2 Comments:

At 1:27 p. m., Blogger Juan said...

Muy bueno el blog.
Y gracias por dejarme usar tu capacidad de resumen! (El PDF de annotations me sirvio mucho)
Saludos!

 
At 6:42 p. m., Blogger Pablo Frias said...

Juan:

De nada, me alegra mucho que te haya servido.

 

Publicar un comentario

<< Home