ES2995460T3 - Reducing latency of hardware trusted execution environments - Google Patents
Reducing latency of hardware trusted execution environments Download PDFInfo
- Publication number
- ES2995460T3 ES2995460T3 ES21197114T ES21197114T ES2995460T3 ES 2995460 T3 ES2995460 T3 ES 2995460T3 ES 21197114 T ES21197114 T ES 21197114T ES 21197114 T ES21197114 T ES 21197114T ES 2995460 T3 ES2995460 T3 ES 2995460T3
- Authority
- ES
- Spain
- Prior art keywords
- tee
- enclave
- memory
- processor
- request
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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 using cryptographic hash functions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
Los métodos y sistemas de ejemplo están dirigidos a reducir la latencia al proporcionar entornos de ejecución confiables (TEE). La inicialización de un TEE incluye varios pasos antes de que el TEE comience a ejecutarse. Además de la inicialización específica de la carga de trabajo, se realiza una inicialización independiente de la carga de trabajo, como agregar memoria al TEE. En entornos de función como servicio (FaaS), una gran parte del TEE es independiente de la carga de trabajo y, por lo tanto, se puede realizar antes de recibir la carga de trabajo. Ciertos pasos realizados durante la inicialización del TEE son idénticos para ciertas clases de cargas de trabajo. Por lo tanto, las partes comunes de la secuencia de inicialización del TEE se pueden realizar antes de que se solicite el TEE. Cuando se solicita un TEE para una carga de trabajo en la clase y se conocen las partes para especializar el TEE para su propósito particular, se realizan los pasos finales para inicializar el TEE. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Reducción de latencia en entornos de ejecución de confianza de hardware
CAMPO TÉCNICO
La materia objeto divulgada en el presente documento se refiere, en general, a entornos de ejecución de confianza (TEE) de hardware. Específicamente, la presente divulgación aborda sistemas y métodos para reducir la latencia de los TEE de hardware.
ANTECEDENTES
Un procesador puede usar niveles de privilegio de hardware para limitar el acceso a la memoria por parte de las aplicaciones que se ejecutan en un dispositivo. Un sistema operativo se ejecuta en un nivel de privilegio superior y puede acceder a toda la memoria del dispositivo y definir intervalos de memoria para otras aplicaciones. Las aplicaciones, que ejecutan un nivel de privilegio inferior, están limitadas a acceder a la memoria dentro del intervalo definido por el sistema operativo y no pueden acceder a la memoria de otras aplicaciones o del sistema operativo. Sin embargo, una aplicación no está protegida frente a un sistema operativo malicioso o comprometido.
Un TEE está habilitado por protecciones del procesador que garantizan que el código y los datos cargados dentro del TEE están protegidos del acceso por parte de código que se ejecuta fuera del TEE. Por tanto, el TEE proporciona un entorno de ejecución aislado que impide, a nivel de hardware, el acceso a los datos y el código contenidos en el TEE por parte de software malicioso, incluido el sistema operativo.
El documento de FRITZ ALDER ET AL: "S-FaaS: Thrustworthy and Accountable Function-as-a-Service using Intel SGX", ARXIV ORG, CORNELL UNIVERSITY LIBRARY, 201 OLUN LIBRARY CORNELL UNIVERSITY ITHACA, NY 14853, 14 de octubre de 2018, XP081662510, d O i : 10.1145/3338466.3358916 divulga una arquitectura e implementación de función como servicio (FaaS) para proporcionar una sólida garantía de seguridad y responsabilidad respaldada por Intel SGX con la introducción de un nuevo enclave de distribución de claves y un protocolo de atestación transitivo.
El documento US 2018/0330078 A1 divulga la formación de un grupo de enclaves que incluye una pluralidad de enclaves. Cada enclave puede tener una clave privada de enclave y una clave pública de enclave. Una clave compartida de un grupo de enclaves puede generarse a partir de la clave pública de enclave de cada enclave del grupo de enclaves o basarse en ella de otro modo.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
Algunas formas de realización se ilustran a modo de ejemplo y no de limitación en las figuras de los dibujos adjuntos.
La FIG. 1 es un diagrama de red que ilustra un entorno de red adecuado para servidores que proporcionan funciones como servicio usando TEE, de acuerdo con algunas formas de realización de ejemplo.
La FIG. 2 es un diagrama de bloques de un servidor de funciones como servicio, de acuerdo con algunas formas de realización ejemplo, adecuado para reducir la latencia de los TEE, de acuerdo con algunas formas de realización de ejemplo.
La FIG. 3 es un diagrama de bloques de una de protección de memoria basada en anillos de la técnica anterior. La FIG. 4 es un diagrama de bloques de una protección de memoria basada en enclave, adecuada para reducir la latencia de los TEE de acuerdo con algunas formas de realización de ejemplo.
La FIG. 5 es un diagrama de bloques de un esquema de base de datos, de acuerdo con algunas formas de realización de ejemplo, adecuado para su uso en la reducción de la latencia de los TEE.
La FIG. 6 es un diagrama de bloques de una secuencia de operaciones realizadas en la construcción de un TEE, de acuerdo con algunas formas de realización de ejemplo.
La FIG. 7 es un diagrama de flujo que ilustra operaciones de un método adecuado para inicializar y proporcionar acceso a los TEE, de acuerdo con algunas formas de realización de ejemplo.
La FIG. 8 es un diagrama de flujo que ilustra operaciones de un método adecuado para inicializar y proporcionar acceso a los TEE, de acuerdo con algunas formas de realización de ejemplo.
La FIG. 9 es un diagrama de flujo que ilustra operaciones de un método adecuado para inicializar y proporcionar acceso a los TEE, de acuerdo con algunas formas de realización de ejemplo.
La FIG. 10 es un diagrama de bloques que muestra un ejemplo de arquitectura de software para un dispositivo informático.
La FIG. 11 es un diagrama de bloques de una máquina en la forma de ejemplo de un sistema informático en el cual se pueden ejecutar instrucciones para hacer que la máquina realice una cualquiera o más de las metodologías analizadas en el presente documento.
DESCRIPCIÓN DETALLADA
La invención se define mediante las reivindicaciones independientes adjuntas. Diferentes formas de realización se describen mediante las reivindicaciones dependientes. Los métodos y sistemas de ejemplo están dirigidos a reducir la latencia en la provisión de TEE. En el sentido más general, un TEE es cualquier entorno de ejecución de confianza, independientemente de cómo se obtenga esa confianza. Sin embargo, como se usa en el presente documento, los TEE se proporcionan ejecutando código dentro de una parte de la memoria protegida del acceso por parte de procesos ajenos al TEE, incluso si esos procesos se ejecutan en un nivel de privilegio elevado. Algunos ejemplos de TEE incluyen enclaves creados por Intel® Software Guard Extensions (SGX) y dominios de confianza creados por Intel® Trust Domain Extensions (TDX).
Los TEE pueden usarse para permitir el tratamiento seguro de información confidencial protegiendo la información confidencial contra todo software externo al TEE. Los TEE también pueden usarse en la programación modular, en donde cada módulo contiene todo lo necesario para su propia funcionalidad sin estar expuesto a vulnerabilidades causadas por otros módulos. Por ejemplo, un ataque de inyección de código que tenga éxito contra un TEE no puede afectar al código de otro TEE.
El cifrado total de memoria (TME) protege los datos de la memoria al evitar que un procesador pueda acceder a los mismos. El sistema genera una clave de cifrado dentro del procesador durante el arranque y nunca almacena la clave fuera del procesador. La clave de cifrado TME es una clave efímera ya que es diferente en cada reinicio y nunca se almacena fuera del procesador. Todos los datos escritos por el procesador en la memoria se cifran usando la clave de cifrado y se descifran cuando se leen de la memoria. Por tanto, un ataque basado en hardware que intente leer datos directamente de la memoria sin intermediación del procesador fallará.
El TME multiclave (MKTME) amplía el TME para usar múltiples claves. Pueden cifrarse páginas de memoria individuales usando la clave efímera de TME o usando claves proporcionadas por software. Esto puede proporcionar una mayor seguridad que el TME con respecto a los ataques basados en software, ya que un atacante necesitará identificar la clave concreta que está usando el software objetivo en lugar de hacer que el procesador descifre automáticamente cualquier memoria a la que el software de ataque haya accedido.
La inicialización de un TEE requiere múltiples etapas antes de que el TEE pueda comenzar a ejecutarse, lo que provoca latencia en las aplicaciones que crean y destruyen TEE repetidamente. Además de la inicialización específica de la carga de trabajo, se realiza una inicialización independiente de la carga de trabajo, tal como añadir memoria al enclave. En los entornos de funciones como servicio (FaaS), una gran parte del TEE es independiente de la carga de trabajo y, por tanto, puede realizarse antes de recibir la carga de trabajo.
Las plataformas FaaS proporcionan servicios de computación en la nube que ejecutan la lógica de las aplicaciones pero no almacenan datos. A diferencia de los proveedores de alojamiento de plataformas como servicio (PaaS), las plataformas FaaS no tienen un proceso de servidor en constante ejecución. Como resultado, una solicitud inicial a una plataforma FaaS puede tardar más en gestionarse que una solicitud equivalente a un proveedor de alojamiento PaaS, pero con la ventaja de un menor tiempo de inactividad y una mayor escalabilidad. La reducción de la latencia de la gestión de la solicitud inicial, tal como se describe en el presente documento, mejora el atractivo de la solución FaaS.
Algunas etapas realizadas durante la inicialización del enclave son idénticas para determinadas clases de cargas de trabajo. Por ejemplo, cada enclave de una clase puede usar un cúmulo de memoria. Por tanto, las partes comunes de la secuencia de inicialización de enclave (por ejemplo, añadir un cúmulo de memoria) se pueden realizar antes de que se solicite el enclave. Cuando se solicita un enclave para una carga de trabajo de la clase y se conocen las partes para especializar el enclave para su propósito particular, se realizan las etapas finales para inicializar el enclave. Esto reduce la latencia con respecto a la realización de todas las etapas de inicialización en respuesta a una solicitud referente a un enclave.
Un TEE puede inicializarse con antelación para una carga de trabajo concreta. El TEE se considera un TEE plantilla. Cuando se solicita un TEE para la carga de trabajo, el TEE plantilla se bifurca, y la nueva copia se proporciona como el TEE solicitado. Dado que bifurcar un TEE existente es más rápido que crear un TEE nuevo desde cero, se reduce la latencia.
Un TEE puede inicializarse con antelación para una carga de trabajo concreta y marcarse como de solo lectura. El TEE se considera un TEE plantilla. Cuando se solicita un TEE para la carga de trabajo, se crea un nuevo TEE con acceso de solo lectura al TEE plantilla. Múltiples TEE pueden tener acceso al TEE plantilla de forma segura, siempre y cuando el TEE plantilla sea de solo lectura. Dado que la creación del nuevo TEE con acceso al TEE plantilla es más rápida que la creación de un nuevo TEE con todo el código y los datos del TEE plantilla desde cero, se reduce la latencia.
En algunas formas de realización de ejemplo, como se describe en el presente documento, se usa una imagen de FaaS para crear un TEE usando una clave efímera. Cuando se solicita un TEE para la FaaS, se asigna a la clave efímera un identificador de clave de acceso controlado, lo que permite suministrar rápidamente el TEE en respuesta.
En comparación con los métodos existentes de inicialización de enclaves, los métodos y sistemas analizados en el presente documento reducen la latencia. La reducción de la latencia puede permitir que se protejan funcionalidades adicionales de los TEE, que se usen TEE de gestión más precisa, o ambas cosas, lo que aumenta la seguridad del sistema. Cuando estos efectos se consideran en su conjunto, una o más de las metodologías descritas en el presente documento pueden obviar la necesidad de determinados esfuerzos o recursos que, de otro modo, estarían implicados en la inicialización de los TEE. Los recursos informáticos usados por una o más máquinas, bases de datos o redes pueden reducirse de forma similar. Ejemplos de dichos recursos informáticos incluyen ciclos de procesador, tráfico de red, uso de memoria, capacidad de almacenamiento de datos, consumo de energía y capacidad de refrigeración.
La FIG. 1 es un diagrama de red que ilustra un entorno de red 100 adecuado para servidores que proporcionan funciones como servicio usando TEE, de acuerdo con algunas formas de realización de ejemplo. El entorno de red 100 incluye servidores FaaS 110A y 110B, dispositivos cliente 120A y 120B, y una red 130. Los servidores FaaS 110A-110B proporcionan funciones a los dispositivos cliente 120A-120B por medio de la red 130. Los dispositivos cliente 120A y 120B pueden ser dispositivos de diferentes arrendatarios, de modo que cada arrendatario desee asegurarse de que sus datos y código específicos de arrendatario no sean accesibles por otros arrendatarios. En consecuencia, los servidores FaaS 110A-110B pueden usar un enclave para cada FaaS proporcionado.
Para reducir la latencia en el suministro de funciones, se pueden usar los sistemas y métodos descritos en el presente documento para reducir la latencia en la creación de TEE. Por ejemplo, un TEE para una función puede ser parcial o totalmente creado por un servidor FaaS 110 antes de que la función sea solicitada por un dispositivo cliente 120.
Tanto los servidores FaaS 110A-110B como los dispositivos cliente 120A y 120B pueden implementarse en un sistema informático, total o parcialmente, como se describe posteriormente con respecto a la FIG. 9. Los servidores FaaS 110A y 110B pueden denominarse conjuntamente servidores FaaS 110 o, de manera genérica, servidor FaaS 110. Los dispositivos cliente 120A y 120B pueden denominarse conjuntamente dispositivos cliente 120 o, de manera genérica, dispositivo cliente 120.
Cualquiera de las máquinas, bases de datos o dispositivos mostrados en la FIG. 1 puede implementarse en un ordenador de propósito general modificado (por ejemplo, configurado o programado) mediante software para que sea un ordenador de propósito especial que realice las funciones descritas en el presente documento para esa máquina, base de datos o dispositivo. Por ejemplo, un sistema informático capaz de implementar una cualquiera o más de las metodologías descritas en el presente documento se analiza a continuación con respecto a la FIG. 9. Como se usa en el presente documento, una "base de datos" es un recurso de almacenamiento de datos y puede almacenar datos estructurados como un archivo de texto, una tabla, una hoja de cálculo, una base de datos relacional (por ejemplo, una base de datos relacional orientada a objetos), un almacén triple, un almacén jerárquico de datos, una base de datos NoSQL orientada a documentos, un almacén de archivos o cualquier combinación adecuada de los mismos. La base de datos puede ser una base de datos en memoria. Además, dos o más cualesquiera de las máquinas, bases de datos o dispositivos ilustrados en la FIG. 1 pueden combinarse en una única máquina, base de datos o dispositivo, y las funciones descritas en el presente documento para una única máquina, base de datos o dispositivo cualquiera pueden subdividirse entre múltiples máquinas, bases de datos o dispositivos.
Los servidores FaaS 110 y los dispositivos cliente 120 están conectados mediante la red 130. La red 130 puede ser cualquier red que permita la comunicación entre máquinas, bases de datos y dispositivos. En consecuencia, la red 130 puede ser una red cableada, una red inalámbrica (por ejemplo, una red móvil o celular), o cualquier combinación adecuada de las mismas. La red 130 puede incluir una o más partes que constituyan una red privada, una red pública (por ejemplo, Internet), o cualquier combinación adecuada de las mismas.
La FIG. 2 es un diagrama de bloques del servidor FaaS 110A, de acuerdo con algunas formas de realización ejemplo, adecuado para reducir la latencia de los TEE, de acuerdo con algunas formas de realización de ejemplo. Como se muestra, el servidor FaaS 110A incluye un módulo de comunicación 210, un componente no de confianza 220 de una aplicación, un componente de confianza 230 de una aplicación, un módulo de dominio de confianza 240, un enclave de cotización 250, una memoria compartida 260 y una memoria privada 270, todos ellos configurados para comunicarse entre sí (por ejemplo, por medio de un bus, una memoria compartida o un conmutador). Uno cualquiera o más de los módulos descritos en el presente documento pueden implementarse usando hardware (por ejemplo, un procesador de una máquina). Por ejemplo, cualquier módulo descrito en el presente documento puede implementarse mediante un procesador configurado para realizar las operaciones descritas en el presente documento para ese módulo. Además, dos o más cualesquiera de estos módulos pueden combinarse en un único módulo, y las funciones descritas en el presente documento para un único módulo pueden subdividirse entre múltiples módulos. Además, de acuerdo con varias formas de realización de ejemplo, los módulos descritos en el presente documento como implementados en una única máquina, base de datos o dispositivo pueden distribuirse entre múltiples máquinas, bases de datos o dispositivos.
El módulo de comunicación 210 recibe datos enviados al servidor FaaS 110A y transmite datos desde el servidor FaaS 110A. Por ejemplo, el módulo de comunicación 210 puede recibir, desde el dispositivo cliente 120A, una solicitud para realizar una función. Una vez realizada la función, el módulo de comunicación 210 proporciona los resultados de la función al dispositivo cliente 120A. La red 130 puede intermediar en las comunicaciones enviadas y recibidas por el módulo de comunicación 210.
El componente no de confianza 220 se ejecuta fuera de un enclave. Por tanto, si el sistema operativo u otros componentes no de confianza quedaran comprometidos, el componente no de confianza 220 se volvería vulnerable a un ataque. El componente de confianza 230 se ejecuta dentro de un enclave. Por tanto, aunque el sistema operativo o el componente no de confianza 220 queden comprometidos, los datos y el código del componente de confianza 230 seguirán estando protegidos.
El módulo de dominio de confianza 240 crea y protege los enclaves y se encarga de conmutar la ejecución entre el componente no de confianza 220 y el componente de confianza 230. Se puede proporcionar código firmado al módulo de dominio de confianza 240, que verifica que el código no se ha modificado desde que se firmó. El código firmado se carga en una parte de la memoria física que está marcada como parte de un enclave. Posteriormente, las protecciones de hardware impiden el acceso, la modificación, la ejecución, o cualquier combinación adecuada de los mismos, de la memoria del enclave por parte de software no de confianza. El código se puede cifrar usando una clave solo disponible para el módulo de dominio de confianza 240.
Una vez inicializado el componente de confianza 230, el componente no de confianza 220 puede invocar funciones del componente de confianza 230 usando instrucciones de procesador especiales del módulo de dominio de confianza 240 que pasen de un modo no de confianza a un modo de confianza. El componente de confianza 230 verifica los parámetros, ejecuta la función solicitada si los parámetros son válidos y devuelve el control al componente no de confianza 220 por medio del módulo de dominio de confianza 240.
El módulo de dominio de confianza 240 puede implementarse como uno o más componentes de un procesador de hardware Intel® que proporcione Intel® SGX, Intel® T<d>X, virtualización cifrada segura (SEV) de AMD®,<a>R<m>® TrustZone, o cualquier combinación adecuada de los mismos. En Intel® SGX, la atestación es el mecanismo mediante el cual una tercera entidad establece que una entidad de software se está ejecutando en una plataforma habilitada para Intel® SGX protegida dentro de un enclave antes de proporcionar a ese software secretos y datos protegidos. La atestación se basa en la capacidad de una plataforma para producir una credencial que refleje con precisión la firma de un enclave, que incluye información sobre las propiedades de seguridad del enclave. La arquitectura Intel® SGX proporciona los mecanismos para admitir dos formas de atestación. Existe un mecanismo para crear una aserción básica entre enclaves que se ejecutan en la misma plataforma, que admite atestación local, o intraplataforma, y también otro mecanismo que proporciona la base para la atestación entre un enclave y un tercero remoto.
El enclave de cotización 250 genera atestación para enclaves (por ejemplo, el componente de confianza 230). La atestación es una estructura de pruebas que identifica de forma única al enclave atestiguado y al ordenador central (por ejemplo, el servidor FaaS 110A), usando cifrado asimétrico y admitida por funciones de procesador incorporadas. La atestación puede proporcionarse a un dispositivo cliente 120 por medio del módulo de comunicación 210, permitiendo al dispositivo cliente 120 confirmar que el componente de confianza 230 no ha quedado comprometido. Por ejemplo, el procesador puede fabricarse con una clave privada incorporada mediante un hardware que impida el acceso a la clave. Usando esta clave privada, el procesador puede firmar la estructura de atestación y, usando una clave pública correspondiente publicada por el fabricante de hardware, el dispositivo cliente 120 puede confirmar la firma. Esto permite al dispositivo cliente 120 asegurarse de que el enclave en el dispositivo remoto (por ejemplo, el servidor FaaS 110A) se haya creado realmente sin sufrir manipulaciones.
Tanto el componente no de confianza 220 como el componente de confianza 230 pueden acceder a la memoria compartida 260 y modificarla, pero solo el componente de confianza 230 puede acceder a la memoria privada 270 y modificarla. Aunque en la FIG. 2 solo se muestra un componente no de confianza 220, un componente de confianza 230 y una memoria privada 270, cada aplicación puede tener múltiples componentes de confianza 230, cada uno con su correspondiente memoria privada 270, y múltiples componentes no de confianza 220, sin acceso a ninguna de las memorias privadas 270. Además, pueden ejecutarse múltiples aplicaciones con espacios de memoria separados, y por tanto memorias compartidas 260 separadas. En este contexto, "compartida" se refiere a que la memoria es accesible por todo el software y hardware con acceso al espacio de memoria (por ejemplo, una aplicación y su sistema operativo), no siendo necesariamente accesible por todas las aplicaciones que se ejecutan en el sistema.
La FIG. 3 es un diagrama de bloques 300 de una de protección de memoria basada en anillos de la técnica anterior. El diagrama de bloques 300 incluye aplicaciones 310 y 320 y un sistema operativo 330. El sistema operativo 330 ejecuta comandos de procesador en el anillo 0 (procesadores Intel® y AMD®), en el nivel 1 de excepción (procesadores ARM®) o en un nivel de privilegio equivalente. Las aplicaciones 310-320 ejecutan comandos de procesador en el anillo 3 (procesadores Intel® y AMD®), en el nivel 0 de excepción (procesadores ARM®) o en un nivel de privilegio equivalente.
El procesador de hardware impide que el código que se está ejecutando en un nivel de privilegio inferior acceda a la memoria fuera del intervalo de memoria definido por el sistema operativo. Por tanto, el código de la aplicación 310 no puede acceder directamente a la memoria del sistema operativo 330 o de la aplicación 320 (como muestra la "X" de la FIG. 3). El sistema operativo 330 expone cierta funcionalidad a las aplicaciones 310-320 predefiniendo puntos de acceso específicos (por ejemplo, mediante puertas de llamada, instrucciones SYSENTER/SYSEXIT en procesadores Intel®, instrucciones SYSCALL/SYSRET en procesadores AMD®, o cualquier combinación adecuada o equivalente de las mismas).
Dado que el sistema operativo 330 tiene acceso a toda la memoria, las aplicaciones 310 y 320 no están protegidas contra un sistema operativo malicioso. Por ejemplo, un competidor puede modificar el sistema operativo antes de ejecutar la aplicación 310 para acceder al código y a los datos de la aplicación 310, permitiendo la ingeniería inversa.
Además, si una aplicación es capaz de aprovechar una vulnerabilidad en el sistema operativo 330 y promocionarse al nivel de privilegios del sistema operativo, la aplicación podría acceder a toda la memoria. Por ejemplo, la aplicación 310, que normalmente no puede acceder a la memoria de la aplicación 320 (como muestra la X entre las aplicaciones 310 y 320 en la FIG. 3), sería capaz de acceder a la memoria de la aplicación 320 después de promocionarse a sí misma al anillo 0 o al nivel de excepción 1. Por tanto, si se engaña al usuario para que ejecute un programa malicioso (por ejemplo, la aplicación 310), se podría acceder directamente desde la memoria a datos privados del usuario o de un proveedor de aplicaciones (por ejemplo, una contraseña bancaria usada por la aplicación 320).
La FIG. 4 es un diagrama de bloques 400 de una protección de memoria basada en enclave, adecuada para reducir la latencia de los TEE de acuerdo con algunas formas de realización de ejemplo. El diagrama de bloques 400 incluye una aplicación 410, un enclave 420 y un sistema operativo 430. El sistema operativo 430 ejecuta comandos de procesador en el anillo 0 (procesadores Intel® y AMD®), en el nivel 1 de excepción (procesadores ARM®) o en un nivel de privilegio equivalente. La aplicación 410 y el enclave 420 ejecutan comandos de procesador en el anillo 3 (procesadores Intel® y AMD®), en el nivel 0 de excepción (procesadores ARM®) o en un nivel de privilegio equivalente.
El sistema operativo 430 asigna la memoria del enclave 420 e indica al procesador el código y los datos a cargar en el enclave 420. Sin embargo, una vez instanciado, el sistema operativo 430 no tiene acceso a la memoria del enclave 420. Por tanto, aunque el sistema operativo 430 sea malicioso o quede comprometido, el código y los datos del enclave 420 seguirán estando protegidos.
El enclave 420 puede proporcionar funcionalidad a la aplicación 410. El sistema operativo 430 puede controlar si se permite a la aplicación 410 invocar funciones del enclave 420 (por ejemplo, usando una instrucción ECALL). Por tanto, una aplicación maliciosa puede obtener la capacidad de invocar funciones del enclave 420 comprometiendo el sistema operativo 430. No obstante, el procesador hardware impedirá que la aplicación maliciosa acceda directamente a la memoria o al código del enclave 420. Por tanto, aunque el código del enclave 420 no pueda determinar que las funciones se estén invocando correctamente o por un no atacante, el código del enclave 420 tiene pleno control sobre la comprobación de parámetros y otras medidas de seguridad internas y solo está sujeto a sus vulnerabilidades de seguridad internas.
La FIG. 5 es un diagrama de bloques de un esquema de base de datos, de acuerdo con algunas formas de realización de ejemplo, adecuado para su uso en la reducción de la latencia de los TEE. El esquema de base de datos 500 incluye una tabla de enclave 510. La tabla de enclave 510 incluye filas 530A, 530B, 530C y 530D de un formato 520.
El formato 520 de la tabla de enclave 510 incluye un campo identificador de enclave, un campo de estado, un campo de solo lectura y un campo identificador de plantilla. Cada una de las filas 530A-530D almacena datos para un único enclave. El identificador de enclave es un identificador único para el enclave. Por ejemplo, cuando se crea un enclave, el módulo de dominio de confianza 240 puede asignar el siguiente identificador no utilizado al enclave creado. El campo de estado indica el estado del enclave, tal como ''inicializando'' (creado pero aún no listo para usar), "inicializado" (listo para usar pero aún no en uso) y "asignado" (en uso). El campo de solo lectura indica si el enclave es de solo lectura o no. El campo identificador de plantilla contiene el identificador de enclave de otro enclave al que este enclave tiene acceso de solo lectura.
Por tanto, en el ejemplo de la FIG. 5, se muestran cuatro enclaves en la tabla de enclaves 510. Uno de los enclaves se está inicializando, dos están inicializados y uno está asignado. El enclave 0, de la fila 530A, es un enclave de solo lectura y se usa como plantilla para el enclave 1, de la fila 530B. Por tanto, el procesador impide que se ejecute el enclave 0, pero el enclave 1 tiene acceso a los datos y al código del enclave 0. Pueden crearse enclaves adicionales que también usen el enclave 0 como plantilla, permitiendo que múltiples enclaves accedan a los datos y al código del enclave 0 sin multiplicar la cantidad de memoria consumida. Los enclaves 1 -3, de las filas 530B-530D, no son de solo lectura y, por tanto, pueden ejecutarse.
La FIG. 6 es un diagrama de bloques 600 de una secuencia de operaciones realizadas por el módulo de dominio de confianza 240 en la construcción de un TEE, de acuerdo con algunas formas de realización de ejemplo. Como se muestra en la FIG. 6, la secuencia de operaciones incluye ECREATE, EADD / EEXTEND, EINiT, EENTER y FUNCTION START. La operación ECREATE crea el enclave. La operación EADD añade un cúmulo de memoria inicial al enclave. Se puede añadir memoria adicional usando la operación EEXTEND. La operación EINIT inicializa el TEE para su ejecución. A continuación, el componente no de confianza 220 transfiere la ejecución al TEE solicitando al módulo de dominio de confianza 240 que realice la operación EENTER. La FUNCTION de confianza del TEE se realiza, en respuesta a la FUNCTION START CALL, ejecutando el código dentro del TEE.
Como se muestra en la FIG. 6, las operaciones pueden dividirse al menos de dos maneras. Una división muestra que las operaciones ECREATE, EADD / EEXTEND y EINIT son realizadas por la aplicación anfitriona (por ejemplo, el componente no de confianza 220) y la operación EENTER transfiere el control al TEE, que realiza la FUNCTION. Otra división muestra que la creación del TEE y la asignación de un cúmulo de memoria para el TEE pueden realizarse independientemente del código y los datos particulares que se añadan al TEE ("operaciones independientes de la carga de trabajo"), mientras que la inicialización del TEE y la posterior invocación de una función del TEE dependen del código y los datos particulares a cargar ("operaciones dependientes de la carga de trabajo").
Un grupo de TEE se puede preinicializar realizando las operaciones independientes de la carga de trabajo antes de que se soliciten los TEE. Como se usa en el presente documento, un TEE preinicializado es un TEE para el que se ha iniciado al menos una operación antes de que el TEE sea solicitado por una aplicación. Por ejemplo, el TEE puede crearse mediante la operación ECREATE antes de que se solicite el TEE. En respuesta a la recepción de una solicitud referente a un TEE, se realizan las operaciones dependientes de la carga de trabajo. En comparación con soluciones que no realizan las operaciones independientes de la carga de trabajo antes de recibir la solicitud, la latencia se reduce. En algunas formas de realización de ejemplo, las operaciones de preinicialización de un TEE se realizan en paralelo a la recepción de la solicitud referente al TEE. Por ejemplo, la operación ECREATE para el TEE puede comenzar y, antes de que la operación ECREATE finalice, se recibe la solicitud referente al TEE. Por tanto, la preinicialización no se define completando las operaciones independientes de la carga de trabajo una cantidad de tiempo determinada antes de que se reciba la solicitud referente al TEE, sino iniciando las operaciones independientes de la carga de trabajo antes de que se reciba la solicitud referente al TEE.
Para un entorno FaaS, cada función puede compartir un entorno de ejecución común que sea independiente de la carga de trabajo, y se inicializa antes de que se realicen las operaciones dependientes de la carga de trabajo. El tiempo de inicio de una función FaaS es una métrica importante en los servicios FaaS, ya que tiempos de inicio más cortos permiten una mayor elasticidad del servicio.
La FIG. 7 es un diagrama de flujo que ilustra operaciones de un método 700 adecuado para inicializar y proporcionar acceso a los TEE, de acuerdo con algunas formas de realización de ejemplo. El método 700 incluye las operaciones 710, 720, 730 y 740. A modo de ejemplo y no de limitación, el método 700 puede realizarse mediante el servidor FaaS 110A de la FIG. 1, usando los módulos, bases de datos y estructuras mostradas en las FIG. 2- 4.
En la operación 710, el módulo de dominio de confianza 240 preinicializa un grupo de enclaves. Por ejemplo, las operaciones de creación del enclave y asignación de un cúmulo de memoria al enclave pueden realizarse para cada enclave del grupo de enclaves. En algunas formas de realización de ejemplo, el grupo de enclaves incluye 16-512 enclaves, 16 enclaves, 32 enclaves o 128 enclaves.
En varias formas de realización de ejemplo, los enclaves del grupo de enclaves están parcialmente preinicializados o totalmente preinicializados. Al menos una de las operaciones específicas de carga de trabajo de un enclave totalmente preinicializado se realiza antes de que se solicite el enclave. Un enclave parcialmente preinicializado solo tiene las operaciones independientes de la carga de trabajo realizadas antes de que se solicite el enclave. Los enclaves preinicializados reducen el tiempo de obtención de resultados para cualquier enclave, pero son especialmente valiosos para enclaves efímeros de corta duración (por ejemplo, cargas de trabajo FaaS) en los que la sobrecarga de inicialización domina el tiempo de ejecución global.
Los enclaves preinicializados pueden crearse bifurcando o copiando un enclave plantilla. El enclave plantilla se crea primero con el estado deseado de los enclaves preinicializados. A continuación, el enclave de plantilla se bifurca o copia para cada uno de los enclaves preinicializados del grupo. En algunas formas de realización de ejemplo, el propio enclave plantilla forma parte del grupo. En otras formas de realización de ejemplo, el enclave plantilla es de solo lectura, no ejecutable y se conserva como plantilla para su uso posterior. El enclave plantilla puede incluir un contenido y una disposición de memoria para una FaaS.
Cada enclave del grupo de enclaves puede tener su memoria cifrada usando una clave almacenada en el procesador. La clave puede ser una clave efímera (por ejemplo, la clave efímera TME) o una clave con un identificador de clave accesible desde fuera del procesador. El módulo de dominio de confianza 240 o un módulo MKTME pueden generar la clave y asignarla al enclave. Por tanto, la propia clave nunca queda expuesta fuera del procesador. Al enclave se le asigna una parte de la memoria física. Las solicitudes de acceso a memoria que se originan en la memoria física del enclave se asocian al identificador de clave, y por tanto a la clave, del enclave. El procesador no aplica la clave del enclave a los accesos a memoria que se originan fuera de la memoria física del enclave. Como resultado, los accesos a memoria por parte de aplicaciones o componentes no de confianza (por ejemplo, el componente no de confianza 220) solo pueden recibir los datos o código cifrados del enclave.
En algunas formas de realización de ejemplo, una clave efímera diferente sin identificador de clave (por ejemplo, una clave MKTME) se usa para cifrar cada enclave del grupo de enclaves. Posteriormente, cuando se solicita un enclave para la FaaS, el módulo de dominio de confianza 240 asigna a la clave efímera un identificador de clave de acceso controlado, lo que permite suministrar el enclave rápidamente en respuesta.
El módulo de dominio de confianza 240, en la operación 720, recibe una solicitud referente a un enclave. Por ejemplo, el componente no de confianza 220 de una aplicación puede proporcionar datos que identifiquen un enclave al módulo de dominio de confianza 240 como parte de la solicitud. Los datos que identifican el enclave pueden incluir un puntero a una dirección en la memoria compartida 260, accesible por el componente no de confianza 220.
La solicitud puede incluir un valorhashprecalculado para el enclave e indicar una parte de la memoria compartida 260 (por ejemplo, una parte identificada mediante una dirección y un tamaño incluidos en la solicitud) que contiene el código y los datos para el enclave. El módulo de dominio de confianza 240 puede realizar una funciónhashen un estado de memoria binario (por ejemplo, la parte de la memoria compartida 260 indicada en la solicitud) para confirmar que el valorhashproporcionado en la solicitud coincide con el valorhashcalculado. Si los valoreshashcoinciden, el módulo de dominio de confianza 240 ha confirmado que la memoria indicada contiene realmente el código y los datos del enclave solicitado y el método 700 puede continuar. Si los valoreshashno coinciden, el módulo de dominio de confianza 240 puede devolver un valor de error, impidiendo que la memoria modificada se cargue en el enclave.
En algunas formas de realización de ejemplo, la solicitud incluye un identificador de un enclave plantilla. El módulo de dominio de confianza 240 crea el enclave solicitado con permisos de solo lectura para acceder al enclave plantilla. Esto permite al enclave solicitado leer datos del enclave plantilla y ejecutar funciones del enclave plantilla sin modificar los datos o el código del enclave plantilla. En consecuencia, múltiples enclaves pueden acceder al enclave plantilla sin conflicto y los datos y el código del enclave plantilla se almacenan una sola vez (en lugar de una vez para cada uno de los múltiples enclaves). Como resultado, se copia menos memoria durante la creación de los enclaves de acceso, lo que reduce la latencia.
En la operación 730, en respuesta a la solicitud recibida, el módulo de dominio de confianza 240 selecciona un enclave del grupo preinicializado de enclaves. El módulo de dominio de confianza 240 puede modificar el enclave seleccionado realizando, en base a los datos de identificación del enclave recibidos con la solicitud, operaciones adicionales en el enclave seleccionado, tales como las operaciones específicas de la carga de trabajo mostradas en la FIG. 4. Las operaciones adicionales pueden incluir la copia de datos o código desde la dirección de la memoria compartida 260 indicada en la solicitud a la memoria privada 270 asignada al enclave.
En algunas formas de realización de ejemplo, las operaciones adicionales incluyen volver a cifrar la memoria física asignada al enclave con una nueva clave. Por ejemplo, la etapa de preinicialización puede haber cifrado la memoria física del enclave usando una clave efímera, y el enclave puede volver a cifrarse usando una clave única para el enclave, con un identificador de clave único correspondiente. En sistemas en los que los identificadores de clave son un recurso finito (por ejemplo, con un número fijo de identificadores de clave disponibles), usar la clave efímera para los enclaves preinicializados puede aumentar el tamaño máximo del grupo de enclaves (por ejemplo, hasta un tamaño superior al número fijado de identificadores de clave disponibles). Las operaciones adicionales también pueden incluir la creación de una ramificación de tabla de páginas extendida (EPT) segura para el TEE seleccionado que obtenga mapeos de código a partir del TEE plantilla.
El módulo de dominio de confianza 240 proporciona acceso al enclave seleccionado en respuesta a la solicitud (operación 740). Por ejemplo, se puede devolver un identificador único del enclave inicializado, que se puede usar como parámetro para una solicitud posterior (por ejemplo, un comando EENTER), al módulo de dominio de confianza 240 para ejecutar una función dentro del enclave.
A continuación, el módulo de dominio de confianza 240 puede determinar que la ejecución del enclave seleccionado ha finalizado (por ejemplo, en respuesta a la recepción de una instrucción de salida de enclave). La memoria asignada al enclave completado puede liberarse. De forma alternativa, el estado del enclave completado puede restaurarse al estado preinicializado y el enclave puede devolverse al grupo. Por ejemplo, el enclave de plantilla puede copiarse sobre el enclave, pueden realizarse operaciones para revertir las operaciones específicas de la carga de trabajo, puede realizarse un punto de control del enclave antes de realizar las operaciones específicas de la carga de trabajo y puede realizarse una restauración del punto de control una vez completada la ejecución, o cualquier combinación adecuada de las mismas.
En comparación con las implementaciones de la técnica anterior que no realizan la preinicialización del enclave (operación 710) antes de recibir la solicitud del enclave (operación 720), se reduce el retardo entre la recepción de la solicitud y la concesión del acceso (operación 740). La reducción de la latencia puede permitir que se protejan funcionalidades adicionales de los enclaves, que se usen enclaves de gestión más precisa, o ambas cosas, lo que aumenta la seguridad del sistema. Además, cuando un dispositivo cliente 120 invoca al enclave a través de la red 130, se reducen los ciclos de procesador del dispositivo cliente 120 que se usan mientras se espera una respuesta del servidor FaaS 110, lo que mejora la capacidad de respuesta y reduce el consumo de energía.
La FIG. 8 es un diagrama de flujo que ilustra operaciones de un método 800 adecuado para inicializar y proporcionar acceso a los TEE, de acuerdo con algunas formas de realización de ejemplo. El método 800 incluye las operaciones 810, 820, 830 y 840. A modo de ejemplo y no de limitación, el método 800 puede realizarse mediante el servidor FaaS 110A de la FIG. 1, usando los módulos, bases de datos y estructuras mostradas en las FIG. 2- 4.
En la operación 810, el módulo de dominio de confianza 240 crea un enclave plantilla marcado como de solo lectura. Por ejemplo, el enclave puede estar completamente creado, con código y datos cargados en la memoria privada 270.
Sin embargo, dado que el enclave plantilla es de solo lectura, las funciones del enclave plantilla no pueden invocarse directamente desde el componente no de confianza 220. En referencia a la tabla de enclaves 310 de la FIG. 3, la fila 330A muestra un enclave plantilla de solo lectura.
El módulo de dominio de confianza 240, en la operación 820, recibe una solicitud referente a un enclave. Por ejemplo, el componente no de confianza 220 de una aplicación puede proporcionar datos que identifiquen un enclave al módulo de dominio de confianza 240 como parte de la solicitud. Los datos que identifican el enclave pueden incluir un puntero a una dirección en la memoria compartida 260, accesible por el componente no de confianza 220.
En la operación 830, en respuesta a la solicitud recibida, el módulo de dominio de confianza 240 copia el enclave de plantilla para crear el enclave solicitado. Por ejemplo, el módulo de dominio de confianza 240 puede determinar que los datos de identificación del enclave indican que el enclave solicitado corresponde al mismo código y datos que el enclave plantilla. La determinación puede basarse en una firma del código y los datos del enclave, un código de autenticación de mensajes (MAC) del código y los datos del enclave, un cifrado asimétrico o cualquier combinación adecuada de los mismos.
El módulo de dominio de confianza 240 proporciona acceso al enclave seleccionado en respuesta a la solicitud (operación 840). Por ejemplo, se puede devolver un identificador único del enclave inicializado, que se puede usar como parámetro para una solicitud posterior (por ejemplo, un comando EENTER), al módulo de dominio de confianza 240 para ejecutar una función dentro del enclave.
En comparación con implementaciones de la técnica anterior que crean el enclave en respuesta a la recepción de la solicitud referente al enclave (operación 820) en lugar de copiar el enclave plantilla para crear el enclave solicitado (operación 830), se reduce el retardo entre la recepción de la solicitud y la concesión del acceso (operación 840). La reducción de la latencia puede permitir que se protejan funcionalidades adicionales de los enclaves, que se usen enclaves de gestión más precisa, o ambas cosas, lo que aumenta la seguridad del sistema. Además, cuando un dispositivo cliente 120 invoca al enclave a través de la red 130, se reducen los ciclos de procesador del dispositivo cliente 120 que se usan mientras se espera una respuesta del servidor FaaS 110, lo que mejora la capacidad de respuesta y reduce el consumo de energía.
La FIG. 9 es un diagrama de flujo que ilustra operaciones de un método 900 adecuado para inicializar y proporcionar acceso a los TEE, de acuerdo con algunas formas de realización de ejemplo. El método 900 incluye las operaciones 910, 920, 930 y 940. A modo de ejemplo y no de limitación, el método 900 puede realizarse mediante el servidor FaaS 110A de la FIG. 1, usando los módulos, bases de datos y estructuras mostradas en las FIG. 2- 4.
En la operación 910, el módulo de dominio de confianza 240 preinicializa un primer grupo de enclaves de una primera clase y un segundo grupo de enclaves de una segunda clase. La preinicialización puede ser completa o parcial. Para una inicialización completa, los enclaves del grupo están totalmente preparados para su uso y ya están cargados con el código y los datos del enclave. Por tanto, todos los miembros de la clase son idénticos. En el caso de una inicialización parcial, los enclaves del grupo comparten una o más características, tal como la cantidad de cúmulo de memoria usada. Los enclaves se inicializan con respecto a las características compartidas, pero el código y los datos reales del enclave no se cargan durante la preinicialización. Además, puede realizarse una mayor personalización en una etapa posterior. En consecuencia, diferentes enclaves pueden ser miembros de la clase cuando se realiza la inicialización parcial.
El módulo de dominio de confianza 240, en la operación 920, recibe una solicitud referente a un enclave de la primera clase. Por ejemplo, el componente no de confianza 220 de una aplicación puede proporcionar datos que identifiquen un enclave al módulo de dominio de confianza 240 como parte de la solicitud. Los datos que identifican el enclave pueden incluir un puntero a una dirección en la memoria compartida 260, accesible por el componente no de confianza 220. Los datos que identifican la clase del enclave pueden incluirse en el enclave o en la solicitud.
En la operación 930, en respuesta a la solicitud recibida, el módulo de dominio de confianza 240 selecciona un enclave del grupo preinicializado de enclaves para la primera clase. El módulo de dominio de confianza 240 puede modificar el enclave seleccionado realizando, en base a los datos de identificación del enclave recibidos con la solicitud, operaciones adicionales en el enclave seleccionado, tales como las operaciones específicas de la carga de trabajo mostradas en la FIG. 4. Las operaciones adicionales pueden incluir la copia de datos o código desde la dirección de la memoria compartida 260 indicada en la solicitud a la memoria privada 270 asignada al enclave.
El módulo de dominio de confianza 240 proporciona acceso al enclave seleccionado en respuesta a la solicitud (operación 940). Por ejemplo, se puede devolver un identificador único del enclave inicializado, que se puede usar como parámetro para una solicitud posterior (por ejemplo, un comando EENTER), al módulo de dominio de confianza 240 para ejecutar una función dentro del enclave.
Al usarse distintos grupos de clases diferentes, los enclaves que son similares pero tienen una demanda relativamente baja pueden incluirse en una clase común para una preinicialización parcial, lo que reduce la latencia a la vez que se consumen recursos solo en proporción a su demanda. Al mismo tiempo, los enclaves que tienen una demanda elevada pueden preinicializarse por completo, lo que reduce aún más la latencia.
La FIG. 10 es un diagrama de bloques 1000 que muestra un ejemplo de arquitectura de software 1002 para un dispositivo informático. La arquitectura 1002 puede usarse junto con varias arquitecturas de hardware, por ejemplo, como se describe en el presente documento. La FIG. 10 es simplemente un ejemplo no limitativo de una arquitectura de software, y pueden implementarse otras muchas arquitecturas para facilitar la funcionalidad descrita en el presente documento. Se ilustra una capa de hardware representativa 1004 que puede representar, por ejemplo, cualquiera de los dispositivos informáticos mencionados anteriormente. En algunos ejemplos, la capa de hardware 1004 puede implementarse de acuerdo con la arquitectura del sistema informático de la FIG. 10.
La capa de hardware representativa 1004 comprende una o más unidades de procesamiento 1006 que tienen instrucciones ejecutables 1008 asociadas. Las instrucciones ejecutables 1008 representan las instrucciones ejecutables de la arquitectura de software 1002, incluyendo la implementación de los métodos, módulos, subsistemas y componentes, etc. descritos en el presente documento y también pueden incluir módulos de memoria y/o almacenamiento 1010, que también tienen instrucciones ejecutables 1008. La capa de hardware 1004 también puede comprender otro hardware, como se indica mediante otro hardware 1012 que representa cualquier otro hardware de la capa de hardware 1004, tal como el otro hardware ilustrado como parte de la arquitectura de software 1002.
En la arquitectura de ejemplo de la FIG. 10, la arquitectura de software 1002 puede conceptualizarse como una pila de capas, donde cada capa proporciona una funcionalidad particular. Por ejemplo, la arquitectura de software 1002 puede incluir capas tales como un sistema operativo 1014, bibliotecas 1016, marcos de trabajo/middleware 1018, aplicaciones 1020 y capa de presentación 1044. Desde el punto de vista operativo, las aplicaciones 1020 y/u otros componentes dentro de las capas pueden invocar llamadas a la interfaz de programación de aplicaciones (API) 1024 a través de la pila de software y acceder a una respuesta, valores devueltos, etc., que se ilustran como mensajes 1026 en respuesta a las llamadas a la API 1024. Las capas ilustradas son representativas por naturaleza y no todas las arquitecturas de software disponen de todas las capas. Por ejemplo, es posible que algunos sistemas operativos para móviles o de propósito especial no proporcionen una capa de marcos de trabajo/middleware 1018, mientras que otros pueden proporcionar dicha capa. Otras arquitecturas de software pueden incluir capas adicionales o diferentes.
El sistema operativo 1014 puede gestionar recursos de hardware y proporcionar servicios comunes. El sistema operativo 1014 puede incluir, por ejemplo, un núcleo 1028, servicios 1030 y controladores 1032. El núcleo 1028 puede actuar como una capa de abstracción entre el hardware y las demás capas de software. Por ejemplo, el núcleo 1028 puede encargarse de la gestión de memoria, la gestión del procesador (por ejemplo, la planificación), la gestión de los componentes, las redes, la configuración de seguridad, etc. Los servicios 1030 pueden proporcionar otros servicios comunes para las demás capas de software. En algunos ejemplos, los servicios 1030 incluyen un servicio de interrupción. El servicio de interrupción puede detectar la recepción de una interrupción y, en respuesta, hacer que la arquitectura 1002 haga una pausa en su procesamiento actual y ejecute una rutina de servicio de interrupción (ISR) cuando se acceda a una interrupción.
Los controladores 1032 pueden ser responsables de controlar o interactuar con el hardware subyacente. Por ejemplo, los controladores 1032 pueden incluir controladores de pantalla, controladores de cámara, controladores Bluetooth®, controladores de memoria flash, controladores de comunicación serie (por ejemplo, controladores de bus serie universal (USB)), controladores Wi-Fi®, controladores NFC, controladores de audio, controladores de gestión de energía, etc., dependiendo de la configuración del hardware.
Las bibliotecas 1016 pueden proporcionar una infraestructura común que puede ser utilizada por las aplicaciones 1020 y/u otros componentes y/o capas. Las bibliotecas 1016 proporcionan típicamente una funcionalidad que permite a otros módulos de software realizar tareas de un modo más sencillo que interactuar directamente con la funcionalidad del sistema operativo subyacente 1014 (por ejemplo, el núcleo 1028, los servicios 1030 y/o los controladores 1032). Las bibliotecas 1016 pueden incluir bibliotecas de sistema 1034 (por ejemplo, la biblioteca estándar C) que pueden proporcionar funciones tales como funciones de asignación de memoria, funciones de manipulación de cadenas de caracteres, funciones matemáticas y similares. Además, las bibliotecas 1016 pueden incluir bibliotecas de API 1036, tales como bibliotecas de medios (por ejemplo, bibliotecas para permitir la presentación y manipulación de diversos formatos de medios tales como MPEG4, H.264, MP3, AAC, AMR, JPG, PNG), bibliotecas de gráficos (por ejemplo, un marco de trabajo OpenGL que puede usarse para renderizar de manera bidimensional y tridimensional un contenido gráfico en una pantalla), bibliotecas de bases de datos (por ejemplo, SQLite que puede proporcionar diversas funciones de bases de datos relacionales), bibliotecas para la web (por ejemplo, WebKit que puede proporcionar funcionalidad de navegación web), y similares. Las bibliotecas 1016 también pueden incluir una amplia variedad de otras bibliotecas 1038 para proporcionar otras muchas API a las aplicaciones 1020 y otros componentes/módulos de software.
Los marcos de trabajo/middleware 1018 pueden proporcionar una infraestructura común de nivel superior que puede ser utilizada por las aplicaciones 1020 y/u otros componentes/módulos de software. Por ejemplo, los marcos de trabajo/middleware 1018 pueden proporcionar diversas funciones de interfaz gráfica de usuario (GUI), gestión de recursos de alto nivel, servicios de localización de alto nivel, etc. Los marcos de trabajo/middleware 1018 pueden proporcionar un amplio espectro de otras API que pueden ser utilizadas por las aplicaciones 1020 y/u otros componentes/módulos de software, algunos de los cuales pueden ser específicos de un sistema operativo o plataforma concretos.
Las aplicaciones 1020 incluyen aplicaciones incorporadas 1040 y/o aplicaciones de terceros 1042. Ejemplos de aplicaciones incorporadas 1040 representativas pueden incluir, pero no se limitan a, una aplicación de contactos, una aplicación de navegador, una aplicación de lector de libros, una aplicación de localización, una aplicación multimedia, una aplicación de mensajería y/o una aplicación de juegos. Las aplicaciones de terceros 1042 pueden incluir cualquiera de las aplicaciones incorporadas 1040, así como una amplia variedad de otras aplicaciones. En un ejemplo concreto, la aplicación de terceros 1042 (por ejemplo, una aplicación desarrollada utilizando el kit de desarrollo de software (SDK) de Android™ o iOS™ por una entidad distinta del proveedor de la plataforma concreta) puede ser un software para móviles que se ejecute en un sistema operativo para móviles tal como iOS™, Android™, Windows® Phone u otros sistemas operativos de dispositivos informáticos móviles. En este ejemplo, la aplicación de terceros 1042 puede invocar las llamadas a la API 1024 proporcionadas por el sistema operativo para móviles, tal como el sistema operativo 1014 para facilitar la funcionalidad descrita en el presente documento.
Las aplicaciones 1020 pueden utilizar funciones de sistema operativo incorporadas (por ejemplo, el núcleo 1028, los servicios 1030 y/o los controladores 1032), bibliotecas (por ejemplo, bibliotecas de sistema 1034, bibliotecas API 1036 y otras bibliotecas 1038), marcos de trabajo/middleware 1018 para crear interfaces de usuario que interactúen con usuarios del sistema. De forma alternativa o adicional, en algunos sistemas, las interacciones con un usuario pueden producirse a través de una capa de presentación, tal como la capa de presentación 1044. En estos sistemas, la "lógica" de aplicación/módulo puede separarse de los aspectos de la aplicación/módulo que interactúan con un usuario.
Algunas arquitecturas de software utilizan máquinas virtuales. En el ejemplo de la FIG. 10, esto se ilustra mediante la máquina virtual 1048. Una máquina virtual crea un entorno de software donde las aplicaciones/módulos pueden ejecutarse como si se estuvieran ejecutando en un dispositivo informático de hardware. Una máquina virtual está alojada en un sistema operativo anfitrión (sistema operativo 1014) y, típicamente, aunque no siempre, tiene un agente de supervisión de máquina virtual 1046 que gestiona el funcionamiento de la máquina virtual 1048, así como la interfaz con el sistema operativo anfitrión (es decir, el sistema operativo 1014). Dentro de la máquina virtual 1048 se ejecuta una arquitectura de software tal como un sistema operativo 1050, bibliotecas 1052, marcos de trabajo/middleware 1054, aplicaciones 1056 y/o capa de presentación 1058. Estas capas de arquitectura de software que se ejecutan dentro de la máquina virtual 1048 pueden ser las mismas que las capas correspondientes descritas anteriormente o pueden ser diferentes.
MÓDULOS, COMPONENTES Y LÓGICA
En el presente documento se describen determinadas formas de realización que incluyen lógica o una serie de componentes, módulos o mecanismos. Los módulos pueden constituir módulos de software (por ejemplo, código incorporado (1) en un medio no transitorio legible por máquina o (2) en una señal de transmisión) o módulos implementados en hardware. Un módulo implementado en hardware es una unidad tangible capaz de realizar determinadas operaciones y puede estar configurado o dispuesto de una determinada manera. En formas de realización de ejemplo, uno o más sistemas informáticos (por ejemplo, un sistema informático autónomo, cliente o servidor) o uno o más procesadores de hardware pueden configurarse mediante software (por ejemplo, una aplicación o una parte de aplicación) como un módulo implementado en hardware que funciona para realizar determinadas operaciones, tal como se describe en el presente documento.
En diversas formas de realización, un módulo implementado en hardware puede implementarse de manera mecánica o electrónica. Por ejemplo, un módulo implementado en hardware puede comprender circuitos dedicados o lógica configurada de forma permanente (por ejemplo, como un procesador de propósito especial, tal como una matriz de puertas programablesin situ(FPGA) o un circuito integrado específico de la aplicación (ASIC)) para realizar determinadas operaciones. Un módulo implementado en hardware también puede comprender lógica o circuitos programables (por ejemplo, los incluidos en un procesador de propósito general u otro procesador programable) configurados de forma temporal por software para realizar determinadas operaciones. Se apreciará que la decisión de implementar un módulo implementado en hardware de manera mecánica, en circuitos dedicados y configurados de forma permanente, o en circuitos configurados de forma temporal (por ejemplo, configurados por software) puede obedecer a consideraciones de coste y tiempo.
En consecuencia, debe entenderse que el término "módulo implementado en hardware" abarca una entidad tangible, ya sea una entidad construida físicamente, configurada de forma permanente (por ejemplo, cableada) o configurada de forma temporal o transitoria (por ejemplo, programada) para funcionar de una manera determinada y/o realizar ciertas operaciones descritas en el presente documento. Considerando formas de realización en las que módulos implementados en hardware están configurados de forma temporal (por ejemplo, programados), no es necesario que cada uno de los módulos implementados en hardware esté configurado o instanciado en uno cualquiera de los casos. Por ejemplo, cuando los módulos implementados en hardware comprenden un procesador de propósito general configurado mediante software, el procesador de propósito general puede configurarse como respectivos módulos implementados en hardware diferentes en distintos momentos. En consecuencia, el software puede configurar un procesador, por ejemplo, para que constituya un determinado módulo implementado en hardware en un momento dado y para que constituya un módulo implementado en hardware diferente en otro momento.
Los módulos implementados en hardware pueden proporcionar información a, y recibir información de, otros módulos implementados en hardware. En consecuencia, puede considerarse que los módulos implementados en hardware descritos están acoplados de manera comunicativa. Cuando haya al mismo tiempo varios de dichos módulos implementados en hardware, las comunicaciones pueden lograrse mediante la transmisión de señales (por ejemplo, a través de circuitos y buses apropiados que conecten los módulos implementados en hardware). En formas de realización en las que múltiples módulos implementados en hardware se configuran o instancian en distintos momentos, las comunicaciones entre dichos módulos implementados en hardware pueden lograrse, por ejemplo, mediante el almacenamiento y la recuperación de información en estructuras de memoria a las que tienen acceso los múltiples módulos implementados en hardware. Por ejemplo, un módulo implementado en hardware puede realizar una operación y almacenar el resultado de esa operación en un dispositivo de memoria al que esté acoplado de manera comunicativa. Otro módulo implementado en hardware puede, en un momento posterior, acceder al dispositivo de memoria para recuperar y procesar el resultado almacenado. Los módulos implementados en hardware también pueden iniciar comunicaciones con dispositivos de entrada o salida, y pueden realizar operaciones sobre un recurso (por ejemplo, un conjunto de información).
Las diversas operaciones de los métodos de ejemplo descritos en el presente documento pueden ser realizadas, al menos parcialmente, por uno o más procesadores configurados de forma temporal (por ejemplo, mediante software) o configurados de forma permanente para realizar las operaciones pertinentes. Ya estén configurados de forma temporal o permanente, dichos procesadores pueden constituir módulos implementados por procesador que funcionan para realizar una o más operaciones o funciones. Los módulos a los que se hace referencia en el presente documento pueden, en algunas formas de realización de ejemplo, comprender módulos implementados por procesador.
De forma similar, los métodos descritos en el presente documento pueden implementarse, al menos parcialmente, por un procesador. Por ejemplo, al menos algunas de las operaciones de un método pueden ser realizadas por uno o más procesadores o módulos implementados por procesador. La realización de determinadas operaciones puede distribuirse entre los uno o más procesadores, no solo dentro de una única máquina, sino en varias máquinas. En algunas formas de realización de ejemplo, el procesador o procesadores pueden estar situados en una única ubicación (por ejemplo, en un entorno doméstico, un entorno de oficina o una granja de servidores), mientras que en otras formas de realización los procesadores pueden estar distribuidos en varias ubicaciones.
Los uno o más procesadores también pueden funcionar para permitir la realización de las operaciones pertinentes en un entorno de "computación en nube" o de "software como servicio" (SaaS). Por ejemplo, al menos algunas de las operaciones pueden realizarse mediante un grupo de ordenadores (como ejemplos de máquinas que incluyen procesadores), siendo estas operaciones accesibles a través de una red (por ejemplo, Internet) y por medio de una o más interfaces adecuadas (por ejemplo, API).
APARATO Y SISTEMA ELECTRÓNICOS
Las formas de realización de ejemplo pueden implementarse en circuitos electrónicos digitales, o en hardware, firmware o software informáticos, o en combinaciones de los mismos. Formas de realización de ejemplo pueden implementarse usando un producto de programa informático, por ejemplo un programa informático incorporado de manera tangible en un soporte de información, por ejemplo en un medio legible por máquina, para su ejecución por, o para controlar el funcionamiento de, un aparato de procesamiento de datos, por ejemplo un procesador programable, un ordenador o múltiples ordenadores.
Un programa informático puede estar escrito en cualquier tipo de lenguaje de programación, incluidos lenguajes compilados o interpretados, y puede implementarse de cualquier forma, incluso como un programa independiente o como un módulo, subrutina u otra unidad adecuada para su uso en un entorno informático. Un programa informático puede implementarse para ejecutarse en un ordenador o en múltiples ordenadores de un mismo emplazamiento o para distribuirse en múltiples emplazamientos e interconectarse mediante una red de comunicaciones.
En formas de realización de ejemplo, las operaciones pueden ser realizadas por uno o más procesadores programables que ejecutan un programa informático para realizar funciones que operan con datos de entrada y generan datos de salida. Las operaciones de método también pueden ser realizadas por, y los aparatos de las formas de realización de ejemplo pueden ser implementados como, circuitos lógicos de propósito especial, por ejemplo una FPGA o un ASIC.
El sistema informático puede incluir clientes y servidores. Un cliente y un servidor suelen estar alejados el uno del otro e interactúan típicamente a través de una red de comunicación. La relación de cliente y servidor surge en virtud de los programas informáticos que se ejecutan en los ordenadores respectivos y que tienen una relación cliente-servidor entre sí. En las formas de realización que implementan un sistema informático programable, se apreciará que merecen consideración tanto las arquitecturas de hardware como las de software. Específicamente, se apreciará que la elección de si implementar determinada funcionalidad en hardware configurado de forma permanente (por ejemplo, un ASIC), en hardware configurado de forma temporal (por ejemplo una combinación de software y un procesador programable), o en una combinación de hardware configurado de forma permanente y temporal puede ser una elección de diseño. A continuación se exponen arquitecturas de hardware (por ejemplo, máquinas) y software que pueden implementarse en diversas formas de realización de ejemplo.
EJEMPLO DE ARQUITECTURA DE MÁQUINA Y DE MEDIO LEGIBLE POR MÁQUINA
La FIG. 11 es un diagrama de bloques de una máquina en la forma de ejemplo de un sistema informático 1100 en el cual se pueden ejecutar instrucciones 1124 para hacer que la máquina realice una cualquiera o más de las metodologías analizadas en el presente documento. En formas de realización alternativas, la máquina funciona como un dispositivo autónomo o puede estar conectada (por ejemplo, en red) a otras máquinas. En una implementación en red, la máquina puede funcionar en calidad de servidor o de máquina cliente en un entorno de red cliente-servidor, o como una máquina homóloga en un entorno de red entre pares (o distribuida). La máquina puede ser un ordenador personal (PC), un PC tipo tableta, un descodificador (STB), un asistente digital personal (PDA), un teléfono móvil, un dispositivo web, un encaminador, conmutador o puente de red, o cualquier máquina capaz de ejecutar instrucciones (secuenciales o de otro tipo) que especifiquen acciones que deba realizar dicha máquina. Además, aunque solo se ilustra una máquina, también se considerará que el término "máquina" incluye cualquier agrupación de máquinas que ejecuten de manera individual o conjunta un conjunto (o múltiples conjuntos) de instrucciones para llevar a cabo una cualquiera o más de las metodologías analizadas en el presente documento.
El sistema informático 1100 de ejemplo incluye un procesador 1102 (por ejemplo, una unidad central de procesamiento (CPU), una unidad de procesamiento gráfico (GPU) o ambas), una memoria principal 1104 y una memoria estática 1106, que se comunican entre sí por medio de un bus 1108. El sistema informático 1100 puede incluir además una unidad de visualización de vídeo 1110 (por ejemplo, una pantalla de cristal líquido (LCD) o un tubo de rayos catódicos (CRT)). El sistema informático 1100 también incluye un dispositivo de entrada alfanumérica 1112 (por ejemplo, un teclado o una pantalla táctil), un dispositivo de navegación (o control del cursor) de interfaz de usuario (UI) 1114 (por ejemplo, un ratón), una unidad de almacenamiento 1116, un dispositivo de generación de señales 1118 (por ejemplo, un altavoz) y un dispositivo de interfaz de red 1120.
MEDIO LEGIBLE POR MÁQUINA
La unidad de almacenamiento 1116 incluye un medio legible por máquina 1122 en el que se almacenan uno o más conjuntos de estructuras de datos e instrucciones 1124 (por ejemplo, software) que representan o utilizan una o más de las metodologías o funciones descritas en el presente documento. Las instrucciones 1124 también pueden residir, total o al menos parcialmente, dentro de la memoria principal 1104 y/o dentro del procesador 1102 durante su ejecución por el sistema informático 1100, donde la memoria principal 1104 y el procesador 1102 también constituyen medios legibles por máquina 1122.
Mientras que el medio legible por máquina 1122 se muestra en una forma de realización de ejemplo como un único medio, el término "medio legible por máquina" puede incluir un único medio o múltiples medios (por ejemplo, una base de datos centralizada o distribuida, y/o memorias caché y servidores asociados) que almacenan las una o más instrucciones 1124 o estructuras de datos. Se entenderá que el término "medio legible por máquina" también incluye cualquier medio tangible que sea capaz de almacenar, codificar o llevar instrucciones 1124 para su ejecución por la máquina y que hagan que la máquina lleve a cabo una cualquiera o más de las metodologías de la presente divulgación, o que sea capaz de almacenar, codificar o llevar estructuras de datos utilizadas por dichas instrucciones 1124 o asociadas a las mismas. En consecuencia, se entenderá que el término "medio legible por máquina" incluye, pero sin limitarse a, memorias de estado sólido y medios ópticos y magnéticos. Ejemplos específicos de medios legibles por máquina 1122 incluyen memoria no volátil, incluyendo a modo de ejemplo dispositivos de memoria semiconductores, por ejemplo memoria de solo lectura programable borrable (EPROM), memoria de solo lectura programable eléctricamente borrable (EEPROM) y dispositivos de memoria flash; discos magnéticos tales como discos duros internos y discos extraíbles; discos magnetoópticos; y discos de memoria de solo lectura de disco compacto (CD-ROM) y de memoria de solo lectura en disco versátil digital (DVD-ROM). Un medio legible por máquina no es un medio de transmisión.
MEDIO DE TRANSMISIÓN
Además, las instrucciones 1124 pueden transmitirse o recibirse a través de una red de comunicaciones 1126 usando un medio de transmisión. Las instrucciones 1124 pueden transmitirse usando el dispositivo de interfaz de red 1120 y uno cualquiera de una serie de protocolos de transferencia ampliamente conocidos (por ejemplo, el protocolo de transporte de hipertexto (HTTP)). Ejemplos de redes de comunicación incluyen una red de área local (LAN), una red de área amplia (WAN), Internet, redes de telefonía móvil, redes telefónicas convencionales (POTS) y redes de datos inalámbricas (por ejemplo, redes WiFi y WiMax). Se entenderá que el término "medio de transmisión" incluye cualquier medio intangible capaz de almacenar, codificar o llevar instrucciones 1124 para su ejecución por la máquina, e incluye señales de comunicación digitales o analógicas u otros medios intangibles para facilitar la comunicación de dicho software.
Claims (12)
1. Un método (700, 900) para proporcionar un entorno de ejecución de confianza, TEE, comprendiendo el método:
preinicializar (710, 910), mediante un procesador, un grupo de TEE, incluyendo la preinicialización de cada TEE del grupo de TEE la asignación de memoria de un dispositivo de almacenamiento para el TEE; después de la preinicialización del grupo de TEE, recibir, mediante el procesador, una solicitud (720, 920); y en respuesta a la solicitud:
seleccionar (730, 930), mediante el procesador, un TEE del grupo preinicializado de TEE; y proporcionar (740, 940) acceso, mediante el procesador, al TEE seleccionado;
comprendiendo además:
antes de proporcionar acceso al TEE seleccionado, modificar el TEE seleccionado,
en donde la modificación del TEE seleccionado comprende:
modificar el TEE seleccionado en base a información de la solicitud (720, 920);
asignar una clave de cifrado al TEE seleccionado; y
cifrar la memoria asignada al TEE seleccionado usando la clave de cifrado;
en donde la clave de cifrado es una clave de cifrado efímera,
en donde la clave de cifrado se genera dentro del procesador durante el arranque y nunca se almacena fuera del procesador.
2. El método de la reivindicación 1, en donde la modificación del TEE seleccionado comprende iniciar el TEE seleccionado.
3. El método de la reivindicación 1 o de la reivindicación 2, en donde la modificación del TEE seleccionado comprende copiar (830) datos o código en la memoria asignada para el TEE.
4. El método de una cualquiera de las reivindicaciones 1 a 3, en donde:
la preinicialización del grupo de TEE comprende copiar un estado de un TEE plantilla a cada TEE del grupo de TEE.
5. El método de la reivindicación 4, en donde el TEE plantilla comprende un contenido y una disposición iniciales de memoria para una función como servicio, FaaS.
6. El método de la reivindicación 4 o 5, en donde el procesador impide la ejecución del TEE plantilla.
7. El método de una cualquiera de las reivindicaciones 4 a 6, que comprende además:
crear el TEE plantilla marcado como de solo lectura.
8. El método de una cualquiera de las reivindicaciones 1 a 7, que comprende además:
en base a una determinación de que la ejecución del TEE seleccionado ha finalizado, restaurar el TEE seleccionado a un estado de TEE plantilla.
9. El método de una cualquiera de las reivindicaciones 1 a 8, que comprende además:
recibir una solicitud (720, 920) para liberar el TEE seleccionado; y
en respuesta a la solicitud (720, 920) de liberar el TEE seleccionado, devolver el TEE seleccionado al grupo de TEE.
10. El método de una cualquiera de las reivindicaciones 1 a 9, que comprende además:
recibir un valorhashprecalculado;
determinar un valorhashde un estado de memoria binario; y
en base al valorhashdeterminado y al valorhashprecalculado, copiar el estado de memoria binario de la memoria no segura al TEE seleccionado.
11. Un aparato que comprende medios para realizar un método como el reivindicado en cualquiera de las reivindicaciones anteriores.
12. Un medio no transitorio legible por ordenador que tiene instrucciones que, cuando se ejecutan, implementan un método o realizan un aparato como se reivindica en cualquier reivindicación anterior.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/131,716 US20210110070A1 (en) | 2020-12-22 | 2020-12-22 | Reducing latency of hardware trusted execution environments |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2995460T3 true ES2995460T3 (en) | 2025-02-10 |
Family
ID=75383997
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES21197114T Active ES2995460T3 (en) | 2020-12-22 | 2021-09-16 | Reducing latency of hardware trusted execution environments |
Country Status (8)
| Country | Link |
|---|---|
| US (2) | US20210110070A1 (es) |
| EP (2) | EP4145267A1 (es) |
| JP (2) | JP2022099241A (es) |
| KR (2) | KR20220091356A (es) |
| CN (2) | CN114661452A (es) |
| ES (1) | ES2995460T3 (es) |
| PL (1) | PL4020156T3 (es) |
| TW (2) | TWI874839B (es) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11847253B2 (en) * | 2020-11-30 | 2023-12-19 | Red Hat, Inc. | Efficient launching of trusted execution environments |
| US12361118B2 (en) * | 2020-11-30 | 2025-07-15 | Red Hat, Inc. | Efficient launching of trusted execution environments |
| US12271473B2 (en) * | 2021-09-15 | 2025-04-08 | EMC IP Holding Company LLC | Leased infrastructure trust domain audits |
| US12225111B2 (en) * | 2022-03-08 | 2025-02-11 | SanDisk Technologies, Inc. | Authorization requests from a data storage device to multiple manager devices |
| US20240202314A1 (en) * | 2022-12-19 | 2024-06-20 | Intel Corporation | Device, method, and system to determine an access to a trusted execution environment |
| JP2025139722A (ja) * | 2024-03-13 | 2025-09-29 | 株式会社日立製作所 | 計算機システム、情報処理方法、及び情報処理プログラム |
Family Cites Families (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7257718B2 (en) * | 2003-05-12 | 2007-08-14 | International Business Machines Corporation | Cipher message assist instructions |
| JP4407956B2 (ja) | 2005-10-31 | 2010-02-03 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理方法および情報処理装置 |
| US9633210B2 (en) * | 2013-09-13 | 2017-04-25 | Microsoft Technology Licensing, Llc | Keying infrastructure |
| CN106415575B (zh) * | 2014-06-25 | 2020-03-20 | 英特尔公司 | 硬件配置报告系统 |
| US20160036826A1 (en) * | 2014-07-29 | 2016-02-04 | Mcafee, Inc. | Secure content packaging using multiple trusted execution environments |
| US9775029B2 (en) * | 2014-08-22 | 2017-09-26 | Visa International Service Association | Embedding cloud-based functionalities in a communication device |
| US9594927B2 (en) * | 2014-09-10 | 2017-03-14 | Intel Corporation | Providing a trusted execution environment using a processor |
| US9842065B2 (en) * | 2015-06-15 | 2017-12-12 | Intel Corporation | Virtualization-based platform protection technology |
| US10389746B2 (en) * | 2015-09-28 | 2019-08-20 | Microsoft Technology Licensing, Llc | Multi-tenant environment using pre-readied trust boundary components |
| US10754703B2 (en) * | 2015-12-22 | 2020-08-25 | Mcafee, Llc | Trusted computing resource meter |
| CN107870788B (zh) * | 2016-09-26 | 2020-10-02 | 展讯通信(上海)有限公司 | 多可信执行环境下终端设备的启动方法和终端设备 |
| US20180129524A1 (en) * | 2016-11-10 | 2018-05-10 | International Business Machines Corporation | Managing pre-allocated virtual machine instance pools |
| US10528722B2 (en) * | 2017-05-11 | 2020-01-07 | Microsoft Technology Licensing, Llc | Enclave pool shared key |
| US10706143B2 (en) * | 2017-05-19 | 2020-07-07 | Intel Corporation | Techniques for secure-chip memory for trusted execution environments |
| US12126736B2 (en) * | 2017-11-03 | 2024-10-22 | Microsoft Technology Licensing, Llc | Provisioning trusted execution environment(s) based on chain of trust including platform |
| US11138132B2 (en) * | 2018-06-20 | 2021-10-05 | Intel Corporation | Technologies for secure I/O with accelerator devices |
| US11443182B2 (en) * | 2018-06-25 | 2022-09-13 | International Business Machines Corporation | Privacy enhancing deep learning cloud service using a trusted execution environment |
| GB2579682B (en) * | 2019-03-25 | 2021-03-24 | Trustonic Ltd | Trusted execution environment migration method |
| CN110392889B (zh) * | 2019-03-26 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 用于区块链网络的基于现场可编程门阵列的可信执行环境 |
| US10878134B2 (en) * | 2019-03-29 | 2020-12-29 | Intel Corporation | Technologies for controlling memory access transactions received from one or more I/O devices |
| US12003495B2 (en) * | 2019-04-30 | 2024-06-04 | Visa International Service Association | Decentralized processing of interactions on delivery |
| US11295014B2 (en) * | 2019-05-08 | 2022-04-05 | Baidu Usa Llc | TPM-based secure multiparty computing system using a non-bypassable gateway |
| CN110929266B (zh) * | 2019-11-29 | 2021-09-03 | 广州小鹏汽车科技有限公司 | 基于安全加固架构的系统、加解密方法、车联网终端和车辆 |
| US11556654B2 (en) * | 2019-12-23 | 2023-01-17 | Mediatek Inc. | Security schemes for multiple trusted-execution-environments (TEEs) and multiple rich-execution-environments (REEs) |
| US11163569B2 (en) * | 2019-12-28 | 2021-11-02 | Intel Corporation | Hardware apparatuses, methods, and systems for individually revocable capabilities for enforcing temporal memory safety |
| US11436343B2 (en) * | 2019-12-31 | 2022-09-06 | Arm Limited | Device, system, and method of policy enforcement for rich execution environment |
| CN111245813B (zh) * | 2020-01-07 | 2022-04-29 | 北京数字认证股份有限公司 | 密码资源池系统、加密方法、电子设备及存储介质 |
| US11620411B2 (en) * | 2020-03-24 | 2023-04-04 | Red Hat, Inc. | Elastic launch for trusted execution environments |
| US11971980B2 (en) * | 2020-05-28 | 2024-04-30 | Red Hat, Inc. | Using trusted execution environments to perform a communal operation for mutually-untrusted devices |
-
2020
- 2020-12-22 US US17/131,716 patent/US20210110070A1/en active Pending
-
2021
- 2021-09-16 EP EP22202941.5A patent/EP4145267A1/en active Pending
- 2021-09-16 ES ES21197114T patent/ES2995460T3/es active Active
- 2021-09-16 EP EP21197114.8A patent/EP4020156B1/en active Active
- 2021-09-16 PL PL21197114.8T patent/PL4020156T3/pl unknown
- 2021-09-23 TW TW111142532A patent/TWI874839B/zh active
- 2021-09-23 TW TW110135357A patent/TWI890857B/zh active
- 2021-10-11 JP JP2021167009A patent/JP2022099241A/ja active Pending
- 2021-11-18 CN CN202111369972.4A patent/CN114661452A/zh active Pending
- 2021-11-18 CN CN202211346878.1A patent/CN115794375A/zh active Pending
- 2021-11-22 KR KR1020210161155A patent/KR20220091356A/ko active Pending
-
2022
- 2022-09-22 US US17/950,826 patent/US20230015537A1/en active Pending
- 2022-10-25 KR KR1020220138601A patent/KR102837896B1/ko active Active
- 2022-10-31 JP JP2022174288A patent/JP7640186B2/ja active Active
Also Published As
| Publication number | Publication date |
|---|---|
| US20230015537A1 (en) | 2023-01-19 |
| TW202227998A (zh) | 2022-07-16 |
| TW202311999A (zh) | 2023-03-16 |
| PL4020156T3 (pl) | 2025-02-24 |
| EP4145267A1 (en) | 2023-03-08 |
| TWI890857B (zh) | 2025-07-21 |
| TWI874839B (zh) | 2025-03-01 |
| JP2022099241A (ja) | 2022-07-04 |
| EP4020156B1 (en) | 2024-10-16 |
| JP7640186B2 (ja) | 2025-03-05 |
| CN115794375A (zh) | 2023-03-14 |
| KR20220151126A (ko) | 2022-11-14 |
| US20210110070A1 (en) | 2021-04-15 |
| KR20220091356A (ko) | 2022-06-30 |
| CN114661452A (zh) | 2022-06-24 |
| EP4020156A1 (en) | 2022-06-29 |
| KR102837896B1 (ko) | 2025-07-25 |
| JP2023015177A (ja) | 2023-01-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2995460T3 (en) | Reducing latency of hardware trusted execution environments | |
| US10708051B2 (en) | Controlled access to data in a sandboxed environment | |
| CA2922490C (en) | Virtual machine manager facilitated selective code integrity enforcement | |
| TWI911286B (zh) | 在可信執行環境內隔離記憶體 | |
| CN108429719B (zh) | 密钥保护方法及装置 | |
| US8799898B2 (en) | Methods and apparatus for binding applications to a cloud computing environment | |
| TW201617957A (zh) | 鑑別變數之管理技術 | |
| TWI786373B (zh) | 用於安全介面控制之安全執行客體所有者控制之電腦實施方法、電腦系統及電腦程式產品 | |
| US20190384923A1 (en) | Mechanism to enable secure memory sharing between enclaves and i/o adapters | |
| CN115495395A (zh) | 用于保护计算系统存储器的方法和系统以及存储介质 | |
| US9147066B1 (en) | Systems and methods for providing controls for application behavior | |
| US11907405B2 (en) | Secure data storage device access control and sharing | |
| US20250306969A1 (en) | Access control to a secured portion of a memory device for abstracted resources of a data processing system | |
| Krishan et al. | Multipersona Hypovisors: Securing Mobile Devices through High-Performance Light-Weight Subsystem Isolation |