MXPA04000488A - Metodo para proteger un software utilizando un principio llamado de variable contra su uso no autorizado. - Google Patents

Metodo para proteger un software utilizando un principio llamado de variable contra su uso no autorizado.

Info

Publication number
MXPA04000488A
MXPA04000488A MXPA04000488A MXPA04000488A MXPA04000488A MX PA04000488 A MXPA04000488 A MX PA04000488A MX PA04000488 A MXPA04000488 A MX PA04000488A MX PA04000488 A MXPA04000488 A MX PA04000488A MX PA04000488 A MXPA04000488 A MX PA04000488A
Authority
MX
Mexico
Prior art keywords
execution
unit
protected software
software
protected
Prior art date
Application number
MXPA04000488A
Other languages
English (en)
Inventor
Sgro Gilles
Original Assignee
Validy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Validy filed Critical Validy
Publication of MXPA04000488A publication Critical patent/MXPA04000488A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/123Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Storage Device Security (AREA)

Abstract

El objeto de la invencion se refiere a un metodo para proteger, a partir de por lo menos una unidad, un software vulnerable contra su uso no autorizado, dicho software vulnerable que funciona sobre un sistema de procesamiento de datos; el metodo consiste en crear un software protegido: seleccionando en la fuente del software vulnerable por lo menos una variable, produciendo la fuente del software protegido modificando la fuente del software vulnerable, de modo que la variable seleccionada resida en una unidad.

Description

METODO PARA PROTEGER UN SOFTWARE UTILIZANDO UN PRINCIPIO LLAMADO DE VARIABLE CONTRA SU USO NO AUTORIZADO MEMORIA DESCRIPTIVA La presente invención se refiere al campo técnico de los sistemas de procesamiento de datos en el sentido general y contempla, de manera más precisa, los medios para proteger, contra su uso no autorizado, un software que funciona sobre dichos sistemas de procesamiento de datos. El objeto de la invención contempla, de manera más particular, los medios para proteger un software contra su uso no autorizado, a partir de una unidad de memoria o de una unidad de procesamiento y de memoria, dicha unidad es comúnmente materializada mediante una tarjeta de chip o con una llave material sobre el puerto USB. En el campo técnico anterior, el principal inconveniente se refiere al empleo no autorizado de software por parte de usuarios que no han adquirido los derechos de licencia. Este uso ilícito de software causa un daño declarado por los editores de software, los distribuidores de software y/o cualquier persona que integre dicho software en productos. Para evitar dichas copias ilícitas, se ha propuesto en el estado de la técnica, diversas soluciones para proteger softwares. De esta forma, se conoce una solución de protección que consiste en aplicar un sistema material de protección, tal como un elemento físico llamado llave de protección o "dongle" en terminología anglosajona. Dicha llave de protección debe garantizar la ejecución del software únicamente en presencia de la llave. Ahora bien, se debe constatar que dicha solución no es eficaz porque presenta el inconveniente de ser fácilmente eludida. Una persona mal intencionada o pirata, con la ayuda de herramientas especializadas, tales como desarmadores, puede suprimir las instrucciones de control de la llave de protección. Podría ser entonces posible realizar copias ilícitas que corresponden a las versiones modificadas de software que ya no tengan protección alguna. Además, esta solución no puede ser generalizada a todos los softwares, en la medición en que es difícil conectar más de dos llaves de protección sobre un mismo sistema. El objeto de la invención contempla justamente remediar los inconvenientes antes mencionados proponiendo un método para proteger un software contra su uso no autorizado, a partir de una unidad de memoria o de una unidad de procesamiento y de memoria ad hoc, en la medición en que la presencia de dicha unidad sea necesaria para que el software sea completamente funcional. Para alcanzar este objetivo, el objeto de la invención se refiere a un método para proteger, a partir de por lo menos una unidad virgen que comprende por lo menos medios de memoria, un software vulnerable contra su uso no autorizado, dicho software vulnerable funciona sobre un sistema de procesamiento de datos. El método de acuerdo con la invención consiste: en una fase de protección: en crear un software protegido: seleccionando en la fuente del software vulnerable: por lo menos una variable que, durante la ejecución del software vulnerable, defina parcialmente el estado de éste, y por lo menos una porción que contiene al menos una variable seleccionada, produciendo la fuente del software protegido a partir de la fuente del software vulnerable, modificando por lo menos una porción seleccionada de la fuente del software vulnerable, esta modificación siendo tal que durante la ejecución del software protegido, por lo menos una variable seleccionada o por lo menos una copia de variable seleccionada reside en la unidad virgen que se transforma así en una unidad, y produciendo una primera parte objeto del software protegido a partir de la fuente del software protegido, esta primera parte objeto siendo tal que durante la ejecución del software protegido, aparece una primera parte de ejecución que es ejecutada en el sistema de procesamiento de datos y en la cual por lo menos una porción toma en cuenta que por lo menos una variable o por lo menos una copia de variable reside en la unidad, en una fase de uso durante la cual se ejecuta el software protegido: en presencia de la unidad, cada vez que una porción de la primera parte de ejecución lo impone, utilizar una variable o una copia de variable que reside en la unidad, de tal modo que esta porción se ejecuta correctamente y en consecuencia, el software protegido es completamente funcional, y en ausencia de la unidad, a pesar de la petición de una porción de la primera parte de ejecución para utilizar una variable o una copia de variable que reside en la unidad, de no poder responder correctamente a esta petición, de modo que por lo menos esta porción no se ejecuta correctamente y en consecuencia, el software protegido no es completamente funcional. De acuerdo con una modalidad preferida, el método de acuerdo con la invención consiste: en la fase de protección: en modificar el software protegido: seleccionando en la fuente del software protegido: por lo menos un procesamiento algorítmico que durante la ejecución del software protegido, utilice por lo menos una variable seleccionada, y permita obtener por lo menos una variable resultante, y por lo menos una porción que contiene al menos un procesamiento algorítmico seleccionado, modificando por lo menos una porción seleccionada de la fuente del software protegido, esta modificación siendo tal que: durante la ejecución del software protegido la primera parte de ejecución es ejecutada en el sistema de procesamiento de datos y una segunda parte de ejecución es ejecutada en la unidad que comprende también medios de procesamiento, por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado es ejecutada por medio de la segunda parte de ejecución, por lo menos un procesamiento algorítmico seleccionado es fragmentado de manera que durante la ejecución del software protegido, aparecen, por medio de la segunda parte de ejecución, varias etapas distintas, a saber: la disposición de por lo menos una variable para la unidad, la realización en la unidad, de la funcionalidad del procesamiento algorítmico sobre por lo menos esta variable, y eventualmente, la disposición de por lo menos una variable resultante, mediante la unidad para el sistema de procesamiento de datos, para al menos un procesamiento algorítmico seleccionado, se definen comandos de etapas de manera que durante la ejecución del software protegido, cada comando de etapa sea ejecutado por la primera parte de ejecución y inicie en la unidad, la ejecución por medio de la segunda parte de ejecución, de una etapa, y se selecciona un ordenamiento de comandos de etapas entre el conjunto de ordenamientos que permiten la ejecución del software protegido, y produciendo: la primera parte objeto del software protegido, esta primera parte objeto siendo tal que durante la ejecución del software protegido, los comandos de etapa sean ejecutados de acuerdo con el ordenamiento seleccionado, y una segunda parte objeto del software protegido, esta segunda parte objeto siendo tal que después de cargar en la unidad virgen y durante la ejecución del software protegido, aparece la segunda parte de ejecución por medio de la cual se ejecutan las etapas iniciadas por la primera parte de ejecución, y en cargar la segunda parte objeto en la unidad virgen, con la idea de obtener la. unidad, y en la fase de uso: en presencia de la unidad y cada vez que lo imponga un comando de etapa contenido en una porción de la primera parte de ejecución, ejecutar la etapa correspondiente en la unidad, de modo que esta porción se ejecuta correctamente y en consecuencia, el software protegido es completamente funcional, y en ausencia de la unidad, a pesar de la petición de una porción de la primera parte de ejecución de iniciar la ejecución de una etapa en la unidad, al no poder responder correctamente a esta petición, de modo que por lo menos esta porción no se ejecuta correctamente y en consecuencia, el software protegido no es completamente funcional. De acuerdo con otra modalidad preferida, el método de acuerdo con la invención consiste: en la fase de protección: en definir: un juego de funciones elementales en donde las funciones elementales son susceptibles a ser ejecutadas en la unidad que comprende también los medios de procesamiento, y un juego de comandos elementales para este juego de funciones elementales, los comandos elementales son susceptibles de ser ejecutados en el sistema de procesamiento de datos y de iniciar la ejecución en la unidad, de funciones elementales, en construir medios de aprovechamiento que permitan transformar la unidad virgen en la unidad capaz de ejecutar las funciones elementales de dicho juego, la ejecución de estas funciones elementales son iniciadas por la ejecución en el sistema de procesamiento de datos, de comandos elementales, en modificar el software protegido: seleccionando en la fuente del software protegido: por lo menos un procesamiento algorítmico que durante la ejecución del software protegido, utilice por lo menos una variable seleccionada, y permita obtener por lo menos una variable resultante, y por lo menos una porción que contiene al menos un procesamiento algorítmico seleccionado, modificando por lo menos una porción seleccionada de la fuente del software protegido, esta modificación siendo tal que: durante la ejecución del software protegido la primera parte de ejecución es ejecutada en el sistema de procesamiento de datos y una segunda parte de ejecución es ejecutada en la unidad, por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado es ejecutada por medio de la segunda parte de ejecución, por lo menos un procesamiento algorítmico seleccionado se fragmenta de manera que durante la ejecución del software protegido, este procesamiento algorítmico es ejecutado por medio de la segunda parte de ejecución, utilizando las funciones elementales, para al menos un procesamiento algorítmico seleccionado, se integran comandos elementales en la fuente del software protegido, de manera que durante la ejecución del software protegido, cada comando elementa! es ejecutado por la primera parte de ejecución y inicia en la unidad, la ejecución por medio de la segunda parte de ejecución, de una función elemental, y se selecciona un ordenamiento de comandos elementales entre el conjunto de ordenamientos que permiten la ejecución del software protegido, y produciendo: la primera parte objeto del software protegido, esta primera parte objeto siendo tal que durante la ejecución del software protegido, los comandos elementales son ejecutados de acuerdo con el ordenamiento seleccionado, y una segunda parte objeto del software protegido que contiene los medios de aprovechamiento, esta segunda parte objeto siendo tal que después de la carga en la unidad virgen y durante la ejecución del software protegido, aparece la segunda parte de ejecución por medio de la cual se ejecutan las funciones elementales iniciadas por la primera parte de ejecución, y en cargar la segunda parte objeto de la unidad virgen, con la idea de obtener la unidad, y en la fase de uso: en presencia de la unidad cada vez que lo impone un comando elemental contenido en una porción de la primera parte de ejecución, ejecutar la función elemental correspondiente en la unidad, de modo que esta porción es ejecuta correctamente y que en consecuencia, el software protegido es completamente funcional, y en ausencia de la unidad, a pesar de la petición de una porción de la primera parte de ejecución, iniciar la ejecución de una función elemental en la unidad, de no poder responder correctamente a esta demanda, de modo que por lo menos esta porción no es ejecuta correctamente y que en consecuencia, el software protegido no es completamente funcional. De acuerdo con otra modalidad preferida, el método de acuerdo con la invención consiste: en la fase de protección: en definir: un juego de funciones elementales en donde las funciones elementales son susceptibles de ser ejecutadas en la unidad, y un juego de comandos elementales para este juego de funciones elementales, estos comandos elementales son susceptibles de ser ejecutados en el sistema de procesamiento de datos y de iniciar la ejecución en la unidad, de funciones elementales, en construir medios de aprovechamiento que permitan a la unidad, ejecutar las funciones elementales de dicho juego, la ejecución de estas funciones elementales es iniciada por la ejecución en el sistema de procesamiento de datos, de comandos elementales, y en modificar el software protegido: seleccionando en la fuente del software protegido, por lo menos una etapa que durante la ejecución del software protegido, realice la funcionalidad de un procesamiento algorítmico, modificando por lo menos una porción seleccionada de la fuente de software protegido, esta modificación siendo tal que: por lo menos una etapa seleccionada sea fragmentada de manera que durante la ejecución del software protegido, esta etapa sea ejecutada por medio de la segunda parte de ejecución, utilizando las funciones elementales, para al menos una etapa seleccionada, los comandos elementales son integrados en la fuente del software protegido, de manera que durante la ejecución del software protegido, cada comando elemental sea ejecutado por la primera parte de ejecución y inicie en la unidad, la ejecución por medio de la segunda parte de ejecución, de una función elemental, y se selecciona un ordenamiento de comandos elementales entre el conjunto de ordenamientos que permiten la ejecución del software protegido, y produciendo: la primera parte objeto del software protegido, esta primera parte objeto siendo tal que durante la ejecución del software protegido, los comandos elementales son ejecutados de acuerdo con el ordenamiento seleccionado, y la segunda parte objeto del software protegido que contiene también los medios de aprovechamiento, esta segunda parte objeto siendo tal que después de cargar en la unidad y durante la ejecución del software protegido, aparece la segunda parte de ejecución por medio de la cual se ejecutan las funciones elementales iniciadas por la primera parte de ejecución, y en la fase de uso: en presencia de la unidad y cada vez que lo impone un comando elemental contenido en uns porción de la primera parte de ejecución, ejecutar la función elemental que corresponde en la unidad, de modo que esta porción se ejecuta correctamente y que en consecuencia, el software protegido es completamente funcional, y en ausencia de la unidad, a pesar de la petición de una porción de la primera parte de ejecución, iniciar la ejecución de una función elemental en la unidad, en no poder responder correctamente a esta petición, de modo que por lo menos esta porción no sea ejecutada correctamente y que en consecuencia, el software protegido no sea completamente funcional. De acuerdo con otra modalidad preferida, el método de acuerdo con la invención consiste: en la fase de protección: en definir: por lo menos una característica de ejecución de software, susceptible de ser vigilada por lo menos en parte en la unidad, por lo menos un criterio a obedecer para al menos una característica de ejecución de software, medios de detección a aplicar en la unidad y que permiten detectar que por lo menos una característica de ejecución de software obedece por lo menos un criterio asociado, y medios de coerción para aplicar en la unidad y que permiten informar al sistema de procesamiento de datos y/o de modificar la ejecución de un software, cuando por lo menos un criterio no es obedecido, en construir los medios de aprovechamiento que permitan a la unidad, aplicar también los medios de detección y los medios de coerción, y en modificar el software protegido: seleccionando por lo menos una característica de ejecución de software a vigilar, entre las características de ejecución susceptibles de ser vigilada, seleccionando por lo menos un criterio a obedecer para al menos una característica de ejecución de software seleccionado, seleccionando en la fuente del software protegido, funciones elementales para las cuales al menos se vigilará una característica de ejecución de software seleccionado, modificando la menos una porción seleccionada de la fuente del software protegido, esta modificación siendo tal que durante la ejecución del software protegido, se vigila por lo menos una característica de ejecución seleccionada por medio de la segunda parte de ejecución, y el no obedecer un criterio conduce a una información del sistema de procesamiento de datos y/o a una modificación de la ejecución del software protegido, y produciendo la segunda parte objeto del software protegido que contiene los medios de aprovechamiento aplicando también los medios de detección y los medios de coerción, esta segunda parte objeto siendo tal que, después de carga en la unidad y durante la ejecución del software protegido, se vigila por lo menos una característica de ejecución de software y el no obedecer un criterio conduce a una información del sistema de procesamiento de datos y/o a una modificación de la ejecución del software protegido, y en la fase de uso: en presencia de la unidad: mientras se obedezcan todos los criterios correspondientes a todas las características de ejecución vigiladas de todas las porciones modificadas del software protegido, permitir el funcionamiento nominal de estas porciones del software protegido y en consecuencia, permitir el funcionamiento nominal del software protegido, y si por lo menos uno de los criterios correspondientes a una característica de ejecución vigilada de una porción del software protegido no es obedecido, informar al sistema de procesamiento de datos y/o modificar el funcionamiento de la porción del software protegido, de modo que el funcionamiento del software protegido sea modificado. De acuerdo con una variante de modalidad, el método de acuerdo con la invención consiste: en la fase de protección: en definir: como característica de ejecución de software susceptible de ser vigilada, una variable de medición del uso de una funcionalidad de un software, como criterio a obedecer, por lo menos un umbral asociado con cada variable de medición, y medios de actualización que permiten actualizar por lo menos una variable de medición, en construir los medios de aprovechamiento que permiten a la unidad aplicar también los medios de actualización, y en modificar el software protegido: seleccionando como característica de ejecución de software a vigilar, por lo menos una variable de medición del uso de una funcionalidad de un software, seleccionando: por lo menos una funcionalidad del software protegido en donde el uso es susceptible de ser vigilado gracias a una variable de medición, por lo menos una variable de medición que sirve para cuantificar el uso de dicha funcionalidad, por lo menos un umbral asociado con una variable de medición seleccionado que corresponde a un límite de uso de dicha funcionalidad, y por lo menos un método para actualizar una variable de medición seleccionada en función del uso de dicha funcionalidad, y modificando por lo menos una porción seleccionada de la fuente del software protegido, esta modificación siendo tal que, durante la ejecución del software protegido, la variable de medición es actualizada por medio de la segunda parte de ejecución, en función del uso de dicha funcionalidad y por lo menos se toma en cuenta un exceso de umbral, y en la fase de uso, en presencia de la unidad, y en el caso en donde se detecte por lo menos un exceso de umbral correspondiente a por lo menos un límite de uso, en informar al sistema de procesamiento de datos y/o modificar el funcionamiento de la porción del software protegido, de modo que el funcionamiento de software protegido sea modificado. De acuerdo con una variante de modalidad, el método de acuerdo con la invención consiste: en la fase de protección: en definir: para al menos una variable de medición, varios umbrales asociados, y medios de coerción diferentes que correspondan a cada uno de estos umbrales, y en modificar el software protegido: seleccionando en la fuente del software protegido, por lo menos una variable de medición seleccionada a la cual deben estar asociados varios umbrales correspondientes a los límites diferentes de uso de la funcionalidad, seleccionando por lo menos dos umbrales asociados con la variable de medición seleccionada, y modificando por lo menos una porción seleccionada de la fuente de software protegido, esta modificación siendo tal que, durante la ejecución del software protegido, se tomen en cuenta los excesos de diversos umbrales, por medio de la segunda parte de ejecución, de manera diferente, y en la fase de uso: en presencia de la unidad: en el caso en donde se detecta el exceso de un primer umbral, en ordenar al software protegido de no utilizar más la funcionalidad correspondiente, y en el caso en donde se detecte el exceso de un segundo umbral, en hacer inoperante la funcionalidad correspondiente y/o por lo menos una porción del software protegido.
De acuerdo con una vanante de modalidad, el método de acuerdo con la invención consiste: en la fase de protección: en definir medios de recarga que permitan acreditar por lo menos un uso complementario para al menos una funcionalidad de software vigilada por una variable de medición, en construir los medios de aprovechamiento que permitan también a la unidad aplicar los medios de recarga, y en modificar el software protegido: seleccionando la fuente de software protegido, por lo menos una variable de medición seleccionada que permita limitar al uso de una funcionalidad a la cual por lo menos un uso complementario debe poder ser acreditado, y modificando al menos una porción seleccionada, esta modificación siendo tal qué en una fase llamada de recarga, por lo menos se puede acreditar un uso complementario de por lo menos una funcionalidad que corresponde a una variable de medición seleccionada, y en la fase de recarga: en reactualizar por lo menos una variable de medición seleccionada y/o al menos un umbral asociado, a manera de permitir por lo menos un uso complementario de la funcionalidad. De acuerdo con una variante de modalidad, el método de acuerdo con la invención consiste: 8 en la fase de protección: en definir: como característica de ejecución de software susceptible de ser vigilada, un perfil de uso de software, y como criterio a obedecer, por lo menos una característica de ejecución de software, y en modificar el software protegido: seleccionando como característica de ejecución de software a vigilar por lo menos un perfil de uso de software, seleccionando por lo menos una característica de ejecución que debe obedecer por lo menos un perfil de uso seleccionado, y modificando al menos una porción seleccionada de la fuente de software protegido, esta modificación siendo tal que durante la ejecución del software protegido, la segunda parte de ejecución obedece todas las características de ejecución seleccionadas, y en la fase de uso en presencia de la unidad, y en el caso en donde se detecta que por lo menos una característica de ejecución no es obedecida, en informar al sistema de procesamiento de datos y/o en modificar el funcionamiento de la porción del software protegido, de modo que el funcionamiento del software protegido sea modificado. De acuerdo con una variante de modalidad, el método de acuerdo con la invención consiste: en la fase de protección: en definir: un juego de instrucciones en donde las instrucciones son susceptibles de ser ejecutadas en la unidad, un juego de comandos de instrucciones para este juego de instrucciones, estos comandos de instrucciones son susceptibles de ser ejecutados en el sistema de procesamiento de datos y de iniciar en la unidad la ejecución de las instrucciones, como perfil de uso, el encadenamiento de las instrucciones, como característica de ejecución, un encadenamiento deseado para la ejecución de las instrucciones, como medios de detección, medios que permitan detectar que el encadenamiento de las instrucciones no corresponde a aquel deseado, y como medios de coerción, medios que permitan informar al sistema de procesamiento de datos y/o de modificar el funcionamiento de la porción de software protegido cuando el encadenamiento de instrucciones no corresponda a aquel deseado, en construir los medios de aprovechamiento que permitan también a la unidad ejecutar las instrucciones del juego de instrucciones, la ejecución de estas instrucciones son iniciadas por la ejecución en el sistema de procesamiento de datos, de comandos de instrucciones, y en modificar el software protegido: modificando por lo menos una porción seleccionada de la fuente del software protegido: transformando las funciones elementales en instrucciones, especificando el encadenamiento que deben obedecer por lo menos ciertas instrucciones durante su ejecución en la unidad, y transformando los comandos elementales en comandos de instrucciones que correspondan a las instrucciones utilizadas, y en la fase de uso, en presencia de la unidad, en el caso en donde se detecte que el encadenamiento de instrucciones ejecutadas en la unidad no corresponde a aquel deseado, en informar al sistema de procesamiento de datos y/o en modificar el funcionamiento de la porción del software protegido, de modo que el funcionamiento del software protegido sea modificado. De acuerdo con una variante de modalidad, el método de acuerdo con la invención consiste: en la fase de protección: en definir: como juego de instrucciones, un juego de instrucciones en donde por lo menos ciertas instrucciones trabajan sobre registros y utilizan al menos un operando con el fin de arrojar un resultado, por lo menos una parte de las instrucciones que trabajan sobre los registros: una parte que define a la funcionalidad de la instrucción, y una parte que define el encadenamiento deseado para la ejecución de instrucciones y que comprende campos de bits que corresponden a: un campo de identificación de la instrucción, y para cada operando de la instrucción: un campo bandera, y un campo de identificación prevista del operando, para cada registro que pertenece a los medios de aprovechamiento y utilizado por el juego de instrucciones, un campo de identificación generada en la cual se memoriza automáticamente la identificación de la última instrucción que haya arrojado su resultado en este registro, como medios de detección, medios que permiten, durante la ejecución de una instrucción, para cada operando, cuando lo impone el campo bandera, controlar la igualdad entre el campo de identificación generada que corresponde al registro utilizado por este operando, y el campo de identificación prevista del origen de este operando, y como medios de coerción, medios que permiten modificar el resultado de las instrucciones, si por lo menos una de las igualdades controladas es falsa. De acuerdo con otra modalidad preferida, el método de acuerdo con la invención consiste: en la fase de protección: en definir: como un comando iniciador, un comando elemental o un comando de instrucción, como una función dependiente, una función elemental o una instrucción, como una orden, por lo menos un argumento para un comando iniciador, que corresponde por lo menos en parte a la información transmitida por el sistema de procesamiento de datos a la unidad, con el fin de iniciar la ejecución de la función dependiente correspondiente, un método de renombramiento de órdenes que permita renombrar las órdenes con el fin de obtener comandos iniciadores en órdenes renombradas, y medios de restablecimiento destinados a ser aplicados en la unidad en el curso de la fase de uso, y que permitan encontrar la función dependiente a ejecutar, a partir de la orden renombrada, en construir medios de aprovechamiento que permitan a la unidad aplicar también los medios de restablecimiento, y en modificar el software protegido: seleccionando en la fuente del software protegido, comandos iniciadores, modificando por lo menos una porción seleccionada de la fuente del software protegido renombrando las órdenes de comandos iniciadores seleccionados, a fin de disimular la identidad de las funciones dependientes correspondientes, y produciendo: la primera parte objeto del software protegido, esta primera parte objeto siendo tal que durante la ejecución del software protegido, se ejecutan los comandos iniciadores en órdenes renombradas, y la segunda parte objeto del software protegido que contiene los medios de aprovechamiento que aplican también los medios de restablecimiento, esta segunda parte objeto siendo tal que, después de carga en la unidad y durante la ejecución del software protegido, se reestablece la identidad de las funciones dependientes en donde la ejecución es iniciada por la primera parte de ejecución, por medio de la segunda parte de ejecución, y las funciones dependientes son ejecutadas por medio de la segunda parte de ejecución, y en la fase de uso: en presencia de la unidad y cada vez que un comando iniciador en orden renombrada, contenido en una porción de la primera parte de ejecución lo imponga, reestablecer en la unidad, la identidad de la función dependiente correspondiente y en ejecutar la misma, de modo que esta porción se ejecuta correctamente y que en consecuencia, el software protegido es completamente funcional, y en ausencia de la unidad, a pesar de la petición de una porción de la primera parte de ejecución, iniciar la ejecución de una función dependiente en la unidad, en no poder responder correctamente a esta petición, de modo que por lo menos esta porción no se ejecuta correctamente y que en consecuencia, el software protegido no es completamente funcional.
De acuerdo con una variante de modalidad, el método de acuerdo con la invención consiste: en la fase de protección: en definir para al menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalentes, pero iniciadas por comandos iniciadores en donde las órdenes renombradas son diferentes, y en modificar el software protegido: seleccionando en la fuente del software protegido por lo menos una comando iniciador en orden renombrada, y modificando al menos una porción seleccionada de la fuente del software protegido reemplazando por lo menos la orden renombrada de un comando de iniciador en orden renombrada seleccionada, por otra orden renombrada, que inicie una función dependiente de la misma familia. De acuerdo con una variante de modalidad, el método de acuerdo con la invención consiste: en la fase de protección, en definir, para al menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalentes: concatenando un campo de ruido con la información que define la parte funcional de la función dependiente a ejecutar en la unidad, o utilizando el campo de identificación de la instrucción y los campos de identificación prevista de los operandos. De acuerdo con una variante de modalidad, el método de acuerdo con la invención consiste: en la fase de protección: en definir: como método de renombramiento de órdenes, un método de codificación para codificar las órdenes, y como medios de restablecimiento, medios que aplican un método de decodificación para decodificar las órdenes renombradas y reestablecer así la identidad de las funciones dependientes que se ejecutarán en la unidad. De acuerdo con otra modalidad preferida, el método de acuerdo con la invención consiste: en la fase de protección: en modificar el software protegido: seleccionando en la fuente del software protegido, por lo menos una derivación condicional efectuada en por lo menos un procesamiento algorítmico seleccionado, modificando por lo menos una porción seleccionada de la fuente del software protegido, esta modificación es tal que durante la ejecución del software protegido, se ejecuta la funcionalidad de por lo menos una derivación condicional seleccionada, por medio de la segunda parte de ejecución, en la unidad, y produciendo: la primera parte objeto del software protegido, esta primera parte objeto siendo tal que durante la ejecución del software protegido, se ejecuta la funcionalidad de por lo menos una derivación condicional seleccionada en la unidad, y la segunda parte objeto del software protegido, esta segunda parte objeto siendo tal que después de carga en la unidad y durante la ejecución del software protegido, aparece la segunda parte de ejecución por medio de la cual se ejecuta la funcionalidad de por lo menos una derivación condicional seleccionada, y en la fase de uso: en presencia de la unidad y cada vez que lo impone una porción de la primera parte de ejecución, ejecutar la funcionalidad de por lo menos una derivación condicional en la unidad, de modo que esta porción se ejecuta correctamente y que en consecuencia, el software protegido es complemente funcional, y en ausencia de la unidad y a pesar de la petición de una porción de la primera parte de ejecución, ejecutar la funcionalidad de una derivación condicional en la unidad, en no poder responder correctamente a esta petición, de modo que por lo menos esta porción no se ejecuta correctamente y que en consecuencia, el software protegido no es completamente funcional. De acuerdo con una modalidad, el método de acuerdo con la invención consiste, en la fase de protección, en modificar el software protegido: seleccionando, en la fuente del software protegido por lo menos una serie de derivaciones condicionales seleccionadas, modificando la menos una porción seleccionada de la fuente del software protegido, esta modificación es tal que durante la ejecución del software protegido, se ejecuta la funcionalidad global de por lo menos una serie seleccionada de derivaciones condicionales por medio de la segunda parte de ejecución, en la unidad, y produciendo: la primera parte objeto del software protegido, esta primera parte objeto es tal que durante la ejecución del software protegido, se ejecuta la funcionalidad de por lo menos una serie seleccionada de derivaciones condicionales en la unidad, y la segunda parte objeto del software protegido, esta segunda parte objeto siendo tal que después de carga en la unidad y durante la ejecución del software protegido, aparece la segunda parte de ejecución por medio de la cual se ejecuta la funcionalidad global de por lo menos una serie seleccionada de derivaciones condicionales. El método de acuerdo con la invención permite así proteger el uso de un software mediante la aplicación de una unidad de memoria que presenta la particularidad de contener una parte del software durante la ejecución. Se concluye que toda versión derivada del software que intente funcionar sin la unidad de memoria impone recrear la parte del software contenido en la unidad de memoria durante la ejecución, con la condición de que esta versión derivada del software no sea completamente funcional. Otras diversas características resultan de la descripción anterior con referencia a los dibujos anexos que muestran, a manera de ejemplos no limitativos, modalidades y aplicaciones del objeto de la invención. Las figuras 1a y 1 b son diagramas de bloques funcionales que ilustran las diversas representaciones de un software respectivamente no protegido y protegido a través del método de acuerdo con la invención. Las figuras 2a a 2c ilustran a manera de ejemplos, diversas modalidades de un dispositivo de aplicación del método conforme a la invención. Las figuras 3a y 3b son diagramas de bloques funcionales que explican el principio general del método de acuerdo con la invención. Las figuras 4a a 4d son esquemas que ilustran el método de protección de acuerdo con la invención aplicando el principio de protección por variable. Las figuras 5a a 5e son esquemas que ilustran el método de protección de acuerdo con la invención que aplican el principio de protección por disociación temporal. Las figuras 6a a 6e son esquemas que ilustran el método de protección de acuerdo con la invención que aplican el principio de protección por funciones elementales. Las figuras 7a a 7e son esquemas que ilustran el método de protección de acuerdo con la invención aplicando el principio de protección por detección y coerción. Las figuras 8a a 8f son esquemas que ilustran el método de protección de acuerdo con la invención aplicando l principio de protección por renombramiento. Las figuras 9a a 9c son esquemas que ilustran el método de protección de acuerdo con la invención aplicando el principio de protección por derivación condicional. La figura 10 es un esquema que ilustra las diferentes fases de aplicación del objeto de la invención. La figura 1 1 ilustra un ejemplo de modalidad de un sistema que permite la aplicación del período de construcción de la fase de protección de acuerdo con la invención. La figura 12 ilustra un ejemplo de modalidad de una unidad de prepersonalización utilizada en el método de protección de acuerdo con la invención. La figura 13 ¡lustra un ejemplo de modalidad de un sistema que permite la aplicación del período de confección de herramientas de la fase de protección de acuerdo con la invención. La figura 14 ilustra un ejemplo de modalidad de un sistema que permite la aplicación del método de protección de acuerdo con ia invención. La figura 15 ¡lustra un ejemplo de modalidad de una unidad de personalización utilizada en el método de protección de acuerdo con la invención.
En el desarrollo de la descripción, se utilizarán las definiciones siguientes: Un sistema de procesamiento de datos 3 es un sistema capaz de ejecutar un programa. Una unidad de memoria es una unidad capaz de aceptar datos provistos por un sistema de procesamiento de datos 3, de almacenar los datos y de restituirlos a petición del sistema de procesamiento de datos 3. Una unidad de procesamiento y de memoria es una unidad capaz: de aceptar datos provistos por un sistema de procesamiento de datos 3, de restituir datos al sistema de procesamiento de datos 3, de almacenar datos por lo menos en parte de manera secreta y de conservar al menos una parte de éstos cuando la unidad está fuera de tensión, y de efectuar el procesamiento algorítmico sobre los datos, una parte o la totalidad de este procesamiento es secreto. Una unidad 6 es una unidad de memoria o una unidad de procesamiento y de memoria que aplica el método de acuerdo con la invención. Una unidad virgen 60 es una unidad que no aplica el método de acuerdo con la invención, pero que puede recibir informaciones que la transformen en una unidad 6.
Una unidad virgen 60 puede eventualmente convertirse en una unidad 6 durante la ejecución de un software protegido a través del método de acuerdo con la invención y de volver a convertirse después de la ejecución, en una unidad virgen 60. Una unida prepersonalizada 66 es una unidad virgen 60 que haya recibido una parte de la información que le permita, después de la recepción de información complementaria, de ser transformada en una unidad 6. La carga de información en una unidad virgen 60 o una unidad prepersonalizada 66 corresponde a una transferencia de información en la unidad virgen 60 o la unidad prepersonalizada 66, y a un almacenamiento de dicha información transferida. Eventualmente, la transferencia puede comprender un cambio de formato de la información. Una variable, un dato o una función contenida en el sistema de procesamiento de datos 3 será indicado con una mayúscula, mientras que una variable, un dato o una función contenida en la unidad 6 será indicado con una minúscula. Un "software protegido", es un software que ha sido protegido por lo menos por un principio de protección aplicado a través del método de acuerdo con la invención. Un "software vulnerable", es un software que no ha sido protegido por ningún principio de protección aplicado a través del método de acuerdo con la invención.
En el caso en donde la diferenciación entre un software vulnerable y un software protegido no sea de importancia, se utiliza el término "software". Un software se presenta bajo diversas representaciones de acuerdo con el momento considerado en su ciclo de vida: una representación fuente, una representación objeto, una distribución, o una representación dinámica. Una representación fuente de un software está comprendida como una representación que después de transformación, da una representación objeto. Una representación fuente se puede presentar según diferentes niveles, desde un nivel conceptual abstracto hasta un nivel ejecutable directamente por un sistema de procesamiento de datos o una unidad de procesamiento y de memoria. Una representación objeto de un software corresponde a un nivel de representación que después de transferencia en una distribución y de carga posterior en un sistema de procesamiento de datos o una unidad de procesamiento y de memoria, puede ser ejecutado. Se puede tratar, por ejemplo, de un código binario, de un código interpretado, etc. Una distribución es un soporte físico o virtual que contiene la representación objeto, esta distribución debe estar puesta a disposición del usuario para permitirle usar el software.
Una representación dinámica corresponde a la ejecución del software a partir de su distribución. Una porción de software corresponde a una parte cualquiera de software y puede corresponder, por ejemplo, a una o más instrucciones consecutivas o no, y/o a uno o más bloques funcionales consecutivos o no, y/o a una o más funciones, y/o uno o más subprogramas, y/o uno o más módulos. Una porción de un software puede corresponder también a la totalidad de este software. Las figuras 1a y 1 b ilustran las diversas representaciones respectivamente de un software vulnerable 2v en sentido general, de un software protegido 2p de acuerdo con el método de la invención. La figura 1a ¡lustra diversas representaciones de un software vulnerable 2v que aparece en el transcurso de su ciclo de vida. El software vulnerable 2v puede aparecer bajo una de las siguientes representaciones: una representación fuente 2vs, una representación objeto 2vo, una distribución 2vd. Esta distribución se puede presentar comúnmente bajo la forma de un medio de distribución físico tal como un CDRO o bajo la forma de ficheros distribuidos a través de una red (GSM, Internet,...), o una representación dinámica 2ve que corresponde a la ejecución del software vulnerable 2v en un sistema de procesamiento de datos 3 de cualquier tipo conocido, que comprende normalmente, por lo menos un procesador 4. La figura 1 b ¡lustra diversas representaciones de un software protegido 2p que aparece durante su ciclo de vida. El software protegido 2p puede aparecer bajo una de las siguientes representaciones: una representación fuente 2ps que comprende una primera parte fuente destinada al sistema de procesamiento de datos 3 y eventualmente, una segunda parte fuente destinada a la unidad 6, una parte de estas partes fuente puede estar comúnmente contenida en ficheros comunes, una representación objeto 2po que comprende una primera parte objeto 2pos destinada al sistema de procesamiento de datos 3 y eventualmente, una segunda parte objeto 2pou destinada a la unidad 6, una distribución 2pd que comprende: una primera parte de distribución 2pds que contiene la primera parte objeto 2pos, esta primera parte de distribución 2pds está destinada al sistema de procesamiento de datos 3 y se puede presentar comúnmente bajo la forma de un medio de distribución físico tal como un CDROM, o bajo la forma de ficheros distribuidos a través de una red (GSM, Internet, ...), y una segunda parte de distribución 2pdu que se presenta bajo la forma: de por lo menos una unidad virgen 60, o de por lo menos una unidad prepersonalizada 66 sobre la cual se ha cargado una parte de la segunda parte objeto 2pou y para la cual el usuario debe terminar la personalización cargando información complementaria, con el fin de obtener una unidad 6, esta información complementaria se obtiene, por ejemplo, mediante carga o telecarga a través de una red, y de por lo menos una unidad 6 sobre la cual se ha cargado la segunda parte objeto 2pou, o una representación dinámica 2pe que corresponde a la ejecución del software protegido 2p. Esta representación dinámica 2pe comprende una primera parte de ejecución 2pes que es ejecutada en el sistema de procesamiento de datos 3 y una segunda parte de ejecución 2peu que es ejecutada en la unidad 6. En el caso en donde la diferenciación entre las diferentes representaciones del software protegido 2p no tenga importancia, se utilizan las expresiones de primera parte del software protegido y segunda parte del software protegido. La aplicación del método de acuerdo con la invención conforme a la representación dinámica de la figura 1 b, utiliza un dispositivo 1 p que comprende un sistema de procesamiento de datos 3 unido a través de un enlace químico a una unidad 6. El sistema de procesamiento de datos 3 es de cualquier tipo y comprende, normalmente, por lo menos un procesador 4. El sistema de procesamiento de datos 3 puede ser una computadora o puede ser parte, por ejemplo, de diversas máquinas, dispositivos, productos fijos o móviles, o vehículos en el sentido general. Ef enlace 5 se puede realizar de cualquier manera posible, tal como por ejemplo a través de una línea de serie, un bus USB, un enlace de radio, un enlace óptico, un enlace de red o una conexión eléctrica directa sobre un circuito del sistema de procesamiento de datos 3, etc. Cabe señalar que la unidad 6 se puede encontrar eventualmente de manera física en el interior del mismo circuito integrado que el procesador 4 del sistema de procesamiento de datos 3. En este caso, la unidad 6 puede ser considerada como un coprocesador con relación al procesador 4 del sistema de procesamiento de datos 3 y el enlace 5 es interno al circuito integrado. Las figuras 2a a 2c muestran de manera ilustrativa y a título no limitativo, diversas modalidades del dispositivo 1 p que permiten la aplicación del método de protección de acuerdo con la invención. En el ejemplo de modalidad ilustrado en la figura 2a, el dispositivo de protección 1p comprende, como sistema de procesamiento de datos 3, una computadora y, como una unidad 6, una tarjeta de chip 7 y su interfaz 8 comúnmente llamada lector de tarjeta. La computadora 3 está conectada a la unidad 6 mediante un enlace 5. Durante la ejecución de un software protegido 2p, la primera parte de ejecución 2pes que es ejecutada en la computadora 3 y la segunda parte de ejecución 2peu que es ejecutada en la tarjeta de chip 7 y su interfaz 8, deben ser funcionales a manera que el software protegido 2p sea completamente funcional. En el ejemplo de modalidad ilustrado en la figura 2b, el dispositivo de protección 1p provee un producto 9 en sentido general, que comprende diversos elementos 10 adaptados a la o las funciones asumidas por dicho producto 9. El dispositivo de protección 1p comprende, por una parte, un sistema de procesamiento de datos 3 metido en el producto 9 y, por otra parte, una unidad 6 asociada al producto 9. Para que el producto 9 sea completamente funcional, el software protegido 2p debe ser completamente funcional. Así, durante la ejecución del software protegido 2p, la primera parte de ejecución 2pes que es ejecutada en el sistema de procesamiento de datos 3 y la segunda parte de ejecución 2peu que es ejecutada en la unidad 6, deben ser funcionales. Este software protegido 2p permite entonces de manera indirecta, proteger contra un uso no autorizado, el producto 9 o una de sus funcionalidades. Por ejemplo, el producto 9 puede ser una instalación, un sistema, una máquina, un juguete, un aparato electrodoméstico, un teléfono, etc. En el ejemplo de modalidad ilustrado en la figura 2c, el dispositivo de protección 1 p incluye varias computadoras, así como una parte de una red de comunicación. El sistema de procesamiento de datos 3 es una primera computadora conectada mediante un enlace 5 de tipo red, a una unidad 6 constituida por una segunda computadora. Para aplicar la invención, se utiliza la segunda computadora 6 como un servidor de licencias para un software protegido 2p. Durante la ejecución del software protegido 2p, la primera parte de ejecución 2pes que es ejecutada en la primera computadora 3 y la segunda parte de ejecución 2peu que es ejecutada en la segunda computadora 6, deben ser funcionales de manera que el software protegido 2p sea completamente funcional. La figura 3a permite explicar de manera más precisa el método de protección de acuerdo con la invención. Cabe señalar que un software vulnerable 2v se considera siendo ejecutado totalmente en un sistema de procesamiento de datos 3. Por el contrario, en el caso de la aplicación de un software protegido 2p, el sistema de procesamiento de datos 3 comprende medios de transferencia 12 conectados mediante el enlace 5, a medios de transferencia 13 que forman parte de la unidad 6 que permiten comunicar entre ellas, la primera parte de ejecución 2pes y la segunda parte de ejecución 2peu del software protegido 2p. Se debe considerar que los medios transferencia 12, 13 tienen naturaleza de software y/o material y son aptos para asegurar y eventualmente, optimizar la comunicación de datos entre el sistema de procesamiento de datos 3 y la unidad 6. Estos medios transferencia 12, 13 están adaptados para permitir disponer de un software protegido 2p que de preferencia, es independiente del tipo del enlace 5 utilizado. Estos medios transferencia 12, 13 no forman parte del objeto de la invención y no son descritos de manera más precisa, ya que son conocidos por los expertos en la técnica. La primera parte del software protegido 2p comprende comandos. Durante la ejecución del software protegido 2p, la ejecución de estos comandos mediante la primera parte de ejecución 2pes permite la comunicación entre la primera parte de ejecución 2pes y la segunda parte de ejecución 2peu. En el desarrollo de la descripción, estos comandos son representados por IN, OUT o TRIG. Tal como se ilustra en la figura 3b, para permitir la aplicación de la segunda parte de ejecución 2peu del software protegido 2p, la unidad 6 comprende medios de protección 14. En el caso de que la unidad 6 sea una unidad de memoria, los medios de protección 14 comprenden medios de memoria 15. En el caso de que la unidad 6 sea una unidad de procesamiento y de memoria, los medios de protección 14 comprenden medios de memoria 15 y medios de procesamiento 16. Con el objeto de simplificar el desarrollo de la descripción se prefiere considerar, durante la ejecución del software protegido 2p, la presencia de la unidad 6 o la ausencia de la unidad 6. En realidad, una unidad 6 que presenta medios de protección 14 inadaptados para la ejecución de la segunda parte de ejecución 2peu del software protegido 2p también es considerada como ausente, cada vez que la ejecución del software protegido 2p no sea correcta. En otros términos: una unidad 6 físicamente presente y que comprende medios de protección 14 adaptados para la ejecución de la segunda parte de ejecución 2pe del software protegido 2p, siempre es considera como presente, una unidad 6 físicamente presente pero que comprende medios de protección 14 inadaptados, es decir, que no permiten la aplicación correcta de la segunda parte de ejecución 2peu del software protegido 2p es considerada como presente, cuando funcione correctamente, y como ausente cuando no funcione correctamente, y una unidad 6 físicamente ausente es siempre considerada como ausente.
En el caso en donde la unidad 6 esté constituida por una tarjeta de chip 7 y su interfaz 8, los medios de transferencia 13 son fragmentos en dos partes en donde una se encuentra sobre la interfaz 8 y la otra se encuentra sobre la tarjeta de chip 7. En este ejemplo de modalidad, la ausencia de la tarjeta de chip 7 es considerada como equivalente a la ausencia de la unidad 6. En otras palabras, en ausencia de la tarjeta de chip 7 y/o de su interfaz 8, los medios de protección 14 no son accesibles y no permiten la ejecución de la segunda parte de ejecución 2peu del software protegido, de modo que el software protegido 2p no es completamente funcional. De acuerdo con la invención, el método de protección contempla aplicar un principio de protección llamado por "variable" del cual se realiza una descripción con relación a las figuras 4a a 4d. Para la aplicación del principio de protección por variable, se selecciona en la fuente del software vulnerable 2vs, por lo menos una variable que durante la ejecución del software vulnerable 2v, defina parcialmente el estado de ésta. Por estado de un software, se debe comprender el conjunto de informaciones, en un momento dado, necesarias para la ejecución completa de este software, de modo que la ausencia de dicha variable seleccionada perjudica la ejecución completa de este software. También se selecciona por lo menos una porción de fuente del software vulnerable 2vs que contiene al menos una variable seleccionada. Por lo menos una porción seleccionada de la fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps. Esta modificación es tal que durante la ejecución del software protegido 2p, por lo menos una porción de la primera parte de ejecución 2pes que es ejecutada en el sistema de procesamiento de datos 3, toma en cuenta que por lo menos una variable seleccionada o al menos una copia de variable seleccionada, reside en la unidad 6. Para la aplicación del principio de protección por variable, la unidad 6 comprende al menos medios de memoria 15. La figura 4a ¡lustra un ejemplo de ejecución de un software vulnerable 2v. En este ejemplo, aparece en el transcurso de la ejecución del software vulnerable 2v en el sistema de procesamiento de datos 3: en el momento ti, la asignación del dato X a la variable Vi, representado por \ f?, en el momento t2, la asignación del valor de la variable V-i a la variable Y, representada por ???-? , en el momento t3, la asignación del valor de la variable V! a la variable Z, representada por ???-?. La figura 4b ilustra un ejemplo de una primera forma de aplicación de la invención para la cual la variable reside en la unidad 6. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes de software protegido 2p, y en presencia de la unidad 6, resulta: en el momento t-i, la ejecución de un comando de transferencia que inicia la transferencia del dato X desde el sistema de procesamiento de datos 3 hacia la variable Vi situada en los medios de memoria 15 de la unidad 6, este comando de transferencia es representado por OUT (?-?, X) y corresponde al final a la asignación del dato X a la variable v-i , en el momento Í2, la ejecución de un comando de transferencia que inicia la transferencia del valor de la variable v-i que reside en la unidad 6 hacia el sistema de procesamiento de datos 3 con el fin de asignar a la variable Y, este comando de transferencia es representado por IN (vi) y corresponde al final a la asignación del valor de la variable Vi a la variable Y, y en el momento tz, la ejecución de un comando de transferencia que inicia la transferencia del valor de la variable v-? que reside en la unidad 6 hacia el sistema de procesamiento de datos 3 con el fin de asignarlo a la variable Z, este comando de transferencia es representado por IN (v^ y corresponde al final a la asignación del valor de la variable v-i a la variable Z. Cabe señalar que durante la ejecución del software protegido 2p, por lo menos una variable reside en la unidad 6. Así, cuando una porción de la primera parte de ejecución 2pes del software protegido 2p lo impone, y en presencia de la unidad 6, el valor de esta variable que reside en la unidad 6 es transferido hacia el sistema de procesamiento de datos 3 para ser utilizado por la primera parte de ejecución 2pes del software protegido 2p, de modo que esta porción sea ejecutada correctamente y que en consecuencia, el software protegido 2p sea completamente funcional. La figura 4c ilustra un ejemplo de una segunda forma de aplicación de la invención para la cual una copia de la variable reside en la unidad 6. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p, y en presencia de la unidad 6, aparece: en el momento t-i, la asignación del dato X a la variable V-i situado en el sistema de procesamiento de datos 3, así como la ejecución de un comando de transferencia que inicia la transferencia del dato X desde el sistema de procesamiento de datos 3 hacia la variable vi situada en los medios de memoria 15 de la unidad 6, este comando de transferencia siendo representado por OUT (?-?, X), en el momento t2, la asignación del valor de la variable Vi a la variable Y, y en el momento t.3, la ejecución de un comando de transferencia que inicia la transferencia del valor de la variable v-i que reside en la unidad 6 hacia el sistema de datos 3 con el fin de asignarlo a la variable Z, este comando de transferencia siendo representado por IN(vi). Cabe señalar que durante la ejecución del software protegido 2p, por lo menos una copia de una variable reside en la unidad 6. Así, cuando una porción de la primera parte de ejecución 2pes del software protegido 2p lo impone, y en presencia de la unidad 6, el valor de esta copia de variable que reside en la unidad 6 es transferido hacia el sistema de procesamiento de datos 3 para ser utilizado por la primera parte de ejecución 2pes del software protegido 2p, de modo que esta porción es ejecutada correctamente y que en consecuencia, el software protegido 2p es completamente funcional. La figura 4d ilustra un ejemplo de intento de ejecución de! software protegido 2p, mientras la unidad 6 está ausente. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p: en el momento t-i , la ejecución del comando de transferencia OUT(vi , X) no puede iniciar la transferencia del dato X hacia la variable v^ teniendo en cuenta la ausencia de la unidad 6, en el momento t2, la ejecución del comando de transferencia IN(v-i ) no puede iniciar la transferencia del valor de la variable v-i hacia el sistema de procesamiento de datos 3, teniendo en cuenta la ausencia de la unidad 6, y en el momento t3, la ejecución del comando de transferencia IN(v-i) no puede iniciar la transferencia del valor de la variable vi hacia el sistema de procesamiento de datos 3, teniendo en cuenta la ausencia de la unidad 6. Resulta entonces que en ausencia de la unidad 6, por lo menos una petición de una porción de la primera parte de ejecución 2pes para utilizar una variable o una copia de variable que reside en la unidad 6, no puede ser satisfecha correctamente, de modo que por lo menos esta porción no se ejecuta correctamente y en consecuencia, el software protegido 2p no es completamente funcional. Cabe señalar que las transferencias de datos entre el sistema de procesamiento de datos 3 y la unidad 6 ilustrados en los ejemplos anteriores solamente utilizan asignaciones simples, pero el experto en la técnica sabrá combinarla con otras operaciones para llegar a operaciones complejas tales como por ejemplo OUT(v1 ,2*X+3) o bien ?f(5*?1+?2). De acuerdo con otra característica ventajosa de la invención, el método de protección contempla aplicar un principio de protección, llamado por "disociación temporal", del cual se realiza una descripción con relación a las figuras 5a a 5e. Para la aplicación del principio de protección por disociación temporal, se selecciona, en la fuente del software vulnerable 2vs, por lo menos un procesamiento algorítmico que utiliza por lo menos un operando y que arroja al menos un resultado. También se selecciona por lo menos una porción de la fuente del software vulnerable 2vs que contiene al menos un procesamiento algorítmico seleccionado. Al menos una porción seleccionada de la fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps. Esta modificación es tal que especialmente: durante la ejecución del software protegido 2p, por lo menos una porción de la primera parte de ejecución 2pes, que es ejecutada en el sistema de procesamiento de datos 3, toma en cuenta que la funcionalidad de al menos un procesamiento algorítmico seleccionado es ejecutada en la unidad 6, durante la ejecución del software protegido 2p, la segunda parte de ejecución 2peu, que es ejecutada en la unidad 6, ejecuta al menos la funcionalidad de por lo menos un procesamiento algorítmico seleccionado, durante la ejecución del software protegido 2p, cada procesamiento algorítmico seleccionado es fragmentado en varias etapas distintas, a saber: etapa 1 : la disposición del o de los operandos para la unidad 6, etapa 2: la realización en la unidad 6, de la funcionalidad del procesamiento algorítmico seleccionado que utiliza este o estos operandos, y etapa 3: eventualmente, la disposición mediante la unidad 6 para el sistema de procesamiento de datos 3, del resultado del procesamiento algorítmico seleccionado, se definen comandos de etapas para iniciar la ejecución de las etapas, y se selecciona un ordenamiento de los comandos de etapas entre el ensamble de ordenamientos que permiten la ejecución del software protegido 2p. La primera parte de ejecución 2pes del software protegido 2p, que es ejecutada en el sistema de procesamiento de datos 3, ejecuta los comandos de etapas, iniciando en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de cada una de las etapas anteriormente definidas. Para la aplicación del principio de protección por disociación temporal, la unidad 6 comprende medios de memoria 15 y medios de procesamiento 16.
La figura 5a ¡lustra un ejemplo de ejecución de un software vulnerable 2v. En este ejemplo, resulta, en el curso de la ejecución del software vulnerable 2v, en el sistema de procesamiento de datos 3, en un momento dado, el cálculo de Z(j)F(X,Y) que corresponde a la asignación a una variable Z, del resultado de un procesamiento algorítmico representado por una función F y que utiliza operandos X y Y. La figura 5b ilustra un ejemplo de aplicación de la invención para el cual el procesamiento algorítmico seleccionado en la figura 5a es deportado a la unidad 6. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p y en presencia de la unidad 6, aparece: en el momento t|, la etapa 1 , a saber la ejecución de un comando de etapa CE-i que inicia la transferencia de datos X y Y desde el sistema de procesamiento de datos 3 hacia las zonas de memoria respectivamente x y y situadas en los medios de memoria 15 de la unidad 6, este comando de etapa CEi es representado por OUT(x.X), OUT(y, Y), en el momento t2, la etapa 2, a saber la ejecución de un comando de etapa CE2 que inicia en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de la función f, esta función f siendo algorítmicamente equivalente a la función F y este comando de etapa CE2 es representado por TRIG(f). De manera más precisa, la ejecución del comando de etapa CE2 conduce a la ejecución de la función f que se sirve el contenido de las zonas de memoria x y y, y arroja su resultado en una zona de memoria z de la unidad 6, y en momento t3, la etapa 3, a saber la ejecución de un comando de etapa CE3 que inicia la transferencia del resultado de la función f, contenido en la zona de memoria z de la unidad 6 hacia el sistema de procesamiento de datos 3 con el fin de asignarla a la variable Z, este comando de etapa CE3 es representado por IN(z). En el ejemplo ilustrado, las etapas 1 a 3 son ejecutadas de manera sucesiva. Cabe señalar que se pueden aportar dos mejoras: La primera mejora se refiere al caso en donde varios procesamientos algorítmicos son deportados a la unidad 6 y por lo menos el resultado de un procesamiento algorítmico es utilizado por otro procesamiento algorítmico. En este caso, ciertas etapas de transferencia pueden ser eventualmente suprimidas. La segunda mejora considera optar por un ordenamiento pertinente de comandos de etapas entre el conjunto de ordenamientos que permiten la ejecución del software protegido 2p. Al respecto, es preferible seleccionar un ordenamiento de comandos de etapas que disocie temporalmente la ejecución de etapas, intercalando, entre ellas porciones de código ejecutado en el sistema de procesamiento de datos 3 y que comprende o no comandos de etapas que sirven para la determinación de otros datos. Las figuras 5c y 5d ilustran el principio de dicha modalidad. La figura 5c muestra un ejemplo de ejecución de un software vulnerable 2v. En este ejemplo, resulta, en el transcurso de la ejecución del software vulnerable 2v, en el sistema de procesamiento de datos 3, la ejecución de dos procesamientos algorítmicos que conducen a la determinación de Z y Z', tales como Z(j>F (X,Y) y Z'<j)F'(X', Y'). La figura 5d ilustra un ejemplo de aplicación del método de acuerdo con la invención para el cual los dos procesamientos algorítmicos seleccionados en la figura 5c son deportados a la unidad 6. De acuerdo con dicho ejemplo, durante la ejecución en el sistema de procesamiento de datos 3, de la primera parte de ejecución 2pes del software protegido 2p, y en presencia de la unidad 6, aparece, como se explica anteriormente, la ejecución de los comandos de etapas CE1 ; CE2, CE3 que corresponden a la determinación de Z y de comandos de etapas CE'1, CE'2, CE'3 que corresponden a la determinación de Z'. Como se ilustra, los comandos de etapas CE1 a CE'3 no son ejecutados consecutivamente en la medición de los comandos de etapas CE'1 a CE'3l así que se intercalan otras porciones de código. En el ejemplo, también se modaliza el ordenamiento siguiente: CE-i , porción de código intercalado, CE2, porción de código intercalado, CE'1 , porción de código intercalado, CE'2, porción de código intercalado, CE'3, porción de código intercalado, CE3. Cabe señalar que, durante la ejecución del software protegido 2p, en presencia de la unidad 6, cada vez que lo impone un comando de etapa contenido en una porción de la primera parte de ejecución 2pes del software protegido 2p, la etapa correspondiente se ejecuta en la unidad 6. Así, resulta que en presencia de la unidad 6, esta porción es ejecutada correctamente y que en consecuencia, el software protegido 2p es completamente funcional. La figura 5e ilustra un ejemplo de intento de ejecución del software protegido 2p, mientras la unidad 6 está ausente. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p: en el momento ti, la ejecución del comando de etapa OUT(x, X), OUT(y, Y) no puede iniciar la transferencia de datos X y Y hacia las zonas de memoria respectivas x y y teniendo en cuenta la ausencia de la unidad 6, en el momento t2, la ejecución del comando de etapa TRIG(f) no puede iniciar la ejecución de la función f, teniendo en cuenta la ausencia de la unidad 6, y en el momento t3, la ejecución del comando de etapa lN(z) no puede iniciar la transferencia del resultado de la función f, teniendo en cuenta la ausencia de la unidad 6. Resulta entonces que en ausencia de la unidad 6, por lo menos una petición de una porción de la primera parte de ejecución 2pes de iniciar la ejecución de una etapa en la unidad 6, no puede ser correctamente satisfecha, de modo que por lo menos esta porción no se ejecuta correctamente y en consecuencia, el software protegido 2p no es completamente funcional. De acuerdo con otra característica ventajosa de la invención, el método de protección contempla aplicar un principio de protección, llamado por "funciones elementales", del cual se, realiza una descripción con relación a las figuras 6a a 6e. Para la aplicación del principio de protección por funciones elementales, se define: un juego de funciones elementales en donde las funciones elementales son susceptibles de ser ejecutadas, por medio de la segunda parte de ejecución 2peu, en la unidad 6, y eventualmente de transferir datos entre el sistema de procesamiento de datos 3 y la unidad 6, y un juego de comandos elementales para este juego de funciones elementales, estos comandos elementales son susceptibles de ser ejecutados en el sistema de procesamiento de datos 3 y de iniciar la ejecución en la unidad 6, de las funciones elementales correspondientes. Para la aplicación del principio de protección por funciones elementales, también se construyen medios de aprovechamiento que permiten transformar una unidad virgen 60 que contiene medios de memoria 15 y medios de procesamiento 16 en una unidad 6 capaz de ejecutar las funciones elementales, la ejecución de estas funciones elementales son iniciadas por la ejecución en el sistema de procesamiento de datos 3, de comandos elementales. Para la aplicación del principio de protección por funciones elementales, también se selecciona, en la fuente del software vulnerable 2vs, por lo menos un procesamiento algorítmico que utiliza al menos un operando y que arroja por lo menos un resultado. También se selecciona por lo menos una porción de la fuente del software vulnerable 2vs que contiene al menos un procesamiento algorítmico seleccionado. Por lo menos una porción seleccionada de la fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps. Esta modificación es tal que especialmente: durante la ejecución del software protegido 2p, por lo menos una porción de la primera parte de ejecución 2pes, que es ejecutada en el sistema de procesamiento de datos 3, toma en cuenta que la funcionalidad de al menos un procesamiento algorítmico seleccionado es ejecutada en la unidad 6, durante la ejecución del software protegido 2p, la segunda parte de ejecución 2peu, que es ejecutada en la unidad 6, ejecuta al menos la funcionalidad de por lo menos un procesamiento algorítmico seleccionado, cada procesamiento algorítmico seleccionado es fragmentado de manera que durante la ejecución del software protegido 2p, cada procesamiento algorítmico seleccionado es ejecutado, por medio de la segunda parte de ejecución 2peu, utilizando funciones elementales. De preferencia, cada procesamiento algorítmico seleccionado es fragmentado en funciones elementales fen (con n variando de 1 a N), a saber: eventualmente una o más funciones elementales que permiten la disposición de uno o de varios operandos para la unidad 6, funciones elementales en donde algunas utilizan el o los operandos y que en combinación, ejecutan la funcionalidad del procesamiento algorítmico seleccionado, utilizando este o estos operandos, y eventualmente una o más funciones elementales que permiten la disposición mediante la unidad 6, para el sistema de procesamiento de datos 3 del resultado del procesamiento algorítmico seleccionado, y se selecciona un ordenamiento de los comandos elementales entre el conjunto de ordenamientos que permiten la ejecución del software protegido 2p. La primera parte de ejecución 2pes del software protegido 2p que es ejecutada en el sistema de procesamiento de datos 3, ejecuta comandos elementales CFEn (con n variando de 1 a N), que inicia en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de cada una de las funciones elementales fen anteriormente definidas. La figura 6a ¡lustra un ejemplo de ejecución de un software vulnerable 2v. En este ejemplo, aparece, en el transcurso de la ejecución del software vulnerable 2v en el sistema de procesamiento de datos 3, en un momento dado, el cálculo de Z<j>F(X, Y) que corresponde a la asignación de una variable Z del resultado de un procesamiento algorítmico representado por una función F y que utiliza los operandos X y Y. La figura 6b ilustra un ejemplo de aplicación de la invención para el cual el procesamiento algorítmico seleccionado en la figura 6a es deportado a la unidad 6. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p y en presencia de la unidad 6, aparece: en los momentos ti, t2, la ejecución de los comandos elementales CFE-?, CFE2 que inician en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de funciones elementales fe-?, fe2 correspondientes que aseguran la transferencia de datos X, Y desde el sistema de procesamiento de datos 3 hacia las zonas de memoria respectivamente x, y situadas en los medios de memoria 15 de la unidad 6, estos comandos elementales CFE-?, CFE2 son representados respectivamente por OUT(x, X), OUT(y, Y), en los momentos t3 a tN-1, la ejecución de los comandos elementales CFE3 a CFEN-I, que inician en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de funciones elementales fe3 a feN-1 correspondientes, estos comandos elementales CFE3 a CFENM son representados, respectivamente, por TRIG(fe3) a TRlG(feN-i). El desarrollo de las funciones elementales fe3 a feN-i ejecutadas en combinación es algorítmicamente equivalente a la función F. De manera más precisa, la ejecución de estos comandos elementales conduce a la ejecución en la unidad 6, de funciones elementales fe3 a feN-i que se sirven del contenido de las zonas de memoria x, y y que arrojan el resultado en una zona de memoria z de la unidad 6, y en el momento tN, la ejecución de un comando elemental CFEN que inicia en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de la función elemental feN asegurando la transferencia del resultado del procesamiento algorítmico, contenido en la zona de memoria z de la unidad 6 hacia el sistema de procesamiento de datos 3, con el fin de asignarla a la variable Z, este comando elemental CFEN es representado por IN(z). En el ejemplo ¡lustrado, los comandos elementales 1 a N son ejecutados sucesivamente. Cabe señalar que se pueden aportar dos mejoras: La primera mejora se refiere al caso en donde varios procesamientos algorítmicos son deportados a la unidad 6 y por lo menos el resultado de un procesamiento algorítmico es utilizado por otro procesamiento algorítmico. En este caso, algunos comandos elementales que sirven para la transferencia, pueden ser eventualmente suprimidos. La segunda mejora contempla optar por un ordenamiento pertinente de comandos elementales entre el conjunto de ordenamientos que permiten la ejecución del software protegido 2p. Al respecto, es preferible seleccionar un ordenamiento de comandos elementales que disocie temporalmente la ejecución de las funciones elementales, intercalando, entre las mismas, porciones de código ejecutado en el sistema de procesamiento de datos 3 y que comprende o no comandos elementales que sirven para la determinación de otros datos. Las figuras 6c y 6d ilustran el principio de dicha modalidad. La figura 6c muestra un ejemplo de ejecución de un software vulnerable 2v. En este ejemplo, resulta en el transcurso de la ejecución del software vulnerable 2v, en el sistema de procesamiento de datos 3, la ejecución de dos procesamientos algorítmicos que conducen a la determinación de Z y Z\ tales como Z<|)F (X, Y) y Z F" (?', ?'). La figura 6d ilustra un ejemplo de aplicación del método de acuerdo con ¡a invención para el cual los dos procesamientos algorítmicos seleccionados en la figura 6c son deportados a la unidad 6. De acuerdo con dicho ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p y en presencia de la unidad 6, aparece, como se explicó anteriormente, la ejecución de los comandos elementales CFEi a CFEN que corresponde a la determinación de Z y la ejecución de comandos elementales CFE'-i a CFE'M que corresponden a la determinación de Z'. Como se ilustra, los comandos elementales CFEi a CFEN no son ejecutados consecutivamente, en la medición de los comandos elementales CFE'i a CFE'M, así que se intercalan otras porciones de código. En el ejemplo, también se modaliza el ordenamiento siguiente: CFE-i, porción de código intercalado, CFE'-?, CFE2, porción de código intercalado, CFE'2) CFE'3> porción de código intercalado, CFE'4, CFE3, CFE4 CFEN, CFE'M. Cabe señalar que durante la ejecución del software protegido 2p, en presencia de la unidad 6, cada vez que lo impone un comando elemental contenido en una porción de la primera parte de ejecución 2pes del software protegido 2p, se ejecuta la función elemental correspondiente en la unidad 6. Así, aparece, que en presencia de la unidad 6, esta porción es ejecutada correctamente y que en consecuencia, el software protegido 2p es completamente funcional.
La figura 6e ¡lustra un ejemplo de intento de ejecución del software protegido 2p, mientras la unidad 6 está ausente. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3, de la primera parte de ejecución 2pes del software protegido 2p, en todos los momentos, la ejecución de un comando elemental no puede iniciar la ejecución de la función elemental correspondiente, en razón de la ausencia de la unidad 6. El valor para asignar a la variable Z no puede entonces ser determinado de manera correcta. Aparece entonces, que en ausencia de la unidad 6, por lo menos una petición de una porción de la primera parte de ejecución 2pes del software protegido 2p, de iniciar la ejecución de una función elemental en la unidad 6 no puede ser correctamente satisfecha, de modo que por lo menos esta porción no es ejecutada correctamente y que en consecuencia, el software protegido 2p no es completamente funcional. De acuerdo con otra característica ventajosa de la invención, el método de protección contempla aplicar un principio de protección, llamado por "detección y coerción", del cual se efectúa una descripción con relación a las figuras 7a a 7e. Para la aplicación del principio de protección por detección y coerción, se define: por lo menos una característica de ejecución de software susceptible de ser vigilada por lo menos en parte en la unidad 6, por lo menos un criterio a obedecer para al menos una característica de ejecución de software, medios de detección 17 para aplicar en la unidad 6 y que permiten detectar que por lo menos una característica de ejecución de software no obedece al menos un criterio asociado, y medios de coerción 18 para aplicar en la unidad 6 y que permiten informar al sistema de procesamiento de datos 3 y/o de modificar la ejecución de un software, cuando por lo menos un criterio no es obedecido. Para la aplicación del principio de protección por detección y coerción, también se construyen medios de aprovechamiento que permiten transformar una unidad virgen 60 que contiene medios de memoria 15 y medios de procesamiento 16 en una unidad 6 que aplica por lo menos los medios de detección 17 y los medios de coerción 8. La figura 7a ¡lustra los medios de necesarios para la aplicación de este principio de protección por detección y coerción. La unidad 6 comprende medios de detección 17 y los medios de coerción 18 que pertenecen a los medios de procesamiento 16. Los medios de coerción 18 son informados del no obedecer un criterio por parte de los medios de detección 17. De una forma más precisa, los medios de detección 17 utilizan informaciones procedentes de los medios de transferencia 13 y/o de los medios de memoria 15 y/o de los medios de procesamiento 16, a fin de vigilar una o más características de ejecución de software. A cada característica de ejecución de software está fijo por lo menos un criterio a obedecer.
En el caso en donde se detecta que por lo menos una característica de ejecución de software no obedece al menos un criterio, los medios de detección 17 informan a los medios de coerción 18. Estos medios de coerción 18 están adaptados para modificar, de la manera adecuada, el estado de la unidad 6. Para la aplicación del principio de protección por detección y coerción, también se selecciona: por lo menos una característica de ejecución de software a vigilar, entre las características de ejecución susceptibles de ser vigiladas, por lo menos un criterio a obedecer para al menos una característica de ejecución de software seleccionado, en la fuente del software vulnerable 2vs, por lo menos un procesamiento algorítmico para el cual al menos se vigile una característica de ejecución de software, y en la fuente del software vulnerable 2vs, al menos una porción que contiene por lo menos un procesamiento algorítmico seleccionado. Al menos una porción seleccionada de la fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps. Esta modificación es tal que especialmente durante la ejecución del software protegido 2p: al menos una porción de la primera parte de ejecución 2pes, que es ejecutada en el sistema de procesamiento de datos 3, toma en cuenta que por lo menos se vigilará una característica de ejecución de software seleccionado, al menos en parte en la unidad 6, y la segunda parte de ejecución 2peu, que es ejecutada en la unidad 6, vigila por lo menos en parte, una característica de ejecución de software seleccionado. Durante la ejecución del software protegido 2p, protegido por este principio de protección por detección y coerción, en presencia de la unidad 6: como todos los criterios correspondientes a todas las características de ejecución vigiladas de todas las porciones modificadas del software protegido 2p son obedecidos, estas porciones modificadas del software protegido 2p funcionan de manera nominal, y en consecuencia, el software protegido 2p funciona de manera nominal, y si por lo menos uno de los criterios que corresponden a una característica de ejecución vigilada de una porción del software protegido 2p no es obedecido, el sistema de procesamiento de datos 3 es informado y/o el funcionamiento de la porción del software protegido 2p es modificado, de modo que el funcionamiento del software protegido 2p sea modificado. Desde luego, en ausencia de la unidad 6, por lo menos una petición de una porción de la primera parte de ejecución 2pes del software protegido 2p de utilizar la unidad 6 no puede ser satisfecha correctamente, de modo que por lo menos esta porción no se ejecute correctamente y que en consecuencia, el software protegido 2p no sea completamente funcional. Para la aplicación del principio de protección por detección y coerción, se utilizan de preferencia dos tipos de características de ejecución de software. El primer tipo de característica de ejecución de software corresponde a una variable de medición de la ejecución de un software y el segundo tipo corresponde a un perfil de uso de un software. Estos dos tipos de características pueden ser utilizados de manera independiente o en combinación. Para la aplicación del principio de protección por detección y coerción que utiliza como característica de ejecución, una variable de medición de la ejecución de software, se define: en los medios de memoria 15, la posibilidad de memorizar por lo menos una variable de medición que sirva para cuantificar el uso de por lo menos una funcionalidad de software, en los medios de detección 7, la posibilidad de vigilar al menos un umbral asociado con cada variable de medición, y medios de actualización que permiten actualizar cada variable de medición en función del uso de la funcionalidad a la cual está asociada. También se construyen medios de aprovechamiento que aplican, además de los medios de detección 17 y de los medios de coerción 18, ¡os medios de actualización. También se selecciona, en la fuente del software vulnerable 2vs: por lo menos una funcionalidad del software vulnerable 2v en donde el uso es susceptible de ser vigilado gracias a una variable de medición, por lo menos una variable de medición que sirve para cuantificar el uso de dicha funcionalidad, por lo menos un umbral asociado con la variable de medición que corresponde a un límite de uso de dicha funcionalidad, y por lo menos un método de actualización de la variable de medición en función del uso de dicha funcionalidad. La fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente de software protegido 2ps, esta modificación siendo tal que durante la ejecución del software protegido 2p, la segunda parte de ejecución 2peu: actualiza la variable de medición en función del uso de dicha funcionalidad, y toma en cuenta por lo menos un exceso de umbral. En otros términos, durante la ejecución del software protegido 2p, la variable de medición es actualizada en función del uso de dicha funcionalidad, y mientras el umbral es excedido, los medios de detección 17 informan a los medios de coerción 18 que toman una decisión adaptada para informar al sistema de procesamiento de datos 3 y/o modificar los procesamientos efectuados por lo medios de procesamiento 16 que permiten modificar el funcionamiento de la porción de software protegido 2p, de modo que se modifique el funcionamiento del software protegido 2p. Para la aplicación de una primera variante preferida de modalidad del principio de protección por detección y coerción que utilizan, como característica, una variable de medición, se define: para al menos una variable de medición, varios umbrales asociados, y medios de coerción diferentes que corresponden a cada uno de estos umbrales. También se selecciona, en la fuente del software vulnerable 2vs: por lo menos una variable de medición que sirve para cuantificar el uso de al menos una funcionalidad del software y a la cual deben estar asociados varios umbrales que corresponden a los límites diferentes de uso de dicha funcionalidad, y por lo menos dos umbrales asociados a la variable de medición. La fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps, esta modificación siendo tal que durante la ejecución del software protegido 2p, la segunda parte de ejecución 2peu: actualiza la variable de medición en función del uso de dicha funcionalidad, y toma en cuenta, de manera diferente, los excedentes de diversos umbrales. En otros términos, por lo regular, durante la ejecución del software protegido 2p, mientras el primer umbral es excedido, la unidad 6 informa al sistema de procesamiento de datos 3 ordenando al software protegido 2p de no utilizar más esta funcionalidad. Si el software protegido 2p continúa utilizando esta funcionalidad, el segundo umbral podrá ser excedido.
En el caso en donde el segundo umbral es excedido, los medios de coerción 18 pueden volver inoperante la funcionalidad seleccionada y/o volver inoperante el software protegido 2p. Para la aplicación de una segunda variante preferida de modalidad del principio de protección por detección y coerción utilizando, como característica, una variable de medición, se definen medios de recarga que permiten acreditar por lo menos un uso complementario para al menos una funcionalidad de software vigilado por una variable de medición. También se construyen medios de aprovechamiento que aplican, además los medios de detección 17, medios de coerción 18 y medios de actualización, los medios de recarga. También se selecciona, en la fuente del software vulnerable 2vs, por lo menos una variable de medición que sirve para limitar el uso de al menos una funcionalidad del software y a la cual se debe poder acreditar por lo menos un uso complementario. La fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps, esta modificación siendo tal que en una fase llamada de recarga, por lo menos un uso complementario de al menos una funcionalidad que corresponde a una variable de medición seleccionada puede ser acreditado.
En la fase de recarga, se procede a la reactualización de por lo menos una variable de medición seleccionada y/o de por lo menos un umbral asociado, a manera de permitir al menos un uso complementario de la funcionalidad correspondiente. En otros términos, es posible, en la fase de recarga, acreditar los usos complementarios de por lo menos una funcionalidad del software protegido 2p. Para la aplicación del principio de protección por detección y coerción utilizando, como característica, un perfil de uso de software, se define como criterio a obedecer para este perfil de uso, por lo menos una característica de ejecución de software. También se selecciona, en la fuente del software vulnerable 2vs: por lo menos un perfil de uso a vigilar, y por lo menos una característica de ejecución que debe obedecer al menos un perfil de uso seleccionado. La fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps, esta modificación siendo tal que durante la ejecución del software protegido 2p, la segunda parte de ejecución 2peu, obedece todas las características de ejecución seleccionadas. En otros términos, la unidad 6 vigila la manera en la cual la segunda parte de ejecución 2peu es ejecutada y puede informar al sistema de procesamiento de datos 3 y/o modificar el funcionamiento del software protegido 2p, en el caso en donde no se obedezca por lo menos una característica de ejecución.
Durante la ejecución del software protegido 2p, protegido por este principio, en presencia de la unidad 6: mientras que se obedecen todas las características de ejecución de todas las porciones modificadas del software protegido 2p, estas porciones modificadas del software protegido 2p funcionan de manera nominal y en consecuencia, el software protegido 2p funciona de manera nominal, y si no se obedece al menos una característica de ejecución de una porción de software protegido 2p, el sistema de procesamiento de datos 3 es informado y/o el funcionamiento de la porción del software protegido 2p es modificado, de modo que el funcionamiento del software protegido 2p sea modificado. Se puede contemplar la vigilancia de diferentes características de ejecución, como por ejemplo la vigilancia de la presencia de instrucciones que comprende un marcador o la vigilancia del encadenamiento de ejecución por lo menos para una parte de las instrucciones. Para la aplicación del principio de protección por detección y coerción que utilizan como característica de ejecución a obedecer, la vigilancia del encadenamiento de ejecución al menos para una parte de las instrucciones, se define: un juego de instrucciones en donde las instrucciones son susceptibles de ser ejecutadas en la unidad 6, un juego de comandos de instrucción para este juego de instrucciones, estos comandos de instrucciones son susceptibles de ser ejecutados en el sistema de procesamiento de datos 3. La ejecución de cada uno de estos comandos de instrucciones en el sistema de procesamiento de datos 3 inicia en la unidad 6, la ejecución de la instrucción correspondiente, medios de detección 17 que permiten detectar que el encadenamiento de las instrucciones no corresponde a aquel deseado, y medios de coerción 18 que permiten informar al sistema de procesamiento de datos 3 y/o de modificar la ejecución de un software cuando el encadenamiento de las instrucciones no corresponde a aquel deseado. También se construyen medios de aprovechamiento que permiten, en la unidad 6, ejecutar además las instrucciones del juego de instrucciones, la ejecución de estas instrucciones es iniciada por la ejecución en el sistema de procesamiento de datos 3 de comandos de instrucciones. También se selecciona, en la fuente del software vulnerable 2vs, por lo menos un procesamiento algorítmico que llega a ser deportado a la unidad 6 y para el cual se va a vigilar el encadenamiento de por lo menos una parte de las instrucciones. La fuente del software vulnerable 2vs es entonces modificada a manera de obtener la fuente del software protegido 2ps, esta modificación es tal que durante la ejecución del software protegido 2p: la segunda parte de ejecución 2peu ejecuta por lo menos la funcionalidad del procesamiento algorítmico seleccionado, el procesamiento algorítmico seleccionado es fragmentado en instrucciones, se especifica el encadenamiento que deben obedecer por lo menos algunas de las instrucciones durante su ejecución en la unidad 6, y la primera parte de ejecución 2pes del software protegido 2p ejecuta comandos de instrucciones que inician la ejecución de instrucciones en la unidad 6. Durante le ejecución del software protegido 2p, protegido por este principio, en presencia de la unidad 6: mientras que el encadenamiento de las instrucciones de todas las porciones modificadas del software protegido 2p corresponde a aquel deseado, estas porciones modificadas del software protegido 2p funcionan de manera nominal y en consecuencia, el software protegido 2p funciona de manera nominal, y si el encadenamiento de las instrucciones de una porción de software protegido 2p ejecutadas en la unidad 6 no corresponde a aquel deseado, el sistema de procesamiento de datos 3 es informado y/o el funcionamiento de la porción del software protegido 2p es modificado, de modo que el funcionamiento del software protegido 2p sea modificado. La figura 7b ¡lustra un ejemplo de aplicación del principio de protección por detección y coerción que utilizan, como característica de ejecución a obedecer la vigilancia del encadenamiento de ejecución de por lo menos una parte de las instrucciones, en el caso en donde se obedezca el encadenamiento deseado. La primera parte de ejecución 2pes del software protegido 2p, ejecutada en el sistema de procesamiento de datos 3, ejecuta comandos de instrucciones Cl¡ que inician, en la unidad 6, la ejecución de instrucciones ¡¡ que pertenecen al juego de instrucciones. En el juego de instrucciones, por lo menos algunas de las instrucciones comprenden cada una, una parte que define la funcionalidad de la instrucción y una parte que permite verificar el encadenamiento deseado para la ejecución de instrucciones. En este ejemplo, los comandos de instrucciones Cl¡ son representados por TRIG(i¡) y el encadenamiento deseado para la ejecución de instrucciones es ¡n, ¡n+1 y ¡n+2. La ejecución en la unidad 6, de la instrucción in da el resultado a, y la ejecución de la instrucción in+-i da el resultado b. La instrucción in+2 utiliza como operando, los resultados a y b de las instrucciones in y ¡n+i y su ejecución da el resultado c. Teniendo en cuenta que este encadenamiento de instrucciones ejecutadas en la unidad 6 corresponde a aquel deseado, se provee un funcionamiento normal o nominal del software protegido 2p. La figura 7c ilustra un ejemplo de aplicación del principio de protección por detección y coerción que utiliza, como característica de ejecución a obedecer, la vigilancia del encadenamiento de ejecución de por lo menos una parte de las instrucciones, en el caso en donde no se obedezca el encadenamiento deseado. De acuerdo con este ejemplo, el encadenamiento deseado para la ejecución de instrucciones siempre es in, in+i y in+2- Sin embargo, el encadenamiento de ejecución de las instrucciones es modificado por el reemplazo de la instrucción in por la instrucción i'n, de modo que el encadenamiento efectivamente ejecutado es i'n, in+i y in+2- La ejecución de la instrucción i'n da el resultado a, es decir, el mismo resultado que la ejecución de la instrucción in. Sin embargo, posteriormente durante la ejecución de la instrucción \n+2, los medios de detección 17 detectan que la instrucción i'n no corresponde a la instrucción deseada para generar el resultado a utilizado como operando de la instrucción in+2- Los medios de detección 17 informan a los medios de coerción 18 que modifican en consecuencia, el funcionamiento de la instrucción in+2, de modo que la ejecución de la instrucción in+2 da el resultado c' que puede ser diferente a c. Desde luego, si la ejecución de la instrucción i'n da un resultado a' diferente al resultado a de la instrucción in, es claro que el resultado de la instrucción in+2 también puede ser diferente a c. En la medición en que el encadenamiento de ejecución de las instrucciones ejecutadas en la unidad 6 no corresponda a aquel deseado, se puede obtener entonces una modificación del funcionamiento del software protegido 2p. Las figuras 7d y 7e ilustran una variante preferida de modalidad del principio de protección por detección y coerción que utilizan, como característica de ejecución a obedecer, la vigilancia del encadenamiento de ejecución de por lo menos una parte de las instrucciones. De acuerdo con esta variante preferida, se define un juego de instrucciones en donde por lo menos algunas instrucciones trabajan sobre registros y utilizan por lo menos un operando con el objeto de arrojar un resultado.
Como se ilustra en la figura 7d, se define para al menos algunas de las instrucciones que trabajan sobre registros, una parte PF que define la funcionalidad de la instrucción y una parte PE que define al encadenamiento deseado para la ejecución de las instrucciones. La parte PF corresponde al código operación conocido por el experto en la técnica. La parte PE que define el encadenamiento deseado, comprende campos de bits que corresponden a: un campo de identificación de la instrucción CU, y para cada operando k de la instrucción, con k variando de 1 a K, y K número de operandos de la instrucción: un campo bandera CD|< que indica si conviene verificar la procedencia del operando k, y un campo de identificación previsto CIPk del operando, que indique la identidad esperada de la instrucción que haya generado el contenido del operando k. Como se ilustra en la figura 7e, el juego de instrucciones comprende V registros que pertenecen a los medios de procesamiento 16, cada registro es nombrado Rv, con v variando de 1 a V. Para cada registro Rv, se definen dos campos, a saber: un campo funcional CFV, conocido por el experto en la técnica y que permite almacenar el resultado de la ejecución de instrucciones, y un campo de identificación generado CIGV, que permite memorizar la identidad de la instrucción que haya generado el contenido del campo funcional CFV. Este campo de identificación generada CIGV es actualizado automáticamente con el contenido del campo de identificación de la instrucción CU habiendo generado el campo funcional CFV. Este campo de identificación generada CIGV no es accesible, ni modificable por alguna instrucción y sirve únicamente para los medios de detección 17. Durante la ejecución de una instrucción, los medios de detección 17 efectúan para cada operando k las siguientes operaciones: se lee el campo bandera CDk, si el campo bandera CDk lo impone, el campo de identificación prevista ClPk y el campo de identificación generada CIGV que corresponden al registro utilizado para el operando k son ambos leídos, la igualdad de los dos campos CIPk y CIG es controlada, y si la igualdad es falsa, los medios de detección 17 consideran que el encadenamiento de ejecución de instrucciones no ha sido obedecido. Los medios de coerción 18 permiten modificar el resultado de las instrucciones cuando los medios de detección 17 les informan de un encadenamiento de instrucciones no obedecido. Una modalidad preferida consiste en modificar la parte funcional PF de la instrucción durante la ejecución o la parte funcional PF de instrucciones ulteriores. De acuerdo con otra característica ventajosa de la invención, el método de protección contempla aplicar un principio de protección, llamado por "renombramiento", del cual se efectúa una descripción con relación a las figuras 8a a 8f.
Para la aplicación del principio de protección por renombramiento, se define: un conjunto de funciones dependientes, en donde las funciones dependientes son susceptibles de ser ejecutadas, por medio de la segunda parte de ejecución 2peu, en la unidad 6, y eventualmente de transferir datos entre el sistema de procesamiento de datos 3 y la unidad 6, este conjunto de funciones dependientes puede ser finito o infinito, un conjunto de comandos iniciadores para estas funciones dependientes, estos comandos iniciadores son susceptibles de ser ejecutados en el sistema de procesamiento de datos 3 y de iniciar en la unidad 6, la ejecución de funciones dependientes correspondientes, para cada comando iniciador, una orden correspondiente por lo menos en parte a la información transmitida por la primera parte de ejecución 2pes, a la segunda parte de ejecución 2peu, con el fin de iniciar la ejecución de la función dependiente correspondiente, esta orden se presenta bajo la forma de por lo menos un argumento del comando iniciador, un método de renombramiento de órdenes destinado a ser aplicado durante la modificación del software vulnerable, dicho método permite renombrar las órdenes con el fin de obtener comandos iniciadores para órdenes renombradas que permiten disimular la identidad de las funciones dependientes correspondientes, y medios de restablecimiento 20 destinados a ser aplicados en la unidad 6 durante la fase de uso y que permiten encontrar la orden inicial, a partir de la orden renombrada, con el fin de encontrar la función dependiente a ejecutar. Para la aplicación del principio de protección por renombramiento, también se construyen medios de aprovechamiento que permiten trasformar una unidad virgen 60 que contiene medios de memoria 15 y medios de procesamiento 16 en una unidad 6 que aplica por lo menos los medios de restablecimiento 20. Para la aplicación del principio de protección por renombramiento, también se selecciona, en la fuente del software vulnerable 2vs: por lo menos un procesamiento algorítmico que utiliza al menos un operando y que arroja al menos un resultado, y por lo menos una porción de la fuente del software vulnerable 2vs, que contiene por lo menos un procesamiento algorítmico seleccionado. La fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps. Esta modificación es tal que especialmente: durante la ejecución del software protegido 2p, por lo menos una porción de la primera parte de ejecución 2pes, que es ejecutada en el sistema de procesamiento de datos 3, toma en cuenta que la funcionalidad de por lo menos un procesamiento algorítmico seleccionado es ejecutada en la unidad 6, durante la ejecución del software protegido 2p, la segunda parte de ejecución 2peu, que es ejecutada en la unidad 6, ejecuta por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado, cada procesamiento algorítmico seleccionado es fragmentado de manera que durante la ejecución del software protegido 2p, cada procesamiento algorítmico seleccionado sea ejecutado, por medio de la segunda parte de ejecución 2peu, utilizando funciones dependientes. De preferencia, cada procesamiento algorítmico seleccionado es fragmentado en funciones dependientes fdn (con n variando de 1 a N), a saber: eventualmente una o más funciones dependientes que permitan la disposición de uno de más operandos para la unidad 6, funciones dependientes en donde algunas utilizan el o los operandos y que en combinación, ejecutan la funcionalidad del procesamiento algorítmico seleccionado, utilizando este o estos operandos, y eventualmente una o más funciones dependientes que permitan la disposición para la unidad 6, para el sistema de procesamiento de datos 3 del resultado del procesamiento algorítmico seleccionado, durante la ejecución del software protegido 2p, la segunda parte de ejecución 2peu ejecuta las funciones dependientes fdn, durante la ejecución de software protegido 2p, las funciones dependientes son iniciadas por comandos iniciadores en órdenes renombradas, y se selecciona un ordenamiento de estos comandos iniciadores entre el conjunto de ordenamientos que permiten la ejecución del software protegido 2p. La primera parte de ejecución 2pes del software protegido 2p, ejecutada en el sistema de procesamiento de datos 3, ejecuta comandos iniciadores a órdenes renombradas transfiriendo hacia la unidad 6 órdenes renombradas, y que inicia en la unidad 6, el restablecimiento a través de medios de restablecimiento 20, de órdenes, posteriormente la ejecución por medio de la segunda parte de ejecución 2peu, de cada una de las funciones anteriores fdn previamente definidas. En otros términos, el principio de protección por renombramiento consiste en renombrar las órdenes de comandos iniciadores, a manera de obtener comandos iniciadores en órdenes renombradas en donde la ejecución en el sistema de procesamiento de datos 3, inicia en la unidad 6, la ejecución de funciones dependientes que habrán sido iniciadas por los comandos iniciadores en órdenes no renombradas, no obstante, sin que el examen del software protegido 2p no permita determinar la identidad de funciones dependientes ejecutadas. La figura 8a ¡lustra un ejemplo de ejecución de un software vulnerable 2v. En este ejemplo, aparece en el transcurso de la ejecución del software vulnerable 2v en el sistema de procesamiento de datos 3, en un momento dado, el cálculo de ?f?(?, Y) que corresponde a la asignación a una variable Z del resultado de un procesamiento algorítmico representado por una función F y que utiliza los operandos X y Y. Las figuras 8b y 8c ilustran un ejemplo de aplicación de la invención. La figura 8b ilustra la aplicación parcial de la invención. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p y en presencia de la unidad 6, aparece: en los momentos t-i, t2, la ejecución de los comandos iniciadores CD^ CD2 que inician en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de funciones dependientes fd-], fd2 correspondientes que aseguran la transferencia de datos X, Y desde el sistema de procesamiento de datos 3 hacia zonas de memoria respectivamente x, y situadas en los medios de memoria 15 de la unidad 6, estos comandos iniciadores CD^ CD2 están representados respectivamente por OUT(x, X), OUT(y, Y), en los momentos t3 a tw-i, la ejecución de comandos iniciadores CD3 a CDN-1 , que inician en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de funciones dependientes fd3 a fd^ correspondientes, estos comandos iniciadores CD3 a CD -I están representados, respectivamente, por TRIG(fd3) a TRIG(fdN-i). El desarrollo de las funciones dependientes fd3 a fdN-1 ejecutadas en combinación es algorítmicamente equivalente a la función F. De manera más precisa, la ejecución de estos comandos iniciadores conduce a la ejecución en la unidad 6, de funciones dependientes fd3 a fdN-i que se sirven del contenido de las zonas de memoria x, y y arrojan el resultado en una zona de memoria z de la unidad 6, y en el momento tN, la ejecución de un comando iniciador CDN que inicia en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de la función dependiente fdN que asegura la transferencia del resultado del procesamiento algorítmico contenido en la zona de memoria z de la unidad 6 hacia el sistema de procesamiento de datos 3, con el fin de asignarlo a la variable Z, este comando es representado por IN(z). En este ejemplo, para aplicar completamente la invención, se selecciona como orden, el primer argumento de los comandos iniciadores OUT y el argumento de los comandos iniciadores TRIG e IN. Las órdenes así seleccionadas son renombradas por el método de renombramiento de órdenes. De esta manera, las órdenes de comandos iniciadores CD-i a CDN a saber x, y, fd3, fd -i , z son renombradas a manera de obtener respectivamente R(x), R(y), R(fd3)..., R(fdN.i ), R(z). La figura 8c ilustra la aplicación completa de la invención. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3, de la primera parte de ejecución 2pes del software protegido 2p, y en presencia de la unidad 6, aparece: en los momentos t-i , t2, la ejecución de comandos iniciadores en órdenes renombradas CDCR-?, CDCR2 que transfieren hacia la unidad 6, las órdenes renombradas R(x), R(y) así como los datos X, Y inician en la unidad 6 el restablecimiento por medio de los medios de restablecimiento 20, de órdenes renombradas para reestablecer las órdenes, a saber, la identidad de zonas de memoria x, y, desde ia ejecución por medio de la segunda parte de ejecución 2peu, de funciones dependientes fd-i, fd2 correspondientes que aseguran la transferencia de datos X, Y desde el sistema de procesamiento de datos 3 hacia las zonas de memoria respectivamente x, y situadas en los medios de memoria 15 de la unidad 6, estos comandos iniciadores en órdenes renombradas CDCR-?, CDCR2 están representados respectivamente por OUT (R(x), X), OUT (R(y), Y), en los momentos t3 a tN-i, la ejecución de comandos iniciadores en órdenes renombradas CDCR3 a CDCRN-I, que transfieren hacia la unidad 6, las órdenes renombradas R(fd3) a R(fdN-1), iniciando en la unidad 6 el restablecimiento por medio de medios de restablecimiento 20, de órdenes, a saber, fd3 a fdN-i, desde la ejecución por medio de la segunda parte de ejecución 2peu, de funciones dependientes fd3 a fdN--i, estos comandos iniciadores en órdenes renombradas CDCR3 a CDCRN-I son representados respectivamente por TRIG (R(fd3)) a TRIG (R(fdN-1)), y en el momento tN, la ejecución del comando iniciador en orden renombrada CDCRN que transfiere hacia la unidad 6, la orden renombrada R(z) iniciando en la unidad 6 el restablecimiento por medio de medios de restablecimiento 20, de la orden, a saber, la identidad de la zona de memoria z, desde la ejecución por medio de la segunda parte de ejecución 2peu, de la función dependiente fdn que asegura la transferencia del resultado del procesamiento algorítmico contenido en la zona de memoria z de la unidad 6 hacia el sistema de procesamiento de datos 3 con el fin de asignarlo a la variable Z, este comando iniciador en orden renombrada CDCRN es representado por IN (R(z)). En el ejemplo ilustrado, los comandos iniciadores en órdenes renombradas 1 a N son ejecutados sucesivamente. Cabe señalar que se pueden aportar dos mejoras: La primera mejora se refiere al caso en donde varios procesamientos algorítmicos son deportados a la unidad 6 y por lo menos el resultado de un procesamiento algorítmico es utilizado por otro procesamiento algorítmico. En este caso, ciertos comandos iniciadores en órdenes renombradas que sirven para la transferencia, pueden ser eventualmente suprimidos. La segunda mejora contempla en optar por un ordenamiento pertinente de los comandos iniciadores en órdenes renombradas entre el conjunto de ordenamientos que permiten la ejecución del software protegido 2p. Al respecto, es preferible seleccionar un ordenamiento de comandos iniciadores en órdenes renombradas que disocie temporalmente la ejecución de funciones dependientes, intercalando entre ellas porciones de código ejecutado en el sistema de procesamiento de datos 3 y que comprende o no comandos iniciadores en órdenes renombradas que sirven para la determinación de otros datos. Las figuras 8d y 8e ilustran el principio de dicha modalidad. La figura 8d muestra un ejemplo de ejecución de un software vulnerable 2v. En este ejemplo, aparece, en el transcurso de la ejecución del software vulnerable 2v, en el sistema de procesamiento de datos 3, la ejecución de dos procesamientos algorítmicos que conducen a la determinación de Z y Z, tales como Z<|>F(X, Y) y Z'<j)F'(X\ Y'). La figura 8e ¡lustra un ejemplo de aplicación del método de acuerdo con la invención para el cual los dos procesamientos algorítmicos seleccionados en la figura 8d son deportados a la unidad 6. De acuerdo con dicho ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p y en presencia de la unidad 6, aparece, como se explicó anteriormente, la ejecución de comandos iniciadores en órdenes renombradas CDC a CDCRN que corresponden a la determinación de Z y la ejecución de comandos iniciadores en órdenes renombradas CDCR'-? a CDCR'M que corresponden a la determinación de 71. Como se ilustra, los comandos iniciadores en órdenes renombradas CDCR a CDCRN no son ejecutados consecutivamente, en la medición en que los comandos iniciadores en órdenes renombradas CDCR'i a CDCR'M así como otras porciones de códigos son intercalados. En el ejemplo, también se modaliza el ordenamiento siguiente: CDCR-?, porción de código intercalado, CDCR'i a CDCR2, porción de código intercalado, CDCR'2, CDCR'3, porción de código intercalado, CDCR'4, CDCR3, CDCR4, CDCRN, CDCR'M. Cabe señalar que durante la ejecución de una porción de la primera parte de ejecución 2pes del software protegido 2p, los comandos iniciadores en órdenes renombradas ejecutadas en el sistema de procesamiento de datos 3, inician en la unidad 6 el restablecimiento de la identidad de funciones dependientes correspondientes desde la ejecución de las mismas. Así, resulta que en presencia de la unidad 6, esta porción es ejecutada correctamente y que en consecuencia, el software protegido 2p es completamente funcional. La figura 8f ilustra un ejemplo de intento de ejecución del software protegido 2p, mientras que la unidad 6 está ausente. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p, en todo momento, la ejecución de un comando iniciador en orden renombrada no puede iniciar el restablecimiento de la orden ni la ejecución de la función dependiente correspondiente, en razón de la ausencia de la unidad 6. El valor a asignar a la variable Z no puede ser entonces determinado correctamente. Resulta entonces, que en ausencia de la unidad 6, por lo menos una petición de una porción de la primera parte de ejecución 2pes del software protegido 2p, de iniciar el restablecimiento de una orden y la ejecución de una función dependiente en la unidad 6 no puede ser satisfecha correctamente, de modo que por lo menos esta porción no es ejecutada correctamente y que en consecuencia, el software protegido 2p no es completamente funcional. Gracias a este principio de protección por renombramiento, el examen en el software protegido 2p de los comandos iniciadores en órdenes renombradas, no permite determinar la identidad de funciones dependientes antes de ser ejecutadas en la unidad 6. Cabe señalar que el renombramiento de orden se realiza durante la modificación del software vulnerable 2v en un software protegido 2p. De acuerdo con una variante del principio de protección por renombramiento, se define por lo menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalentes pero iniciadas por comandos iniciadores en órdenes renombradas diferentes. De acuerdo con esta variante, para al menos un procesamiento algorítmico que utiliza funciones dependientes, este procesamiento algorítmico es fragmentado en funciones dependientes que para al menos una de ellas es reemplazada por una función dependiente de la misma familia en lugar de conservar varias ocurrencias de la misma función dependiente. Para este efecto, los comandos iniciadores en órdenes renombradas son modificados para tener en cuenta el reemplazo de funciones dependientes por funciones dependientes de la misma familia. En otros términos, dos funciones dependientes de la misma familia tienen órdenes diferentes y en consecuencia, comandos iniciadores en órdenes renombradas diferentes y, no es posible, en el examen del software protegido 2p, revelar que las funciones dependientes llamadas son algorítmicamente equivalentes. De acuerdo con una modalidad preferida de la variante del principio de protección por renombramiento, se define para al menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalente, concatenando un campo de ruido a la información que define la parte funcional de la función dependiente para ejecutar en la unidad 6. De acuerdo con una segunda modalidad preferida de la variante del principio de protección por renombramiento, se define para al menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalentes utilizado campos de identificación. De acuerdo con una variante preferida de modalidad del principio de protección por renombramiento, se define como método de renombramiento de órdenes, un método de codificación que permite codificar las órdenes para transformarlas en órdenes renombradas. Cabe recordar que el renombramiento de orden se realiza en la fase de protección P. Para esta variante preferida, los medios de restablecimiento 20 son medios que aplican un método de decodificación que permite decodificar las órdenes renombradas y de reestablecer así la identidad de funciones dependientes para ejecutar en la unidad 6. Estos medios de restablecimientos son aplicados en la unidad 6 y pueden ser de naturaleza de software o material. Estos medios de restablecimiento 20 son solicitados en la fase de uso U cada vez que un comando iniciador en orden renombrada es ejecutado en el sistema de procesamiento de datos 3 con el objetivo de iniciar en la unidad 6 la ejecución de una función dependiente. De acuerdo con otra característica ventajosa de la invención, el método de protección contempla aplicar un principio de protección llamado por "derivación condicional" cuya descripción se realiza con relación a las figuras 9a a 9c.
Para la aplicación del principio de protección por derivación condicional, se selecciona en la fuente del software vulnerable 2vs, por lo menos una derivación condicional BC. También se selecciona por lo menos una porción de la fuente del software vulnerable 2vs que contiene al menos una derivación condicional BC seleccionada. Por lo menos una porción seleccionada de la fuente del software vulnerable 2vs es entonces modificada, a manera de obtener la fuente del software protegido 2ps. Esta modificación es tal que especialmente durante la ejecución del software protegido 2p: por lo menos una porción de la primera parte de ejecución 2pes, que es ejecutada en el sistema de procesamiento de datos 3, toma en cuenta que la funcionalidad de por lo menos una derivación condicional BC seleccionada es ejecutada en la unidad 6, y la segunda parte de ejecución 2peu, que es ejecutada en la unidad 6, ejecuta al menos la funcionalidad de por lo menos una derivación condicional BC seleccionada y pone a disposición del sistema de procesamiento de datos 3, una información que permite a la primera parte de ejecución 2pes, continuar su ejecución en el entorno seleccionado. La primera parte de ejecución 2pes del software protegido 2p, ejecutada en el sistema de procesamiento de datos 3, ejecuta comandos de derivaciones condicionales, que inician en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de derivaciones condicionales deportadas be cuya funcionalidad es equivalente a la funcionalidad de derivaciones condicionales BC seleccionadas. Para la aplicación del principio de protección por derivación condicional, la unidad 6 comprende medios de memoria 15 y medios de procesamiento 16. La figura 9a ¡lustra un ejemplo de ejecución de un software vulnerable 2v. En este ejemplo, aparece, en el transcurso de la ejecución del software vulnerable 2v en el sistema de procesamiento de datos 3 en un momento determinado, una derivación condicional BC que indica al software vulnerable 2v el entorno en dónde continuar su desarrollo, a saber, uno de tres entornos posibles B-i, B2 o B3. Se debe entender que la derivación condicional BC toma la decisión de continuar la ejecución del software en el entorno Bi, B2 o B3. La figura 9b ilustra un ejemplo de aplicación de la invención para el cual la derivación condicional seleccionada para ser deportada a la unidad 6, corresponde a la derivación condicional BC. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p y en presencia de la unidad 6, aparece: en el momento t-?, la ejecución del comando de derivación condicional CBCi que inicia en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de la derivación condicional deportada be algorítmicamente equivalente a la derivación condicional BC, este comando de derivación condicional CBCi es representado por TRIG(bc), en el momento t2, la transferencia de la unidad 6 hacia el sistema de procesamiento de datos 3, de la información que permite a la primera parte de ejecución 2pes, continuar su ejecución en el entorno seleccionado, a saber el entorno Bi, B2 o B3. Cabe señalar que durante la ejecución de una porción de la primera parte de ejecución 2pes del software protegido 2p, los comandos de derivaciones condicionales ejecutados en el sistema de procesamiento de datos 3 inician la ejecución de derivaciones condicionales deportadas correspondientes en la unidad 6. Así, resulta que en presencia de la unidad 6, esta porción es ejecutada correctamente y que en consecuencia, el software protegido 2p es completamente funcional. La figura 9c ¡lustra un intento de ejecución del software protegido 2p, mientras la unidad 6 está ausente. En este ejemplo, durante la ejecución en el sistema de procesamiento de datos 3 de la primera parte de ejecución 2pes del software protegido 2p: en el momento t-i, la ejecución del comando de derivación condicional CBC-i, no puede iniciar la ejecución de la derivación condicional deportada be, teniendo en cuenta la ausencia de la unidad 6, y en el momento t.2, la transferencia de información que permite a la primera parte de ejecución 2pes, continuar en el entorno seleccionado fracasa teniendo en cuenta la ausencia de la unidad 6. Resulta entonces que en ausencia de la unidad 6, por lo menos una petición de una porción de la primera parte de ejecución 2pes de iniciar la ejecución de una derivación condicional deportada a la unidad 6, no puede ser satisfecha correctamente, de modo que por lo menos esta porción no es ejecutada correctamente y en consecuencia, el software protegido 2p no es completamente funcional. En la descripción anterior con relación a las figuras 9a a 9c, el objeto de la invención contempla deportar a la unidad 6, una derivación condicional. Desde luego, una modalidad preferida de la invención puede consistir en deportar a la unidad 6, una serie de derivaciones condicionales cuya funcionalidad global es equivalente al conjunto de funcionalidades de derivaciones condicionales que han sido deportadas. La ejecución de la funcionalidad global de esta serie de derivaciones condicionales deportadas conduce a la puesta a disposición, para el sistema de procesamiento de datos 3, de una información que permite a la primera parte de ejecución 2pes del software protegido 2p, continuar su ejecución en el entorno seleccionado. En la descripción anterior con relación a las figuras 4a a 9c, se han explicado seis principios diferentes de protección de un software de manera general independientemente uno del otro. El método de protección de acuerdo con la invención, es aplicado utilizando el principio de protección por variable, eventualmente asociado a uno o más de otros principios de protección. En el caso en donde el principio de protección por variable es completado por la aplicación de al menos otro principio de protección, el principio de protección por variable es completado ventajosamente a través del principio de protección por disociación temporal y/o el principio de protección por funciones elementales.
Y cuando el principio de protección por disociación temporal también es aplicado, éste puede ser completado a su vez por el principio de protección por funciones elementales y/o el principio de protección por derivación condicional. Y cuando el principio de protección por funciones elementales también es aplicado, éste puede ser completado a su vez por el principio de protección por detección y coerción y/o el principio de protección por renombramiento y/o el principio de protección por derivación condicional. Y cuando el principio de protección por detección y coerción también es aplicado, éste puede ser completado a su vez por el principio de protección por renombramiento y/o el principio de protección por derivación condicional. Y cuando el principio de protección por renombramiento también es aplicado, éste puede ser completado a su vez por el principio de protección por derivación condicional. De acuerdo con la variante preferida de modalidad, el principio de protección por variable es completado a través del principio de protección por disociación temporal, completado por el principio de protección por funciones elementales, completado por el principio de protección por detección y coerción, completado por el principio de protección por renombramiento, completado por el principio de protección por derivación condicional. En el caso en donde un principio de protección es aplicado, en complemento del principio de protección por variable, su descripción efectuada anteriormente debe comprender, para tener en cuenta de su aplicación combinada, las siguientes modificaciones: la noción de software vulnerable debe ser comprendida como software vulnerable frente al principio de protección durante la descripción. Así, en el caso en donde un principio de protección ya ha sido aplicado al software vulnerable, la expresión "software vulnerable" debe ser interpretada por el lector como la expresión "software protegido por el o los principios de protección ya aplicados"; la noción de software protegido debe ser comprendida como software protegido frente al principio de protección durante la descripción. Así, en el caso en donde un principio de protección ya ha sido aplicado, la expresión "software protegido" debe ser interpretada por el lector como la expresión "nueva versión del software protegido"; y la o las selecciones efectuadas para la aplicación del principio de protección durante la descripción debe tener en cuenta la o las selecciones efectuadas para la aplicación del o de los principios de protección ya aplicados. El desarrollo de la descripción permite comprender mejor la aplicación del método de protección de acuerdo con la invención. Este método de protección de acuerdo con la invención incluye, como aparece de manera más precisa en la figura 10: primero, una fase de protección P en el transcurso de la cual un software vulnerable 2v es modificado en un software protegido 2p, posteriormente, una fase de uso U en el transcurso de la cual se aplica el software protegido 2p. En esta fase de uso U: en presencia de la unidad 6 y cada vez que lo imponga una porción de la primera parte de ejecución 2pes ejecutada en e! sistema de procesamiento de datos 3, se ejecuta una funcionalidad impuesta en la unidad 6, de modo que esta porción es ejecutada correctamente y que en consecuencia, el software protegido 2p es completamente funcional, en ausencia de la unidad 6 y a pesar de la petición de una porción de la primera parte de ejecución 2pes de ejecutar una funcionalidad en la unidad 6, esta petición no puede ser correctamente satisfecha, de modo que por lo menos esta porción no es ejecutada correctamente y en consecuencia, el software protegido 2p no es completamente funcional, y eventualmente una fase de recarga R en el transcurso de la cual se acredita al menos un uso complementario de una funcionalidad protegida por la aplicación de la segunda variante preferida de modalidad del principio de protección por detección y coerción que utilizan como característica, una variable de medición. La fase de protección P puede ser fragmentada en dos subfases de protección Pi y P2. La primera, llamada subíase de protección corriente arriba P-i, es aplicada independientemente del software vulnerable 2b a proteger. La segunda, llamada subfase de protección corriente abajo P2 es dependiente del software vulnerable 2v a proteger. Cabe señalar que las subfases de protección corriente arriba P-i y corriente abajo P2 pueden ser modalizadas ventajosamente por dos personas diferentes o dos equipos diferentes. Por ejemplo, la subíase de protección corriente arriba P-\ puede ser modalizada por una persona o una sociedad que asegure el desarrollo de sistemas de protección de software, mientras que la subíase de protección corriente abajo P2 puede ser modalizada por una persona o una sociedad que asegure el desarrollo de softwares antes de ser protegidos. Desde luego, es claro que las subfases de protección corriente arriba P-i y corriente abajo P2 pueden también ser modalizadas por la misma persona o el mismo equipo. La subíase de protección corriente arriba P-i incluye varios períodos Su, S-i¡ para cada uno de los cuales se van a efectuar diferentes tareas o trabajos. En primer período de esta subfase de protección corriente arriba Pi es llamada "periodo de definiciones Su". Durante este período de definiciones S^ : se selecciona: el tipo de la unidad 6, a saber, especialmente una unidad de memoria o una unidad de procesamiento y de memoria. A manera ilustrativa, se puede seleccionar como una unidad 6, un lector 8 de tarjetas de chip y la tarjeta de chip 7 asociada al lector, y los medios de transferencia 12, 13 destinados a ser aplicados respectivamente en el sistema de procesamiento de datos 3 y en la unidad 6, en el transcurso de la fase de uso U y aptos para asegurar la transferencia de datos entre el sistema de procesamiento de datos 3 y la unidad 6, y en el caso en donde el método de protección de acuerdo con la invención aplique el principio de protección por funciones elementales, también se define: un juego de funciones elementales cuyas funciones elementales son susceptibles de ser ejecutadas en la unidad 6, y un juego de comandos elementales para este juego de funciones elementales, estos comandos elementales son susceptibles de ser ejecutados en el sistema de procesamiento de datos 3 y de iniciar la ejecución en la unidad 6, de funciones elementales, y en el caso en donde el método de protección de acuerdo con la invención aplique el principio de protección por detección y coerción, también se define: por lo menos una característica de ejecución de software, susceptible de ser vigilada al menos en parte en la unidad 6, por lo menos un criterio a obedecer para al menos una característica de ejecución de software, medios de detección 17 para aplicar en la unidad 6 y que permiten detectar que al menos una característica de ejecución de software no obedece al menos un criterio asociado, y medios de coerción 18 a aplicar en la unidad 6 y que permiten informar al sistema de procesamiento de datos 3 y/o de modificar la ejecución de un software, cuando por lo menos un criterio no es obedecido, y en el caso en donde el método de protección de acuerdo con la invención aplique el principio de protección por detección y coerción utilizando como característica una variable de medición de la ejecución del software, también se define: como característica de ejecución de software susceptible de ser vigilada, una variable de medición del uso de una funcionalidad de un software, como criterio a obedecer, por lo menos un umbral asociado a cada variable de medición, y medios de actualización que permiten actualizar al menos una variable de medición, y en el caso en donde el método de protección de acuerdo con la invención aplique una primera variante preferida de modalidad del principio de protección por detección y coerción utilizando como característica una variable de medición de la ejecución del software, también se define: para al menos una variable de medición, varios umbrales asociados, y medios de coerción diferentes que corresponden a cada uno de estos umbrales, y en el caso en donde el método de protección de acuerdo con la invención aplica una segunda variante preferida de modalidad del principio de protección por detección y coerción utilizando como característica una variable de medición de la ejecución del software, también se definen medios de recarga que permiten acreditar por lo menos un uso complementario para al menos una funcionalidad de software vigilada por una variable de medición, y en el caso en donde el método de protección de acuerdo con la invención aplique el principio de protección por detección y coerción utilizando como característica un perfil de uso de software, también se define: como característica de ejecución de software susceptible de ser vigilada, un perfil de uso de software, y como criterio a obedecer, por lo menos una característica de ejecución de software, y en e! caso en donde el método de protección de acuerdo con la invención aplique el principio de protección por detección y coerción utilizando como característica de ejecución a obedecer, la vigilancia del encadenamiento de ejecución, también se define: un juego de instrucciones en donde las instrucciones son susceptibles de ser ejecutadas en la unidad 6, un juego de comandos de instrucciones para este juego de instrucciones, estos comandos de instrucción son susceptibles de ser ejecutados en el sistema de procesamiento de datos 3 y de iniciar en la unidad 6 la ejecución de las instrucciones, como perfil de uso, el encadenamiento de las instrucciones, como característica de ejecución, un encadenamiento deseado para la ejecución de instrucciones, como medios de detección 17, medios que permitan detectar que el encadenamiento de instrucciones no corresponde a aquel deseado, y como medios de coerción 18, medios que permitan informar al sistema de procesamiento de datos 3 y/o de modificar el funcionamiento de la porción de software protegido 2p cuando el encadenamiento de las instrucciones no corresponde a aquel deseado, y en el caso en donde el método de protección de acuerdo con la invención aplique una variante preferida de modalidad del principio de protección por detección y coerción utilizando como característica de ejecución a obedecer, la vigilancia del encadenamiento de ejecución, también se define: como juego de instrucciones, un juego de instrucciones en donde por lo menos ciertas instrucciones trabajan sobre registros y utilizan por lo menos un operando con el fin de arrojar un resultado, por lo menos una parte de instrucciones que trabajan sobre registros: una parte PF que define la funcionalidad de la instrucción, y una parte que define el encadenamiento deseado para la ejecución de instrucciones y que comprende campos de bits que corresponden a: un campo de identificación de la instrucción CU, y para cada operando de la instrucción: un campo bandera CDk, y un campo de identificación previsto CIP« del operando, para cada registro que pertenece a los medios de aprovechamiento y utilizado por el juego de instrucciones, un campo de identificación generada CIGV en el cual se memoriza automáticamente la identificación de la última instrucción que haya arrojado su resultado en este registro, como medios de detección 17, medios que permiten, durante la ejecución de una instrucción, para cada operando, cuando lo imponga el campo bandera CD , controlar la igualdad entre el campo de identificación generada CIGV que corresponde al registro utilizado por este operando, y el campo de identificación prevista CIPk del origen de este operando, y como medios de coerción 18, medios que permiten modificar el resultado de las instrucciones, si por lo menos una de las igualdades controladas es falsa. y en el caso en donde el método de protección de acuerdo con la invención aplique el principio de protección por renombramiento, también se define: como un comando iniciador, un comando elemental o un comando de instrucción, como una función dependiente, una función elemental o una instrucción, como una orden, por lo menos un argumento para un comando iniciador, que corresponde por lo menos en parte a la información transmitida por el sistema de procesamiento de datos 3 a la unidad 6, con el fin de iniciar la ejecución de la función dependiente correspondiente, un método de renombramiento de órdenes que permite renombrar las órdenes con el fin de obtener comandos iniciadores en órdenes renombradas, y medios de restablecimiento 20 destinados a ser aplicados en la unidad 6 en el transcurso de la fase de uso U, y que permiten encontrar la función dependiente a ejecutar, a partir de la orden renombrada, y en el caso en donde el método de protección de acuerdo con la invención aplica una variante del principio de protección por renombramiento, también se define para al menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalentes, pero iniciadas por comandos iniciadores cuyas órdenes renombradas son diferentes, y en el caso en donde el método de protección de acuerdo con la invención aplica una u otra de las modalidades preferidas de la variante del principio de protección por renombramiento, también se define para al menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalentes: concatenando un campo de ruido con la información que define la parte funcional de la función dependiente a ejecutar en la unidad 6, o utilizando el campo de identificación de la instrucción CU y los campos de identificación prevista CIPk de los operandos, y en el caso en donde el método de protección de acuerdo con la invención aplica una variante preferida del principio de protección por renombramiento, también se define: como método de renombramiento de órdenes, un método de codificación para codificar las órdenes, y como medios de restablecimiento 20, medios que aplican un método de decodificación para decodificar las órdenes renombradas y reestablecer así la identidad de funciones dependientes para ejecutar en la unidad 6. Durante la subfase de protección corriente arriba, el período de definición Su es seguido por un período llamado "período de construcción S12". Durante dicho período S12, se construyen los medios de transferencia 12, 13 y eventualmente, los medios de aprovechamiento que corresponden a las definiciones del período de definición Su. Durante este período de construcción S12, se procede entonces: a la construcción de medios de transferencia 12, 13 que permiten, en el transcurso de la fase de uso U, la transferencia de datos entre el sistema de procesamiento de datos 3 y la unidad 6, y cuando el principio de protección por funciones elementales también es aplicado, a la construcción de medios de aprovechamiento que permiten a la unidad 6, en el transcurso de la fase de uso U ejecutar las funciones elementales del juego de funciones elementales, y cuando el principio de protección por detección y coerción también es aplicado, a la construcción: de medios de aprovechamiento que permiten a la unidad 6, en el transcurso de la fase de uso U, aplicar también los medios de detección 17 y los medios de coerción 18, y eventualmente medios de aprovechamiento que permiten a la unidad 6, en el transcurso de la fase de uso U, aplicar también los medios de actualización, y eventualmente medios de aprovechamiento que permiten a la unidad 6, en el transcurso de la fase de recarga, aplicar también los medios de recarga, y eventualmente medios de aprovechamiento que permiten también a la unidad 6, en el transcurso de la fase de uso U, ejecutar las instrucciones del juego de instrucciones, y cuando el principio de protección por renombramiento también es aplicado, a la construcción de medios de aprovechamiento que permiten a la unidad 6, en el transcurso de la fase de uso U, aplicar también los medios de restablecimiento. La construcción de medios de aprovechamiento se realiza de manera habitual, a través de una unidad de desarrollo de programa que toma en cuenta las definiciones incluidas en el período de definiciones Su. Dicha unidad es descrita en el desarrollo de la descripción de la figura 1 1. Durante la subíase de protección corriente arriba P-i, el período de construcción Si2 puede ser seguido por un período llamado "período de prepersonalización S13". Durante este período de prepersonalización S13, por lo menos una parte de los medios de transferencia 13 y/o los medios de aprovechamiento son cargados en por lo menos una unidad virgen 60 con el fin de obtener por lo menos una unidad prepersonalizada 66. Cabe señalar que una parte de los medios de aprovechamiento, una vez transferida en una unidad prepersonalizada 66, ya no es directamente accesible desde el exterior de esta unidad prepersonalizada 66. La transferencia de medios de aprovechamiento en una unidad virgen 60 puede ser realizada a través de una unidad de prepersonalización adaptada, que se describe en el desarrollo de la descripción de la figura 12. En el caso de una unidad prepersonalizada 66, constituida por una tarjeta de chip 7 y de su lector 8, la prepersonalización sólo se refiere a la tarjeta de chip 7. Durante la subíase de protección corriente arriba P-i, se puede aplicar, después del período de definición Su y, eventualmente después del período de construcción S12, un período llamado "periodo de confección de herramientas S1 "- Durante este período de confección de herramientas Si4, se confeccionan herramientas que permiten ayudar a la generación de softwares protegidos o de automatizar la protección de softwares. Dichas herramientas permiten: ayudar a seleccionar o a seleccionar automáticamente en el software vulnerable 2v a proteger: la o las variables susceptibles de ser deportadas a la unidad 6, la o las porciones susceptibles de ser modificadas, y cuando el principio de protección por disociación temporal también es aplicado, el o los procesamientos algorítmicos susceptibles de ser fragmentados en etapas que pueden ser deportadas a la unidad 6, y cuando el principio de protección por funciones elementales es también aplicado, el o los procesamientos algorítmicos susceptibles de ser fragmentados en funciones elementales que pueden ser deportadas a la unidad 6, y cuando el principio de protección por detección y coerción también es aplicado, la o las características de ejecución a vigilar y eventualmente, el o los procesamientos algorítmicos susceptibles de ser fragmentados en instrucciones que pueden ser deportadas a la unidad 6, y cuando el principio de protección por renombramiento también es aplicado, el o los procesamientos algorítmicos susceptibles de ser fragmentados en funciones dependientes que pueden ser deportadas a la unidad 6 y para las cuales las órdenes de comandos iniciadores pueden ser renombradas, y cuando el principio de protección por derivación condicional también es aplicado, la o las derivaciones condicionales cuya funcionalidad es susceptible de ser deportada a la unidad 6, y eventualmente, ayudar a generar softwares protegidos o automatizar la protección de softwares. Estas diferentes herramientas pueden ser realizadas de manera independiente o en combinación y cada herramienta puede tomar diversas formas, como por ejemplo preprocesador, ensamblador, compilador, etc. La subfase de protección corriente arriba Pi es seguida por una subíase de protección corriente abajo P2 dependiente del software vulnerable 2v a proteger. Esta subíase de protección corriente abajo P2 incluye igualmente varios períodos. El primer período que corresponde a la aplicación del principio de protección por variable es denominado "período de creación S2i". Durante este período de creación S21 , se utilizan las selecciones comprendidas en el período de definición Su. Con la ayuda de estas selecciones y eventualmente de herramientas construidas en el período de confección de herramientas Su, se crea el software protegido 2p: seleccionando en la fuente del software vulnerable 2vs: por lo menos una variable que, durante la ejecución del software vulnerable 2v, define parcialmente el estado de éste, y por lo menos una porción que contiene al menos una variable seleccionada, produciendo la fuente del software protegido 2ps a partir de la fuente del software vulnerable 2vs, modificando al menos una porción seleccionada de la fuente del software vulnerable 2vs, esta modificación es tal que durante la ejecución del software protegido 2p, por lo menos una variable seleccionada o al menos una copia de variable seleccionada reside en la unidad virgen 60 que se transforma así en una unidad 6, y produciendo una primera parte objeto 2pos del software protegido 2p a partir de la fuente del software protegido 2ps, esta primera parte objeto 2pos es tal que durante la ejecución del software protegido 2p, aparece una primera parte de ejecución 2pes que es ejecutada en el sistema de procesamiento de datos 3 y en donde por lo menos una porción toma en cuenta que al menos una variable o por lo menos una copia de variable reside en la unidad 6. Desde luego, el principio de protección por variable de acuerdo con la invención puede ser aplicado directamente durante el desarrollo de un nuevo software sin necesidad de la realización previa de un software vulnerable 2v. De esta manera, se obtiene directamente un software protegido 2p. Durante la subíase de protección corriente abajo Pz, y cuando al menos otro principio de protección es aplicado además del principio de protección por variable, se aplica un "período de modificación S22". Durante este período de modificación S22, se utilizan las definiciones contenidas en el período de definiciones Su . Con la ayuda de estas definiciones y eventualmente de herramientas construidas en el período de confección de herramientas Su, el software protegido 2p es modificado para permitir la aplicación de principios de protección de acuerdo con una de las disposiciones antes definidas. Cuando se aplica el principio de protección por disociación temporal, el software protegido 2p es modificado: seleccionando la fuente del software protegido 2ps: por lo menos un procesamiento algorítmico que durante la ejecución del software protegido 2p, utilice al menos una variable seleccionada, y permite obtener por lo menos una variable resultante, y por lo menos una porción que contiene al menos un procesamiento algorítmico seleccionado, modificando por lo menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que: durante la ejecución del software protegido 2p, la primera parte de ejecución 2pes es ejecutada en el sistema de procesamiento de datos 3 y una segunda parte de ejecución 2peu es ejecutada en la unidad 6 que comprende también medios de procesamiento 16, por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado es ejecutada por medio de la segunda parte de ejecución 2peu, por lo menos un procesamiento algorítmico seleccionado es fragmentado de manera que durante la ejecución del software protegido 2p, aparecen, por medio de la segunda parte de ejecución 2peu, varias etapas distintas, a saber: la puesta a disposición de por lo menos una variable para la unidad 6, la realización en la unidad 6, de la funcionalidad del procesamiento algorítmico sobre al menos esta variable, y eventualmente, la puesta a disposición de por lo menos una variable resultante, mediante la unidad 6 para el sistema de procesamiento de datos 3, para al menos un procesamiento algorítmico seleccionado, se definen comandos de etapas de manera que durante la ejecución del software protegido 2p, cada comando de etapa sea ejecutado por la primera parte de ejecución 2pes y inicie en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de una etapa, y se selecciona un ordenamiento de comandos de etapas entre el conjunto de ordenamientos que permiten la ejecución del software protegido 2p, y produciendo: la primera parte objeto 2pos del software protegido 2p, esta primera parte objeto 2pos es tal que durante la ejecución del software protegido 2p, los comandos de etapas son ejecutados de acuerdo con el ordenamiento seleccionado, y una segunda parte objeto 2pou del software protegido 2p, esta segunda parte objeto 2pou es tal que, después de carga en la unidad virgen 60 y durante la ejecución del software protegido 2p, aparece la segunda parte de ejecución 2peu por medio de la cual se ejecutan las etapas iniciadas mediante la primera parte de ejecución 2pes. Cuando el principio de protección por funciones elementales es aplicado mientras que el principio de protección por disociación temporal no es aplicado, el software protegido 2p es modificado: seleccionando en la fuente del software protegido 2ps: por lo menos un procesamiento algorítmico que durante la ejecución del software protegido 2p, utiliza por lo menos una variable seleccionada, y permite obtener al menos una variable resultante, y por lo menos una porción que contiene al menos un procesamiento algorítmico seleccionado, modificando al menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que: durante la ejecución del software protegido 2p, la primera parte de ejecución 2pes es ejecutada en el sistema de procesamiento de datos 3 y una segunda parte de ejecución 2peu es ejecutada en la unidad 6, por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado es ejecutada por medio de la segunda parte de ejecución 2peu, por lo menos un procesamiento algorítmico seleccionado es fragmentado de manera que durante la ejecución del software protegido 2p, este procesamiento algorítmico es ejecutado por medio de la segunda parte de ejecución 2peu, utilizando funciones elementales, para al menos un procesamiento algorítmico seleccionado, se integran comandos elementales en la fuente del software protegido 2ps, de manera que durante la ejecución del software protegido 2p, cada comando elemental es ejecutado por la primera parte de ejecución 2pes y inicia en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de una función elemental. y se selecciona un ordenamiento de comandos elementales entre el conjunto de ordenamientos que permiten la ejecución del software protegido 2p, y produciendo: la primera parte objeto 2pos del software protegido 2p, esta primera parte objeto 2pos es tal que durante la ejecución del software protegido 2p, los comandos elementales son ejecutados de acuerdo con el ordenamiento seleccionado, y una segunda parte objeto 2pou del software protegido 2p que contiene los medios de aprovechamiento, esta segunda parte objeto 2pou es tal que después de carga en la unidad virgen 60 y durante la ejecución del software protegido 2p, aparece la segunda parte de ejecución 2peu por medio de la cual se ejecutan las funciones elementales iniciadas por la primera parte de ejecución 2pes. Cuando los principios de protección por disociación temporal y por funciones elementales son aplicados, el software protegido 2p es modificado: seleccionando en la fuente del software protegido 2ps, por lo menos una etapa que durante la ejecución del software protegido 2p, realiza la funcionalidad de un procesamiento algorítmico, modificando al menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que: por lo menos una etapa seleccionada es fragmentada de manera que durante la ejecución del software protegido 2p, esta etapa es ejecutada por medio de la segunda parte de ejecución 2peu, utilizando funciones elementales, para al menos una etapa seleccionada, se integran comandos elementales en la fuente del software protegido 2ps, de manera que durante la ejecución del software protegido 2p, cada comando elemental es ejecutado por la primera parte de ejecución 2pes y inicia en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de una función elemental, y se selecciona un ordenamiento de comandos elementales entre el conjunto de ordenamientos que permiten la ejecución del software protegido 2p, y produciendo: la primera parte objeto 2pos del software protegido 2p, esta primera parte objeto 2pos es tal que durante la ejecución del software protegido 2p, los comandos elementales son ejecutados de acuerdo con el ordenamiento seleccionado, y la segunda parte objeto 2pou del software protegido 2p que contiene también los medios de aprovechamiento, esta segunda parte objeto 2pou es tal que después de carga en la unidad 6 y durante la ejecución del software protegido 2p, aparece la segunda parte de ejecución 2peu por medio de la cual se ejecutan las funciones elementales iniciadas por la primera parte de ejecución 2pes. Cuando el principio de protección por detección y coerción es aplicado, el software protegido 2p es modificado: seleccionando al menos una característica de ejecución de software a vigilar, entre las características de ejecución susceptibles de ser vigiladas, seleccionando por lo menos un criterio a obedecer para al menos una característica de ejecución de software seleccionado, seleccionando en la fuente del software protegido 2ps, funciones elementales para las cuales se va a vigilar por lo menos una característica de ejecución de software seleccionado, modificando al menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que durante la ejecución del software protegido 2p, por lo menos una característica de ejecución seleccionada es vigilada por medio de la segunda parte de ejecución 2peu, y el no respeto a un criterio conduce a una información del sistema de procesamiento de datos 3 y/o a una modificación de la ejecución del software protegido 2p, y produciendo la segunda parte objeto 2pou del software protegido 2p que contiene los medios de aplicación que aplican también los medios de detección 17 y los medios de coerción 18, esta segunda parte objeto 2pou es tal que después de carga en la unidad 6 y durante la ejecución del software protegido 2p, por lo menos se vigila una característica de ejecución de software y el no obedecer un criterio conduce a una información del sistema de procesamiento de datos 3 y/o a una modificación de la ejecución del software protegido 2p. Para la aplicación del principio de protección por detección y coerción que utiliza como característica una variable de medición de la ejecución del software, el software protegido 2p es modificado: seleccionando como característica de ejecución de software a vigilar, por lo menos una variable de medición del uso de una funcionalidad de un software, seleccionando: por lo menos una funcionalidad del software protegido 2p cuyo uso es susceptible de ser vigilado gracias a una variable de medición, por lo menos una variable de medición que sirve para cuantificar el uso de dicha funcionalidad, por lo menos un umbral asociado con una variable de medición seleccionada que corresponde a un límite de uso de dicha funcionalidad, y por lo menos un método de actualización de una variable de medición seleccionada en función del uso de dicha funcionalidad, y modificando por lo menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que durante la ejecución del software protegido 2p, la variable de medición es actualizada por medio de la segunda parte de ejecución 2peu, en función del uso de dicha funcionalidad y se toma en cuenta por lo menos un exceso de umbral. Para la aplicación de una primera variante preferida de modalidad del principio de protección por detección y coerción que utiliza como característica, una variable de medición, el software protegido 2p es modificado: seleccionando en la fuente del software protegido 2ps, por lo menos una variable de medición seleccionada a la cual deben estar asociados varios umbrales correspondientes a los límites diferentes de uso de la funcionalidad, seleccionando al menos dos umbrales asociados con la variable de medición seleccionada, y modificando por lo menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que durante la ejecución del software protegido 2p, se toman en cuenta los excesos de diversos umbrales, por medio de la segunda parte de ejecución 2peu, de manera diferente. Para la aplicación de una segunda variante preferida de modalidad del principio de protección por detección y coerción que utiliza como característica, una variable de medición, el software protegido 2p es modificado: seleccionando en la fuente del software protegido 2ps, por lo menos una variable de medición seleccionada que permite limitar el uso de una funcionalidad a la cual se debe poder acreditar por lo menos un uso complementario, y modificando por lo menos una porción seleccionada, esta modificación es tal que en una fase llamada de recarga, por lo menos un uso complementario de por lo menos una funcionalidad que corresponde a una variable de medición seleccionada puede ser acreditada.
Para la aplicación del principio de protección por detección y coerción que utiliza como característica, un perfil de uso de software, el software protegido 2p es modificado: seleccionando como característica de ejecución de software a vigilar por lo menos un perfil de uso de software, seleccionando por lo menos una característica de ejecución que debe obedecer por lo menos un perfil de uso seleccionado, y modificando al menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que durante la ejecución del software protegido 2p, la segunda parte de ejecución 2peu obedece todas las características de ejecución seleccionadas. Para la aplicación del principio de protección por detección y coerción que utilizan como característica de ejecución a obedecer, la vigilancia del encadenamiento de ejecución, el software protegido 2p es modificado: modificando al menos una porción seleccionada de la fuente del software protegido 2ps: transformando las funciones elementales en instrucciones, especificando el encadenamiento que deben obedecer al menos ciertas instrucciones durante su ejecución en la unidad 6, y transformando los comandos elementales en comandos de instrucciones que corresponden a instrucciones utilizadas. Cuando el principio de protección por renombramiento es aplicado, el software 2p es modificado: seleccionando la fuente del software protegido 2ps, comandos iniciadores, modificando por lo menos una porción seleccionada de la fuente del software protegido 2ps renombrando las órdenes de comandos iniciadores seleccionados, con el fin de disimular la identidad de funciones dependientes correspondientes, y produciendo: la primera parte objeto 2pos del software protegido 2p, esta primera parte objeto 2pos es tal que durante la ejecución del software protegido 2p, se ejecutan los comandos iniciadores en órdenes renombradas, y la segunda parte objeto 2pou del software protegido 2p que contiene los medios de aprovechamiento que aplican también los medios de reestablecimiento 20, esta segunda parte objeto 2pou es tal que después de carga en la unidad 6 y durante la ejecución del software protegido 2p, la identidad de funciones dependientes cuya ejecución es iniciada por la primera parte de ejecución 2pes es restablecida por medio de la segunda parte de ejecución 2peu, y las funciones dependientes son ejecutadas por medio de la segunda parte de ejecución 2peu. Para la aplicación de una variante del principio de protección por renombramiento, el software protegido 2p es modificado: seleccionando en la fuente del software protegido 2ps por lo menos un comando iniciador en orden renombrada, y modificando al menos una porción seleccionada de la fuente de software protegido 2ps reemplazando al menos la orden renombrada de un comando iniciador en orden renombrada seleccionada, por otra orden renombrada, que inicia una función dependiente de la misma familia. Cuando se aplica el principio de protección por derivación condicional, el software protegido 2p es modificado: seleccionado en la fuente del software protegido 2ps, por lo menos una derivación condicional efectuada por lo menos en un procesamiento algorítmico seleccionado, modificando la menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que durante la ejecución del software protegido 2p, se ejecuta la funcionalidad de por lo menos una derivación condicional seleccionada, por medio de la segunda parte de ejecución 2peu, en la unidad 6, y produciendo: la primera parte objeto 2pos del software protegido 2p, esta primera parte objeto 2pos es tal que durante la ejecución del software protegido 2p, se ejecuta la funcionalidad de por lo menos una derivación condicional seleccionada en la unidad 6, y la segunda parte objeto 2pou del software protegido 2p, esta segunda parte objeto 2pou es tal que después de carga en la unidad 6 y durante la ejecución del software protegido 2p, aparece la segunda parte de ejecución 2peu por medio de la cual se ejecuta la funcionalidad de al menos una derivación condicional seleccionada. Para la aplicación de una modalidad preferida del principio de protección por derivación condicional, el software protegido 2p es modificado: seleccionando, en la fuente del software protegido 2ps por lo menos una serie de derivaciones condicionales seleccionadas, modificando al menos una porción seleccionada de la fuente del software protegido 2ps, esta modificación es tal que durante la ejecución del software protegido 2p, la funcionalidad global de al menos una serie seleccionada de derivaciones condicionales es ejecutada por medio de la segunda parte de ejecución 2peu, en la unidad 6, y produciendo: la primera parte objeto 2pos del software protegido 2p, esta primera parte objeto 2pos es tal que durante la ejecución del software protegido 2p, la funcionalidad de al menos una serie seleccionada de derivaciones condicionales es ejecutada en la unidad 6, y la segunda parte objeto 2pou del software protegido 2p, esta segunda parte objeto 2pou es tal que después de carga en la unidad 6 y durante la ejecución del software protegido 2p, aparece la segunda parte de ejecución 2peu por medio de la cual se ejecuta la funcionalidad global de al menos una serie seleccionada de derivaciones condicionales. Desde luego, los principios de protección de acuerdo con la invención pueden ser aplicados directamente durante el desarrollo de un nuevo software sin necesitar la realización previa de softwares protegidos intermediarios. De esta forma, los períodos de creación S2i y de modificación S22 pueden ser efectuados de manera concomitante con el fin de obtener directamente el software protegido 2p. Durante la subfase de protección corriente abajo P2, en el caso en donde por lo menos se utiliza otro principio de protección en complemento del principio de protección por variable, se aplica después del período de creación S21 del software protegido 2p, y eventualmente después del período de modificación S22, un período llamado "período de personalización S23". Durante este período de personalización S23, la segunda parte objeto 2pou que contiene eventualmente los medios de aprovechamiento, es cargada en por lo menos una unidad virgen 60, con el fin de obtener por lo menos una unidad 6, o una parte de la segunda parte objeto 2pou que contiene eventualmente los medios de aprovechamiento es cargada en por lo menos una unidad prepersonalizada 66, con el fin de obtener al menos una unidad 6. La carga de esta información de personalización permite hacer operacional por lo menos una unidad 6. Cabe señalar que una parte de estas informaciones, una vez transferida en una unidad 6, no es directamente accesible del exterior de esta unidad 6. La transferencia de informaciones de personalización en una unidad virgen 60 o una unidad prepersonalizada 66 puede ser realizada a través de una unidad de personalización adaptada que se describe en el desarrollo de la descripción de la figura 15. En el caso de una unidad 6, constituida por una tarjeta de chip 7 y de su lector 8, la personalización sólo se refiere a la tarjeta de chip 7.
Para la aplicación de la fase de protección P, se describen diferentes medios técnicos de manera más precisa con relación a las figuras 1 1 , 12, 13, 14 y 15. La figura 11 ilustra un ejemplo de modalidad de un sistema 25 que permite aplicar el período de construcción S 2 que toma en cuenta las definiciones contenidas en el período de definiciones Su y en el transcurso del cual se construyen los medios de transferencia 12, 13 y eventualmente, los medios de aprovechamiento destinados a la unidad 6. Dicho sistema 25 comprende una unidad de desarrollo de programa o estación de trabajo y se presenta por lo regular bajo la forma de una computadora que comprende una unidad central, una pantalla, periféricos del tipo teclado-ratón, y que comprende, especialmente, los siguientes programas: editores de ficheros, ensambladores, preprocesadores, compiladores, interpretadores, depuradores y editores de enlaces. La figura 12 ilustra un ejemplo de modalidad de una unidad de prepersonalización 30 que permite cargar al menos en parte los medios de transferencia 13 y/o los medios de aprovechamiento en por lo menos una unidad virgen 60 con el fin de obtener por lo menos una unidad prepersonalizada 66. Esta unidad de prepersonalización 30 comprende un medio de lectura y de escritura 31 que permite prepersonalizar de manera eléctrica, una unidad virgen 60, a manera de obtener una unidad prepersonalizada 66 en la cual los medios de transferencia 13 y/o de aprovechamiento han sido cargados. La unidad de prepersonalización 30 puede también comprender medios de personalización física 32 de la unidad virgen 60 que se pueden presentar por ejemplo, en forma de una impresora. En el caso en donde la unidad 6 esté constituida por una tarjeta de chip 7 y su lector 8, la prepersonalización se refiere de manera general únicamente a la tarjeta de chip 7. La figura 13 ilustra un ejemplo de modalidad de un sistema 35 que permite efectuar la confección de herramientas que permiten ayudar a generar softwares protegidos o de automatizar la protección de softwares. Dicho sistema 35 comprende una unidad de desarrollo de programa o estación de trabajo y se presenta por lo regular en forma de una computadora que comprende una unidad central, una pantalla, periféricos del tipo teclado-ratón, y que comprenden, especialmente, los siguientes programas: editores de ficheros, ensambladores, preprocesadores, compiladores, interpretadores, depuradores y editores de enlaces. La figura 14 ilustra un ejemplo de modalidad de un sistema 40 que permite crear directamente un software protegido 2p o de modificar un software vulnerable 2v con el fin de obtener un software protegido 2p. Dicho sistema 40 comprende una unidad de desarrollo de programa o estación de trabajo y se presenta por lo regular en forma de una computadora que comprende una unidad central, una pantalla, periféricos del tipo teclado-ratón, y que comprende, especialmente, los siguientes programas: editores de ficheros, ensambladores, preprocesadores, compiladores, interpretadores, depuradores y editores de enlaces, así como herramientas que permiten ayudar a generar softwares protegidos o de automatizar la protección de softwares. La figura 15 ilustra un ejemplo de modalidad de una unidad de personalización 45 que permite cargar la segunda parte objeto 2pou en por lo menos una unidad virgen 60 con el fin de obtener por lo menos una unidad 6 o una parte de la segunda parte objeto 2pou en por lo menos una unidad prepersonalizada 66 con el fin de obtener por lo menos una unidad 6. Esta unidad de personalización 45 comprende un medio de lectura y de escritura 46 que permite personalizar de manera eléctrica, por lo menos una unidad virgen 60 o al menos una unidad prepersonalizada 66, a manera de obtener al menos una unidad 6. Al final de esta personalización, una unidad 6 comprende las informaciones necesarias para la ejecución del software protegido 2p. La unidad de personalización 45 puede también comprender medios de personalización física 47 para al menos una unidad 6 que se pueden presentar por ejemplo, en forma de una impresora. En el caso en donde una unidad 6 esté constituida por una tarjeta de chip 7 y su lector 8, la personalización se refiere de manera general únicamente a la tarjeta de chip 7. El método de protección de la invención puede ser aplicado con las siguientes mejoras: Se puede prever utilizar conjuntamente varias unidades de procesamiento y de memoria en las cuales se reparte la segunda parte objeto 2pou del software protegido 2p de manera que su uso conjunto permite ejecutar el software protegido 2p, la ausencia de por lo menos una de estas unidades de procesamiento y de memoria impiden el uso del software protegido 2p. Igualmente, después del período de prepersonalización S13 y durante el período de personalización S23, la parte de la segunda parte objeto 2pou necesaria para transformar la unidad prepersonalizada 66 en una unidad 6 puede estar contenida en una unidad de procesamiento y de memoria utilizada por la unidad de personalización 45 con el fin de limitar el acceso a esta parte de la segunda parte objeto 2pou. Desde luego, esta parte de la segunda parte objeto 2pou puede ser repartida en varias unidades de procesamiento y de memoria de manera que esta parte de la segunda parte objeto 2pou, sea accesible únicamente durante el uso conjunto de estas unidades de procesamiento y de memoria.

Claims (37)

NOVEDAD DE LA INVENCION REIVINDICACIONES
1.- Método para proteger, a partir de por lo menos una unidad virgen (60) que comprende por lo menos medios de memoria (15), un software vulnerable (2v) contra su uso no autorizado, dicho software vulnerable (2v) funciona sobre un sistema de procesamiento de datos (3), caracterizado porque consiste: en una fase de protección (P): en crear un software protegido (2p): seleccionando en la fuente del software vulnerable (2vs): por lo menos una variable que, durante la ejecución del software vulnerable (2v), defina parcialmente el estado de éste, y por lo menos una porción que contiene al menos una variable seleccionada, produciendo la fuente del software protegido (2ps) a partir de la fuente del software vulnerable (2vs), modificando por lo menos una porción seleccionada de la fuente del software vulnerable (2vs), esta modificación siendo tal que durante la ejecución del software protegido (2p), por lo menos una variable seleccionada o por lo menos una copia de variable seleccionada reside en la unidad virgen (60) que se transforma así en una unidad (6), y produciendo una primera parte objeto (2pos) del software protegido (2p) a partir de la fuente del software protegido (2ps), esta primera parte objeto (2pos) siendo tal que durante la ejecución del software protegido (2p), aparece una primera parte de ejecución que es ejecutada en el sistema de procesamiento de datos (3) y en la cual por lo menos una porción toma en cuenta que por lo menos una variable o por lo menos una copia de variable reside en la unidad (6), en una fase de uso (U) durante la cual se ejecuta el software protegido (2p): en presencia de la unidad (6), cada vez que una porción de la primera parte de ejecución (2pes) lo impone, utilizar una variable o una copia de variable que reside en la unidad (6), de tal modo que esta porción se ejecuta correctamente y en consecuencia, el software protegido (2p) es completamente funcional, y en ausencia de la unidad (6), a pesar de la petición de una porción de la primera parte de ejecución (2pes) para utilizar una variable o una copia de variable que reside en la unidad (6), de no poder responder correctamente a esta petición, de modo que por lo menos esta porción no se ejecuta correctamente y en consecuencia, el software protegido (2p) no es completamente funcional.
2.- El método de conformidad con la reivindicación 1 , caracterizado además porque consiste: en la fase de protección (P): en modificar el software protegido (2p): seleccionando en la fuente del software protegido (2ps): por lo menos un procesamiento algorítmico que durante la ejecución del software protegido (2p), utilice por lo menos una variable seleccionada, y permita obtener por lo menos una variable resultante, y por lo menos una porción que contiene al menos un procesamiento algorítmico seleccionado, modificando por lo menos una porción seleccionada de la fuente del software protegido (2ps), esta modificación siendo tal que: durante la ejecución del software protegido (2p) la primera parte de ejecución (2pes) es ejecutada en el sistema de procesamiento de datos (3) y una segunda parte de ejecución (2peu) es ejecutada en la unidad (6) que comprende también medios de procesamiento (16), por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado es ejecutada por medio de la segunda parte de ejecución (2peu), por lo menos un procesamiento algorítmico seleccionado es fragmentado de manera que durante la ejecución del software protegido (2p), aparecen, por medio de la segunda parte de ejecución (2peu), varias etapas distintas, a saber: la disposición de por lo menos una variable para la unidad (6), la realización en la unidad (6), de la funcionalidad del procesamiento algorítmico sobre por lo menos esta variable, y eventualmente, la disposición de por lo menos una variable resultante, mediante la unidad (6) para el sistema de procesamiento de datos (3), para al menos un procesamiento algorítmico seleccionado, se definen comandos de etapas de manera que durante la ejecución del software protegido (2p), cada comando de etapa sea ejecutado por la primera parte de ejecución (2pes) y inicie en la unidad (6), la ejecución por medio de la segunda parte de ejecución (2peu), de una etapa, y se selecciona un ordenamiento de comandos de etapas entre el conjunto de ordenamientos que permiten la ejecución del software protegido (2p), y produciendo: la primera parte objeto (2pos) del software protegido (2p), esta primera parte objeto (2pos) siendo tal que durante la ejecución del software protegido (2p), los comandos de etapa sean ejecutados de acuerdo con el ordenamiento seleccionado, y una segunda parte objeto (2pou) del software protegido (2p), esta segunda parte objeto (2pou) siendo tal que después de cargar en la unidad virgen (60) y durante la ejecución del software protegido (2p), aparece la segunda parte de ejecución (2peu) por medio de la cual se ejecutan las etapas iniciadas por la primera parte de ejecución (2pes), y en cargar la segunda parte objeto (2pou) en la unidad virgen (60), con la idea de obtener la unidad (6), y en la fase de uso (U): en presencia de la unidad (6) y cada vez que lo imponga un comando de etapa contenido en una porción de la primera parte de ejecución (2pes), ejecutar la etapa correspondiente en la unidad (6), de modo que esta porción se ejecuta correctamente y en consecuencia, el software protegido (2p) es completamente funcional, y en ausencia de la unidad (6), a pesar de la petición de una porción de la primera parte de ejecución (2pes) de iniciar la ejecución de una etapa en la unidad (6), al no poder responder correctamente a esta petición, de modo que por lo menos esta porción no se ejecuta correctamente y en consecuencia, el software protegido (2p) no es completamente funcional.
3.- El método de conformidad con la reivindicación 1 , caracterizado además porque consiste: en la fase de protección (P): en definir: un juego de funciones elementales en donde las funciones elementales son susceptibles a ser ejecutadas en la unidad (6) que comprende también los medios de procesamiento (16), y un juego de comandos elementales para este juego de funciones elementales, los comandos elementales son susceptibles de ser ejecutados en el sistema de procesamiento de datos (3) y de iniciar la ejecución en la unidad (6), de funciones elementales, en construir medios de aprovechamiento que permitan transformar la unidad virgen (60) en la unidad (6) capaz de ejecutar las funciones elementales de dicho juego, la ejecución de estas funciones elementales son iniciadas por la ejecución en el sistema de procesamiento de datos (3), de comandos elementales, en modificar el software protegido (2p): seleccionando en la fuente del software protegido (2ps): por lo menos un procesamiento algorítmico que durante la ejecución del software protegido (2p), utilice por lo menos una variable seleccionada, y permita obtener por lo menos una variable resultante, y por lo menos una porción que contiene al menos un procesamiento algorítmico seleccionado, modificando por lo menos una porción seleccionada de la fuente del software protegido (2ps), esta modificación siendo tal que: durante la ejecución del software protegido (2p) la primera parte de ejecución (2pes) es ejecutada en el sistema de procesamiento de datos (3) y una segunda parte de ejecución (2peu) es ejecutada en la unidad (6), por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado es ejecutada por medio de la segunda parte de ejecución (2peu), por lo menos un procesamiento algorítmico seleccionado se fragmenta de manera que durante la ejecución del software protegido (2p), este procesamiento algorítmico es ejecutado por medio de la segunda parte de ejecución (2peu), utilizando las funciones elementales, para al menos un procesamiento algorítmico seleccionado, se integran comandos elementales en la fuente del software protegido (2ps), de manera que durante la ejecución del software protegido (2p), cada comando elemental es ejecutado por la primera parte de ejecución (2pes) y inicia en la unidad (6), la ejecución por medio de la segunda parte de ejecución (2peu), de una función elemental, y se selecciona un ordenamiento de comandos elementales entre el conjunto de ordenamientos que permiten la ejecución del software protegido (2p), y produciendo: la primera parte objeto (2pos) del software protegido (2p), esta primera parte objeto (2pos) siendo tal que durante la ejecución del software protegido (2p), los comandos elementales son ejecutados de acuerdo con el ordenamiento seleccionado, y una segunda parte objeto (2pou) del software protegido (2p) que contiene los medios de aprovechamiento, esta segunda parte objeto (2pou) siendo tal que después de la carga en la unidad virgen (60) y durante la ejecución del software protegido (2p), aparece la segunda parte de ejecución (2peu) por medio de la cual se ejecutan las funciones elementales iniciadas por la primera parte de ejecución (2pes), y en cargar la segunda parte objeto (2pou) de la unidad virgen (60), con la idea de obtener la unidad (6), y en la fase de uso (U): en presencia de la unidad (6) cada vez que lo impone un comando elemental contenido en una porción de la primera parte de ejecución (2pes), ejecutar la función elemental correspondiente en la unidad (6), de modo que esta porción es ejecuta correctamente y que en consecuencia, el software protegido (2p) es completamente funcional, y en ausencia de la unidad (6), a pesar de la petición de una porción de la primera parte de ejecución (2pes), iniciar la ejecución de una función elemental en la unidad (6), de no poder responder correctamente a esta demanda, de modo que por lo menos esta porción no es ejecuta correctamente y que en consecuencia, el software protegido (2p) no es completamente funcional.
4.- El método de conformidad con la reivindicación 2, caracterizado además porque consiste: en la fase de protección (P): en definir: un juego de funciones elementales en donde las funciones elementales son susceptibles de ser ejecutadas en la unidad (6), y un juego de comandos elementales para este juego de funciones elementales, estos comandos elementales son susceptibles de ser ejecutados en el sistema de procesamiento de datos (3) y de iniciar la ejecución en la unidad (6), de funciones elementales, en construir medios de aprovechamiento que permitan a la unidad, ejecutar las funciones elementales de dicho juego, la ejecución de estas funciones elementales es iniciada por la ejecución en el sistema de procesamiento de datos (3), de comandos elementales, y en modificar el software protegido (2p): seleccionando en la fuente del software protegido (2ps), por lo menos una etapa que durante la ejecución del software protegido (2p), realice la funcionalidad de un procesamiento algorítmico, modificando por lo menos una porción seleccionada de la fuente de software protegido (2ps), esta modificación siendo tal que: por lo menos una etapa seleccionada sea fragmentada de manera que durante la ejecución del software protegido (2p), esta etapa sea ejecutada por medio de la segunda parte de ejecución (2peu), utilizando las funciones elementales, para al menos una etapa seleccionada, los comandos elementales son integrados en la fuente del software protegido (2ps), de manera que durante la ejecución del software protegido (2p), cada comando elemental sea ejecutado por la primera parte de ejecución (2pes) y inicie en la unidad (6), la ejecución por medio de la segunda parte de ejecución (2peu), de una función elemental, y se selecciona un ordenamiento de comandos elementales entre el conjunto de ordenamientos que permiten la ejecución del software protegido (2p), y produciendo: la primera parte objeto (2pos) del software protegido (2p), esta primera parte objeto (2pos) siendo tal que durante la ejecución del software protegido (2p), los comandos elementales son ejecutados de acuerdo con el ordenamiento seleccionado, y la segunda parte objeto (2pou) del software protegido (2p) que contiene también los medios de aprovechamiento, esta segunda parte objeto (2pou) siendo tal que después de cargar en la unidad (6) y durante la ejecución del software protegido (2p), aparece la segunda parte de ejecución (2peu) por medio de la cual se ejecutan las funciones elementales iniciadas por la primera parte de ejecución (2pes), y en la fase de uso (U): en presencia de la unidad (6) y cada vez que lo impone un comando elemental contenido en una porción de la primera parte de ejecución (2pes), ejecutar la función elemental que corresponde en la unidad (6), de modo que esta porción se ejecuta correctamente y que en consecuencia, el software protegido (2p) es completamente funcional, y en ausencia de la unidad (6), a pesar de la petición de una porción de la primera parte de ejecución (2pes), iniciar la ejecución de una función elemental en la unidad (6), en no poder responder correctamente a esta petición, de modo que por lo menos esta porción no sea ejecutada correctamente y que en consecuencia, el software protegido (2p) no sea completamente funcional.
5.- El método de conformidad con la reivindicación 3 ó 4, caracterizado además porque consiste: en la fase de protección (P): en definir: por lo menos una característica de ejecución de software, susceptible de ser vigilada por lo menos en parte en la unidad (6), por lo menos un criterio a obedecer para al menos una característica de ejecución de software, medios de detección (17) a aplicar en la unidad (6) y que permiten detectar que por lo menos una característica de ejecución de software obedece por lo menos un criterio asociado, y medios de coerción (18) para aplicar en la unidad (6) y que permiten informar al sistema de procesamiento de datos (3) y/o de modificar la ejecución de un software, cuando por lo menos un criterio no es obedecido, en construir los medios de aprovechamiento que permitan a la unidad (6), aplicar también los medios de detección (17) y los medios de coerción (18), y en modificar el software protegido (2p): seleccionando por lo menos una característica de ejecución de software a vigilar, entre las características de ejecución susceptibles de ser vigilada, seleccionando por lo menos un criterio a obedecer para al menos una característica de ejecución de software seleccionado, seleccionando en la fuente del software protegido (2ps), funciones elementales para las cuales al menos se vigilará una característica de ejecución de software seleccionado, modificando la menos una porción seleccionada de la fuente del software protegido (2ps), esta modificación siendo tal que durante la ejecución del software protegido (2p), se vigila por lo menos una característica de ejecución seleccionada por medio de la segunda parte de ejecución (2peu), y el no obedecer un criterio conduce a una información del sistema de procesamiento de datos (3) y/o a una modificación de la ejecución del software protegido (2p), y produciendo la segunda parte objeto (2pou) del software protegido (2p) que contiene los medios de aprovechamiento aplicando también los medios de detección (17) y los medios de coerción (18), esta segunda parte objeto (2pou) siendo tal que, después de carga en la unidad (6) y durante la ejecución del software protegido (2p), se vigila por lo menos una característica de ejecución de software y el no obedecer un criterio conduce a una información del sistema de procesamiento de datos (3) y/o a una modificación de la ejecución del software protegido (2p), y en la fase de uso (U): en presencia de la unidad (6): mientras se obedezcan todos los criterios correspondientes a todas las características de ejecución vigiladas de todas las porciones modificadas del software protegido (2p), permitir el funcionamiento nominal de estas porciones del software protegido (2p) y en consecuencia, permitir el funcionamiento nominal del software protegido (2p), y si por lo menos uno de los criterios correspondientes a una característica de ejecución vigilada de una porción del software protegido (2p) no es obedecido, informar al sistema de procesamiento de datos (3) y/o modificar el funcionamiento de la porción del software protegido (2p), de modo que el funcionamiento del software protegido (2p) sea modificado.
6.- El método de conformidad con la reivindicación 5, para limitar el uso de un software protegido (2p), caracterizado además porque consiste: en la fase de protección (P): en definir: como característica de ejecución de software susceptible de ser vigilada, una variable de medición del uso de una funcionalidad de un software, como criterio a obedecer, por lo menos un umbral asociado con cada variable de medición, y medios de actualización que permiten actualizar por lo menos una variable de medición, en construir los medios de aprovechamiento que permiten a la unidad (6) aplicar también los medios de actualización, y en modificar el software protegido (2p): seleccionando como característica de ejecución de software a vigilar, por lo menos una variable de medición del uso de una funcionalidad de un software, seleccionando: por lo menos una funcionalidad del software protegido (2p) en donde el uso es susceptible de ser vigilado gracias a una variable de medición, por lo menos una variable de medición que sirve para cuantificar el uso de dicha funcionalidad, por lo menos un umbral asociado con una variable de medición seleccionado que corresponde a un límite de uso de dicha funcionalidad, y por lo menos un método para actualizar una variable de medición seleccionada en función del uso de dicha funcionalidad, y modificando por lo menos una porción seleccionada de la fuente del software protegido (2ps), esta modificación siendo tal que, durante la ejecución del software protegido (2p), la variable de medición es actualizada por medio de la segunda parte de ejecución (2peu), en función del uso de dicha funcionalidad y por lo menos se toma en cuenta un exceso de umbral, y en la fase de uso (U), en presencia de la unidad (6), y en el caso en donde se detecte por lo menos un exceso de umbral correspondiente a por lo menos un límite de uso, en informar al sistema de procesamiento de datos (3) y/o modificar el funcionamiento de la porción del software protegido (2p), de modo que el funcionamiento de software protegido (2p) sea modificado.
7.- El método de conformidad con la reivindicación 6, caracterizado además porque consiste: en la fase de protección (P): en definir: para al menos una variable de medición, varios umbrales asociados, y medios de coerción diferentes que correspondan a cada uno de estos umbrales, y en modificar el software protegido (2p): seleccionando en la fuente del software protegido (2ps), por lo menos una variable de medición seleccionada a la cual deben estar asociados varios umbrales correspondientes a los límites diferentes de uso de la funcionalidad, seleccionando por lo menos dos umbrales asociados con la variable de medición seleccionada, y modificando por lo menos una porción seleccionada de la fuente de software protegido (2ps), esta modificación siendo tal que, durante la ejecución del software protegido (2p), se tomen en cuenta los excesos de diversos umbrales, por medio de la segunda parte de ejecución (2peu), de manera diferente, y en la fase de uso (U): en presencia de la unidad (6): en el caso en donde se detecta el exceso de un primer umbral, en ordenar al software protegido (2p) de no utilizar más la funcionalidad correspondiente, y en el caso en donde se detecte el exceso de un segundo umbral, en hacer inoperante la funcionalidad correspondiente y/o por lo menos una porción del software protegido (2p).
8.- El método de conformidad con la reivindicación 6 ó 7, caracterizado además porque consiste: en la fase de protección (P): en definir medios de recarga que permitan acreditar por lo menos un uso complementario para al menos una funcionalidad de software vigilada por una variable de medición, en construir los medios de aprovechamiento que permitan también a la unidad (6) aplicar los medios de recarga, y en modificar el software protegido (2p): seleccionando la fuente de software protegido (2ps), por lo menos una variable de medición seleccionada que permita limitar al uso de una funcionalidad a la cual por lo menos un uso complementario debe poder ser acreditado, y modificando al menos una porción seleccionada, esta modificación siendo tal que en una fase llamada de recarga, por lo menos se puede acreditar un uso complementario de por lo menos una funcionalidad que corresponde a una variable de medición seleccionada, y en la fase de recarga: en reactualizar por lo menos una variable de medición seleccionada y/o al menos un umbral asociado, a manera de permitir por lo menos un uso complementario de la funcionalidad.
9.- El método de conformidad con la reivindicación 5, caracterizado además porque consiste: en la fase de protección (P): en definir: como característica de ejecución de software susceptible de ser vigilada, un perfil de uso de software, y como criterio a obedecer, por lo menos una característica de ejecución de software, y en modificar el software protegido (2p): seleccionando como característica de ejecución de software a vigilar por lo menos un perfil de uso de software, seleccionando por lo menos una característica de ejecución que debe obedecer por lo menos un perfil de uso seleccionado, y modificando al menos una porción seleccionada de la fuente de software protegido (2ps), esta modificación siendo tal que durante la ejecución del software protegido (2p), la segunda parte de ejecución (2peu) obedece todas las características de ejecución seleccionadas, y en la fase de uso (U) en presencia de la unidad (6), y en el caso en donde se detecta que por lo menos una característica de ejecución no es obedecida, en informar al sistema de procesamiento de datos (3) y/o en modificar el funcionamiento de la porción del software protegido (2p), de modo que el funcionamiento del software protegido (2p) sea modificado.
10.- El método de conformidad con la reivindicación 9, caracterizado además porque consiste: en la fase de protección (P): en definir: un juego de instrucciones en donde las instrucciones son susceptibles de ser ejecutadas en la unidad (6), un juego de comandos de instrucciones para este juego de instrucciones, estos comandos de instrucciones son susceptibles de ser ejecutados en el sistema de procesamiento de datos (3) y de iniciar en la unidad (6) la ejecución de las instrucciones, como perfil de uso, el encadenamiento de las instrucciones, como característica de ejecución, un encadenamiento deseado para la ejecución de las instrucciones, como medios de detección (17), medios que permitan detectar que el encadenamiento de las instrucciones no corresponde a aquel deseado, y como medios de coerción (18), medios que permitan informar al sistema de procesamiento de datos (3) y/o de modificar el funcionamiento de la porción de software protegido (2p) cuando el encadenamiento de instrucciones no corresponda a aquel deseado, en construir los medios de aprovechamiento que permitan también a la unidad (6) ejecutar las instrucciones del juego de instrucciones, la ejecución de estas instrucciones son iniciadas por la ejecución en el sistema de procesamiento de datos (3), de comandos de instrucciones, y en modificar el software protegido (2p): modificando por lo menos una porción seleccionada de la fuente del software protegido (2ps): transformando las funciones elementales en instrucciones, especificando el encadenamiento que deben obedecer por lo menos ciertas instrucciones durante su ejecución en la unidad (6), y transformando los comandos elementales en comandos de instrucciones que correspondan a las instrucciones utilizadas, y en la fase de uso (U), en presencia de la unidad (6), en el caso en donde se detecte que el encadenamiento de instrucciones ejecutadas en la unidad (6) no corresponde a aquel deseado, en informar al sistema de procesamiento de datos (3) y/o en modificar el funcionamiento de la porción del software protegido (2p), de modo que el funcionamiento del software protegido (2p) sea modificado.
11.- El método de conformidad con la reivindicación 10, caracterizado además porque consiste: en la fase de protección (P): en definir: como juego de instrucciones, un juego de instrucciones en donde por lo menos ciertas instrucciones trabajan sobre registros y utilizan al menos un operando con el fin de arrojar un resultado, por lo menos una parte de las instrucciones que trabajan sobre los registros: una parte (PF) que define a la funcionalidad de la instrucción, y una parte que define el encadenamiento deseado para la ejecución de instrucciones y que comprende campos de bits que corresponden a: un campo de identificación de la instrucción (CU), y para cada operando de la instrucción: un campo bandera (CDk), y un campo de identificación prevista (CIPk) del operando, para cada registro que pertenece a los medios de aprovechamiento y utilizado por el juego de instrucciones, un campo de identificación generada (CIGV) en la cual se memoriza automáticamente la identificación de la última instrucción que haya arrojado su resultado en este registro, como medios de detección (17), medios que permiten, durante la ejecución de una instrucción, para cada operando, cuando lo impone el campo bandera (CDk), controlar la igualdad entre el campo de identificación generada (CIGV) que corresponde al registro utilizado por este operando, y el campo de identificación prevista (CIPk) del origen de este operando, y como medios de coerción (18), medios que permiten modificar el resultado de las instrucciones, si por lo menos una de las igualdades controladas es falsa.
12.- El método de conformidad con la reivindicación 3, 4 ó 10, caracterizado además porque consiste: en la fase de protección (P): en definir: como un comando iniciador, un comando elemental o un comando de instrucción, como una función dependiente, una función elemental o una instrucción, como una orden, por lo menos un argumento para un comando iniciador, que corresponde por lo menos en parte a la información transmitida por el sistema de procesamiento de datos (3) a la unidad (6), con el fin de iniciar la ejecución de la función dependiente correspondiente, un método de renombramiento de órdenes que permita renombrar las órdenes con el fin de obtener comandos iniciadores en órdenes renombradas, y medios de restablecimiento (20) destinados a ser aplicados en la unidad (6) en el curso de la fase de uso (U), y que permitan encontrar la función dependiente a ejecutar, a partir de la orden renombrada, en construir medios de aprovechamiento que permitan a la unidad (6) aplicar también los medios de restablecimiento, y en modificar el software protegido (2p): seleccionando en la fuente del software protegido (2ps), comandos iniciadores, modificando por lo menos una porción seleccionada de la fuente del software protegido (2ps) renombrando las órdenes de comandos iniciadores seleccionados, a fin de disimular la identidad de las funciones dependientes correspondientes, y produciendo: la primera parte objeto (2pos) del software protegido (2p), esta primera parte objeto (2pos) siendo tal que durante la ejecución del software protegido (2p), se ejecutan los comandos iniciadores en órdenes renombradas, y la segunda parte objeto (2pou) del software protegido (2p) que contiene los medios de aprovechamiento que aplican también los medios de restablecimiento (20), esta segunda parte objeto (2pou) siendo tal que, después de carga en la unidad (6) y durante la ejecución del software protegido (2p), se reestablece la identidad de las funciones dependientes en donde la ejecución es iniciada por la primera parte de ejecución (2pes), por medio de la segunda parte de ejecución (2peu), y las funciones dependientes son ejecutadas por medio de la segunda parte de ejecución (2peu), y en la fase de uso (U): en presencia de la unidad (6) y cada vez que un comando iniciador en orden renombrada, contenido en una porción de la primera parte de ejecución (2pes) lo imponga, reestablecer en la unidad (6), la identidad de la función dependiente correspondiente y en ejecutar la misma, de modo que esta porción se ejecuta correctamente y que en consecuencia, el software protegido (2p) es completamente funcional, y en ausencia de la unidad (6), a pesar de ia petición de una porción de la primera parte de ejecución (2pes), iniciar la ejecución de una función dependiente en la unidad (6), en no poder responder correctamente a esta petición, de modo que por lo menos esta porción no se ejecuta correctamente y que en consecuencia, el software protegido (2p) no es completamente funcional.
13. - El método de conformidad con la reivindicación 12, caracterizado además porque consiste: en la fase de protección (P): en definir para al menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalentes, pero iniciadas por comandos iniciadores en donde las órdenes renombradas son diferentes, y en modificar el software protegido (2p): seleccionando en la fuente del software protegido (2ps) por lo menos una comando iniciador en orden renombrada, y modificando al menos una porción seleccionada de la fuente del software protegido (2ps) reemplazando por lo menos la orden renombrada de un comando de iniciador en orden renombrada seleccionada, por otra orden renombrada, que inicie una función dependiente de la misma familia.
14. - El método de conformidad con la reivindicación 13, caracterizado además porque consiste: en la fase de protección (P), en definir, para al menos una función dependiente, una familia de funciones dependientes algorítmicamente equivalentes: concatenando un campo de ruido con la información que define la parte funcional de la función dependiente a ejecutar en la unidad (6), o utilizando el campo de identificación de la instrucción (CU) y los campos de identificación prevista (CIPk) de los operandos.
15.- El método de conformidad con la reivindicación 12, 13 ó 14, caracterizado además porque consiste: en la fase de protección (P): en definir: como método de renombramiento de órdenes, un método de codificación para codificar las órdenes, y como medios de restablecimiento (20), medios que aplican un método de decodificación para decodificar las órdenes renombradas y reestablecer así la identidad de las funciones dependientes que se ejecutarán en la unidad (6).
16.- El método de conformidad con cualquiera de las reivindicaciones 2 a15, caracterizado además porque consiste: en la fase de protección (P): en modificar el software protegido (2p): seleccionando en la fuente del software protegido (2ps), por lo menos una derivación condicional efectuada en por lo menos un procesamiento algorítmico seleccionado, modificando por lo menos una porción seleccionada de la fuente del software protegido (2ps), esta modificación es tal que durante la ejecución del software protegido (2p), se ejecuta la funcionalidad de por lo menos una derivación condicional seleccionada, por medio de la segunda parte de ejecución (2peu), en la unidad (6), y produciendo: la primera parte objeto (2pos) del software protegido (2p), esta primera parte objeto (2pos) siendo tal que durante la ejecución del software protegido (2p), se ejecuta la funcionalidad de por lo menos una derivación condicional seleccionada en la unidad (6), y la segunda parte objeto (2pou) del software protegido (2p), esta segunda parte objeto (2pou) siendo tal que después de carga en la unidad (6) y durante la ejecución del software protegido (2p), aparece la segunda parte de ejecución (2peu) por medio de la cual se ejecuta la funcionalidad de por lo menos una derivación condicional seleccionada, y en la fase de uso (U): en presencia de la unidad (6) y cada vez que lo impone una porción de la primera parte de ejecución (2pes), ejecutar la funcionalidad de por lo menos una derivación condicional en la unidad (6), de modo que esta porción se ejecuta correctamente y que en consecuencia, el software protegido (2p) es complemente funcional, y en ausencia de la unidad (6) y a pesar de la petición de una porción de la primera parte de ejecución (2pes), ejecutar la funcionalidad de una derivación condicional en la unidad (6), en no poder responder correctamente a esta petición, de modo que por lo menos esta porción no se ejecuta correctamente y que en consecuencia, el software protegido (2p) no es completamente funcional.
17.- El método de conformidad con la reivindicación 16, caracterizado además porque consiste, en la fase de protección (P), en modificar el software protegido (2p): seleccionando, en la fuente del software protegido (2ps) por lo menos una serie de derivaciones condicionales seleccionadas, modificando la menos una porción seleccionada de la fuente del software protegido (2ps), esta modificación es tal que durante la ejecución del software protegido (2p), se ejecuta la funcionalidad global de por lo menos una serie seleccionada de derivaciones condicionales por medio de la segunda parte de ejecución (2peu), en la unidad (6), y produciendo: la primera parte objeto (2pos) del software protegido (2p), esta primera parte objeto (2pos) es tal que durante la ejecución del software protegido (2p), se ejecuta la funcionalidad de por lo menos una serie seleccionada de derivaciones condicionales en la unidad (6), y la segunda parte objeto (2pou) del software protegido (2p), esta segunda parte objeto (2peu) siendo tal que después de carga en la unidad (6) y durante la ejecución del software protegido (2p), aparece la segunda parte de ejecución (2peu) por medio de la cual se ejecuta la funcionalidad global de por lo menos una serie seleccionada de derivaciones condicionales.
18.- El método de conformidad con una de las reivindicaciones 1 a 17, caracterizado además porque consiste en fragmentar la fase de protección (P) en una subíase de protección corriente arriba (P1 ), independiente del software a proteger y una subíase de protección corriente abajo (P2), dependiente del software a proteger.
19.- El método de conformidad con la reivindicación 18, caracterizado además porque consiste, durante la subíase de protección corriente arriba (P1 ), en contener un período de definiciones (S 1 ) en el cual se efectúan todas las definiciones.
20. - El método de conformidad con la reivindicación 19, caracterizado además porque consiste, después del período de definiciones (S1 1 ), en incluir un período de construcción (S12) en el cual se construyen los medios de aprovechamiento.
21. - El método de conformidad con la reivindicación 20, caracterizado además porque consiste, después del período de construcción (S12), en contener un período de prepersonalización (S12), que consiste en cargar en una unidad virgen (60), por lo menos una parte de los medios de aprovechamiento con el fin de obtener una unidad prepersonalizada (66).
22.- El método de conformidad con la reivindicación 19 ó 20, caracterizado además porque consiste, durante la subíase de protección corriente arriba (P1 ), en contener un período de confección de herramientas (S14) en el cual se confeccionan herramientas que permiten ayudar a generar softwares protegidos o automatizar la protección de softwares.
23.- El método de conformidad con las reivindicaciones 18 y 21 , caracterizado además porque consiste en fragmentar la subíase de protección corriente abajo (P2), en: un período de creación (S21 ) en el cual se crea el software protegido (2p), a partir del software vulnerable (2v), eventualmente, un período de modificación (S22) en el cual se modifica el software protegido (2p), y eventualmente un período de personalización (S23) en el cual: la segunda parte objeto (2pou) del software protegido (2p) que contiene eventualmente los medios de aprovechamiento es cargada en por lo menos una unidad virgen (60) con el fin de obtener al menos una unidad (6), o una parte de la segunda parte objeto (2pou) del software protegido (2p) que contiene eventualmente los medios de aprovechamiento es cargada en por lo menos una unidad prepersonalizada (66) con el fin de obtener al menos una unidad (6).
24.- El método de conformidad con las reivindicaciones 22 y 23, caracterizado además porque consiste, durante el período de creación (S21) y eventualmente del período de modificación (S22), en utilizar por lo menos una de las herramientas de ayuda para la generación de softwares protegidos o automatización de la protección de softwares.
25.- Sistema para la aplicación del método de la reivindicación 20, caracterizado porque comprende una unidad de desarrollo de programas, que sirve, durante el estado de construcción (S12), para efectuar la construcción de medios de aprovechamiento destinados a la unidad (6), que toman en cuenta la definiciones contenidas en el período de definiciones (S1 1 ).
26. - Sistema para la aplicación del método de la reivindicación 21 , caracterizado porque comprende una unidad de prepersonalización (30) que permite cargar al menos una parte de los medios de aprovechamiento en por lo menos una unidad virgen (60), con el fin de obtener por lo menos una unidad prepersonal izada (66).
27. - Sistema para la aplicación del método de la reivindicación 22, caracterizado porque comprende una unidad de desarrollo de programas, que sirven para efectuar durante el período de confección de herramientas (S14), la confección de herramientas de ayuda para la generación de softwares protegidos o automatización de la protección de softwares.
28. - Sistema para la aplicación del método de la reivindicación 23 o 24, caracterizado porque comprende una unidad de desarrollo de programas que sirven para crear o modificar un software protegido (2p).
29. - Sistema para la aplicación del método de la reivindicación 23, caracterizado porque comprende una unidad de personalización (45) que permite cargar: la segunda parte objeto (2pou) en por lo menos una unidad virgen (60), con el fin de obtener al menos una unidad (6), o una parte de la segunda parte objeto (2pou) en por lo menos una unidad prepersonalizada (66), con el fin de obtener al menos una unidad (6).
30. - Unidad prepersonalizada (66), caracterizada porque se obtiene por el sistema de la reivindicación 26.
31 . - Unidad (6) que permite ejecutar un software protegido (2p) e impedir su uso no autorizado, caracterizada porque contiene la segunda parte objeto (2pou) del software protegido (2p) cargada con la ayuda de una unidad de personalización (45) de la reivindicación 29.
32. - Conjunto de unidades (6), caracterizado porque la segunda parte objeto (2pou) del software protegido (2p), cargada con la ayuda de una unidad de personalización (45) de la reivindicación 29, es repartida en varias unidades de procesamiento y de memoria de manera que su uso conjunto permite ejecutar el software protegido (2p).
33. - Conjunto de distribución (2pd) de un software protegido (2p), caracterizado porque comprende: una primera parte de distribución (2pds) que contiene la primera parte objeto (2pos) y destinada para funcionar en un sistema de procesamiento de datos (3), y una segunda parte de distribución (2pdu) que se presenta bajo la forma: de una unidad virgen (60), o de una unidad prepersonalizada (66) de la reivindicación 30, capaz, después de carga de información de personalización, de transformarse en una unidad (6), o de una unidad (6) de la reivindicación 31.
34. - El conjunto de distribución (2pd) de un software protegido (2p) de conformidad con la reivindicación 33, caracterizado además porque la primera parte de distribución (2pds) se presenta en forma de un medio de distribución física, CDROM por ejemplo, o bajo la forma de ficheros distribuidos a través de una red.
35. - El conjunto de distribución (2pd) de un software protegido (2p) de conformidad con la reivindicación 33, caracterizado además porque la segunda parte de distribución (2pdu), que se presenta en forma de unidades vírgenes (60), de unidades prepersonalizadas (66) o de unidades (6), comprende al menos una tarjeta de chip (7).
36. - Unidad de procesamiento y de memoria caracterizada porque contiene la parte de la segunda parte objeto (2pou) necesaria para transformar una unidad prepersonalizada (66) de la reivindicación 30 en una unidad (6) de la reivindicación 31.
37. - Conjunto de unidades de procesamiento y de memoria caracterizado porque las unidades de procesamiento y de memoria utilizadas en conjunto, contienen la parte de la segunda parte objeto (2pou) necesaria para transformar una unidad prepersonalizada (66) de la reivindicación 30 en una unidad (6) de la reivindicación 31.
MXPA04000488A 2001-07-31 2002-07-04 Metodo para proteger un software utilizando un principio llamado de variable contra su uso no autorizado. MXPA04000488A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0110250A FR2828305B1 (fr) 2001-07-31 2001-07-31 Procede pour proteger un logiciel a l'aide d'un principe dit de "variable" contre son utilisation non autorisee
PCT/FR2002/002338 WO2003012649A2 (fr) 2001-07-31 2002-07-04 Procede pour proteger un logiciel a l'aide de 'variables' contre son utilisation non autorisee

Publications (1)

Publication Number Publication Date
MXPA04000488A true MXPA04000488A (es) 2005-03-07

Family

ID=8866125

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA04000488A MXPA04000488A (es) 2001-07-31 2002-07-04 Metodo para proteger un software utilizando un principio llamado de variable contra su uso no autorizado.

Country Status (29)

Country Link
EP (1) EP1412861A2 (es)
JP (1) JP3949107B2 (es)
KR (1) KR100940347B1 (es)
CN (1) CN1288525C (es)
AP (1) AP2004002958A0 (es)
AU (1) AU2002325998B2 (es)
BR (1) BR0211374A (es)
CA (1) CA2454090A1 (es)
CO (1) CO5550508A2 (es)
CR (1) CR7231A (es)
EA (1) EA005465B1 (es)
EC (1) ECSP044951A (es)
FR (1) FR2828305B1 (es)
GE (1) GEP20053647B (es)
HK (1) HK1070155A1 (es)
HR (1) HRP20040049A2 (es)
HU (1) HUP0400228A2 (es)
IL (1) IL159953A0 (es)
IS (1) IS7121A (es)
MA (1) MA26126A1 (es)
MX (1) MXPA04000488A (es)
NO (1) NO20040232L (es)
OA (1) OA12699A (es)
PL (1) PL367366A1 (es)
TN (1) TNSN04012A1 (es)
UA (1) UA77186C2 (es)
WO (1) WO2003012649A2 (es)
YU (1) YU5404A (es)
ZA (1) ZA200400348B (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2852415B1 (fr) * 2003-03-11 2005-06-24 Actikey Support de type cle, de controle de l'acces a des donnees et/ou a un logiciel et procede correspondant
CN107194212B (zh) * 2017-06-21 2020-04-17 株洲中车时代电气股份有限公司 一种显示器源代码中协议内容的保护方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2634917A1 (fr) * 1988-08-01 1990-02-02 Pionchon Philippe Procede et dispositif de protection d'un logiciel, en particulier contre les copies non autorisees
US5754646A (en) * 1995-07-19 1998-05-19 Cable Television Laboratories, Inc. Method for protecting publicly distributed software
AU7957998A (en) * 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security
JP2002518727A (ja) * 1998-06-12 2002-06-25 ジェムプリュス ソフトウェア製品の実行の制御方法

Also Published As

Publication number Publication date
IS7121A (is) 2004-01-20
CN1535410A (zh) 2004-10-06
KR20040027881A (ko) 2004-04-01
IL159953A0 (en) 2004-06-20
OA12699A (en) 2006-06-23
WO2003012649A2 (fr) 2003-02-13
CR7231A (es) 2005-07-21
HRP20040049A2 (en) 2004-06-30
HUP0400228A2 (en) 2004-09-28
GEP20053647B (en) 2005-10-25
EA005465B1 (ru) 2005-02-24
NO20040232L (no) 2004-03-30
JP3949107B2 (ja) 2007-07-25
EA200400057A1 (ru) 2004-06-24
WO2003012649A3 (fr) 2003-12-24
FR2828305B1 (fr) 2010-09-03
ECSP044951A (es) 2004-04-28
CO5550508A2 (es) 2005-08-31
JP2004537806A (ja) 2004-12-16
AP2004002958A0 (en) 2004-03-31
ZA200400348B (en) 2005-03-30
AU2002325998B2 (en) 2008-10-30
TNSN04012A1 (fr) 2006-06-01
YU5404A (sh) 2006-08-17
BR0211374A (pt) 2004-07-20
CN1288525C (zh) 2006-12-06
PL367366A1 (en) 2005-02-21
EP1412861A2 (fr) 2004-04-28
CA2454090A1 (fr) 2003-02-13
MA26126A1 (fr) 2004-04-01
FR2828305A1 (fr) 2003-02-07
UA77186C2 (en) 2006-11-15
KR100940347B1 (ko) 2010-02-04
HK1070155A1 (en) 2005-06-10

Similar Documents

Publication Publication Date Title
US20070294770A1 (en) Method to Protect Software Against Unwanted Use with a Variable Principle
US20070136816A1 (en) Method to protect software against unwanted use with a detection and coercion principle
US20070283437A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Temporal Dissociation&#34; Principle
MXPA04000488A (es) Metodo para proteger un software utilizando un principio llamado de variable contra su uso no autorizado.
MXPA04000596A (es) Metodo para proteger un software con la ayuda de un principio llamado de &#34;renombramiento&#34; contra su uso no autorizado.
MXPA04000593A (es) Metodo para proteger un software con la ayuda de un principio llamado de &#34;derivacion condicional&#34; contra su uso no autorizado.
US20070277239A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Renaming&#34; Principle
MXPA04000594A (es) Metodo para proteger un software con la ayuda de un principio llamado de &#34;disociacion temporal&#34; contra su uso no autorizado.
MXPA04000595A (es) Metodo para proteger un software con la ayuda de un principio llamado de &#34;funciones elementales&#34; contra su uso no autorizado.
JP2006338311A (ja) 複数のアプリケーションを搭載したデバイスを処理するコンピュータシステム、デバイスおよびコンピュータプログラム
MXPA04000489A (es) Procedimiento para proteger un software con la ayuda de un principio de deteccion y coercion contra su uso no autorizado.
EP1540442A2 (en) Software protection
US7502940B2 (en) Method to protect software against unwanted use with a “conditional branch” principle
US7434064B2 (en) Method to protect software against unwanted use with a “elementary functions” principle