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 PDF

Info

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
Application number
ES12858587.4T
Other languages
English (en)
Inventor
Andrew A. Baumann
Galen C. Hunt
Marcus Peinado
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Application granted granted Critical
Publication of ES2692900T3 publication Critical patent/ES2692900T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test 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)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    REIVINDICACIONES
    1. 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; y
    proporcionar 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. 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. 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. 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. 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. 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. 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 y
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    ejecutable 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; y
    determine, 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. 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. 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. 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. 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; y
    uno 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. 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. 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. 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.
ES12858587.4T 2011-12-12 2012-12-04 Certificación criptográfica de entornos de ejecución alojados seguros Active ES2692900T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 에스케이테크엑스 주식회사 개선된 보안 기능 기반의 클라우드 서비스 시스템 및 이를 지원하는 방법

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