cerrar-sesion editar-perfil marker video calendario monitor periodico fax rss twitter facebook google-plus linkedin alarma circulo-derecha abajo derecha izquierda mover-vertical candado usuario email lupa exito mapa email2 telefono etiqueta

Protección de código: llaves HASP SRM

Escrito por Redacción en Programación
2 comentarios Haz tu comentario
Imagen de logotipo de facebook Imagen de logotipo de Twitter Imagen de Logotipo de Google+ Imagen de logotipo de Linkedin

Hasp SRM es la única solución todo en uno, basada en hardware y software. La tecnología para la protección y distribución del software más avanzada del sector que le permitirá incrementar sus beneficios al protegerlo contra las perdidas resultantes de la piratería, ya que al mismo tiempo hace posible implementar nuevos modelos comerciales que aumentarán el valor de sus productos. Hasp SRM protege la propiedad intelectual para reforzar su ventaja competitiva y, al mismo tiempo, se integra en su organización y en el ciclo de vida de sus productos para incrementar el margen.

El diseño de Hasp SRM se basa en el concepto”Protect Once- Delivery Many” (proteja una vez y distribuya). La exclusiva e innovadora tecnología Cross-Locking de Aladdin permite a los responsables de la toma de decisiones de las empresas elegir y aplicar modelos de licencias y llaves de protección de Hasp SRM después de que el software haya sido protegido por los ingenieros.

HASP SRM emplea el algoritmo de cifrado AES de 128 bits. Este algoritmo crea un resistente vínculo entre la aplicación de software y la llave de protección de HASP SRM (que evita la piratería del software y garantiza el uso autorizado del software). Durante el tiempo de ejecución, el software protegido envía cadenas cifradas a la llave de protección (HASP HL o HASP SL), que descifra las cadenas y produce una respuesta que no se puede imitar. Si la respuesta de la llave de protección es correcta, la aplicación se ejecutará, y si la llave de protección no se encuentra presente o la respuesta de la llave es incorrecta, la aplicación no se ejecutará. (Figura 1).

En el kit Hasp SRM, encontramos una pequeña guía o tutorial, la cual nos va a permitir asimilar rápidamente el concepto y variantes del producto; esto incluye una llave Hasp SRM de demostración, la cual está diseñada para que podamos realizar cualquier proceso con todas y cada una de las aplicaciones que incluye la solución Hasp SRM.

Observaremos que instalando el software, nos incorpora un motor de Base de datos SQL 2005 Express, que será de gran ayuda a la hora de organizar clientes, productos, pedidos distribuidos, pendientes, etc… También incluye un paquete de aplicaciones, denominado “Vendor Suite” (Figura 2), que incluye:

– Hasp SRM Envelope: Protege automáticamente la aplicación con un escudo de protección que incorpora medidas contra la ingeniería inversa y la depuración a nivel de sistema, así como para el cifrado de archivos y ofuscación de códigos posibilitando la distribución automática de licencias sin necesidad de acceder al código fuente.

– Hasp SRM Business Studio: permite preparar el software para el mercado. Incluye todas las herramientas necesarias para distribuir adecuadamente las licencias e implementarlas en su aplicación.

– Hasp SRM ToolBox: Utilidad basada en interfaz gráfica del usuario, que le permitirá familiarizarse con la API de tiempo de ejecución de Hasp SRM y generar código para incluirlo en el código fuente directamente.

– API: Librerías personalizadas para cada código de cliente, que nos permitirán hacer más versátil nuestra protección, puede ser combinada con la protección automática Envelope (recomendado).

Ahora vamos a entrar más en profundidad a analizar la solución que nos propone Aladdin.

Primeramente nos vamos a centrar en la configuración de la llave internamente, es decir, indicarle a la llave (hardware o Software) el tipo de producto, o licencia que vamos a introducir en la misma, los distintos tipos de licencia se podrían clasificar en:

– Alquiler

– Temporales

– Perpetuas

– Tiempo

– Red

– Ejecuciones

Nos dirigimos a la suite de aplicaciones (vendor suite) de Hasp SRM, y seleccionamos la utilidad Business Studio, que nos solicitará una serie de parámetros como usuario, password, dirección del servidor, y puerto por el cual va a existir la comunicación. Me parece adecuado comentar que el Servidor Business Studio, puede estar alojado en cualquier equipo de la red y la utilidad Business Studio en las estaciones de trabajo que deseemos, indicándole lógicamente a la hora de realizar el login, la dirección de la máquina que va a contener el servidor de licencias. (Figura 3).

Una vez que hemos accedido a la aplicación, observamos que en la parte izquierda existe una clasificación de las diferentes etapas o secciones por las que debe de pasar un producto, desde su fase de diseño hasta su fase de producción. (Figura 4).

Primeramente vamos a crear una nueva “Feature”, en la sección de “Manage Features ‘ New Feature”, esta feature que vamos a crear, será la referencia para nuestra protección; le indicamos el nombre que va a llevar, en nuestro ejemplo “ISV_Test” que tendrá el número 4, también nos permite indicarle una breve descripción sobre la referencia interna que le queramos asignar, en nuestro ejemplo “esto es una prueba de ISV” (Figura 5).

Aceptamos, y vemos que nos ha creado la característica con los parámetros indicados. Una vez que tenemos creada la referencia para nuestra protección, nos dirigimos a la sección de “Manage Products” y le indicamos que queremos crear un nuevo producto base (New Base Product). Le indicamos el nombre que deseamos darle, en nuestro caso “Producto_ISV” . Al igual que en el paso anterior, nos permite indicarle una descripción acerca del producto que vamos a crear.

En la sección de Features & Memory, podemos observar que aparecen listadas, las features que trae por defecto el sistema y lógicamente la que hemos creado en el proceso anterior (ISV_Test), también observamos en la misma sección que existe una pestaña, con el nombre “Define Memory Data”, esta opción nos permite escribir, cualquier dato que deseemos directamente en la memoria de la llave, estos datos pueden ser utilizados desde código fuente o bien incluir por ejemplo el nombre de la empresa a la que va ir destinada nuestro software.

Continuando sobre nuestra prueba, en la pestaña “Select Features”, movemos la nuestra a la parte derecha, para incluirla en el producto que estamos creando. Una vez que la tenemos posicionada, definimos los términos de la licencia, mediante el botón “define” y accedemos a determinar los términos de licencia, donde podemos observar que existe un desplegable donde nos ofrece varias opciones de licencia (Figura 6):

Ejecuciones. Licencia limitada a un número de ejecuciones.

Fecha de Expiración. Licencia limitada respecto a una fecha determinada.

Perpetúa. Licencia que va a poder ser ejecutada permanentemente.

Periodo de Tiempo. Licencia limitada a un número determinado de días.

Justo en la parte inferior, podemos observar que existe otra sección denominada “Concurrency”, esta serie de opciones están dedicadas a definir, como se va a comportar nuestra aplicación en un entorno de red (únicamente para llaves de red), es decir, aquí podemos indicarle valores como el número de puestos que van a poder acceder simultáneamente a nuestra aplicación, como se va a contabilizar esta concurrencia, bien por Login, proceso o por estación de trabajo; por último existe otra sección denominada “Accessibility”, la cual nos va a permitir configurar si nuestra aplicación va a poder ser ejecutada en un entorno de escritorio remoto. También para las licencias de red podemos indicarle que únicamente se ejecute a través de la red, sólo mediante escritorio remoto, o ambas combinaciones.

Para nuestro test, le vamos a configurar un tipo de licencia perpetua, aceptamos, y regresaremos a sección anterior, donde estábamos creando nuestro producto, donde habiendo configurado los términos de licencia, aceptamos y vemos que nos ha creado nuestro producto.

Hemos finalizado, la fase del plan de licenciamiento; ahora nos falta plasmar, todo lo que hemos creado, físicamente en la llave; esto lo realizaremos en la fase de producción, donde únicamente tendríamos que seleccionar dentro del apartado “Manage Orders” new Production order, donde existe la posibilidad de asignar la llave que vamos a grabar a un determinado cliente. Esta vinculación nos permitirá tener una fuente adicional de información, en cuanto a las aplicaciones o módulos que nos ha adquirido y/o en el caso de que el cliente necesitara una actualización, únicamente tendríamos que crearla y enviársela directamente.

Continuando con nuestro ejemplo, en la parte principal, añadimos nuestro producto mediante la opción “add” , y es agregado a la lista de producción, en la parte inferior observamos que existe la posibilidad, de indicarle al sistema el número de llaves a producir, para nuestro ejemplo una; y ya sólo nos queda ejecutar mediante el botón “produce now”, donde nos aparece en una nueva ventana, los diferentes tipos de llave que son compatibles con la licencia que deseamos grabar en la llave, le indicamos que grabe la orden, y tras unos segundos finaliza el proceso de producción. (Figura 7).

Una vez que tenemos configuradas las características de la licencia, y habiendo terminado la fase de licenciamiento y producción, nos restaría realizar la protección de nuestra aplicación, para este proceso podemos optar, por una protección automática, con la utilidad “Envelope” o bien mediante API, librerías que son utilizadas desde nuestro código fuente.

Para nuestra prueba, vamos a utilizar la protección automática; ejecutamos dentro del vendor suite, la utilidad “Envelope”; en la ventana que nos aparece, nos posiciona en la sección “Programs”, y en la parte derecha vemos habilitada la opción de agregar Programas (Add Programs), donde vamos a agregar nuestra aplicación, para nuestro test, la aplicación Bounce.exe. (Figura 8).

Cabe destacar que esta utilidad puede proteger, ejecutables (exe, jar) o bien dll`s. Continuando con nuestra protección, vemos que la aplicación Bounce.exe ha sido agregada, y podemos indicarle donde deseamos guardar y con qué nombre el ejecutable protegido, justo debajo, mediante la opcion “Feature ID”, le indicamos a la protección que el ejecutable va a estar protegido respecto a la característica número 4 (ISV_Test) que hemos grabado anteriormente en la llave. En esta misma ventana, vemos que existen más opciones, como el modo de búsqueda, local y remoto, local y sólo remoto, si deseamos que aparezca un mensaje de espera, cuando nuestros clientes ejecuten la aplicación, la opción “overlay support”, que tiene gran utilidad, en el caso de que nuestra aplicación necesitara, para su ejecución, un objeto externo a nuestro entorno de programación, y la última casilla de verificación (Datahasp), nos permite encriptar datos, respecto al ejecutable que estamos protegiendo, por ejemplo si tenemos un aplicación que mueve registros de un base de datos, podemos incluir como encriptación la propia BD.

En el árbol de direcciones podemos localizar, una sección llamada “protection template settings” que nos da la posibilidad de configurar parámetros, tanto para una protección win32 como para .Net, entre las que podemos destacar, detectar el modo debugger, configurar la frecuencia (segundos) con la que la aplicación va a comprobar la presencia de la llave; medidas antidebugger y medidas para evitar la ingeniería inversa, encriptación de cadenas, ofuscación de símbolos y otras medidas para aumentar la seguridad de nuestra protección. También existe la posibilidad de personalizar los mensajes de error, que mostrará nuestra aplicación, por ejemplo si no encuentra la llave conectada.

Una vez que hemos visto que existen diversas medidas para aumentar la seguridad de nuestra protección, nos posicionamos de nuevo en la sección “programs” en la aplicación agregada Bounce. En la parte principal de la ventana seleccionamos la opción “Protect”, que nos informa que la aplicación ha sido protegida correctamente. Si ejecutamos la aplicación observaremos que funciona correctamente con la llave conectada, y si la desconectamos y volvemos a ejecutar la aplicación nos muestra un mensaje que nos indica que la llave no se encuentra conectada. La siguiente verificación es conectar otra llave del mismo código, pero que no tiene grabado nuestro producto con el Id número , y en este caso nos indicaría que esa feature no se encuentra en la llave. (Figura 9 & 10).

Ahora vamos a ver el otro modo de protección que nos ofrece Hasp SRM, la protección API; para ello nos vamos a apoyar en la utilidad “Hasp SRM Tool-Box”; que nos permite generar código fuente para incluir directamente en nuestro entorno de programación. Al iniciar esta aplicación nos encontramos, que en la parte izquierda aparece un listado, con todas las funciones que podemos utilizar para proteger nuestra aplicación. Allí veremos que están seccionadas, dependiendo de la finalidad de cada una de ellas, las principales acciones que nos ofrece el API de Hasp SRM. Como son: realizar un login respecto a un feature o un id_number (identificador único de cada llave), logout, encriptar desencriptar datos, realizar actualizaciones, leer /escribir en la memoria de la llave, configurar parámetros de tiempo (llaves Hasp Time), configuración del timeout para entornos de red (llaves Hasp Net), extraer información acerca de las características de la máquina donde se ejecuta la aplicación; comprobar estado de las licencia/s,….

Continuando con el funcionamiento la aplicación Tool-Box, lo primero que debemos realizar es un Login a la llave (Figura 11), para poder acceder a las restantes funciones.

Conectamos nuestra llave y nos posicionamos en la función Hasp.Login, y le indicamos en la opción featureId el número 4 que es con el que seguimos trabajando en esta prueba, al ejecutar esta instrucción, vemos que nos ha generado el código fuente y que en el Status nos indicada que ha sido realizado con éxito. Como hemos dicho anteriormente, este código generado lo podemos incluir directamente en nuestro proyecto.

Una vez que hemos realizado el Login con éxito, vamos a realizar una encriptación y posterior escritura en la memoria de nuestra llave. Para ello nos posicionamos dentro de la sección de Encrypt/Decrypt en la función Hasp.Encrypt, nos aparece la imagen de la memoria y en la parte derecha un campo donde nos permite escribir los datos que queremos encriptar, para nuestra prueba “Esto es una prueba de ISV”, al ejecutar esta instrucción vemos que lo ha realizado con éxito, nos ha generado el código fuente y que los datos escritos ya no son legibles (Figura 12), ahora guardamos estos datos en un archivo Xml, que vamos a utilizar para grabar el contenido en la memoria, mediante la función Hasp.write dentro de la sección Memory, del árbol de funciones.

Aquí le indicamos que nos cargue nuestro Xml, una vez cargado, ejecutamos la instrucción y nos indica que la operación ha sido realizada con éxito, para comprobarlo nos posicionamos en la función Hasp.Read y al ejecutarla, efectivamente aparece nuestra información encriptada. Tras esto nos restaría obtener esos datos de una forma legible, para ello utilizamos la función Hasp.Decrypt , ejecutamos la instrucción y nos muestra nuestros datos (Esto es una prueba de ISV).

Llaves virtuales

Con lo anterior hemos visto y testeado las principales herramientas y modos de protección de la solución SRM. Ahora nos vamos a centrar en la protección software, denominada dentro de la solución, como Hasp SL. Estas llaves están diseñadas tomando como modelo las llaves HASP HL, y proporcionan la misma funcionalidad. En vez de estar basadas en hardware, las llaves HASP SL son llaves virtuales, ubicadas en el almacenaje seguro del equipo donde va a estar instalada la llave.

Dentro de la protección software, el sistema Hasp SRM, dispone de una potente herramienta de Marketing, denominada Trialware; este módulo nos permite generar versiones de demostración o de prueba, concebido para la superdistribución; mientras el acceso al software de prueba se limita a cada usuario, éste puede compartir la versión de prueba con tantos amigos o contactos como desee, y exponer sus funciones a muchos otros, que podrán probar el software durante el mismo período de prueba limitado (1-90 días). De este modo, el uso compartido ocasional de software pasa a ser una fuente de ingresos y un canal de distribución eficaz; y todo ello manteniendo segura la propiedad intelectual.

Vamos a ver más en detalle como funciona, por medio de un ejemplo, volviendo de nuevo a la utilidad Business Studio. El procedimiento a seguir es muy similar al seguido anteriormente cuando grabamos el “Producto_ISV” a una llave HL (hardware). Creamos una nueva feature llamada “SL_ISV” con el número 2; seguidamente en la sección de Manage Products creamos un nuevo producto base, y le damos un nombre a nuestro nuevo producto “Producto_SL_ISV_”; en el desplegable “locking type” seleccionamos Hasp SL y observamos que la casilla de verificación “Clone Protection” se habilita y aparece marcada por defecto, con esta opción en el sistema SRM puede detectar si la licencia de nuestra aplicación se está ejecutando en una máquina clonada; en la parte izquierda donde aparecen las features seleccionamos la número 2 (“SL_ISV”) y la llevamos a la parte derecha, los términos de licencia lo dejamos según aparece en “Perpetual”, aceptamos y nos crea nuestro producto, seguidamente creamos un nuevo producto provisional basado en el creado anteriormente, mediante la opción “New Provisional Product”, y vemos que nuestra feature número 2 ya se encuentra en la parte derecha, le damos un nombre al producto “Provisional_ISV” ; en los términos de licencia nos indica que el producto provisional va a expirar a los 30 días. Podemos configurar este parámetro entre 1 y 90 días, para nuestro ejemplo le vamos a indicar 15 días, y aceptamos.

De esta forma tenemos creado un producto Base (Producto_SL_ISV) que será utilizado para generar la licencia perpetua, una vez que nuestro cliente haya testeado nuestra aplicación y nos solicite nuestra versión definitiva. Por otro lado hemos creado un producto Provisional (Provisional_ISV) que será utilizado para generar la versión Trialware o Demo de nuestra aplicación. Ahora nos centraremos en la generación de esta última, para ello, dentro de la sección de Producción seleccionamos “Development Task” y ahí “Bundle Provisional Product”. Agregamos nuestro producto (Provisional_ISV ), los producimos y nos solicitará una ruta donde guardar la información. Los añadimos a la carpeta creada para esta prueba y aceptamos. En la misma sección, vamos a generar nuestra llave virtual, mediante un mediante la opción “Generate RTE Installer”, donde nos solicita el archivo v2c creado en el paso anterior y una ruta donde guardar nuestro RTE.

Una vez que tenemos creada nuestra licencia Provisional, nos falta proteger nuestra aplicación con los términos indicados en la creación de nuestros productos. En la aplicación Hasp SRm Envelope añadimos nuestro ejecutable, le indicamos que guarde el ejecutable protegido en nuestra carpeta, le indicamos en Feature_ID el número 2 (SL_ISV), y lo protegemos. Con lo cual ya tenemos nuestra herramienta de marketing lista para distribuir y ejecutar. Para ello lo primero que hacemos es ejecutar el RTE en la máquina donde se va instalar la licencia provisional. Una vez instalado, ejecutamos la aplicación que hemos protegido y veremos que se ejecuta sin problemas. Para comprobar que todo ha sido instalado bajo las condiciones que le hemos indicado, abrimos nuestro navegador y escribimos \\localhost:1947 y accedemos la página “Admin Control Center”, que es una utilidad de gestión de licencias de usuario final basada en Web, que puede personalizarse y que permite el seguimiento centralizado de aplicaciones con licencia de HASP SRM y la administración de HASP License Manager y de las llaves de protección de HASP SRM. La utilidad Admin Control Center proporciona una vista de consola única de todas las licencias y servidores de licencias de la empresa. Lo cual permite que un solo administrador del sistema gestione y mantenga las licencias de aplicación protegidas y otorgadas por HASP SRM de forma eficaz. Admin Control Center permite a los administradores ver, en tiempo real, qué licencias están en uso y quién las utiliza. Esto facilita la determinación y solución de los problemas de disponibilidad y cumplimiento de las licencias.

Dentro de esta aplicación seleccionamos Hasp Keys y vemos que nos ha creado una llave SL con un ID que es único. Esto nos será de utilidad para futuras actualizaciones de los términos de licencia, en ese equipo. En Features dentro de nuestra llave vemos que aparece nuestra feature número 2 activa y con 15 días de licencia.

Nos falta convertir nuestra licencia Provisional en perpetua. Así que dentro de la sección de producción y en Manage Orders, le indicamos crear una nueva orden de producción, seleccionamos nuestro producto (Producto_SL_ISV), y lo producimos. Entonces nos solicitará una ruta donde guardar la clave del producto (Product_Key), que es la clave que le debemos enviar a nuestro cliente para que active su licencia perpetua, mediante una pequeña aplicación de activación. Realizado este proceso volvemos a la utilidad Admin Control Center y vemos que nuestra licencia número 2 ha cambiado su estado a perpetua, con lo cual ya disponemos de la versión final de nuestra aplicación.
Como se ve, contando con las herramientas adecuadas, lo que podría ser un complejo sistema se reduce a conocer unos pocos pasos para usar un potente sistema de protección adecuado para virtualmente todo tipo de necesidades, tanto comerciales como de demostración. Y así preservar la propiedad intelectual de los programas con gran eficacia. 

Julio César Domínguez, Ingeniero de Preventas y Soporte Técnico de Software DRM en Aladdin. www.aladdin.es


Aladdin Knowledge Systems Ltd. (NASDAQ: ALDN) es una multinacional líder en la gestión de derechos digitales (DRM), La autentificación de usuarios mediante dispositivos USB y la seguridad de contenidos web.
Con más de 30.000 clientes en todo el mundo, los productos de Aladdin incluyen: eToken™, el mejor dispositivo USB para la autentificación de usuarios; la línea de productos eSafe®, que garantiza la protección más avanzada contra ataques y amenazas de Internet; y HASP®, la mejor forma que tienen los programadores y distribuidores para proteger la propiedad intelectual, mejorar las ventas y reducir las pérdidas por piratería. Aladdin dispone de 14 oficinas repartidas por todo el mundo y una amplia red de empresas colaboradoras. Además, ha recibido numerosos premios por su innovación.

Etiquetas

Noticias relacionadas

Comentarios
  • Vicente Zarate 11 abril, 2013

    Saludos felicitado por su excelente articulo, solamente una duda tengo una llave hasp la cual trabaja con un programa que tiene licencia mono usuario, lo que me lleva ha estar cambiando la llave de maquina cada vez que necesito utilizar el programa aunque este es en red. se puede configurar el License Manager para que la aplicación lea la llave hasp desde el servidor, entendiendo que solo podre utilizar el sistema 1 a la vez.

  • Gabriel Torres V. CEO. GT y Cia. ltda 8 octubre, 2013

    SOMOS USUARIOS DE LAS LLAVES ALADIN POR MAS DE 17 AÑOS NECESITAMOS SABER SI SE PUEDE PROTEGER SOFTWARE DESARROLLO PARA WEB, UTILIZAMOS C## CON PLATAFORMA .NET CON MOTOR BASE DE DATOS SQL.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Debes haber iniciado sesión para comentar una noticia.