114

HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

  • Upload
    lediep

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante
Page 2: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

HARDkey NETSistema de Protección de Software y Datos

SITEPRO S.A.

HARDkey es un sistema integral de protección de software,datos, administración de licencias y protección para Internet.

Está basado en llaves electrónicas de hardware, usado pordesarrolladores y distribuidores para prevenir la ejecución ylos accesos no autorizados al software protegido.

Page 3: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

Copyright 2001-2007. SITEPRO S.A.Todos los derechos reservados.

Ninguna porción de este manual puede ser transcripta, fotocopiada, reproducida, transferida o almacenada en unsistema de información de cualquier tipo, sin la previa autorización escrita de SITEPRO S.A.

El uso del siguiente manual y/o sus productos asociados para cualquier otro fin distinto al que fueron diseñados,queda exclusivamente bajo responsabilidad del cliente y elimina automáticamente todo derecho a reclamo, como asítambién la garantía de los mismos.

Consideraciones Generales

Copyright

Reseña Histórica:

SITEPRO S.A. es la división de Seguridad Informática del GrupoIntelektron, empresa líder de tecnología con más de quince años detrayectoria en el desarrollo y fabricación de dispositivos para protecciónde software. En nuestra cartera de clientes se encuentran las empresasdesarrolladoras de software más importantes de Argentina y Uruguaycon un parque instalado de más de 200.000 protectores.Nuestrosproductos fueron evolucionando a la par de las interfaces,computadoras, sistemas operativos y redes que aparecían en el mercado.Desde nuestros primeros modelos que funcionaban en ambiente DOS,pasando por las redes Novell y Windows para trabajo en grupo, hasta lossistemas operativos actuales de 32 bits, Internet y redes TCP/IP. Por esosabemos lo que hacemos y conocemos sus necesidades para las cualestenemos la solucion que necesita.Para más información sobre nuestraempresa y otros productos dirigirse a www.sitepro.com.ar

Sitepro S.A.

Page 4: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

Tabla de Contenidos

Prefacio 1

Part I Introducción al sistema deprotección 3

Part II Introducción 5

................................................................................................................................... 51 Contáctenos

................................................................................................................................... 52 Novedades

................................................................................................................................... 63 Componentes del kit

................................................................................................................................... 64 Garantía del Software

Part III Sistema de Protección HARDkey 9

................................................................................................................................... 91 Técnicas de Protección

......................................................................................................................................................... 9Protección contra copias

......................................................................................................................................................... 9Control por fecha de vencimiento

......................................................................................................................................................... 10Control de ejecuciones

......................................................................................................................................................... 10Control de licencias en red

......................................................................................................................................................... 10Protección de datos por cifrado on-line

......................................................................................................................................................... 11Protección para aplicaciones de Internet

................................................................................................................................... 112 Componentes del sistema de protección

......................................................................................................................................................... 11El kit de software

......................................................................................................................................................... 12La llave electrónica de habilitación

......................................................................................................................................................... 12La llave programadora

................................................................................................................................... 133 Una llave para toda la red

......................................................................................................................................................... 14Control del número de licencias

Part IV Llaves electrónicas de habilitación 17

................................................................................................................................... 181 Características y tipos de interfaz

......................................................................................................................................................... 18Llaves HARDkey para puerto USB

......................................................................................................................................................... 18Llaves HARDkey para puerto paralelo

......................................................................................................................................................... 19Estructura interna de la llave

................................................................................................................................... 222 Instalación del protector en la computadora

......................................................................................................................................................... 23Protectores para puerto USB

......................................................................................................................................................... 24Protectores para puerto paralelo

................................................................................................................................... 253 Cómo personalizar las llaves para su kit

Part V Cómo proteger su aplicación 27

................................................................................................................................... 271 Protección automática de ejecutables para Windows

................................................................................................................................... 282 Protección de aplicaciones para Internet

......................................................................................................................................................... 29Entorno de desarrollo

......................................................................................................................................................... 30Cómo registrar el componente ActiveX (lado cliente)

......................................................................................................................................................... 30Configuración del browser

......................................................................................................................................................... 32Funcionamiento de la página protegida (lado servidor)

......................................................................................................................................................... 35Código del Ejemplo Asp

HARDkey - Manual para DesarrolladoresI

© 2007 - SITEPRO S.A.

Page 5: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

................................................................................................................................... 393 Protección de ejecutables en forma interactiva

......................................................................................................................................................... 39La función HARDkey()

......................................................................................................................................................... 40Forma de implementar la protección

......................................................................................................................................................... 41Entrenamiento de Protección Interactiva

......................................................................................................................................................... 42Ejemplo práctico de protección interactiva

Part VI Utilitarios y drivers para manejarlas llaves 48

................................................................................................................................... 481 Instalador del Servidor de llaves en Red

......................................................................................................................................................... 48Instalación del servidor de llaves en red

................................................................................................................................... 522 Instalador de drivers para llaves de Puerto Paralelo

......................................................................................................................................................... 52Instalación desde la ventana del utilitario

......................................................................................................................................................... 54Instalación de drivers en modo comando

......................................................................................................................................................... 54Consideraciones importantes

................................................................................................................................... 553 Personalización y configuración de llaves HARDkey®

......................................................................................................................................................... 55Cómo editar la memoria de las llaves HARDkey

................................................................................................................................... 564 Actualización remota de llaves HARDkey®

......................................................................................................................................................... 56Cómo funciona el utilitario de actualización remota

................................................................................................................................... 565 Cifrador manual de archivos

......................................................................................................................................................... 56Descripción del cifrado de archivos

................................................................................................................................... 576 Utilitario para diagnostico de llaves y solución de problemas

......................................................................................................................................................... 58Componentes instalados

......................................................................................................................................................... 59Prueba de llaves conectadas

......................................................................................................................................................... 61Definición de parámetros de búsqueda en red

......................................................................................................................................................... 61Solución de problemas

................................................................................................................................... 627 Esquema de distribución de llaves

......................................................................................................................................................... 62Generación de llaves distribuidor

Part VII Como compartir una llave en unared local 65

................................................................................................................................... 651 Servidor de acceso a la llave para redes

......................................................................................................................................................... 65La llave en una PC con Windows 95/98 o Me

......................................................................................................................................................... 67La llave en una PC con Windows NT/2000/2003 o XP

......................................................................................................................................................... 67La llave en un servidor Novell Netware

......................................................................................................................................................... 68La llave en un servidor Linux

.................................................................................................................................................. 69Red Hat

................................................................................................................................... 702 Administración de licencias en una red local

......................................................................................................................................................... 71Control de licencia global

......................................................................................................................................................... 72Control de licencias en sistemas modulares

Part VIII Interfaz de Programación deAplicación (API) 75

................................................................................................................................... 751 Formato de la subcadena general

................................................................................................................................... 772 Formato de la subcadena comando

......................................................................................................................................................... 81Iniciar Conexión

......................................................................................................................................................... 85Verificar Conexión

......................................................................................................................................................... 87Finalizar Conexión

......................................................................................................................................................... 89Leer Celda

IIContenidos

© 2007 - SITEPRO S.A.

Page 6: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

......................................................................................................................................................... 90Grabar Celda

......................................................................................................................................................... 91Leer Cadena

......................................................................................................................................................... 92Grabar Cadena

......................................................................................................................................................... 94Cambiar Claves

......................................................................................................................................................... 95Cifrar/Descifrar Cadena

......................................................................................................................................................... 96Configurar Modos de Chequeos

......................................................................................................................................................... 101Leer Fecha y Hora del reloj interno

......................................................................................................................................................... 102Grabar Fecha y Hora en el reloj interno

......................................................................................................................................................... 103Leer Memoria Extendida

......................................................................................................................................................... 105Grabar Memoria Extendida

Part IX Estructura del Directorio HARDkey 108

Indice 0

HARDkey - Manual para DesarrolladoresIII

© 2007 - SITEPRO S.A.

Page 7: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

Prefacio

El centro del sistema HARDkey.NET es el kit de desarrollo quepermite proteger su aplicación, "atando" el programa a una llave

electrónica de validación que habilita la licencia de uso del mismo.Dentro del kit encontrará las librerías que le permitirán proteger

software monousuario o para red con una sola llave, acceder a lamemoria interna de las mismas, cifrar bases de datos y archivos

asociados, proteger sistemas modulares, etc. También cuenta conuna serie de utilitarios para simplificar o automatizar estas tareas,

actualizar la memoria de las llaves en forma remota, realizar tareasde diagnóstico, proteger sitios de Internet, ejemplos de utilización en

diversos lenguajes, un manual totalmente en castellano, la llaveprogramadora y una llave de protección HARDkey para realizar la

implementación del esquema y distribuir su primer aplicaciónprotegida.

Se proveen también ejemplos de configuración para cada plataformade red, descripción del funcionamiento de todos los utilitarios del kit e

instrucciones para el manejo del protector a través de librerías,agilizando enormemente la tarea del desarrollador y el tiempo de

implementación.

© 2007 - SITEPRO S.A.

I

Page 8: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

1

Page 9: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

3Introducción al sistema de protección

© 2007 - SITEPRO S.A.

1 Introducción al sistema de protección

HARDkey es un sistema integral de protección de software, datos, administración de licencias yprotección para Internet, basado en llaves electrónicas de hardware, usado por desarrolladores ydistribuidores para prevenir la ejecución y los accesos no autorizados al software protegido.

HARDkey le permite al desarrollador seleccionar rápidamente, entre una amplia gama decaracterísticas de protección, las que se adapten a la filosofía de la aplicación e inclusive incorporartécnicas de protección al proyecto en la etapa de desarrollo, añadiendo seguridad e incrementando laflexibilidad de su programación.

Como elemento de validación, el sistema de protección HARDkey utiliza llaves electrónicas, pudiendooptarse por una gran variedad de opciones según sus necesidades, entre las cuales se encuentranllaves USB, llaves para puerto paralelo, llaves para redes y llaves con reloj/calendario interno.

Estas llaves cuentan con identificación, códigos de seguridad y parámetros configurados por eldesarrollador, haciendo virtualmente imposible una emulación del hardware.Adicionalmente, las llaves contienen memoria no volátil programable, que permite al desarrolladoralmacenar códigos de identificación, passwords, variables vitales, etc.

La administración de licencias que proveen las llaves de red, permiten controlar el número deusuarios accediendo al software, denegando el acceso cuando el límite de la licencia ha sidoalcanzado, con lo cual es posible implementar un esquema de licencias para aplicaciones modulares,controlando independientemente los usuarios por cada modulo de software con sólo una llave.

Page 10: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

2

Page 11: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

5Introducción

© 2007 - SITEPRO S.A.

2 Introducción

2.1 Contáctenos

Si tiene alguna duda acerca de este producto o necesita asistencia técnica porfavor no dude en contactarse con nosotros:

[email protected]

www.hardkey.netwww.sitepro.com.arwww.hardkeymio.com.ar

(54 + 11) 5500-7770 / 73(54 + 11) 4328-9177

2.2 Novedades

Nuevo Entorno de Gestión Integral:

Para garantizar la seguridad de sus aplicaciones no basta con pensar sólo en la protección delsoftware una vez en la calle, es indispensable concentrarse también en la seguridad interna de todo elproceso productivo. Por ello el entorno de gestión fue diseñado de tal manera que pueda delegarfunciones tan críticas como la configuración de llaves, generación de licencias para enviar a susdistribuidores, ampliación de licencias para llaves instaladas, etc.

Utilizando el nuevo entorno de gestión, usted puede controlar todas las operaciones que realizan losoperarios desde generación de llaves, grabación, habilitar licencias. Además podrá conocer el estadode cualquiera de las llaves HARDkey desde que ingresan a su stock y durante todo el tiempo de usoaún cuando la misma esté entregada al cliente.

Además el sistema toma registro de todas las operaciones realizadas por los usuarios, lo que luego lepermite realizar auditorías para identificar usos indevidos. Usted podrá crear perfiles de usuarios

Page 12: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

6 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

habilitando o deshabilitando permisos a cada uno en particular.

Para más información sobre el nuevo entorno vea el Manual del Entorno de Gestión Integral.

2.3 Componentes del kit

El Kit de desarrollo HARDkey.NET permite proteger su aplicación, mediante llaves electrónica devalidación. Dentro del kit encontrará las librerías y utilitarios que le permitirán proteger softwaremonousuario o para red con una sola llave, acceder a la memoria interna de las mismas, cifrar basesde datos y archivos asociados, proteger sistemas modulares, etc.

Además encontrará herramientas para entregar a sus distribuidores de software, esto le permitesimplificar la distribución de sus aplicaciones protegidas. Los distribuidores podrán programarHARDkey NET para su software de forma totalmente controlada por usted.

Este Kit de Desarrollo contiene:

Llave programadora para la personalizar sus protectores.

Utilitarios para instalar la protección en modo Automático sobre ejecutables Windows 32b yacompilados.

Librerías para Windows 32b que pueden ser usadas con cualquier lenguaje que permita hacerllamadas a una DLL.

Ejemplos de utilización, para los diversos lenguajes de programación.

Soporte para Redes Windows 98/Me/2000/NT/XP/Vista/2003, Novell Netware y Linux.

Utilitarios para editar la memoria de las llaves, cambiar las password, cifrar archivos.

Sistema de Gestión Integral, que permite armar un esquema de trabajo distribuido.

Manual de instalación, programación y uso del kit en formato CHM.

2.4 Garantía del Software

SITEPRO S.A. garantiza por el término de 12 meses a partir de la fecha de compra el sistema deprotección de software compuesto por software y llave electrónica de habilitación, según lascondiciones que se expresan más adelante en el presente contrato y licencia de uso, dejando aclaradoque es único y no existe otra garantía expresa o implícita, sobre este producto.

La garantía cubre todo defecto, falla y/o vicio de material que pudiera producirse en este producto

Page 13: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

7Introducción

© 2007 - SITEPRO S.A.

como consecuencia de componentes o piezas que, sometidas a nuestro examen, demuestren haberresultado defectuosas de fábrica.

Para que dicha garantía se haga efectiva, el comprador deberá presentar el producto con su marca ynúmero de serie intactos, junto con la factura que acredite la fecha de compra, de lo contrario laempresa se reserva el derecho de aceptación de la garantía.

La revisión, control, chequeo y/o reparación de rutinas de software o de llaves electrónicas se haráexclusivamente en las oficinas técnicas de SITEPRO S.A., por lo tanto, todos los gastos ocasionadospor traslado, transporte, instalación, desmontaje, etc, quedan exclusivamente a cargo del cliente.

Todo soporte o consulta técnica sobre el funcionamiento del sistema, se le brindará exclusivamente altitular del kit.

Quedan exceptuados de esta garantía; el acabado exterior de la carcasa plástica, accesorios ocualquier otro elemento dañado o desgastado por: caídas, roturas ,golpes, transporte o uso indebido,suciedad, o mantenimiento inadecuado.

Asimismo, el presente certificado quedará sin efecto por:

La intervención o intento de reparación del mismo por personal ajeno a nuestro servicio técnico.

La conexión a computadoras sin una correcta descarga a tierra y/o redes de alimentacióninapropiadas.

La empresa se compromete únicamente al cambio o reparación del producto, sin cargo alguno,siempre que la falla no sea originada por las causas antedichas.

Por otra parte, para garantizarles una satisfacción total por el producto, la empresa aceptará ladevolución del mismo con sólo presentar por escrito el motivo de su disconformidad, dentro de los 15primeros días de realizada la compra.Pasado ese plazo se asume que el cliente lo ha probado y demuestra total conformidad con elfuncionamiento, compatibilidad y contenido del mismo.

La empresa no se responsabiliza por ningún daño o perjuicio que pueda ocasionar el uso o mal uso delproducto limitándose su garantía a lo expresado en este documento.

Page 14: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

3

Page 15: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

9Sistema de Protección HARDkey

© 2007 - SITEPRO S.A.

3 Sistema de Protección HARDkey

3.1 Técnicas de Protección

El objetivo de la protección de una aplicación de software es defender la inversión de tiempo, dineroy esfuerzo que se necesitó para su desarrollo.

Con el sistema de protección HARDkey puede proteger su software utilizando dos modos distintos,uno es el Modo Interactivo y otro el Modo Automático.

El modo interactivo consiste en incorporar dentro del programa, llamados a una función deprotección que se encuentra en una librería provista en el kit. Este método permite hacer un manejomás completo de la llave, dado que se tiene acceso a la memoria no-volátil que contiene el protector.Esta memoria se puede utilizar para guardar parámetros del programa, personalizaciones,contadores, etc. Permite obtener protecciones personalizadas según las necesidades y habilidades delprogramador. Este método es recomendado para proteger ejecutables cuando se dispone del códigofuente y para proteger el acceso a sitios de Internet.

La protección automática se implementa sobre cualquier aplicación ya compilada a partir de unutilitario que "envuelve" al ejecutable incorporándole las rutinas que realizan el chequeo de la llaveelectrónica. Este método es especialmente indicado cuando se quiere hacer una implementaciónrápida o no se dispone de los códigos fuente.

3.1.1 Protección contra copias

Es uno de los objetivos más habituales a la hora de utilizar un sistema de protección, consiste en queel usuario no pueda realizar la duplicación del producto y distribuirlas o las utilice en otrascomputadoras violando el acuerdo de licencia realizado en el momento de la compra.

HARDkey elimina este riesgo, ya que solamente las aplicaciones que detecten la llave electrónica seejecutarán, sin interferir con la realización de copias de seguridad por parte del usuario.

3.1.2 Control por fecha de vencimiento

Una aplicación protegida puede ser licenciada para ejecutarse en una única computadora, sin laposibilidad de usar desde otra computadora de la red. Esto se denomina licencia stand-alone.Como alternativa, una aplicación protegida puede ser licenciada para correr en múltiplescomputadoras de manera compartida.

Page 16: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

10 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

En este caso, es requerido que todas las computadoras estén autorizadas a ejecutar el software sinexceder el número máximo permitido. Esto se denomina licencia en red.El control de licencias previene la distribución de copias no autorizadas de su aplicación, mediante elbloqueo de la ejecución de la aplicación a un número específico de computadoras.En esquemas de paquetes de software modular, es posible administrar la cantidad de licenciasindependientemente para cada módulo utilizando una única llave en toda la red.

3.1.3 Control de ejecuciones

Esta característica está especialmente diseñada para limitar el uso en versiones de demo y de alquilero leasing de su software. Si se valida la cantidad de ejecuciones, con cada una se decrementa en unaunidad el número que fue configurado en la llave electrónica, de manera tal que cuando el contadorde ejecuciones llegue a cero, presente un mensaje informativo e impida su utilización. De formasimilar sucede con el control de horas de uso, a medida que pasan las horas se decrementa en unaunidad el contador que lleva cuantas horas están habilitadas.

Cuando este valor llega a cero la aplicación emite un cartel informando que ha finalizado el límite dehoras de uso de la aplicación y no permite su ejecución.

3.1.4 Control de licencias en red

Este tipo de protección permite que el software pueda ser ejecutado hasta una determinada fechacuyo valor puede ser definido en el hardware de la llave electrónica.

El control de la fecha especificada se puede realizar contra el reloj de tiempo real que poseen lasllaves con RTC o contra el reloj de la PC para los modelos de llave sin RTC.En este caso el control solo tienen sentido en aplicaciones sensibles a una correcta configuración defecha de la computadora, como programas de facturación o del tipo contable.

RTC - Real Time Clock

3.1.5 Protección de datos por cifrado on-line

Este esquema de cifrado se utiliza donde la protección de los archivos de datos es tanto o más

Page 17: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

11Sistema de Protección HARDkey

© 2007 - SITEPRO S.A.

importante que la aplicación que los maneja.Mediante algoritmos de cifrado Stream-Cipher, password y la intervención del procesador de la llave,es posible cifrar texto y datos que únicamente la aplicación protegida podrá utilizar de maneratransparente, sin compromiso de pérdida de tiempo en la conversión.

El proceso de cifrado/descifrado es realizado "on-line", lo que significa que no existe la posibilidad deinterceptar los datos descifrados en medio de un proceso que los utilice. Las modificaciones que laaplicación realice sobre los archivos son guardadas de manera cifrada totalmente transparente a laaplicación.

Hemos agregado la posibilidad de aplicar una nueva tecnología denominada Cifrado Personalizado, sunombre hace referencia al hecho de obtener resultados de cifrado distintos para cada kit. Porejemplo, si ciframos un mismo archivo de datos usando el mismo password con utilitarios de distintokit el resultado será diferente. Además, es esencial la presencia de una llave del kit conectada alpuerto en el momento que se descifran los datos. El algoritmo utiliza funciones "Query" de respuestarápida que tiene incorporadas el microprocesador de la llave, lo que asegura que sin el dispositivocolocado no se podrá descifrar la información.

3.1.6 Protección para aplicaciones de Internet

El sistema HARDkey le permite implementar un esquema de acceso restringido a sitios de Internet,donde sólo puedan entrar las personas que estén habilitadas o abonadas a un servicio, instalando unallave en su equipo. Es ideal para aplicaciones de alquiler de software, sitios que brindan servicios aclientes abonados, etc.

3.2 Componentes del sistema de protección

El Sistema de Protección HARDkey consiste en un conjunto de herramientas de software, hardware,librerías y documentación que permite implementar un esquema de protección flexible de acuerdo asus necesidades.

3.2.1 El kit de software

El centro del sistema HARDkey es el kit de desarrollo que permite proteger su aplicación, "atando" laprotección a una llave electrónica de validación. Dentro del kit encontrará las librerías y utilitarios quele permitirán proteger software monousuario o para red con una sola llave, acceder a la memoriainterna de las mismas, cifrar bases de datos y archivos asociados, proteger sistemas modulares, etc.

Page 18: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

12 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Este kit contiene:

Una llave electrónica de habilitación.

Una llave programadora para personalizar sus protectores.

Manual de instalación, programación y uso del kit.

Entorno de gestión centralizado desde donde se realizan todas las tareas para implementar laprotección, generar las llaves realizar el control de licencias entregas por cliente.

Librerías tipo DLL para Windows que pueden ser usadas con cualquier lenguaje que permita hacerllamadas a este tipo de componentes.

Ejemplos de utilización para los distintos lenguajes.

Componente ActiveX para implementar protecciones a través de Internet.

Soporte para compartir una llave bajo redes Windows 98/Me/2000/NT/XP, Novell Netware yLinux.

3.2.2 La llave electrónica de habilitación

Esta llave es la licencia que se entrega con cada copia de software protegido. La presencia de la llaveen la PC habilita el funcionamiento del software.

Las llaves deben ser personalizadas antes de poder usarse con las rutinas de protección, para ello veaCómo personalizar llaves para su kit. 

El proceso de Personalización formatea la memoria de la llave y carga información del kit de la llaveProgramadora.

Una vez que la llave fue personalizada, la única manera de utilizarla es con las rutinas del kit querealizó la personalización. Por lo tanto, si se desea volver a inicializar, sólo podrá llevarse a cabo si elnúmero de kit con el cual fué personalizada coincide con el de la llave programadora. Esto último esmuy útil, para reutilizar llaves de su propio kit aún si accidentalmente olvidó sus claves.

Si una llave de protección HARDkey tiene información almacenada en su memoria, el proceso dePersonalización borrará toda la información allí almacenada.

3.2.3 La llave programadora

Esta llave es el elemento que se entrega con cada copia de software protegido. La presencia de lallave en la PC es lo que habilita el funcionamiento del software.

Las llaves deben ser personalizadas antes de poder usarse con las rutinas de protección. Una vez quela llave fue personalizada, la única manera de utilizarla es con las rutinas del kit que realizó lapersonalización. Por lo tanto, si se desea re-inicializar una llave, sólo podrá llevarse a cabo si elnúmero de kit asignado en la llave coincide con el de las rutinas de inicialización. Esto último es muy

Page 19: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

13Sistema de Protección HARDkey

© 2007 - SITEPRO S.A.

útil, para reutilizar llaves de su propio kit aun si accidentalmente olvido sus claves. zar. Este procesoimplica la destrucción de todos los parámetros configurados en las celdas de la llave.

Las llaves de protección salen de fábrica enun estado virgen, una vez personalizadas lallave solo responde al los utilitarios y libreríasdel kit con la cual fue generada.

Además de los parámetros que se inyectan ala llave en el proceso de personalización,cada protector tiene una numeración de lotey serie.

Dada la importancia de la llave programadora como herramienta parapersonalizar sus protectores, se recomienda guardarla en lugar seguro cuando nose la utilice y adquirir una segunda llave para tener de back-up.

2

Vea También:

Cómo personalizar llaves para su kit

3.3 Una llave para toda la red

Las rutinas que incorporan las funciones de protección, están desarrolladas para chequear las llaveselectrónicas tanto en forma local, como en forma remota a través de una red.

Esto quiere decir que con una sola llave (de los modelos para red), usted puede habilitar un programapara ser usado desde distintos puestos. Esto le permitirá abaratar costos, ya que no es necesariodisponer de una llave por cada estación de trabajo.

Page 20: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

14 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Inclusive existe la opción de limitar cual es el máximo número de licencias que pueden corrersimultáneamente. La administración de licencias en red que implementa el sistema de protecciónHARDkey permite restringir en un número específico la cantidad de computadoras que puedenejecutar simultáneamente la aplicación en un ambiente multiusuario, como así también, enaplicaciones modulares, controlar la cantidad de usuarios para cada módulo de maneraindependiente.

Un detalle importante es que las llaves HARDkey NET no tienen límites pre-establecidos de fábricapara el número de licencias de red que pueden manejar. El desarrollador especifica ese valor avoluntad entre 1 y 255 según el número de licencias que desee vender al cliente final.

Las llaves HARDkey NET para control de licencias en red vienentanto para conexión al puerto paralelo como en formato USB.

3.3.1 Control del número de licencias

La flexibilidad de HARDkey permite implementar el control de licencias, tanto a nivel global paraaplicaciones de software únicas, como de manera independiente para cada módulo en sistemas desoftware modulares.

La diferencia entre una aplicación de software única y una aplicación de software modular reside en elmodo de comercialización que se aplica a la misma.

Page 21: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

15Sistema de Protección HARDkey

© 2007 - SITEPRO S.A.

Una aplicación global consiste en un sistema de software que posee integrado todas las herramientasque fueron diseñadas para cubrir las necesidades que pueden surgir del uso de la aplicación.

Una aplicación modular consiste en un conjunto de aplicaciones o herramientas que se adquieren porseparado, según la necesidad del cliente, y que permiten agregar funcionalidades al objetivo de laaplicación.

Page 22: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

4

Page 23: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

17Llaves electrónicas de habilitación

© 2007 - SITEPRO S.A.

4 Llaves electrónicas de habilitación

El sistema de protección HARDkey le permite elegir distintos modelos de llaves electrónicas dehabilitación según las necesidades del proyecto que se desee proteger.

HARDkey STDEsta llave brinda un alto grado de seguridad y transparencia.Ofrece una excelente relación costo - beneficio paraprotección de aplicaciones monousuariot. Posee 4k bytes dememoria no-volátil y celdas con funciones especiales.(La versión para puerto paralelo, es similar solo que limitadaa 64 bytes de memoria)

HARDkey NET Este modelo de protector permite que varios usuarios deuna misma red puedan compartirlo. También es posiblearmar esquemas de control de licencias y limitar el máximonúmero de usuarios concurrentes que podrán utilizar cadamódulo de software protegido. Posee 4k bytes de memoriano-volátil y celdas con funciones especiales.(La versión para puerto paralelo, es similar solo que limitadaa 128 bytes de memoria)

HARDkey MIOLlave especial para autenticar a los administradores yusuariosen forma práctica y segura introduciendo el concepto deAutenticaciónmediante dos factores "algo que tengo" (la llave) más "algoque sé" (un número de PIN).Esquemas como estos son indispensables si se pretendeobtener certificaciones de como la ISO 17799/27001 para elsistema. También se utiliza para proteger el acceso a páginasweb restringidas.

HARDkey RTCEsta es la llave más completa de nuestra línea de productosya que posee las mismas funcionalidades que los modelosanteriormente detallados sumado a que en su interior poseeun reloj de tiempo real (Real Time Clock) convirtiéndola en eldispositivo ideal para proteger aplicaciones comercializadascon fecha de vencimiento.

Disponible para uso en red y monousuario.

Page 24: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

18 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

4.1 Características y tipos de interfaz

4.1.1 Llaves HARDkey para puerto USB

Son el modelo más utilizado en la actualidad. Pueden ser conectadas o desconectadas con la PCencendida. No requieren la instalación de ningún driver ni controlador especial lo cual facilita lainstalación y el soporte. También es ideal para aplicaciones donde no es conveniente que la llavequede instalada si no se utiliza el software protegido.

Poseen 4K bytes de memoria no-volátil donde algunas celdas son usadas por las rutinas de proteccióny el resto está disponible para uso del programador.

Las llaves USB tienen como opcional un reloj de tiempo real (Real Time Clock - RTC) incorporadoindependiente del reloj de la PC.Esta característica es muy útil cuando se desea hacer un control estricto del vencimiento de unalicencia, dado que por más que el usuario final altere la fecha de la PC para extender el uso de lalicencia, la aplicación protegida hace la validación contra el reloj interno de la llave.

Este reloj interno sólo puede configurarse desde el entorno de protección que corresponde al kit conel cual fue personalizada la llave. De esta forma el desarrollador que configuró la llave es el único quepuede cambiar la hora y fecha de su reloj interno.El reloj interno de la llave es alimentado con una pila de litio que le brinda una autonomía mayor acinco años.

Entre los modelos de llaves con conexión USB se encuentra disponible llaves para red, llaves para quesolo habilitan puestos locales, y llaves de habilitación de usuarios.

Los modelos para red y local vienen con la opción de reloj RTC.

Para obtener mayor información de como instalar llaves de puerto USB veaInstalación para protectores de puerto USB.

Para obtener mayor información sobre todos los modelos de llaves veaListado de llaves electrónicas de habilitación.

4.1.2 Llaves HARDkey para puerto paralelo

Las llaves HARDkey están basadas en un poderoso microprocesador con tecnología RISC de muy bajoconsumo, que se encarga de reconocer las solicitudes de verificación y realizar las transaccionescifradas de información entre la aplicación protegida y la llave.

Page 25: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

19Llaves electrónicas de habilitación

© 2007 - SITEPRO S.A.

El sistema electrónico contenido en la llave automáticamente entra en modo "sleep" después de unperíodo de inactividad para reducir el consumo de alimentación, característica que es especialmenteútil cuando se trabaja con computadoras portátiles.Poseen 128 bytes de memoria no-volátil donde algunas celdas son usadas por las rutinas deprotección y el resto está disponible para que el programador almacene datos críticos.

Las llaves HARDkey de puerto paralelo son completamente transparentes, de tal manera que puedenser conectadas varias llaves en cascada una detrás de otra.

Para la conexión y desconexión de estas llaves es recomendable tener la PC apagada.

Para el correcto funcionamiento de estas llaves es indispensable la instalación del Driver Para llavesde Puerto Paralelo, para realizar este procedimiento vea Instalador deDrivers para llaves de Puerto Paralelo.

Entre los modelos disponibles con conector paralelo se encuentran las llaves de Red y Local.

Para obtener mayor información sobre la instalación de protectores para puertos paralelos veaInstalación de protectores de puerto paralelo.

Para obtener mayor información sobre todos los modelos de llaves disponibles veaListado de llaves electrónicas de habilitación.

Al conectar un dispositivo paralelo en cascada con las llaves HARDkey esrecomendable que la PC y el dispositivo se encuentren apagados y desconectadosde la red de corriente eléctrica.

4.1.3 Estructura interna de la llave

Las llaves de habilitación poseen internamente un microprocesador encargado de manejar lasfunciones de protección y la comunicación cifrada con la PC. Cada protector se identificada en elmomento de la fabricación mediante un número de lote y serie único. Para poder ser reconocidas porlas rutinas de protección requieren adicionalmente que se les realice un proceso denominado"personalización", mediante el cual se le transfieren determinados parámetros propios de cada kit.

Page 26: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

20 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Internamente poseen un conjunto de celdasde memoria configurables por eldesarrollador, que tienen asignadasfunciones especiales para la protección. Cadacelda almacena una palabra de 16 bits (2bytes).

Se almacenan claves, módulos, licencias,fecha de vencimiento, y otros valores más.

A continuación se detalla el contenido de lamemoria.

A continuación se describe la función de cada celda:

Parámetros del kit: Conjunto de celdas con información propia del kit. Estas celdas se validan encada transacción para garantizar que las llaves sólo se puedan usar con las librerías y utilitarios del kitcon la que fue personalizada. Estas celdas no están accesibles para el desarrollador.

Clave 1 - Clave 2: consiste en 2 celdas configurables por el desarrollador que combinadas forman unnúmero de 32 bits, el que se utiliza para diferenciar una de otra cuando se conectan varias encascada. Las combinaciones posibles son 4.294.967.296. Esto permite armar el esquema que mejor seadapte a sus necesidades. Si conecta en cascada más de una llave con las mismas claves, sólo podráver los datos de la primera que esté directamente conectada al puerto paralelo. Todas las rutinas queutilicen la llave deben enviar estos dos parámetros correctamente para que el microprocesador de lallave acepte iniciar el dialogo con la aplicación.

En el momento de inicialización de la llave, estas claves quedan pre-inicializadas en 0:0, pudiendo sercambiadas únicamente por el utilitario de edición o utilizando la API. Es importante destacar que paracambiar las claves es necesario poseer las claves anteriores, caso contrario el microprocesador de lallave descartará la solicitud.

Módulos de Software (celdas 0 y 1): consiste en 32 flags, utilizados en la protección de softwareque esta diseñado para ser adquirido en forma modular, para habilitar o no el funcionamiento delsoftware asociado al correspondiente número de módulo. Cada modulo tiene un númeroidentificativo entre 01 y 32, lo que permite implementar un esquema de protección de hasta 32módulos de software por llave. Para más detalles, consulte el punto el capítulo "Protección desistemas modulares". En modo de protección interactiva, su uso está disponible para lo que se deseehacer desde la aplicación.

Page 27: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

21Llaves electrónicas de habilitación

© 2007 - SITEPRO S.A.

Contador de Ejecuciones (celda 2): consiste en 1 celda que utiliza la protección automática cuandose habilita el "Control de Ejecuciones". Allí se almacena el número de ejecuciones máximaspermitidas. Cada vez que se ejecute la aplicación este valor es decrementado, cuando el valor llega acero la aplicación se bloquea. En modo de protección interactiva, su uso está disponible para lo que sedesee hacer desde la aplicación.

Licencias Globales (celda 3): consiste en 1 celda utilizada por la protección automática enaplicaciones no modulares para el control de licencias, donde se almacena el número máximo deusuarios permitidos para ejecutar la aplicación simultáneamente en una red.

Fecha de Vencimiento (celdas 4 y 5): consiste en 2 celdas que almacenan el día, mes y año en

formato BCD, utilizado en el "Control por Fecha de Vencimiento" de la protección automática. Siutiliza protección interactiva, puede acceder a estas celdas mediante los comandos "Leer celda yGrabar celda" para implementar por programa un esquema con control por fecha de vencimiento.

Límite de licencias de red por módulo (celdas 6 a 21): consiste en 32 bytes identificados con un

número entre 01 – 32, usados por la protección automática, que permiten establecer el númeromáximo de usuarios simultáneos en una red que podrán acceder a un módulo de software enparticular. Si no se utiliza un esquema de restricción de licencias, estas celdas puede usarselibremente ampliando de 64 a 96 los bytes de memoria disponibles para el desarrollador.Importante: Estas celdas no están disponibles en los modelos de llaves HARDkey STD, dado que sonpara aplicaciones mono-usuario.

64 bytes de Memoria no Volátil (celdas 22 a 53): este bloque de memoria de lectura/escritura de

propósito general programable esta disponible para ser utilizado por el desarrollador. Se puedeutilizar para guardar un código, contraseñas, los datos del usuario registrado o cualquier otro tipo deinformación. La información almacenada es guardada por 40 años sin necesidad de estar conectada ala computadora.El bloque de memoria no volátil disponible permite crear nuevas estrategias de protección por partedel desarrollador, en base a la imaginación y creatividad, podrá realizar comprobaciones de flagsgrabados en la llave que habiliten o no características en el software, grabar códigos de validación ycomprobación, tablas de códigos fundamentales para que funcione la aplicación, etc.

Mediante las librerías que se utilizan para proteger el software en modo interactivo es posible veresta memoria como si fueran 32 celdas de 16 bits o como un bloque de memoria continuo de 64bytes.

4K bytes de memoria expandida: Las llaves con formato USB, tanto STD como NET, tienen 4K

bytes de memoria no-volátil adicionales los cuales pueden se pueden acceder mediante la librería deprotección interactiva.

Cuadro Resumen:

Page 28: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

22 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Celda Función Detalle

( reservada ) Personalización

( reservada ) Clave 1 y Clave 2

0 - 1 Módulos del Software

2 Contador de ejecuciones

3 Licencias de red Globales

4 - 5 Fecha de Vencimiento

6 - 21 Licencia de Red por Módulo

22 - 53

Memoria de Usuario

Este bloque de memoria de lectura/escritura depropósito general programable esta disponiblepara ser utilizado por el desarrollador. Sepuede utilizar para guardar un código,contraseñas, los datos del usuario registrado ocualquier otro tipo de información. Lainformación almacenada es guardada por 40años sin necesidad de estar conectada a lacomputadora.El bloque de memoria no volátil disponiblepermite crear nuevas estrategias de protecciónpor parte del desarrollador, en base a laimaginación y creatividad, podrá realizarcomprobaciones de flags grabados en la llaveque habiliten o no características en elsoftware, grabar códigos de validación ycomprobación, tablas de códigosfundamentales para que funcione la aplicación,etc.

Mediante las librerías que se utilizan paraproteger el software en modo interactivo esposible ver esta memoria como si fueran 32celdas de 16 bits o como un bloque dememoria continuo de 64 bytes.

Memoria Extendida

(Solo disponible en modelosUSB)

Las llaves con formato USB, tanto STD comoNET, tienen 4K bytes de memoria no-volátiladicionales los cuales pueden se puedenacceder mediante la librería de proteccióninteractiva.

4.2 Instalación del protector en la computadora

Las llaves electrónicas compatibles con el sistema de protección HARDkey vienen en dos formatossegún sean para conectar al puerto paralelo o al puerto USB de la PC.

Page 29: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

23Llaves electrónicas de habilitación

© 2007 - SITEPRO S.A.

Conexión del protector en la PC:

Instalar correctamente el protector de conexión USB 

Instalar correctamente el protector de conexión Paralelo

4.2.1 Protectores para puerto USB

Compatibilidad

Las llaves USB pueden ser usadas con sistemas operativos Windows ME/2000/2003 y XP.No pueden se usadas con Windows 95/98 ni NT dado que no tienen soporte para USB.

Las computadoras permiten que los dispositivos puedan se conectados o desconectados en cualquiermomento, no es necesario apagar la PC para realizar esta tarea.

Para una correcta instalación inserte la llave en un conector USB libre. Aparecerá la siguiente ventanadurante unos segundos mientras el sistema operativo configura el dispositivo.

Windows Vista

Windows XP

Luego de esto la llave está lista para ser usada. Este mensaje aparece en esta única oportunidad,cuando se conecta el dispositivo por primera vez.

Las llaves USB pueden ser usadas con sistemas operativos Windows ME/2000/2003 y XP.No pueden se usadas con Windows 95/98 ni NT dado que no tienen soporte para USB.

Page 30: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

24 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

4.2.2 Protectores para puerto paralelo

Para mayor seguridad se recomienda que tanto la computadora como la impresora, se encuentrenapagadas en el momento de realizar la instalación.

Asegúrese que tanto la computadora como la impresora, posean una buena descarga a tierra(enchufe bipolar con toma a tierra, de 3 patas), ya que la llave posee continuidad de masa entre lascarcasas de los conectores DB-25, para que esa descarga sea efectiva.

Tenga en cuenta que la garantía del protector no cubre daños causados por descargas producidascomo consecuencia de una instalación eléctrica deficiente.

Para el caso en que la llave de habilitación deba ser instalada por personal que no tenga acceso a estemanual, o que desconozca el funcionamiento de la misma, se entrega a continuación, un descriptivode instalación de la llave por pasos, que recomendamos fotocopiar o transcribir a su manual y enviarcomo guía, para su correcta instalación, junto con el software que se entregue.

1. Antes de colocar el protector en la computadora verifique que el recinto donde seencuentran conectadas la computadora y la impresora, tenga una correctainstalación eléctrica y posea su correspondiente descarga a tierra.

2. Asegúrese que la computadora, el monitor, la impresora y demás accesorios esténapagados.

3. Si tiene una sola salida paralelo con impresora, desconecte la impresora, enchufe elconector macho de la llave al puerto paralelo (conector hembra DB-25) y acontinuación conecte la impresora en el extremo hembra de la llave. Sujete todos lostornillos, tanto del protector como en el cable de impresora.

4. Si tiene varias salidas paralelo, puede conectar la llave en cualquiera de ellas, sinnecesidad de desconectar la impresora.

5. El protector de software se puede conectar en cualquier puerto paralelo (lpt1, lpt2 olpt3), en serie con el cable de conexión de la impresora.

6. En caso de tener que instalar una llave de habilitación en una salida que posea otrallave ya instalada, proceda de la misma forma, teniendo en cuenta que si hayinstalado un protector de otra marca, se puede colocar delante o detrás del otrohasta lograr que los dos queden funcionando.

7. Las llaves de conexión al puerto paralelo requieren la instalación de un driver paraque Windows las reconozca, utilice el programa HKEYDRV.EXE para instalar estecontrolador.

Page 31: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

25Llaves electrónicas de habilitación

© 2007 - SITEPRO S.A.

4.3 Cómo personalizar las llaves para su kit

Las llaves HARDkey que usted compra se encuentran en un estado virgen y requieren ser codificadascon los parámetros propios de su kit para poder ser reconocidas por las rutinas de protección. Dichafunción se realiza con el auxilio de la llave programadora (negra), la cual es distinta para cada kit. Esta"personalización" de las llaves debe realizarse sólo una vez. A partir de ahí ya está listas para serutilizadas normalmente.

Los pasos a seguir para personalizar una llave son:

1. Conecte a la PC un cable prolongador de puerto paralelo. Esto es opcional pero le será de granayuda para poder trabajar más cómodamente al personalizar las llaves.

2. Conecte la llave programadora (carcasa negra) al extremo del cable.3. Una vez que haya instalado los utilitarios del kit, ejecute el programa HKEYEDIT.EXE.4. Conecte la llave HARDkey que desee personalizar detrás de la llave programadora, en el caso de

ser una llave USB conéctela en cualquier puerto libre y haga clic en el botón "Personalizar".5. Una vez terminado el proceso puede retirar la llave iniciada y repetir el paso 4 por cada nueva

llave que desee personalizar.

El proceso de personalización además de configurar las llaves con los parámetros propios de cadakit hace una inicialización general de las claves y de todas las celdas de memoria con el contenidoque se muestra en la pantalla del editor, es conveniente configurar en el editor la información queva en las llaves y luego personalizarlas de forma consecutiva si se precisan llaves con la mismaconfiguración.

Vea el Entorno de Gestión Integral para Personalización de llaves

Page 32: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

5

Page 33: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

27Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

5 Cómo proteger su aplicación

Este capítulo describe las aplicaciones básicas del sistema de protección HARDkey.NET y cómoimplementar cada una de ellas.

Dada la versatilidad del producto el espectro de uso es bastante amplio, por lo cual centraremosnuestra atención en los siguientes escenarios:

Protección de aplicaciones para Internet. En este caso lo que se logra con la llave es el controlde quien ingresa a nuestra página web. En este caso cada usuario habilitado para usar nuestrosservicios debe tener instalado un protector para que el servidor le permita al browser navegar pornuestro sitio.

Protección de archivos ejecutables. Esta es la aplicación tradicional de las llaves electrónicasdonde el software queda ligado a un elemento físico que garantiza su licencia de uso.

Protección de bases de datos. Esta es una característica adicional del sistema de protección

automática que permite mantener cifrada la información que maneja nuestra aplicaciónprotegida.

Control de licencias en una red. Esta opción permite armar esquemas flexibles de licenciasflotantes para ambientes multi-usuario, centralizando la protección en una única llave HARDkeyNET (carcasa naranja) instalada en el servidor de la red.

5.1 Protección automática de ejecutables para Windows

Este método es una forma rápida de realizar un nivel básico de protección, limitado a aquellos casosdonde la compatibilidad del ejecutable lo permita (ver Compatibilidad de la Protección Automática).

Se basa en la instalación de la protección directamente dentro del ejecutable final, sin necesidad deque el desarrollador deba agregar código fuente al sistema a proteger.

La protección consiste en tomar el ejecutable original, abrirlo e instalarle las rutinas de protección ylos sistemas anti-debuging, para posteriormente cerrarlo ya protegido. Este proceso incrementalevemente la longitud del ejecutable original sin afectar la integridad del mismo.

A la hora de instalar la protección sobre el ejecutable se pueden configurar varias opciones como el

Page 34: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

28 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

tipo de chequeo que se desea realizar, manejo de licencias en red, fecha de vencimiento de lalicencia, cifrado de datos etc.

Puede encontrar mayor información sobre como aplicar Protección Automática en el Manual delEntorno de Gestión Integral. Presione aquí para abrir la versión instalada de este manual.

5.2 Protección de aplicaciones para Internet

Internet nos abre un nuevo mundo de posibilidades para desarrollar nuestras aplicaciones, y tambiénnos presenta nuevos desafíos a la hora de proteger nuestra inversión. Sea que nuestro negocio es elalquiler de software, proveer información o brindar cualquier tipo de servicio por Internet con costo,hasta hoy dependíamos de la débil combinación "Usuario-Password" para garantizar el accesocontrolado a nuestras páginas de Internet. Con HARDkey.NET es posible cambiar esto y garantizar uncontrol efectivo de los usuarios que pueden acceder a los servicios de nuestro sitio.

Este modo de protección permite que una página web publicada en un servidor de Internet, valide laidentidad de los clientes que se conectan al mismo, utilizando como "clave de acceso" la llave

Page 35: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

29Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

electrónica.

La implementación de este modo de protección consta de dos partes: El lado del servidor y el lado delcliente. Del lado del servidor se ejecuta una página tipo ASP o PHP que realiza la validación de lallave. Del lado del cliente es necesario tener instalado el componente ActiveX que permite al browserinteractuar con la llave.

5.2.1 Entorno de desarrollo

Una vez registrado el componente en Windows(ver Cómo registrar el componente ActiveX (lado Cliente)), debe agregarlo al entorno de desarrolloque esté utilizando para armar su sitio web. La siguiente pantalla muestra como incluir el ActiveX alcuadro de herramientas del Visual InterDev. Presione el botón derecho del mouse estando en lasolapa "Controles ActiveX" del cuadro de herramientas. Luego seleccione "Personalizar cuadro deherramientas ..." y vaya a la solapa "Controles ActiveX".

Una vez allí, tilde el Control HARDkey 0000???? correspondiente a su kit. Finalmente presione aceptary el control aparecerá en el cuadro de herramientas, de esta forma podrá luego arrastrarlo a la páginadonde se realizaran los chequeos.

Page 36: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

30 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

5.2.2 Cómo registrar el componente ActiveX (lado cliente)

El archivo hkeyxxxx.ocx es un control ActiveX que debe residir en la máquina del cliente, donde xxxxes un número hexadecimal de cuatro caracteres diferente para cada kit de HARDkey.NET ( Ej:hkey45da.ocx).

Este componente interactúa con el browser del cliente para permitir a nuestra página validar lapresencia de la llave a través de Internet. Además del control ActiveX el cliente debe tener instaladoel driver que maneja la llave (ver Instalador de driver para Windows).

Para registrarlo debe ejecutar el archivo REGISTER.BAT en el directorio donde está el OCX.

Este proceso BAT registra el componente en la REGISTRY de Windows, indicándole entre otras cosasel directorio donde se encuentra el archivo. Por eso es importante que una vez registrado, no borre nimueva de directorio el archivo OCX.

5.2.3 Configuración del browser

Una vez instalados los drivers y registrado el componente, es necesario personalizar las opciones deseguridad del Internet Explorer para que permita la ejecución de controles ActiveX. La forma másconveniente de realizar esto es definiendo el sitio donde va a residir nuestra página como un "Sitio deConfianza" y personalizar el nivel de seguridad sólo para esta categoría. De esta forma no se veráafectada la seguridad de la máquina al navegar en otros sitios de la red.Vaya a "Opciones de Internet ..." en el menú "Herramientas" del explorer.

Page 37: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

31Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

Aquí presione el botón "Sitios ..." para agregar la dirección del sitio donde va a residir la páginaprotegida a la lista de los sitios de confianza.

Page 38: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

32 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Complete el nombre y presione el botón agregar. En el ejemplo se supone que nuestra página estarápublicada en un servidor bajo el nombre "www.misitio.com". También quite el tilde de la casilla quehabilita la comprobación del servidor (https:) para los sitios de confianza.

Por último se debe personalizar el nivel de seguridad para esta categoría de sitios. Para ello vuelva ala pantalla anterior presionando el botón "Aceptar".

Ingrese en la opción "Personalizar nivel ..." y tilde en "(*) Activar" todos las opciones del grupo"Controles y complementos de ActiveX".

Esto le permitirá al browser interactuar con nuestro componente cada vez que el servidor le envíeuna página que haga referencia a la llave.

Al terminar presione "Aceptar" para registrar los cambios.

5.2.4 Funcionamiento de la página protegida (lado servidor)

El servidor es el encargado de verificar la presencia de una llave HARDkey en el cliente que quiereconectarse. Para realizar esto le envía al navegador del cliente una página web que contiene unallamada a un control del archivo hkeyxxxx.ocx.

Page 39: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

33Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

La página que recibe el cliente contiene los comandos necesarios para invocar la función de chequeode la llave dentro del control ActiveX y enviarle la respuesta al servidor.

Luego de recibir la respuesta el servidor está en posibilidad de dar o no acceso al cliente segúncorresponda. Toda esta información de ida y vuelta se encuentra cifrada para evitar que pueda serinterceptada y/o alterada.

El siguiente diagrama muestra como es el proceso:

El componente implementado en el ActiveX tiene la misma estructura de comandos que la libreríaDLL utilizada para la protección interactiva (ver La Función HARDkey)

Dentro del kit se encuentra un ejemplo realizado en ASP que hace uso de este sistema para permitirel acceso a una pagina protegida únicamente si es encontrada una llave.

El ejemplo que encontrará en el kit está desarrollado en Visual InterDev y está compuesto por lossiguientes archivos:

Default.asp: Este archivo es el inicial, en el mismo se arma una página que contiene las referencias alcontrol ActiveX. En el servidor se arma además el argumento de chequeo que al tener uncomponente random y estar cifrado, genera una cadena diferente cada vez que se ejecuta. La cadenade respuesta es enviada a la página main1.asp

Chequeo.asp: Este archivo recibe la respuesta que generó el ActiveX en la máquina del cliente. En elejemplo, luego de descifrar y validar la cadena, es posible obtener el número de lote y serie de lallave, así como su fecha de vencimiento o módulos habilitados. Esta es la página en la que se decide siel usuario puede acceder a la pagina protegida (paginaok.asp) o debe ser redireccionado a la páginade error (noaccess.asp)

Paginaok.asp: Página protegida. Esta página controla que la página que la llamé sea chequeo.asp,

esto asegura que el usuario haya sido validado, caso contrario, redirecciona al cliente a la páginadefault.asp para hacer la verificación.

Noaccess.asp: Esta página es la que dice "Acceso denegado...". y es a la que se accede en el caso deno poseer la llave en la máquina.

El demo completo con todos los archivos asociados, se encuentra en el kit de desarrollo bajo elsubdirectorio 'Internet'.

Cabe aclarar que el siguiente en el punto "Código Ejemplo Asp" es solo un pequeño ejemplo de lo quees posible hacer con el ActiveX sobre Internet, ya que además del comando para chequear lapresencia de la llave que se muestra aquí, están disponibles los comandos de lectura y escritura en la

Page 40: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

34 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

memoria no-volátil del protector que se describen en el capítulo del API.

Como ejemplo de uso del ActiveX a través de Internet, se nombran solo algunas de las posiblesaplicaciones:

- Permitir a los clientes acceder a sitios restringidos o página con costo.- Personalizar el sitio para cada cliente.- Saber quien se conecta y cuanto tiempo (aproximado).- Saber a que páginas accedió.- Permitirle descargar sólo la actualización del software que tiene registrado o los módulos quetenga habilitados.- Leer y grabar valores en la llave.

Page 41: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

35Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

5.2.5 Código del Ejemplo Asp

<%@ Language=VBScript %><% Option Explicit%><% '--------------------------------------------------------------------- ' DEFAULT.ASP '--------------------------------------------------------------------- ' Esta es la página que realiza la invocación al chequeo del protector%>

<%' Definición de variables que se usan para armar la cadena' que se pasa como parámetro al control ActiveX que chequea' la llave en el explorador del cliente.

Dim sOriginalDim sCifradaDim sAuxDim cDim i %>

<%' Este archivo contiene la definición de los vectores SBOX1, SBOX2' y la password que intervienen en el algoritmo que se usa para' cifrar la cadena que se pasa como parámetro al ActiveX. %><!-- #INCLUDE FILE="sbox.asp" -->

<%' Aquí se arma la cadena parámetro. Los primeros 10 bytes deben ser' valores random, luego un espacio y 8 caracteres en cero (ascii)' reservado para el nro de conexión, un espacio y 5 caracteres con' la clave1 (en ascii), otro espacio y 5 caracteres con la clave2.' El resto de los parámetros no son importantes para este caso y' deben dejarse en cero. Para una descripción más detallada de como' se compone la cadena de parámetro, ver el capítulo 'Interfase de' programación de aplicación (API)' del manual del usuario. ' Completar la cadena con espacio en blanco hasta llegar a los 200' caracteres requeridos por la interfaz.

randomizesOriginal = ""For i = 1 To 10

sOriginal = sOriginal + chr(int(rnd *255)+1)NextsOriginal = sOriginal + " 00000000 00000 00000 0000 00 0"sOriginal = sOriginal + space(159)

' Variables que deben estar accesibles desde otras páginas.session("RandomArray")= sOriginalsession("CallerIP")=Request.ServerVariables("Remote_Addr")session("lastpage")="default.asp"sAux = sOriginal

' Rutina que cifra la cadena original.cifra sAux, sPassword

' Acá convierto cada valor binario de la cadena cifrada' a un valor hexadecimal en ascci de 2 dígitos.sCifrada = ""

For i = 1 To 200 c = Asc(Mid(sAux, i, 1)) If c > 15 Then sCifrada = sCifrada + Hex(c) Else sCifrada = sCifrada + "0" + Hex(c) End If Next ' Acá tengo la cadena armada para invocar al ActiveX

' Esta rutina cifra la cadena original antes de pasarla al' componente ActiveXSub cifra(buffer , password ) Dim i 'As Integer Dim ctemp 'As Integer Dim cAnterior 'As Integer Dim k 'As Integer Dim pw 'As Integer

Page 42: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

36 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Dim bufEnc 'As String cAnterior = 0 bufEnc = "" For i = 0 To 199 ctemp = Asc(Mid(buffer, i + 1, 1)) If (ctemp < 0) Then ctemp = ctemp + 256 End If ctemp = ctemp Xor sBox1(cAnterior) For k = 0 To 15 pw = Asc(Mid(password, k + 1, 1)) If ((k Mod 2) = 1) Then ctemp = ctemp Xor sBox1(sBox2(pw)) ctemp = sBox2(ctemp) Else ctemp = ctemp Xor sBox2(sBox1(pw)) ctemp = sBox1(ctemp) End If Next ctemp = ctemp Xor sBox1(i) cAnterior = ctemp bufEnc = bufEnc + Chr(ctemp) Next buffer = bufEncEnd Sub%>

<HTML><HEAD><META name=VI60_defaultClientScript content=VBScript><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">

<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript><!--' Hkeyctl1 es el control implementado en el ActiveX HKEY????.OCX' El método 'Chequear' realiza la comunicación con la llave.' La propiedad strBuffer se debe inicializar previamente con la' cadena de parámetro donde se especifica que comando ejecutar.' En esta propiedad retorna la cadena resultado desde de ejecutar' el comando.Sub window_onload

On Error Resume Nextform1.Hkeyctl1.strBuffer = "<% =sCifrada %>"If Err.Number = 438 Then

MsgBox "El componente ActiveX HKEY????.OCX no se encuentra instalado.",0, "Demostración HARDkey en Internet"

Exit SubEnd Ifform1.Hkeyctl1.Chequearform1.respuesta.value = form1.Hkeyctl1.strBufferform1.submit()

End Sub--></SCRIPT>

<title>Demostraci&oacute;n Interactiva de Protecci&oacute;n HARDkey</title></HEAD>

<BODY bgcolor="#ffffff"><P>&nbsp;</P><P><BR></P><FORM action="chequeo.asp" method=post id=form1 name=form1><Input id=text1 name=respuesta style="VISIBILITY: hidden"><Object classid="clsid:<%=sClassID%>" id=Hkeyctl1 style="LEFT: 0px; TOP: 0px"> <PARAM NAME="_Version" VALUE="65536"> <PARAM NAME="_ExtentX" VALUE="820"> <PARAM NAME="_ExtentY" VALUE="582"> <PARAM NAME="_StockProps" VALUE="0"></Object></FORM><BR></BODY></HTML>

<%@ Language=VBScript %>

Page 43: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

37Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

<% Option Explicit%><% '---------------------------------------------------------------------- ' CHEQUEO.ASP '---------------------------------------------------------------------- ' Esta es la página que procesa la respuesta de la llave%>

<% ' Variables que se usan para procesar la cadena que devuelve ' el control ActiveX después de chequear la llave. Dim sOriginal Dim sRespuesta Dim sAux Dim sLoteSerie Dim sPagina Dim i%>

<%' Este archivo contiene la definición de los vectores SBOX1, SBOX2' y la password que intervienen en el algoritmo que se usa para' cifrar la cadena que se pasa como parámetro al ActiveX. %><!-- #INCLUDE file="sbox.asp" -->

<%' Obtengo la respuesta a través de un control tipo TextBoxsRespuesta = Request.Form("respuesta")sOriginal = session("RandomArray")

' Proceso la respuesta donde cada valor en hexadecimal viene como dos' caracteres ascii para obtener un vector de caracteres en binario.sAux = ""For i = 0 To 199

sAux = sAux + Chr(GetHex(Mid(sRespuesta, (i * 2) + 1, 2)))Next

' Invoco a la rutina que descifra la cadenadescifra sAux, sPassword

If Len (sOriginal) < 10 Then Response.Redirect("noaccess.asp")

Response.End()End If

' Verificar que la string de respuesta sea válidaIf bValidaString(sOriginal, sAux) = False Then Response.Redirect("noaccess.asp")

Response.End()End If

' Esta parte de la string contiene el nro de serie de la llavesession("key") = Mid(sAux, 27, 10)session("lastpage") = "chequeo.asp"sPagina = "paginaok.asp"

' Esta rutina descifra la cadena que devuelve el control ActiveXSub descifra(buffer , password ) Dim i 'As Integer Dim ctemp 'As Integer Dim cAnterior 'As Integer Dim k 'As Integer Dim pw 'As Integer Dim bufEnc 'As String cAnterior = 0 bufEnc = "" For i = 0 To 199 ctemp = Asc(Mid(buffer, i + 1, 1)) If (ctemp < 0) Then ctemp = ctemp + 256 End If ctemp = ctemp Xor sBox1(cAnterior) For k = 0 To 15 pw = Asc(Mid(password, k + 1, 1)) If ((k Mod 2) = 1) Then ctemp = ctemp Xor sBox1(sBox2(pw)) ctemp = sBox2(ctemp)

Page 44: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

38 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Else ctemp = ctemp Xor sBox2(sBox1(pw)) ctemp = sBox1(ctemp) End If Next ctemp = ctemp Xor sBox1(i) cAnterior = Asc(Mid(buffer, i + 1, 1)) bufEnc = bufEnc + Chr(ctemp) Next buffer = bufEncEnd Sub

' Esta rutina devuelve un valor binario a partir un número en' hexadecimal expresado como dos caracteres ascii.Function GetHex(sTemp) 'As ByteDim i 'As IntegerDim c 'As ByteDim nTemp 'As Integer nTemp = 0 For i = 1 To 2 nTemp = nTemp * 16 c = Asc(Mid(sTemp, i, 1)) If (c >= Asc("0") And c <= Asc("9")) Then nTemp = nTemp + c - Asc("0") End If If (c >= Asc("a") And c <= Asc("f")) Then nTemp = nTemp + c - Asc("a") + 10 End If If (c >= Asc("A") And c <= Asc("F")) Then nTemp = nTemp + c - Asc("A") + 10 End If Next nTemp = nTemp Mod 256 GetHex = nTempEnd Function

' Esta rutina verifica que la cadena recibida sea válida, comparando' los 10 caracteres random con los de la cadena origina y los' separadores entre parámetros sean espacios en blanco.Function bValidaString(sOrig, sResp)

Dim iDim jDim kDim s1Dim strEstadobValidaString = FalseFor i = 0 To 9

s1 = mid(sOrig, i + 1, 1)j = Asc(s1)s1 = mid(sResp, i + 1, 1)k = sbox2(Asc(s1))If j <> k Then

Exit FunctionEnd If

NextIf (mid(sResp, 11, 1) <> " ") Then 'valido separador de conexión

Exit FunctionEnd IfIf (mid(sResp, 20, 1) <> " ") Then 'valido separador de estado

Exit FunctionEnd IfIf (mid(sResp, 26, 1) <> " ") Then 'valido separador de lote

Exit FunctionEnd IfIf (mid(sResp, 31, 1) <> "-") Then 'valido separador de serie

Exit FunctionEnd IfstrEstado = mid(sResp, 21, 5)If CDbl(strEstado) <> 0 Then

Exit FunctionEnd IfbValidaString = True

End Function%>

Page 45: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

39Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

<HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"><SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>

<!--Sub window_onload

form.submit()End Sub--></SCRIPT>

</HEAD>

<BODY><form method="POST" action="<%=sPagina%>" Name="form">

<Input Type="hidden" name="Val" value="<%=sPagina%>"></form>

<P>&nbsp;

</P></BODY></HTML>

5.3 Protección de ejecutables en forma interactiva

5.3.1 La función HARDkey()

El API(Application Programming Interface) de HARDkey consiste en una función que, dependiendo delparámetro enviado, realiza la operación indicada. Este parámetro consiste en una cadena decaracteres que se construye de acuerdo a los requerimientos de la operación que se desea efectuar.

Por lo tanto, el API posee una única función que se denomina HARDkey y es la misma función paratodos los sistemas operativos y lenguajes.

HARDkey(cadena_parámetro)

La cadena_parámetro es una string de 200 caracteres utilizada como buffer para la transacción de

datos entre la aplicación y la DLL. Al invocar la función en esta cadena se pasan los parámetrosespecíficos del comando que se desea ejecutar. Al retornar de la función, la string contiene elresultado de la operación.

Esta string se debe cifrar antes de invocar a la función HARDkey mediante un esquema que se detallamás adelante. Una vez que la función retorna, la string respuesta debe ser descifrada por el mismométodo para obtener los valores finales.

Page 46: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

40 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

La cadena debe ser pasada a la función por referencia para que el resultado retorne en la mismacadena.

Si bien esta operatoria puede parecer engorrosa a primera vista, es necesaria para garantizar elmáximo nivel de protección, ya que un esquema en el cual los parámetros se pasan sin cifrar y lafunción devuelve un resultado directamente, es más vulnerable.

Los comandos disponibles mediante esta función son:

Iniciar conexión  

Verificar conexión

Finalizar conexión 

Leer celda de memoria no-volátil de la llave

Grabar celda de memoria

Leer cadena de caracteres de la memoria de la llave 

Grabar cadena de caracteres en la memoria de la llave 

Cambiar claves 

Cifrar / descifrar una cadena de caracteres

Configurar modo de chequeo

Grabar Fecha y Hora

Leer Fecha y Hora 

Leer memoria extendida

Grabar memoria extendida

5.3.2 Forma de implementar la protección

Para usar cualquiera de los comandos disponibles siempre se debe comenzar por invocar al comando"Iniciar conexión".Esta es la función básica que permite saber si hay una llave conectada perteneciente al kit. Ademásretorna información adicional de algunas celdas del protector con funciones especiales como elnúmero de lote y serie de la llave, la fecha de vencimiento, el límite de ejecuciones, los móduloshabilitados, etc.

El desarrollador tiene la libertad de prestar atención o no a esta información, según el esquema deprotección que pretenda armar.El esquema de protección más elemental que se puede armar sería invocar el comando "Iniciarconexión", verificar si hay protector instalado para permitir o no la normal ejecución del programa y

Page 47: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

41Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

luego invocar el comando "Finalizar conexión".

Para armar un esquema más elaborado, una vez iniciada la conexión se puede invocar a los comandosque le permiten leer o grabar información en la memoria de la llave. Otra alternativa es invocar elcomando "Verificar conexión" en puntos críticos del programa para asegurarse que la llave sigueinstalada y evitar que el usuario final la retire luego de haber entrado al programa.

Los pasos a seguir cada vez que se invoca a la función HARDkey son los siguientes:

Generar una cadena con los parámetros necesarios para la operación.

Cifrar la cadena para obtener un nivel de seguridad adicional.

Invocar la función HARDkey con la cadena cifrada como parámetro.

Descifrar la cadena de parámetro modificada por la función.

Validar que la cadena retornada cumpla con el formato requerido.

Extraer la información de la operación efectuada.

5.3.3 Entrenamiento de Protección Interactiva

Desde el sistema Entorno de Gestión Integral se encuentra disponible un sistema que permite eltesteo de forma sencilla de todos los comandos de la API HARDkey NET.

Page 48: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

42 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Para mayor información vea el Manual del Entorno de Gestión Centralizado.

5.3.4 Ejemplo práctico de protección interactiva

El siguiente proyecto muestra una implementación básica para chequear la llave y leer el contenidode memoria no-volátil, desarrollado en Visual Basic. El código apunta a ser claro y conciso. Si bienpuede ser usado como base para incluir en su proyecto personal, una aplicación completa debe incluiralgunas técnicas para complicar el seguimiento del código por parte de hackers.

Los componentes básicos del proyecto son el formulario donde se encuentran la pantalla y el códigodel proyecto, y el módulo HKDEMO.BAS. Este módulo contiene la declaración de la librería DLL con lafunción HARDkey(), las variables públicas y dos vectores que usan las rutinas para cifrar la cadena decomandos.

'------------------------------------------------------------------------' HKEYDEMO.BAS'------------------------------------------------------------------------

Declare Function HARDkey Lib "hkey-w32.dll" (ByVal buf As String) As Long

Page 49: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

43Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

'El entorno de desarrollo de Visual Basic requiere que las librerías'DLLs se encuentren en el directorio \WINDOWS para poder abrirlas.'El ejecutable ya compilado la encuentra tanto en el directorio \WINDOWS'como en el directorio desde donde corre el programa.Public sBox1 As VariantPublic sBox2 As VariantPublic password As String

Public Sub InitSB()'Esta rutina debe ser invocada al cargar la FORM donde se realiza el'chequeo de la llave. En ella se inicializan los vectores sBox que'usan las rutinas CifraString() y DescifrString() para cifrar'la cadena que se pasa a la funcion HARDkey().

password = "****PASSWORD****" 'Debe coincidir con la password que declaró en el campo 'PASSWORD 'para cifrado de parámetros' del instalador del kit. 'Debe tener una longitud fija de 16 caracteres.

sBox1 = Array(&HC5, &H23, &HE3, . . ., &HAA, &HEA, &HB6, &H51) sBox2 = Array(&H45, &H90, &HD7, . . ., &HBA, &H9A, &H76, &HFC) 'Estos vectores son distintos para cada kit. No cambie sus valores, 'incluya este módulo en su proyecto tal como está.

End Sub

El formulario principal del proyecto es el siguiente:

'------------------------------------------------------------------------' HKDEMO.FRM - Ejemplo para Visual Basic'------------------------------------------------------------------------

Public buffer As StringPublic l As LongPublic relleno As StringPublic random As StringPublic hkestado As StringPublic conexion As String

Private Sub Form_Load() InitSB'Inicializa variables para CifraString() y DescifraString()End Sub Private Sub InitBuffer()'Inicializa con 10 bytes al azar la string usada para pasar los'parámetros a la función HARDkey() Randomize relleno = Space(200) buffer = "" For l = 1 To 10 buffer = buffer + Chr(Int((Rnd * 255) + 1)) Next lEnd Sub

Private Sub IniciarConexion_Click()'Este botón chequea la llave invocando el comando Iniciar Conexión.

'Deshabilito chequeo en red, limitando la busqueda de la llave a los 'puertos paralelo. Para chequear en red y local elimine esta parte. InitBuffer buffer = buffer + " 00000000 00000 00000 0009 00001 00000 00000 _ 00000 00000 00000 00000 00000" buffer = buffer + relleno Call CifraString(buffer, password) l = HARDkey(buffer)

'Chequeo la llave invocando el comando Iniciar Conexión InitBuffer random = buffer buffer = buffer + " 00000000 00000 00000 0000 00 0" buffer = buffer + relleno CadenaEnviada.Text = Mid(buffer, 12) Call CifraString(buffer, password) l = HARDkey(buffer)

Page 50: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

44 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Call DescifraString(buffer, password)

'Analizo la respuesta para determinar si está la llave RespuestaRecibida.Text = Mid(buffer, 12) If (ValidaString(buffer, random) = True) Then LeerCadena.Enabled = True FinConexion.Enabled = True Estado.Text = "Se ha encontrado el HARDkey " + Mid(buffer, 27, 10) conexion = Mid(buffer, 12, 8) Else Estado.Text = hkestado conexion = "00000000" End IfEnd Sub

Private Sub LeerCadena_Click()'Este botón leer los 64 bytes de memoria no-volátil de la llave

InitBuffer random = buffer buffer = buffer + " " + conexion + " 00000 00000 0005 00044 00064" buffer = buffer + relleno CadenaEnviada.Text = Mid(buffer, 12) Call CifraString(buffer, password) l = HARDkey(buffer) Call DescifraString(buffer, password)

'Analizo respuesta para ver si el comando fue completado RespuestaRecibida.Text = Mid(buffer, 12) If (ValidaString(buffer, random) = True) Then Estado.Text = "Cadena leida con exito" Else Estado.Text = hkestado End IfEnd Sub

Private Sub FinConexion_Click()'Este botón cierra la conexión con la llave InitBuffer random = buffer buffer = buffer + " " + conexion + " 00000 00000 0002 00" buffer = buffer + relleno CadenaEnviada.Text = Mid(buffer, 12) Call CifraString(buffer, password) l = HARDkey(buffer) Call DescifraString(buffer, password)

'Analizo respuesta para ver si el comando fue completado RespuestaRecibida.Text = Mid(buffer, 12) If (ValidaString(buffer, random) = True) Then LeerCadena.Enabled = False FinConexion.Enabled = False Estado.Text = "Conexión finalizada con exito" Else Estado.Text = hkestado End IfEnd Sub

Sub CifraString(buffer As String, password As String)'Esta rutina cifra la cadena que se pasa como parámetro a la función'HARDkey().

Dim i As Integer Dim ctemp As Integer Dim cAnterior As Integer Dim k As Integer Dim pw As Integer Dim bufEnc As String

cAnterior = 0 bufEnc = "" For i = 0 To 199

Page 51: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

45Cómo proteger su aplicación

© 2007 - SITEPRO S.A.

ctemp = Asc(Mid(buffer, i + 1, 1)) If (ctemp < 0) Then ctemp = ctemp + 256 End If ctemp = ctemp Xor sBox1(cAnterior) For k = 0 To 15 pw = Asc(Mid(password, k + 1, 1)) If ((k Mod 2) = 1) Then ctemp = ctemp Xor sBox1(sBox2(pw)) ctemp = sBox2(ctemp) Else ctemp = ctemp Xor sBox2(sBox1(pw)) ctemp = sBox1(ctemp) End If Next k ctemp = ctemp Xor sBox1(i) cAnterior = ctemp bufEnc = bufEnc + Chr(ctemp) Next i buffer = bufEncEnd Sub

Sub DescifraString(buffer As String, password As String)'Esta rutina descifra la cadena que devuelve la función HARDkey().

Dim i As Integer Dim ctemp As Integer Dim cAnterior As Integer Dim k As Integer Dim pw As Integer Dim bufEnc As String

cAnterior = 0 bufEnc = "" For i = 0 To 199 ctemp = Asc(Mid(buffer, i + 1, 1)) If (ctemp < 0) Then ctemp = ctemp + 256 End If ctemp = ctemp Xor sBox1(cAnterior) For k = 0 To 15 pw = Asc(Mid(password, k + 1, 1)) If ((k Mod 2) = 1) Then ctemp = ctemp Xor sBox1(sBox2(pw)) ctemp = sBox2(ctemp) Else ctemp = ctemp Xor sBox2(sBox1(pw)) ctemp = sBox1(ctemp) End If Next k ctemp = ctemp Xor sBox1(i) cAnterior = Asc(Mid(buffer, i + 1, 1)) bufEnc = bufEnc + Chr(ctemp) Next i buffer = bufEncEnd Sub

Function ValidaString(buffer As String, random As String) As Boolean'Esta rutina analiza que la string devuelta por la'función HARDkey() sea consistente.

Dim i As Integer Dim result As Boolean Dim st As String

For i = 1 To 10 Mid(buffer, i, 1) = Chr(sBox2(Asc(Mid(buffer, i, 1)))) Next i result = True For i = 1 To 10 If (Mid(buffer, i, 1) <> Mid(random, i, 1)) Then result = False End If Next i

Page 52: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

46 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

If (Mid(buffer, 11, 1) <> " ") Then result = False End If If (Mid(buffer, 20, 1) <> " ") Then result = False End If If (Mid(buffer, 26, 1) <> " ") Then result = False End If If (Mid(buffer, 31, 1) <> "-") Then result = False End If If (Val(Mid(buffer, 21, 5)) <> 0) Then result = False End If st = Mid(buffer, 21, 5) If (st = "00000") Then hkestado = "El comando se completó con exito" If (st = "00002") Then hkestado = "No se encontró protector" If (st = "00004") Then hkestado = "Formato de cadena incorrecto" If (st = "00010") Then hkestado = "Número de conexión no válida" If (st = "00011") Then hkestado = "Se superó límite de usuarios" If (st = "00012") Then hkestado = "Módulo yá en uso por la aplicación" If (st = "00013") Then hkestado = "Módulo no levantado por aplicación" If (st = "00020") Then hkestado = "No hay drivers HARDkey instalados" If (st = "00021") Then hkestado = "Versión de drivers obsoleta" ValidaString = resultEnd Function

Private Sub SALIR_Click() EndEnd Sub

Las rutinas CifraString() y DescifraString() implementan un algoritmo para procesar la cadena decaracteres pasada como parámetro a la función HARDkey(). Este algoritmo se basa en dos vectores de256 caracteres que están personalizados para cada kit y una password de 16 caracteres que la defineel desarrollador. Esta password debe ser la misma que definió en el campo "password para cifrado deparámetros en protección interactiva" al instalar el kit. El programa instalador se encarga deincorporar esta password en la librería HKEY-W32.DLL en ese momento.

Page 53: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

6

Page 54: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

48 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

6 Utilitarios y drivers para manejar las llaves

6.1 Instalador del Servidor de llaves en Red

El kit HARDkey NET viene equipado con una herramienta especialmente desarrollada para compartirllaves en redes Windows.El Servidor de llaves en red, se presenta en modo aplicación y en modo servicio.

En sus dos versiones permite controlar la cantidad de terminales conectadas simultáneamente alsistema protegido, a su vez permite realizar validaciones de licencias para diferentes módulos. Vea elpunto Servidor de acceso a la llave para redes para mayor información sobre este punto.

Aquí detallaremos los pasos a seguir para realizar la instalación del servidor de llaves en red.

6.1.1 Instalación del servidor de llaves en red

En esta sección se describe como realizar la instalación del servidor de llaves en red y componentesadicionales utilizando Instalador de Servidor de llaves HARDkey NET en Red.

Abra el sistema para la instalación del servidor de llaves, la siguiente imágen muestra la pantalla delmismo.

Page 55: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

49Utilitarios y drivers para manejar las llaves

© 2007 - SITEPRO S.A.

Pasos a seguir para realizar una instalación Rápida:1- Verificar si las componentes de este instalador están actualizados.Antes de comenzar con la instalación es recomendable verificar que la versión que se va a instalaresté actualizada. Para ello, el instalador cuenta con una opción que realiza las verificaciones de todoslos componentes de forma automática.

Presione el botón << Buscar Actualizaciones en Internet >> para obtener un reporte de loscomponentes que se encuentran disponibles en la web. Si algún componente presenta el signo deinterrogación, significa que ese componente ha sufrido cambios importantes. Por ejemplo, en lasiguiente imágen, vemos que se listan los componentes uno a continuación del otro. Cadacomponente muestra una breve descripción de las nuevas funcionalidades o correcciones que posee.En la columna versión, se muestra la versión de los componentes disponible en la web.

Page 56: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

50 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Luego del cuadro de actualizaciones disponibles en la web, el sistema le indica si es convenientedescargar la nueva versión. Los posibles mensajes son los siguientes:

Page 57: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

51Utilitarios y drivers para manejar las llaves

© 2007 - SITEPRO S.A.

Los componentes que tiene instalados están desactualizados. Es aconsejable descargar la nuevaversión.

Los componentes esenciales del instalador están al día. \nNo es imprescindible descarga la nuevaversión.

Todos los componentes de este instalador están al día. No se requiere descarga.

En el caso que aparezca el símbolo de admiración es muy importante que descargue la actualizaciónde la web.

2- Descargar actualizaciones de la webPara descargar la últimaversión del software de la web presione el botón <<Descargar>>. En la mismacarpeta donde se encuentra este ejecutable se descargará la nueva versión comprimida. Para realizarla instalación, deberá descomprimir el archivo y ejecutarlo.

3- Instalar el servidor de llavesPara realizar la instalación del servidor de llaves presione el botón <<Instalar>>. El proceso deinstalación no requiere reiniciar el equipo.Si el sistema operativo es Windows 2000, XP, 2003 o Vista se instalará el servidor en modo servicio. Alrealizar la instalación, el servicio se ejecutará compartiendo las llaves conectadas en la red.Si el sistema operativo es Windows 98 SE, o Millenium se instala el servidor de llaves en modoaplicación.

En pantalla usted podrá ver la dirección IP de la PC donde será instalado el servidorpara compartir llaves en red. Este dato es muy importante si desea configurar en losclientes el número de IP desde donde se está compartiendo la llave.

Instalación de Componentes Adicionales:Antes de realizar la instalación, seleccione de pantalla que componentes adicionales desea que seinstalen.

Si usted está utilizando llavesparalelo, habilite la opción "Driverpara llaves de puerto paralelo.

Page 58: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

52 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

6.2 Instalador de drivers para llaves de Puerto Paralelo

Para el correcto funcionamiento de las llaves de protección de puerto paralelo en ambientesWindows, es necesario instalar los drivers apropiados antes de correr una aplicación protegida. Estose realiza mediante un utilitario instalador cuya descripción y funcionamiento se detallan acontinuación.

En el caso de Windows NT y Windows 2000, la arquitectura del sistema operativo impide que unaaplicación acceda directamente a recursos de hardware, en nuestro caso el puerto paralelo dondeestá instalada la llave.

En Windows 95/98, los drivers VxD permiten tener el control total del procesador de la PC, evitandoque otras aplicaciones se ejecuten en forma concurrente. Por otro lado si un trabajo de impresión yaestá en curso en el momento de chequear el protector, el driver le roba el control al spooler duranteunos pocos mili-segundos, y luego de acceder a la llave lo libera para que la impresión continúenormalmente.

Otra característica fundamental de los drivers es su capacidad de acceder a la llave aunque seencuentren instalados otros drivers y/o cajas de herramientas de impresoras que bloquean el puertosparalelo.

Si la PC donde se están instalando los drivers y la llave, a su vez va a compartir el protector para quepueda ser utilizado desde otros puestos de la red, será necesario instalar también el servidor de redpara llaves HARDkey.

Solo es necesario instalar los drives en las máquinas que tengan una llave conectada al puertoparalelo. Si la aplicación protegida trabaja en una red y la llave se encuentra en otra PC remota o en elservidor, las PCs clientes no necesitan ningún driver.

Tampoco hace falta driver para las llaves HARDkey USB. Los protectores para interfaz USB trabajancon drivers Standard de Windows por lo cual no es necesario instalar otros drivers para poderutilizarlas. Estas llaves se pueden usar en PCs con sistema operativo Windows Me/XP/2000 y 2003.Los sistemas operativos Windows 95/98 y NT no tienen los drivers necesarios para el manejo dedispositivos USB porque fueron desarrollados antes que se popularizara dicha interfaz. En estos casossolo se podrán utilizar llaves de puerto paralelo.

6.2.1 Instalación desde la ventana del utilitario

Para simplificar y automatizar la instalación de los drivers que requiere cada sistema operativo,dentro del kit encontrará un utilitario llamado HKDRIVER.EXE que realiza este proceso. Este programaauto-contenido (los drivers que se deben instalar están dentro del propio programa) al ser ejecutadopresenta una pantalla con las opciones de instalar, remover o salir sin realizar cambios.

Page 59: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

53Utilitarios y drivers para manejar las llaves

© 2007 - SITEPRO S.A.

En la parte superior se muestra un recuadro donde se puede ver la versión del sistema operativodetectada y si los drivers ya se encuentran instalados o no.

Al seleccionar la opción "Instalar" el utilitario procede a copiar y registrar los driverscorrespondientes.

Sobre Windows NT/2000/2003 y XP se copia el archivo:

HKEY-KDD.SYS en el directorio WINDOWS\SYSTEM32\DRIVERS

Mientras que en Windows 95/98/Me se copia el archivo:

HARDKEY.VxD en el directorio WINDOWS\SYSTEM

Si la casilla "Configurar esta PC para compartir la llave en la red" está tildada, el instalador copiará yregistrará automáticamente el servidor de red para llaves.Esto le permitirá compartir las llaves HARDkey-NET (carcasa naranja) para que pueda ser accedidadesde otros puestos de red que corran la aplicación protegida.El utilitario servidor de red para llaves sólo debe ser cargado en la PC que tenga instalado el protector.En las PC cliente deje esta casilla sin tildar al instalar los drivers.

Según en que plataforma está corriendo, se instalará alguno de los siguientes componentes:

Page 60: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

54 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

En Windows NT/2000/2003 y XP HKNETSRV.EXE en el directorio WINNT\SYSTEM32

En Windows 95/98/Me HKEYNET.EXE en el directorio WINDOWS\

Estos componentes quedan configurados para que se inicien automáticamente al cargar Windows.

Una vez terminada la instalación, es necesario reiniciar el equipo para que los cambios tengan efecto.

6.2.2 Instalación de drivers en modo comando

El utilitario de instalación puede ser invocado en modo comando. De esta forma se puede armar unesquema donde el programa que instala su aplicación invoque al HKEYDRV.EXE pasándole elparámetro correspondiente, según se quiera instalar o remover los drivers. Mientras esto sucede suprograma instalador puede estar mostrando alguna información personalizada, sin que en pantallaaparezca referencia alguna a SITEPRO o HARDkey.

HKEYDRV I (instalar drivers)

HKEYDRV S (instalar servidor de red para llaves)

HKEYDRV I S (instalar drivers y servidor de red para llaves)

HKEYDRE D (desinstalar todo sin mostrar pantalla)

En todos los casos si se trata de instalar una versión anterior sobre la que ya estainstalada, se presenta un cartel informándole al usuario sobre esta situación ypreguntando si desea sobre escribir.

6.2.3 Consideraciones importantes

1. Los drivers tanto de Windows 2000/NT como de Windows 95/98 son genéricos, esto significa quedistintas aplicaciones protegidas (aunque sean de diferentes kit) pueden invocarlo para acceder a lallave.

2. Recuerde siempre entregar el utilitario HKEYDRV.EXE junto a su programa protegido, y realizar la

Page 61: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

55Utilitarios y drivers para manejar las llaves

© 2007 - SITEPRO S.A.

instalación de los drivers antes de ejecutar su aplicación.

6.3 Personalización y configuración de llaves HARDkey®

6.3.1 Cómo editar la memoria de las llaves HARDkey

Las llaves recién compradas están en un estado Virgen, requieren ser codificadas con los parámetrospropios del kit para poder ser reconocidas por las rutinas de protección.

El proceso de personalización se lleva a cabo utilizando la llave programadora. Para mayorinformación sobre Llaves Programadoras vea La llave programadora.

Desde el entorno de Gestión Integral para protección de software, usted podrá personalizar yconfigurar todas las opciones en la memoria de las llaves HARDkey. Para mayor información sobre elentorno de gestión vea el manual Entorno de Gestión.chm.

Page 62: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

56 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

6.4 Actualización remota de llaves HARDkey®

6.4.1 Cómo funciona el utilitario de actualización remota

Supongamos que usted ya desarrolló y protegió una aplicación con HARDkey. Esta aplicación seencuentra instalada en un cliente final y se plantea el caso de tener que habilitar un módulo más,configurarle mayor número de licencias en red o extenderle la fecha en que expira el uso delsoftware.

Estos parámetros se graban en determinadas celdas de memoria dentro del protector.

El sistema de actualización remota de llaves (SAR) permite generar un ejecutable actualizador paraenviar al cliente final, el cual al correr reconfigurar los parámetros deseados dentro de la memoria delprotector.

Esta metodología también es útil para la venta de paquetes enlatados a través de distribuidores. Eneste caso se puede armar un esquema en el cual el distribuidor tiene por un lado paquetes completosdel software y por otro llaves sin licencias habilitadas. Cuando se concreta una venta el distribuidorinforma qué módulos vendió con lo cual se le pasa el archivo correspondiente para habilitar una llaveen particular.

Para una descripción detallada de cómo generar actualizaciones remotas vea el manual Entorno degestión Integral.

6.5 Cifrador manual de archivos

6.5.1 Descripción del cifrado de archivos

El entorno de protección automática además de proteger el ejecutable, permite realizar el cifradoinicial de las bases de datos asociadas a la aplicación. Esto es así cuando se especifica el nombre y elcamino completo de los archivos, automáticamente al proteger se cifran los archivos seleccionados.Vea el manual Entorno de Gestión Integral para mayor información sobre las distintas opciones delcifrador de archivos.

En el caso que se introduzcan nombres con comodines (ej. *.DBF, etc) o que los datos en cuestión noestuvieran accesibles en el momento de la protección, el cifrado inicial de dichos archivos puederealizarse manualmente mediante el ítem Cifrado de archivos desde el Entorno de Gestión Integral.

Cuando los archivos de datos aún no estén creados podemos proteger la aplicación y posteriormentecifrarlos desde el cifrador de archivos. En este proceso debemos especificar la clave de cifrado, la cualno debe contener más de 20 caracteres.

Además podemos seleccionar la opción "Cifrado Personalizado" que usa un algoritmo muy potente y

Page 63: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

57Utilitarios y drivers para manejar las llaves

© 2007 - SITEPRO S.A.

es el recomendado por su seguridad, en cambio para aquellos programadores que necesiten cifrardatos compatibles con versiones protegidas anteriormente no deben habilitar esta opción.

El "Cifrado Personalizado" utiliza funciones "Query" que vienen con los microprocesadores de llavesHARDkey, por ese motivo el utilitario requiere que se coloque una llave del kit en la PC, además debecolocar las claves del protector para poder acceder al cifrado del archivo. Puede usarse cualquier llavedel kit, y las claves de acceso pueden ser cualquier valor.

Cifrado Modo Comando:Por otro lado, el kit cuenta con una herramienta que permite cifrar los archivos en modo comando.Puede invocarse el utilitario pasando como parámetro el password y nombre de los archivos a cifrar.La sintaxis de invocación es la siguiente:

hkencrip "password_cifrado" <archivo_origen> <archivo_destino>

Password_cifrado es la clave de cifrado, no debe contener mas de 20 caracteres entre los cuales nopuede haber comillas, archivo_origen es la ruta del archivo que se va a cifrar y archivo_destino la rutadonde se almacenará el archivo_origen cifrado.

Para obtener el mayor nivel de seguridad utilice una clave de cifrado del largo máximo permitido (20caracteres). Evite usar como clave nombres conocidos, una buena técnica es mezclar letras enminúsculas y mayúsculas con caracteres de puntuación al azar.

Por ejemplo si alguien pretendiera descifrar información mediante criptoanálisis cifrada con la clave"Batman" le resultaría mucho más fácil romper esta clave que si utilizamos algo tipo"X2sdilañ/m_SD$$%fo&".

Esta clave para mas seguridad puede almacenarse en el memoria de una llave HARDkey y así quedar aresguardo de que nadie se entere de ella.

6.6 Utilitario para diagnostico de llaves y solución de problemas

El utilitario de diagnóstico (HKINFO.EXE) permite obtener una radiografía del sistema donde estáninstaladas las llaves electrónicas.

Entre las opciones a chequear se encuentran: verificar si los drivers para llaves paralelo ó controlesActiveX están correctamente instalados, verificar si las llaves conectadas funcionan correctamente,busca llaves compartidas en redes Novell y Windows y revisar parámetros de búsqueda.

La siguiente imágen muestra la pantalla inicial del utilitario de diagnóstico.

Page 64: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

58 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

6.6.1 Componentes instalados

En la primer ficha, Componentes Instalados, se muestra un informe de los componentes HARDkeyque se encuentran instalados.

Los drivers que se muestran son para los distintos modelos de llaves que puede soportar el sistema deprotección HARDkey.La fila "Servidor de llaves para red" indica si el servidor de llaves está activado, esto es indispensablecuando la PC comparte la llave en red.

Page 65: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

59Utilitarios y drivers para manejar las llaves

© 2007 - SITEPRO S.A.

Para que el utilitario refleje los últimos cambios realizados al sistema debemos presionar el botón <<Refrescar >>

6.6.2 Prueba de llaves conectadas

Esta opción permite básicamente realizar un diagnóstico para determinar el funcionamiento de lasllaves electrónicas.Al presionar el botón << Refrescar >> se realiza una comprobación para determinar que llaves seencuentran conectadas.

Es fundamental previamente haber verificado la ficha "Componentes instalados" para asegurarse quelos drivers correspondientes se encuentren instalados.

Page 66: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

60 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Luego de realizarse la comprobación se lista toda la información obtenida de esta búsqueda.Vale aclarar que por defecto no se buscan llaves en red, para ello debemos seleccionarespecíficamente la opción "Servidor Windows", "Servidor Novell" o "Servidor Linux".

Las distintas columnas muestran características de la llave:La primera columna muestra el modelo de llave localizada.En segundo lugar se muestra el número de lote y serie, que es el identificador único irrepetible; acontinuación se detalla si la llave está personalizada para algún kit, la ubicación donde fueencontrada, la versión de firmware y otros datos adicionales.

En la imagen anterior se muestran 3 llaves localizadas: una llave HARDKEY MIO en el puerto USB, otrallave HARDkey NET en otro puerto USB y por último la misma llave NET pero encontrada a través de lared.

Cuando se buscan llaves en red puede especificarse la dirección "IP" de la PC donde se encuentraconectada. Esto aumenta la precisión de la búsqueda disminuyendo la demora en detectar losprotectores. Ver imágen anterior.En este caso es necesario conocer la dirección IP de la computadoraque tiene la llave instalada y compartida.

Otra de las opciones de la búsqueda de llaves es tildando "Toda la red", no es especifica dirección IPde la PC que comparte la llave. Si bien, este tipo de búsqueda no es tan precisa como la búsqueda porIP, es un mecanismo muy útil cuando tenemos un esquema de IP dinámicas en la red donde estamosrealizando la instalación.

Page 67: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

61Utilitarios y drivers para manejar las llaves

© 2007 - SITEPRO S.A.

6.6.3 Definición de parámetros de búsqueda en red

Esta ficha muestra determinados parámetros que pueden ser configurados para personalizar labúsqueda de las llaves en red:"Cantidad de intentos en red" muestra la cantidad de mensajes que se transmiten buscando una llave,el intervalo de tiempo de espera entre estos mensajes se mide como "Tiempo entre reintentos".

El resto de los parámetros corresponden a valores internos del protector.

6.6.4 Solución de problemas

Desde la última ficha se puede acceder a la guía de instalación y asistencia técnica de las llaveselectrónicas.

Esta guía esquematiza los pasos a seguir en el momento de instalar una aplicación protegida, yestablecer soluciones para los diversos problemas que pueden presentarse.

De no encontrarse la guía, desde esta pantalla puede descargarse de la Web si se dispone de unaconexión a Internet.

Page 68: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

62 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Este utilitario (hkinfo) es de uso genérico y se recomienda distribuirlo junto a su aplicación paraque el usuario final disponga de una herramienta de diagnóstico que le facilitará la tarea deinstalación y mantenimiento.

6.7 Esquema de distribución de llaves

6.7.1 Generación de llaves distribuidor

En ciertos casos donde la distribución del software se realiza mediante representantes quecomercializan nuestros productos en distintas regiones, resulta muy útil facilitarles un stock de llavespara minimizar costos de despacho pero manteniendo el control sobre las licencias que disponen paravender.

Esto se puede llevar a cabo mediante el "Esquema de habilitación parcial al Distribuidor", el cualbrinda la posibilidad de que el distribuidor del software protegido que se encuentra en el exteriorcompre o tenga es stock llaves electrónicas vírgenes, enviándole el desarrollador la herramienta quele permite configurar dichas llaves a medida que se realizan las ventas.

Page 69: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

63Utilitarios y drivers para manejar las llaves

© 2007 - SITEPRO S.A.

Vea en el manual Entorno de Gestión Integral los pasos a seguir para armar un esquema controladode distribución de licencias mediante llaves Distribuidor.

Page 70: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

7

Page 71: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

65Como compartir una llave en una red local

© 2007 - SITEPRO S.A.

7 Como compartir una llave en una red local

7.1 Servidor de acceso a la llave para redes

7.1.1 La llave en una PC con Windows 95/98 o Me

Cuando la llave compartida por las aplicaciones de toda la red se encuentra instalada en una máquinaque corre Windows 95/98/Me, el programa residente que actúa como servidor de acceso al protectorse llama HKEYNET.EXE.

El utilitario instalador de drivers permite instalar en la misma operación este servidor de accesoHKEYNET.EXE.

Este programa se incluye en el grupo "Inicio", para que corra automáticamente al cargar Windows.Para mayor información sobre el instalador de drivers consulte el capítulo "Instalador de drivers paraWindows".

Después de cargarse en memoria, el programa HKEYNET.EXE,se minimiza automáticamente y queda residente en forma deun pequeño icono.

Este residente es genérico por lo tanto es capaz de administrar llaves HARDkey de cualquier kit

Page 72: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

66 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

conectadas al mismo o en distintos puertos paralelos de la PC.

A partir de ese momento, cualquier PC que esté conectada a la red, puede ejecutar una aplicaciónprotegida aunque no tenga una llave instalada, dado que todas compartirán el protector administradopor este residente.

La pantalla del servidor se divide en dos secciones principales, el listado de conexiones activas y unatabla que muestra el detalle de paquetes recibidos por diferentes protocolos.

El listado de conexiones activas muestra el nombre de la PC desde donde se requiere la conexión, lahora en que se inició y el número de lote y serie de la llave con la cual se levantó la conexión.

Haciendo doble-click sobre la conexión se pueden ver los módulos que se están usando y las licenciasglobales.

En la imagen siguiente se está usando 1 licencia del módulo 1.

Page 73: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

67Como compartir una llave en una red local

© 2007 - SITEPRO S.A.

7.1.2 La llave en una PC con Windows NT/2000/2003 o XP

Cuando la llave compartida por las aplicaciones de toda la red se encuentra instalada en una máquinaque corre Windows 2000 o NT, el servidor de acceso al protector tiene la forma de un servicio delsistema operativo que arranca automáticamente al cargar Windows. Este servicio es genérico por lotanto es capaz de administrar llaves HARDkey de cualquier kit conectadas al mismo o en distintospuertos paralelos del servidor.

Al detectar una plataforma NT o Windows 2000, el utilitario instalador de servidor de llaves permitiráinstalar el servidor de acceso a la llave para compartirla con otras máquinas.

El servidor de llaves trabaja por MailSlot y Socket de forma simultánea, para interiorizarsecon más detalle en la configuración de estos protocolos vea la Nota Técnica TN150204.

7.1.3 La llave en un servidor Novell Netware

Para manejar una aplicación protegida con una sola llave instalada en un servidor Novell se debecargar un módulo NLM que actúa como servidor de acceso a la llave.

El módulo HKEYLAN.NLM se encarga de atender los pedidos de acceso a la llave que le llegan desdeotros puestos de red. El módulo es genérico por lo tanto es capaz de administrar llaves HARDkey decualquier kit conectadas al mismo o en distintos puertos paralelos del servidor.Este programa puede ser ejecutado en servidores Novell de versión 3.11 o superior.

En el caso de una red con varios servidores, las PCs clientes deberán estar "logeadas" a dicho servidorpara que las aplicaciones puedan ver la llave.Para ejecutar este módulo en el servidor que tenga llave conectada, se debe copiar el archivoHKEYLAN.NLM que se encuentra en kit de HARDkey, en el directorio \SYSTEM del servidor.

Luego se debe invocar desde la consola del sistema, usando para ello la siguiente sentencia:

LOAD HKEYLAN

Esto cargará en la memoria del servidor el programa, y este quedará listo para atender los pedidos deacceso a la llave. Para que esto se realice automáticamente cada vez que se arranca el servidor, sedebe proceder de la siguiente manera:

Page 74: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

68 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

LOAD INSTALL

Luego debe ir a la opción que dice "Opciones de archivos NCF" u "Opciones de sistema" (según laversión de Novell)

Después se debe seleccionar la opción "Editar archivo AUTOEXEC.NCF"

Una vez que aparezca el archivo, agregar al final la línea LOAD HKEYLAN

Cerrar el archivo y salir del módulo Install pulsando ESC repetidas veces.

Si tiene alguna duda respecto a lo anterior solicite ayuda al administrador del servidor.

Pantalla del módulo HKEYLAN.NLM

Una vez cargado, aparece una pantalla que contiene información sobre el estado del programa(Nombre del servidor, nodo y red del último acceso a la llave, la cantidad de paquetes recibidos, etc).Aparece además una tabla con los números de serie de las llaves que fueron accedidas por algúncliente y en el caso que se este usando el manejo de licencias, la cantidad de usuarios queactualmente están ejecutando la aplicación protegida con esa llave.

Descarga del módulo HKEYLAN.NLM

Para descargar el programa del servidor se debe apretar "Ctrl+Q". Esto desplegará un mensaje dondese pide que confirme la descarga del módulo, recordándole que al realizar esto, las aplicacionesdejarán de ver la llave.Si alguna de las llaves conectadas al servidor tiene uno o más usuarios conectados, el módulo no sedescargará y mostrará un mensaje de aviso. Para descargarlo basta con salir de todas las aplicacionesque estén haciendo uso de la llave, y luego se podrá descargar normalmente.

7.1.4 La llave en un servidor Linux

Esta versión del kit de desarrollo HARDkey cuenta con soporte para servidores Linux, ahora ustedpodrá compartir desde un servidor Linux la llave, validando usuarios concurrentes, almacenandoinformación en la llave y todas las funcionalidades que hasta el momento sólo se podían realizardesde servidores Windows o Novell.

El kit de desarrollo actualmente cuenta con soporte para Red Hat.

Los modelos de llaves que se pueden compartir desde servidores Linux son SuperPro USB y 797 parapuerto paralelo.

A continuación se describe como instalar los drivers de la llave y el servidor de llaves en distribuciónRed Hat.

Page 75: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

69Como compartir una llave en una red local

© 2007 - SITEPRO S.A.

7.1.4.1 Red Hat

En esta sección se describen los procesos a seguir para poder compartir llaves SuperPro desdeservidores Linux distribución Red Hat.

El procedimiento es muy sencillo y fácil de realizar, se puede dividir en dos pasos: instalar los driverspara llaves SuperPro e instalar el demonio para compartir la llave en red.

Como primer paso instalemos el driver para manejo de la llave SuperPro.

En la carpeta Red\Linux\Red_Hat\ encontrará todos los archivos necesarios para instalar el demonio ylos drivers en Linux.

Ingrese a Linux como usuario root, esto es necesario para tener los permisos necesarios querequieren las operaciones siguientes.

Luego cree en /root una carpeta llamada hardkey. Copie allí todos los archivos y carpetas que seencuentran en la carpeta Red\Linux\Red_Hat\.

Posiciónese en la línea de comando en la carpeta /root/hardkey/SuperPro. Escriba ./install.sh.

En pantalla se muestra el acuerdo de licencia, léalo y presione "Enter" para ir avanzando.

Cuando llega al final escriba "y" para indicar que está de acuerdo con la licencia, luego muestra enpantalla las siguientes opciones:

--------------------------------------------------------------------Sentinel SuperPro version 6.3.1 Installation Script Copyright(C)2003 Rainbow Technologies, Inc. All rights reserved.--------------------------------------------------------------------This script will install - Sentinel Unix Driver (SUD 5.50.0) - SSP 6.3.1 SDK and - Related Utilities.--------------------------------------------------------------------This script will install Sentinel Parallel driver and/or USB daemon. 1 : Parallel Driver Only. 2 : USB Daemon Only. 3 : Parallel Driver and USB Daemon both.Please enter your choice:

Seleccione 1 si solamente desea instalar el driver para llaves por puerto paralelo modelo 797, 2 encaso que desee solamente instalar el driver USB o 3 para instalar ambos drivers.

Luego de instalar el driver debe ejecutar el demonio que comparte la llave. Para ello desde la línea decomando escriba:

[root@ hardkey]# ./hardkey_daemon startIniciando /root/hardkey/hksrvx: [ OK ]

Page 76: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

70 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Este comando inicia el demonio.Si el demonio se inicia correctamente sobre el lado derecho de la pantalla muestra [ OK ].

Una vez iniciado la llave está compartida en red, vea como debe configurar su aplicación parachequear la llave en linux.

Para configurar que el demonio se cargue al iniciar Linux ejecute la siguiente instrucción en elservidor:

ln -s /etc/init.d/hardkey_daemon.sh /etc/rc3.d/s98hardkey

Para detener el demonio desde la línea de comando escriba:

[root@ hardkey]# ./hardkey_daemon stopDeteniendo /root/hardkey/hksrvx: [ OK ]

También el script muestra el estado del demonio pasándole como parámetro <<status>>:

[root@ hardkey]# ./hardkey_daemon statushksrvx (pid 17525 17524 17519) is running...

El servidor para compartir la llave fue testeado en Red Hat linux 8.0.

7.2 Administración de licencias en una red local

La flexibilidad de HARDkey permite implementar el control de licencias, tanto a nivel global paraaplicaciones de software únicas, como de manera independiente para cada módulo en sistemas desoftware modulares. La diferencia entre una aplicación de software única y una aplicación desoftware modular reside en el modo de comercialización que se aplica a la misma.

Una aplicación global consiste en un sistema de software que posee integrado todas las herramientasque fueron diseñadas para cubrir las necesidades que pueden surgir del uso de la aplicación. Unaaplicación modular consiste en un conjunto de aplicaciones o herramientas que se adquieren porseparado, según la necesidad del cliente, y que permiten agregar funcionalidades al objetivo de laaplicación.

Para ambos casos, HARDkey permite implementar un esquema de manejo de licencias similares,controlando la cantidad de usuarios que pueden ejecutar simultáneamente la aplicación protegida ynegando la solicitud de ejecución cuando ha sido alcanzado el número máximo que se acordó en lalicencia.

Page 77: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

71Como compartir una llave en una red local

© 2007 - SITEPRO S.A.

7.2.1 Control de licencia global

Cuando la aplicación consiste en un programa único se puede utilizar el control de licencia global pararestringir el máximo número de usuario que podrán acceder a la aplicación en forma simultánea.En el caso de proteger el ejecutable con el método automático, este control lo realiza directamente larutina de protección en función de los parámetros que se hayan configurado en el proyecto

Las alternativas disponibles son:

No limitar la cantidad de usuarios: cualquier usuario de la red que tenga instalada la aplicaciónpodrá ingresar mientras haya un protector que lo habilita.

Limitar la cantidad de usuarios a un valor fijo: en este caso el número máximo de usuariossimultáneos que pueden ingresar a la aplicación está grabado como un parámetro en el propioprograma protegido. Cuando se carga la aplicación, las rutinas de protección comparan este valorcontra un contador administrado por el servidor de acceso a la llave para verificar si hay licenciasdisponibles.

Limitar la cantidad de usuarios según valor en la llave: en este caso el número máximo de usuariossimultáneos que pueden ingresar a la aplicación está grabado como un parámetro en una celda

Page 78: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

72 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

especial de la llave. Esto permite en cualquier momento agregar o quitar licencias con sólo cambiareste parámetro en la llave.

Si la aplicación se protege en el modo interactivo el desarrollador debe implementar la validación dellímite de licencias por programa basándose en el comando "Iniciar conexión" para saber cuantosusuarios están compartiendo la llave en ese momento y cual es el límite configurado en la llave.

7.2.2 Control de licencias en sistemas modulares

Esta característica del sistema de protección permite armar un esquema de licencias específico paracada parte de un programa compuesto de varios módulos.

Por ejemplo, usted vende una sistema comercial que contiene cinco programas diferentes:Facturación, Stock, Sueldos, Contabilidad, Gestión

El cliente final compra dos(2) licencias para Facturación, cinco(5) licencias para Stock, una(1) licenciapara Sueldos, tres(3) licencias para Contabilidad y cuatro(4) licencias para Gestión.

HARDkey realizará los chequeos correspondiente para garantizar que la cantidad de usuariossimultáneos de un mismo programa no supere los límites de licencia para ese módulo, utilizandoúnicamente una llave en toda la red.

Cuando un usuario deja de utilizar la aplicación, la licencia que estaba siendo utilizada,automáticamente queda disponible para su re-utilización.

Una característica importante de HARDkey es que el cliente puede adquirir en cualquier momentouna nueva licencia para utilizar los otros módulos, o aumentar la cantidad máxima de usuariospermitidos.

Usted simplemente deberá generar una clave que actualice la licencia existente, sin necesidad deinstalar un nuevo software en el cliente o reemplazar la llave electrónica de protección.

Si utiliza el método de protección automática lo único que deberá especificar es el número de móduloque le asignó a cada programa a la hora de proteger cada aplicación. Luego configurar las llaves con lacantidad de licencias deseadas para cada módulo, antes de entregarla al cliente final.

Si la aplicación se protege en el modo interactivo el desarrollador debe implementar la validación dellímite de licencias por módulo basándose en el comando "Iniciar conexión" para saber cuantosusuarios están compartiendo la llave en ese momento y cual es el límite configurado en la llave.

En el equipo que se instala la llave HARDkey es necesario realizar la instalación de los drivers,

Page 79: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

73Como compartir una llave en una red local

© 2007 - SITEPRO S.A.

mediante el utilitario HKEYDRV.EXE e instalar el servidor de llaves HARDkey.El Servidor HARDkey es una pequeña aplicación dependiente del sistema operativo que se ejecutaráen el momento de arranque del equipo y permitirá compartir la llave, pudiendo ser consultada desdelos puestos de trabajo en la red.Además es el responsable de administrar el control de licencias.

Page 80: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

8

Page 81: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

75Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

8 Interfaz de Programación de Aplicación (API)

8.1 Formato de la subcadena general

El API (Application Programming Interface) de HARDkey consiste en una función que realiza laoperación indicada según una cadena de parámetros.

HARDkey(cadena_parámetro)

La cadena_parámetro es una string de 200 caracteres utilizada como buffer para la transacción dedatos entre la aplicación y la DLL. Al invocar la función en esta cadena se pasan por referencia losparámetros específicos del comando que se desea ejecutar. Cuando retorna contiene el resultado dela operación.

Se utiliza este método como pasaje de parámetros con la intención de incrementar la seguridad en lacomunicación con la API. Al encapsular la información transmitida a la llave de protección, evitamoslas aplicaciones "espías", cuyo propósito es interpretar la información enviada desde y hacia la DLL.Luego, estudian esa información para simular respuestas que se quieran obtener, por ejemplocontestando siempre a la aplicación que hay llave conectada en la PC.

Esta string se debe cifrar antes de invocar a la función HARDkey mediante un esquema que se detallaen "Protección interactiva de ejecutables".

Una vez que la función retorna, la string respuesta debe ser descifrada para obtener los valoresfinales.

El método de cifrado que empleamos transforma la cadena de forma tal, que dos cadenas iguales alcifrase son distintas, lo que aumenta de modo importante la seguridad de comunicación ya que enesta no se repite la información enviada.

A diferencia de otros productos de protección de software, la interfase HARDkey es robusta yconfiable, manejando un esquema de seguridad simple de usar.

Con los distintos comandos se pueden diseñar métodos para prevenir ataques de piratería.

Algunas características que se pueden controlar son la fecha de vencimiento, cantidad de ejecuciones,límite de usuarios simultáneos, validación a través de redes, además mecanismos propios de cadaaplicación en particular.

El esquema que sigue representa la comunicación entre la aplicación protegida y la librería deHARDkey, muestra la irrupción de hackers intentando interpretar la comunicación.

Page 82: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

76 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

El formato de la cadena_parámetro se divide en dos partes principales, la primera llamadasubcadena_general transporta información básica, todos los comandos usan el mismo formato.

La segunda llamada subcadena_comando, transporta información particular necesaria en los distintoscomandos; por ejemplo el comando leer celda en la subcadena_comando envía un parámetro queindica el número de celda a leer; sin embargo el comando grabar celda en la subcadena_comandoenvía dos parámetros, el valor a almacenar y el número de celda.

cadena_parámetro = subcadena_general (caracteres 0 al 30) + subcadena_comando (caracteres 31 enadelante)

La respuesta es enviada en la misma cadena_parámetro, y para cada comando la respuesta tiene unformato específico de acuerdo a la información obtenida de la llave.

La subcadena_general también se respeta en todas las respuestas recibidas, sin embargo difiere de lascadenas enviadas.

Entre la aplicación protegida y la llave electrónica existen varios métodos de protección, losprincipales se encuentran en la comunicación entre la aplicación y la DLL, entre la DLL y los drivers, ylos drivers con la llave electrónica.

Page 83: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

77Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

8.2 Formato de la subcadena comando

Es el formato común a todos los chequeos, este se encuentra como preámbulo de la cadena enviadaen cada comando. La sección salida describe el formato de la cadena respuesta de la llave que escomún a las respuestas de todos los comandos.

Entrada - Formato

Detalle de los campos:

Caracteres Random: Inicio: 0Largo: 10Valor: Cualquier cadena de 10 caracteres generados al azar.Descripción: En cada invocación a la función HARDkey(...) se incluyen 10 caracteres al comienzo de lacadena_parámetro generados aleatoriamente. Esta técnica se utiliza para que todas las cadenasgeneradas se distingan unas de otras aunque la información enviada sea la misma. Por otro lado, aldescifrar la respuesta enviada por la librería se comparan estos 10 caracteres con los enviadospreviamente, si son iguales tenemos la certeza de que la DLL de HARDkey nos envía esta respuesta,en caso contrario puede ser enviada por un intruso. En este chequeo ayuda que los algoritmos usadospara cifrar y descifrar la cadena no son simétricos.

Conexión:Inicio: 11Largo: 8Valor: Numérico comprendido entre 00000000 y 99999999Descripción: Cuando se inicia la búsqueda de una llave electrónica y es localizada, la respuestacontiene un número de conexión posteriormente usado para la comunicación con la llave. Loscomandos siguientes deberán contener ese "número de conexión" así la llave los identifica bajo unaruta previamente establecida. Establecer una conexión es similar a abrir un canal de comunicaciónentre la llave y la aplicación, pueden existir distintos canales entre varias aplicaciones y una llave. Eluso del número de conexión es de vital importancia cuando se comparte una llave HARDkey en redusando licencias para habilitar el uso de la aplicación desde las terminales de la red. En este caso larelación que se establece entre una conexión es uno a uno con la cantidad de licencias disponibles enla llave.

Page 84: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

78 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Clave1:Inicio: 20Largo: 5Valor: Numérico comprendido entre 00000 y 65535Descripción: Junto con la Clave 2 son valores establecidos por el usuario, requeridos para realizaroperaciones sobre la llave electrónica. Estos valores vienen de fábrica seteados en 0, esrecomendable que se modifiquen cuando se utilizan las llaves con valores de cinco dígitos,aumentando así la protección.

Clave2:Inicio: 26Largo: 5Valor: Numérico comprendido entre 00000 y 65535.Descripción: Este es el valor asignado a la llave como Clave2. Este valor debe coincidir con el de lallave para poder acceder a la misma.

Supongamos que tenemos una llave con clave1: 12345 clave2: 27508,para operar la subcadena_general debería ser como sigue:

"+_&%#$+!^! 00000000 12345 27508"

Salida - Formato

Cuando retorna la llamada a la función HARDkey el formato de la subcadena_general se mantiene entodos los comandos como sigue.

Detalle de los campos:

Bytes de verificación:Inicio: 0Largo: 10Valor: Cadena de 10 bytes.Descripción: Para evitar que la aplicación sea engañada se utilizan estos caracteres generados

Page 85: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

79Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

aleatoriamente. Cuando se realiza el llamado a la función HARDkey se envían calculando 10caracteres al azar, los cuales tienen dos propósitos, alterar el cifrado de la cadena, y validar larespuesta obtenida verificando que sea de la DLL HARDkey. Los algoritmos se encuentran detalladosen el directorio "\api\demos" de HARDKey para cada lenguaje en particular.

Conexión:Inicio: 11Largo: 8Valor: Numérico comprendido entre 00000000 y 99999999Descripción: El valor de este campo, si él "Estado" es igual a 00000, es el número de conexiónasignado a la aplicación. Este número debe ser utilizado en los sucesivos llamados a la funciónHARDkey.

Estado:Inicio: 20Largo: 5Valor: Numérico comprendido entre 00000 y 00021Descripción: Al realizar la operación sobre la llave cuando se invoca a la función HARDkey se puedenobtener distintos resultados satisfactorios o no. Para diferenciarlos se implementó el valor "Estado"en la respuesta. El contenido de este campo indica el resultado obtenido al realizar la operación. Acontinuación se describen los valores válidos:

Page 86: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

80 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

El número del parámetro "Estado" es el que primero se debe evaluar en toda respuesta de la llave,en base a este valor determinamos si la operación se realizó con éxito y evaluamos el resto de lacadena.

Lote:Inicio:26Largo:4Valor:Caracteres hexadecimales, entre 0000-FFFFDescripción:Cada llave HARDkey tiene un número único de LOTE-SERIE que las identifica. El valor deeste campo, si él "Estado" es igual a 00000, es el número de lote de la llave HARDkey accedida.

Serie:Inicio:31Largo:5Valor:Numérico comprendido entre 00000 y 65535Descripción:El valor de este campo, si él "Estado" es igual a 00000, es el número de serie de la llave

Page 87: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

81Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

HARDkey accedida.

La subcadena_general cuando retorna la llamada a la función HARDkey.NET si encuentra unallave con lote = 201A, serie = 52639, conexión = 23456729, tiene el siguiente formato:

"########## 23456729 00000 201A-52639"

En caso de que no encuentre la llave nos retorna algo similar a:

"########## 23456729 00002 xxxxxxxxxxxxxxx"

Esto implica que si el estado es distinto de 00000 los demás campos no deben tenerse encuenta.

8.2.1 Iniciar Conexión

Antes de realizar cualquier operación sobre las llaves HARDkey debemos establecer una conexión,esto permite verificar que esté conectada en el puerto una llave electrónica con la configuraciónestablecida por el comando.

Este comando abre una conexión con la llave, chequea la presencia de la misma y retorna algunosparámetros adicionales referentes a la versión de la librería y los drivers.

Es utilizado además para manejar los usuarios en red, manejando licencias globales o por módulo enforma automática o supervisada por el usuario.

En el campo "número de conexión" se envía el valor "00000000", cuando la llave responde manda elnúmero asignado a la conexión abierta, este debe usarse en cada comando enviado posteriormentehacia la llave.

La conexión entre la llave y la aplicación permite manejar varios requerimientos hacia la llave dedistintas aplicaciones.

Entrada - Formato

Detalle de los campos:

Page 88: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

82 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Comando:Inicio: 32Largo: 4Valor: Numérico, 0000.Descripción: El número de comando le indica a la DLL la operación a realizar. El valor cero estableceque se quiere iniciar conexión con la llave.

Número de módulo:Inicio: 37Largo: 2Valor: Numérico comprendido entre 00 y 32Descripción: Con una misma llave se pueden proteger varias aplicaciones manejando módulos en lallave. El esquema es que por aplicación asigno un módulo físico de la llave que puede estar habilitadoo no.Entonces cuando se busca una llave con el comando Iniciar Conexión, se verifica que el móduloindicado esté activo.Supongamos que desarrollamos un sistema de gestión, que consta de tres aplicaciones, sueldos,facturación y proveedores. De este sistema algunas empresas pueden no necesitar de todas lasaplicaciones. En este caso es muy útil diseñar un esquema de protección modular, esto implicaasignar en la llave módulos a cada aplicación, puede ser 02 para sueldos, 15 a facturación y 25 aproveedores (Los números de módulo asignados a cada aplicación son seleccionados de modo que nosean consecutivos y sin patrón alguno. Esta medida se implementa para robustecer la protección)de esta forma al iniciar la conexión se envía el número de módulo, entonces se habilita la conexión sieste módulo en la llave conectada está activo. Entonces de acuerdo a las aplicaciones que requieracada cliente en particular se habilitan o no los distintos módulos en la llave entregada.El número de módulo es un valor de 2 dígitos comprendido en el rango 00 – 32. El 00 se usa cuandose inicia conexión y no se quiere chequear por un módulo en particular. En el campo Tipo de manejo(notado como "m" en el esquema) se setea el modo en que se realiza la conexión, para chequearmódulos debemos asignar el valor 03. Seguidamente se explica en detalle este campo.

Tipo de manejo de usuarios en red:Inicio: 40Largo: 1Valor: Numérico comprendido entre 0 y 3Descripción: Este campo determina la forma en la que se desean manejar las licencias.- 0 (No limitar usuarios en red): En este modo la función no verifica ni modifica la cantidad de usuariosque estén accediendo a la llave, simplemente realiza la lectura de la misma.- 1 (Levantar usuario): En este modo la función realiza la consulta de la llave y si la misma estápresente, aumenta en uno la cantidad de usuarios de la licencia global, sin verificar el valoralmacenado en la celda de máximo de licencias globales.- 2 (Automático): En este modo la función controla que el máximo de licencias globales no haya sidoalcanzado, si no lo fue incrementa en uno la cantidad de usuarios y luego realiza el chequeo.- 3 (Validación de licencias por módulos): En este modo la función controla que el máximo de licenciaspara el módulo descripto en el campo "Número de módulo" no haya alcanzado el máximo permitido,si no lo fue incrementa el usuario en uno y realiza el chequeo.

Page 89: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

83Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

Para más detalles ver el capítulo de manejo de llaves en una red.

Como primer ejemplo asumamos que queremos iniciar una conexióncon una llave cuyas claves son: clave1: 97865, clave2: 27508. Primeroveamos como sería si la llave se encuentra en el puerto paralelo de laPC donde se ejecuta la aplicación:"########## 00000000 97865 27508 0000 00 0"

Si queremos levantar 1 licencia global:"########## 00000000 97865 27508 0000 00 1"

Consumiento 1 licencia en el módulo 14:"########## 00000000 97865 27508 0000 14 3"

Salida - Formato

Todos los campos de la subcadena_comando deben ser tenidos en cuenta sólo si el campo "Estado"de esta misma es '00000', en caso contrario implica que hubo errores, por lo que estos campos nocontienen la información real.

Detalle de los campos:

Versión de la Dll:Inicio: 37Largo: 5Valor: Cadena de la forma "v0.1b"Descripción: Esta campo contendrá la versión de la libreía HARDkey con que se interactúa. El valorsólo debe considerarse como válido si el estado es "00000".

Versión de los Drivers:

Page 90: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

84 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Inicio: 43Largo: 5Valor: Cadena de la forma "v0.1b" ó "USB01"Descripción: Este campo indica la versión de drivers HARDkey instalados en la máquina. Sólo debetenerse en cuenta cuando el estado es 0. Si la llave es modelo USB la versión se expresa con lasegunda cadena, el valor 01 indica que la versión de firmware de la llave es la 0.1.

Versión del servidor de red:Inicio: 49Largo: 5Valor: Cadena de la forma "v0.1b" o "?????"Descripción: Cuando se comparte en una máquina la llave electrónica en red, y la conexión se realizamediante la red, este campo contiene el la versión del servidor. En caso que la llave se encuentre enla máquina local ese campo contendrá los símbolos "?????". Esto sólo es válido si el estado es"00000".

Día de la fecha de vencimiento:Inicio: 55Largo: 2Valor: Numérico entre 1 y 31Descripción: El valor de este campo, si él "Estado" es igual a 00000, es el día de la fecha devencimiento almacenada en la llave (celda 52).

Mes de la fecha de vencimiento:Inicio: 58Largo: 2Valor: Numérico entre 1 y 12Descripción: El valor de este campo, si él "Estado" es igual a 00000, es el mes de la fecha devencimiento almacenada en la llave (celda 52).

Año de la fecha de vencimiento:Inicio: 61Largo: 4Valor: Numérico entre 0 y 9999Descripción: El valor de este campo, si él "Estado" es igual a 00000, es el año de la fecha devencimiento almacenada en la llave (celda 53).

Módulos habilitados:Inicio: 66Largo: 32Valor: Cadena formada por "0"(ceros) y/o "1"(unos)Descripción: Son 32 caracteres que representan el estado de los 32 módulos en la llave. Los módulostienen dos estados posibles, 1 que significa activo o 0 desactivado. Por ejemplo si la cadena comienzacon 010001.... significa que el módulo 2 y 6 están activos en la llave mientras que el 1,3,4 y 5 estándesactivados. Estos datos son válidos si el Estado es "00000".

Límite de ejecuciones:

Page 91: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

85Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

Inicio: 99Largo: 5Valor: Numérico entre 0 y 65535Descripción: El valor de este campo, si él "Estado" es igual a 00000, es el límite de ejecucionesgrabado en la llave.

Máximo de licencias globales:Inicio: 105Largo: 5Valor: Numérico entre 0 y 65535Descripción: La llave HARDkey.NET además de manejar licencias por módulo permite protegeraplicaciones con un esquema único de licencias denominado "Licencias Globales". La razón por la quese implementó esta metodología es únicamente la compatibilidad con los sistemas de protecciónanteriores. El uso de licencias globales como método de protección es similar a asignar un número demódulo a la aplicación.Recomendamos utilizar licencias por módulo en vez de licencias globales, lo que permite adaptar elsistema de protección en caso de que crezca la aplicación a proteger. Además por la sencillez y lasventajas que tiene aplicar protección modularizada.

Número de licencias de red en uso:Inicio: 111Largo: 5Valor: Numérico entre 0 y 65535Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la cantidad de licencias globalesque están siendo utilizadas hasta el momento. Si el chequeo de la llave es local, este campo devuelve'00000'.

Al retornar de la llamada si no hubo problemas en el chequeo uno de losresultados posibles para una llave de lote = 201A, serie = 52639 es:"########## 23456729 00000 201A-52639 v2.2a v2.0a ?????12/05/2005 01000010000000000000000000000000 00000 0000000000 ......".Esta cadena muestra que se encontró la llave colocada en la PC localporque en el campo "Versión del servidor de red" se encuentra ?????.

8.2.2 Verificar Conexión

Luego de haber invocado el comando "Iniciar Conexión" es normal que cada ciertos intervalos severifique la presencia de la llave protectora, esto evita que se cambie el protector de máquina y seinicien varias conexiones en distintas PC's sin habilitación.

Page 92: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

86 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Esos chequeos deben realizarse con el comando "Verificar conexión", desarrollado específicamentecon el propósito de validar la presencia de la llave y que la conexión iniciada siga activa en el menortiempo posible.

La invocación requiere el número de conexión obtenido al iniciar la conexión, el cual es chequeadopor la llave para establecer si la conexión sigue activa. Supongamos que se realiza validación delicencias por aplicación.

Si a la aplicación X le asignamos 2 licencias adquiridas por el usuario bajo el módulo 01, cuando seinicia una conexión (bajo el módulo 01) se mapea el número de conexión, por ejemplo 00000001, auna licencia de ese módulo.Supongamos que por causas externas debe reiniciarse el servidor, lugar donde se encuentra la llaveconectada, entonces al conectarse nuevamente la llave tendrá dos licencias disponibles.Ud. se preguntará que pasa con la licencia asignada anteriormente, cuando se trate de comunicar conla llave usando el número 00000001, la respuesta será de conexión No válida (Estado = 00010 ensalida de la subcadena_general).

Las estadísticas indican que la mejor forma de protección es realizar chequeos usando elcomando "Verificar Conexión" en intervalos aleatorios durante la ejecución de la aplicación. Encaso de que falle un chequeo inmediatamente realizar dos reintentos, y en caso de que todosfallen cerrar forzosamente la aplicación informando por pantalla de la falta del protector.

Entrada - Formato

Detalle de los campos:

Comando:Inicio: 32Largo: 4Valor: Numérico, 0001.Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar, El valoruno es el que indica Verificar Conexión.

Salida - Formato

Page 93: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

87Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

Estado:Largo: 4Valor: Numérico entre 0 y 9999Descripción: El valor de este campo, si él "Estado" es igual a 00000, es el año de la fecha devencimiento almacenada en la llave (celda 53).

Máximo de licencias globales:Inicio: 48Largo: 5Valor: Numérico entre 0 y 65535Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la cantidad de licencias globalesgrabadas en la llave.

Número de licencias globales asignadas:Inicio: 54Largo: 5Valor: Numérico entre 0 y 65535Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la cantidad de licencias globalesque están siendo utilizadas hasta el momento.

8.2.3 Finalizar Conexión

Al iniciar conexión con la llave, obtenemos un número que nos permite comunicarnosposteriormente. Cuando se termina la aplicación debemos liberar ese número de conexión para queotros usuarios dispongan de una conexión.

Este comando permite liberar una conexión con la llave, chequeando la presencia de la misma.Cuando se manejan licencias es de vital importancia sean liberadas al finalizar la ejecución del sistemao del módulo que la haya levantado. Esto permite a otros usuarios tomarla posteriormente.

Puede suceder por motivos externos que la aplicación se cierre abruptamente, sin dar de baja laconexión con la llave.El peor caso se presenta al controlar la cantidad de usuarios habilitando licencias, el efecto producidoes que no se liberan reteniéndolas sin ser usadas.

Para evitar este inconveniente se implementó el esquema Aplicación Activa, basado en reportes queenvía la DLL a la llave indicando su actividad. Pasado cierto tiempo desde que la llave deja de

Page 94: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

88 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

recibirlos ésta da de baja automáticamente la conexión liberando la licencia asociada.

Entrada - Formato

Entrada - Detalle de los campos

Comando: Inicio: 32Largo: 4Valor: Numérico, 0002.Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar. El valor dosindica "Finalizar Conexión".

Número de módulo (m): Inicio: 37Largo: 2Valor: Numérico comprendido entre 00 y 32Descripción: Si este valor es 00 la función finalizara la conexión con la llave, dando de bajaautomáticamente todos los usuarios levantados bajo esta conexión. Si este valor está entre 01 y 32 la función solo dará de baja la licencia utilizada para el móduloindicado.

Salida - Formato

Salida - Detalle de los campos

Número de licencias globales asignadas:Inicio: 37Largo: 5Valor: Numérico entre 0 y 65535Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la cantidad de licenciasglobales que están siendo utilizadas hasta el momento.

Page 95: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

89Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

8.2.4 Leer Celda

Las llaves HARDkey.NET viene equipadas con 106 bytes de memoria no volátil.

Este comando permite leer las celdas, de tamaño 1 word que la conforman.Después de haber iniciado una conexión con la llave, se pueden leer información almacenada en sumemoria para uso de la aplicación como por ejemplo passwords, fechas, montos.

Entrada - Formato

Entrada - Detalle de los campos:

Comando:Inicio: 32Largo: 4Valor: Numérico, 0003.Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar, El valortres es el que indica Leer celda.

Número de celda:Inicio: 37Largo: 5Valor: Numérico comprendido entre 00000 y 00053Descripción: Este es el número de celda que se desea leer.

Salida - Formato

Salida - Detalle de los campos

Valor leído:Inicio: 37Largo: 5Valor: Numérico entre 0 y 65535Descripción: El valor de este campo, si él "Estado" es igual a 00000, es el valor que contiene la celdaleída.

Page 96: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

90 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

8.2.5 Grabar Celda

Este comando permite modificar el valor que contiene una celda de memoria no-volátil de la llave.Vea el capítulo "Estructura interna de la llave HARDkey" para obtener una descripción más detalladasobre las celdas de memoria que puede utilizar.

Se utiliza para almacenar información requerida posteriormente por la aplicación como por ejemploparametrización de la aplicación (nombre del cliente, funciones habilitadas, si es bimonetario),montos de balance, fechas, códigos.

Entrada - Formato

Entrada - Detalle de los campos

Comando:Inicio: 32Largo: 4Valor: Numérico, 0004.Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar, El valorcuatro es el que indica grabar celda.

Número de celda:Inicio: 37Largo: 5Valor: Numérico comprendido entre 00000 y 00053Descripción: Número de celda que se desea grabar.

Valor a grabar:Inicio: 43Largo: 5Valor: Numérico comprendido entre 00000 y 65535Descripción: Valor a grabar en la celda seleccionada.

Salida - Formato

Salida - Detalle de los campos:

Page 97: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

91Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

Valor grabado:Inicio: 37Largo: 5Valor: Numérico entre 0 y 65535Descripción: El valor de este campo, si él "Estado" es igual a 00000, es el valor que contiene la celdagrabado.

8.2.6 Leer Cadena

Este comando permite leer una cadena de caracteres de la memoria de la llave, pero para ellopreviamente se requiere haber abierto una conexión con la llave.

Un ejemplo práctico del uso de lectura de strings es cuando se almacena en la memoria de la llave elnombre de la firma a la cual se le vende el Software. Luego cada vez que se carga la aplicación se leela memoria de la llave para mostrar por pantalla el nombre.

Entrada - Formato

Entrada - Detalle de los campos:

Comando: Inicio: 32Largo: 4Valor: Numérico, 0005.Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar, El valorcinco es el que indica leer una cadena.

Byte de inicio:Inicio: 37Largo: 5Valor: Numérico comprendido entre 00000 y 00107Descripción: Este es el número byte en el que se comienza a leer para formar la cadena.

Largo Cadena:Inicio: 43Largo: 5Valor: Numérico comprendido entre 00001 y 00108Descripción: Es la cantidad de bytes a leer de memoria.

Page 98: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

92 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Supongamos que queremos leer el nombre de usuario para el Login que está grabadoen la llave y comienza en el byte 44, de largo 30 caracteres."######## 23456729 97865 27508 0005 00044 00030"

Salida - Formato

Salida - Detalle de los campos:

Cadena Leída: Inicio: 37Largo: Variable (1 a 108)Valor: Cadena de bytesDescripción: En este campo, si el "Estado" es igual a 00000, se encuentra la cadena leída.

8.2.7 Grabar Cadena

Este comando permite grabar una cadena en la memoria no-volátil de la llave. Requiere que se hayaabierto una conexión para poder ser utilizada.

Entrada - Formato

Entrada - Detalle de los campos:

Comando:Inicio: 32Largo: 4Valor: Numérico, 0006.Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar, El valor seises el que indica grabar una cadena.

Byte de inicio:Inicio: 37Largo: 5

Page 99: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

93Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

Valor: Numérico comprendido entre 00000 y 00107Descripción: Este es el número de byte de la memoria de la llave en el que se comienza a grabar lacadena.

Largo Cadena:Inicio: 43Largo: 5Valor: Numérico comprendido entre 00001 y 00108Descripción: Es el largo de la cadena a grabar expresado en bytes.

Cadena a grabar:Inicio: 49Largo: Variable (1 a 108)Valor: Cadena de bytes.Descripción: Esta es la cadena a grabar. La misma puede contener cualquier carácter, debido a que noexisten caracteres "delimitadores".

Supongamos que queremos grabar la cadena "Versión Full" en la memoria de la llavedonde antes se encontraba grabado "Versión Demo" porque el cliente nos hacomprado la aplicación. Si comenzamos en el byte 44 (memoria de usuario – celda 22)entonces la cadena a enviar es:

"########## 23456729 97865 27508 0006 00044 00012 VersiónFull"

Salida - Formato

Salida - Detalle de los campos:

Cadena grabada:Inicio: 37Largo: Variable (1 a 108)Valor: Cadena de bytesDescripción: En este campo, si él "Estado" es igual a 00000, se encuentra la cadena que se grabó.

Page 100: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

94 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

8.2.8 Cambiar Claves

Este comando permite cambiar ambas claves de la llave en tiempo de ejecución. Las claves de la llaveson las password que permiten operar sobre esta, si se quiere realizar cualquier operación pero estasson incorrectas el acceso a la llave es denegado.

La modificación de las claves puede realizarse también con el editor de llaves, HKEYEDIT.EXE, encualquier momento.

Una vez cambiadas las claves, toda referencia que se haga a la llave debe hacerse con las clavesnuevas. Puede utilizar cualquier número entre 00000 y 65535. Requiere que se haya abierto unaconexión para poder ser utilizado.

Entrada - Formato

Entrada - Detalle de los campos:

Comando:Inicio: 32Largo: 4Valor: Numérico, 0007.Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar, El valorsiete es el que indica cambiar las claves.

Nueva Clave1:Inicio: 37Largo: 5Valor: Numérico comprendido entre 00000 y 65535Descripción: Este es el valor a colocar en la clave1

Nueva Clave2:Inicio: 43Largo: 5Valor: Numérico comprendido entre 00000 y 65535Descripción: Este es el valor a colocar en la clave2

Page 101: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

95Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

Supongamos que las claves que queremos asignar a la llave son 21245(Nuevaclave1)y 44567(Nuevaclave2) siendo 97865 y 27508 los valores anteriores. Entonces lacadena de invocación tiene el formato:

"########## 23456729 97865 27508 0007 21245 44567" .

Salida - Formato

No devuelve información adicional

Salida - Detalle de los campos: No devuelve información adicional

8.2.9 Cifrar/Descifrar Cadena

Cuando necesitamos almacenar información en archivos, o le pasamos información a otra aplicaciónes conveniente cifrarla para que los intrusos que la puedan intervenir no sean capaces de descifrar sucontenido.

Este comando fue implementado con el propósito de brindar otra herramienta de protección almomento de trabajar con la información.

La función Cifrar/Descifrar trabaja sobre cadenas de 100 caracteres, solo puede usarse si la llaveHARDkey.NET está conectada a la PC.

Entrada - Formato

Entrada - Detalle de los campos:

Comando:Inicio: 32Largo: 4Valor: Numérico, 0008.Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar. El valorocho es el que indica Cifrar/Descifrar cadena.

Largo Cadena:

Page 102: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

96 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Inicio: 37Largo: 5Valor: Numérico comprendido entre 00001 y 00100Descripción: Este es el largo de la cadena a cifrar o descifrar.

Cadena a cifrar/descifrar:Inicio: 43Largo: variable de 1 a 100 bytesValor: cadena de cualquier tipoDescripción: Esta es la cadena a cifrar/descifrar, por medio de la función.

Salida - Formato

Salida - Detalle de los campos:

Cadena cifrada/descifrada:Inicio: 37Largo: variable de 1 a 100 bytesValor: cadena de cualquier tipoDescripción: El valor de este campo, si él "Estado" es igual a 00000, Es la cadena correctamentecifrada o descifrada según corresponda. Si él "Estado" es distinto de 00000 entonces esta cadena noes válida.

8.2.10 Configurar Modos de Chequeos

Las llaves HARDkey.NET se colocan en el puerto paralelo o USB de una computadora. También existela posibilidad de compartir una llave en una red Windows o Novell colocándola en una de las PC's quepertenecen a la red y luego usar el Servidor de llaves para compartirla.

Entonces las llaves pueden ubicarse en el puerto paralelo de la PC donde se ejecuta la aplicación, enel puerto USB, ó en una máquina remota ya sea en una red Windows o Novell.

Por defecto el orden de búsqueda es Red Windows, Red Novell, HARDkey local, SuperPro local.

En algunas aplicaciones podemos definir en tiempo de diseño en que lugares se ubicará la llave,mientras que en otras puede ser que la llave sea colocada tanto en la máquina que se ejecuta como

Page 103: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

97Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

en una red.

Para establecer el esquema de búsqueda del protector se utiliza este comando, el cual permite definiren que lugares se buscará la llave y en que orden se hará.

Supongamos que estamos desarrollando una aplicación de diseño gráfico, en general este tipo deaplicaciones se utiliza solamente por la persona encargada de realizar todas las imágenes que salen enlos folletos, páginas Web y publicidades de la firma.

En este caso, se puede establecer que el chequeo se realice en la máquina donde se ejecuta –Figura1-.

Entonces la búsqueda se define como:

1. Local HARDkey.NET, Local SuperPro, (ambas)2. Local SuperPro, Local HARDkey.NET, (ambas)3. Local SuperPro, (solamente)4. ó Local HARDkey.NET (solamente)

Otro caso es si la aplicación es usada por múltiples usuarios desde distintas terminales, como porejemplo un Sistema de Ventas que será usado por todos los vendedores de una empresa, desde susterminales, para llevar la información de sus clientes. Este tipo de aplicaciones generalmente seinstalan en un servidor y son accedidas desde terminales, en empresas grandes; pero puede sucederque alguna pequeña firma lo requiera y solo lo use en una PC.

En este caso debemos realizar 3 chequeos:

1. Red Windows2. Red Novell3. Local HARDkey.NET

Page 104: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

98 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

4. Local SuperPro

A continuación se describe el formato de la cadena enviada para5 Ver punto 5 Como Compartir una llave en una Red.A continuación se describen las ubicaciones donde buscar el protector.

Entrada - Formato

Entrada - Detalle de los campos:

Comando:Inicio: 32Largo: 4Valor: Numérico, 0009Descripción: Este valor es el que determina la tarea que la función HARDkey debe realizar, El valornueve es el que indica configurar orden de chequeoLugar de busqueda:

Inicio: 37, 43, 49, 55, 61, 67, 73, 79Largo: 5Valor: En esta sección de la cadena se escriben los valores que representan cada lugar donde sebuscará la llave. El orden en que se escriban representará el orden de búsqueda. Son 8 campos de loscuales no se usan todos, a los lugares que sobren se les asigna "00000", que es el valor ignorado parala búsqueda. A continuación describimos los valores asignados a cada ubicación posible del protector:

Page 105: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

99Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

El valor 00001 se expandirá en los valores: 00378, 00278, 003bc en ese orden. Esto puede generarque los últimos valores no sean tomados en cuenta ya que solo pueden definirse 8.

Por defecto la búsqueda de las llaves se realiza en el siguiente orden si al iniciar la conexión no selevantan módulos: llaves SuperPro, HARDkey local, Redes Windows y Redes Novell. En caso que selimite la cantidad de usuarios la búsqueda se realiza primero en Redes Windows, Redes Novell,SuperPro y HARDkey local.

Para configurar el chequeo en un servidor Linux es necesario que esté habilitado desde la aplicación elchequeo en Servidores Linux o Windows. De ser así solamente debe modificar el archivo HARDkey.INIque se encuentra en la misma carpeta de la dll de protección (hkey-w32.dll). Debe agregar la sección[SOCKET] si es que no existe, y en el parámetro SIFACE escriba la dirección IP del servidor linux. Luegosetee SO=LINUX, esto indica que el chequeo será por socket y el servidor de llaves tiene el sistemaoperativo LINUX.

Page 106: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

100 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

[SOCKET]SIFACE=192.168.1.227SO=LINUX

Distintas configuraciones pueden ser:

1) cadena = '0009 00107 00003 00001 00004 00000 00000 00000 00000'

En este caso primero buscamos llaves (HARDkey, SuperPro y EXEkey) en redesWindows, luego en servidores Novell con IPX, llave HARDkey.NET en puertos de la PCdonde se ejecuta la aplicación, llave SuperPro en puertos de la PC donde se ejecuta laaplicación paralelo y USB.

2) cadena = '0009 00001 00004 00000 00000 00000 00000 00000 00000'

Cuando la búsqueda es siempre en la máquina donde se ejecuta la aplicaciónsolamente se utiliza este modo de chequeo para buscar llaves HARDkey y SuperPro.

3) cadena = '0009 00001 00000 00000 00000 00000 00000 00000 00000'

Buscamos llaves solamente HARDkey en la PC donde se ejecuta la aplicación.

4) cadena = '0009 00101 00000 00000 00000 00000 00000 00000 00000'

Búsqueda de la llave HARDkey en redes Windows con protocolo TCP/IP.

5) cadena = '0009 00003 00000 00000 00000 00000 00000 00000 00000'

Búsqueda en redes Novell con protocolo IPX.

6) cadena = '0009 00004 00001 00103 00003 00000 00000 00000 00000'Primero busca llaves SP en puertos locales, luego HARDkey en puertos locales, luegorealiza búsquedas por MAILSLOT de llaves HK y SP y por último HK en redes Novell.

Es muy importante tener en cuenta que para el manejo de licencias en red si tambiénse permite el chequeo local, primero se realice la búsqueda del protector en la red.Esto evita que no se descuente la licencia correspondiente si el protector se encuentraprimero localmente.

Salida - Formato

Page 107: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

101Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

No devuelve información adicional

Salida - Detalle de los campos:

No devuelve información adicional

8.2.11 Leer Fecha y Hora del reloj interno

Este comando permite leer la fecha y hora del reloj interno de la llave.

Para aquellas llaves que no posean reloj interno la función retorna estado 8.

Entrada - Formato

Entrada - Detalle de los campos:

Comando: Inicio: 32Largo: 4Valor: Numérico, 0010.Descripción: El comando 10 retorna la fecha y hora del reloj interno de la llave.

Salida - Formato

Salida - Detalle de los campos:

Fecha del Reloj:Inicio: 37Largo: 8 bytesValor: fecha del reloj interno.

Page 108: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

102 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la fecha del reloj interno de lallave. El formato de la fecha es dd/mm/aa.

Hora del Reloj:Inicio: 46Largo: 8 bytesValor: hora del reloj interno.Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la hora del reloj interno de lallave. El formato es hh:mm:ss. La hora puede tomar valores dentro del rango de 00 a 24.

Si la llave no tiene reloj el estado que retorna este comando es 00008. En este caso la conexión con lallave no se pierde, se le pueden seguir enviando otros comandos con esta misma conexión que sigueabierta.

8.2.12 Grabar Fecha y Hora en el reloj interno

Este comando permite grabar la fecha y hora del reloj interno de la llave. Para aquellas llaves que noposean reloj interno la función retorna estado 8.

Entrada - Formato

Entrada - Detalle de los campos:

Comando: Inicio: 32Largo: 4Valor: Numérico, 0011.Descripción: El comando 11 configura la fecha y hora del reloj interno de la llave.

Nueva Fecha:Inicio: 37Largo: 8 bytesValor: fecha del reloj interno.Descripción: Fecha a grabar en el reloj interno de la llave. El formato de la fecha es dd/mm/aa.,donde 0 < dd < 32 – 0 < mm < 13 – 0 < aa <= 99.

Nueva Hora:

Page 109: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

103Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

Inicio: 46Largo: 8 bytesValor: hora del reloj interno.Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la hora del reloj interno de lallave. El formato es hh:mm:ss. La hora puede tomar valores dentro del rango de 00 a 24.

Salida - Formato

Salida - Detalle de los campos:

Fecha grabada:Inicio: 37Largo: 8 bytesValor: fecha del reloj interno.Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la fecha que se grabó en elreloj interno de la llave. El formato de la fecha es dd/mm/aa.

Hora grabada:Inicio: 46Largo: 8 bytesValor: hora del reloj interno.Descripción: El valor de este campo, si él "Estado" es igual a 00000, es la hora que se grabó en el relojinterno de la llave. El formato es hh:mm:ss.

Si la llave no tiene reloj el estado que retorna este comando es "00008".En este caso la conexión con la llave no se pierde, se le pueden seguir enviando otros comandos conesta misma conexión que sigue abierta.

8.2.13 Leer Memoria Extendida

Para aquellas llaves que tienen memoria extendida, este comando permite leer información de losbloques de memoria extendida.

Esta memoria no se puede modificar ni leer con el Editor de llaves.

Dependiendo la cantidad de memoria que tenga disponible la llave los valores "byte de inicio" y

Page 110: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

104 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

"cantidad de bytes" tendrán diferentes límites.

Debido a que la string que se envía a la función HARDkey tiene como límite 200 bytes de lognitud, sepodrán leer hasta 108 bytes por cada comando enviado.

Entrada - Formato

Entrada - Detalle de los campos:

Comando:Inicio: 32Largo: 4Valor: Numérico, 0012.Descripción: El comando 12 permite leer la memoria extendida de la llave. En caso que la llave noposea memoria extendida el valor de estado que retorna es 8, la conexión con la llave sigue activa.

Byte de incio:Inicio: 37Largo: 4Valor: Numérico. Límite inferior 0. Límite superior depende de la cantidad de memoria extendida queposea la llave.Descripción: Este valor indica en byte de memoria extendida se comenzará a leer.

Cantidad de bytes:Inicio: 43Largo: 4Valor: Numérico. Límite inferior 0. Límite superior 108.Descripción: Este valor indica la cantidad de bytes a leer de la memoria extendida.

Salida - Formato

Salida - Detalle de los campos:

Cadena leída:

Page 111: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

105Interfaz de Programación de Aplicación (API)

© 2007 - SITEPRO S.A.

Inicio: 37Largo: Variable (1 a 108 bytes)Valor: Cadena de bytes.Descripción: En este campo, si el "Estado" es igual a 00000, se encuentra la cadena leída.

8.2.14 Grabar Memoria Extendida

Para aquellas llaves que tienen memoria extendida, este comando permite grabar información en losbloques de memoria extendida.Esta memoria no se puede modificar ni leer con el Editor de llaves.Dependiendo la cantidad de memoria que tenga disponible la llave los valores "byte de inicio" y"cantidad de bytes" tendrán diferentes límites.

Debido a que la string que se envía a la función HARDkey tiene como límite 200 bytes de lognitud, sepodrán grabar hasta 108 bytes por cada comando enviado.

Entrada - Formato

Entrada - Detalle de los campos:

Comando: Inicio: 32Largo: 4Valor: Numérico, 0013.Descripción: El comando 13 permite grabar la memoria extendida de la llave. En caso que la llave noposea memoria extendida el valor de estado que retorna es 8, la conexión con la llave sigue activa.

Byte de incio:Inicio: 37Largo: 5Valor: Numérico. Límite inferior 0. Límite superior depende de la cantidad de memoria extendida queposea la llave.Descripción: Este valor indica en que byte de memoria extendida se comenzará a grabar.

Cantidad de bytes a grabar:Inicio: 43

Page 112: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

106 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

Largo: 5Valor: Numérico. Límite inferior 0. Límite superior 108.Descripción: Este valor indica la cantidad de bytes a grabar de la memoria extendida.

Cadena a grabar:Inicio: 48Largo: Variable (1 a 108 bytes)Valor: Cadena de bytes.Descripción: Cadena de bytes a grabar en la memoria extendida de la llave.

Salida - Formato

Salida - Detalle de los campos:

Cadena grabada:Inicio: 37Largo: Variable (1 a 108 bytes)Valor: Cadena de bytes.Descripción: En este campo, si el "Estado" es igual a 00000, se encuentra la cadena que fue grabadaen la memoria extendida.

Page 113: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

9

Page 114: HARDkey - Manual para Desarrolladores · protección de software compuesto por software y llave electrónica de habilitación, según las condiciones que se expresan más adelante

108 HARDkey - Manual para Desarrolladores

© 2007 - SITEPRO S.A.

9 Estructura del Directorio HARDkey