MXPA04000594A - Metodo para proteger un software con la ayuda de un principio llamado de "disociacion temporal" contra su uso no autorizado. - Google Patents

Metodo para proteger un software con la ayuda de un principio llamado de "disociacion temporal" contra su uso no autorizado.

Info

Publication number
MXPA04000594A
MXPA04000594A MXPA04000594A MXPA04000594A MXPA04000594A MX PA04000594 A MXPA04000594 A MX PA04000594A MX PA04000594 A MXPA04000594 A MX PA04000594A MX PA04000594 A MXPA04000594 A MX PA04000594A MX PA04000594 A MXPA04000594 A MX PA04000594A
Authority
MX
Mexico
Prior art keywords
execution
unit
protected software
software
protected
Prior art date
Application number
MXPA04000594A
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 MXPA04000594A publication Critical patent/MXPA04000594A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Storage Device Security (AREA)

Abstract

La invencion se refiere a un metodo para proteger, a partir de una unidad, un software vulnerable contra su uso no autorizado, dicho software vulnerable funciona en un sistema de procesamiento de datos; el metodo de acuerdo con la invencion consiste en crear un software protegido: seleccionando por lo menos un procesamiento algoritmico; produciendo la fuente del software protegido a partir de la fuente del software vulnerable, modificando la fuente del software vulnerable, de manera que por lo menos se fragmente un procesamiento algoritmico seleccionado, para que durante la ejecucion del software protegido, aparezcan varias etapas distintas, a saber: la disposicion de por lo menos un operando para la unidad, la realizacion mediante la unidad, de la funcionalidad del procesamiento algoritmico al menos en este operando, y, eventualmente, la disposicion de por lo menos un resultado, mediante la unidad para el sistema de procesamiento de datos.

Description

METODO PARA PROTEGER UN SOFTWARE CON LA AYUDA DE UN PRINCIPIO LLAMADO DE "DISOCIACION TEMPORAL" 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 procesamiento y de memoria, dicha unidad es comúnmente materializada por una tarjeta de chip o por una llave material en 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 medida 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 procesamiento y de memoria ad hoc, en la medida en que la presencia de dicha unidad sea necesaria para que el software sea completamente funcional. Para alcanzar dicho objetivo, 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 procesamiento y 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, por lo menos un procesamiento algorítmico que, durante la ejecución del software vulnerable, utiliza por lo menos un operando y permite obtener por lo menos un resultado, seleccionando por lo menos una porción de la fuente del software vulnerable que contiene, por lo menos un procesamiento algorítmico seleccionado, produciendo la fuente del software protegido a partir de la fuente del software vulnerable, modificando al menos una porción seleccionada de la fuente del software vulnerable para obtener por lo menos una porción modificada de la fuente del software protegido, esta modificación es tal que: durante la ejecución del software protegido, se ejecuta una primera parte de ejecución en el sistema de procesamiento de datos y se ejecuta una segunda parte de ejecución en una unidad, obtenida a partir de la unidad virgen después de cargar informaciones, la segunda parte de ejecución ejecuta por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado, se fragmenta por lo menos un procesamiento algorítmico seleccionado de modo 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 un operando para la unidad, la realización mediante la unidad, de la funcionalidad del procesamiento algorítmico en al menos este operando, y eventualmente, la disposición de por lo menos un resultado, mediante la unidad para el sistema de procesamiento de datos, para al menos un procesamiento algorítmico seleccionado, se definen comandos de etapas, de modo que durante la ejecución del software protegido, cada comando de etapa es ejecutado por la primera parte de ejecución e inicia, en la unidad, la ejecución por medio de la segunda parte de ejecución, de una etapa, y se selecciona un ordenamiento de los comandos de etapas entre el conjunto de ordenamientos que permiten la ejecución del software protegido, 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 de donde por lo menos una porción toma en cuenta que los comandos de etapas son 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 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 etapas iniciadas por la primera parte de ejecución, y en cargar la segunda parte objeto en la unidad virgen, con él fin de obtener la unidad, y en una fase de uso, en el transcurso de la cual se ejecuta el software protegido: 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 es ejecutada 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, no poder responder correctamente a esta petición, de manera 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 según la invención consiste: en la fase de protección: seleccionando por lo menos una variable utilizada en por lo menos un procesamiento algorítmico seleccionado, que durante la ejecución del software protegido, define parcialmente el estado del software protegido, 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, por lo menos una variable seleccionada o por lo menos una copa de variable seleccionada reside 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, por lo menos una porción de la primera parte de ejecución también toma en cuenta que al menos una variable o al menos una copia de variable reside 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 por lo menos una variable seleccionada, o por lo menos una copia de variable seleccionada reside también en la unidad, y en la fase de uso: en presencia de la unidad y cada vez que lo imponga una porción de la primera parte de ejecución, utilizar una variable o una copia de variable que reside en la unidad, de manera que esta porción es ejecutada 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 utilizar una variable o una copia de variable que reside en la unidad, no poder responder correctamente a esta petición, de modo que por lo menos esta porción no es ejecutada correctamente y que, en consecuencia, el software protegido no es completamente funcional. De acuerdo con otra modalidad preferida, el método según la invención consiste: en la fase de protección: en definir: un juego de funciones elementales, cuyas 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 las funciones elementales, en construir medios de aprovechamiento que permiten 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 los comandos elementales, y en modificar el software protegido: modificando por lo menos una porción seleccionada de la fuente del software protegido, esta modificación siendo tal que: por lo menos se fragmenta una etapa, de manera que durante la ejecución del software protegido, esta etapa es ejecutada por medio de la segunda parte de ejecución, utilizando las funciones elementales, para al menos una etapa fragmentada, se integran comandos elementales en la fuente del software protegido, de manera que durante la ejecución del software protegido, cada comando elemental es ejecutado por la primera parte de ejecución e 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, por lo menos una porción de la primera parte de ejecución ejecuta también los comandos elementales 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 carga en la unidad y durante la ejecución del software protegido, aparece la segunda parte de ejecución por medio de la cual también 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 imponga 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 ejecutada 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 función elemental en la unidad, de no poder responder correctamente a esta petición, de manera que por lo menos esta porción no es ejecutada 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: 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 ai 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 variante 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 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 reactuaüzar 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: 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 ia 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 io 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 procesamiento y de memoria que presente la particularidad de contener una parte del software durante ejecución. Se pretende que cualquier versión derivada del software que intente funcionar sin la unidad de procesamiento y de memoria imponga recrear la parte del software contenido en la unidad de procesamiento y de memoria durante la ejecución, con el riesgo 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 ios 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 de! 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 el 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 ¡lustra 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 ilustra 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 ¡lustra un ejemplo de modalidad de un sistema que permite la aplicación del método de protección de acuerdo con la invención. La figura 15 ilustra 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 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 procesamiento y de memoria que aplica ei 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 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 1 a ilustra 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 CDROM 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 ilustra 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 una segunda parte fuente destinada a la unidad 6, una parte de estas partes fuente puede comúnmente estar 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 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 prepersonalizada 66 sobre la cual ha sido cargada una parte de la segunda parte objeto 2pou y para la cual, el usuario debe terminar la personalización cargando informaciones complementarias, con el fin de obtener una unidad 6, estas informaciones complementarias obteniéndose, por ejemplo, por carga o telecarga a través de una red, o de por lo menos una unidad 6 sobre la cual ha sido cargada 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. El 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 1 p 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 1 p 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, uña 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. 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 funciona!. De acuerdo con la invención, el método de protección contempla aplicar un principio de protección, llamado por "disociación temporal", del que se efectúa 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 e! 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 de las etapas anteriormente definidas. 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 ?f?(?,?) 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 Ja 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 etapa 1 , a saber la ejecución de un comando de etapa CEi 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 CE-i es representado por OUT(x,X), OUT(y, Y), en el momento Í2, 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 CE-, , CE2, CE3 que corresponden a la determinación de Z y de comandos de etapas CE'-i, CE'2, CE'3 que corresponden a la determinación de Z'. Como se ilustra, los comandos de etapas CE- a CE'3 no son ejecutados consecutivamente en la medida de los comandos de etapas CE'i a CE'3, 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'-i , 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 t-i, 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 t.2, 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 IN(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 "variable" del que se efectúa 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 vanable seleccionada o al menos una copia de variable seleccionada reside en la unidad 6. La figura 4a ilustra 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 V-?f?, en el momento t2, la asignación del valor de la variable Vi a la variable Y, representada por ???-?, en el momento t3, la asignación del valor de la variable \? a la variable Z, representada por ?f\ . 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-?, 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 v-, 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 h, 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 asignar a la variable Y, este comando de transferencia es representado por IN ( ^ y corresponde al final a la asignación del valor de la variable v-, a la variable Y, y en el momento Í3, 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-i ) y corresponde al final a la asignación del valor de la variable v-? 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 e! 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 asignación del dato X a la variable Vi 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 Vt situada en los medios de memoria 15 de la unidad 6, este comando de transferencia siendo representado por OUT ( i, X), en el momento t2, la asignación del valor de la variable V-? a la variable Y, y en el momento Í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(v-i). 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 dei 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 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-?, la ejecución del comando de transferencia OUT(v-i, X) no puede iniciar la transferencia del dato X hacia la variable v-i, teniendo en cuenta la ausencia de la unidad 6, en el momento Í2, la ejecución del comando de transferencia IN(vi) 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, y en el momento t.3, la ejecución del comando de transferencia IN(v-i ) no puede iniciar la transferencia del valor de la variable v 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 fas 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 "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 en una unidad 6 capaz de ejecutar las funciones elementales, la ejecución de estas funciones elementales siendo iniciada 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 ai 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 de! 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 ilustra 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 t-i, t2, la ejecución de los comandos elementales CFEi, CFE2 que inician en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de funciones elementales fe-i, 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 5 de la unidad 6, estos comandos elementales CFEi, CFE2 son representados respectivamente por OUT(x, X), OUT(y, Y), en los momentos t3 a tN-i, la ejecución de los comandos elementales CFE3 a CFEN-1, 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-i correspondientes, estos comandos elementales CFE3 a CFEN-i son representados, respectivamente, por TRIG(fe3) a TRIG(feN-1). El desarrollo de las funciones elementales fe3 a feN-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 elementales conduce a la ejecución en la unidad 6, de funciones elementales fe3 a fe -1 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 , 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 ilustrado, 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 ¡lustran 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<j>F (X, Y) y Z'<j)F' (?', ?'). La figura 6d 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 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^ porción de código intercalado, CFE'i, CFE2, porción de código intercalado, CFE'2, CFE'3, porción de código intercalado, CFE'4, CFE?, 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 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 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 ia 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 en una unidad 6 aplicando por lo menos los medios de detección 17 y los medios de coerción 18. La figura 7a ilustra 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 6, 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 17, 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, los 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 excesó 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 ilustra 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 i¡ 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 in, in+1 y in+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 \n+2 utiliza como operando, los resultados a y b de las instrucciones in y in+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 ¡n, 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 ??+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 in+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 ¡n+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 medida 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 CDk 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 gepierado el contenido del operando k. Como se ¡lustra 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 RVl 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 CIPR 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 transformar una unidad virgen 60 en una unidad 6 aplicando 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 ilustra 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 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, la ejecución de los comandos iniciadores CD-i, CD2 que inician en la unidad 6, la ejecución por medio de la segunda parte de ejecución 2peu, de funciones dependientes fdi, 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-i, CD2 están representados respectivamente por OUT(x, X), OUT(y, Y), en los momentos t3 a Í -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 fdn-i correspondientes, estos comandos iniciadores CD3 a CDN- están representados, respectivamente, por TRIG(fd3) a TRIG(fdN- ). El desarrollo de las funciones dependientes fd3 a fdN_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 iniciadores conduce a la ejecución en la unidad 6, de funciones dependientes fd3 a fd -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 fd 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 CDi a CDN a saber x, y, fd3, fdN-i, z son renombradas a manera de obtener respectivamente R(x), R(y), R(fd3)..., R(fdN-1), 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 la 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 CDCR1, CDCR2 están representados respectivamente por OUT (R(x), X), OUT (R(y), Y), en los momentos t3 a ÍN-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-i), 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 fdw-i, estos comandos iniciadores en órdenes renombradas CDCR3 a CDCRN-i son representados respectivamente por TRIG (R(fd3)) a TRIG (R(fdN-i)), 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.j>F(X, Y) y Z'cj)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 CDCRi a CDCRN que corresponden a la determinación de Z y la ejecución de comandos iniciadores en órdenes renombradas CDCR'i a CDCR'M que corresponden a la determinación de Z'. Como se ilustra, los comandos iniciadores en órdenes renombradas CDCRi a CDCRN no son ejecutados consecutivamente, en la medida 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-i , 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 ei 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 las derivaciones condicionales BC seleccionadas. La figura 9a ilustra 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 ??, 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 3 entorno B-i, 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-j , 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 B-i, 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 ilustra 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 t2, 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, se aplica utilizando el principio de protección por disociación temporal, eventualmente asociado a uno o más principios de protección. En el caso en donde, el principio de protección por disociación temporal es completado mediante la aplicación de por lo menos otro principio de protección, el principio de protección por disociación temporal es completado ventajosamente por el principio de protección por variable y/o el principio de protección por funciones elementales y/o el principio de protección por derivación condicional. Y cuando también se aplica el principio de protección por variable, é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 también se aplica el principio de protección por funciones elementales, é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 también se aplica el principio de protección por detección y coerción, é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 también se aplica el principio de protección por renombramiento, é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 disociación temporal es completado por el principio de protección por variable, 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 se aplica un principio de protección, en complemento del principio de protección por disociación temporal, su descripción anteriormente realizada, debe comprender, para tener en cuenta 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 el 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 subfase de protección corriente arriba Pi, 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 subfase de protección corriente arriba P-i puede ser modalizada por una persona o una sociedad que asegure el desarrollo de sistemas de protección de software, mientras que la subfase 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 y corriente abajo P2 pueden también ser modalizadas por la misma persona o el mismo equipo. La subfase de protección corriente arriba P 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 "período de definiciones Su". Durante este período de definiciones Su: se selecciona: el tipo de la unidad 6. A manera ilustrativa, puede ser seleccionado como 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 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 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 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 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 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 ¡o 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 S-p 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 Si2, 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 ¡os 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 . Durante la subíase de protección corriente arriba P-i , el período de construcción S-|2 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 subfase 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 S-|2, un período llamado "período de confección de herramientas S 4". Durante este período de confección de herramientas S14, 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: el o los procesamientos algorítmicos susceptibles de ser fragmentados en etapas que pueden ser deportadas a la unidad 6, la o las porciones susceptibles de ser modificadas, y cuando también se aplica el principio de protección por variable, la o las variables susceptibles de 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 subíase de protección corriente arriba P-i 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 disociación temporal es llamado "período de creación S21". Durante este período de creación S21 , se utilizan las opciones incluidas en el período de definición Su. Con la ayuda de estas opciones, y eventualmente de herramientas construidas en el período de confección de herramientas S14, se crea el software protegido 2p: seleccionando, por lo menos un procesamiento algorítmico que, " durante la ejecución del software vulnerable 2v, utiliza por lo menos un , operando y permite obtener al menos un resultado, seleccionando por lo menos una porción de la fuente del software vulnerable 2vs que contiene, por lo menos un procesamiento algorítmico seleccionado, 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 para obtener por lo menos una porción modificada de la fuente del software protegido 2ps, esta modificación siendo tal que: durante la ejecución del software protegido 2p, se ejecuta una primera parte de ejecución 2pes en el sistema de procesamiento de datos 3 y se ejecuta una segunda parte de ejecución 2peu en una unidad 6, obtenida a partir de la unidad virgen 60 después de carga de informaciones, la segunda parte de ejecución 2peu ejecuta por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado, por lo menos se fragmenta un procesamiento algorítmico seleccionado, 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 un operando para la unidad 6, la realización por la unidad 6, de la funcionalidad del procesamiento algorítmico en al menos este operando, y eventualmente, la disposición de por lo menos un resultado, 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 es ejecutado por la primera parte de ejecución 2pes e inicia, 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: una primera parte objeto 2pos del software protegido 2p, a partir de la fuente del software protegido 2ps, esta primera parte objeto 2pos siendo tai 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 del cual por lo menos una porción toma en cuenta que los comandos de etapas son ejecutados según el ordenamiento seleccionado, y una segunda parte objeto 2pou del software protegido 2p, esta segunda parte objeto 2pou siendo 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 son ejecutadas las etapas iniciadas por (a primera parte de ejecución 2pes. Desde luego, el principio de protección por disociación temporal de acuerdo con la invención, puede ser aplicado directamente durante el desarrollo de un nuevo software sin necesitar la realización previa de un software vulnerable 2v. De esta forma, se obtiene directamente un software protegido 2p. Durante la subíase de protección corriente abajo P2, y cuando se aplica por lo menos otro principio de protección además del principio de protección por disociación temporal, se aplica un "período de modificación S22"- Durante este período de modificación S22, se utilizan las definiciones que intervienen 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 S 4, el software protegido 2p es modificado para permitir la aplicación de los principios de protección de acuerdo con una de las disposiciones antes definidas. Cuando se aplica el principio de protección por variable, el software protegido 2p es modificado: seleccionando por lo menos una variable utilizada al menos en un procesamiento algorítmico seleccionado, que durante la ejecución del software protegido 2p, define parcialmente el estado del software protegido 2p, 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, por lo menos una variable seleccionada o al menos una copia de variable seleccionada reside 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, por lo menos una porción de la primera parte de ejecución 2pes también toma en cuenta que al menos una variable o por lo menos una copa de variable reside 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 por lo menos una variable seleccionada, o al menos una copia de variable seleccionada reside también en la unidad 6. Cuando se aplica el principio de protección por funciones elementales,. el software protegido 2p es modificado: modificando por lo menos una porción seleccionada de la fuente del software protegido 2p, esta modificación siendo tal que: por lo menos se fragmenta una etapa, 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 las funciones elementales, para al menos una etapa fragmentada, se integran comandos elementales en la fuente del software protegido 2p, de manera que durante la ejecución del software protegido 2p, cada comando elemental es ejecutado por al primera parte de ejecución 2pes e 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, por lo menos una porción de la primera parte de ejecución 2pes ejecuta también los comandos elementales 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 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 también 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 io 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 09 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 subíase de protección corriente abajo P2l 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 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 estas informaciones de personalización permite volver operacional por lo menos una unidad 6. Cabe señalar que una parte de esas informaciones, una vez transferida a una unidad 6, no es directamente accesible desde el exterior de esta unidad 6. La transferencia de informaciones de personalización en una unidad virgen 60 o una unidad prepersonalizada 66 se puede realizar a través de una unidad de personalización adaptada, que se describe con relación a la figura 15. En el caso de una unidad 6, constituida por una carta de chip 7 y de su lector 8, la personalización solo 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 11 , 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 16 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 prepersonaiizada 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 (30)

NOVEDAD PE 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 ( 5) y medios de procesamiento (16), 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, por lo menos un procesamiento algorítmico que, durante la ejecución del software vulnerable (2v), utiliza por lo menos un operando y permite obtener por lo menos un resultado, seleccionando por lo menos una porción de la fuente del software vulnerable (2vs) que contiene, por lo menos un procesamiento algorítmico seleccionado, 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) para obtener por lo menos una porción modificada de la fuente del software protegido (2ps), esta modificación es tal que: durante la ejecución del software protegido (2p), se ejecuta una primera parte de ejecución (2pes) en el sistema de procesamiento de datos (3) y se ejecuta una segunda parte de ejecución (2peu) en una unidad (6), obtenida a partir de la unidad virgen (60) después de cargar informaciones, la segunda parte de ejecución (2peu) ejecuta por lo menos la funcionalidad de al menos un procesamiento algorítmico seleccionado, se fragmenta, por lo menos un procesamiento algorítmico seleccionado de modo 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 un operando para la unidad (6), la realización mediante la unidad (6), de la funcionalidad del procesamiento algorítmico en al menos este operando, y eventualmente, la disposición de por lo menos un resultado, 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 modo que durante la ejecución del software protegido (2p), cada comando de etapa es ejecutado por la primera parte de ejecución (2pes) e inicia, 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 los comandos de etapas entre el conjunto de ordenamientos que permiten la ejecución del software protegido (2p), 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 (2pes) que es ejecutada en el sistema de procesamiento de datos (3) y de donde por lo menos una porción toma en cuenta que 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) siendo tai 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 etapas iniciadas por la primera parte de ejecución (2pes), y en cargar la segunda parte objeto (2pou) en la unidad virgen (60), con el fin de obtener la unidad (6), y en una fase de uso (U), en el transcurso de la cual se ejecuta el software protegido (2p): 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 es ejecutada 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), no poder responder correctamente a esta petición, de manera 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): seleccionando por lo menos una variable utilizada en por lo menos un procesamiento algorítmico seleccionado, que durante la ejecución del software protegido (2p), define parcialmente el estado del software protegido (2p), 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), por lo menos una variable seleccionada o por lo menos una copa de variable seleccionada reside 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), por lo menos una porción de la primera parte de ejecución (2pes) también toma en cuenta que al menos una variable o al menos una copia de variable reside 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 por lo menos una variable seleccionada, o por lo menos una copia de variable seleccionada reside también en la unidad (6), y en la 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), utilizar una variable o una copia de variable que reside en la unidad (6), de manera que esta porción es ejecutada 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 utilizar una variable o una copia de variable que reside en la unidad (6), no poder responder correctamente a esta petición, 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.
3.- El método de conformidad con la reivindicación 1 ó 2, caracterizado además porque consiste: en la fase de protección (P): en definir. 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 las funciones elementales, en construir medios de aprovechamiento que permiten a la unidad (6), 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 los comandos elementales, y en modificar el software protegido (2p): modificando por lo menos una porción seleccionada de la fuente del software protegido (2ps), esta modificación siendo tal que: por lo menos se fragmenta una etapa, 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 las funciones elementales, para al menos una etapa fragmentada, 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) e 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), por lo menos una porción de la primera parte de ejecución (2pes) ejecuta también los comandos elementales 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 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 también 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 imponga 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 ejecutada 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 función elemental en la unidad (6), de no poder responder correctamente a esta petición, de manera que por lo menos esta porción no es ejecutada correctamente y en consecuencia, el software protegido (2p) no es completamente funcional.
4.- El método de conformidad con la reivindicación 3, 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 ( 8) 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.
5.- El método de conformidad con la reivindicación 4, 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.
6.- El método de conformidad con la reivindicación 5, 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 (a 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).
7.- El método de conformidad con la reivindicación 5 ó 6, 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.
8.- El método de conformidad con la reivindicación 4, 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 e| funcionamiento de la porción del software protegido (2p), de modo que el funcionamiento del software protegido (2p) sea modificado.
9.- El método de conformidad con la reivindicación 8, 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, comó 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.
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: 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.
11.- El método de conformidad con la reivindicación 3 ó 9, 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 la 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.
12. - El método de conformidad con la reivindicación 11 , 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.
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: 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.
14. - El método de conformidad con la reivindicación 11 , 12 ó 13, 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).
15.- El método de conformidad con una de las reivindicaciones 1 a 14, 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.
16.- El método de conformidad con la reivindicación 15, 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.
17. - El método de conformidad con una de las reivindicaciones 1 a 16, 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 subfase de protección corriente abajo (P2), dependiente del software a proteger.
18. - El método de conformidad con la reivindicación 17, caracterizado además porque consiste, durante la subfase de protección corriente arriba (P1 ), en contener un período de definiciones (S1 1 ) en el cual se efectúan todas las definiciones.
19.- El método de conformidad con la reivindicación 18, caracterizado además porque consiste, después del período de definiciones (51 1) , en incluir un período de construcción (S12) en el cual se construyen los medios de aprovechamiento.
20.- El método de conformidad con la reivindicación 19, caracterizado además porque consiste, después del período de construcción (512) , 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).
21. - El método de conformidad con la reivindicación 18 ó 19, caracterizado además porque consiste, durante la subfase 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.
22. - El método de conformidad con la reivindicación 17 y 20, caracterizado además porque consiste en fragmentar la subfase 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 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).
23. - El método de conformidad con las reivindicaciones 21 y 22, 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.
24. - Sistema para la aplicación del método de la reivindicación 19, 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 ).
25. - Sistema para la aplicación del método de la reivindicación 20, 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 prepersonalizada (66).
26. - Sistema para la aplicación del método de la reivindicación 21 , 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.
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 crear o para modificar un software protegido (2p).
28. - Sistema para la aplicación del método de la reivindicación 22, 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).
29.- Unidad prepersonalizada (66), caracterizada porque se obtiene mediante el sistema de la reivindicación 25. 30 - Unidad (6) que permite ejecutar un software protegido (2p) y de impedir su uso no autorizado, caracterizada porque contiene cargada la segunda parte objeto (2pou) del software protegido (2p) con la ayuda de una unidad de personalización (45) de la reivindicación 28. 31 . - 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 28, está repartida en varias unidades de procesamiento y de memoria, de manera que su uso conjunto permite ejecutar el software protegido (2p). 32. - 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 a 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 29, capaz, después de carga de informaciones de personalización, de transformarse en una unidad (6), o de una unidad (6) de la reivindicación
30. 33. - El conjunto de distribución (2pd) de un software protegido (2p) de conformidad con la reivindicación 32, caracterizado además porque la primera parte de distribución (2pds) se presenta bajo la forma de un medio de distribución físico, CDROM por ejemplo, o bajo la forma de ficheros distribuidos a través de una red. 34. - El conjunto de distribución (2pd) de un software protegido (2p) de conformidad con la reivindicación 32, caracterizado además porque la segunda parte de distribución (2pdu), que se presenta bajo la forma de unidades vírgenes (60), unidades prepersonalízadas (66) o unidades (6), comprende una tarjeta de chip (7). 35. - Unidad de procesamiento y de memoria caracterizada porque contiene la parte de la segunda parte objeto (2pou) necesaria para transferir una unidad prepersonalizada (66) de la reivindicación 29 a una unidad (6) de la reivindicación 30. 36. - Conjunto de unidades de procesamiento y de memoria caracterizado porque las unidades de procesamiento y de memoria utilizadas de manera conjunta, contienen la parte de la segunda parte objeto (2pou) necesaria para transformar una unidad prepersonalizada (66) de la reivindicación 29 en una unidad (6) de la reivindicación 30.
MXPA04000594A 2001-07-31 2002-07-04 Metodo para proteger un software con la ayuda de un principio llamado de "disociacion temporal" contra su uso no autorizado. MXPA04000594A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0110247A FR2828304B1 (fr) 2001-07-31 2001-07-31 Procede pour proteger un logiciel a l'aide d'un principe dit de "dissociation temporelle" contre son utilisation non autorisee
PCT/FR2002/002339 WO2003012650A2 (fr) 2001-07-31 2002-07-04 Procede pour proteger un logiciel a l'aide de 'dissociation temporelle' contre son utilisation non autorisee

Publications (1)

Publication Number Publication Date
MXPA04000594A true MXPA04000594A (es) 2005-02-17

Family

ID=8866122

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA04000594A MXPA04000594A (es) 2001-07-31 2002-07-04 Metodo para proteger un software con la ayuda de un principio llamado de "disociacion temporal" contra su uso no autorizado.

Country Status (18)

Country Link
EP (1) EP1412862A2 (es)
JP (1) JP3949108B2 (es)
KR (1) KR20040031778A (es)
CN (1) CN100451910C (es)
BR (1) BR0211371A (es)
CA (1) CA2454092A1 (es)
FR (1) FR2828304B1 (es)
HR (1) HRP20040047A2 (es)
HU (1) HUP0400223A2 (es)
IL (1) IL159954A0 (es)
MA (1) MA26125A1 (es)
MX (1) MXPA04000594A (es)
NO (1) NO20040227L (es)
PL (1) PL367424A1 (es)
TN (1) TNSN04014A1 (es)
WO (1) WO2003012650A2 (es)
YU (1) YU5504A (es)
ZA (1) ZA200400349B (es)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011006000B4 (de) 2011-03-23 2015-01-15 Infineon Technologies Ag Signaturaktualisierung durch Codetransformation
KR101217668B1 (ko) * 2011-05-12 2013-01-02 주식회사 안랩 악성 프로그램 후킹 방지 장치 및 방법
US11595201B2 (en) 2020-02-21 2023-02-28 Cyber Armor Ltd. System and method for generation of a disposable software module for cryptographic material protection

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
IL159954A0 (en) 2004-06-20
CN100451910C (zh) 2009-01-14
TNSN04014A1 (fr) 2006-06-01
JP3949108B2 (ja) 2007-07-25
EP1412862A2 (fr) 2004-04-28
KR20040031778A (ko) 2004-04-13
ZA200400349B (en) 2005-03-30
CA2454092A1 (fr) 2003-02-13
FR2828304B1 (fr) 2010-09-03
JP2004537807A (ja) 2004-12-16
FR2828304A1 (fr) 2003-02-07
WO2003012650A2 (fr) 2003-02-13
MA26125A1 (fr) 2004-04-01
BR0211371A (pt) 2004-09-28
PL367424A1 (en) 2005-02-21
CN1552010A (zh) 2004-12-01
WO2003012650A3 (fr) 2003-12-24
HRP20040047A2 (en) 2004-06-30
NO20040227L (no) 2004-03-30
HUP0400223A2 (en) 2004-08-30
YU5504A (sh) 2006-05-25

Similar Documents

Publication Publication Date Title
US20020147922A1 (en) Software protection mechanism
US20070294770A1 (en) Method to Protect Software Against Unwanted Use with a Variable Principle
US20020129270A1 (en) Electronic device for providing software protection
US20070136816A1 (en) Method to protect software against unwanted use with a detection and coercion 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.
US20070283437A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Temporal Dissociation&#34; Principle
MXPA04000596A (es) Metodo para proteger un software con la ayuda de un principio llamado de &#34;renombramiento&#34; contra su uso no autorizado.
US20070277239A1 (en) Method to Protect Software Against Unwanted Use with a &#34;Renaming&#34; Principle
MXPA04000593A (es) Metodo para proteger un software con la ayuda de un principio llamado de &#34;derivacion condicional&#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.
MXPA04000488A (es) Metodo para proteger un software utilizando un principio llamado de variable contra su uso no autorizado.
MXPA04000489A (es) Procedimiento para proteger un software con la ayuda de un principio de deteccion y coercion contra su uso no autorizado.
US20040105547A1 (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
JP2021184122A (ja) 車載器およびセキュリティ機能制御プログラム