ES2701030T3 - Método de carga de un código de al menos un módulo informático - Google Patents

Método de carga de un código de al menos un módulo informático Download PDF

Info

Publication number
ES2701030T3
ES2701030T3 ES11799427T ES11799427T ES2701030T3 ES 2701030 T3 ES2701030 T3 ES 2701030T3 ES 11799427 T ES11799427 T ES 11799427T ES 11799427 T ES11799427 T ES 11799427T ES 2701030 T3 ES2701030 T3 ES 2701030T3
Authority
ES
Spain
Prior art keywords
code
main memory
memory
operating system
priming
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
ES11799427T
Other languages
English (en)
Inventor
Vincent Hamon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Viaccess SAS
Original Assignee
Viaccess SAS
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 Viaccess SAS filed Critical Viaccess SAS
Application granted granted Critical
Publication of ES2701030T3 publication Critical patent/ES2701030T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/418External card to be used in combination with the client device, e.g. for conditional access
    • H04N21/4181External card to be used in combination with the client device, e.g. for conditional access for conditional access

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

Un método para cargar un código de al menos un módulo informático en una memoria principal mediante un procesador de seguridad, en donde el procesador de seguridad ejecuta: - un código de cebado operativo que carga (156) en la memoria principal el código de un cargador de cebado operativo y luego inicia (162) la ejecución de este cargador de cebado operativo a partir de la memoria principal, estando el código de cebado operativo registrado en una memoria no volátil de solamente lectura del procesador a partir de la primera dirección en la que un contador ordinal del procesador apunta inmediatamente después de reinicialización, y luego - el código del cargador de cebado operativo para cargar (180) en la memoria principal el código de un sistema operativo multitarea, y luego iniciar la ejecución de este sistema operativo a partir de esta memoria principal, estando este sistema operativo configurado para definir el espacio de usuario en una gama de direcciones reducida de la memoria principal, - el sistema operativo para programar la ejecución simultánea de varios programas usuarios por este procesador, en donde: - antes de iniciar la ejecución del cargador de cebado operativo, el código de cebado operativo, ejecutado por el procesador, verifica (158) la autenticidad del código del cargador de cebado operativo a partir de una firma de este código y de una clave criptográfica, e inicia la ejecución de este cargador de cebado operativo solamente si el código es auténtico, - el cargador de cebado operativo también carga (170) el código del módulo informático en la memoria principal, antes de iniciar la ejecución del sistema operativo, en una gama de direcciones de la memoria principal ubicada fuera de dicha gama de direcciones reducida, - en el instante de su ejecución, el cargador de cebado operativo configura (176) un coprocesador de seguridad, presente en el interior del circuito integrado del procesador, de manera que verifique la autenticidad del código del módulo informático en función de una firma proporcionada con el código de este módulo y de una clave criptográfica, - después de iniciar la ejecución del sistema operativo, el coprocesador de seguridad verifica (178) automáticamente en el intervalo preestablecido la autenticidad del código cargado del módulo informático y se evita la ejecución del módulo informático si no es auténtico, utilizando este coprocesador, a este propósito, su propia memoria no volátil y su propia memoria de acceso aleatorio para ejecutar, sin tener que recurrir a la memoria principal, esta verificación de la autenticidad del código del módulo informático, estando esta memoria no volátil y esta memoria de acceso aleatorio solamente accesibles por el coprocesador de seguridad, y - después de su iniciación, el sistema operativo redirige (194) una llamada a este módulo informático a partir de un programa de usuario hacia la dirección de la memoria principal en donde el código de este módulo informático se ha cargado antes del inicio de la ejecución del sistema operativo utilizando un sistema de ficheros específico del sistema operativo que asocia automáticamente la dirección del módulo informático en el espacio de la memoria virtual del programa del usuario con la dirección física del módulo informático en la memoria principal.

Description

DESCRIPCION
Método de carga de un código de al menos un módulo informático
La invención se refiere a un método para cargar un código de al menos un módulo informático en una memoria principal mediante un procesador de seguridad.
La invención tiene también por objeto:
- un método para recibir contenido multimedia codificado,
- un soporte de registro de información para la puesta en práctica de estos métodos,
- un terminal para la puesta en práctica de estos métodos.
La memoria principal también se conoce bajo en nombre de "memoria viva". Se trata de una memoria de acceso aleatorio comúnmente referida por el acrónimo RAM (Random Access Memory - Memoria de Acceso Aleatorio). Por lo general, es una memoria volátil, es decir, cuya información se borra mediante una desconexión. La memoria principal permite accesos rápidos en lectura y escritura. Esta es la razón por la que las instrucciones de un programa a ejecutar por el procesador de seguridad se cargan en esta memoria a partir de una o más memorias masivas en las que se registran inicialmente. Las memorias masivas son generalmente memorias no volátiles que tienen grandes capacidades de registro de información, pero lentas en lectura y escritura. En consecuencia, no es posible ejecutar un programa directamente a partir de las instrucciones registradas en la memoria masiva.
La invención se aplica en particular al dominio del control de acceso para el suministro de contenido multimedia de pago tal como televisión de pago.
En esta descripción, se designa más concretamente por "contenido multimedia", un contenido de audio y/o contenido visual que se devolverá en una forma directamente perceptible y comprensible por un ser humano. Normalmente, el contenido multimedia corresponde a una sucesión de imágenes que forman una película, un programa de televisión o publicidad. Un contenido multimedia también puede ser un contenido interactivo tal como un juego.
Para asegurar y enviar la visualización de contenido multimedia bajo ciertas condiciones, como la suscripción de un abonado que paga, por ejemplo, los contenidos multimedia se transmite bajo la forma codificada y no de forma no codificada. En esta descripción, se dice que el canal está "codificado" cuando el contenido multimedia transmitido en este canal es objeto de codificación.
Más concretamente, cada contenido multimedia se divide en una sucesión de criptoperiodos. Durante toda la duración de un criptoperiodo, las condiciones de acceso al contenido multimedia codificado permanecen invariables. En particular, durante toda la duración de un criptoperiodo, el contenido multimedia se codifica con la misma palabra de control. Generalmente, la palabra de control varía de un criptoperiodo a otro.
Además, la palabra de control generalmente es específica de un contenido multimedia, estando este último aleatoriamente o pseudo aleatoriamente extraído. En consecuencia, si en un instante dado, N contenidos multimedia se transmiten simultáneamente en N canales, existen N palabras de control diferentes e independientes que se utilizan para codificar uno de estos contenidos multimedia.
En este caso, los términos "codificar" y "cifrar" se consideran como sinónimos. Es lo mismo para los términos "descodificar" y "descifrar".
El contenido multimedia sin codificar corresponde al contenido multimedia antes de que este último sea codificado. Ello puede ser comprendido directamente por un ser humano sin tener que recurrir a operaciones de descodificado y sin que su visualización sea sometida a ciertas condiciones.
Las palabras de control necesarias para descodificar los contenidos multimedia se transmiten de manera sincronizada con los contenidos multimedia. Por ejemplo, las palabras de control necesarias para descodificar el téximo criptoperiodo son recibidas por cada terminal durante el (t-1)-ésimo criptoperiodo. Para ello, por ejemplo, las palabras de control se multiplexan con el contenido multimedia codificado.
Para asegurar la transmisión de las palabras de control, estas últimas se transmiten a los terminales bajo la forma de criptogramas contenidos en mensajes ECM (Mensaje de Control de Derechos).
En este caso se designa por "criptograma" a un dato, una información, que por sí sola, es insuficiente para encontrar el dato no codificado. Para encontrar el dato no codificado, por ejemplo, la palabra de control que permite descodificar directamente el contenido multimedia, su criptograma debe combinarse con una información secreta. Por ejemplo, el criptograma de un dato se obtiene cifrando los datos de forma no codificada con una clave criptográfica. En este caso, la información secreta es la clave criptográfica que permite descifrar este criptograma. Un criptograma también puede ser una referencia al dato registrado en una tabla que contiene una multitud de datos posibles. En este caso, la información secreta es la tabla que asocia a cada referencia un dato no codificado.
La información secreta debe ser guardada en un lugar seguro. Para ello, ya se ha propuesto registrar la información secreta en procesadores de seguridad tales como tarjetas inteligentes conectadas directamente a cada uno de los terminales.
Sin embargo, el uso de tarjetas inteligentes tiene una serie de desventajas. En particular, si se descubre una brecha de seguridad importante en las tarjetas inteligentes, éstas últimas deben sustituirse físicamente por nuevas tarjetas inteligentes. Ello es difícil de poner en práctica a gran escala.
Para subsanar este inconveniente, se ha propuesto reemplazar los terminales provistos con tarjetas inteligentes por terminales sin tarjeta, también conocido bajo el término inglés "cardless terminal" (“terminal sin tarjeta”).
En estos terminales, la tarjeta inteligente puede sustituirse por un módulo informático ejecutado por un procesador de seguridad del terminal. Estos terminales conocidos pueden estar provistos de:
una memoria principal,
un procesador de seguridad que se presenta bajo la forma de un circuito integrado en donde se pone en práctica un microprocesador capaz de ejecutar instrucciones registradas en la memoria principal, un coprocesador de seguridad, una memoria no volátil y una memoria de acceso aleatorio accesibles solamente por el coprocesador de seguridad, estando este procesador conectado a la memoria principal por intermedio de un bus de datos,
- un código de un sistema operativo multitarea capaz de programar la ejecución simultánea de varios programas usuarios cuando es ejecutado por el procesador,
- un código de un cargador de cebado operativo capaz de cargar el código del sistema operativo multitarea en la memoria principal y luego iniciar el funcionamiento de este sistema operativo a partir de esta memoria principal cuando se ejecuta por el procesador,
- instrucciones de un código de cebado operativo que carga el código del cargador de cebado operativo en la memoria principal cuando estas instrucciones son ejecutadas por el procesador, siendo estas instrucciones registradas en la memoria no volátil del coprocesador a partir de la primera dirección en la que se encuentra un contador ordinal del procesador inmediatamente después de cada reinicialización de este procesador,
- una o varias memorias no volátiles que contienen el código del módulo informático.
En consecuencia, estos terminales tienen una arquitectura cercana a la de un ordenador convencional. En particular, para poder ejecutarse, el código del módulo informático debe cargarse en la memoria principal del terminal. Por "código" se entiende el código ejecutable o interpretable por el intérprete nativo o por una máquina virtual de bajo nivel, incorporada en el procesador de seguridad.
Para este propósito, en los métodos conocidos, el procesador de seguridad ejecuta:
- el código de cebado operativo que carga, en la memoria principal, el código del cargador de cebado operativo y luego, inicia la ejecución de este cargador de cebado operativo a partir de la memoria principal, y luego - el código del cargador de cebado operativo para cargar en la memoria principal el código del sistema operativo multitarea configurado para usar solamente una gama de direcciones reducida de la memoria principal, y luego comenzar a ejecutar ese sistema operativo a partir de esta memoria principal,
- el sistema operativo para programar la ejecución simultánea de varios programas usuarios por este procesador. A continuación, el sistema operativo inicia la ejecución del módulo informático y configura mecanismos de seguridad para impedir que el código del módulo informático se corrompa o se falsifique.
Los sistemas operativos son cada vez más complejos. En consecuencia, existe una probabilidad importante de que exista disfunciones en estos sistemas operativos. Estas disfunciones se conocen bajo el término de "anomalías". Este mal funcionamiento puede aprovecharse para eliminar los mecanismos de seguridad que protegen el módulo informático. En consecuencia, es difícil garantizar que no haya disfunciones de seguridad cuando el módulo informático está cargado por un sistema operativo. Esta garantía es tanto más difícil de dar ya que los desarrolladores de los sistemas operativos son personas diferentes de las que desarrollan el módulo informático. Además, los intentos de análisis criptográfico del módulo informático deben hacerse más difíciles.
El estado de la técnica es también conocido a partir del documento US2009/257595A1 que describe un método y un dispositivo para iniciar de forma segura componentes informáticos, el documento US2009/290712A1 que describe un procesador en donde el módulo informático ha sido protegido se registra en una memoria instantánea segura encriptada y esta memoria segura es accesible solamente por un bus privado, EP1868127A1, US2009/193230A1, US2007/113088A1.
La invención tiene como objeto subsanar al menos una de estas desventajas. En consecuencia, tiene por objeto un método para cargar un código de al menos un módulo informático en una memoria principal conforme con la reivindicación 1.
En el método anterior, la tarea de cargar el módulo informático no se deja al sistema operativo. Ello garantiza que no se puedan aprovechar las disfunciones del sistema operativo para impedir cargar este módulo informático o también para cargar un módulo informático modificado en la memoria principal.
Además, el módulo informático está registrado en una gama de direcciones no utilizable por el sistema operativo. En consecuencia, ningún programa de usuario puede acceder al código del módulo informático sin pasar por el sistema de ficheros específico. De hecho, si un programa de usuario intenta leer o escribir fuera de la gama de direcciones utilizable por el sistema operativo sin utilizar el sistema de ficheros específico, ello produce sistemáticamente un error que impide dicha lectura o escritura. En consecuencia, el acceso al código del módulo informático está protegido por el propio sistema operativo. En particular, ya no es posible explotar los errores del sistema operativo para acceder al código del módulo informático. El criptoanálisis del código del módulo informático se hace así más difícil.
Las formas de realización de este método de carga pueden incluir una o más de las características de las reivindicaciones dependientes.
Estas formas de realización del método de carga presentan también las siguientes ventajas:
- el hecho de que el código de cebado operativo, que se registra en la memoria no modificable, autentifique el cargador de cebado operativo hace que sea difícil intentar modificar el cargador de cebado operativo;
- el hecho de que el cargador de cebado operativo, que ha sido autenticado previamente por el código de cebado operativo, active la autenticación del módulo informático hace que sea muy difícil cualquier modificación malintencionada del código del módulo informático;
- el hecho de que las instrucciones del código del módulo informático registrado en la memoria principal ya no sean descifradas más que en el interior del circuito integrado del procesador permite preservar la confidencialidad de este código;
- el hecho de registrar en una memoria masiva el módulo informático directamente bajo forma cifrada con la clave utilizada para ocultar el código de este módulo informático, evita una operación de descifrado al cargar el código del módulo informático a partir de la memoria masiva hacia la memoria principal;
- el hecho de que los datos generados por el módulo informático durante su ejecución sean registrados en la memoria principal en una gama de direcciones ocultada por el coprocesador hace posible preservar la confidencialidad de estos datos;
- el hecho de que el cargador de cebado operativo, que a su vez ha sido autenticado previamente por el código de cebado operativo, active la autenticación del código del sistema operativo hace que sea muy difícil cualquier modificación malintencionada de este sistema operativo para sustituir las llamadas al módulo informático por llamadas hacia otro software;
- cargar el código del módulo informático en una gama continua de direcciones facilita la verificación de su autenticidad y el ocultamiento de su código en la memoria principal.
La invención también se refiere a un método de recepción de contenido multimedia codificado según la reivindicación 10.
La invención también se refiere a un soporte de registro de información que comprende instrucciones para la puesta en práctica de uno de los métodos anteriores, cuando estas instrucciones son ejecutadas por un procesador de seguridad electrónico.
La invención también se refiere a un terminal según la reivindicación 12.
Las formas de realización de este terminal pueden incluir la característica de la reivindicación dependiente del terminal.
Otras características y ventajas de la invención se harán evidentes a partir de la siguiente descripción dada únicamente con fines informativos y de ninguna manera limitativa y con referencia a los dibujos adjuntos, en donde: La Figura 1 es una ilustración esquemática de un sistema para transmitir y recibir contenido multimedia codificado; 5
La Figura 2 es una ilustración esquemática de una unidad central puesta en práctica en el sistema de la Figura 1; La Figura 3 es un diagrama de flujo de un método para cargar un código de un módulo informático en una memoria principal de la unidad central de la Figura 2;
La Figura 4 es un diagrama de flujo de un método para recibir contenido multimedia codificado; y
La Figura 5 es un diagrama de flujo de una variante del método de la Figura 3.
0 En estas figuras, se utilizan las mismas referencias para designar los mismos elementos.
En la siguiente descripción, las características y funciones bien conocidas por los expertos en la técnica no se describen en detalle. Además, la terminología utilizada es la de los sistemas de acceso condicional al contenido multimedia. Para obtener más información sobre esta terminología, el lector puede consultar el siguiente documento: "Modelo funcional del sistema de acceso condicional", Revisión de la EBU, Unión Europea de Radiodifusión Técnica, Bruselas, BE, N° 266, de 21 de diciembre de 1995.
5 La Figura 1 representa un sistema 2 para transmitir y recibir contenidos multimedia codificados. Los contenidos multimedia transmitidos son contenidos multimedia linealizados. Por ejemplo, un contenido multimedia corresponde a una secuencia de un programa audiovisual, tal como un programa de televisión o una película.
Los contenidos multimedia no codificados están generados por una o más fuentes 4 y se transmiten a un dispositivo de transmisión 6. El dispositivo 6 transmite los contenidos multimedia simultáneamente hacia una multitud de terminales de recepción por intermedio de una red de transmisión de información 8. El contenido multimedia de transmisión se sincroniza temporalmente entre sí para, por ejemplo, respetar una gama preestablecida de q programas.
La red 8 suele ser una red de larga distancia para transmitir información, tal como la red Internet o una red de satélites o cualquier otra red de transmisión como la que se usa para la transmisión de televisión digital terrestre (TDT).
Para simplificar la Figura 1, solamente se muestran tres terminales de recepción 10 a 12.
El dispositivo 6 comprende un codificador 16 que codifica los contenidos multimedia que recibe. El codificador 16 procesa contenido multimedia digital. Por ejemplo, este codificador funciona conforme con la norma MPEG2 (Grupo 5 de Expertos de Imágenes en Movimiento-2) o la norma ITU-T H264.
Los contenidos multimedia comprimidos se dirigen hacia una entrada 20 de un codificador 22. El codificador 22 codifica cada contenido multimedia comprimido para condicionar su visualización bajo ciertas condiciones, como la compra de un ticket de acceso por parte de los usuarios de los terminales de recepción. Los contenidos multimedia codificados se reproducen en una salida 24 conectada a la entrada de un multiplexor 26.
El codificador 22 codifica cada contenido multimedia comprimido usando una palabra de control CW¡,t que se le suministra, y un sistema 28 de acceso condicional, por un generador 32 de claves. El sistema 28 es más conocido 0 bajo el acrónimo CAS (Sistema de Acceso Condicional). El índice i es un identificador del canal en donde se transmite el contenido multimedia codificado y el índice t es un número de serie que identifica el criptoperiodo codificado con esta palabra de control.
Normalmente, esta codificación cumple con un estándar como DVB-CSA (Transmisión de Vídeo Digital - Algoritmo de Cifrado Común), ISMA Cryp (Internet Streaming Media Alliance Cryp), (SRTP) Protocolo de Transporte Seguro en Tiempo Real, AES (Estándar de Cifrado Avanzado), ... etc.
Para cada canal i, el sistema 28 genera mensajes ECM¡,t (Mensaje de Control de Derechos) que contiene al menos 5 el criptograma CW* t previamente calculado, de la palabra de control CW¡,t generada por el generador 32 y utilizada por el codificador 22 para codificar el criptoperiodo t del canal i. Estos mensajes y los contenidos multimedia codificados son multiplexados por el multiplexor 26, este último proporcionado respectivamente por el sistema de acceso condicional 28 y por el codificador 22, antes de ser transmitidos en la red 8.
El sistema 28 también se inserta en cada ECM:
Los criptogramas CW* t y CW*¡ t+i, calculados por el sistema 28, las palabras de control CW¡t y CW¡t+i que permiten descodificar los criptoperíodos inmediatamente consecutivos t y t 1 del canal i,
Condiciones de acceso de CA que se compararán con los títulos de acceso adquiridos por el usuario, y
una firma o una redundancia criptográfica MAC que permiten verificar la integridad del mensaje ECM.
El mensaje ECM que contiene el par de palabras de control CW¡t/CW¡t+i se indica como ECM¡,t en el resto de la descripción.
En este caso, el índice t también identifica el criptoperiodo CP¡t decodificable utilizando la palabra de control CW¡,t contenida en el mensaje ECM¡t. El índice t es único para cada criptoperiodo CP¡t.
’ ’
A modo ilustrativo, en este caso, la codificación y multiplexión de los contenidos multimedia está conforme con el protocolo DVB-Simulcrypt (ETSI TS 103197).
En el ejemplo, los terminales 10 a 12 son idénticos. Además, a partir de entonces, solamente el terminal 10 se describe con más detalle.
El terminal 10 se describe aquí en el caso particular en donde es capaz de descodificar simultáneamente un solo canal i. Para este fin, el terminal 10 comprende:
una unidad central 60 que permite descodificar el canal i, y
un receptor 70 de contenido multimedia transmitidos, conectado a una entrada de la unidad central 60.
La unidad 60 descifra el canal i para mostrarlo en una visualizador 84.
Por ejemplo, la visualizador 84 es un televisor, un ordenador o también un teléfono fijo o móvil. En este caso, la pantalla es una televisión.
En la Figura 1, las diversas funcionalidades de la unidad 60 se muestran bajo forma de bloques funcionales. La arquitectura de hardware de la unidad 60 que hace posible realizar estos diferentes bloques funcionales se describe con referencia a la Figura 2. La unidad 60 comprende un demultiplexor 72 que transmite por un lado el contenido multimedia a un descodificador 74 y, por otro lado, los mensajes ECMit y EMM (Mensaje de Administración de Derechos) a un módulo 76 de acceso condicional al contenido multimedia.
El descodificador 74 descodifica el contenido multimedia codificado a partir de la palabra de control transmitida por el módulo 76. El contenido multimedia descifrado se transmite a un decodificador 80 que lo decodifica. El contenido multimedia descomprimido o decodificado se transmite a una tarjeta gráfica 82 que controla la visualización de este contenido multimedia en el visualizador 84 provisto de una pantalla 86.
El visualizador 84 muestra sin codificar el contenido multimedia en la pantalla 86.
La unidad 60 procesa, entre otras cosas, información confidencial tales como claves criptográficas. Para preservar la confidencialidad de esta información, está diseñada para ser lo más resistente posible frente a las tentativas de ataques realizados por piratas informáticos.
La unidad 60 está conectada a una memoria masiva 78 en la que se registran, de forma no volátil, en particular, datos y códigos de diferentes programas que se ejecutarán para descifrar los criptogramas CW*i,t.
La Figura 2 muestra con más detalle la unidad 60. En este caso, la unidad 60 está constituida por:
- un procesador electrónico de seguridad 90,
- una memoria principal 92,
- una memoria no volátil 94,
- buses de datos y direcciones 96 que conectan el procesador 90 a las memorias 78, 92, 94 y al receptor 70. El procesador 90 es un procesador programable capaz de ejecutar instrucciones registradas en la memoria 78. Para este propósito, el procesador 90 incorpora un microprocesador principal 99 y diferentes coprocesadores, cada uno dedicado a una tarea específica.
En esta forma de realización, a modo ilustrativo, el procesador 90 comprende un coprocesador específico para cada uno de los bloques funcionales 72, 74, 80 y 82 de la Figura 1. En la Figura 2, estos coprocesadores tienen las mismas referencias numéricas que el bloque funcional correspondiente en la Figura 1. En consecuencia, el procesador 90 comprende:
- un coprocesador 72 para demultiplexar los flujos multimedia recibidos por el receptor 70,
- un coprocesador 74 para el descifrado los contenidos multimedia,
- un coprocesador 80 para decodificar los contenidos multimedia, y
- un coprocesador 82 para la visualización de vídeo.
Cada uno de estos coprocesadores es capaz de ejecutar instrucciones en paralelo con las ejecutadas por el microprocesador 99. En consecuencia, dichos coprocesadores hacen posible ejecutar tareas más rápido que si solamente se usara el microprocesador 99.
En este caso, el procesador 90 se presenta bajo la forma de un solo circuito integrado en donde se realizan, a la vez, tanto el microprocesador 99 como los diversos coprocesadores. Este circuito integrado está alojado en una sola carcasa. Normalmente, el microprocesador 99 y los diferentes coprocesadores están registrados en la misma pieza de silicio. Dicho procesador también se conoce como "sistema en circuito integrado" o bajo el acrónimo inglés de SoC ("System on Chip").
El microprocesador 99 tiene todos los elementos de un microprocesador convencional. En particular, el microprocesador 99 incorpora una unidad aritmética y lógica y diferentes registros para ejecutar las instrucciones registradas en la memoria principal 92. Uno de estos registros contiene la dirección de la siguiente instrucción a ejecutar. Este registro también se conoce bajo el término de contador ordinal.
El procesador 90 está aquí calificado como un procesador de seguridad puesto que también incorpora un coprocesador de seguridad 100. Un ejemplo de un procesador de seguridad se describe en la solicitud de patente US20050169468.
El coprocesador 100 es configurable para realizar, de forma autónoma, una serie de tareas tales como la ejecución de funciones criptográficas. Por ejemplo, este coprocesador 100 está equipado, a este efecto:
- de su propia unidad aritmética y lógica,
- de una memoria no volátil 102 accesible en solamente lectura, y
- de una memoria de acceso aleatorio 103.
Las memorias 102 y 103 solamente son accesibles por el coprocesador 100. En particular, ningún programa, ejecutado por el procesador 90 y cuyo código se carga a partir de una memoria externa al procesador 90, puede acceder al contenido de estas memorias 102 y 103.
La memoria 102 contiene claves criptográficas y los códigos ejecutables de las funciones criptográficas usadas durante la puesta en práctica del método de la Figura 3.
En este caso, la memoria 102 contiene, en particular, las siguientes claves criptográficas:
- las claves Koc1 y Koc2 se utilizan para ocultar, respectivamente, una primera y una segunda gamas de la memoria 92,
- una clave KACS que permite descifrar el código de un módulo ACS,
- claves públicas KPubOS, KPubBL y KPubACS que corresponde, respectivamente, a las claves privadas KPrivOS, KPrivBL y KPrivACS utilizadas para verificar las firmas.
La memoria 102 comprende, en particular, códigos ejecutables para realizar:
- la autenticación de un contenido de la memoria principal 92 o memorias 78 y 94, y
- la ocultación de un contenido de la memoria principal 92.
Más concretamente, la memoria 102 incluye un código ejecutable para iniciar el sistema y autentificar el contenido de una gama de datos registrados en la memoria 92 o 94 cuando es ejecutado por el coprocesador 100. Esta función, aquí denominada "control de integridad dinámica", admite en particular, como parámetros de entrada:
- las direcciones físicas del principio y del final de la gama de datos en la memoria, y
- la dirección donde se encuentra la firma que permite verificar la autenticidad de los datos entre las direcciones de inicio y final.
El control de integridad dinámica devuelve el valor "verdadero" si el contenido de la gama de datos entre las direcciones de inicio y final corresponde efectivamente a la firma indicada. En caso contrario, esta función devuelve el valor "falso".
Una vez establecida, la ejecución del control de integridad dinámica, se activa en un intervalo periódico por el coprocesador 100. Cuando esta función se ha configurado y activado, se dice que la gama de datos identificada por ^ sus direcciones de inicio y de final en memoria se ha puesto bajo control dinámico de integridad.
La memoria 102 comprende el código ejecutable de una función de ocultación de los datos contenidos en una gama continua de direcciones en la memoria principal 92. Esta función de ocultación admite en particular como parámetro de entrada las direcciones del principio y del final de la gama. Cuando esta función está activada, cada vez que el procesador 90 escribe un dato en esta gama de direcciones, el coprocesador 100 ejecuta la función de ocultación para cifrar estos datos antes de que se depositen en el bus 96. Los datos se registran entonces bajo forma cifrada en la memoria 92. En consecuencia, solamente los datos cifrados fluyen fuera del procesador 90. De manera similar, cada vez que el procesador 90 lee un dato en esta gama de direcciones, el coprocesador 100 descifra los datos _ encriptados recibidos a través del bus 96 antes de ser transmitidos para su procesamiento, por ejemplo, al 5 microprocesador 99 o a uno de los coprocesadores 72, 74, 80 y 82.
El hecho de que una gama de datos sea ocultada por el coprocesador 100 es, por lo tanto, totalmente transparente para el microprocesador 99 y para cualquier otro coprocesador del procesador 90. De hecho, el microprocesador 99, como los otros coprocesadores, está completamente eximido de estas operaciones de cifrado y descifrado de los datos escritos o leídos en la memoria 92. El ocultamiento de los datos contenidos en la memoria principal permite conservar la confidencialidad de estos datos, incluso si la memoria principal puede ser leída por cualquier software espía.
0 Cuando el coprocesador 100 está configurado para ocultar una gama de datos, se dice que esta gama o sección de memoria está ocultada.
Los códigos y los datos registrados en la memoria 102 están protegidos porque están registrados en una memoria de solamente lectura y esta memoria no es volátil. Por otro lado, el contenido de la memoria 102 no tiene necesidad copiarse en la memoria principal 92 para permitir la ejecución de estos algoritmos de cifrado y descifrado. De hecho, el coprocesador 100 incluye internamente todos los componentes necesarios para permitir la ejecución de los códigos ejecutables registrados en la memoria 102 sin que sea necesario copiarlos en otra memoria externa como, por ejemplo, la memoria principal 92.
5
La memoria 94 es una memoria no volátil. Por ejemplo, se trata de una memoria "flash" (instantánea). Esta memoria 94 contiene, en este caso, el código 104 de un cargador de cebado operativo así como la firma 106 de este cargador de cebado operativo usando la clave privada Kppíybl. El cargador de cebado operativo 104 se describe con más detalle con referencia a la Figura 3.
La memoria principal 92 es típicamente una memoria de acceso aleatorio (RAM). Esta memoria 92 también es típicamente volátil.
La memoria principal 92 contiene las instrucciones y los datos ejecutados por el procesador 90.
En la Figura 2, se muestra una partición particular de la memoria 92. Más concretamente, la memoria 92 está particionada:
- en una sección 110 reservada para el sistema operativo,
- en una sección 112 reservada para registrar el código de un módulo ACS que se describe con más detalle con referencia a las Figuras 3 y 4,
- en una sección 114 reservada para registrar los datos generados por el módulo ACS durante su ejecución, y - de forma ocasional, en una o más secciones adicionales 116 utilizadas para otras aplicaciones, como para el procesamiento de vídeo.
La Sección 110 está ella misma dividida en dos subsecciones 118 y 120. La subsección 118 contiene el código del núcleo. La subsección 120 es utilizada por el sistema operativo para cumplir con los diferentes requisitos de memoria, incluidos los de los programas usuarios.
La memoria 78 es una memoria masiva tal como un disco duro u otro dispositivo similar. Se trata de una memoria no volátil a partir de la cual no es posible ejecutar directamente el código ejecutable de un programa.
En este caso, esta memoria 78 comprende:
- el código 126 del módulo ACS.
- el código 128 del sistema operativo.
- una firma 130 del código 126 del módulo ACS obtenida usando la clave privada KPrivACS, y
- una firma 132 del código 128 obtenida con la clave privada Kprivos.
En la memoria 78, el código 126 se registra bajo forma cifrada usando la clave Kacs.
En este caso, el sistema operativo es una versión 2.6.23 del sistema operativo Linux® que integra varias características que ahora se describirán. Estas características no requieren ninguna modificación de las fuentes existentes del núcleo Linux. Se pueden agregar al núcleo mediante recopilación o bajo forma de módulos del núcleo Linux.
El sistema operativo Linux genera un mecanismo de memoria virtual. Tales mecanismos son bien conocidos y aquí solamente se dan algunas explicaciones. Normalmente, este mecanismo de memoria virtual es aquí un mecanismo de paginación de la memoria principal 92. De hecho, las direcciones de datos de un programa de usuario se codifican en N bits de modo que el espacio de dirección virtual de un programa se extiende entre 0 y 2N, donde N es un número entero. Generalmente, N es un número entero mayor o igual que dieciséis o treinta y dos. En consecuencia, el espacio de dirección virtual es mucho más grande que el número de direcciones físicas disponibles en la memoria principal 92. Para subsanar este inconveniente, el sistema operativo carga desde la memoria 78 hacia la memoria principal 92 solamente páginas en donde se encuentran datos o instrucciones que se requieren por el programa de usuario en cursos de ejecución. Las otras páginas de datos que forman el programa de usuario permanecen en la memoria 78. Más concretamente, bajo Linux las páginas de programas se cargan solamente en la subsección de usuario 120. Los programas que se ejecutan a partir de la subsección de usuario son denominados aquí "programas usuarios".
El mecanismo de paginación en consecuencia se ocupa de:
- cargar automáticamente en la memoria principal las páginas necesarias para la ejecución del programa de usuario, y
- convertir las direcciones virtuales, expresadas en el espacio de direcciones virtuales del programa del usuario, en direcciones físicas en la memoria 92 donde se encuentran los datos requeridos.
Cuando una página es solicitada por un programa, el mecanismo de paginación asigna una página física libre de forma no determinista y recopila los datos de la página registrados en la memoria 78 hacia la página de memoria asignada.
En consecuencia, cuando un programa de usuario se ejecuta a partir de un sistema operativo, es difícil predecir por anticipado en donde se encontrarán, en la memoria principal, los diferentes segmentos que constituyen un tal programa. Por lo tanto, resulta muy difícil utilizar el coprocesador 100 para solamente la ocultación de estos segmentos, ocultar estos segmentos de una manera diferente de otros segmentos o poner estos segmentos bajo control dinámico de integridad.
A modo ilustrativo, bajo Linux, el espacio de direccionamiento virtual de un programa de usuario se divide en cinco segmentos:
- un segmento de "texto" que contiene el código ejecutable del programa. Este segmento es accesible solamente en ejecución y en lectura;
- un segmento de "datos" que contiene los datos inicializados del programa. Este segmento es accesible en lectura y escritura;
- un segmento "bss" que contiene los datos no inicializados del programa;
- un segmento "Heap", o "Heap" en inglés, de magnitud variable y que se utiliza para asignar memoria al programa que se ejecutará; y
- un segmento "pila" o "Stack" en inglés, utilizado para registrar las variables locales del programa.
5 El sistema operativo también incluye un programador capaz de programar automáticamente la ejecución de varios programas usuarios a lo largo del tiempo. Por ejemplo, en el terminal 10, el programador comparte el tiempo de uso del microprocesador 99 entre los diferentes programas usuarios para simular una ejecución simultánea de estos programas usuarios.
Por último, como cualquier sistema operativo, incluye uno o más sistemas de ficheros. Un sistema de ficheros asocia, a una ruta de acceso, y a un nombre de fichero, el contenido de este fichero en un dispositivo de registro de información tal como la memoria 78. Los sistemas operativos como Linux también hacen posible también definir sistemas de ficheros que no están necesariamente asociados con un dispositivo de hardware de almacenamiento de -| q datos.
Esta facultad se utiliza aquí para definir un sistema de ficheros particular denominado aquí "Sistema de ficheros VMAPPER", además de los sistemas de ficheros tradicionales para acceder al contenido de la memoria 78. El código del sistema de ficheros VMAPPER está integrado en el código 128 del sistema operativo. En consecuencia, se carga al mismo tiempo que el sistema operativo en la sección 118 de la memoria 92.
Este sistema de ficheros VMAPPER corresponde a:
-| g - una ruta de acceso y el nombre de un fichero "LibACS" con la sección de memoria 112, y
- la dirección y el nombre de un fichero "DataACS" con la sección de memoria 114.
El sistema de ficheros VMAPPER gestiona la apertura y el cierre de estos dos ficheros LibACS y DataACS, así como la escritura y la lectura de estos ficheros. Además, el sistema de ficheros VMAPPER también puede gestionar los derechos de acceso a estos ficheros. Un ejemplo de realización de este sistema de ficheros se describe con más detalle haciendo referencia a la Figura 3.
El código 126 del módulo ACS se escribe aquí concretamente para utilizar el fichero DataACS para escribir y leer los 20 datos generados durante su ejecución. Para este propósito, en el código 126 del módulo ACS, las funciones de escritura y de gestión de la memoria están sobrecargadas. A modo ilustrativo, cuando el módulo ACS está escrito en lenguaje C, las funciones "malloc" y "free" se reemplazan, respectivamente, por las funciones propietarias VA-OS-alloc () y VA-OS-free (). Estas dos últimas funciones hacen posible asignar una zona de memoria en el fichero DataACS para registrar datos en él y luego liberarlos. Estas funciones VA-OS-alloc () y VA-OS-free () permiten explotar la sección 114 de la memoria 92 para gestionar el denominado yunque del módulo ACS. En consecuencia, el yunque del módulo ACS se encuentra físicamente en la sección 114.
La carga del código 126 del módulo ACS en la memoria 92 se describirá ahora con referencia a la Figura 3.
25
Inicialmente, durante una etapa 150, el terminal 10 se pone bajo tensión o se reinicializa.
En respuesta, durante una etapa 152, se inicializa el contador ordinal del coprocesador 100. Cuando se inicializa, apunta a la primera línea de instrucción de un código de cebado operativo registrado en la memoria del coprocesador 102. Esta primera línea corresponde, por lo tanto, al valor inicial por defecto del contador ordinal. En una fase 154, el código de cebado operativo se ejecuta antes que cualquier otro software por el coprocesador 100. Para ello, el coprocesador 100 mantiene el microprocesador 99 inactivo. Por ejemplo, mantiene un espacio de 30 reinicialización del microprocesador 99 en un estado de reinicio.
La ejecución del código de cebado operativo por el coprocesador 100 lo lleva a realizar las siguientes etapas.
En una etapa 156, el coprocesador 100 carga el código 104 del cargador de cebado operativo y su firma 106 en la memoria 92.
A continuación, en una etapa 158, verifica la autenticidad del código 104 cargado en la memoria 92. Para este propósito, durante la etapa 158, el código de cebado operativo tiene un formato predefinido que permite proporcionar 35 al coprocesador 100 las direcciones de inicio y final de la gama de direcciones en las que se registró el código 104 en la memoria 92 y la dirección de la firma 106.
La verificación de la autenticidad de una gama de datos se realiza, por ejemplo, de la siguiente manera. En primer lugar, el coprocesador aplica una función predeterminada de intrusión, mejor conocida bajo el término inglés "Hash", a los datos contenidos en la gama de dirección especificada para obtener una primera huella digital de esos datos.
Posteriormente, el coprocesador 100 descifra con una clave pública la firma especificada para obtener una segunda huella digital. A continuación, el coprocesador compara la primera y la segunda huella digital. Si estas son idénticas, el contenido de la gama de datos se considerará como auténticos. En caso contrario, el contenido de esta gama de datos no se autentificará correctamente. Para verificar la autenticidad del código 104, el coprocesador 100 usa la 5 clave KpubBL.
Cuando el contenido de la gama de datos no se autentifica correctamente, el terminal 10 se reinicializa y el proceso vuelve al etapa 150.
En una etapa 162, si el código 104 se autentifica correctamente, el coprocesador 100 inicializa el microprocesador 99 con el fin de que este último ejecute el cargador de cebado operativo que se acaba de autentificar en la memoria principal. Para este propósito, por ejemplo, se coloca el contador ordinal del microprocesador 99 en la dirección de memoria física de la primera instrucción del cargador de cebado operativo y libera el espacio de reinicialización del 10 microprocesador 99.
A partir de este momento comienza una fase 166 en la que el microprocesador 99 ejecuta el código del cargador de cebado operativo.
Inicialmente, durante una etapa 168, el cargador de cebado operativo configura el coprocesador 100 para ocultar las secciones 112 y 114 de la memoria 92. En este caso particular, el algoritmo de cifrado elegido para ocultar la sección 112 es más resistente que el elegido para ocultar la sección 114. Por el contrario, el algoritmo de cifrado más resistente también incluye un mayor número de instrucciones para cifrar y descifrar un dato. En consecuencia, -|5 es más largo de ejecutar. En este caso, las claves de cifrado utilizadas para ocultar las secciones 112 y 114 son, respectivamente, las claves Koci y K0C2-Posteriormente, durante una etapa 170, el cargador de cebado operativo carga el código 126 del módulo ACS en la memoria 92.
Durante una operación 172, el cargador de cebado operativo descifra el código 126 cargado en la memoria 92 con la clave Kacs y copia el código ejecutable así descifrado en la sección 112. Por lo general, las operaciones de descifrado con la clave Kacs son realizadas por el coprocesador 100.
20 Puesto que la sección 112 está ocultada, el coprocesador 100 cifra con la clave Koc1, cada instrucción descifrada con la clave Kacs antes de copiarla en la sección 112. En consecuencia, como resultado de la etapa 172, el código ejecutable del módulo ACS se registra en la sección 112 bajo forma cifrada con la clave Koc1.
Durante una etapa 176, el cargador de cebado operativo configura el coprocesador 100 para poner la sección 112 bajo el control dinámico de integridad. Para este propósito, las direcciones de inicio y final de la sección 112, así como la dirección de la firma 130, se proporcionan al coprocesador 100.
En una etapa 178, el coprocesador 100 configurado de este modo verifica la autenticidad del código del módulo ACS 25 contenido en la sección 112. Durante cada verificación, el coprocesador 100:
- descifra el código del módulo ACS con la clave Koc1, luego
- aplica una función hash predeterminada para obtener una primera huella digital del código 126, y por último - compara esta primera huella digital del código del módulo ACS con una segunda huella digital obtenida al descifrar, con el uso de la clave pública KPubAcs la firma 130.
30 Si el código del módulo ACS en la sección 112 no es auténtico, el método vuelve a la etapa 150. En caso contrario, se prosigue el método. Conviene señalar que la etapa 178 se reitera automáticamente, a intervalos periódicos por el coprocesador 100. Ello permite garantizar la autenticidad del código del módulo ACS mientras permanezca cargado en la memoria 92.
En una etapa 180, el cargador de cebado operativo carga el código del sistema operativo 128 en la sección 118. La sección 118 está separada de las secciones 112 y 114.
En una etapa 182, el cargador de cebado operativo configura el coprocesador 100 para colocar la sección 118 bajo 35 el control dinámico de integridad. Para ello, las direcciones de inicio y fin de esta sección así como la dirección de la firma 132 se proporcionan al coprocesador 100.
En una etapa 184, el coprocesador 100 verifica la autenticidad del código 128 cargado en la sección 118 usando la firma 132 y la clave pública KpUbos registrada en la memoria 102. Habida cuenta de que el sistema de ficheros VMAPPER está incorporado al código 128, esta etapa de verificación de la autenticidad del código 128 también permite verificar la autenticidad del sistema de ficheros VMAPPER. El coprocesador 100 lo reitera automáticamente a intervalos predeterminados para garantizar la integridad del código 128 tal como se carga en la sección 118. Si el código 128 cargado en la sección 118 no es auténtico, el terminal se inicializa y el método retorna a la etapa 150.
De lo contrario, el método continúa con la etapa 186. En la etapa 186, el cargador de cebado operativo inicia la ejecución del sistema operativo al pasar en parámetros la magnitud y el emplazamiento de las secciones 112 y 114, y 120 en la memoria principal. En consecuencia, el sistema operativo define el espacio del usuario en la sección 120 y en las secciones externas 112, 114 y también en la sección exterior 116. Después de eso, el cargador de cebado operativo ya no se utilizará hasta que se reinicie el terminal, es decir, hasta que regrese a la etapa 150. En consecuencia, preferiblemente, para liberar el espacio en la memoria 92, el código del cargador de cebado operativo se borra o el espacio de memoria ocupado por el código del cargador de cebado operativo está disponible para escribir, de modo que otras aplicaciones puedan escribir información y así borrar todo o parte de este código.
Se inicia entonces una nueva fase 190 durante la cual se ejecuta el sistema operativo.
En una etapa 192, el sistema operativo carga el sistema de ficheros VMAPPER. La descripción de esta operación se realiza en el caso particular donde el sistema operativo es Linux 2, versión 2.6.23. Se hace con referencia a las funciones y primitivas conocidas de este sistema operativo. Estas funciones y primitivas se resaltan en negrillas en las siguientes líneas y no se explicarán en detalle. En este ejemplo, la funcionalidad proporcionada por el sistema de ficheros VMAPPER se compila en el núcleo. En consecuencia, la etapa 192 se inicia con la inicialización del núcleo. La etapa 192 se inicia mediante el registro del sistema de ficheros definido por el sistema de ficheros VMAPPER. El registro de este sistema de ficheros se realiza en el sistema operativo Linux mediante la llamada a la función register_filesystem ().
El miembro get_sb de la estructura file_system_type transmitido en parámetro de la función register_filesystem () está ubicado en get_sb_single. Esta función genérica de Linux permite declarar que el sistema de ficheros solamente se puede montar una sola vez. Ello garantiza que solamente exista una instancia operativa de este sistema de ficheros en el sistema operativo.
A continuación, el sistema de ficheros se instala. Para ello, una función definida en el código del sistema de ficheros VMAPPER denominada V_fill_super () se pasa como un parámetro de get_sb_single y luego, es objeto de llamada. La función V_fill_super () rellena una estructura del tipo super_block y coloca al miembro s_flags de esta estructura en el valor MS_RDONLY y coloca al miembro s_op de esta estructura para que la edición nuevamente de este sistema de ficheros lo mantenga en lectura solamente.
La función V_fill_super () crea un nuevo ¡nodo con la función newjnode. Este ¡nodo representa el directorio raíz. La función V_fill_super () crea un nuevo ¡nodo con la función newjnode. Este ¡nodo corresponde a la sección 112 y, en consecuencia, al módulo ACS. En este caso, tiene el nombre del "LibACS". Sólo los derechos de lectura se dan en este fichero. Además, solamente se permiten cuatro operaciones en el fichero LibACS: la apertura, la lectura, la función MMAP y la función "liberar".
Cuando se utiliza, se deben leer algunos bytes del fichero LibACS que contiene el módulo ACS. Para ello, la función "read" permite la lectura del fichero LibACS a partir del sistema operativo Linux. Durante esta lectura, la sección 112 se pone en correspondencia con una gama de direcciones de la sección del sistema operativo utilizando la función ioremap. El contenido de los primeros bytes de la sección 112 se copia con la función memcpy_fromio. A continuación, se suprime la correspondencia de direcciones anteriormente establecida con la utilización de la llamada a la función iounmap. Esto permite recuperar los primeros bytes del fichero LibACS para obtener información útil para cargar el módulo ACS.
Por último, se procede a la carga del código del módulo ACS. La carga del código del módulo ACS generalmente se produce cuando se carga un programa de usuario y se declara una dependencia en el fichero libACS.
En la etapa 194, el programa de usuario es cargado por el cargador de programas. Ello declarará la biblioteca libACS presente en el espacio virtual del programa usando la llamada mmap. Esta llamada se pone en práctica en el sistema de ficheros Vmapper usando la función remap_pfn_range. El sistema de ficheros Vmapper asocia así la gama de dirección virtual reservada por el cargador de programas con la biblioteca libACS a la gama de direcciones físicas en la sección 112 donde se copia el módulo ACS. En estas condiciones, cada vez que este programa de usuario llama al módulo ACS, se indica que está en la memoria principal. En consecuencia, esto no causa un error de página y, en consecuencia, el sistema operativo intenta volver a cargar el código 126 en una página de la sección 120. En consecuencia, aunque el código 126 se ha cargado en la memoria principal antes de la ejecución del sistema operativo, los programas usuarios pueden iniciar la ejecución de este módulo ACS como si se hubiera cargado por el sistema operativo. Para este propósito, los programas usuarios llaman al fichero LibACS.
Además, en este caso, el módulo ACS está bajo control dinámico de integridad y su código está oculto. En consecuencia, se mejora la seguridad del terminal 10. Por último, el hecho de que el módulo ACS se haya cargado antes del inicio de la ejecución del sistema operativo garantiza que este módulo ACS se cargue incluso si hay vulnerabilidades de seguridad en el sistema operativo y que se establezcan correctamente los mecanismos de protección del código 126.
La función V_fill_super () también crea un nuevo inodo con la función new_inode correspondiente al segmento de 'yunque'. Este inodo se denomina fichero "DataACS" y corresponde a la sección 114. Sólo se permiten tres operaciones en este inodo, a saber, la apertura, el cierre y la función MMAP.
Durante la ejecución del módulo ACS, los datos confidenciales generados por el módulo ACS se registran y son objeto de lectura a partir del 'yunque' gracias a las funciones VA-OS-alloc () y VA-OS-free (). Estas funciones VA-OS-Alloc () y VA-OS-free () le permiten asignar un bloque de memoria y liberarlo en el fichero DataACS. En consecuencia, los datos confidenciales generados por el módulo ACS se registran en la sección 114 y, en consecuencia, están protegidos, ya que están ocultos automáticamente por el coprocesador 100.
La Figura 4 describe con más detalle un ejemplo de funcionamiento del módulo ACS cuando es ejecutado por el procesador 90.
En una etapa 200, el módulo ACS recibe un mensaje ECMit. Durante una etapa 202, compara los derechos de acceso contenidos en este mensaje ECM con los títulos de acceso preregistrados contenidos, por ejemplo, en su código 126. Si los derechos de acceso no corresponden a los títulos de acceso, el método retorna a la etapa 200 para recibir el siguiente mensaje ECMit. En caso contrario, el método continúa con la etapa 204. En la etapa 204, el módulo ACS extrae el criptograma CW*,t contenido en el mensaje ECMi t recibido. Durante una etapa 206, el módulo ACS descifra el criptograma CW*,t para obtener la palabra de control no codificada CWit. Para ello, por ejemplo, el módulo ACS utiliza una clave registrada en el procesador 90. En una etapa 208, esta palabra de control no codificada CWit se transmite al coprocesador 74.
Posteriormente, el coprocesador 74 usa esta palabra de control no codificada de control para descodificar el contenido multimedia codificado. Ello permite la visualización no codificada de este contenido multimedia codificado en la pantalla 86.
La Figura 5 representa una variante del método de la Figura 3. Para la puesta en práctica del método de la Figura 5, el terminal 10 es idéntico al descrito con referencia a las Figuras 1 y 2, excepto por el hecho de que el sistema operativo incluye un sistema de ficheros VMAPPER modificado, así como un nuevo cargador de programas VBinLoader. Estas dos funcionalidades están integradas con el código ejecutable del núcleo del sistema operativo. En consecuencia, se cargan junto con el sistema operativo en la sección 118.
La funcionalidad VBinLoader es un cargador de programas diseñado para cargar el programa que llama al módulo ACS cuando se solicita su ejecución. Los cargadores de programas están diseñados para registrar datos de programas en los segmentos de memoria correctos en la memoria principal. Dicho cargador de programas es capaz de comprender en dónde se encuentra la información en el fichero del programa que dice dónde está el código ejecutable, los datos y otras informaciones. Es, asimismo, capaz de copiar el programa en la memoria principal y de inicializar los registros e iniciar la ejecución de este programa.
En este caso, el cargador de programas VBinLoader no copia el módulo ACS en la memoria principal, sino que: - asocia la dirección virtual del código ejecutable (segmento "texto") en el espacio de memoria virtual del programa del usuario que llama al módulo ACS a una dirección en la sección 112 donde se encuentra el código ejecutable del módulo ACS,
- asocia la dirección del segmento "bss" en el espacio de memoria virtual del programa del usuario con una gama de direcciones físicas en la sección 114, y
- asocia la dirección de la pila en el espacio de memoria virtual del programa del usuario a una gama de direcciones físicas en la sección 114.
En consecuencia, durante la ejecución del módulo ACS, todos los datos que deben ingresarse en el segmento "bss" o en la pila se registran automáticamente en la sección 114 y, en consecuencia, se ocultan.
El sistema de ficheros VMAPPER se simplifica para poner solamente en correspondencia el nombre del fichero LibACS con la sección 112. En esta forma de realización, no es necesario poner en correspondencia el nombre de un fichero DataACS con la sección de memoria 114.
Además, el código 126 se modifica para que las variables sensibles inicializadas sean de solamente lectura. Por ejemplo, se declaran en el código como siendo constantes con el uso de la instrucción "const".
El código 126 también se modifica para asignar una variable de gran magnitud, aquí denominada VTas, en el segmento "bss". Además, todas las funciones de asignación y liberación de memoria en el ‘yunclue’. tales como las funciones malloc, free y otras funciones utilizadas en el código del módulo ACS se reemplazan por funciones que 5 asignan memoria en la zona del módulo de memoria reservada a la variable VTas. En consecuencia, incluso los ” datos escritos en el ‘yunque’ por el módulo ACS están protegidos, ya que se guardan en la variable VTas de la sección 114. Dichas modificaciones permiten proteger el ‘yunque’ sin requerir la modificación del sistema operativo para gestionar, de manera diferente, el ‘yunque’ de lo que habitualmente está previsto.
El método de la Figura 5 es idéntico al método de la Figura 3, con la excepción del hecho de que las etapas 192 y 194 se sustituyen, respectivamente, por las etapas 220 y 222.
En la etapa 220, el sistema operativo inicializa tanto el sistema de ficheros VMAPPER modificado como el cargador ^q de programas VBinLoader.
En la etapa 222, cuando la ejecución del módulo ACS se solicita por un programa de usuario, el cargador de programas VBinLoader asocia las gamas de direcciones virtuales reservadas al segmento "bss" y a la pila en el espacio de memoria virtual del programa de usuario a gamas de direcciones en la sección 114. Así, durante la ejecución del módulo ACS, los datos generados por este módulo se escriben en la sección 114 y, en consecuencia, el coprocesador 100 los oculta automáticamente. Su confidencialidad se conserva.
El cargador de programas VbinLoader también asocia las direcciones del módulo ACS en el espacio de direcciones ^g virtuales del programa del usuario a las direcciones de la sección 112.
Muchas otras formas de realización son posibles. Por ejemplo, en una variante, el código 126 se registra en una memoria no volátil bajo la forma cifrada con la clave Koci- En estas condiciones, el cargador de cebado operativo puede copiar directamente el código así cifrado en la sección 112. En consecuencia, las etapas que consisten en descifrar el código 126 con la clave Kacs antes de registrarlo en esta sección 112 se pueden omitir en consecuencia. De hecho, como el código 126 está directamente cifrado con la clave Koci, ya está oculto, incluido, en la memoria 78. El sistema operativo también se puede registrar bajo forma cifrada y luego descifrarlo con el cargador de cebado operativo.
0
El sistema operativo puede contener en su código la magnitud y el emplazamiento de las secciones 112 y 114. En consecuencia, no es necesario pasar esta información como un parámetro al iniciar el sistema operativo.
La memoria 102 se puede reemplazar por varias memorias no volátiles distribuidas en el interior del circuito integrado que forma el procesador 90.
De manera similar, el coprocesador 100 puede ponerse en práctica bajo la forma de una asociación de varios coprocesadores distribuidos en el interior del circuito integrado que forma el procesador 90. Por ejemplo, el 5 coprocesador 100 puede incluir un sub-coprocesador para la ocultación de los datos memoria principal y otro subcoprocesador para poner bajo control la integridad dinámica de los datos. Cada uno de los sub-coprocesadores puede tener su propia unidad aritmética y lógica para ejecutar instrucciones en paralelo con las del microprocesador principal 99.
En otra forma de realización, la totalidad o al menos una parte de las funciones del coprocesador 100 se ejecutan utilizando la unidad aritmética y lógica del microprocesador 99. En esta forma de realización, es, por lo tanto, el microprocesador 99 el que por ejemplo, realiza una verificación dinámica de integridad y/o supresión de datos. Para ello, por ejemplo, el código de las funciones correspondientes se carga en la memoria 92. Si el código se carga en la 0 memoria 92, se debe verificar la autenticidad de este código. La verificación de la autenticidad de este código se realiza:
- usando el código de cebado operativo, o
- utilizando las funciones autenticadas por el código de cebado operativo.
En efecto, es el hecho de que el código de cebado operativo no es accesible desde el exterior del circuito integrado y que solamente se ejecuta en el interior del procesador 90, sin utilizar memorias externas, lo que permite obtener 5 un buen nivel de seguridad.
Las secciones 112 y 114 no son necesariamente contiguas en la memoria principal. Del mismo modo, las secciones 112, 114, 118, 120 y 116 no necesitan ser contiguas. Estas secciones también pueden estar dispuestas en un orden diferente al que se muestra en la Figura 2 en la memoria 92.
Si el coprocesador 100 es sustituido por un coprocesador de seguridad capaz de ocultar o poner bajo un control dinámico de integridad una gama discontinua de direcciones, entonces no es necesario que las secciones 112 y 114 correspondan, cada una de ellas, a una gama continua de direcciones físicas en la memoria principal.
Las claves públicas utilizadas para verificar las firmas pueden registrarse en cualquier memoria y no solamente en la memoria 102. Por ejemplo, estas claves públicas se registran en la memoria 78. En este último caso, preferiblemente, las claves públicas se firman con una clave privada cuya clave pública correspondiente se registra en la memoria 102.
En otra forma de realización, en lugar de usar claves públicas para verificar las firmas, se utilizan claves criptográficas secretas. Por ejemplo, una redundancia de código se cifra, utilizando un algoritmo criptográfico simétrico y la clave secreta.
El código 104 también se puede registrar en la memoria 78 y no en la memoria 94. De forma recíproca, el código 126 se puede registrar en la memoria 94 en lugar de la memoria 78. Estos códigos 104 y 126 también se pueden registrar si fuera necesario, en la memoria 102. El código 104 o 126 también se puede ejecutar directamente a partir de la memoria 94.
En el método de la Figura 5, no es necesario sobrecargar las funciones del código del módulo ACS para usar un ‘yunque’ situado en la sección 114. De hecho, como variante, el código del módulo ACS se escribe a partir de tal manera que los datos confidenciales, generados por el módulo ACS durante sus ejecuciones, solamente se registran en la pila o en el segmento "bss".
Lo que se ha descrito anteriormente en el caso particular del módulo ACS se aplica a cualquier módulo informático del cual sea deseable:
- para asegurarse de que está correctamente cargado en la memoria principal,
- para asegurarse de su autenticidad,
- para garantizar la autenticidad del código realmente ejecutado por el procesador y no una copia del código, y/o - para preservar la confidencialidad de su código.
En consecuencia, este modo de carga de un módulo informático puede encontrar aplicación en otras áreas técnicas, tal como los dominios de la gestión de los derechos digitales (o DRM, por Digital Rights Management) o antivirus. Por último, el control de integridad del módulo informático se puede poner en práctica independientemente de la ocultación del código y de los datos de este módulo informático.

Claims (13)

REIVINDICACIONES
1. Un método para cargar un código de al menos un módulo informático en una memoria principal mediante un procesador de seguridad, en donde el procesador de seguridad ejecuta:
- un código de cebado operativo que carga (156) en la memoria principal el código de un cargador de cebado operativo y luego inicia (162) la ejecución de este cargador de cebado operativo a partir de la memoria principal, 5 estando el código de cebado operativo registrado en una memoria no volátil de solamente lectura del procesador a partir de la primera dirección en la que un contador ordinal del procesador apunta inmediatamente después de reinicialización, y luego
- el código del cargador de cebado operativo para cargar (180) en la memoria principal el código de un sistema operativo multitarea, y luego iniciar la ejecución de este sistema operativo a partir de esta memoria principal, estando este sistema operativo configurado para definir el espacio de usuario en una gama de direcciones reducida de la memoria principal,
-| q - el sistema operativo para programar la ejecución simultánea de varios programas usuarios por este procesador, en donde:
- antes de iniciar la ejecución del cargador de cebado operativo, el código de cebado operativo, ejecutado por el procesador, verifica (158) la autenticidad del código del cargador de cebado operativo a partir de una firma de este código y de una clave criptográfica, e inicia la ejecución de este cargador de cebado operativo solamente si el código es auténtico,
-|g - el cargador de cebado operativo también carga (170) el código del módulo informático en la memoria principal, v' antes de iniciar la ejecución del sistema operativo, en una gama de direcciones de la memoria principal ubicada fuera de dicha gama de direcciones reducida,
- en el instante de su ejecución, el cargador de cebado operativo configura (176) un coprocesador de seguridad, presente en el interior del circuito integrado del procesador, de manera que verifique la autenticidad del código del módulo informático en función de una firma proporcionada con el código de este módulo y de una clave criptográfica,
después de iniciar la ejecución del sistema operativo, el coprocesador de seguridad verifica (178) 20 automáticamente en el intervalo preestablecido la autenticidad del código cargado del módulo informático y se evita la ejecución del módulo informático si no es auténtico, utilizando este coprocesador, a este propósito, su propia memoria no volátil y su propia memoria de acceso aleatorio para ejecutar, sin tener que recurrir a la memoria principal, esta verificación de la autenticidad del código del módulo informático, estando esta memoria no volátil y esta memoria de acceso aleatorio solamente accesibles por el coprocesador de seguridad, y después de su iniciación, el sistema operativo redirige (194) una llamada a este módulo informático a partir de un programa de usuario hacia la dirección de la memoria principal en donde el código de este módulo informático se ha cargado antes del inicio de la ejecución del sistema operativo utilizando un sistema de 25 ficheros específico del sistema operativo que asocia automáticamente la dirección del módulo informático en el espacio de la memoria virtual del programa del usuario con la dirección física del módulo informático en la memoria principal.
2. El método según la reivindicación 1, en donde:
- el cargador de cebado operativo configura (168) un coprocesador de seguridad, presente en el interior del circuito integrado del procesador, para ocultar las instrucciones registradas en una primera gama de direcciones de la memoria principal donde se ha cargado el código del módulo informático, consistiendo la ocultación en 30 mantener bajo forma cifrada, con una clave criptográfica Koc1, las instrucciones del código del módulo informático registradas en esta gama de direcciones, y
- después de iniciar la ejecución del sistema operativo, el coprocesador de seguridad descifra automáticamente con la clave Koc1 cada instrucción leída en esta primera gama de direcciones antes de su ejecución por parte del procesador, el coprocesador utiliza, para este fin, su propia memoria no volátil y su propia memoria de acceso aleatorio para ejecutar, sin recurrir a la memoria principal, este descifrado con la clave Koc1, siendo esta memoria no volátil y esta memoria de acceso aleatorio solamente accesibles por el coprocesador de seguridad.
35 3. El método según la reivindicación 2, en donde el método comprende el registro del código ejecutable del módulo informático bajo forma cifrada con la clave Koc1 en una memoria no volátil y el cargador de cebado operativo carga directamente en la memoria principal este código del módulo informático cifrado con la clave Koc1.
4. El método según una cualquiera de las reivindicaciones 1 a 3, en donde:
- el cargador de cebado operativo configura (168) un coprocesador de seguridad, presente en el interior del circuito integrado del procesador, para ocultar datos registrados en una segunda gama de direcciones de la memoria principal, consistiendo la ocultación en cifrar estos datos, y luego
- en el instante de su ejecución (194), después de la iniciación del sistema operativo, el módulo informático registra datos en esta segunda gama de direcciones, y
- en respuesta, el coprocesador de seguridad cifra cada dato a registrar en esta segunda gama de direcciones, antes de que se deposite en un bus de datos que conecta el procesador a la memoria principal y descifra cada dato leído por el procesador en esta segunda gama de direcciones cuando el procesador lo recibe en el bus de datos antes de su utilización por el procesador, de modo que cada dato registrado en la segunda gama de direcciones de la memoria principal esté presente solamente bajo forma cifrada fuera del circuito integrado que constituye el procesador, el coprocesador utiliza para este fin su propia memoria no volátil y su propia memoria de acceso aleatorio para ejecutar, sin recurrir a la memoria principal, este cifrado y este descifrado, siendo esta memoria no volátil y esta memoria de acceso aleatorio solamente accesibles por el coprocesador de seguridad.
5. El método según una cualquiera de las reivindicaciones 1 a 4, en donde:
- en el instante de su ejecución, el cargador de cebado operativo configura (182) un coprocesador de seguridad, presente en el interior del circuito integrado del procesador, para que verifique la autenticidad del código cargado del sistema operativo en función de una firma proporcionada con el código de este sistema operativo y de una clave criptográfica,
- después de la iniciación de la ejecución del sistema operativo, el coprocesador de seguridad verifica automáticamente la autenticidad del código del sistema operativo en un intervalo predefinido y se evita que el sistema operativo se ejecute si el sistema operativo no es auténtico, este coprocesador utiliza para este propósito su propia memoria no volátil y su propia memoria de acceso aleatorio para ejecutar, sin recurrir a la memoria principal, esta verificación de la autenticidad del código del sistema operativo, siendo esta memoria no volátil y esta memoria de acceso aleatorio solamente accesibles por el coprocesador de seguridad.
6. El método según una cualquiera de las reivindicaciones precedentes, en donde el cargador de cebado operativo carga (170) el código del módulo informático en una gama continua de direcciones de la memoria principal no paginada por el sistema operativo.
7. El método según una cualquiera de las reivindicaciones precedentes, en donde el código del cargador de cebado operativo ya no se ejecuta después del inicio del sistema operativo hasta que se reinicia el procesador de seguridad.
8. Un método según con una cualquiera de las reivindicaciones precedentes, en donde el sistema operativo iniciado configura un mecanismo de memoria virtual entre el espacio del usuario, denominado subsección del usuario, de la memoria principal y una o más memorias masivas.
9. Un método según una cualquiera de las reivindicaciones precedentes, en donde el módulo informático comprende datos o código de una biblioteca de acceso condicional, permitiendo estos datos o este código descifrar un criptograma de una palabra de control presente en un mensaje de ECM (Mensaje de Control de Derechos).
10. Un método para recibir contenido multimedia codificado con palabras de control CWit, estando dicho método constituido por:
- la recepción (200) de un mensaje ECM (Mensaje de Control de Derechos) que contiene un criptograma CW*i,t de la palabra de control CWi,t,
- la carga de un módulo informático en una memoria principal de un terminal de recepción, siendo dicho módulo informático capaz de descifrar el criptograma CW*i,t, para obtener la palabra de control CWi,t, cuando es ejecutado por un procesador conectado a la memoria principal por un bus de datos,
- la ejecución por el procesador del módulo informático para descodificar (206) el criptograma CW*i,t,
- la decodificación del contenido multimedia codificado con la ayuda de la palabra de control sin codificar CWi, en donde el método comprende cargar el módulo informático conforme con una cualquiera de las reivindicaciones precedentes.
11. Soporte de registro de información (78, 94, 102), caracterizado porque comprende instrucciones para la puesta en práctica de un método conforme con una cualquiera de las reivindicaciones precedentes, cuando se ejecutan por un procesador electrónico de seguridad.
12. Terminal provisto de:
- una memoria principal (92),
5 - un procesador de seguridad (90) que se presenta bajo la forma de un circuito integrado en donde se pone en práctica un microprocesador (99) capaz de ejecutar instrucciones registradas en la memoria principal, un coprocesador de seguridad (100), una memoria (102) no volátil y una memoria de acceso aleatorio (103) accesible solamente por el coprocesador de seguridad, cuyo procesador está conectado a la memoria principal por intermedio de un bus de datos,
- un código (128) de un sistema operativo multitarea capaz de programar la ejecución simultánea de varios programas usuarios cuando es ejecutado por el procesador,
ig - un código (104) de un cargador de cebado operativo capaz de cargar, en la memoria principal, el código del sistema operativo multitarea y luego iniciar el funcionamiento de este sistema operativo a partir de esta memoria principal cuando es ejecutada por el procesador, este sistema operativo está configurado para definir el espacio del usuario en una gama de direcciones reducida de la memoria principal,
- instrucciones de un código de cebado operativo que carga el código del cargador de cebado operativo en la memoria principal cuando estas instrucciones son ejecutadas por el procesador, siendo estas instrucciones registradas en la memoria no volátil del coprocesador (102) a partir de la primera dirección en la que un contador ordinal del procesador apunta inmediatamente después de cada reinicialización de este procesador, 15 - una o más memorias no volátiles (78, 94) que contienen el código (126) de un módulo informático,
en donde:
el código de cebado operativo es capaz, cuando se ejecuta por el procesador y antes de iniciar la ejecución del cargador de cebado operativo, para verificar la autenticidad del código del cargador de cebado operativo a partir de una firma de este código y de una clave criptográfica, y para iniciar la ejecución de este cargador de cebado operativo solamente si el código es auténtico,
20 el cargador de cebado operativo (104) también es capaz de cargar en la memoria principal el código del módulo informático, antes de iniciar la ejecución del sistema operativo, en una gama de direcciones de la memoria principal ubicada fuera de dicha gama de direcciones reducida, cuando se ejecuta por el procesador, el cargador de cebado operativo es capaz, cuando lo ejecuta el procesador, de configurar el coprocesador de seguridad, presente en el interior del circuito integrado del procesador, de manera que verifique la autenticidad del código del módulo informático en función de una firma provista con el código de este módulo y de una clave criptográfica,
25 después de iniciar la ejecución del sistema operativo, el coprocesador de seguridad puede verificar automáticamente la autenticidad del código cargado del módulo informático en un intervalo predefinido y evitar la ejecución del módulo informático si este último no es auténtico, utilizando este coprocesador, para este propósito, su propia memoria no volátil y su propia memoria de acceso aleatorio para ejecutar, sin recurrir a la memoria principal, esta verificación de la autenticidad del código del módulo informático, siendo esta memoria no volátil y esta memoria para el acceso aleatorio solamente es accesible por el coprocesador de seguridad, y después de su iniciación, el sistema operativo (128) es capaz de redirigir una llamada a este módulo informático a partir de un programa de usuario hacia la dirección de la memoria principal donde se cargó el código de este 30 módulo informático antes de la iniciación de la ejecución del sistema operativo utilizando un sistema de ficheros específico del sistema operativo que asocia automáticamente la dirección del módulo informático en el espacio de memoria virtual del programa de usuario a la dirección física del módulo informático en la memoria principal, cuando se ejecuta por el procesador.
13. El terminal según la reivindicación 12, en donde:
- el terminal comprende un receptor de mensajes ECM (70),
35 - el módulo informático (126) es capaz de recibir un mensaje de ECM, de descifrar el criptograma CW¡t, t de la palabra de control CW¡ t, contenida en el mensaje de ECM cuando se ejecuta por el procesador, y
- el terminal comprende un descodificador (74) capaz de descodificar un contenido multimedia codificado usando la palabra de control CWit, descifrada por el módulo informático.
ES11799427T 2010-12-29 2011-12-16 Método de carga de un código de al menos un módulo informático Active ES2701030T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1061340A FR2970099B1 (fr) 2010-12-29 2010-12-29 Procede de chargement d'un code d'au moins un module logiciel
PCT/EP2011/073144 WO2012089541A2 (fr) 2010-12-29 2011-12-16 Procede de chargement d'un code d'au moins un module logiciel

Publications (1)

Publication Number Publication Date
ES2701030T3 true ES2701030T3 (es) 2019-02-20

Family

ID=44227970

Family Applications (1)

Application Number Title Priority Date Filing Date
ES11799427T Active ES2701030T3 (es) 2010-12-29 2011-12-16 Método de carga de un código de al menos un módulo informático

Country Status (8)

Country Link
EP (1) EP2659360B8 (es)
CN (1) CN103282913B (es)
ES (1) ES2701030T3 (es)
FR (1) FR2970099B1 (es)
PL (1) PL2659360T3 (es)
RU (1) RU2557459C2 (es)
TW (1) TWI490724B (es)
WO (1) WO2012089541A2 (es)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104573522B (zh) * 2013-10-21 2018-12-11 深圳市腾讯计算机系统有限公司 一种漏洞分析方法和装置
RU2632141C2 (ru) * 2015-06-30 2017-10-02 Общество С Ограниченной Ответственностью "Яндекс" Способ и компьютерное устройство для динамической индексации и загрузки кодов модулей
US10235303B2 (en) * 2015-09-10 2019-03-19 Qualcomm Incorporated Secure entry and exit for software modules protected by controlled encryption key management
US10754829B2 (en) * 2017-04-04 2020-08-25 Oracle International Corporation Virtual configuration systems and methods
CN109211239B (zh) * 2018-08-30 2022-09-16 中体彩科技发展有限公司 一种关联产品定位系统
CN109684089B (zh) * 2018-12-18 2020-08-18 创新奇智(广州)科技有限公司 一种基于预测模型的任务调度方法、系统及电子设备
TWI756156B (zh) * 2019-04-07 2022-02-21 新唐科技股份有限公司 監控系統開機之安全裝置及其方法
CN112069506B (zh) * 2020-09-16 2024-02-23 地平线(上海)人工智能技术有限公司 一种安全启动方法和装置
CN112270010B (zh) * 2020-11-17 2024-04-12 上海好连网络科技有限公司 可执行文件远程安全加载的方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60228027D1 (de) * 2001-07-06 2008-09-18 Texas Instruments Inc Sicherer Bootloader zum Sichern digitaler Geräte
FR2862397A1 (fr) * 2003-11-13 2005-05-20 St Microelectronics Sa Demarrage securise d'un appareil electronique a architecture smp
US7620179B2 (en) 2004-01-29 2009-11-17 Comcast Cable Holdings, Llc System and method for security processing media streams
US7974253B2 (en) * 2005-03-08 2011-07-05 Qualcomm Incorporated Methods and apparatus for implementing and using a rate indicator
US20060211490A1 (en) * 2005-03-17 2006-09-21 Falvey Grahame M Security for gaming devices
US9177176B2 (en) * 2006-02-27 2015-11-03 Broadcom Corporation Method and system for secure system-on-a-chip architecture for multimedia data processing
EP1868127A1 (en) * 2006-06-15 2007-12-19 Thomson Telecom Belgium Device comprising a public and a private area and a method for securely initializing the device
TW200912634A (en) * 2007-09-07 2009-03-16 Inventec Corp Error-detecting system and method
US20090193230A1 (en) * 2008-01-30 2009-07-30 Ralf Findeisen Computer system including a main processor and a bound security coprocessor
US8150039B2 (en) * 2008-04-15 2012-04-03 Apple Inc. Single security model in booting a computing device
US20090292931A1 (en) * 2008-05-24 2009-11-26 Via Technology, Inc Apparatus and method for isolating a secure execution mode in a microprocessor

Also Published As

Publication number Publication date
FR2970099B1 (fr) 2013-01-11
PL2659360T3 (pl) 2019-02-28
EP2659360A2 (fr) 2013-11-06
WO2012089541A3 (fr) 2012-08-23
CN103282913B (zh) 2015-11-25
TWI490724B (zh) 2015-07-01
RU2013135237A (ru) 2015-02-10
TW201234210A (en) 2012-08-16
EP2659360B1 (fr) 2018-09-05
WO2012089541A2 (fr) 2012-07-05
CN103282913A (zh) 2013-09-04
RU2557459C2 (ru) 2015-07-20
EP2659360B8 (fr) 2018-11-14
FR2970099A1 (fr) 2012-07-06

Similar Documents

Publication Publication Date Title
ES2701030T3 (es) Método de carga de un código de al menos un módulo informático
ES2439230T3 (es) Unidad de tratamiento de datos de audio/vídeo digitales y método de control de acceso a dichos datos
US9432184B2 (en) Provisioning of secure storage for both static and dynamic rules for cryptographic key information
EP1208667B1 (en) Method of generating a cryptographic transformation, tamper resistant device using the same, and methods of using the device
US6438666B2 (en) Method and apparatus for controlling access to confidential data by analyzing property inherent in data
US6385727B1 (en) Apparatus for providing a secure processing environment
US9501429B2 (en) Dynamic key and rule storage protection
US20120060039A1 (en) Code Download and Firewall for Embedded Secure Application
US20140281560A1 (en) Secure zone on a virtual machine for digital communications
EP2161671A2 (en) Device with privileged memory and applications thereof
EP1914990A1 (en) Electronic module for digital television receiver
US20140282543A1 (en) Secure zone on a virutal machine for digital communications
MXPA06014008A (es) Componente para modulo de seguridad.
KR20040068614A (ko) 보안 환경에서 장치가 비의도적으로 사용되는 것을방지하는 방법 및 장치
US10103884B2 (en) Information processing device and information processing method
AU743775B2 (en) An apparatus for providing a secure processing environment
KR20100120671A (ko) 스마트 카드의 보안
US20090164804A1 (en) Secured storage device
TW201007454A (en) Security module for audio/video data processing unit
KR101229637B1 (ko) 보안 모듈에서 로드된 프로그램 블록을 안전하게업데이트하는 방법
WO2014141206A1 (en) Secure zone on a virtual machine for digital communications
ES2627735T3 (es) Método para acceso seguro a un contenido audio/vídeo en una unidad de descodificación
US8621236B2 (en) Method for activating at least a function on a chipset and chipset for the implementation of the method
KR101610182B1 (ko) 원격서비스 시스템의 클라이언트 단말기 보안장치 및 그 방법
CN117454361A (zh) 一种密钥管理方法及相关设备