ES2692900T3 - Certificación criptográfica de entornos de ejecución alojados seguros - Google Patents
Certificación criptográfica de entornos de ejecución alojados seguros Download PDFInfo
- Publication number
- ES2692900T3 ES2692900T3 ES12858587.4T ES12858587T ES2692900T3 ES 2692900 T3 ES2692900 T3 ES 2692900T3 ES 12858587 T ES12858587 T ES 12858587T ES 2692900 T3 ES2692900 T3 ES 2692900T3
- Authority
- ES
- Spain
- Prior art keywords
- processor
- memory
- enabled
- protected
- hardware
- 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
-
- 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/3263—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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
Un método que comprende: establecer, a petición de un sistema cliente (112), mediante un procesador con seguridad habilitada (106) de un sistema informático, un área de la memoria protegida mediante hardware dentro de una memoria del sistema informático, estando configurado el procesador habilitado con seguridad para mediar, a través de una o más funciones de puerta, el acceso al área de la memoria protegida mediante hardware mediante todo el código que se ejecuta fuera del área de la memoria protegida mediante hardware; dar instrucciones al procesador con seguridad habilitada, en base, al menos, a una solicitud de un sistema cliente, para incluir, en un estado inicial, el software y los datos identificados por la solicitud del sistema cliente en el área de la memoria protegida mediante hardware; dar instrucciones a una parte del software identificado por la solicitud del sistema cliente que se incluye en el área de la memoria protegida mediante hardware para ejecutar, la porción del software configurado, tras la ejecución, para hacer que el procesador con seguridad habilitada genere una certificación criptográfica de todo el contenido del área de la memoria protegida mediante hardware en el estado inicial; recibir la certificación criptográfica del procesador con seguridad habilitada, incluyendo, al menos una parte de la certificación criptográfica, una autenticación creada por el procesador con seguridad habilitada utilizando una clave privada del procesador con seguridad habilitada; y proporcionar la certificación criptográfica al sistema cliente (112), siendo la certificación criptográfica utilizable por el sistema cliente, en base a una comparación de al menos la porción de la certificación criptográfica con una indicación criptográfica conocida del Software y datos identificados en la solicitud en el estado inicial, para determinar que el contenido del área de la memoria protegida mediante hardware incluye, en el estado inicial, solo el software y los datos identificados en la solicitud, siendo la certificación utilizable por el sistema cliente, en base, al menos, en una clave pública asociada con el procesador con seguridad habilitada, para determinar que la certificación criptográfica de todos los contenidos del área de la memoria protegida mediante hardware en el estado inicial fueron creados por el procesador con seguridad habilitada.
Description
5
10
15
20
25
30
35
40
45
50
55
DESCRIPCION
Certificacion criptografica de entornos de ejecucion alojados seguros Antecedentes
En un entorno informatico convencional, el usuario controla el acceso ffsico a los sistemas informaticos del usuario. El usuario conffa, hasta cierto punto, en el hardware y el software en sus centros de datos. Esta confianza, combinada con el control ffsico de los dispositivos, proporciona al usuario un cierto grado de confianza en que sus sistemas informaticos son seguros.
En un entorno informatico alojado (hosted, en ingles), el usuario ffpicamente no tiene control ffsico sobre los sistemas informaticos utilizados para ejecutar las aplicaciones del usuario. El usuario, ademas de confiar en el hardware y software que se ejecuta en el entorno informatico alojado, no tiene eleccion, excepto confiar en que el proveedor informatico alojado no manipule o espfe el codigo y los datos del usuario. El usuario tambien conffa en el proveedor informatico alojado para proporcionar una seguridad ffsica suficiente para evitar que personas no autorizadas extraigan los discos duros o manipulen el sistema. Y los usuarios depositan su confianza en el proveedor informatico alojado para evitar la manipulacion o el robo de sus datos por parte de terceros. Un proveedor informatico alojado puede incurrir, por lo tanto, en una cierta cantidad de responsabilidad, en la forma de garanffas y similares, para animar a los usuarios a ejecutar su software en el entorno informatico alojado por el proveedor.
El documento US 2011/302415 A1 da a conocer un metodo para hacer seguras maquinas virtuales de clientes en una nube de multiples usuarios. Se proporciona un primer disco virtual para una primera maquina virtual y se proporciona un segundo disco virtual para una segunda maquina virtual. Cada disco virtual comprende uno o mas archivos de datos que contienen una imagen de disco (o parte de ella) para el disco virtual de cada maquina virtual. Los archivos de imagen del disco virtual son almacenados en un almacen de datos en forma cifrada, y se accede a los mismos a traves de uno de los adaptadores de bus de anfitrion (HBA - Host Bus Adapter, en ingles) sobre la red. Se debera obtener una clave de cifrado del cliente o del tercero de confianza del cliente antes de que las maquinas virtuales puedan ser operadas (realizar operaciones de entrada / salida) en los datos almacenados en los discos virtuales. Se debe reconocer que los datos descifrados son almacenados en memoria y puestos a disposicion de las maquinas virtuales, pero seguiran siendo inaccesibles por el administrador.
Breve resumen
Este resumen se proporciona para introducir conceptos simplificados de la presente invencion, que se describen con mas detalle mas adelante en la Descripcion Detallada. Este resumen no pretende identificar caractensticas esenciales del objetivo reivindicado, ni esta destinado a su utilizacion en la determinacion del alcance del objeto reivindicado.
Las realizaciones de la presente invencion permiten un servicio de alojamiento (hosting, en ingles) de aplicaciones para certificar de manera criptografica que proporciona un entorno de ejecucion seguro que es resistente al espionaje y a la manipulacion de manera que incluye, por ejemplo, solo el codigo y los datos de confianza del usuario. Para atender una solicitud del sistema del cliente para establecer un entorno de ejecucion seguro, se crea una instancia de area protegida de la memoria mediante un procesador con seguridad habilitada. El sistema informatico alojado pasa por un protocolo de autenticacion para proporcionar hechos verificables acerca del procesador con seguridad habilitada y el software y los datos en el entorno de ejecucion seguro, tal como el fabricante y el modelo del procesador con seguridad habilitada y la identidad del distribuidor o codigo del software. Tras la finalizacion con exito del protocolo de autenticacion, se establece un canal de comunicacion protegido criptograficamente entre el sistema del cliente y el entorno de ejecucion seguro, y se ejecutan una o mas aplicaciones dentro del entorno de ejecucion seguro.
El servicio de alojamiento de la aplicacion puede utilizar diversos certificados de confianza, incluidos los certificados de una autoridad confiable y uno o mas intermediarios, para establecer una cadena de confianza del procesador con seguridad habilitada a la autoridad de confianza Estos certificados de confianza pueden ser utilizados colectivamente en el protocolo de autenticacion para certificar la seguridad del procesador con seguridad habilitada. La aplicacion del servicio de alojamiento puede ser auditada para verificar que los procesadores habilitados con seguridad del servicio de alojamiento de la aplicacion son hechos seguros ffsicamente y no han sido manipulados. El auditor puede proporcionar un certificado de auditona que puede ser utilizado como parte del protocolo de autenticacion. Alternativamente, el auditor puede hacer que los resultados de la auditona esten disponibles de otras maneras (por ejemplo, publicarlos en internet). El servicio de alojamiento de la aplicacion puede utilizar (en el protocolo de autenticacion) credenciales criptograficas para el procesador, producidas por el fabricante del hardware, que avala la integridad y el correcto funcionamiento del procesador con seguridad habilitada.
Breve descripcion de los dibujos
La Descripcion Detallada se expone haciendo referencia a las figuras adjuntas. En las figuras, el dfgito o dfgitos mas a la izquierda de un numero de referencia identifican la figura en la que aparece por primera vez el numero de
5
10
15
20
25
30
35
40
45
50
referencia. La utilizacion de los mismos numeros de referencia en diferentes figuras indica elementos similares o identicos.
La figura 1 es un diagrama esquematico de un sistema a modo de ejemplo que se puede utilizar para proporcionar un entorno de ejecucion seguro.
La figura 2 es un diagrama de bloques de un sistema informatico a modo de ejemplo que se puede utilizar para proporcionar un servidor de alojamiento de la aplicacion segun las realizaciones.
La figura 3 es un diagrama de bloques de un sistema informatico a modo de ejemplo que se puede utilizar para proporcionar un sistema cliente de acuerdo con las realizaciones.
La figura 4 es un diagrama de flujo que muestra un proceso a modo de ejemplo para crear una instancia de un entorno de ejecucion seguro.
La figura 5 es un diagrama de flujo que muestra un proceso a modo de ejemplo para verificar el establecimiento de un entorno de ejecucion seguro.
La figura 6 muestra un entorno para la migracion de un area protegida de la memoria de acuerdo con las realizaciones.
La figura 7 es un diagrama de flujo que muestra un proceso a modo de ejemplo para migrar un entorno de ejecucion seguro.
La figura 8 es un diagrama de flujo que muestra un proceso a modo de ejemplo para recrear un entorno de ejecucion seguro.
Descripcion detallada
Descripcion general
Tal como se explico anteriormente, un usuario deposita un cierto grado de confianza en un proveedor informatico alojado convencional para ejecutar de manera segura las aplicaciones del usuario y salvaguardar los datos del usuario. Las realizaciones de la presente Descripcion Detallada permiten que el servicio informatico alojado proporcione una certificacion criptografica de que el entorno de ejecucion del usuario es resistente tanto a la manipulacion como al espionaje, y de que el entorno de ejecucion del usuario se establece con el contenido que el cliente solicita y sin codigo o datos no confiables. Proporcionar un entorno de ejecucion seguro que este libre de espionaje y manipulacion puede, por sf solo, permitir que un proveedor informatico alojado infalible configure el entorno de ejecucion con codigo no confiable que pueda espiar o manipular el codigo del usuario y los datos desde dentro. Y el simple hecho de proporcionar un entorno de ejecucion sin nada excepto el codigo y los datos de confianza del usuario puede, por sf solo, permitir que el proveedor alojado o un tercero manipulen o analicen el contenido del entorno de ejecucion desde fuera del entorno de ejecucion. Pero las realizaciones de la presente invencion permiten que un proveedor informatico alojado certifique criptograficamente que proporciona un entorno de ejecucion seguro que es resistente al espionaje y manipulacion externos y que no incluye codigos y datos no confiables.
Los sistemas informaticos de acuerdo con las realizaciones incluyen un procesador con seguridad habilitada configurado para crear, para un sistema cliente (tal como un dispositivo informatico controlado por un usuario o consumidor informatico alojado), un entorno informatico seguro que incluye un area protegida de la memoria. El codigo y los datos seleccionados por el sistema cliente son almacenados en un area protegida de la memoria y se puede acceder al codigo almacenado en el area protegida de la memoria, pero es inaccesible para todos los codigos que se ejecutan fuera del area protegida de la memoria. Este ultimo incluye el codigo que se ejecuta en otras areas protegidas de la memoria que puedan existir. El codigo en el entorno de ejecucion seguro puede ser elegido por el sistema cliente, por el proveedor de servicios, por terceros o por una combinacion de todos ellos. Por ejemplo, el sistema cliente podna elegir ejecutar solo su codigo de aplicacion (incluidas las librenas de soporte) en el entorno de ejecucion seguro. La ejecucion de este codigo esta protegida de todos los demas codigos del ordenador.
Los hilos pueden pasar del codigo de ejecucion fuera del area protegida de la memoria al codigo de ejecucion dentro del area protegida de la memoria solo a traves de funciones de puerta de entrada espedficas mediadas por el procesador con seguridad habilitada. Del mismo modo, los hilos pasan de un codigo en ejecucion dentro del area protegida de la memoria al codigo en ejecucion fuera del area protegida de la memoria a traves de funciones espedficas de la puerta de salida por medio del procesador con seguridad habilitada. El codigo que se ejecuta en el area protegida de la memoria no tiene privilegios especiales, excepto la capacidad de acceder al codigo y a los datos en el area protegida de la memoria. Por ejemplo, el codigo que se ejecuta en el area protegida de la memoria no necesita ser ejecutado en el modo de kernel o en el modo privilegiado del procesador, ni tampoco necesita acceso a instrucciones, tal como instrucciones de E/S, a las que solo se puede acceder desde el modo de kernel del procesador o modo privilegiado. El area de la memoria protegida mediante hardware es llevada a un estado inicial
5
10
15
20
25
30
35
40
45
50
55
conocido y, a continuacion, cargada con un modulo de cargador y uno o mas parametros especificados por el sistema cliente del usuario para establecer un estado de activacion solicitado del area protegida de la memoria.
El entorno de ejecucion confiable proporciona un mecanismo por el cual el codigo de confianza del usuario que es ejecutado dentro del area protegida de la memoria certifica al sistema cliente que se esta ejecutando dentro de un entorno de ejecucion seguro. El procesador con seguridad habilitada ejecuta un protocolo de autenticacion, que implica proporcionar al sistema cliente una certificacion de que se ha establecido un entorno de ejecucion seguro y de que, en un estado de activacion inicial del entorno de ejecucion seguro, solo se ejecuta el software identificado (de manera explfcita o implfcita) en una solicitud del usuario cliente. El protocolo de autenticacion puede involucrar al cliente o a otras partes. El proposito del protocolo de autenticacion es verificar criptograficamente el sistema cliente (u otro sistema) que el entorno de ejecucion seguro tiene propiedades particulares. Estas propiedades pueden incluir, en varios ejemplos no limitativos:
1. El fabricante y modelo del procesador con seguridad habilitada.
2. El codigo y los datos con los que se inicio el entorno de ejecucion seguro.
3. El proveedor de software y otra informacion sobre el codigo y los datos con los que se inicio el entorno de ejecucion seguro. Por ejemplo,
a. el software fue escrito por (y firmado por) un desarrollador / distribuidor concreto de software
b. el software es una version particular con parches de seguridad de una fecha en particular. En diversas realizaciones no limitativas, el proveedor de software firma certificados que contienen resumenes, tal como autenticadores criptograficos de los modulos de software relevantes.
Ejemplos no limitativos de protocolos de autenticacion incluyen:
• Direct Anonymous Attestation (referencia: E. Brickell, J. Camenish, L. Chen. Autenticacion anonima directa. En las actas de la 11a conferencia ACM sobre seguridad de los ordenadores y en las comunicaciones (ACM conference on computer and communications security). Paginas 132 a 145, 2004.
• Protocolos de clave publica estandar que incluyen certificados de autenticacion firmados con la clave privada del procesador con seguridad habilitada.
A continuacion, se describen diversas realizaciones de un protocolo de autenticacion. Las realizaciones no se limitan a las siguientes realizaciones, y el protocolo de autenticacion descrito a continuacion puede incluir una funcionalidad adicional, tal como con cadenas de confianza basadas en una o mas autoridades de certificacion de confianza, sin apartarse del alcance de la presente Descripcion Detallada. Una vez que se crea una instancia del area protegida de la memoria con el estado de activacion solicitado, el procesador con seguridad habilitada produce un identificador que identifica el estado de activacion inicial de activacion de la memoria protegida mediante hardware, y almacena el identificador en una ubicacion accesible solo para el procesador con seguridad habilitada. El identificador puede incluir un resumen, tal como un autenticador criptografico (hash, en ingles), del estado de activacion del area protegida de la memoria. El identificador puede incluir una clave publica que el procesador de seguridad utilizo para descifrar los contenidos colocados en el area protegida de la memoria en el estado de activacion. El identificador puede ser algun otro identificador que identifique el estado de activacion.
El modulo de cargador es ejecutado, y hace que el procesador con seguridad habilitada cree un certificado de autenticacion firmado mediante una clave privada del procesador con seguridad habilitada. El certificado de autenticacion firmado es transmitido al sistema cliente y, por lo tanto, permite al sistema cliente verificar, utilizando una clave publica conocida del procesador con seguridad habilitada que se corresponde con la clave privada del procesador con seguridad habilitada, que el certificado de autenticacion esta firmado por el procesador con seguridad habilitada. El certificado de autenticacion firmado permite asimismo al sistema cliente verificar que el sistema cliente se comunica con un modulo de cargador que se ejecuta en un area protegida de la memoria creada por el procesador con seguridad habilitada. Por lo tanto, se forma una relacion de confianza entre el sistema cliente y el procesador con seguridad habilitada. Una cadena de confianza que incluye certificados adicionales de una autoridad de confianza, y posiblemente uno o mas intermediarios, puede ser utilizada en las realizaciones para establecer la relacion de confianza.
El certificado de autenticacion incluye el identificador del estado de activacion del area protegida de la memoria. El sistema cliente compara el identificador con un identificador conocido del estado de activacion solicitado para determinar que el estado de activacion del area protegida de la memoria es el estado de activacion solicitado, incluido el modulo de cargador y uno o mas parametros. Debido a que el certificado de autenticacion con el identificador esta firmado / cifrado con la clave privada del procesador con seguridad habilitada, y debido a que se establece una relacion de confianza entre el sistema cliente y el procesador con seguridad habilitada, el sistema cliente puede confiar en el identificador para determinar que el estado de activacion del area protegida de la memoria es el estado de activacion solicitado.
5
10
15
20
25
30
35
40
45
50
55
Por lo tanto, las realizaciones proporcionan al sistema cliente la verificacion de que el proveedor de servicios informaticos alojado establece un entorno de ejecucion de seguridad frente a la manipulacion y el espionaje, y que en el entorno de ejecucion seguro se crea una instancia con el estado de activacion solicitado. El certificado de autenticacion firmado proporciona al sistema cliente la verificacion de que el entorno de ejecucion seguro esta establecido. Y el identificador proporciona al sistema cliente la verificacion de que en el entorno de ejecucion seguro se crea una instancia con el estado de activacion solicitado. El sistema cliente, a continuacion, utiliza el entorno de ejecucion seguro para cargar y ejecutar las aplicaciones solicitadas.
Si bien el procesador con seguridad habilitada puede resistir ataques ffsicos ocasionales, puede ser vulnerable a la manipulacion ffsica. El sistema informatico alojado esta configurado, asimismo, en diversas realizaciones, para certificar al sistema cliente que el procesador con seguridad habilitada es ffsicamente seguro, por ejemplo, en una realizacion el sistema informatico alojado esta configurado para transmitir un certificado de auditor, firmado por una clave privada de la entidad auditora, declarando que el procesador con seguridad habilitada no ha sido manipulado ffsicamente durante un peffodo de tiempo espedfico. El personal de la entidad auditora puede monitorizar periodicamente o de manera continua el servicio informatico alojado para determinar que los procesadores con seguridad habilitada estan intactos ffsicamente. Por lo tanto, el certificado del auditor proporciona al sistema cliente grados adicionales de confianza en el entorno de ejecucion seguro. En otra realizacion, el sistema cliente presenta el certificado del procesador con seguridad habilitada directamente a un sistema informatico de la entidad auditora que solicita la verificacion de la seguridad ffsica del procesador. El sistema informatico de la entidad auditora responde con un certificado que verifica que el procesador con seguridad habilitada no ha sido manipulado ffsicamente.
El servicio de alojamiento de la aplicacion de acuerdo con varias realizaciones descritas en este documento solo ejecuta codigo en el entorno de ejecucion seguro que ha sido seleccionado por el sistema cliente. Una entidad asociada con el sistema cliente puede escribir todo el software que se ejecuta dentro del entorno de ejecucion seguro, o bien la entidad puede subcontratar porciones del software a proveedores de software en los que la entidad conffa. En un ejemplo no limitativo, el sistema cliente puede seleccionar una aplicacion de un proveedor de software de aplicacion confiable y un sistema operativo de la libreffa de un proveedor confiable de sistemas operativos. La entidad asociada con el sistema cliente se considera el distribuidor de software para las porciones del software creadas directamente por la entidad. Los distribuidores de software pueden proporcionar certificados para binarios firmados verificando que los archivos binarios de software son ciertamente los proporcionados por los distribuidores de software respectivamente, y que los binarios no han sido alterados.
Con estas divisiones de responsabilidad, el servicio de alojamiento de la aplicacion actua como un intermediario, pero en realidad no certifica la integridad de todos los componentes del sistema. El distribuidor de procesadores con seguridad habilitada certifica el entorno de ejecucion seguro. La entidad auditora certifica la seguridad ffsica del entorno de ejecucion seguro. Los proveedores de software certifican el software que se ejecuta en el entorno de ejecucion seguro. El servicio de alojamiento de la aplicacion puede realizar algunas, ninguna o todas estas funciones en diversas realizaciones. En las realizaciones, el proveedor del servicio de alojamiento de la aplicacion mantiene la disponibilidad de la instalacion informatica, lo que incluye proporcionar la instalacion informatica, la alimentacion y la conectividad de la red, y otras entidades, tales como los proveedores de hardware, los proveedores de software y entidades auditoras, proporcionan otros diversos aspectos de la seguridad de las aplicaciones que estan alojadas.
Ejemplos de servicios de alojamiento de la aplicacion incluyen instalaciones de alojamiento de Internet, proveedores de informatica en la nube, centros de datos corporativos subcontratados, centros de datos corporativos operados por contrato y redes de distribucion de contenido.
Los procesos, sistemas y dispositivos descritos en este documento pueden ser implementados de varias maneras. A continuacion, se proporcionan implementaciones a modo de ejemplo haciendo referencia a las siguientes figuras.
Entorno a modo de ejemplo para proporcionar un entorno de ejecucion seguro
La figura 1 es un diagrama esquematico de un sistema 100 a modo de ejemplo que puede ser utilizado para proporcionar un entorno de ejecucion seguro. Los aspectos del sistema 100 pueden ser implementados en varios tipos de dispositivos informaticos adecuados que pueden implementar un sistema informatico de alojamiento de la aplicacion, un sistema informatico cliente, etc. El dispositivo o dispositivos informaticos adecuados pueden incluir, o formar parte de, uno o mas ordenadores personales, servidores, parques de servidores, centros de datos, ordenadores de proposito especial, ordenadores de tableta, consolas de juegos, telefonos inteligentes, combinaciones de estos o cualquier otro dispositivo o dispositivos informaticos capaces de almacenar y ejecutar todo o parte de un entorno de ejecucion seguro.
Un servicio de alojamiento de la aplicacion 102 incluye una memoria 104 y un procesador con seguridad habilitada 106. La memoria 104 incluye un sistema operativo (OS - Operating System, en ingles) anfitrion 108 y un modulo de configuracion 110. Aunque el modulo de configuracion 110 se muestra en la figura 1 para estar separado del OS anfitrion 108, el modulo de configuracion 110 puede ser un componente del OS anfitrion 108. Asimismo, el servicio de alojamiento de la aplicacion 102 puede incluir multiples procesadores, incluidos varios procesadores de seguridad, tales como el procesador con seguridad habilitada 106. El OS anfitrion 108 y/o el modulo de
5
10
15
20
25
30
35
40
45
50
55
configuracion 110 pueden ser ejecutados en el procesador con seguridad habilitada 106, o en uno o mas de los otros procesadores no mostrados en la figura 1.
El sistema 100 realiza diversas funciones, tales como, entre otras, una o mas de las siguientes: (a) inicializar entornos de ejecucion seguros con codigo y datos; (b) recibir solicitudes de cliente para vincular una instancia de un entorno de ejecucion seguro a un sistema cliente y configurarlo para ejecutar el software del cliente; (c) vincular una instancia de un entorno de ejecucion seguro a un cliente y configurar el entorno de ejecucion seguro para ejecutar el software del cliente; (d) proporcionar al cliente una especificacion certificada del software que se ejecutara dentro del entorno de ejecucion seguro. Estas diversas funciones pueden ser realizadas en diferentes ordenes, dependiendo de las realizaciones espedficas. Ademas, las realizaciones espedficas pueden combinar algunas de las funciones.
En una realizacion, el servicio de alojamiento puede realizar la funcion (b) antes de realizar otras de las funciones mencionadas anteriormente. Cuando se recibe la solicitud de un cliente, el servicio de alojamiento inicializa un entorno de ejecucion seguro (accion a). El servicio de alojamiento puede incluir un codigo y/o datos (por ejemplo, parametros) suministrados en la solicitud del cliente en la inicializacion. Por lo tanto, la vinculacion (accion c) se puede realizar implfcitamente como parte de la accion (b). Alternativamente, el servicio de alojamiento puede inicializar el entorno de ejecucion seguro (accion a) con codigo y datos genericos (no espedficos para el cliente) y vincular el entorno de ejecucion seguro a un cliente (accion c) en una etapa separada.
En otra realizacion, el servicio de alojamiento inicializa uno o mas entornos de ejecucion seguros (accion a) con codigo y datos genericos. Estos codigo y datos genericos podnan proporcionar un entorno de tiempo de ejecucion generico para aplicaciones arbitrarias. Cuando se recibe una solicitud de cliente (accion b), el servicio de alojamiento selecciona uno de los entornos de ejecucion seguros inicializados anteriormente y lo vincula al cliente (accion c) enviandole el codigo o los datos de la solicitud del cliente.
Las acciones (c) y (d) se pueden combinar. Por ejemplo, las variantes de los protocolos de intercambio de claves autenticadas pueden ejecutar un protocolo de autenticacion. El protocolo de autenticacion proporciona al cliente propiedades verificables acerca del software y los datos del entorno de ejecucion seguro (accion d) y establece una clave criptografica compartida entre el entorno de ejecucion seguro y el cliente (accion c).
El siguiente ejemplo es una descripcion detallada de una clase de realizaciones. El modulo de configuracion 110 recibe una solicitud del sistema cliente 112, a traves de la red 114, para establecer un entorno de ejecucion seguro en el servicio de alojamiento 102 de la aplicacion. La red 114 puede ser la Internet publica, o algun otro tipo de red de conexion por cable o inalambrica. Las realizaciones no se limitan a ningun tipo o tipo de redes. La solicitud esta acompanada de una indicacion de un modulo de cargador 116 y de uno o mas parametros 118. La indicacion del modulo de cargador 116 puede ser un identificador para el modulo de cargador 116, o puede ser un binario de aplicacion del propio modulo de cargador 116, o algun otro indicador. En realizaciones en las que la identificacion del modulo de cargador 116 es un identificador, puede ser un identificador uniforme de recursos (URI - Uniform Resource Identifier, en ingles), como un localizador uniforme de recursos (URL - Uniform Resource Locator, en ingles), que identifica el modulo de cargador 116 y posiblemente una ubicacion en la que se puede encontrar el modulo de cargador 116.
El modulo de configuracion 110 hace que, en respuesta a la recepcion de la solicitud, el procesador con seguridad habilitada 106 cree una instancia de un area protegida de la memoria 120, que es un area de la memoria protegida mediante hardware, dentro de la memoria 104. El modulo de configuracion 110 proporciona el procesador con seguridad habilitada 106 con punteros hacia el modulo de cargador 116 y los parametros 118, e instruye al procesador con seguridad habilitada 106 para llevar el area protegida de la memoria 120 a un estado inicial conocido (tal como todas las direcciones de memoria dentro del area protegida de la memoria 120 y todos los registros apropiados dentro del procesador con seguridad habilitada 106 puesto a cero, o a algun otro estado inicial bien conocido, y para cargar el modulo de cargador 116 y los parametros 118 en el area protegida de la memoria 120, despues de llevar el area protegida de la memoria 120 al estado inicial bien conocido. La creacion de una instancia del area protegida de la memoria 120 primero en el estado inicial bien conocido y a continuacion la carga con el modulo de cargador 116 y los parametros 118 representa un estado de activacion solicitado del area protegida de la memoria 120. En otras palabras, representa el estado del entorno de ejecucion seguro que el dispositivo cliente especifica en su solicitud para configurar un entorno de ejecucion seguro.
La combinacion del area protegida de la memoria 120 y la ejecucion del codigo en la misma por parte del procesador con seguridad habilitada 106 representa el entorno de ejecucion seguro. Aunque el area protegida de la memoria 120 se muestra como parte de un area de memoria contigua que tambien incluye el OS anfitrion 108 y el modulo de configuracion 110, el area protegida de la memoria 120 puede formar parte, en realizaciones alternativas, de un area de memoria separada, tal como un area de memoria en el mismo circuito integrado que el procesador con seguridad habilitada 106 que afsla ffsicamente el area protegida de la memoria 120 del resto del servicio de alojamiento de la aplicacion 102.
El procesador con seguridad habilitada 106 puede estar configurado para cifrar y descifrar todos los datos escritos y lefdos, respectivamente, desde el area protegida de la memoria 120, para evitar el espionaje externo en el area protegida de la memoria 120. El procesador con seguridad habilitada 106 puede estar configurado asimismo para
5
10
15
20
25
30
35
40
45
50
55
60
producir resumenes criptograficos, u otros resumenes, de los datos escritos en el area protegida de la memoria 120 para verificar, tras la lectura del contenido del area protegida de la memoria 120, que los contenidos no han sido alterados.
Como parte del proceso de creacion de instancia, el procesador con seguridad habilitada 106 produce un identificador 122 que identifica el estado de activacion del area protegida de la memoria 120. El identificador puede ser, en diversas realizaciones, un resumen, tal como una autenticador criptografico, de los contenidos del area protegida de la memoria 120 en el estado de activacion. El identificador puede ser una clave publica correspondiente a una clave privada que se utilizo para firmar el software almacenado en el area protegida de la memoria 120. El estado de activacion incluye el modulo de cargador 116, los parametros 118 y cualquier otro codigo o datos situados en el area protegida de la memoria 120 tras la creacion de la instancia. El identificador 122 puede ser almacenado en una ubicacion que sea accesible solo para el procesador con seguridad habilitada 106, tal como en un registro o ubicacion de la memoria dentro del procesador con seguridad habilitada 106 que no sea accesible, excepto por el procesador con seguridad habilitada. 106, o quizas cifrado en un area de la memoria 104. En realizaciones en las que el identificador es un autenticador criptografico del contenido del area protegida de la memoria 104 en el estado de activacion, el procesador con seguridad habilitada produce el autenticador criptografico utilizando una funcion de creador de autenticador criptografico, tal como el algoritmo de resumen de mensaje, Message-Digest, MD5, algoritmos de creacion de autenticador criptografico seguro, Secure Hash Algorithms, sHA-0, SHA-1, SHA-2, u otra funcion de autenticador criptografico.
Tras la creacion de una instancia de area protegida de la memoria 120 con el modulo de cargador 116 y los parametros 118, el modulo de configuracion 110 instruye al procesador con seguridad habilitada 106 para que ejecute el modulo de cargador 116, por ejemplo, a traves de una funcion o puerta de entrada que utiliza el procesador con seguridad habilitada 106 para permitir que el entorno de ejecucion seguro reciba comunicaciones fuera del entorno de ejecucion seguro. Una instancia del modulo de cargador 116 es ejecutada en el procesador con seguridad habilitada y hace que el procesador cree un certificado de autenticacion 124 firmado mediante una clave privada 126 del procesador con seguridad habilitada (SEP - Security-Enabled Processor, en ingles). La clave privada del SEP 126 esta almacenada de manera permanente en el procesador con seguridad habilitada 106 de manera que solo sea accesible para el procesador con seguridad habilitada 106. Por lo tanto, mientras el procesador con seguridad habilitada 106 este ffsicamente intacto, una entidad que reciba el certificado de autenticacion 124 puede tener un alto grado de confianza de que el certificado de autenticacion 124 firmado esta firmado por el procesador con seguridad habilitada 106.
El certificado de autenticacion 124 puede incluir, entre otras cosas, el identificador 122. El modulo de cargador 116 transmite a continuacion el certificado de autenticacion al sistema cliente 112, a traves de una funcion de salida o puerta de salida empleada por el procesador con seguridad habilitada para permitir al entorno de ejecucion seguro comunicarse con el mundo exterior. De manera alternativa, el identificador 122 puede ser cifrado con la clave privada del SEP 126 y transmitido al sistema cliente 112 de manera separada del certificado de autenticacion 124 (que tambien estana firmado / cifrado utilizando la clave privada del SEP 126.
Tras la recepcion del certificado de autenticacion 124, el sistema cliente 112 lo descifra utilizando una clave publica del SEP 128 que se corresponde con la clave privada del SEP 126, del procesador con seguridad habilitada. A continuacion, se describe el medio por el cual el sistema cliente 112 obtiene la clave publica del SEP 128.
El sistema cliente 112 compara el identificador 122 contenido en el certificado de autenticacion 124 descifrado con un identificador conocido 130 del estado de activacion solicitado del entorno de ejecucion seguro. Una determinacion de que el identificador conocido 130 coincide con el identificador 122 proporciona al sistema cliente 112 un alto grado de confianza de que el estado de activacion real del area protegida de la memoria 120 coincide con el estado de activacion solicitado del area protegida de la memoria 120. En diversos ejemplos no limitativos, la verificacion con exito del identificador 122 proporciona al sistema cliente 112 la confianza de que el area protegida de la memoria 120 incluye el modulo de cargador 116, los parametros 118, cualquier otro codigo o datos implfcita o explfcitamente especificados en la solicitud para establecer un entorno de ejecucion seguro, y nada mas. Tal como se indico anteriormente, el certificado de autenticacion 124 esta firmado / cifrado mediante la utilizacion de la clave privada del SEP a la que solo puede acceder el procesador con seguridad habilitada 106. El certificado de autenticacion 124 incluye el identificador 122 del estado de activacion del area protegida de la memoria 120, y el identificador 122 es producido por el procesador con seguridad habilitada 106 y puede almacenarse de manera segura de manera que el identificador 122 sea accesible solo para el procesador con seguridad habilitada 106.
Debido a que el modulo de cargador 116 u otro codigo (tal como un codigo malicioso cargado subrepticiamente dentro del area protegida de la memoria 120) no puede acceder a la clave privada del SEP 126, el modulo de cargador 116 u otro codigo no puede alterar el identificador 122 sin alterar tambien el certificado de autenticacion 124 e invalidar la firma del procesador con seguridad habilitada 106. Por lo tanto, si se utiliza correctamente la clave publica del SEP 128 para verificar que el certificado de autenticacion 124 esta correctamente firmado con la clave privada del SEP 126, y verificando con exito que el identificador 122 que contiene coincide con el identificador conocido 130, el sistema cliente 112 puede tienen un alto grado de confianza de que se comunica con un entorno de ejecucion seguro cuya instancia fue creada con el estado de activacion solicitado.
5
10
15
20
25
30
35
40
45
50
55
60
Para conseguir este alto grado de confianza, el sistema cliente 112 forma una relacion de confianza con el procesador con seguridad habilitada 106. El simple hecho de poseer la clave publica del SEP 128 puede ser insuficiente para establecer que el procesador con seguridad habilitada 106 es un verdadero procesador con seguridad habilitada que esta correctamente configurado para proporcionar un entorno de ejecucion seguro en el servicio de alojamiento de la aplicacion 102. Por lo tanto, se proporciona una cadena de confianza para garantizar la autenticidad del procesador con seguridad habilitada 106.
El modulo de cargador 116, o el modulo de configuracion 110, pueden transmitir uno o mas certificados de confianza, tal como un certificado de autoridad de confianza (TA - Trusted Authority, en ingles) 132 y, posiblemente, uno o mas certificados intermedios 134. El certificado de TA 132 se firma con una clave privada de una autoridad confiable 136. El certificado de TA 132 identifica el procesador con seguridad habilitada 106, o posiblemente uno o mas intermedios, y proporciona la clave publica del procesador con seguridad habilitada 106 (es decir, la clave publica del SEP 128), o claves publicas de la autoridad intermedia directamente debajo de ella. El sistema cliente 112 puede obtener la clave publica 138 de la autoridad de confianza (TA) y utilizarla para descifrar el certificado 132 de TA y, a continuacion, obtener la clave publica publicada en el mismo. Todos los certificados intermedios 134 son descifrados, y las claves publicas de todos los intermediarios subyacentes son extrafdas de los certificados intermedios 134. En ultima instancia, el sistema cliente 112 puede obtener, ya sea a partir del certificado de TA 132 o de uno de los certificados intermedios 134, la clave publica del SEP 128.
Este proceso crea una cadena de confianza desde la autoridad de confianza 136 al procesador con seguridad habilitada 106. Esencialmente, la autoridad de confianza responde por el intermediario mas inmediato, los intermediarios responden por cualquier intermediario de nivel inferior y, en ultima instancia, uno de los intermediarios (o la autoridad de confianza 136 si no hay intermediarios) responde por el procesador con seguridad habilitada 106 y proporciona la clave publica de SEP 128. Al seguir la cadena de confianza de esta manera, el sistema cliente 112 puede establecer una relacion de confianza con el procesador con seguridad habilitada 106
La autoridad de confianza 136 puede ser el fabricante del hardware que fabrico el procesador con seguridad habilitada 106. Alternativamente, la autoridad de confianza 136 puede ser alguna otra entidad que proporcione garanffas de que un intermediario, que puede ser el fabricante del hardware, es de confianza.
En las mismas o diferentes realizaciones, el modulo de configuracion 110 esta configurado ademas para transmitir, al sistema cliente 112, un certificado de auditona 140, firmado mediante una clave privada de una entidad auditora, lo que indica que el procesador con seguridad habilitada no ha sido manipulado. En realizaciones iguales o alternativas, el sistema cliente 112 proporciona a la entidad auditora una identidad del procesador con seguridad habilitada 106 (que puede estar incluida en el certificado de autenticacion) y solicita que la entidad auditora proporcione al sistema cliente 112 el certificado de auditona 140. La entidad auditora puede emplear uno o varios mecanismos para verificar la seguridad ffsica del procesador con seguridad habilitada. Por ejemplo, el personal de la entidad auditora puede visitar periodicamente el centro o los centros de datos que albergan el servicio de alojamiento de la aplicacion 102, inspeccionar ffsicamente los dispositivos informaticos, y verificar que el procesador con seguridad habilitada 106 no este comprometido ffsicamente, no ha sido manipulado, y por lo demas esta intacto. En otras realizaciones, el personal de la entidad auditora puede monitorizar de manera continua el centro o los centros de datos que albergan el servicio de alojamiento de la aplicacion 102 utilizando circuitos cerrados, o el personal de la entidad auditora puede realizar inspecciones aleatorias de dispositivos informaticos elegidos al azar dentro del centro o los centros de datos que albergan el servicio de alojamiento de la aplicacion 102. Dependiendo de los procesos de auditona empleados, la entidad auditora puede ofrecer diferentes niveles de certificacion de seguridad ffsica para satisfacer las necesidades comerciales de diversos clientes. En diversas realizaciones, el certificado de auditona 140 puede formar parte de la cadena de confianza descrita anteriormente. Alternativamente, el certificado de auditona puede ser un certificado independiente (quizas respaldado por su propia cadena de confianza) utilizado por el sistema cliente 112 para verificar ademas que las instalaciones proporcionadas por el servicio de alojamiento de la aplicacion 102 son seguras.
Una vez el sistema cliente 112 verifica que el certificado de autenticacion 124 este debidamente firmado por el procesador con seguridad habilitada 106 y que el identificador 122 contenido en el mismo coincide con el identificador 130 conocido (y posiblemente despues de verificar la cadena de confianza a traves del certificado de TA 132 y el certificado o los certificados intermedios 134 y cualquier otro certificado (tal como el certificado de auditona 140), el sistema cliente 112 y el modulo de cargador 116 pueden establecer un canal de comunicacion cifrado. En una realizacion, para establecer un canal de comunicacion cifrado, el sistema cliente 112 produce una clave de sesion, cifra la clave de sesion con la clave publica del SEP 128 y transmite la clave de sesion cifrada al modulo de cargador 116. El modulo de cargador 116 recibe la clave de sesion (por ejemplo, a traves de una funcion o puerta de entrada del procesador con seguridad habilitada 106). El modulo de cargador 116 hace que el procesador con seguridad habilitada 106 descifre la clave de sesion utilizando la clave privada del SEP 126, y el modulo de cargador 116 establece comunicaciones con el sistema cliente 112 utilizando la clave de sesion descifrada. El sistema cliente 112 y el modulo de cargador 116 utilizan la clave de sesion para proteger criptograficamente las comunicaciones entre ellos.
El protocolo de autenticacion descrito anteriormente puede protegerse de varios ataques de repeticion de estado utilizando varios metodos, tales como los descritos en las patentes de EE.UU. N° 7.421.579, a nombre de England et
8
5
10
15
20
25
30
35
40
45
50
55
al. el 2 de septiembre de 2008 y titulada "Multiplexing a secure counter to implement second level secure counters"; Patente de EE.UU. N° 7.065.607, a nombre de England et al. el 20 de junio de 2006 y titulada "System and Method for implementing a counter"; y tales como los descritos en "Memoir: Practical State Continuity for Protected Modules", por Bryan Parno, Jacob R. Lorch, John R. Douceur, James Mickens y Jonathan M. Mc-Cune, y publicado en las actas del IEEE Symposium on Security and Privacy, IEEE, mayo de 2011.
El sistema cliente 112 instruye al modulo de cargador 116 para que cargue y ejecute una aplicacion 142. El modulo de cargador 116 carga y ejecuta a continuacion la aplicacion 142 en el area protegida de la memoria 120. Alternativamente, la aplicacion 142 esta identificada previamente por los parametros 118 y es cargada por el modulo de cargador 116 una vez establecido el canal cifrado. En otras realizaciones adicionales, los parametros 118 incluyen un binario de aplicacion de la aplicacion 142, y el modulo de cargador 116 recibe una orden a traves del canal cifrado para ejecutar la aplicacion 142. En otras realizaciones, la aplicacion 142 se carga como parte del estado de activacion del area protegida de la memoria 120. En otras realizaciones, la aplicacion 142 se carga a traves de la Red 114 desde un proveedor de aplicaciones. Otras variaciones son posibles sin apartarse del alcance de la presente invencion.
La aplicacion 142 puede incluir un subsistema del sistema operativo (a veces denominado "OS de libreria"), tal como se describe en la solicitud de patente de EE.UU. N° 12/834.895, presentada el 13 de julio de 2010 y titulada "ULTRA-LOW COST SANDBOXING FOR APPLICATION APPLIANCES". El subsistema del sistema operativo proporciona diversos elementos del sistema operativo dentro del proceso de la aplicacion. El subsistema del sistema operativo tambien utiliza un pequeno subconjunto de interfaces de programacion de aplicaciones (API - Application Programming Interfaces, en ingles) para comunicarse con un sistema operativo anfitrion, a traves de una capa de adaptacion de plataforma del sistema operativo (PAL - Platform Adaptation Layer, en ingles), a fin de proporcionar a la aplicacion 141 servicios informaticos basicos.
En cualquier caso, la carga y ejecucion de la aplicacion 142 especificada por el sistema cliente 112 en el entorno de ejecucion seguro puede ser el objetivo final del protocolo de autenticacion descrito anteriormente. El protocolo de autenticacion proporciona a un usuario asociado con el sistema cliente 112 un alto grado de confianza de que la aplicacion 142 se ejecuta dentro de un entorno de ejecucion seguro que esta libre de espionaje y manipulacion desde el exterior, y que esta cargado sin ningun contenido no confiable.
Sistema informatico a modo de ejemplo para proporcionar un servicio de alojamiento de la aplicacion
La figura 2 es un diagrama de bloques de un sistema informatico 200 a modo de ejemplo que se puede utilizar para proporcionar un servicio de alojamiento de la aplicacion de acuerdo con las realizaciones. El sistema informatico 200 puede configurarse como cualquier dispositivo informatico adecuado capaz de implementar un servicio de alojamiento de la aplicacion. De acuerdo con diversos ejemplos no limitativos, dispositivos informaticos adecuados pueden incluir ordenadores personales (PC - Personal Computers, en ingles), servidores, parques de servidores, centros de datos, ordenadores de proposito especial, ordenadores de tableta, consolas de juegos, telefonos inteligentes, combinaciones de estos dispositivos informaticos o de cualquier otro capaces de almacenar y ejecutar toda o una parte de un servicio de alojamiento de la aplicacion.
En una configuracion a modo de ejemplo, el sistema informatico 200 comprende uno o mas procesadores 202 y la memoria 204. Los procesadores 202 incluyen uno o mas procesadores con seguridad habilitada que son iguales o similares a los del procesador con seguridad habilitada 106. Los procesadores 202 pueden incluir uno o mas procesadores de proposito general o de proposito especial distintos de un procesador con seguridad habilitada. El sistema informatico 200 tambien puede contener una conexion o conexiones de comunicacion 206 que permiten comunicaciones con diversos sistemas adicionales. El sistema informatico 200 puede incluir asimismo uno o mas dispositivos de entrada 208, tales como un teclado, un raton, un lapiz, un dispositivo de entrada de voz, un dispositivo de entrada tactil, etc., y uno o mas dispositivos de salida 210, tales como una pantalla, altavoces, una impresora, etc., acoplados en comunicacion al procesador o procesadores 202 y a la memoria 204.
La memoria 204 puede almacenar instrucciones de programa que pueden ser cargadas y ejecutadas en el procesador o los procesadores 202, asf como datos generados durante la ejecucion y/o utilizacion en conjunto con estos programas. En el ejemplo ilustrado, la memoria 204 almacena un sistema operativo 212, que proporciona la funcionalidad basica del sistema informatico 200 y, entre otras cosas, proporciona el funcionamiento de los otros programas y modulos del sistema informatico 200. El sistema operativo 212 puede ser igual o similar al OS anfitrion 108.
La memoria 204 incluye un modulo de configuracion 214, que puede ser igual o similar al modulo de configuracion 110. La memoria 204 incluye un area protegida de la memoria 216, establecida por el procesador con seguridad habilitada. El area protegida de la memoria 216 puede ser igual o similar al area protegida de la memoria 120.
La memoria 204 incluye un modulo de cargador 218, que puede ser igual o similar al modulo de cargador 116. El modulo de cargador 218 puede ser cargado en el area protegida de la memoria 216 a peticion de un sistema cliente. La memoria 204 incluye un certificado de TA 220 y uno o mas certificados intermedios 222, que pueden ser iguales o similares al certificado de TA 132 y al certificado o los certificados intermedios 134, respectivamente.
5
10
15
20
25
30
35
40
45
50
55
La memoria 204 incluye un certificado de auditona 224, que puede ser igual o similar al certificado de auditona 140. La memoria 204 incluye un modulo de persistencia 226, que puede ser igual o similar al modulo de persistencia 614.
Sistema informatico a modo de ejemplo para proporcionar un sistema cliente
La figura 3 es un diagrama de bloques de un sistema informatico 300 a modo de ejemplo que se puede utilizar para proporcionar un sistema cliente de acuerdo con las realizaciones. El sistema informatico 300 puede configurarse como cualquier dispositivo informatico adecuado capaz de implementar un sistema cliente. De acuerdo con diversos ejemplos no limitativos, dispositivos informaticos adecuados pueden incluir ordenadores personales (PC), servidores, parques de servidores, centros de datos, ordenadores de proposito especial, ordenadores de tableta, consolas de juegos, telefonos inteligentes, combinaciones de estos dispositivos informaticos o de cualquier otro capaces de almacenar y ejecutar toda o una parte de un sistema cliente.
En una configuracion a modo de ejemplo, el sistema informatico 300 comprende uno o mas procesadores 302 y la memoria 304. El sistema informatico 300 tambien puede contener una conexion o conexiones de comunicacion 306 que permiten las comunicaciones con diversos sistemas. El sistema informatico 300 puede incluir asimismo uno o mas dispositivos de entrada 308, tales como un teclado, un raton, un lapiz, un dispositivo de entrada de voz, un dispositivo de entrada tactil, etc., y uno o mas dispositivos de salida 310, tales como una pantalla, altavoces, una impresora, etc. acoplados en comunicacion al procesador o procesadores 302 y a la memoria 304.
La memoria 304 puede almacenar instrucciones de programa que se pueden cargar y ejecutar en los procesadores 302, asf como datos generados durante la ejecucion y/o utilizacion de estos programas. En el ejemplo ilustrado, la memoria 304 almacena un sistema operativo 312, que proporciona la funcionalidad basica del sistema informatico 300 y, entre otras cosas, proporciona el funcionamiento de los otros programas y modulos del sistema informatico 300.
La memoria 204 incluye un modulo de establecimiento 314 configurado para transmitir una solicitud a un servicio de alojamiento de la aplicacion, tal como el servicio de alojamiento de la aplicacion 102, para establecer un entorno de ejecucion seguro dentro del servicio de alojamiento de la aplicacion. La solicitud incluye una indicacion de un estado de activacion solicitado del entorno de ejecucion seguro, tal como un modulo de cargador 316 y uno o mas parametros que deben estar cargados en el entorno de ejecucion seguro.
El modulo de verificacion 318 esta configurado para recibir, desde una instancia del modulo de cargador 316 ejecutado en un area protegida de la memoria del servicio de alojamiento de la aplicacion, un certificado de autenticacion cifrado. El certificado de autenticacion cifrado se cifra / firma con una clave privada de un procesador con seguridad habilitada del servicio de alojamiento de la aplicacion. El modulo de verificacion 318 esta configurado, en varias realizaciones, para descifrar el certificado de autenticacion utilizando una clave publica 320 del SEP del procesador con seguridad habilitada. El descifrado con exito del certificado de autenticacion con la clave publica 320 del SEP indica que el certificado de autenticacion fue cifrado / firmado por el procesador con seguridad habilitada. El modulo de verificacion 318 esta configurado, en diversas realizaciones, para recibir uno o mas certificados de confianza, tales como un certificado de autoridad de confianza y uno o mas certificados intermedios, para el establecimiento de una cadena de confianza entre la autoridad de confianza y el procesador con seguridad habilitada, tal como se describe en otra parte, dentro de esta Descripcion Detallada. Los uno o mas certificados de confianza pueden responder colectivamente por la identidad del procesador con seguridad habilitada y/o para indicar que el procesador con seguridad habilitada es seguro.
El modulo de verificacion 318 esta configurado, en diversas realizaciones, como parte de, o ademas del, establecimiento de la cadena de confianza, para recibir un certificado de auditona firmado mediante una clave privada de una entidad auditora, lo que indica que el procesador con seguridad habilitada no esta comprometido ffsicamente. El certificado de auditona puede ser proporcionado por el servicio de alojamiento de la aplicacion, o por alguna otra entidad.
El modulo de verificacion 318 esta configurado, en diversas realizaciones, como parte de, o ademas del establecimiento de la cadena de confianza, para recibir un certificado de procesador, tal como el de un fabricante del procesador con seguridad habilitada, que indica que el procesador con seguridad habilitada es seguro.
Tras establecer con exito una cadena de confianza y verificar que cualquier otro certificado, tal como el certificado de auditona y/o el certificado del procesador, son validos (por ejemplo, descifrando dichos certificados mediante las claves publicas de sus emisores), el modulo de verificacion 318 acepta que el procesador con seguridad habilitada es un procesador legftimo con seguridad habilitada.
El modulo de verificacion 318 esta configurado para extraer un identificador del certificado de autenticacion y compararlo con el identificador 322 conocido. El identificador 322 conocido representa el estado de activacion solicitado del entorno de ejecucion seguro, tal como se identifica en la solicitud transmitida en el modulo de establecimiento. El modulo de establecimiento 314 esta configurado para establecer, en respuesta a la verificacion por parte del modulo de verificacion 318, que se verifica la legitimidad del procesador con seguridad habilitada y que el resumen coincide con el identificador 322 conocido del estado de activacion solicitado, una conexion cifrada
5
10
15
20
25
30
35
40
45
50
55
ejecutandose la instancia del modulo de cargador en el entorno de ejecucion seguro. El identificador 322 conocido puede incluir un resumen, tal como un autenticador criptografico, del estado de activacion solicitado del area protegida de la memoria. El identificador 322 conocido puede incluir una clave publica que coincide con una clave privada que se utilizo para firmar los contenidos colocados en el area protegida de la memoria en el estado de activacion solicitado. El identificador 322 conocido puede ser algun otro identificador que identifique el estado de activacion inicial. En algunas realizaciones, el modulo de establecimiento 314 produce una clave de sesion para la conexion cifrada, cifra la clave de sesion mediante la clave publica 320 del SEP del procesador con seguridad habilitada, y transmite la clave de sesion cifrada a la instancia del modulo de cargador que se ejecuta en el entorno de ejecucion seguro del servicio de alojamiento de la aplicacion. La conexion cifrada utiliza la clave de sesion para enviar y recibir datos hacia y desde el entorno de ejecucion seguro. Otras realizaciones de establecimiento de una conexion cifrada son posibles sin apartarse del alcance de esta presente Descripcion Detallada.
El modulo de establecimiento 314 instruye a la instalacion del modulo de cargador que se ejecuta en el entorno de ejecucion segura para cargar una Aplicacion 324 para ejecuciones dentro del entorno de ejecucion seguro. Ni la aplicacion 324 ni el modulo de cargador deben estar incluidos en el sistema informatico 300. Mas bien, el modulo de establecimiento 314 puede indicar al modulo de cargador que descargue la aplicacion 324 desde otra ubicacion, por ejemplo, proporcionando un URI o URL para la aplicacion 324. Los uno o mas parametros proporcionados por el modulo de establecimiento 314 en la solicitud enviada al servicio de alojamiento de la aplicacion pueden identificar la aplicacion 324 para su ejecucion dentro del entorno de ejecucion segura. Los parametros pueden incluir un URI, una URL u otro identificador de la aplicacion 324. Alternativamente, los parametros pueden incluir un binario de aplicacion para la aplicacion 324 que se carga directamente en el entorno de ejecucion seguro en el momento de la creacion de instancias.
La memoria 304 puede incluir asimismo un modulo 326 de persistencia del lado del cliente configurado para realizar una o mas funciones asociadas con la persistencia del entorno de ejecucion seguro tal como, por ejemplo, para migrar el entorno de ejecucion seguro entre ordenadores en un servicio de alojamiento de la aplicacion, o para recrear el entorno de ejecucion seguro en el mismo ordenador en el servicio de alojamiento de la aplicacion, tal como se describe con mas detalle con respecto a las figuras 6 a 8. Dichas funciones de persistencia del lado del cliente incluyen recibir una clave de persistencia como parte de una migracion de un entorno de ejecucion seguro, descifrar la clave de persistencia con una clave privada del sistema informatico 300, y transmitir la clave de persistencia sin cifrar a un modulo de persistencia, tal como el modulo de persistencia 614, que reside en un ordenador de migracion de un servicio de alojamiento de la aplicacion, tal como el ordenador de migracion 604-
Operaciones a modo de ejemplo para crear una instancia de un entorno de ejecucion seguro
La figura 4 es un diagrama de flujo que muestra un proceso 400 a modo de ejemplo realizado por un servicio de alojamiento de la aplicacion para crear instancias de un entorno de ejecucion seguro. En 402, un modulo de configuracion, tal como el modulo de configuracion 110, recibe una solicitud de un sistema cliente para establecer un entorno de ejecucion seguro en un servicio de alojamiento de la aplicacion, tal como el servicio de alojamiento de la aplicacion 102. La solicitud incluye una indicacion de un modulo de cargador, tal como el modulo de cargador 116, y uno o mas parametros, tales como los parametros 118. La indicacion del modulo de cargador puede ser un URI o una URL (u otro tipo de identificador) para el modulo de carga, o puede ser un binario de aplicacion del modulo de cargador, el paquete de aplicaciones, etc. Los parametros pueden indicar una aplicacion solicitada para ser ejecutada en el entorno de ejecucion seguro. Los parametros pueden ser un binario de aplicacion de la aplicacion que se solicita que se ejecute en el entorno de ejecucion seguro. Los parametros pueden ser algun otro parametro que el sistema cliente solicita que se coloque en un area protegida de la memoria del entorno de ejecucion seguro. En diversas realizaciones, los parametros pueden ser omitidos de la solicitud.
En 404, el sistema operativo anfitrion coloca el modulo de cargador y los parametros en un area a proteger de la memoria.
En 406, el modulo de configuracion instruye a un procesador con seguridad habilitada (SEP) del servicio de alojamiento de la aplicacion, tal como el procesador con seguridad habilitada 106, para configurar, en respuesta a la solicitud, un area protegida de la memoria que incluye el modulo de cargador y uno mas parametros identificados por la solicitud.
En 408, el procesador con seguridad habilitada establece un area protegida de la memoria poniendo el area de memoria que incluye el modulo de cargador y los parametros en un estado protegido. El area protegida de la memoria se coloca en un estado inicial bien conocido. El estado inicial bien conocido puede ser todas las celdas de memoria del area protegida de la memoria, y todos los registros del procesador estan escritos en cero, en uno, o en algun otro valor o patron de valores predeterminado. Tal como se describe en otro lugar dentro de esta Descripcion Detallada, los datos almacenados en el area protegida de la memoria son inaccesibles para el codigo almacenado y ejecutado fuera del area protegida de la memoria una vez que el procesador con seguridad habilitada coloca el area protegida de la memoria en el estado inicial conocido. Es el procesador con seguridad habilitada el que gobierna este acceso.
5
10
15
20
25
30
35
40
45
50
55
En 410, el modulo de configuracion le indica al modulo de cargador que se ejecute dentro del area protegida de la memoria. El modulo de configuracion puede ser capaz de pasar instrucciones al modulo de cargador a traves de una puerta de entrada o funcion proporcionada por el procesador con seguridad habilitada que permite que el entorno de ejecucion seguro reciba la comunicacion del entorno de ejecucion externo.
En 412, el procesador con seguridad habilitada produce un identificador del contenido del area protegida de la memoria. El identificador puede ser, en diversas realizaciones, un resumen (tal como un autenticador criptografico) del contenido del area protegida de la memoria en el estado de activacion. El identificador puede ser una clave publica que coincida con una clave privada utilizada para firmar el software almacenado en el area protegida de la memoria. En el punto en el que se crea el identificador, el contenido del area protegida de la memoria incluye el modulo de cargador y uno o mas parametros incluidos en la solicitud, pero ningun otro dato o codigo. Por lo tanto, el contenido del area protegida de la memoria representa el estado de activacion solicitado implfcita o explfcitamente identificado por la solicitud. En las realizaciones en las que el identificador es un resumen, el resumen se puede producir utilizando una de varias funciones de creacion de autenticador criptografico u otras funciones criptograficas similares.
En 414, el procesador con seguridad habilitada almacena el identificador de una manera que es accesible solo para el procesador con seguridad habilitada. Por ejemplo, el procesador con seguridad habilitada puede almacenar el identificador en un registro seguro del procesador con seguridad habilitada. El procesador con seguridad habilitada puede almacenar el identificador cifrado en una ubicacion de la memoria. Pero, en cualquier caso, el identificador se almacena de una manera que lo hace accesible solo para el procesador con seguridad habilitada. El identificador puede ser creado por instrucciones del modulo de cargador. En realizaciones alternativas, el identificador se puede crear tras la creacion de una instancia del area protegida de la memoria sin instrucciones desde el modulo de cargador.
En 416, una instancia del modulo de cargador ejecutada en el entorno de ejecucion seguro le indica al procesador con seguridad habilitada que produzca un certificado de autenticacion que incluya el identificador y este firmado mediante una clave privada del procesador con seguridad habilitada. La clave privada del procesador con seguridad habilitada se almacena de manera segura en el procesador con seguridad habilitada de una manera que es accesible solo para el procesador con seguridad habilitada. El certificado de autenticacion puede incluir otra informacion ademas del identificador, tal como una marca de tiempo, los uno o mas parametros, u otros datos.
En 418, el procesador con seguridad habilitada cifra / firma el certificado de autenticacion utilizando la clave privada del procesador con seguridad habilitada y proporciona el certificado de autenticacion firmado a la ejecucion del modulo de cargador en el entorno de ejecucion seguro.
En 420, el modulo de cargador proporciona al sistema cliente la certificacion de que el entorno de ejecucion seguro se establece en un estado de activacion inicial para eliminar unicamente el software identificado mediante la solicitud del sistema cliente. La certificacion puede incluir un certificado de autenticacion firmado. El modulo de cargador puede transmitir el certificado de autenticacion a traves de una puerta de salida o una funcion del procesador con seguridad habilitada que permite que el entorno de ejecucion seguro se comunique con el codigo fuera del entorno de ejecucion seguro.
En 422, el modulo de cargador y/o el servicio de alojamiento de la aplicacion transmiten uno o mas certificados de confianza, tal como el certificado de TA 132 y los certificados intermedios 134 que responden colectivamente de la identidad del procesador con seguridad habilitada y/o indican que el procesador con seguridad habilitada es seguro. Esto puede incluir asimismo un certificado de auditona, firmado mediante una clave privada de una entidad auditora, que indica que el procesador con seguridad habilitada esta ffsicamente intacto. Esto puede incluir un certificado de procesador de un fabricante del procesador con seguridad habilitada que indica que el procesador con seguridad habilitada es seguro. En realizaciones alternativas, el certificado de auditona y/o el certificado del procesador se entregan por separado al sistema cliente, tal como directamente desde la entidad auditora, un fabricante de hardware o un tercero. En un ejemplo no limitativo, el certificado de autenticacion puede incluir un URI que identifica donde puede recuperar el sistema cliente el certificado de auditona.
En 424, el modulo de cargador recibe un mensaje de autorizacion del sistema cliente.
En 426, el modulo de cargador obtiene uno o mas componentes de la aplicacion para ser ejecutados en el entorno de ejecucion seguro. La obtencion de uno o mas componentes de la aplicacion puede incluir la recuperacion de uno o mas componentes de la aplicacion de un almacenamiento persistente del servicio de alojamiento de la aplicacion, desde una ubicacion remota (tal como a traves de un URI identificado en los parametros del estado de activacion inicial o el mensaje de autorizacion, o en alguna otra ubicacion). La obtencion de uno o mas componentes de la aplicacion puede incluir la recuperacion de uno o mas componentes de la aplicacion del sistema cliente, tal como a traves de un canal de comunicacion protegido criptograficamente.
Los uno o mas componentes de la aplicacion son seleccionados por el sistema cliente, ya sea mediante la transmision de un URI, URL, otro identificador o un binario de la aplicacion, un paquete de aplicacion o una imagen del sistema de archivos. La transmision del URI, la URL, otro identificador, el binario de la aplicacion, el paquete de
5
10
15
20
25
30
35
40
45
50
55
aplicacion, la imagen del sistema de archivos, etc., se puede realizar a traves de la solicitud recibida en 402, en el mensaje de autorizacion recibido en 424, o recibido de alguna otra forma. Por ejemplo, a traves de una conexion de comunicacion segura establecida entre el modulo de cargador y el canal del sistema cliente (utilizando, por ejemplo, el protocolo de capa de conexion segura (SSL - Secure Socket Layer, en ingles) u otro protocolo).
En diversas realizaciones no limitativas, el sistema cliente proporciona al modulo de cargador una clave de cifrado. En estas realizaciones, obtener uno o mas componentes de la aplicacion puede incluir descifrar uno o mas componentes utilizando la clave de cifrado (recibida a traves de un canal de comunicacion seguro). En diversas realizaciones, la clave de cifrado puede ser transportada sin cifrar a traves de un canal de comunicacion seguro. En otras realizaciones, la clave de cifrado se puede cifrar mediante la clave publica del procesador con seguridad habilitada y se puede descifrar mediante el procesador con seguridad habilitada en nombre del modulo de cargador. En diversas realizaciones, obtener los uno o mas componentes de la aplicacion en 426 puede ocurrir en una secuencia diferente de la que se muestra en la figura 4 sin apartarse del alcance de la presente invencion. En un ejemplo no limitativo de dichas realizaciones alternativas, los uno o mas componentes de la aplicacion pueden haberse obtenido y cargado en el area protegida de la memoria como parte del estado de activacion inicial. En 428, el modulo de cargador hace que la aplicacion con seguridad habilitada ejecute uno o mas componentes de aplicacion dentro del area protegida de la memoria.
Operaciones a modo de ejemplo para verificar un establecimiento de entorno de ejecucion seguro
La figura 5 es un diagrama de flujo que muestra un proceso a modo de ejemplo 500 para verificar el establecimiento de un entorno de ejecucion seguro. En 502, un sistema cliente, tal como el sistema cliente 112, transmite una solicitud a un servicio de alojamiento de la aplicacion, tal como el servicio de alojamiento de la aplicacion 102, para establecer un entorno de ejecucion seguro. La solicitud incluye una indicacion de un estado de activacion solicitado del entorno de ejecucion seguro, tal como un modulo de cargador solicitado y uno o mas parametros para ser introducidos en un area protegida de la memoria del entorno de ejecucion seguro.
En 504, el sistema cliente recibe, desde una posicion del modulo de cargador que se ejecuta en un area protegida de la memoria del servicio de alojamiento de la aplicacion, una certificacion, tal como un certificado de autenticacion, de que el entorno de ejecucion seguro esta establecido para ejecutar en el estado de activacion solo el software identificado por la solicitud. El certificado de autenticacion incluye un identificador. La recepcion del certificado de autenticacion indica que el servicio de alojamiento de la aplicacion pretende haber establecido un entorno de ejecucion seguro. El identificador identifica el contenido de un area protegida de la memoria del entorno de ejecucion seguro en su creacion de instancia. El identificador puede ser, en diversas realizaciones, un resumen, como un autenticador criptografico, del contenido del area protegida de la memoria en el estado de activacion. El identificador puede ser una clave publica que coincida con una clave privada utilizada para firmar el software almacenado en el area protegida de la memoria.
En 506, el sistema cliente recibe uno o mas certificados de confianza, tal como el certificado de asistencia tecnica 132 y/o los certificados intermedios 134. Tal como se describe en otro lugar dentro de esta Descripcion Detallada, los uno o mas certificados de confianza establecen de manera verificable y colectiva una cadena de confianza entre una autoridad confiable y el procesador con seguridad habilitada del servicio de alojamiento de la aplicacion para indicar que el procesador con seguridad habilitada es seguro.
En 508, el sistema cliente recibe un certificado de auditona, firmado mediante una clave privada de una entidad auditora, lo que indica que el procesador con seguridad habilitada no esta comprometido ffsicamente. La entidad auditora inspecciona periodicamente los procesadores con seguridad habilitada del servicio de alojamiento de la aplicacion, tal como se describe en otra parte dentro de esta Descripcion Detallada.
En 510, el sistema cliente recibe un certificado de procesador de un fabricante del procesador con seguridad habilitada que indica que el procesador con seguridad habilitada es seguro. El certificado del procesador puede ser uno de los certificados de confianza recibidos en 506. Alternativamente, el procesador certificado puede ser recibido por separado del fabricante del hardware del procesador con seguridad habilitada, o de un tercero, garantizando la seguridad y el correcto funcionamiento del procesador con seguridad habilitada.
En 512, el sistema cliente verifica que los diversos certificados recibidos en 506, 508 y 510 son correctos, por ejemplo, verificando su autenticidad utilizando las claves publicas de los distintos emisores. Si uno o mas de los certificados no son validos, entonces el sistema cliente puede rechazar el entorno de ejecucion seguro como no valido.
En 514, el sistema cliente obtiene una clave publica del procesador con seguridad habilitada. El sistema cliente puede obtener la clave publica de uno de los certificados de confianza recibidos en 506. Alternativamente, el sistema cliente puede tener previamente almacenada la clave publica del procesador con seguridad habilitada.
En 516, el sistema cliente verifica el certificado de autenticacion utilizando la clave publica conocida de un procesador de seguridad cifrado del servicio de alojamiento de la aplicacion. La clave publica conocida corresponde
5
10
15
20
25
30
35
40
45
50
55
a una clave privada del procesador con seguridad habilitada. El descifrado con exito con la clave publica indica, por lo tanto, que el certificado de autenticacion es verificable a partir del procesador con seguridad habilitada.
En 518, el sistema cliente extrae el identificador del certificado de autenticacion descifrado. Y en 520, el sistema cliente compara el identificador con un valor esperado de un identificador conocido del estado de activacion solicitado del entorno de ejecucion seguro. Una coincidencia con exito indica que el estado de activacion del entorno de ejecucion seguro cuya instancia fue creada por el procesador con seguridad habilitada del servicio de alojamiento de la aplicacion es como se especifica en la solicitud transmitida en 502.
En 522, el sistema cliente determina si los identificadores coinciden. Si los identificadores no coinciden, entonces el sistema cliente rechaza el entorno de ejecucion seguro por no tener el estado de activacion solicitado. Los identificadores que no coinciden indican que el estado de activacion real del entorno de ejecucion seguro tiene menos, mas o diferente codigo y datos diferentes o diferentes del estado de activacion solicitado. Una coincidencia con exito de los identificadores, junto con la verificacion de que la autenticacion y los certificados de confianza son validos, permite que el sistema cliente tenga un alto grado de confianza de que se ha establecido un entorno de ejecucion seguro sin codigo no confiable, tal como por ejemplo el entorno de ejecucion seguro se establece solo con codigo y datos en los que el sistema cliente conffa.
En 524, el sistema cliente autoriza la ejecucion del modulo de cargador en el area protegida de la memoria para ejecutar uno o mas componentes de la aplicacion dentro del entorno de ejecucion seguro. En las realizaciones, la autorizacion del modulo de cargador puede incluir la transmision de un indicador de uno o mas componentes de la aplicacion que se ejecutaran en un entorno de ejecucion seguro. El indicador puede ser un URI, una URL, otro identificador, un binario de la aplicacion, un paquete de la aplicacion o una imagen del sistema de archivos de los uno o mas componentes de la aplicacion que se ejecutaran. En varias realizaciones, la transmision del indicador puede formar parte de la transmision de la solicitud en 502. En otras realizaciones, la transmision del indicador puede utilizar un mensaje separado (tal como, por ejemplo, un mensaje enviado a traves de una conexion segura establecida utilizando SSL u otro protocolo), o un mensaje transmitido en algun momento anterior para "preparar" uno o mas componentes de la aplicacion que se ejecutaran en el entorno de ejecucion seguro. El sistema cliente puede generar y transmitir al modulo de cargador una clave de cifrado que se utilizara para descifrar los diversos mensajes y/o el indicador.
Entorno a modo de ejemplo para la persistencia de un entorno de ejecucion Seguro
En la informatica alojada convencional, la migracion o la recreacion de un cliente alojado es manejada por un monitor de maquina virtual. En la migracion informatica alojada de manera convencional, un monitor de maquina virtual anfitrion analiza el estado de la ejecucion, copia todas las paginas de memoria, escribe las paginas de memoria en un disco o las transfiere a traves de una red, y comienza la ejecucion en la misma o en una maquina diferente. Pero debido a que el codigo y los datos almacenados dentro de un area protegida de la memoria de un entorno de ejecucion seguro de acuerdo con las realizaciones de la presente invencion son inaccesibles para el codigo que se ejecuta fuera del area protegida de la memoria, un sistema operativo anfitrion no puede inspeccionar el estado de ejecucion o copia la informacion del estado a un disco para migrar a otra maquina. En su lugar, el codigo que se ejecuta dentro del area protegida de la memoria maneja varios aspectos de los procesos de recreacion y migracion.
La figura 6 muestra un entorno para la migracion de un area protegida de la memoria de acuerdo con realizaciones. El entorno 600 incluye un ordenador anfitrion 602 y un ordenador de migracion 604. Se establece un entorno de ejecucion seguro, que incluye un area protegida de la memoria 606 y un procesador con seguridad habilitada 608, en el ordenador anfitrion 602. Se crea una instancia del area protegida de la memoria 606 de una manera que se describe en otra parte dentro de esta Descripcion Detallada, en particular en las descripciones de las figuras 1 a 5. El area protegida de la memoria 606 incluye un modulo de cargador 610 y una aplicacion 612 que se ejecuta dentro del entorno de ejecucion seguro. El area protegida de la memoria 606 tambien incluye un modulo de persistencia 614, que puede ser un subcomponente del modulo de cargador 610 o un subcomponente de la aplicacion 612, que incluye un subcomponente de un subcomponente del sistema operativo de librena de la aplicacion 612.
El OS del anfitrion 616 determina que es necesario mantener el entorno de ejecucion seguro. Persistir en el entorno de ejecucion seguro puede ser con el proposito de migrar el entorno de ejecucion seguro desde el ordenador anfitrion 602 a el ordenador de migracion 604. Alternativamente, la persistencia del entorno de ejecucion seguro puede ser para recrear la ejecucion en el ordenador anfitrion 602. En cualquier caso, el OS anfitrion 616 esta configurado para llamar a una puerta de entrada o funcion proporcionada por el procesador con seguridad habilitada 608 que permite que el sistema operativo anfitrion 616 indique al entorno de ejecucion seguro que persista en su estado de ejecucion actual a persistente almacenamiento.
El modulo de persistencia 614 recibe la instruccion de persistencia a traves de la puerta de entrada y, como respuesta, crea un punto de control cifrado 618. Para conseguir esto, el modulo de persistencia 614 detiene la ejecucion del modulo de cargador 610 y la aplicacion 612 (incluido, para ejemplo, hacer que los subprocesos se detengan, y escribe los registros del procesador en la memoria protegida. En ese momento, solo un hilo, el hilo de suspension del modulo de persistencia 614, se puede dejar en ejecucion. Las diversas paginas de memoria se
5
10
15
20
25
30
35
40
45
50
55
enumeran y almacenan, junto con los registros del procesador, como informacion del estado 620. El contenido del area protegida de la memoria 606, incluida la aplicacion 612 y la informacion del estado 620, se almacena como el punto de control cifrado 618 en el almacenamiento persistente 622. El punto de control cifrado 618 se cifra mediante una clave de persistencia generada por el modulo de persistencia 614. El modulo de persistencia 614 cifra la clave de persistencia utilizando una clave publica 624 del sistema cliente 626. Alternativamente, la clave de persistencia se cifra utilizando una clave publica del procesador con seguridad habilitada para la migracion 634, o una clave publica del procesador con seguridad habilitada 608. La clave de persistencia cifrada se almacena como clave de persistencia sellada 628 en el almacenamiento persistente 622.
En realizaciones que utilizan la persistencia del estado de ejecucion para migrar la ejecucion al ordenador de migracion 604, un sistema operativo de migracion 630 del ordenador de migracion 604 causa el establecimiento de un area de protegida de la memoria de migracion 632. En realizaciones que utilizan la persistencia del estado de ejecucion para recrear la ejecucion en el ordenador anfitrion 602 en una nueva area protegida de la memoria (debido, por ejemplo, a un reinicio del ordenador anfitrion 602 o por otro motivo), el OS anfitrion 616 causa el establecimiento de una nueva area protegida de la memoria en el ordenador anfitrion 602. Se crea una instancia del area protegida de la memoria de migracion 632, o la nueva area protegida de la memoria que se debe establecer en el ordenador anfitrion 602, de una manera que se describe en otro lugar dentro de esta Descripcion Detallada, en particular en las descripciones de las figuras 1 a 5
En realizaciones en las que la persistencia del estado de ejecucion tiene el proposito de migrarlo al ordenador de migracion 604, el OS del anfitrion de migracion 630 llama a una puerta de entrada o funcion del procesador de migracion con seguridad habilitada 634 para hacer que el modulo de cargador 610 inicie o ejecute el modulo de persistencia 614 dentro del area protegida de la memoria de migracion 632. El modulo de persistencia 614 copia la clave de persistencia sellada 628 en el area protegida de la memoria de migracion 632 y transmite la clave de persistencia sellada 628 al sistema cliente 626.El sistema cliente 626 descifra la clave de persistencia sellada 628 utilizando la clave privada del sistema cliente 626 y la transmite de nuevo al modulo de persistencia 614 a traves de la conexion cifrada establecida durante la inicializacion del entorno de ejecucion seguro en el ordenador de migracion 604. Alternativamente, en realizaciones que cifran la clave de persistencia mediante la clave publica del procesador de migracion con seguridad habilitada 634, la clave de persistencia sellada es desactivada utilizando la clave privada del procesador de migracion con seguridad habilitada 634.
En las realizaciones que utilizan la persistencia del estado de ejecucion con el fin de recrear la ejecucion en el ordenador anfitrion 602, el OS anfitrion 616 llama a una puerta de entrada o funcion del procesador con seguridad habilitada 608 para causar que el modulo de cargador 610 inicie o ejecute el modulo de persistencia 614 dentro de un area protegida de la memoria 606 y recien recreada, la unidad de persistencia 614 copia la clave de persistencia sellada 628 en el area protegida de la memoria 606 recien recreada y transmite la clave de persistencia sellada 628 al sistema cliente 626. El sistema cliente 626 descifra la clave de persistencia sellada 628 utilizando la clave privada del sistema cliente 626 y la transmite al modulo de persistencia 614 a traves de la conexion cifrada establecida durante la inicializacion del entorno de ejecucion seguro en el ordenador de migracion 604. Alternativamente, en las realizaciones que cifran la clave de persistencia mediante la clave publica del procesador con seguridad habilitada 608, la clave de persistencia sellada es desactivada utilizando la clave privada del procesador con seguridad habilitada 608.
El modulo de persistencia 614 copia el punto de control cifrado 618 en el area protegida de la memoria de migracion 632 o en el area protegida de la memoria 606 recien recreada y utiliza la clave de persistencia no sellada para descifrar el punto de control cifrado 618. El modulo de persistencia 614 utiliza la informacion del estado 620 del punto de control cifrado 618 para volver a llenar las paginas de memoria asociadas con los subprocesos en ejecucion desde el modulo de cargador 610 y la aplicacion 612, y para volver a llenar los registros en el procesador de migracion con seguridad habilitada 634 o el procesador con seguridad habilitada 608. De este modo, en diversas realizaciones, la ejecucion del entorno de ejecucion seguro en el ordenador anfitrion 602 se migra al ordenador de migracion 604 o se vuelve a crear en el ordenador anfitrion 602.
En diversas realizaciones, el entorno de ejecucion seguro en el ordenador de migracion 604 se puede implementar antes de que comiencen los procesos de migracion, tal como al mismo tiempo que se inicializa el entorno de ejecucion seguro en el ordenador anfitrion 602. El modulo de persistencia 614 en el area protegida de la memoria de migracion 632 puede rellenarse previamente con la clave privada del sistema cliente 626 para permitirle descifrar la clave de persistencia sellada 628 sin transmitirla al sistema cliente 626 para su desactivacion. En algunas realizaciones, en lugar de utilizar la clave publica del sistema cliente 626 para cifrar la clave de persistencia, la clave de persistencia sellada 628 se cifra mediante una clave publica del procesador de migracion con seguridad habilitada 634 para que pueda ser descifrada utilizando la clave privada del procesador de migracion con seguridad habilitada 634.
Operaciones a modo de ejemplo para migrar un entorno de ejecucion seguro
La figura 7 es un diagrama de flujo que muestra un proceso 700 a modo de ejemplo para migrar un entorno de ejecucion seguro. En 702, un modulo de cargador o un modulo de persistencia que se ejecuta en un entorno de
5
10
15
20
25
30
35
40
45
50
ejecucion seguro recibe una orden, a traves de una puerta de entrada, para migrar a un ordenador de migracion, tal como el ordenador de migracion 604.
En 704, un modulo de persistencia, tal como el modulo de persistencia 614, genera una clave de persistencia. La clave de persistencia se utiliza para cifrar un punto de control del entorno de ejecucion seguro.
En 706, el modulo de persistencia cifra la clave de persistencia. En realizaciones, el modulo de persistencia cifra la clave de persistencia utilizando una clave publica de un sistema cliente, tal como el sistema cliente 626. En realizaciones alternativas, en las que se conoce la identidad del ordenador principal de migracion, el modulo de persistencia cifra la clave de persistencia utilizando una clave publica de un procesador con seguridad habilitada del ordenador de migracion.
En 708, el modulo de persistencia escribe la clave de persistencia cifrada en el almacenamiento persistente. Alternativamente, el modulo de persistencia transmite la clave de persistencia al sistema cliente o a un entorno de ejecucion seguro preestablecido en el ordenador de migracion.
En 710, el modulo de persistencia detiene la ejecucion de los procesos y subprocesos que se ejecutan en el entorno de ejecucion seguro y escribe la informacion del estado en el area protegida de la memoria.
En 712, el modulo de persistencia cifra el contenido del area protegida de la memoria utilizando la clave de persistencia para generar un punto de control. El contenido del area protegida de la memoria incluye la informacion de estado, tal como los archivos de pagina y los datos de registro asociados con el entorno de ejecucion seguro.
En 714, el punto de control cifrado se almacena en un almacenamiento persistente, tal como en una unidad de disco duro del servicio de alojamiento de la aplicacion o en algun otro almacenamiento persistente. Alternativamente, el punto de control cifrado se carga directamente en un area protegida de la memoria preestablecida del ordenador de migracion, tal como a traves de un canal de comunicacion cifrado hasta el area protegida de la memoria del ordenador de migracion.
En 716, el area protegida de la memoria es inicializada en el ordenador de migracion. El sistema operativo anfitrion del ordenador de migracion hace que el modulo de cargador en el area protegida de la memoria del ordenador de migracion cargue y ejecute el modulo de persistencia dentro del entorno de ejecucion seguro del ordenador de migracion.
En 718, el modulo de persistencia que se ejecuta dentro de un entorno de ejecucion seguro del ordenador de migracion transmite la clave de persistencia cifrada al sistema cliente. En realizaciones alternativas, en las que la clave de persistencia esta cifrada utilizando la clave publica del procesador con seguridad habilitada del ordenador de migracion, la clave de persistencia no se transmite al sistema cliente; por el contrario, el modulo de persistencia solicita que el procesador con seguridad habilitada descifre la clave de persistencia. En otra realizacion alternativa, en la que el entorno de ejecucion seguro esta preestablecido en el ordenador de migracion, el entorno de ejecucion seguro preestablecido en el ordenador de migracion ya puede tener la clave privada del sistema cliente, obviando la necesidad de transmitir la clave de persistencia cifrada al sistema del cliente. En 720, el entorno de ejecucion seguro en el ordenador de migracion recibe la clave de persistencia no cifrada.
En 722, el modulo de persistencia descifra el punto de control cifrado utilizando la clave de persistencia, y carga la informacion de estado en el punto de control en los archivos de la pagina y los registros del nuevo entorno de ejecucion seguro para restaurar el estado de ejecucion, y el proceso de migracion finaliza.
Operaciones a modo de ejemplo para recrear un entorno de ejecucion seguro
La figura 8 es un diagrama de flujo que muestra un proceso a modo de ejemplo para recrear un entorno de ejecucion seguro. En 802, un modulo de cargador o un modulo de persistencia ejecutado en un entorno de ejecucion seguro recibe una orden, a traves de una puerta de entrada, para persistir el estado actual del entorno de ejecucion seguro para recrear el estado de ejecucion en un nuevo entorno de ejecucion seguro (tal como en el mismo ordenador anfitrion o en otro diferente).
En 804, un modulo de persistencia genera una clave de persistencia. La clave de persistencia se utiliza para cifrar un punto de control del entorno de ejecucion seguro, tal como se describe mas detalladamente a continuacion.
En 806, el modulo de persistencia cifra la clave de persistencia. En realizaciones, el modulo de persistencia cifra la clave de persistencia utilizando una clave publica de un sistema cliente, tal como el sistema cliente 626. En realizaciones alternativas, el modulo de persistencia cifra la clave de persistencia utilizando una clave publica de un procesador con seguridad habilitada del ordenador anfitrion.
En 808, el modulo de persistencia escribe la clave de persistencia cifrada en el almacenamiento persistente. Alternativamente, el modulo de persistencia transmite la clave de persistencia al sistema cliente, o a un entorno de ejecucion seguro preestablecido en el ordenador anfitrion, tal como a traves de un canal de comunicacion seguro hasta el area protegida de la memoria recien creada del entorno de ejecucion seguro preestablecido.
5
10
15
20
25
30
35
40
45
50
55
En 810, el modulo de persistencia detiene la ejecucion del entorno de ejecucion seguro y escribe la informacion del estado en el area protegida de la memoria. La informacion del estado puede incluir las paginas de memoria virtual y el contexto de registro asociado con el entorno de ejecucion seguro. En 812, el modulo de persistencia cifra la informacion del estado utilizando la clave de persistencia para generar un punto de control.
En 814, el punto de control cifrado se almacena en un almacenamiento persistente, tal como una unidad de disco duro del servicio de alojamiento de la aplicacion o en algun otro almacenamiento persistente. Alternativamente, el punto de control cifrado se carga directamente en un area protegida de la memoria recien establecida, tal como por ejemplo a traves de un canal de comunicacion hasta el area protegida de la memoria de nueva creacion.
En 816, una nueva area protegida de la memoria es inicializada en el ordenador anfitrion. En 818, el sistema operativo anfitrion del ordenador anfitrion coloca el modulo de cargador y uno o mas parametros en el area de memoria a proteger.
En 820, el modulo de persistencia que se ejecuta en el entorno de ejecucion seguro recien creado del ordenador anfitrion lee la clave de persistencia sellada del almacenamiento persistente.
En 822, el modulo de persistencia en el entorno de ejecucion seguro recien creado desactiva la clave de persistencia. En realizaciones en las que la clave de persistencia esta cifrada utilizando la clave publica del procesador con seguridad habilitada del ordenador anfitrion, el modulo de persistencia solicita que el procesador de seguridad descifre la clave de persistencia. En otras realizaciones en las que el entorno de ejecucion seguro esta preestablecido en el ordenador anfitrion, la clave privada del procesador con seguridad habilitada del ordenador anfitrion se utiliza para desactivar la clave de persistencia.
En 824, el modulo de persistencia lee el punto de control cifrado del almacenamiento persistente. En 826, el modulo de persistencia descifra el punto de control cifrado utilizando la clave de persistencia, y carga la informacion del estado en el punto de verificacion en la memoria virtual y el contexto de registros del nuevo entorno de ejecucion seguro, para restaurar el estado de ejecucion, y el proceso de recreacion finaliza.
Las figuras 4, 5, 7 y 8 representan graficas de flujo que muestran procesos a modo de ejemplo de acuerdo con diversas realizaciones. Las operaciones de estos procesos se ilustran en bloques individuales y se resumen con referencia a esos bloques. Estos procesos se ilustran como graficas de flujo logico, cada operacion de los cuales puede representar un conjunto de operaciones que se pueden implementar en hardware, software o una combinacion de los mismos. En el contexto del software, las operaciones representan instrucciones ejecutables por ordenador almacenadas en uno o mas medios de almacenamiento en ordenador que, cuando son ejecutadas por uno o mas procesadores, permiten que uno o mas procesadores realicen las operaciones enumeradas. En general, las instrucciones ejecutables por ordenador incluyen rutinas, programas, objetos, modulos, componentes, estructuras de datos y similares que realizan funciones particulares o implementan tipos de datos abstractos particulares. El orden en que se describen las operaciones no se debe interpretar como una limitacion, y cualquier numero de las operaciones descritas puede ser combinado en cualquier orden, separar en operaciones secundarias y/o realizar en paralelo para implementar el proceso. Los procesos de acuerdo con diversas realizaciones de la presente invencion pueden incluir solo algunas o todas las operaciones representadas en el grafico de flujo logico.
Medios legibles por ordenador
Dependiendo de la configuracion y del tipo de dispositivo informatico utilizado, las memorias 204 y 304 de los sistemas informaticos 200 y 300 en las figuras 2 y 3, respectivamente, pueden incluir una memoria volatil (tal como una memoria de acceso aleatorio (RAM - Random Access Memory, en ingles)) y/o una memoria no volatil (tal como una memoria de solo lectura (ROM - Read Only Memory, en ingles), una memoria rapida, etc.). Las memorias 204 y 304 pueden incluir asimismo un almacenamiento extrafble adicional y/o un almacenamiento no extrafble que incluye, entre otros, una memoria rapida, un almacenamiento magnetico, un almacenamiento optico y/o un almacenamiento en cinta, que puede proporcionar almacenamiento no volatil de instrucciones legibles por ordenador, estructuras de datos, modulos de programa y otros datos para los sistemas informaticos 200 y 300.
Las memorias 204 y 304 son ejemplos de medios legibles por ordenador. Los medios legibles por ordenador, incluyen al menos dos tipos de medios legibles por ordenador, a saber, medios de almacenamiento informatico y medios de comunicaciones.
Los medios de almacenamiento informaticos incluyen medios volatiles y no volatiles, extrafbles y no extrafbles implementados en cualquier proceso o tecnologfa para el almacenamiento de informacion, tal como instrucciones legibles por ordenador, estructuras de datos, modulos de programa u otros datos. Los medios de almacenamiento informaticos incluyen, pero no estan limitados a, una memoria de cambio de fase (PRAM - Phase change RAM, en ingles), una memoria estatica de acceso aleatorio (SRAM - Static RAM, en ingles), una memoria dinamica de acceso aleatorio (DRAM - Dynamic RAM, en ingles), otros tipos de memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria de solo lectura programable y borrable electricamente (EEPROM - Electrically Erasable Programmable Read-Only Memory, en ingles), una memoria rapida u otra tecnologfa de memoria, un disco compacto de solo lectura (CD-ROM - Compact Disc-ROM, en ingles), discos versatiles digitales
(DVD - Digital Versatile Disks, en ingles) u otro almacenamiento optico, casetes magneticos, cinta magnetica, almacenamiento en disco magnetico u otros dispositivos de almacenamiento magnetico, o cualquier otro medio que no sea de transmision que se pueda utilizar para almacenar informacion para el acceso por parte de un dispositivo informatico.
5 Por el contrario, los medios de comunicacion pueden incluir instrucciones legibles por ordenador, estructuras de datos, modulos de programa u otros datos en una senal de datos modulada, tal como una onda portadora u otro mecanismo de transmision. Tal como se define en la presente memoria, los medios de almacenamiento informatico no incluyen medios de comunicacion.
Conclusion
10 Aunque la invencion utiliza un lenguaje que es espedfico para las caractensticas estructurales y/o actos metodologicos, la invencion no se limita a las caractensticas o actos espedficos descritos. Mas bien, las caractensticas y los actos espedficos se describen como formas ilustrativas de implementacion de la invencion.
Claims (14)
- 5101520253035404550REIVINDICACIONES1. Un metodo que comprende:establecer, a peticion de un sistema cliente (112), mediante un procesador con seguridad habilitada (106) de un sistema informatico, un area de la memoria protegida mediante hardware dentro de una memoria del sistema informatico, estando configurado el procesador habilitado con seguridad para mediar, a traves de una o mas funciones de puerta, el acceso al area de la memoria protegida mediante hardware mediante todo el codigo que se ejecuta fuera del area de la memoria protegida mediante hardware;dar instrucciones al procesador con seguridad habilitada, en base, al menos, a una solicitud de un sistema cliente, para incluir, en un estado inicial, el software y los datos identificados por la solicitud del sistema cliente en el area de la memoria protegida mediante hardware;dar instrucciones a una parte del software identificado por la solicitud del sistema cliente que se incluye en el area de la memoria protegida mediante hardware para ejecutar, la porcion del software configurado, tras la ejecucion, para hacer que el procesador con seguridad habilitada genere una certificacion criptografica de todo el contenido del area de la memoria protegida mediante hardware en el estado inicial;recibir la certificacion criptografica del procesador con seguridad habilitada, incluyendo, al menos una parte de la certificacion criptografica, una autenticacion creada por el procesador con seguridad habilitada utilizando una clave privada del procesador con seguridad habilitada; yproporcionar la certificacion criptografica al sistema cliente (112), siendo la certificacion criptografica utilizable por el sistema cliente, en base a una comparacion de al menos la porcion de la certificacion criptografica con una indicacion criptografica conocida del Software y datos identificados en la solicitud en el estado inicial, para determinar que el contenido del area de la memoria protegida mediante hardware incluye, en el estado inicial, solo el software y los datos identificados en la solicitud, siendo la certificacion utilizable por el sistema cliente, en base, al menos, en una clave publica asociada con el procesador con seguridad habilitada, para determinar que la certificacion criptografica de todos los contenidos del area de la memoria protegida mediante hardware en el estado inicial fueron creados por el procesador con seguridad habilitada.
- 2. El metodo de la reivindicacion 1, en el que la certificacion criptografica incluye un autenticador criptografico o un resumen de todos los contenidos del area de la memoria protegida mediante hardware en el estado inicial.
- 3. El metodo de la reivindicacion 1 o la reivindicacion 2, en el que los datos identificados en la solicitud del sistema cliente incluyen uno o mas parametros identificados por el sistema cliente, y en el que el sistema cliente puede utilizar la certificacion criptografica para determinar que el estado inicial no incluye ningun parametro distinto de los uno o mas parametros.
- 4. El metodo de cualquier reivindicacion precedente, que comprende ademas proporcionar, al sistema cliente, un certificado de auditona, firmado por otra clave privada de una entidad auditora, indicando el certificado de auditona que el procesador con seguridad habilitada esta ffsicamente intacto.
- 5. El metodo de cualquier reivindicacion precedente, en el que la autenticacion incluye uno o mas certificados de confianza, incluyendo un certificado de confianza de una autoridad confiable, uno o mas certificados de confianza colectivamente utilizables por el sistema cliente para determinar que el procesador con seguridad habilitada es de un tipo que media el acceso al area de la memoria protegida mediante hardware por parte de todo el codigo que se ejecuta fuera del area de la memoria protegida mediante hardware y que cifra todo el contenido del area de la memoria protegida mediante hardware.
- 6. El metodo de cualquier reivindicacion precedente, en el que la autenticacion incluye un certificado de procesador de un fabricante del procesador con seguridad habilitada, el certificado del procesador que indica que el procesador con seguridad habilitada es de un tipo que media el acceso al area de la memoria protegida mediante hardware por parte de todo el codigo que se ejecuta fuera del area de la memoria protegida mediante hardware.
- 7. Medios legibles por ordenador, que comprenden una pluralidad de instrucciones de programacion que son ejecutables por parte de uno o mas procesadores para hacer que un sistema informatico:transmita una solicitud a un servicio de alojamiento de la aplicacion, la solicitud de un procesador con seguridad habilitada del servicio de alojamiento de la aplicacion para establecer un area de la memoria protegida mediante hardware del servicio de alojamiento de la aplicacion, identificando la solicitud el software y los datos que se incluiran en el area de la memoria protegida mediante hardware (216) en un estado inicial, estando configurado el procesador con seguridad habilitada para mediar el acceso al area de la memoria protegida mediante hardware (216) por parte de todo el codigo que se ejecuta fuera del area protegida de la memoria (216), estando configurado el procesador con seguridad habilitada para cifrar todo el contenido del area de la memoria protegida mediante hardware, una porcion del software para ser incluida en area de la memoria protegida mediante hardware y5101520253035404550ejecutable para hacer que el procesador con seguridad habilitada genere una certificacion criptografica de todos los contenidos del area de la memoria protegida mediante hardware en el estado inicial;reciba la certificacion criptografica del servicio de alojamiento de la aplicacion (102), incluyendo la certificacion criptografica, al menos una autenticacion creada por el procesador con seguridad habilitada mediante una clave privada del procesador con seguridad habilitada;determine, en base, al menos, a una comparacion de al menos una parte de la certificacion criptografica con una indicacion criptografica conocida del software y a los datos en el estado inicial, que solo el software y los datos identificados por la solicitud estan incluidos en el area de la memoria protegida mediante hardware en el estado inicial; ydetermine, en base, al menos, a la autenticacion y a una clave publica del procesador con seguridad habilitada, que la certificacion criptografica de todos los contenidos del area de la memoria protegida mediante hardware en el estado inicial esta generada por el procesador con seguridad habilitada.
- 8. El medio legible por ordenador de la reivindicacion 7, en el que la pluralidad de instrucciones de programacion es ejecutable para hacer que el sistema informatico reciba del servicio de alojamiento de la aplicacion la certificacion criptografica de que el procesador con seguridad habilitada es ffsicamente seguro.
- 9. El medio legible por ordenador de la reivindicacion 7 o la reivindicacion 8, en el que la pluralidad de instrucciones de programacion es ademas ejecutable para hacer que el sistema informatico indique al servicio de alojamiento de la aplicacion que cargue uno o mas componentes de la aplicacion en el area de la memoria protegida mediante hardware, siendo los uno o mas componentes de la aplicacion diferentes del software que se identifica mediante la solicitud y que esta incluido en el area de la memoria protegida mediante hardware en el estado inicial.
- 10. El medio legible por ordenador de cualquiera de las reivindicaciones 7 a 9, en el que el identificador incluye al menos un autenticador criptografico de los contenidos del area de la memoria protegida mediante hardware en el estado inicial.
- 11. Un sistema informatico que comprende: una memoria (104);uno o mas procesadores, incluido un procesador con seguridad habilitada (106) configurado para establecer un area de la memoria protegida mediante hardware (216) en la memoria (106), en el que el procesador con seguridad habilitada esta configurado para mediar el acceso al area de la memoria protegida mediante hardware (216) mediante todo el codigo que se ejecuta en el sistema informatico fuera del area protegida de la memoria (216), estando configurado el procesador con seguridad habilitada para cifrar todos los contenidos del area de la memoria protegida mediante hardware; yuno o mas modulos (214) almacenados en la memoria y ejecutables mediante uno o mas procesadores (202) para:recibir (402) una solicitud de un sistema cliente para establecer el area de la memoria protegida mediante hardware, incluyendo la solicitud una indicacion del software y los datos que deben estar cargados en el area de la memoria protegida mediante hardware en un estado inicial;causar (406), al menos parcialmente en respuesta a la solicitud, que el procesador con seguridad habilitada (106) cree una instancia del area de la memoria protegida mediante hardware (216) e incluya en el area de la memoria protegida mediante hardware el software y los datos en el estado inicial;causar que una instancia de un modulo de cargador (116) ejecute el entorno para ejecutar, estando el modulo de cargador configurado, tras la ejecucion, para transmitir al sistema cliente la certificacion criptografica, firmada por una clave privada del procesador con seguridad habilitada (106), que incluye un indicador que puede utilizar el sistema cliente, en base a una comparacion del indicador con un indicador conocido del software y datos en el estado inicial, que el estado de activacion del area protegida de la memoria (216) incluye solo el software y los datos indicados por la solicitud en el estado inicial, siendo la certificacion criptografica adicional utilizada por el sistema cliente, en base, al menos a una clave publica del procesador con seguridad habilitada, para determinar que el procesador con seguridad habilitada genero el indicador.
- 12. El sistema informatico de la reivindicacion 11, en el que la clave de privacidad del procesador con seguridad habilitada se almacena en el procesador con seguridad habilitada de manera que sea accesible para el procesador con seguridad habilitada, pero no para ningun otro componente del sistema informatico.
- 13. El sistema informatico de la reivindicacion 11, en el que los uno o mas modulos son ejecutables ademas por uno o mas procesadores para recibir una clave de cifrado cifrada mediante una clave publica del procesador con seguridad habilitada que corresponde a la clave privada del procesador con seguridad habilitada, y para obtener,utilizando la clave de cifrado, uno o mas componentes de la aplicacion que se ejecutaran en el area de la memoria protegida mediante hardware.
- 14. El sistema informatico de la reivindicacion 11, en el que el indicador incluye un resumen de todos los contenidos del area de la memoria protegida mediante hardware en el estado inicial y una clave publica correspondiente a la 5 clave privada que fue utilizada para firmar la certificacion criptografica.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/323,465 US9413538B2 (en) | 2011-12-12 | 2011-12-12 | Cryptographic certification of secure hosted execution environments |
US201113323465 | 2011-12-12 | ||
PCT/US2012/067662 WO2013090045A1 (en) | 2011-12-12 | 2012-12-04 | Cryptographic certification of secure hosted execution environments |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2692900T3 true ES2692900T3 (es) | 2018-12-05 |
Family
ID=48063959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES12858587.4T Active ES2692900T3 (es) | 2011-12-12 | 2012-12-04 | Certificación criptográfica de entornos de ejecución alojados seguros |
Country Status (5)
Country | Link |
---|---|
US (2) | US9413538B2 (es) |
EP (1) | EP2791817B1 (es) |
CN (1) | CN103051451B (es) |
ES (1) | ES2692900T3 (es) |
WO (1) | WO2013090045A1 (es) |
Families Citing this family (166)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8881270B2 (en) * | 2002-12-20 | 2014-11-04 | Creative Mines Llc | Method and apparatus for selectively enabling a microprocessor-based system |
US9588803B2 (en) | 2009-05-11 | 2017-03-07 | Microsoft Technology Licensing, Llc | Executing native-code applications in a browser |
US9323921B2 (en) | 2010-07-13 | 2016-04-26 | Microsoft Technology Licensing, Llc | Ultra-low cost sandboxing for application appliances |
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US9495183B2 (en) | 2011-05-16 | 2016-11-15 | Microsoft Technology Licensing, Llc | Instruction set emulation for guest operating systems |
US11620719B2 (en) | 2011-09-12 | 2023-04-04 | Microsoft Technology Licensing, Llc | Identifying unseen content of interest |
US9389933B2 (en) | 2011-12-12 | 2016-07-12 | Microsoft Technology Licensing, Llc | Facilitating system service request interactions for hardware-protected applications |
US9413538B2 (en) | 2011-12-12 | 2016-08-09 | Microsoft Technology Licensing, Llc | Cryptographic certification of secure hosted execution environments |
US9690635B2 (en) | 2012-05-14 | 2017-06-27 | Qualcomm Incorporated | Communicating behavior information in a mobile computing device |
US9609456B2 (en) | 2012-05-14 | 2017-03-28 | Qualcomm Incorporated | Methods, devices, and systems for communicating behavioral analysis information |
US9202047B2 (en) | 2012-05-14 | 2015-12-01 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
US9324034B2 (en) | 2012-05-14 | 2016-04-26 | Qualcomm Incorporated | On-device real-time behavior analyzer |
US9298494B2 (en) | 2012-05-14 | 2016-03-29 | Qualcomm Incorporated | Collaborative learning for efficient behavioral analysis in networked mobile device |
WO2013182376A1 (en) * | 2012-06-06 | 2013-12-12 | Nec Europe Ltd. | Method and system for executing a secure application on an untrusted user equipment |
US9317689B2 (en) * | 2012-06-15 | 2016-04-19 | Visa International Service Association | Method and apparatus for secure application execution |
US9747440B2 (en) | 2012-08-15 | 2017-08-29 | Qualcomm Incorporated | On-line behavioral analysis engine in mobile device with multiple analyzer model providers |
US9495537B2 (en) | 2012-08-15 | 2016-11-15 | Qualcomm Incorporated | Adaptive observation of behavioral features on a mobile device |
US9319897B2 (en) | 2012-08-15 | 2016-04-19 | Qualcomm Incorporated | Secure behavior analysis over trusted execution environment |
US9330257B2 (en) | 2012-08-15 | 2016-05-03 | Qualcomm Incorporated | Adaptive observation of behavioral features on a mobile device |
KR101907486B1 (ko) * | 2012-09-14 | 2018-10-12 | 한국전자통신연구원 | 보안성이 우수한 실행환경을 제공하는 이동 컴퓨팅 시스템 |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US20140229942A1 (en) * | 2012-09-21 | 2014-08-14 | Willard Monty Wiseman | Isolated guest creation in a virtualized computing system |
US10068083B2 (en) * | 2012-09-28 | 2018-09-04 | International Business Machines Corporation | Secure transport of web form submissions |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US10089582B2 (en) | 2013-01-02 | 2018-10-02 | Qualcomm Incorporated | Using normalized confidence values for classifying mobile device behaviors |
US9684870B2 (en) | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of using boosted decision stumps and joint feature selection and culling algorithms for the efficient classification of mobile device behaviors |
US9686023B2 (en) | 2013-01-02 | 2017-06-20 | Qualcomm Incorporated | Methods and systems of dynamically generating and using device-specific and device-state-specific classifier models for the efficient classification of mobile device behaviors |
US9503268B2 (en) | 2013-01-22 | 2016-11-22 | Amazon Technologies, Inc. | Securing results of privileged computing operations |
US10063380B2 (en) | 2013-01-22 | 2018-08-28 | Amazon Technologies, Inc. | Secure interface for invoking privileged operations |
US9742559B2 (en) * | 2013-01-22 | 2017-08-22 | Qualcomm Incorporated | Inter-module authentication for securing application execution integrity within a computing device |
US9729517B2 (en) * | 2013-01-22 | 2017-08-08 | Amazon Technologies, Inc. | Secure virtual machine migration |
US9491187B2 (en) | 2013-02-15 | 2016-11-08 | Qualcomm Incorporated | APIs for obtaining device-specific behavior classifier models from the cloud |
US8959576B2 (en) * | 2013-03-14 | 2015-02-17 | Intel Corporation | Method, apparatus, system for qualifying CPU transactions with security attributes |
US9245129B2 (en) * | 2013-03-15 | 2016-01-26 | Nvidia Corporation | System and method for protecting data by returning a protect signal with the data |
WO2015026336A1 (en) * | 2013-08-21 | 2015-02-26 | Intel Corporation | Processing data privately in the cloud |
US9563569B2 (en) | 2014-01-28 | 2017-02-07 | Red Hat Israel, Ltd. | Memory transformation in virtual machine live migration |
US9785378B2 (en) | 2014-01-28 | 2017-10-10 | Red Hat Israel, Ltd. | Tracking transformed memory pages in virtual machine chain migration |
US10389709B2 (en) | 2014-02-24 | 2019-08-20 | Amazon Technologies, Inc. | Securing client-specified credentials at cryptographically attested resources |
US9729320B2 (en) * | 2014-02-25 | 2017-08-08 | Cavium, Inc. | Apparatus and method for software enabled access to protected hardware resources |
US9680872B1 (en) * | 2014-03-25 | 2017-06-13 | Amazon Technologies, Inc. | Trusted-code generated requests |
CN106537357B (zh) * | 2014-04-29 | 2020-09-04 | 推特公司 | 应用间委托的认证 |
US9558322B2 (en) * | 2014-05-01 | 2017-01-31 | Intertrust Technologies Corporation | Secure computing systems and methods |
US9922200B2 (en) | 2014-06-30 | 2018-03-20 | Microsoft Technology Licensing, Llc | Securely storing content within public clouds |
US10044695B1 (en) | 2014-09-02 | 2018-08-07 | Amazon Technologies, Inc. | Application instances authenticated by secure measurements |
US9246690B1 (en) | 2014-09-03 | 2016-01-26 | Amazon Technologies, Inc. | Secure execution environment services |
US9577829B1 (en) | 2014-09-03 | 2017-02-21 | Amazon Technologies, Inc. | Multi-party computation services |
US10061915B1 (en) | 2014-09-03 | 2018-08-28 | Amazon Technologies, Inc. | Posture assessment in a secure execution environment |
US9584517B1 (en) | 2014-09-03 | 2017-02-28 | Amazon Technologies, Inc. | Transforms within secure execution environments |
US10079681B1 (en) * | 2014-09-03 | 2018-09-18 | Amazon Technologies, Inc. | Securing service layer on third party hardware |
US9442752B1 (en) | 2014-09-03 | 2016-09-13 | Amazon Technologies, Inc. | Virtual secure execution environments |
US9491111B1 (en) | 2014-09-03 | 2016-11-08 | Amazon Technologies, Inc. | Securing service control on third party hardware |
US9754116B1 (en) | 2014-09-03 | 2017-09-05 | Amazon Technologies, Inc. | Web services in secure execution environments |
US9886577B2 (en) | 2014-09-26 | 2018-02-06 | Mcafee, Llc | Detection and mitigation of malicious invocation of sensitive code |
US9363087B2 (en) | 2014-10-02 | 2016-06-07 | Microsoft Technology Licensing, Inc. | End-to-end security for hardware running verified software |
US9684608B2 (en) * | 2014-10-28 | 2017-06-20 | Intel Corporation | Maintaining a secure processing environment across power cycles |
GB2531770A (en) * | 2014-10-30 | 2016-05-04 | Ibm | Confidential Extracting System Internal Data |
FR3028069B1 (fr) * | 2014-11-05 | 2016-12-09 | Oberthur Technologies | Procede de chargement de fichier en memoire vive dans un appareil electronique et appareil electronique associe |
US10303879B1 (en) | 2014-11-06 | 2019-05-28 | Amazon Technologies, Inc. | Multi-tenant trusted platform modules |
US9940456B2 (en) | 2014-12-16 | 2018-04-10 | Intel Corporation | Using trusted execution environments for security of code and data |
US9525672B2 (en) * | 2014-12-19 | 2016-12-20 | Amazon Technologies, Inc. | Multi-faceted compute instance identity |
EP3040896A1 (en) * | 2014-12-30 | 2016-07-06 | Gemalto Sa | Secure element |
US10205710B2 (en) * | 2015-01-08 | 2019-02-12 | Intertrust Technologies Corporation | Cryptographic systems and methods |
US10230529B2 (en) * | 2015-07-31 | 2019-03-12 | Microsft Technology Licensing, LLC | Techniques to secure computation data in a computing environment |
US11102313B2 (en) | 2015-08-10 | 2021-08-24 | Oracle International Corporation | Transactional autosave with local and remote lifecycles |
US10582001B2 (en) | 2015-08-11 | 2020-03-03 | Oracle International Corporation | Asynchronous pre-caching of synchronously loaded resources |
US9959100B2 (en) | 2015-08-12 | 2018-05-01 | Oracle International Corporation | Efficient storage and transfer of iOS binary files |
US10419514B2 (en) | 2015-08-14 | 2019-09-17 | Oracle International Corporation | Discovery of federated logins |
US10452497B2 (en) | 2015-08-14 | 2019-10-22 | Oracle International Corporation | Restoration of UI state in transactional systems |
US10013668B2 (en) * | 2015-08-14 | 2018-07-03 | Oracle International Corporation | Secure storage of enterprise certificates for cloud services |
US9749141B2 (en) | 2015-09-25 | 2017-08-29 | Qualcomm Incorporated | Secure boot devices, systems, and methods |
US10582012B2 (en) | 2015-10-16 | 2020-03-03 | Oracle International Corporation | Adaptive data transfer optimization |
US20170177863A1 (en) * | 2015-12-16 | 2017-06-22 | Wind River Systems, Inc. | Device, System, and Method for Detecting Malicious Software in Unallocated Memory |
CN106899542B (zh) * | 2015-12-17 | 2021-04-20 | 中兴通讯股份有限公司 | 安全接入方法、装置及系统 |
US11537723B2 (en) * | 2016-01-29 | 2022-12-27 | British Telecommunications Public Limited Company | Secure data storage |
US9838377B1 (en) | 2016-05-11 | 2017-12-05 | Oracle International Corporation | Task segregation in a multi-tenant identity and data security management cloud service |
US10878079B2 (en) | 2016-05-11 | 2020-12-29 | Oracle International Corporation | Identity cloud service authorization model with dynamic roles and scopes |
US10454940B2 (en) | 2016-05-11 | 2019-10-22 | Oracle International Corporation | Identity cloud service authorization model |
US10581820B2 (en) | 2016-05-11 | 2020-03-03 | Oracle International Corporation | Key generation and rollover |
US10341410B2 (en) | 2016-05-11 | 2019-07-02 | Oracle International Corporation | Security tokens for a multi-tenant identity and data security management cloud service |
US10425386B2 (en) | 2016-05-11 | 2019-09-24 | Oracle International Corporation | Policy enforcement point for a multi-tenant identity and data security management cloud service |
US10216254B1 (en) * | 2016-06-29 | 2019-02-26 | Altera Corporation | Methods and apparatus for selectively extracting and loading register states |
US10735394B2 (en) | 2016-08-05 | 2020-08-04 | Oracle International Corporation | Caching framework for a multi-tenant identity and data security management cloud service |
US10255061B2 (en) | 2016-08-05 | 2019-04-09 | Oracle International Corporation | Zero down time upgrade for a multi-tenant identity and data security management cloud service |
US10516672B2 (en) | 2016-08-05 | 2019-12-24 | Oracle International Corporation | Service discovery for a multi-tenant identity and data security management cloud service |
US10530578B2 (en) | 2016-08-05 | 2020-01-07 | Oracle International Corporation | Key store service |
US10585682B2 (en) | 2016-08-05 | 2020-03-10 | Oracle International Corporation | Tenant self-service troubleshooting for a multi-tenant identity and data security management cloud service |
US10263947B2 (en) | 2016-08-05 | 2019-04-16 | Oracle International Corporation | LDAP to SCIM proxy service |
US10505941B2 (en) | 2016-08-05 | 2019-12-10 | Oracle International Corporation | Virtual directory system for LDAP to SCIM proxy service |
US10484382B2 (en) | 2016-08-31 | 2019-11-19 | Oracle International Corporation | Data management for a multi-tenant identity cloud service |
US10511589B2 (en) | 2016-09-14 | 2019-12-17 | Oracle International Corporation | Single logout functionality for a multi-tenant identity and data security management cloud service |
US10594684B2 (en) | 2016-09-14 | 2020-03-17 | Oracle International Corporation | Generating derived credentials for a multi-tenant identity cloud service |
US10846390B2 (en) | 2016-09-14 | 2020-11-24 | Oracle International Corporation | Single sign-on functionality for a multi-tenant identity and data security management cloud service |
US10341354B2 (en) | 2016-09-16 | 2019-07-02 | Oracle International Corporation | Distributed high availability agent architecture |
US10567364B2 (en) | 2016-09-16 | 2020-02-18 | Oracle International Corporation | Preserving LDAP hierarchy in a SCIM directory using special marker groups |
US10791087B2 (en) | 2016-09-16 | 2020-09-29 | Oracle International Corporation | SCIM to LDAP mapping using subtype attributes |
US10445395B2 (en) | 2016-09-16 | 2019-10-15 | Oracle International Corporation | Cookie based state propagation for a multi-tenant identity cloud service |
US10484243B2 (en) | 2016-09-16 | 2019-11-19 | Oracle International Corporation | Application management for a multi-tenant identity cloud service |
JP7018437B2 (ja) | 2016-09-16 | 2022-02-10 | オラクル・インターナショナル・コーポレイション | マルチテナントアイデンティティおよびデータセキュリティ管理クラウドサービスのためのテナントおよびサービス管理 |
US10904074B2 (en) | 2016-09-17 | 2021-01-26 | Oracle International Corporation | Composite event handler for a multi-tenant identity cloud service |
US20180096412A1 (en) * | 2016-09-30 | 2018-04-05 | Mark E. Scott-Nash | Digital brokerage service for iot micro compute services |
WO2018075057A1 (en) | 2016-10-21 | 2018-04-26 | Hewlett-Packard Development Company, L.P. | Bios security |
US10482034B2 (en) * | 2016-11-29 | 2019-11-19 | Microsoft Technology Licensing, Llc | Remote attestation model for secure memory applications |
US11165565B2 (en) * | 2016-12-09 | 2021-11-02 | Microsoft Technology Licensing, Llc | Secure distribution private keys for use by untrusted code |
US10419402B2 (en) * | 2017-01-26 | 2019-09-17 | Microsoft Technology Licensing, Llc | Addressing a trusted execution environment using signing key |
US10897459B2 (en) * | 2017-01-26 | 2021-01-19 | Microsoft Technology Licensing, Llc | Addressing a trusted execution environment using encryption key |
US10261836B2 (en) | 2017-03-21 | 2019-04-16 | Oracle International Corporation | Dynamic dispatching of workloads spanning heterogeneous services |
US10783235B1 (en) * | 2017-05-04 | 2020-09-22 | Amazon Technologies, Inc. | Secure remote access of computing resources |
US10454915B2 (en) | 2017-05-18 | 2019-10-22 | Oracle International Corporation | User authentication using kerberos with identity cloud service |
US10819696B2 (en) * | 2017-07-13 | 2020-10-27 | Microsoft Technology Licensing, Llc | Key attestation statement generation providing device anonymity |
GB2565282B (en) * | 2017-08-02 | 2021-12-22 | Vnc Automotive Ltd | Remote control of a computing device |
US10348858B2 (en) | 2017-09-15 | 2019-07-09 | Oracle International Corporation | Dynamic message queues for a microservice based cloud service |
US11308132B2 (en) | 2017-09-27 | 2022-04-19 | Oracle International Corporation | Reference attributes for related stored objects in a multi-tenant cloud service |
US11271969B2 (en) | 2017-09-28 | 2022-03-08 | Oracle International Corporation | Rest-based declarative policy management |
US10834137B2 (en) | 2017-09-28 | 2020-11-10 | Oracle International Corporation | Rest-based declarative policy management |
US10705823B2 (en) | 2017-09-29 | 2020-07-07 | Oracle International Corporation | Application templates and upgrade framework for a multi-tenant identity cloud service |
EP3704611A4 (en) * | 2017-11-03 | 2021-06-02 | Nokia Technologies Oy | TRUSTED COMPUTER PROCESS AND APPARATUS |
US11943368B2 (en) * | 2017-11-03 | 2024-03-26 | Microsoft Technology Licensing, Llc | Provisioning trusted execution environment based on chain of trust including platform |
US10715564B2 (en) | 2018-01-29 | 2020-07-14 | Oracle International Corporation | Dynamic client registration for an identity cloud service |
US10931656B2 (en) | 2018-03-27 | 2021-02-23 | Oracle International Corporation | Cross-region trust for a multi-tenant identity cloud service |
US10798165B2 (en) | 2018-04-02 | 2020-10-06 | Oracle International Corporation | Tenant data comparison for a multi-tenant identity cloud service |
US11165634B2 (en) | 2018-04-02 | 2021-11-02 | Oracle International Corporation | Data replication conflict detection and resolution for a multi-tenant identity cloud service |
US11258775B2 (en) | 2018-04-04 | 2022-02-22 | Oracle International Corporation | Local write for a multi-tenant identity cloud service |
CN108600222B (zh) * | 2018-04-24 | 2021-01-29 | 北京握奇智能科技有限公司 | 客户端应用与可信应用的通信方法、系统以及终端 |
EP3803654A4 (en) * | 2018-05-28 | 2022-02-23 | Royal Bank of Canada | SYSTEM AND PROCEDURES FOR SECURE ELECTRONIC TRANSACTION PLATFORM |
US11012444B2 (en) | 2018-06-25 | 2021-05-18 | Oracle International Corporation | Declarative third party identity provider integration for a multi-tenant identity cloud service |
US10764273B2 (en) | 2018-06-28 | 2020-09-01 | Oracle International Corporation | Session synchronization across multiple devices in an identity cloud service |
US11443072B2 (en) * | 2018-06-29 | 2022-09-13 | Microsoft Technology Licensing, Llc | Peripheral device with resource isolation |
US11693835B2 (en) | 2018-10-17 | 2023-07-04 | Oracle International Corporation | Dynamic database schema allocation on tenant onboarding for a multi-tenant identity cloud service |
US11321187B2 (en) | 2018-10-19 | 2022-05-03 | Oracle International Corporation | Assured lazy rollback for a multi-tenant identity cloud service |
US11126757B2 (en) * | 2018-10-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Peripheral device |
GB2578628B (en) * | 2018-11-01 | 2021-09-15 | Trustonic Ltd | Device attestation techniques |
US11741196B2 (en) | 2018-11-15 | 2023-08-29 | The Research Foundation For The State University Of New York | Detecting and preventing exploits of software vulnerability using instruction tags |
CN112262545B (zh) * | 2019-01-04 | 2023-09-15 | 百度时代网络技术(北京)有限公司 | 主机系统与数据处理加速器之间的证明协议 |
US11251942B2 (en) | 2019-01-09 | 2022-02-15 | Alibaba Group Holding Limited | Secure communication channel between encryption/decryption component and trusted execution environment |
US11651357B2 (en) | 2019-02-01 | 2023-05-16 | Oracle International Corporation | Multifactor authentication without a user footprint |
US11061929B2 (en) | 2019-02-08 | 2021-07-13 | Oracle International Corporation | Replication of resource type and schema metadata for a multi-tenant identity cloud service |
US11321343B2 (en) | 2019-02-19 | 2022-05-03 | Oracle International Corporation | Tenant replication bootstrap for a multi-tenant identity cloud service |
US11669321B2 (en) | 2019-02-20 | 2023-06-06 | Oracle International Corporation | Automated database upgrade for a multi-tenant identity cloud service |
US11792226B2 (en) | 2019-02-25 | 2023-10-17 | Oracle International Corporation | Automatic api document generation from scim metadata |
US11423111B2 (en) | 2019-02-25 | 2022-08-23 | Oracle International Corporation | Client API for rest based endpoints for a multi-tenant identify cloud service |
US11625505B2 (en) * | 2019-08-19 | 2023-04-11 | Microsoft Technology Licensing, Llc | Processor with network stack domain and system domain using separate memory regions |
US11687378B2 (en) | 2019-09-13 | 2023-06-27 | Oracle International Corporation | Multi-tenant identity cloud service with on-premise authentication integration and bridge high availability |
US11870770B2 (en) | 2019-09-13 | 2024-01-09 | Oracle International Corporation | Multi-tenant identity cloud service with on-premise authentication integration |
US11470118B2 (en) | 2019-11-01 | 2022-10-11 | Microsoft Technology Licensing, Llc | Processor with network processing stack having separate binary |
FR3103071B1 (fr) * | 2019-11-12 | 2023-01-27 | Airbus Cybersecurity Sas | Procédé de communication sécurisé |
US11611548B2 (en) | 2019-11-22 | 2023-03-21 | Oracle International Corporation | Bulk multifactor authentication enrollment |
US11388146B2 (en) * | 2020-01-10 | 2022-07-12 | Bitglass, Llc | Secure low-latency trapdoor proxy |
US11374981B2 (en) * | 2020-01-17 | 2022-06-28 | Cisco Technology, Inc. | Software usage description (SUD) for installable applications |
US11888972B2 (en) | 2020-02-26 | 2024-01-30 | Red Hat, Inc. | Split security for trusted execution environments |
US11630683B2 (en) | 2020-02-26 | 2023-04-18 | Red Hat, Inc. | Low latency launch for trusted execution environments |
US11455102B2 (en) * | 2020-03-09 | 2022-09-27 | SK Hynix Inc. | Computing system and operating method thereof |
US11461021B2 (en) | 2020-03-09 | 2022-10-04 | SK Hynix Inc. | Computing system and operating method thereof |
US11620411B2 (en) | 2020-03-24 | 2023-04-04 | Red Hat, Inc. | Elastic launch for trusted execution environments |
US11425123B2 (en) | 2020-04-16 | 2022-08-23 | Bank Of America Corporation | System for network isolation of affected computing systems using environment hash outputs |
US11481484B2 (en) | 2020-04-16 | 2022-10-25 | Bank Of America Corporation | Virtual environment system for secure execution of program code using cryptographic hashes |
US11263109B2 (en) | 2020-04-16 | 2022-03-01 | Bank Of America Corporation | Virtual environment system for validating executable data using accelerated time-based process execution |
US11528276B2 (en) | 2020-04-16 | 2022-12-13 | Bank Of America Corporation | System for prevention of unauthorized access using authorized environment hash outputs |
US11423160B2 (en) | 2020-04-16 | 2022-08-23 | Bank Of America Corporation | System for analysis and authorization for use of executable environment data in a computing system using hash outputs |
US11409619B2 (en) | 2020-04-29 | 2022-08-09 | The Research Foundation For The State University Of New York | Recovering a virtual machine after failure of post-copy live migration |
US11783042B2 (en) * | 2020-06-17 | 2023-10-10 | Qualcomm Incorporated | Access control system and method for isolating mutually distrusting security domains |
US11611431B2 (en) * | 2020-07-01 | 2023-03-21 | Red Hat, Inc. | Network bound encryption for recovery of trusted execution environments |
US11372982B2 (en) | 2020-07-02 | 2022-06-28 | Bank Of America Corporation | Centralized network environment for processing validated executable data based on authorized hash outputs |
US20230281299A1 (en) * | 2020-07-14 | 2023-09-07 | Gapfruit Ag | Computing device for establishing a trusted execution environment |
US11741221B2 (en) | 2020-07-29 | 2023-08-29 | Red Hat, Inc. | Using a trusted execution environment to enable network booting |
US20230239163A1 (en) * | 2022-01-26 | 2023-07-27 | Microsoft Technology Licensing, Llc | Establishing pki chain of trust in air gapped cloud |
US11983418B2 (en) * | 2022-06-27 | 2024-05-14 | Western Digital Technologies, Inc. | Security indicator on a data storage device |
Family Cites Families (204)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4874164A (en) | 1986-07-18 | 1989-10-17 | Commodore-Amiga, Inc. | Personal computer apparatus for block transfer of bit-mapped image data |
US5819091A (en) | 1994-12-22 | 1998-10-06 | Arendt; James Wendell | User level control of degree of client-side processing |
US5754830A (en) | 1996-04-01 | 1998-05-19 | Openconnect Systems, Incorporated | Server and web browser terminal emulator for persistent connection to a legacy host system and method of operation |
US5815686A (en) | 1996-09-12 | 1998-09-29 | Silicon Graphics, Inc. | Method and apparatus for address space translation using a TLB |
US5926631A (en) | 1997-08-15 | 1999-07-20 | International Business Machines Corporation | Network computer emulator systems, methods and computer program products for personal computers |
KR20010040424A (ko) | 1998-01-22 | 2001-05-15 | 인텔로지스 | 공통 데이타교환 게이트웨이의 방법 및 장치 |
US6721288B1 (en) | 1998-09-16 | 2004-04-13 | Openwave Systems Inc. | Wireless mobile devices having improved operation during network unavailability |
US8060656B2 (en) | 1998-10-09 | 2011-11-15 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US7293107B1 (en) | 1998-10-09 | 2007-11-06 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US6546425B1 (en) | 1998-10-09 | 2003-04-08 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US7136645B2 (en) | 1998-10-09 | 2006-11-14 | Netmotion Wireless, Inc. | Method and apparatus for providing mobile and other intermittent connectivity in a computing environment |
US6357003B1 (en) | 1998-10-21 | 2002-03-12 | Silicon Graphics, Inc. | Advanced firmware boot sequence x86 computer system that maintains legacy hardware and software compatibility |
US7882247B2 (en) | 1999-06-11 | 2011-02-01 | Netmotion Wireless, Inc. | Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments |
US6578054B1 (en) | 1999-10-04 | 2003-06-10 | Microsoft Corporation | Method and system for supporting off-line mode of operation and synchronization using resource state information |
US6668376B1 (en) | 2000-01-07 | 2003-12-23 | Ricoh Company, Ltd. | System and method for automatically loading a device driver |
US7287259B2 (en) | 2000-04-24 | 2007-10-23 | Microsoft Corporation | Isolating assembly versions for binding to application programs |
US6665731B1 (en) | 2000-05-16 | 2003-12-16 | Intel Corporation | Method for remotely accessing component management information |
US6760815B1 (en) | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
US6986052B1 (en) | 2000-06-30 | 2006-01-10 | Intel Corporation | Method and apparatus for secure execution using a secure memory partition |
US6865591B1 (en) | 2000-06-30 | 2005-03-08 | Intel Corporation | Apparatus and method for building distributed fault-tolerant/high-availability computed applications |
US6813670B1 (en) | 2000-09-26 | 2004-11-02 | Microsoft Corporation | Automatic server-side plug-and-play without user intervention |
US20020069192A1 (en) | 2000-12-04 | 2002-06-06 | Aegerter William Charles | Modular distributed mobile data applications |
US6832273B2 (en) | 2000-12-21 | 2004-12-14 | Microsoft Corporation | System and method to specify extended configuration descriptor information in USB devices |
US20030037237A1 (en) | 2001-04-09 | 2003-02-20 | Jean-Paul Abgrall | Systems and methods for computer device authentication |
US6931429B2 (en) | 2001-04-27 | 2005-08-16 | Left Gate Holdings, Inc. | Adaptable wireless proximity networking |
US20050198379A1 (en) | 2001-06-13 | 2005-09-08 | Citrix Systems, Inc. | Automatically reconnecting a client across reliable and persistent communication sessions |
US6799173B2 (en) | 2001-11-14 | 2004-09-28 | Sun Microsystems, Inc. | Method and apparatus for sharing code containing references to non-shared objects |
US6981268B2 (en) | 2001-12-05 | 2005-12-27 | Microsoft Corporation | System and method for persisting and resolving application assembly binds |
US7185359B2 (en) | 2001-12-21 | 2007-02-27 | Microsoft Corporation | Authentication and authorization across autonomous network systems |
US7275105B2 (en) | 2002-01-16 | 2007-09-25 | Laszlo Systems, Inc. | Enabling online and offline operation |
KR100444996B1 (ko) | 2002-02-08 | 2004-08-21 | 삼성전자주식회사 | 인터넷을 통한 디바이스 드라이버 자동 설치 및 유지 보수방법 및 그 시스템 |
US7577722B1 (en) | 2002-04-05 | 2009-08-18 | Vmware, Inc. | Provisioning of computer systems using virtual machines |
US6954852B2 (en) | 2002-04-18 | 2005-10-11 | Ardence, Inc. | System for and method of network booting of an operating system to a client computer using hibernation |
US7676538B2 (en) | 2002-05-02 | 2010-03-09 | Bea Systems, Inc. | Systems and methods for application view transactions |
US8255548B2 (en) | 2002-06-13 | 2012-08-28 | Salesforce.Com, Inc. | Offline web services API to mirror online web services API |
US9171049B2 (en) | 2002-06-13 | 2015-10-27 | Salesforce.Com, Inc. | Offline simulation of online session between client and server |
US7421579B2 (en) | 2002-06-28 | 2008-09-02 | Microsoft Corporation | Multiplexing a secure counter to implement second level secure counters |
US7065607B2 (en) | 2002-06-28 | 2006-06-20 | Microsoft Corporation | System and method for implementing a counter |
US20040015537A1 (en) | 2002-07-15 | 2004-01-22 | Richard Doerksen | Handheld client framework system |
US7694139B2 (en) * | 2002-10-24 | 2010-04-06 | Symantec Corporation | Securing executable content using a trusted computing platform |
US7484208B1 (en) | 2002-12-12 | 2009-01-27 | Michael Nelson | Virtual machine migration |
US7536688B2 (en) | 2003-02-28 | 2009-05-19 | Azul Systems | Segmented virtual machine |
US7509644B2 (en) | 2003-03-04 | 2009-03-24 | Secure 64 Software Corp. | Operating system capable of supporting a customized execution environment |
US7788669B2 (en) | 2003-05-02 | 2010-08-31 | Microsoft Corporation | System for isolating first computing environment from second execution environment while sharing resources by copying data from first portion to second portion of memory |
US7444337B2 (en) | 2004-03-09 | 2008-10-28 | Ntt Docomo, Inc. | Framework and associated apparatus for the adaptive replication of applications with server side code units |
US7530103B2 (en) | 2003-08-07 | 2009-05-05 | Microsoft Corporation | Projection of trustworthiness from a trusted environment to an untrusted environment |
US7383537B2 (en) | 2003-08-20 | 2008-06-03 | Microsoft Corporation | Debugging an application that employs rights-managed content |
US20080222160A1 (en) | 2003-09-15 | 2008-09-11 | Macdonald Craig | Method and system for providing a program for execution without requiring installation |
US7519814B2 (en) | 2003-09-15 | 2009-04-14 | Trigence Corp. | System for containerization of application sets |
US7774762B2 (en) | 2003-09-15 | 2010-08-10 | Trigence Corp. | System including run-time software to enable a software application to execute on an incompatible computer platform |
US8332652B2 (en) * | 2003-10-01 | 2012-12-11 | International Business Machines Corporation | Computing device that securely runs authorized software |
US20050076186A1 (en) | 2003-10-03 | 2005-04-07 | Microsoft Corporation | Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements |
US7441011B2 (en) | 2003-10-23 | 2008-10-21 | Microsoft Corporation | Truth on client persistent caching |
US20050091226A1 (en) | 2003-10-23 | 2005-04-28 | Yun Lin | Persistent caching directory level support |
US7496768B2 (en) | 2003-10-24 | 2009-02-24 | Microsoft Corporation | Providing secure input and output to a trusted agent in a system with a high-assurance execution environment |
US20050108171A1 (en) | 2003-11-19 | 2005-05-19 | Bajikar Sundeep M. | Method and apparatus for implementing subscriber identity module (SIM) capabilities in an open platform |
US20050177635A1 (en) | 2003-12-18 | 2005-08-11 | Roland Schmidt | System and method for allocating server resources |
US7272782B2 (en) | 2003-12-19 | 2007-09-18 | Backweb Technologies, Inc. | System and method for providing offline web application, page, and form access in a networked environment |
US7444621B2 (en) | 2004-02-20 | 2008-10-28 | Microsoft Corporation | Method and system for providing a common operating system |
US7940932B2 (en) | 2004-04-08 | 2011-05-10 | Texas Instruments Incorporated | Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor |
US7574709B2 (en) | 2004-04-30 | 2009-08-11 | Microsoft Corporation | VEX-virtual extension framework |
US7584502B2 (en) | 2004-05-03 | 2009-09-01 | Microsoft Corporation | Policy engine and methods and systems for protecting data |
US7769720B2 (en) | 2004-06-16 | 2010-08-03 | Hewlett-Packard Development Company, L.P. | Systems and methods for migrating a server from one physical platform to a different physical platform |
US20060005047A1 (en) | 2004-06-16 | 2006-01-05 | Nec Laboratories America, Inc. | Memory encryption architecture |
US9083765B2 (en) | 2004-07-02 | 2015-07-14 | Oracle International Corporation | Systems and methods of offline processing |
US7587755B2 (en) | 2004-07-02 | 2009-09-08 | Citrix Systems, Inc. | System and method for executing interactive applications with minimal privileges |
JP2008507928A (ja) | 2004-07-23 | 2008-03-13 | サイトリックス システムズ, インコーポレイテッド | ネットワークノード間の通信を最適化するためのシステムおよび方法 |
US20090024757A1 (en) | 2004-07-30 | 2009-01-22 | Proctor David W | Automatic Protocol Determination For Portable Devices Supporting Multiple Protocols |
US7613862B2 (en) | 2004-08-10 | 2009-11-03 | Intel Corporation | Embedded driver for bus-connected device |
CN101006433B (zh) | 2004-08-25 | 2012-01-11 | 日本电气株式会社 | 信息通信装置和程序执行环境控制方法 |
WO2006055838A2 (en) | 2004-11-18 | 2006-05-26 | America Online, Inc. | Runtime environment |
US9450966B2 (en) * | 2004-11-29 | 2016-09-20 | Kip Sign P1 Lp | Method and apparatus for lifecycle integrity verification of virtual machines |
US7721138B1 (en) | 2004-12-28 | 2010-05-18 | Acronis Inc. | System and method for on-the-fly migration of server from backup |
US20060156418A1 (en) | 2005-01-10 | 2006-07-13 | Ibm Corporation | Method and apparatus for preventing unauthorized access to data |
US20060161982A1 (en) | 2005-01-18 | 2006-07-20 | Chari Suresh N | Intrusion detection system |
US9525666B2 (en) | 2005-01-31 | 2016-12-20 | Unisys Corporation | Methods and systems for managing concurrent unsecured and cryptographically secure communications across unsecured networks |
US7996493B2 (en) | 2005-03-10 | 2011-08-09 | Microsoft Corporation | Framework for managing client application data in offline and online environments |
US7496495B2 (en) | 2005-05-12 | 2009-02-24 | Microsoft Corporation | Virtual operating system device communication relying on memory access violations |
US7685593B2 (en) | 2005-05-12 | 2010-03-23 | Microsoft Corporation | Systems and methods for supporting multiple gaming console emulation environments |
US7363463B2 (en) | 2005-05-13 | 2008-04-22 | Microsoft Corporation | Method and system for caching address translations from multiple address spaces in virtual machines |
US20060294518A1 (en) | 2005-06-28 | 2006-12-28 | Richmond Michael S | Method, apparatus and system for a lightweight virtual machine monitor |
US7844442B2 (en) | 2005-08-16 | 2010-11-30 | Exent Technologies, Ltd. | System and method for providing a remote user interface for an application executing on a computing device |
US20070074191A1 (en) | 2005-08-30 | 2007-03-29 | Geisinger Nile J | Software executables having virtual hardware, operating systems, and networks |
US20070283324A1 (en) | 2005-08-30 | 2007-12-06 | Geisinger Nile J | System and method for creating programs that comprise several execution layers |
US7523323B2 (en) | 2005-09-15 | 2009-04-21 | Intel Corporation | Method and apparatus for quick resumption |
US7703081B1 (en) | 2005-09-22 | 2010-04-20 | Symantec Corporation | Fast system call hooking on x86-64 bit windows XP platforms |
US8074231B2 (en) | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US7836303B2 (en) | 2005-12-09 | 2010-11-16 | University Of Washington | Web browser operating system |
US7447896B2 (en) | 2005-12-12 | 2008-11-04 | Microsoft Corporation | OS mini-boot for running multiple environments |
US8539481B2 (en) | 2005-12-12 | 2013-09-17 | Microsoft Corporation | Using virtual hierarchies to build alternative namespaces |
US20070174910A1 (en) | 2005-12-13 | 2007-07-26 | Zachman Frederick J | Computer memory security platform |
WO2007074565A1 (ja) | 2005-12-27 | 2007-07-05 | Nec Corporation | プログラム実行制御方法および装置ならびに実行制御プログラム |
US7627728B1 (en) | 2005-12-29 | 2009-12-01 | Symantec Operating Corporation | System and method for efficient generation of application snapshots |
US20070169116A1 (en) | 2006-01-18 | 2007-07-19 | Dell Products L.P. | Method and system for automated installation of system specific drivers |
US20070174429A1 (en) | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US7743026B2 (en) | 2006-01-31 | 2010-06-22 | Microsoft Corporation | Redirection to local copies of server-based files |
WO2007109921A1 (en) | 2006-03-28 | 2007-10-04 | Intel Corporation | Methods and apparatus to implement annotation based thunking |
US7913252B2 (en) | 2006-04-11 | 2011-03-22 | Installfree, Inc. | Portable platform for executing software applications in a virtual environment |
US7747785B2 (en) | 2006-04-14 | 2010-06-29 | Microsoft Corporation | Instant messaging plug-ins |
US8104041B2 (en) | 2006-04-24 | 2012-01-24 | Hewlett-Packard Development Company, L.P. | Computer workload redistribution based on prediction from analysis of local resource utilization chronology data |
US8117554B1 (en) | 2006-04-25 | 2012-02-14 | Parallels Holdings, Ltd. | Seamless integration of non-native widgets and windows with dynamically scalable resolution into native operating system |
US7725305B2 (en) | 2006-06-08 | 2010-05-25 | Microsoft Corporation | Partial virtualization on computing device |
US7812985B2 (en) | 2006-06-09 | 2010-10-12 | Kabushiki Kaisha Toshiba | System and method for rerouting of document processing jobs |
US20080016339A1 (en) | 2006-06-29 | 2008-01-17 | Jayant Shukla | Application Sandbox to Detect, Remove, and Prevent Malware |
US20080005472A1 (en) | 2006-06-30 | 2008-01-03 | Microsoft Corporation | Running applications from removable media |
US20080127348A1 (en) | 2006-08-31 | 2008-05-29 | Kenneth Largman | Network computer system and method using thin user client and virtual machine to provide immunity to hacking, viruses and spy ware |
US7644264B1 (en) | 2006-10-17 | 2010-01-05 | Symantec Corporation | Method and system for creating and deploying disk images |
US8171502B2 (en) | 2006-11-29 | 2012-05-01 | Sony Ericsson Mobile Communications Ab | Methods, devices and computer program products for automatically installing device drivers from a peripheral device onto a host computer |
US20080127182A1 (en) | 2006-11-29 | 2008-05-29 | Newport William T | Managing Memory Pages During Virtual Machine Migration |
EP2115997A1 (en) * | 2007-02-26 | 2009-11-11 | Nokia Corporation | Apparatus, method and computer program product providing enforcement of operator lock |
US8452853B2 (en) | 2007-03-05 | 2013-05-28 | International Business Machines Corporation | Browser with offline web-application architecture |
US20100153569A1 (en) | 2007-03-09 | 2010-06-17 | Ghost, Inc. | System and Method for a Virtual Hosted Operating System |
US8037039B2 (en) | 2007-04-20 | 2011-10-11 | Microsoft Corporation | Runtime class database operation |
US20080276012A1 (en) | 2007-05-04 | 2008-11-06 | Joe Mesa | Driver Loading via a PnP Device |
JP5079084B2 (ja) | 2007-05-09 | 2012-11-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ・システムの操作を防止するための方法及びデータ処理システム |
US8875266B2 (en) | 2007-05-16 | 2014-10-28 | Vmware, Inc. | System and methods for enforcing software license compliance with virtual machines |
ITRM20070347A1 (it) | 2007-06-21 | 2008-12-22 | Space Software Italia S P A | Metodo e sistema per la interazione e cooperazione di sensori, attuatori e robot |
US20090064196A1 (en) | 2007-08-31 | 2009-03-05 | Microsoft Corporation | Model based device driver code generation |
US20090094337A1 (en) | 2007-10-08 | 2009-04-09 | Eric Wilfred Bruno Dias | Method of accessing web e-mail off-line |
CN100498816C (zh) | 2007-11-19 | 2009-06-10 | 南京大学 | 一种高安全等级操作系统的参照监视器实现方法 |
US8505029B1 (en) | 2007-11-26 | 2013-08-06 | Adobe Systems Incorporated | Virtual machine communication |
JP4740926B2 (ja) | 2007-11-27 | 2011-08-03 | フェリカネットワークス株式会社 | サービス提供システム、サービス提供サーバ、及び情報端末装置 |
WO2009085977A2 (en) | 2007-12-20 | 2009-07-09 | Virtual Computer, Inc. | Virtual computing management systems and methods |
US8671404B2 (en) | 2008-02-12 | 2014-03-11 | Red Hat, Inc. | Distributing and managing virtual machines |
US8156503B2 (en) | 2008-02-12 | 2012-04-10 | International Business Machines Corporation | System, method and computer program product for accessing a memory space allocated to a virtual machine |
US20090210871A1 (en) | 2008-02-20 | 2009-08-20 | Zak Dechovich | System and method for software application migration |
US8538811B2 (en) | 2008-03-03 | 2013-09-17 | Yahoo! Inc. | Method and apparatus for social network marketing with advocate referral |
US7971049B2 (en) | 2008-03-31 | 2011-06-28 | Symantec Corporation | Systems and methods for managing user configuration settings |
US8782604B2 (en) | 2008-04-11 | 2014-07-15 | Oracle International Corporation | Sandbox support for metadata in running applications |
US8359593B2 (en) | 2008-04-21 | 2013-01-22 | Vmware, Inc. | Computer machine migration of file system images using a redo-log file |
US8424082B2 (en) | 2008-05-08 | 2013-04-16 | Google Inc. | Safely executing an untrusted native code module on a computing device |
US8364983B2 (en) | 2008-05-08 | 2013-01-29 | Microsoft Corporation | Corralling virtual machines with encryption keys |
US8195774B2 (en) | 2008-05-23 | 2012-06-05 | Vmware, Inc. | Distributed virtual switch for virtualized computer systems |
WO2009147468A2 (en) | 2008-05-27 | 2009-12-10 | Telefonaktiebolaget L M Ericsson (Publ) | System and method for backwards compatible multi-access with proxy mobile internet protocol |
US8276145B2 (en) | 2008-06-27 | 2012-09-25 | Microsoft Corporation | Protected mode scheduling of operations |
US9176754B2 (en) | 2008-07-16 | 2015-11-03 | Google Inc. | Method and system for executing applications using native code modules |
US8285670B2 (en) | 2008-07-22 | 2012-10-09 | International Business Machines Corporation | Dynamically maintaining coherency within live ranges of direct buffers |
US20100211663A1 (en) | 2008-07-28 | 2010-08-19 | Viewfinity Inc. | Management of pool member configuration |
CN101640589B (zh) | 2008-07-29 | 2012-11-07 | 华为技术有限公司 | 在安全可移动媒介之间共享许可的方法及装置 |
CN101645020A (zh) | 2008-08-04 | 2010-02-10 | 优诺威讯国际有限公司 | 虚拟操作系统创建方法 |
US7886183B2 (en) | 2008-08-07 | 2011-02-08 | Symantec Operating Corporation | Providing fault tolerant storage system to a cluster |
JP2010044579A (ja) | 2008-08-12 | 2010-02-25 | Brother Ind Ltd | 周辺装置、プログラム、およびドライバインストールシステム |
TW201007574A (en) | 2008-08-13 | 2010-02-16 | Inventec Corp | Internet server system and method of constructing and starting a virtual machine |
CN101655798B (zh) | 2008-08-18 | 2013-03-27 | 联想(北京)有限公司 | 一种虚拟机环境中应用程序部署和运行的装置及方法 |
US8381288B2 (en) | 2008-09-30 | 2013-02-19 | Intel Corporation | Restricted component access to application memory |
JP4966942B2 (ja) | 2008-10-01 | 2012-07-04 | 株式会社日立製作所 | 仮想pc管理方法、仮想pc管理システム、および仮想pc管理プログラム |
US8291261B2 (en) | 2008-11-05 | 2012-10-16 | Vulcan Technologies Llc | Lightweight application-level runtime state save-and-restore utility |
US8782670B2 (en) | 2009-04-10 | 2014-07-15 | Open Invention Network, Llc | System and method for application isolation |
US8103837B2 (en) | 2008-12-17 | 2012-01-24 | Hewlett-Packard Development Company, L.P. | Servicing memory read requests |
US9185208B2 (en) | 2008-12-23 | 2015-11-10 | At&T Mobility Ii Llc | Calendar-callback voicemail |
TWI384378B (zh) | 2008-12-29 | 2013-02-01 | Ind Tech Res Inst | 網頁應用程式執行方法 |
US8117317B2 (en) | 2008-12-31 | 2012-02-14 | Sap Ag | Systems and methods for integrating local systems with cloud computing resources |
US8230121B2 (en) | 2009-01-05 | 2012-07-24 | Sierra Wireless, Inc. | Method and apparatus for identifying a device handle in a computer system |
US8214829B2 (en) | 2009-01-15 | 2012-07-03 | International Business Machines Corporation | Techniques for placing applications in heterogeneous virtualized systems while minimizing power and migration cost |
US8112480B2 (en) | 2009-01-16 | 2012-02-07 | Microsoft Corporation | Signaling support for sharer switching in application sharing |
US8019861B2 (en) | 2009-01-29 | 2011-09-13 | Vmware, Inc. | Speculative virtual machine resource scheduling |
US10203993B2 (en) | 2009-02-18 | 2019-02-12 | International Business Machines Corporation | Method and system for continuous optimization of data centers by combining server and storage virtualization |
US8769068B2 (en) | 2009-02-24 | 2014-07-01 | Telcordia Technologies, Inc. | System and method for policy based management for a high security MANET |
US8418236B1 (en) | 2009-04-10 | 2013-04-09 | Open Invention Network Llc | System and method for streaming application isolation |
JP5289153B2 (ja) | 2009-04-14 | 2013-09-11 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにコンピュータプログラム |
US8751627B2 (en) | 2009-05-05 | 2014-06-10 | Accenture Global Services Limited | Method and system for application migration in a cloud |
US8429647B2 (en) | 2009-05-06 | 2013-04-23 | Vmware, Inc. | Virtual machine migration across network by publishing routes to the associated virtual networks via virtual router after the start of migration of the virtual machine |
US9588803B2 (en) | 2009-05-11 | 2017-03-07 | Microsoft Technology Licensing, Llc | Executing native-code applications in a browser |
JP2010267135A (ja) | 2009-05-15 | 2010-11-25 | Toshiba Corp | メモリコントローラ |
US8150971B2 (en) | 2009-05-31 | 2012-04-03 | Red Hat Israel, Ltd. | Mechanism for migration of client-side virtual machine system resources |
US20100332629A1 (en) | 2009-06-04 | 2010-12-30 | Lauren Ann Cotugno | Secure custom application cloud computing architecture |
US8954752B2 (en) * | 2011-02-23 | 2015-02-10 | International Business Machines Corporation | Building and distributing secure object software |
WO2011002946A1 (en) | 2009-06-30 | 2011-01-06 | Citrix Systems, Inc. | Methods and systems for selecting a desktop execution location |
WO2011027191A1 (en) | 2009-09-02 | 2011-03-10 | Telenor Asa | A method, system, and computer readable medium for controlling access to a memory in a memory device |
US8285987B1 (en) * | 2009-12-04 | 2012-10-09 | The United States Of America As Represented By The Secretary Of The Air Force | Emulation-based software protection |
US8479286B2 (en) | 2009-12-15 | 2013-07-02 | Mcafee, Inc. | Systems and methods for behavioral sandboxing |
US8645977B2 (en) | 2010-02-04 | 2014-02-04 | Microsoft Corporation | Extensible application virtualization subsystems |
US8301856B2 (en) | 2010-02-16 | 2012-10-30 | Arm Limited | Restricting memory areas for an instruction read in dependence upon a hardware mode and a security flag |
US20110257992A1 (en) | 2010-02-19 | 2011-10-20 | Covermymeds, Llc | Apparatus and method for processing prior authorizations for prescription drugs |
US20110231670A1 (en) | 2010-03-16 | 2011-09-22 | Shevchenko Oleksiy Yu | Secure access device for cloud computing |
US8880773B2 (en) | 2010-04-23 | 2014-11-04 | Red Hat, Inc. | Guaranteeing deterministic bounded tunable downtime for live migration of virtual machines over reliable channels |
US9311509B2 (en) | 2010-05-09 | 2016-04-12 | Citrix Systems, Inc. | Creation and delivery of encrypted virtual disks |
EP2980695B1 (en) | 2010-05-09 | 2017-04-12 | Citrix Systems, Inc. | Methods and systems for forcing an application to store data in a secure storage location |
US8640187B2 (en) | 2010-05-28 | 2014-01-28 | Red Hat, Inc. | Systems and methods for providing an fully functional isolated execution environment for accessing content |
WO2011152910A1 (en) | 2010-06-02 | 2011-12-08 | Vmware, Inc. | Securing customer virtual machines in a multi-tenant cloud |
US8166211B2 (en) | 2010-06-07 | 2012-04-24 | Vmware, Inc. | Safely sharing USB devices |
US8935317B2 (en) | 2010-06-23 | 2015-01-13 | Microsoft Corporation | Dynamic partitioning of applications between clients and servers |
JP2012008756A (ja) * | 2010-06-24 | 2012-01-12 | Sony Corp | 情報処理装置、および情報処理方法、並びにプログラム |
CN102314450B (zh) | 2010-06-30 | 2014-11-26 | 国际商业机器公司 | 用于增强网页浏览的方法和设备 |
US9323921B2 (en) | 2010-07-13 | 2016-04-26 | Microsoft Technology Licensing, Llc | Ultra-low cost sandboxing for application appliances |
US8972995B2 (en) | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
US9058577B2 (en) | 2010-08-09 | 2015-06-16 | Epmod, Inc. | Network centric structured communications network |
US9436502B2 (en) | 2010-12-10 | 2016-09-06 | Microsoft Technology Licensing, Llc | Eventually consistent storage and transactions in cloud based environment |
US8903705B2 (en) | 2010-12-17 | 2014-12-02 | Microsoft Corporation | Application compatibility shims for minimal client computers |
US8972746B2 (en) | 2010-12-17 | 2015-03-03 | Intel Corporation | Technique for supporting multiple secure enclaves |
US8832452B2 (en) | 2010-12-22 | 2014-09-09 | Intel Corporation | System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves |
US20120179485A1 (en) | 2011-01-07 | 2012-07-12 | Independa, Inc. | Systems and methods for integrated care management |
US20120203932A1 (en) | 2011-02-08 | 2012-08-09 | Microsoft Corporation | Multi-master media metadata synchronization |
US9483284B2 (en) | 2011-02-25 | 2016-11-01 | Red Hat, Inc. | Version compatibility determination |
US9891939B2 (en) | 2011-03-03 | 2018-02-13 | Microsoft Technology Licensing, Llc | Application compatibility with library operating systems |
US8799997B2 (en) | 2011-04-18 | 2014-08-05 | Bank Of America Corporation | Secure network cloud architecture |
US9495183B2 (en) | 2011-05-16 | 2016-11-15 | Microsoft Technology Licensing, Llc | Instruction set emulation for guest operating systems |
US8745434B2 (en) | 2011-05-16 | 2014-06-03 | Microsoft Corporation | Platform for continuous mobile-cloud services |
US20130031371A1 (en) * | 2011-07-25 | 2013-01-31 | Alcatel-Lucent Usa Inc. | Software Run-Time Provenance |
US20130036431A1 (en) | 2011-08-02 | 2013-02-07 | Microsoft Corporation | Constraining Execution of Specified Device Drivers |
US20130054734A1 (en) | 2011-08-23 | 2013-02-28 | Microsoft Corporation | Migration of cloud applications between a local computing device and cloud |
US9389933B2 (en) | 2011-12-12 | 2016-07-12 | Microsoft Technology Licensing, Llc | Facilitating system service request interactions for hardware-protected applications |
US9413538B2 (en) | 2011-12-12 | 2016-08-09 | Microsoft Technology Licensing, Llc | Cryptographic certification of secure hosted execution environments |
KR101874081B1 (ko) | 2012-06-07 | 2018-07-03 | 에스케이테크엑스 주식회사 | 개선된 보안 기능 기반의 클라우드 서비스 시스템 및 이를 지원하는 방법 |
-
2011
- 2011-12-12 US US13/323,465 patent/US9413538B2/en active Active
-
2012
- 2012-02-13 US US13/372,390 patent/US9425965B2/en active Active
- 2012-12-04 EP EP12858587.4A patent/EP2791817B1/en active Active
- 2012-12-04 ES ES12858587.4T patent/ES2692900T3/es active Active
- 2012-12-04 WO PCT/US2012/067662 patent/WO2013090045A1/en active Application Filing
- 2012-12-11 CN CN201210533610.9A patent/CN103051451B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP2791817A4 (en) | 2014-10-22 |
CN103051451A (zh) | 2013-04-17 |
EP2791817B1 (en) | 2018-07-25 |
US9413538B2 (en) | 2016-08-09 |
EP2791817A1 (en) | 2014-10-22 |
US20130151848A1 (en) | 2013-06-13 |
CN103051451B (zh) | 2017-06-09 |
US20130151846A1 (en) | 2013-06-13 |
WO2013090045A1 (en) | 2013-06-20 |
US9425965B2 (en) | 2016-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2692900T3 (es) | Certificación criptográfica de entornos de ejecución alojados seguros | |
JP7416775B2 (ja) | 周辺デバイス | |
CN110892691B (zh) | 安全执行平台群集 | |
US10530753B2 (en) | System and method for secure cloud computing | |
CN109313690B (zh) | 自包含的加密引导策略验证 | |
US10404476B1 (en) | Systems and methods for providing authentication to a plurality of devices | |
US20190089527A1 (en) | System and method of enforcing a computer policy | |
EP3540626B1 (en) | Enclave launch and authentication | |
CN105706048B (zh) | 使用硬件信任根的媒体客户端装置鉴权 | |
US11212095B2 (en) | Allowing restricted external access to devices | |
US20180131677A1 (en) | Balancing public and personal security needs | |
BR112019013584A2 (pt) | Endereçamento de um ambiente de execução confiável usando a chave de assinatura | |
KR20230095947A (ko) | 키 관련 속성을 사용한 보안 키 교환 기법 | |
US11398906B2 (en) | Confirming receipt of audit records for audited use of a cryptographic key | |
EP3836478A1 (en) | Method and system of data encryption using cryptographic keys | |
US11405201B2 (en) | Secure transfer of protected application storage keys with change of trusted computing base | |
CN114244565A (zh) | 密钥分发方法、装置、设备、存储介质和计算机程序产品 | |
KR20200101020A (ko) | 컨소시엄 블록체인 참가 노드 간의 인증 방안 | |
CA3042984C (en) | Balancing public and personal security needs | |
CN115756515A (zh) | 容器软件部署权限的校验方法、装置、设备及存储介质 | |
Nepal et al. | Portable Key Management Service for Cloud Storage |