ES2975041T3 - Etiquetado de hardware de almacenamiento seguro de control de interfaz segura - Google Patents

Etiquetado de hardware de almacenamiento seguro de control de interfaz segura Download PDF

Info

Publication number
ES2975041T3
ES2975041T3 ES20710115T ES20710115T ES2975041T3 ES 2975041 T3 ES2975041 T3 ES 2975041T3 ES 20710115 T ES20710115 T ES 20710115T ES 20710115 T ES20710115 T ES 20710115T ES 2975041 T3 ES2975041 T3 ES 2975041T3
Authority
ES
Spain
Prior art keywords
secure
storage
interface control
donated
secure interface
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
ES20710115T
Other languages
English (en)
Inventor
Lisa Heller
Fadi Busaba
Jonathan Bradbury
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2975041T3 publication Critical patent/ES2975041T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

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

Abstract

Se proporciona un método. Un control de interfaz seguro en comunicación con una entidad que no es de confianza realiza el método. En este sentido, el control de interfaz segura implementa una instrucción de inicialización para configurar el almacenamiento donado como seguro. La implementación de la instrucción de inicialización responde a una llamada de instrucción emitida desde la entidad que no es de confianza. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Etiquetado de hardware de almacenamiento seguro de control de interfaz segura
Antecedentes
La presente invención se refiere en general a la tecnología informática y, más específicamente, al etiquetado de hardware de almacenamiento seguro de control de interfaz segura.
La informática en la nube y el almacenamiento en la nube proporcionan a los usuarios capacidades para almacenar y procesar sus datos en centros de datos de terceros. La informática en la nube facilita la capacidad de aprovisionar una máquina virtual (VM) para un cliente de forma rápida y fácil, sin requerir que el cliente compre hardware o proporcione espacio para un servidor físico. El cliente puede expandir o contraer fácilmente la VM según las preferencias o requisitos cambiantes del cliente. Normalmente, un proveedor de informática en la nube aprovisiona la VM, que es físicamente residente en un servidor en el centro de datos del proveedor. Los clientes a menudo se preocupan por la seguridad de los datos en la VM, particularmente porque los proveedores informáticos suelen almacenar los datos de más de un cliente en el mismo servidor. Los clientes pueden desear seguridad entre su propio código/datos y el código/datos del proveedor de informática en la nube, así como entre su propio código/datos y el de otras VM que se ejecutan en el sitio del proveedor. Además, el cliente puede desear seguridad de los administradores del proveedor, así como contra posibles violaciones de seguridad de otro código que se ejecuta en la máquina.
Para manejar dichas situaciones sensibles, los proveedores de servicios en la nube pueden implementar controles de seguridad para asegurar el aislamiento adecuado de los datos y la segregación de almacenamiento lógico. El uso extensivo de la virtualización en la implementación de la infraestructura en la nube da como resultado preocupaciones de seguridad únicas para los clientes de servicios en la nube, ya que la virtualización altera la relación entre un sistema operativo (SO) y el hardware subyacente, ya sea hardware informático, de almacenamiento o incluso de red. Esto introduce la virtualización como una capa adicional que, a su vez, debe configurarse, gestionarse y protegerse adecuadamente.
En general, una VM , que se ejecuta como un huésped bajo el control de un hipervisor de anfitrión, depende de ese hipervisor para proporcionar servicios de virtualización de forma transparente para ese huésped. Estos servicios incluyen la gestión de memoria, emulación de instrucciones y procesamiento de interrupciones.
En el caso de la gestión de memoria, la VM puede mover (paginación entrante) sus datos desde un disco para que residan en la memoria y la VM también puede mover sus datos de regreso (paginación saliente) al disco. Mientras la página reside en la memoria, la VM (huésped) usa la traducción dinámica de direcciones (DAT) para mapear las páginas en la memoria desde una dirección virtual de huésped a una dirección absoluta de huésped. Además, el hipervisor de anfitrión tiene su propio mapeo DAT (desde la dirección virtual de anfitrión a la dirección absoluta de anfitrión) para las páginas de huésped en la memoria y puede, de forma independiente y transparente para el huésped, paginar las páginas del huésped dentro y fuera de la memoria. Es a través de las tablas DAT de anfitrión que el hipervisor proporciona aislamiento de memoria o uso compartido de memoria de huésped entre dos VM de huésped separadas. El anfitrión también puede acceder a la memoria del huésped para simular las operaciones del huésped, cuando sea necesario, en nombre del huésped. El documento de SEONGWOOK JIN ET AL: “Architectural support for secure virtualization under a vulnerable hypervisor”, ACTAS DEL 44.° SIMPOSIO INTERNACIONAL ANUAL DEL IEEE/ACM SOBRE MICROARQUITECTURA, MICRO-44 '11, 1 de enero de 2011 (01-01-2011), describe estructuras generales, tales como las tablas de propiedad de las páginas, para rastrear la propiedad en una región de memoria protegida basada en una máquina virtual asistida por hardware.
Compendio
La invención se define según una reivindicación 1 de método independiente, un producto de programa 9 informático independiente, una reivindicación 16 de sistema independiente y una reivindicación 17 de método independiente. Las reivindicaciones dependientes definen detalles adicionales de la invención.
Breve descripción de los dibujos
Las características específicas de los derechos exclusivos descritos en la presente memoria se señalan particularmente y se reivindican claramente en las reivindicaciones al final de la memoria descriptiva. Las anteriores y otras características y ventajas de las realizaciones de la invención son evidentes a partir de la siguiente descripción detallada tomada junto con los dibujos adjuntos, en los que:
La FIG. 1 representa una tabla para la seguridad de zona según una o más realizaciones de la presente invención;
La FIG. 2 representa espacios de direcciones virtuales y absolutas para realizar DAT según una o más realizaciones de la presente invención;
La FIG. 3 representa una DAT anidada de múltiples partes para soportar una máquina virtual (VM) que se ejecuta bajo un hipervisor según una o más realizaciones de la presente invención;
La FIG. 4 representa un mapeo del almacenamiento de huésped seguro según una o más realizaciones de la presente invención;
La FIG. 5 representa un esquema de sistema de una operación de traducción dinámica de direcciones (DAT) según una o más realizaciones de la presente invención;
La FIG. 6 representa un esquema de sistema de una memoria de control de interfaz segura según una o más realizaciones de la presente invención;
La FIG. 7 representa un flujo de proceso de una operación de importación según una o más realizaciones de la presente invención;
La FIG. 8 representa un flujo de proceso de una operación de importación según una o más realizaciones de la presente invención;
La FIG. 9 representa un proceso de una operación de memoria donada según una o más realizaciones de la presente invención;
La FIG. 10 representa un flujo de proceso de una transición de páginas de hipervisor no seguras a páginas seguras de un control de interfaz segura según una o más realizaciones de la presente invención;
La FIG. 11 representa un flujo de proceso de un acceso de almacenamiento seguro realizado por el control de interfaz segura según una o más realizaciones de la presente invención;
La FIG. 12 representa un flujo de proceso de etiquetado de acceso mediante el control de interfaz segura y mediante hardware según una o más realizaciones de la presente invención;
La FIG. 13 representa un flujo de proceso de traducciones para soportar accesos seguros y no seguros mediante el programa y mediante el control de interfaz segura según una o más realizaciones de la presente invención;
La FIG. 14 representa un flujo de proceso de una DAT con protección de almacenamiento seguro mediante el programa y mediante el control de interfaz segura según una o más realizaciones de la presente invención;
La FIG. 15 representa un flujo de proceso de etiquetado de hardware de almacenamiento seguro de control de interfaz segura según una o más realizaciones de la presente invención;
La FIG. 16 representa un flujo de proceso para el etiquetado de hardware de almacenamiento seguro de control de interfaz segura, que es una continuación del flujo de proceso de FIG. 15, según una o más realizaciones de la presente invención;
La FIG. 17 representa un entorno de informática en la nube según una o más realizaciones de la presente invención; La FIG. 18 representa capas de modelo de abstracción según una o más realizaciones de la presente invención; La FIG. 19 representa un sistema según una o más realizaciones de la presente invención; y
La FIG. 20 representa un sistema de procesamiento según una o más realizaciones de la presente invención.
Los diagramas representados en la presente memoria son ilustrativos. Puede haber muchas variaciones en los diagramas o las operaciones descritas en los mismos.
Por ejemplo, las acciones se pueden realizar en un orden diferente o se pueden añadir, eliminar o modificar acciones. Asimismo, el término "acoplado" y variaciones del mismo describen la existencia de una vía de comunicación entre dos elementos y no implica una conexión directa entre los elementos sin elementos/conexiones intermedios entre ellos. Todas estas variaciones se consideran parte de la memoria descriptiva.
Descripción detallada
Una o más realizaciones de la presente invención proporcionan un mecanismo de etiquetado para marcar como segura una memoria de control de interfaz segura y etiquetarla para que no pueda acceder a ella ninguna entidad distinta del control de interfaz segura. Los mismos mecanismos de seguridad de almacenamiento que se proporcionan en el hardware para el aislamiento entre entidades seguras también se usan para aislar el almacenamiento de control de interfaz segura.
Una máquina virtual (VM), que se ejecuta como huésped bajo el control de una entidad que no es de confianza (por ejemplo, un hipervisor de anfitrión), depende de ese hipervisor para proporcionar de forma transparente servicios de virtualización para ese huésped. Estos servicios se pueden aplicar a cualquier interfaz entre una entidad segura y otra entidad no confiable que permita tradicionalmente el acceso a los recursos seguros por esta otra entidad. Como se mencionó anteriormente, estos servicios pueden incluir, pero no se limitan a, la gestión de memoria, emulación de instrucciones y procesamiento de interrupciones. Por ejemplo, para la inyección de interrupción y excepción, el hipervisor normalmente lee y/o escribe en un área de prefijo (núcleo bajo) del huésped. El término “máquina virtual” o “VM”, como se usa en la presente memoria, se refiere a una representación lógica de una máquina física (dispositivo informático, procesador, etc.) y su entorno de procesamiento (sistema operativo (SO), recursos de software, etc.). La VM se mantiene como software que se ejecuta en una máquina anfitrión subyacente (procesador físico o conjunto de procesadores). Desde la perspectiva de un usuario o un recurso de software, la VM parece ser su propia máquina física independiente. Los términos “hipervisor” y “monitor de VM (VMM)”, como se usan en la presente memoria, se refieren a un entorno de procesamiento o servicio de plataforma que gestiona y permite que múltiples VM se ejecuten usando múltiples (y a veces diferentes) SO en una misma máquina anfitrión. Debe apreciarse que la implementación de una VM incluye un proceso de instalación de la VM y un proceso de activación (o inicio) de la VM. En otro ejemplo, el despliegue de una VM incluye un proceso de activación (o inicio) de la VM (por ejemplo, en caso de que la VM se haya instalado previamente o ya exista).
Para facilitar y dar soporte a huéspedes seguros (por ejemplo, entidad segura), existe un reto técnico en el que se requiere seguridad adicional entre el hipervisor y los huéspedes seguros sin depender del hipervisor, de manera que el hipervisor no pueda acceder a los datos de la VM y, por lo tanto, no pueda proporcionar servicios de la manera descrita en la presente memoria.
La ejecución segura descrita en la presente memoria proporciona un mecanismo de hardware para garantizar el aislamiento entre el almacenamiento seguro y el almacenamiento no seguro, así como entre el almacenamiento seguro que pertenece a diferentes usuarios seguros. Para huéspedes seguros, se proporciona seguridad adicional entre el hipervisor no seguro “no confiable” y los huéspedes seguros. Para hacer esto, muchas de las funciones que el hipervisor normalmente hace en nombre de los huéspedes deben incorporarse en la máquina. En la presente memoria se describe un nuevo control de interfaz segura, también denominado "UV", para proporcionar una interfaz segura entre el hipervisor y los huéspedes seguros. Los términos control de interfaz segura y UV se usan indistintamente en la presente memoria. El control de interfaz segura funciona en colaboración con el hardware para proporcionar esta seguridad adicional.
Este mecanismo de protección se puede proporcionar para máquinas virtuales (es decir, entre el hipervisor y el huésped seguro) que usan asignaciones de máquinas virtuales como el punto principal de transición o para ejecutables virtuales que usan otro límite, por ejemplo, un cambio de espacio de direcciones, como el punto principal de traducción. Aquí se describe la interfaz de la máquina virtual, pero se puede proporcionar una interfaz de control de interfaz segura similar para ejecutables seguros que usan mecanismos de protección de hardware similares.
El control de interfaz segura, en un ejemplo, se implementa en hardware y/o firmware interno, seguro y confiable. Para un huésped o entidad seguros, el control de interfaz segura proporciona la inicialización y el mantenimiento del entorno seguro, así como la coordinación de la asignación de estas entidades seguras en el hardware. Mientras el huésped seguro usa activamente datos y es residente en el almacenamiento de anfitrión, se mantiene “a salvo” en almacenamiento seguro. Ese huésped seguro único puede acceder al almacenamiento de huésped seguro - el hardware hace cumplir esto estrictamente. Es decir, el hardware impide a cualquier entidad no segura (incluyendo el hipervisor u otros huéspedes no seguros) o huésped seguro diferente el acceso a esos datos. En este ejemplo, el control de interfaz segura se ejecuta como una parte confiable de los niveles más bajos de firmware. El nivel más bajo, o milicódigo, es realmente una extensión del hardware y se usa para implementar las instrucciones y funciones complejas definidas, por ejemplo, en zArchitecture® de IBM. El milicódigo tiene acceso a todas las partes del almacenamiento, lo que, en el contexto de la ejecución segura, incluye su propio almacenamiento UV seguro, almacenamiento de hipervisor no seguro, almacenamiento de huésped seguro y almacenamiento compartido. Esto le permite proporcionar cualquier función que necesite el huésped seguro o el hipervisor para dar soporte a ese huésped. El control de interfaz segura también tiene acceso directo al hardware, lo que permite que el hardware proporcione comprobaciones de seguridad de manera eficiente bajo el control de las condiciones establecidas por el control de interfaz segura.
Según una o más realizaciones de la presente invención, se proporciona un bit de almacenamiento seguro en el hardware para marcar una página segura. Cuando se establece este bit, el hardware impide que cualquier huésped o hipervisor no seguro acceda a esta página. Además, cada página segura o compartida se registra en una tabla de seguridad de zona y se etiqueta con una identificación (ID) de dominio de huésped seguro. Cuando la página no es segura, se marca como tal en la tabla de seguridad de zona. Esta tabla de seguridad de zona se mantiene mediante el control de interfaz segura por partición o zona. Hay una entrada por página absoluta de anfitrión que el hardware usa en cualquier traducción DAT realizada por una entidad segura para verificar que solo el huésped seguro o la entidad que la posee acceden a la página. El almacenamiento de control de interfaz segura también se marca como página segura para impedir el acceso de cualquier entidad no segura. Además, el almacenamiento de control de interfaz segura tiene sus propias ID de dominio seguro que se usan para impedir que otras entidades seguras accedan a su almacenamiento. Cuando el almacenamiento UV está asociado a un dominio de huésped seguro específico, también se puede etiquetar con esa ID de dominio de huésped seguro para proporcionar un mayor aislamiento dentro del almacenamiento de control de interfaz segura. Esta técnica de etiquetado permite una seguridad adicional dentro del control de interfaz segura. Por definición, el control de interfaz segura tiene acceso a todo el almacenamiento, pero por diseño accede con cuidado a cada parte de este almacenamiento (partes separadas del control de interfaz segura, así como almacenamiento seguro para huéspedes) para que el hardware pueda hacer cumplir las comprobaciones de seguridad en esos accesos.
Según una o más realizaciones de la presente invención, el control de interfaz segura tiene su propio almacenamiento UV seguro al que solo se puede acceder mediante el propio control de interfaz segura. Este almacenamiento es usado por el control de interfaz segura y el hardware para proporcionar la seguridad necesaria para los huéspedes seguros. El control de interfaz segura usa este almacenamiento seguro para almacenar información sobre sí mismo, la zona habilitada para ejecutar huéspedes seguros, los huéspedes seguros y las CPU virtuales seguras. El almacenamiento de control de interfaz segura, similar al almacenamiento de huésped seguro, también se marca como página segura para impedir el acceso por cualquier entidad no segura. Además, el almacenamiento de control de interfaz segura tiene sus propias ID de dominio seguro que se usan para impedir que otras entidades seguras accedan al almacenamiento de control de interfaz segura.
Según una o más realizaciones de la presente invención, el software usa una instrucción de llamada UV (UVC) para solicitar el control de interfaz segura para realizar una acción específica. Por ejemplo, el hipervisor puede usar la instrucción UVC para inicializar el control de interfaz segura, crear el dominio de huésped seguro (por ejemplo, configuración de huésped segura) y crear las CPU virtuales dentro de esa configuración segura. También se puede usar para importar (descifrar y asignar al dominio de huésped seguro) y exportar (cifrar y permitir el acceso del anfitrión a) una página de huésped segura como parte de las operaciones de paginación entrante o paginación saliente del hipervisor. Además, el huésped seguro tiene la capacidad de definir el almacenamiento compartido con el hipervisor, hacer que el almacenamiento seguro sea compartido y hacer que el almacenamiento compartido sea seguro.
El firmware de la máquina puede ejecutar estos comandos UVC de manera similar a muchas otras instrucciones diseñadas. La máquina no entra en un modo de control de interfaz segura, sino que realiza funciones de control de interfaz segura en el modo en el que se está ejecutando actualmente. El hardware mantiene tanto los estados de firmware como los de software para que no haya una conmutación de contextos para manejar estas operaciones. Esta baja sobrecarga permite una cooperación estrechamente vinculada entre las diferentes capas del software, firmware confiable y hardware de una manera que minimiza y reduce la complejidad en el control de interfaz segura mientras sigue proporcionando al mismo tiempo el nivel de seguridad necesario.
Según una o más realizaciones de la presente invención, como soporte de las estructuras de bloque de control necesarias que necesitan el control de interfaz segura y el hardware para mantener adecuadamente los entornos de huésped seguro y de hipervisor de soporte, el hipervisor dona almacenamiento al control de interfaz segura mientras inicializa el entorno de huésped seguro. Como resultado, en la preparación para 1) inicializar una zona para ejecutar huéspedes seguros, 2) crear dominios de huésped seguros y 3) crear las CPU seguras que se ejecutan en cada uno de los dominios, el hipervisor emite una instrucción Consultar UVC para determinar, entre otras cosas, la cantidad de almacenamiento necesaria para la donación. Una vez que el almacenamiento ha sido donado, se marca como seguro y se registra como perteneciente al control de interfaz segura; y se prohíbe el acceso de cualquier entidad huésped no segura o segura. Este sigue siendo el caso hasta el momento en que se destruya la entidad asociada (por ejemplo, CPU de huésped segura, zona o dominio de huésped seguro).
En un ejemplo, la primera sección de almacenamiento UV, para soportar los bloques de control UV específicos de zona, se dona al control de interfaz segura como parte de la inicialización UVC y reside en lo que en la presente memoria se denomina almacenamiento UV2. La segunda y tercera secciones del almacenamiento UV, para soportar los bloques de control base y variable de configuración segura de huésped (para cada dominio de huésped seguro), se donan como parte de la UVC de creación de configuración segura de huésped y residen en el almacenamiento UVS y UVV, respectivamente. La cuarta y última sección de almacenamiento UV, para soportar los bloques de control de CPU segura, también reside en el espacio UVS y se dona como parte de la UVC de creación de CPU de huésped seguro. A medida que se dona cada una de estas áreas, la interfaz de control segura las marca como seguras (para impedir que cualquier entidad no segura acceda a ellas) y también las registra en la tabla de seguridad de zona como pertenecientes a la interfaz de control segura (para impedir que cualquier entidad huésped segura acceda a ellas). Para proporcionar un aislamiento adicional dentro del espacio UV, el espacio UV2 (que no está asociado a ningún dominio de huésped seguro específico) también se etiqueta con un dominio seguro UV2 único (por ejemplo, dominio seguro único) mientras que los espacios UVS y UVV se etiquetan ambos adicionalmente con el dominio de huésped seguro específico asociado. En este ejemplo, el espacio UVV reside en el espacio virtual de anfitrión y, por lo tanto, puede identificarse adicionalmente con un mapeo virtual de anfitrión a absoluto de anfitrión.
Aunque el control de interfaz segura tiene acceso a todo el almacenamiento (almacenamiento no seguro, almacenamiento de huésped seguro y almacenamiento UV), una o más realizaciones de la presente invención proporcionan mecanismos que permiten que el control de interfaz segura acceda al almacenamiento UV de manera muy específica. Usando los mismos mecanismos de hardware que proporcionan aislamiento entre dominios de huésped seguros, las realizaciones de la presente invención pueden proporcionar un aislamiento similar dentro del almacenamiento UV. Esto garantiza que la interfaz de control segura solo acceda al almacenamiento UV cuando esté previsto y especificado; solo acceda al almacenamiento de huésped seguro para el huésped seguro especificado deseado; y solo acceda al almacenamiento no seguro cuando se especifique. Es decir, la interfaz de control segura puede especificar de manera muy explícita el almacenamiento al que pretende acceder para que el hardware pueda garantizar que efectivamente accede a ese almacenamiento. Además, puede especificar además que solo tiene la intención de acceder al almacenamiento UV asociado con el dominio de huésped seguro especificado.
Para proporcionar seguridad, cuando el hipervisor está paginando de forma transparente la entrada y salida de los datos de huésped seguro, el control de interfaz segura, que trabaja con el hardware, proporciona y garantiza el descifrado y el cifrado de los datos. Para lograr esto, se requiere que el hipervisor emita nuevas UVC cuando realiza paginación entrante de la entrada y la salida de datos seguros de huésped. El hardware, basado en controles configurados por el control de interfaz segura durante estas nuevas UVC, garantizará que estas UVC sean emitidas por el hipervisor.
En este nuevo entorno seguro, cada vez que el hipervisor realiza paginación saliente a una página segura, se requiere emitir una nueva UVC de conversión de almacenamiento seguro (exportación). El control de interfaz segura, en respuesta a esta UVC de exportación, 1) indicará que la página está “bloqueada” por el UV, 2) cifrará la página, 3) configurará la página como no segura y 4) restablecerá el bloqueo UV. Una vez que se completa la UVC de exportación, el hipervisor ahora puede realizar paginación saliente de la página de huésped cifrada.
Además, cada vez que el hipervisor realice paginación entrante de una página segura, debe emitir una nueva UVC de conversión a almacenamiento seguro (importación). El UV, o control de interfaz segura, en respuesta a esta Importación de UVC, 1) marcará la página como segura en el hardware, 2) indicará que la página está “bloqueada” por el UV, 3) descifrará la página, 4) establecerá la autoridad a un dominio de huésped seguro particular y 5) restablecerá el bloqueo UV. Siempre que una entidad segura realiza un acceso, el hardware realiza comprobaciones de autorización en esa página durante la traducción. Estas comprobaciones incluyen 1) una comprobación para verificar que la página realmente pertenece al dominio de huésped seguro que está tratando de acceder a ella y 2) una comprobación para asegurarse de que el hipervisor no ha cambiado el mapeo de anfitrión de esta página mientras esta página ha estado residente en la memoria de huésped. Una vez que una página se marca como segura, el hardware impide el acceso a cualquier página segura por el hipervisor o por una VM huésped no segura. Las etapas de traducción adicionales impiden el acceso por otra VM segura e impiden el remapeo por el hipervisor.
Una o más realizaciones de la presente invención proporcionan una mejora tecnológica con respecto a los sistemas existentes que no tienen en cuenta un hipervisor que funciona con errores (no de la manera esperada), lo que permite a las entidades no seguras acceder a una página que se supone que es segura.
Es decir, una o más realizaciones de la presente invención abordan dicho sistema existente marcando, mediante un mecanismo de etiquetado, el almacenamiento como memoria de control de interfaz segura y como seguro para prohibir el acceso de cualquier entidad que no sea un mecanismo de seguridad de almacenamiento; y aislando, mediante un mecanismo de seguridad de almacenamiento proporcionado en hardware para el aislamiento entre huéspedes seguros, la memoria de control de interfaz segura. En este sentido, el mecanismo de seguridad de almacenamiento es un control de interfaz segura que comprende la memoria de control de interfaz segura, a la que solo puede acceder el propio control de interfaz segura y que el hardware y el control de interfaz segura usan para proporcionar seguridad a los huéspedes seguros. Además, la memoria de control de interfaz segura es un almacenamiento de control de interfaz segura marcado como página segura que proporciona los efectos técnicos y las ventajas de impedir el acceso de cualquier entidad no segura. Además, el almacenamiento de control de interfaz segura tiene su propia ID o sus propias ID de dominio seguro que se usan para impedir que otras entidades seguras o no seguras accedan a su almacenamiento. Cuando el almacenamiento UV está asociado a un dominio de huésped seguro específico, también se puede etiquetar con esa ID de dominio de huésped seguro para proporcionar un mayor aislamiento dentro del almacenamiento de control de interfaz segura. Esta técnica de etiquetado permite una seguridad adicional dentro del control de interfaz segura. Por definición, el control de interfaz segura tiene acceso a todo el almacenamiento, pero por diseño accede con cuidado a cada parte de este almacenamiento (partes separadas del control de interfaz segura y almacenamiento de huésped seguro) para que el hardware pueda hacer cumplir las comprobaciones de seguridad en esos accesos.
Volviendo ahora a la FIG. 1, se muestra generalmente una tabla 100 para seguridad de zona según una o más realizaciones de la presente invención. La tabla 100 de seguridad de zona mostrada en la FIG. 1 se mantiene mediante el control de interfaz segura y se usa mediante el control de interfaz segura y el hardware para garantizar el acceso seguro a cualquier página a la que acceda una entidad segura. La tabla 100 de seguridad de zona está indexada por la dirección 110 absoluta de anfitrión. Es decir, hay una entrada para cada página de almacenamiento absoluto de anfitrión. Cada entrada incluye información que se usa para verificar que la entrada pertenece a la entidad segura que realiza el acceso.
Además, como se muestra en la FIG. 1, la tabla 100 de seguridad de zona incluye una ID 120 de dominio seguro (identifica el dominio seguro asociado a esta página); un bit 130 UV (indica que esta página se donó al control de interfaz segura y es propiedad del control de interfaz segura); un bit 140 de deshabilitación de comparación de direcciones (DA) (usado para deshabilitar la comparación de pares de direcciones de anfitrión en determinadas circunstancias, tal como cuando una página de control de interfaz segura que se define como absoluta de anfitrión no tiene una dirección virtual de anfitrión asociada); un bit 150 compartido (SH) (indica que la página es compartida con el hipervisor no seguro) y una dirección 160 virtual de anfitrión (indica la dirección virtual de anfitrión registrada para esta dirección absoluta de anfitrión, que se denomina como par de direcciones de anfitrión). Se observa que un par de direcciones de anfitrión indica una dirección virtual de anfitrión registrada absoluta y asociada de anfitrión. El par de direcciones de anfitrión representa el mapeo de esta página, una vez importada por el hipervisor, y la comparación garantiza que el anfitrión no remapee esa página mientras la esté usando el huésped.
La traducción dinámica de direcciones (DAT) se usa para mapear el almacenamiento virtual al almacenamiento real. Cuando una VM huésped se ejecuta como un huésped paginable bajo el control de un hipervisor, el huésped usa DAT para gestionar las páginas que residen en su memoria. Además, el anfitrión, de forma independiente, usa DAT para gestionar aquellas páginas de huésped (junto con sus propias páginas) cuando las páginas residen en su memoria. El hipervisor usa DAT para proporcionar aislamiento y/o compartir almacenamiento entre diferentes VM, así como para impedir que el huésped acceda al almacenamiento de hipervisor. El hipervisor tiene acceso a todo el almacenamiento de los huéspedes cuando los huéspedes se ejecutan en modo no seguro.
La DAT permite el aislamiento de una aplicación de otra al mismo tiempo que les permite compartir recursos comunes. Además, permite la implementación de VM, que pueden usarse en el diseño y prueba de nuevas versiones de sistemas operativos junto con el procesamiento simultáneo de programas de aplicación. Una dirección virtual identifica una ubicación en el almacenamiento virtual. Un espacio de direcciones es una secuencia consecutiva de direcciones virtuales, junto con los parámetros de transformación específicos (incluidas las tablas DAT) que permiten traducir cada dirección virtual a una dirección absoluta asociada que identifica esa dirección con una ubicación de bytes en el almacenamiento.
El DAT usa una búsqueda en múltiples tablas para traducir la dirección virtual a la dirección absoluta asociada. Un gestor de almacenamiento define y mantiene normalmente esta estructura de tabla. Este gestor de almacenamiento comparte de forma transparente el almacenamiento absoluto entre varios programas mediante la paginación saliente de una página, por ejemplo, para incluir otra página. Cuando se realice paginación saliente en la página, el gestor de almacenamiento establecerá un bit no válido en la tabla de página asociada, por ejemplo. Cuando un programa intenta acceder a una página que estaba realizando paginación saliente, el hardware presentará una interrupción del programa, a menudo denominada fallo de página, al gestor de almacenamiento. En respuesta, el gestor de almacenamiento realizará paginación entrante en la página solicitada y restablecerá el bit no válido. Todo esto se hace de forma transparente para el programa y permite al gestor de almacenamiento virtualizar el almacenamiento y compartirlo entre varios usuarios diferentes.
Cuando una CPU usa una dirección virtual para acceder al almacenamiento principal, primero se convierte, mediante DAT, en una dirección real y, a continuación, mediante prefijación, en una dirección absoluta. La designación (origen y longitud) de la tabla de nivel más alto para un espacio de direcciones específico se denomina elemento de control de espacio de direcciones (ASCE) y define el espacio de direcciones asociado.
Volviendo ahora a la FIG. 2, los espacios 202 y 204 de direcciones virtuales de ejemplo y un espacio 206 de direcciones absoluto para realizar la DAT se muestran generalmente según una o más realizaciones de la presente invención. En el ejemplo mostrado en la FIG. 2, hay dos espacios de direcciones virtuales: el espacio 202 de direcciones virtual (definido por el elemento de control de espacio de direcciones (ASCE) A 208) y el espacio 204 de direcciones virtual (definido por ASCE B 210). El gestor de almacenamiento mapea las páginas virtuales A1.V 212a1, A2.V 212a2 y A3.V 212a3 en una búsqueda de múltiples tablas (segmento 230 y tablas 232a, 232b de páginas), usando el ASCE A 208, a las páginas absolutas A1.A 220a1, A2.A 220a2 y A3.A 220a3. De manera similar, las páginas virtuales B1.V 214b1 y B2.V 214b2 se mapean en una búsqueda de dos tablas 234 y 236, usando el ASCE B 210, a las páginas absolutas B1.A 222b1 y B2.A 222b2, respectivamente.
Volviendo ahora a la FIG. 3, se muestra generalmente un ejemplo de una traducción DAT anidada de múltiples partes usada para soportar una VM que se ejecuta bajo un hipervisor según una o más realizaciones de la presente invención. En el ejemplo mostrado en la FIG. 3, el espacio de direcciones virtuales A 302 de huésped A (definido por el huésped ASCE (GASCE) A 304) y el espacio de direcciones virtuales B 306 de huésped B (definido por el GASCEB 308) residen ambos en un espacio de direcciones virtuales 325 de anfitrión (hipervisor) compartido. Como se muestra, las páginas virtuales A1.GV 310a1, A2.GV 310a2 y A3.GV 310a3, que pertenecen al huésped A, se mapean, por el gestor de almacenamiento de huésped A, usando GASCEA 304 a las páginas absolutas de huésped A1.HV 340a1, A2.HV 340a2 y A3.HV 340a3, respectivamente; las páginas virtuales B1.GV 320b1 y B2.GV 320b2, que pertenecen al huésped B, se mapean, independientemente, por el gestor de almacenamiento de huésped B, usando GASCEB 308 a las páginas absolutas de huésped B1.<h>V 360b1 y B2.HV 360b2, respectivamente. En este ejemplo, estas páginas absolutas de huésped se mapean directamente al espacio 325 de direcciones virtuales de anfitrión compartido y, posteriormente, pasan a través de una traducción DAT de anfitrión adicional a un espacio 330 de dirección absoluta de anfitrión. Como se muestra, las direcciones virtuales de anfitrión A1.HV 340a1, A3.HV 340a3 y B1.HV 360b1 se mapean, por el gestor de almacenamiento de anfitrión usando el anfitrión ASCE (HASCE)<350 a A>1<.HA 370a1, A3.HA 370a3 y B1.HA 370b1. La dirección virtual de anfitrión A2.HV 340a2, que pertenece al>huésped A, y la B2.HV 360b2, que pertenece al huésped B, ambas se mapean a la misma página absoluta de anfitrión AB2.HA 380. Esto permite que los datos se compartan entre estos dos huéspedes. Durante la traducción DAT de huésped, cada una de las direcciones de la tabla de huésped se trata como una dirección absoluta de huésped y se somete a una traducción DAT de anfitrión anidada adicional.
Las realizaciones de la presente invención descritas en la presente memoria proporcionan una protección de almacenamiento UV y huésped seguro. El acceso al almacenamiento seguro por los huéspedes no seguros y el hipervisor está prohibido. El hipervisor proporciona que, para una página de huésped segura residente dada, ocurra lo siguiente. La dirección absoluta de anfitrión asociada solo es accesible a través de un único mapeo DAT de hipervisor (anfitrión). Es decir, hay una sola dirección virtual de anfitrión que se mapea a cualquier dirección absoluta de anfitrión asignada a un huésped seguro. El mapeo DAT de hipervisor (virtual de anfitrión a absoluto de anfitrión) asociado a una página de huésped segura dada no cambia mientras se realiza paginación entrante. La página absoluta de anfitrión asociada a una página de huésped segura se mapea para un único huésped seguro.
También está prohibido compartir el almacenamiento entre huéspedes seguros según una o más realizaciones de la presente invención. El almacenamiento se comparte entre un único huésped seguro y el hipervisor bajo el control del huésped seguro. El almacenamiento UV es un almacenamiento seguro y es accesible mediante la interfaz de control segura, pero no por los huéspedes/anfitriones. El hipervisor asigna el almacenamiento a la interfaz de control segura. Según una o más realizaciones de la presente invención, cualquier intento de violación de estas reglas está prohibido por el hardware y la interfaz de control segura.
Volviendo ahora a la FIG. 4, se muestra generalmente un ejemplo de mapeo de almacenamiento de huésped seguro según una o más realizaciones de la presente invención. La FIG. 4 se parece a la FIG. 3, excepto que el ejemplo de la FIG. 4 no permite compartir el almacenamiento entre el huésped seguro A y el huésped seguro B. En el ejemplo no seguro de la FIG. 3, tanto la dirección virtual de anfitrión A2.HV 340a2, que pertenece al huésped A, como la B2.HV 360b2, que pertenece al huésped B, se mapean a la misma página absoluta de anfitrión AB2.HA 380. En el ejemplo de almacenamiento de huésped seguro de la FIG. 4, la dirección virtual de anfitrión A2.HV 340a2, que pertenece al huésped A, se mapea a la dirección absoluta de anfitrión A2.HA 490a, mientras que la B2.HV 360b2, que pertenece al huésped B, se mapea a su propia B2.HA 490b. En este ejemplo, no se comparte nada entre huéspedes seguros.
Mientras la página de huésped segura reside en el disco, está cifrada. Cuando el hipervisor realiza paginación entrante de una página de huésped segura, emite una llamada UV (UVC), lo que hace que la interfaz de control segura marque la página como segura (a menos que se comparta), la descifre (a menos que se comparta) y la registre (en la tabla de seguridad de zona) como perteneciente al huésped seguro apropiado (el huésped A, por ejemplo). Además, registra la dirección virtual de anfitrión asociada (A3.HV 340a3, por ejemplo) en esa página absoluta de anfitrión (denominada par de direcciones de anfitrión). Si el hipervisor no emite la UVC correcta, recibe una excepción cuando intenta acceder a la página de huésped segura. Cuando el hipervisor realiza paginación saliente de una página de huésped, se emite una UVC similar que cifra la página de huésped (a menos que se comparta) antes de marcar la página de huésped como no segura y registrarla en la tabla de seguridad de zona como no segura.
En un ejemplo que tiene cinco páginas absolutas de anfitrión dadas K, P, L, M y N, la interfaz de control segura marca cada una de las páginas absolutas de anfitrión como segura cuando el hipervisor realiza paginación entrante en ellas. Esto impide que los huéspedes no seguros y el hipervisor accedan a ellas. Las páginas absolutas de anfitrión K, P y M se registran como pertenecientes al huésped A cuando el hipervisor realiza paginación entrante en ellas; las páginas absolutas de anfitrión L y N se registran al huésped B cuando el hipervisor realiza paginación entrante en ellas. Las páginas compartidas, páginas compartidas entre un único huésped seguro y el hipervisor, no se cifran ni descifran durante la paginación. No se marcan como seguras (permiten el acceso por el hipervisor), pero se registran con un único dominio de huésped seguro en la tabla de seguridad de zona.
Según una o más realizaciones de la presente invención, cuando un huésped no seguro o el hipervisor intentan acceder a una página que es propiedad de un huésped seguro, el hipervisor recibe una excepción de acceso al almacenamiento seguro (PIC3D). No se requiere ninguna etapa de traducción adicional para determinar esto.
Según una o más realizaciones, cuando una entidad segura intenta acceder a una página, el hardware realiza una comprobación de traducción adicional que verifica que el almacenamiento pertenece realmente a ese huésped seguro particular. De lo contrario, se presenta una excepción de acceso no seguro (PIC3E) al hipervisor. Además, si la dirección virtual de anfitrión que se está traduciendo no coincide con la dirección virtual de anfitrión del par de direcciones de anfitrión registrado en la tabla de seguridad de zona, se reconoce una excepción de violación de almacenamiento seguro ('3F'x). Para habilitar el uso compartido con el hipervisor, un huésped seguro puede acceder al almacenamiento que no esté marcado como seguro siempre y cuando las comprobaciones de traducción permitan el acceso.
Volviendo ahora a la FIG. 5, se muestra generalmente un esquema 500 de sistema de una operación DAT según una o más realizaciones de la presente invención. El esquema 500 de sistema incluye un espacio 510 de direcciones virtuales primario de anfitrión y un espacio 520 de direcciones virtuales de inicio de anfitrión, desde los que se traducen las páginas (por ejemplo, véase la traducción 525 DAT de anfitrión; se observa que las líneas punteadas representan el mapeo a través de la traducción 525 DAT) a un espacio 530 de direcciones absolutas del hipervisor (anfitrión). Por ejemplo, la FIG. 5 ilustra la compartición de almacenamiento absoluto de anfitrión por dos espacios de direcciones virtuales de anfitrión diferentes y también la compartición de una de esas direcciones virtuales de anfitrión no solo entre dos huéspedes sino, además, con el propio anfitrión. En este sentido, el espacio 510 de direcciones virtuales primario de anfitrión y el espacio 520 de direcciones virtuales de inicio de anfitrión son ejemplos de dos espacios de direcciones virtuales de anfitrión, cada uno de los cuales se direcciona por un ASCE separado, el AS<c>E primario de anfitrión (HPASCE) 591 y el ASCE de inicio de anfitrión (<h>H<a>SCE) 592, respectivamente. Se observa que todo el almacenamiento de control de interfaz segura (tanto virtual como real) lo dona el hipervisor y lo marca como seguro. Una vez donado, el control de interfaz segura solo puede acceder al almacenamiento de control de interfaz segura mientras exista una entidad segura asociada.
Como se ilustra, el espacio 510 de direcciones virtuales primario de anfitrión incluye una página absoluta de huésped A A1.HV, una página absoluta de huésped A A2.HV, una página absoluta de huésped B B1.HV y una página virtual de anfitrión H3.HV. El espacio 520 de direcciones virtuales de inicio de anfitrión incluye una página virtual de control de interfaz segura U1.HV, una página virtual de anfitrión H1.HV y una página virtual de anfitrión H2.HV.
Según una o más realizaciones de la presente invención, se registra todo el almacenamiento de huésped seguro (por ejemplo, huésped seguro A y huésped seguro B) en la tabla de seguridad de zona descrita en la presente memoria como perteneciente a una configuración de huésped segura, y la dirección virtual de anfitrión asociada (por ejemplo, A1.HV, A2.HV, B1.HV) también se registra como parte de un par de direcciones de anfitrión. En una o más realizaciones, todo el almacenamiento de huésped seguro se mapea en el espacio virtual primario de anfitrión. Además, se registra todo el almacenamiento de control de interfaz segura, también en la tabla de seguridad de zona, como perteneciente al control de interfaz segura y se puede diferenciar adicionalmente en la tabla de seguridad de zona en base al dominio de huésped seguro asociado. Según una o más realizaciones de la presente invención, el almacenamiento virtual UV se mapea en el espacio virtual de inicio de anfitrión y la dirección virtual de anfitrión asociada se registra como parte del par de direcciones de anfitrión. Según una o más realizaciones, el almacenamiento real UV no tiene un mapeo virtual de anfitrión asociado, y el bit DA en la tabla de seguridad de zona (que indica que la comparación de direcciones virtuales está deshabilitada) se establece para indicar esto. El almacenamiento de anfitrión se marca como no seguro y también se registra en la tabla de seguridad de zona como no seguro.
Por lo tanto, en el caso donde “absoluta de huésped = virtual de anfitrión”, las tablas DAT primarias del hipervisor (anfitrión) (definidas por el HPASCE 591) traducen las páginas del espacio 510 de direcciones virtuales primario de anfitrión de la siguiente manera: la página absoluta de huésped A A1.HV se mapea a una absoluta de anfitrión A1.HA que pertenece un huésped seguro A; la página absoluta de huésped A A2.HV se mapea a una absoluta de anfitrión A2.HA que pertenece al huésped seguro A; la página absoluta de huésped B B1.HV se mapea a una absoluta de anfitrión B1.HA que pertenece al huésped seguro B; y la página virtual de anfitrión H3.HV se mapea a una página absoluta de anfitrión H3.HA de anfitrión no segura (y no hay un par de direcciones de anfitrión ya que no es seguro). Además, las tablas DAT de inicio del hipervisor (anfitrión) (definidas por el HHASCE 592) traducen las páginas del espacio 520 de direcciones virtuales de inicio de anfitrión de la siguiente manera: la página virtual de control de interfaz segura U1.HV se mapea a una página absoluta de anfitrión U1.HA definida como virtual UV segura; la página virtual de anfitrión H1.HV se mapea a una página absoluta de anfitrión H1.HA definida como no segura; y la página virtual de anfitrión H2.HV se mapea a una página absoluta de anfitrión H2.HA definida como no segura. No hay un par de direcciones de anfitrión asociado a H1.HA ni a H2.HA, ya que no son seguras.
En funcionamiento, si un huésped seguro intenta acceder a una página segura asignada al control de interfaz segura, el hardware presenta al hipervisor una excepción de violación de almacenamiento seguro ('3F'X). Si un huésped no seguro o el hipervisor intentan acceder a una página segura (incluidos los asignados al control de interfaz segura), el hardware presenta al hipervisor una excepción de acceso al almacenamiento seguro ('3D'X). De manera alternativa, se puede presentar una condición de error para los intentos de acceso realizados al espacio de control de interfaz segura. Si el hardware detecta una disparidad en la asignación segura (por ejemplo, el almacenamiento se registra en la tabla de seguridad de zona como perteneciente a un huésped seguro en lugar de al control de interfaz segura, o hay una disparidad en el par de direcciones de anfitrión que se usa con el par registrado) en un acceso de control de interfaz segura, se presenta una comprobación.
En otras palabras, el espacio 510 de direcciones virtuales primario de anfitrión incluye las páginas virtuales de anfitrión A1.HV y A2.HV (que pertenecen al huésped seguro A) y B1.HV (que pertenecen al huésped seguro B), que se mapean a la absoluta de anfitrión A1 HA, A2.HA y B1.HA, respectivamente. Además, el espacio 510 de direcciones virtuales primario de anfitrión incluye la página de anfitrión (hipervisor) H3.HV, que se mapea a la absoluta de anfitrión H3.HA. El espacio 520 virtual de inicio de anfitrión incluye dos páginas virtuales de anfitrión H1.HV y H2.HV, que se mapean en las páginas absolutas de anfitrión H1.HA y H2.HA. Tanto el espacio 510 de direcciones virtuales primario de anfitrión como el espacio 520 de direcciones virtuales de inicio de anfitrión se mapean en el absoluto 530 de anfitrión único. Las páginas de almacenamiento que pertenecen al huésped seguro A y al huésped seguro B se marcan como seguras y se registran en la tabla 100 de seguridad de zona mostrada en la FIG. 1 con sus dominios seguros y direcciones virtuales de anfitrión asociadas. El almacenamiento de anfitrión, por otro lado, se marca como no seguro. Cuando el hipervisor define los huéspedes seguros, debe donar almacenamiento de anfitrión al control de interfaz segura para usar en los bloques de control seguros necesarios para soportar estos huéspedes seguros. Este almacenamiento se puede definir ya sea en el espacio absoluto de anfitrión o en el virtual de anfitrión y, en un ejemplo, específicamente, en el espacio virtual de inicio de anfitrión. Volviendo a la FIG. 5, unas páginas absolutas de anfitrión U1.HA y U2.HA absolutas UV seguras es un almacenamiento de control de interfaz segura que se define como almacenamiento absoluto de anfitrión. Como resultado, estas páginas se marcan como seguras y se registran en la tabla 100 de seguridad de zona mostrada en la FIG. 1 como perteneciente al control de interfaz segura y con un dominio seguro asociado. Ya que las páginas se definen como direcciones absolutas de anfitrión, no hay una dirección virtual de anfitrión asociada, por lo que el bit DA se establece en la tabla 100 de seguridad de zona.
Después de la traducción, se puede encontrar un ejemplo del espacio 530 de direcciones absolutas del hipervisor (anfitrión) en la FIG. 6. En la FIG. 6, se representa un esquema 600 de sistema con respecto a una memoria de control de interfaz segura según una o más realizaciones de la presente invención. El esquema 600 de sistema ilustra un espacio 630 de direcciones absolutas del hipervisor (anfitrión) que incluye una página absoluta de anfitrión A2.HA, huésped seguro A (para A2.HV); una página absoluta anfitrión B1.HA, huésped seguro B (para B1.HV); una página absoluta de anfitrión H1.HA, no segura (anfitrión); una página absoluta de anfitrión H2.HA, no segura (anfitrión); una página absoluta de anfitrión U3.HA, real UV segura (sin mapeo HV); una página absoluta de anfitrión U1.HA, virtual UV segura (para U1.HV); y una página absoluta de anfitrión A1.HA, huésped seguro A (para A1.HV).
Volviendo ahora a la FIG. 7, se muestra generalmente un flujo 700 de proceso para una operación de importación según una o más realizaciones de la presente invención. Cuando un huésped seguro accede a una página a la que el hipervisor realizó paginación saliente, se produce una secuencia de eventos como la que se muestra en el flujo 700 de proceso para volver a introducir esa página de forma segura. El flujo 700 de proceso comienza en el bloque 705, donde el huésped seguro accede a la página virtual de huésped. Dado que la página, por ejemplo, no es válida, el hardware presenta al hipervisor un fallo de la página de anfitrión, indicado por el código 11 de interrupción de programa (PIC11) (véase el bloque 715). El hipervisor, a su vez, identifica una página absoluta de anfitrión no segura disponible para esta página de huésped (véase el bloque 720) y se realiza paginación entrante de la página de huésped cifrada a la página absoluta de anfitrión identificada (véase el bloque 725).
En el bloque 730, la página absoluta de anfitrión se mapea entonces en las tablas DAT de anfitrión apropiadas (en base a la dirección virtual de anfitrión). En el bloque 735, el anfitrión de hipervisor se reasigna después al huésped seguro. En el bloque 740, el huésped seguro vuelve a acceder a la página segura de huésped. El fallo de página ya no existe, pero dado que se trata de un acceso de huésped seguro y la página no está marcada como segura en la tabla 100 de seguridad de zona de la FIG. 100, el hardware presenta una excepción de almacenamiento no seguro (PIC3E) al hipervisor, en el bloque 745. Esta PIC3E impide el acceso del huésped a esta página segura hasta que se haya emitido la importación necesaria. A continuación, el flujo 700 de proceso pasa a “A”, que está conectado a la FIG. 8.
Volviendo ahora a la FIG. 8, se muestra generalmente un flujo 800 de proceso para realizar una operación de importación según una o más realizaciones de la presente invención. Un hipervisor de buen comportamiento (por ejemplo, que funcione de la manera esperada sin errores), en respuesta a la PIC3E, emitirá una Importación de UVC (véase el bloque 805). Se observa que, en este punto, una página que se va a importar se marca como no segura y solo pueden acceder a ella el hipervisor, otras entidades no seguras y el control de interfaz segura. Los huéspedes seguros no pueden acceder a la misma.
Como parte de la Importación de UVC, el firmware confiable que actúa como control de interfaz segura comprueba si esta página ya está bloqueada por el control de interfaz segura (véase el bloque 810 de decisión). Si lo está, el flujo 800 de proceso pasa al bloque 820. En el bloque 820, se devuelve un código de retorno “ocupado” al hipervisor que, en respuesta, retrasará (véase el bloque 825) y volverá a emitir la Importación de UVC (el flujo 800 de proceso regresa al bloque 805). Si la página aún no está bloqueada, el flujo 800 de proceso pasa al bloque 822 de decisión.
En el bloque 822 de decisión, el control de interfaz segura comprueba si la página es una página que se comparte con el hipervisor no seguro. Si se comparte (el flujo 800 de proceso pasa al bloque 824 de decisión), el control de interfaz segura registra la dirección absoluta de anfitrión en la tabla de seguridad de zona con el dominio de huésped seguro asociado, la dirección virtual de anfitrión y como compartida. Esta página permanece marcada como no segura. Esto completa la Importación de UVC y la página ahora está disponible para que acceda el huésped. El procesamiento continúa con el hipervisor que reasigna al huésped (bloque 830) y el huésped seguro que accede a la página con éxito (bloque 835).
Si la página virtual de anfitrión que se va a importar no se comparte con el hipervisor (el flujo 800 de proceso pasa al bloque 840), el control de interfaz segura marcará la página como segura, para que el hipervisor ya no pueda acceder a la página. En el bloque 845, el control de interfaz segura bloquea la página, para que ningún otro UVC pueda modificar el estado de la página. Una vez establecido el bloqueo (en el bloque 850), el control de interfaz segura verificará que el contenido de la página de huésped no cambió mientras se cifraba. Si cambió, se devuelve entonces un código de retorno de error al hipervisor; de lo contrario, el control de interfaz segura descifrará la página segura.
En el bloque 855, el control de interfaz segura desbloquea la página, lo que permite el acceso de otras UVC, registra la página en la tabla de seguridad de zona como segura y asociada con el dominio de huésped y la dirección virtual de anfitrión apropiados para completar el par HV->HA de dirección-anfitrión. Esto permite el acceso del huésped y completa la UVC.
Volviendo ahora a la FIG. 9, un flujo 900 de proceso con respecto a una operación de memoria donada se muestra generalmente según una o más realizaciones de la presente invención. El flujo 900 de proceso comienza en el bloque 905, donde un hipervisor emite una consulta UVC al control de interfaz segura. En el bloque 910, el control de interfaz segura devuelve datos (por ejemplo, Consultar UVC). Estos datos pueden incluir una cantidad de almacenamiento base absoluto de anfitrión específico de la zona requerida; una cantidad de almacenamiento base absoluto de anfitrión específico del dominio de huésped seguro requerida; una cantidad de almacenamiento variable virtual de anfitrión específico del dominio de huésped seguro requerida por MB; y/o una cantidad de almacenamiento base absoluto de anfitrión específico de CPU de huésped seguro requerida.
En el bloque 915, el hipervisor reserva el almacenamiento base específico de la zona absoluta de anfitrión (por ejemplo, en base a un tamaño devuelto por la consulta UVC). En el bloque 920, el hipervisor emite una inicialización al control de interfaz segura. En este sentido, el hipervisor puede emitir una inicialización de UVC que proporciona almacenamiento donado para los bloques de control UV que se necesitan para coordinar entre las configuraciones de huésped seguro para toda la zona. La Inicialización de UVC especifica un origen de almacenamiento base específico de la zona.
En el bloque 925, el control de interfaz segura implementa la inicialización (por ejemplo, Inicialización de UVC) registrando el almacenamiento donado a UV y marcándolo como seguro. Para la Inicialización de UVC, el control de interfaz segura puede marcar el almacenamiento donado como seguro; asignar parte de ese almacenamiento donado a la tabla de seguridad de zona; y registrar el almacenamiento donado en la tabla de seguridad de zona para uso UV con un dominio seguro único, pero sin dominio de huésped seguro asociado y sin un par de direcciones virtuales de anfitrión asociadas.
En el bloque 930, el hipervisor reserva almacenamiento (por ejemplo, almacenamiento base y variable específico del dominio de huésped seguro). Por ejemplo, el hipervisor reserva almacenamiento base y variable (por ejemplo, en base a un tamaño de almacenamiento de dominio de huésped seguro) específico del dominio de huésped seguro (por ejemplo, un tamaño devuelto por la consulta UVC). En el bloque 935, el hipervisor emite una configuración de creación al control de interfaz segura. En este sentido, el hipervisor puede emitir una creación de configuración UVC de huésped seguro que especifica el origen de almacenamiento base y variable específico del dominio de huésped seguro. Además, la creación de configuración UVC de huésped seguro proporciona almacenamiento donado para los bloques de control UV que se necesitan para soportar esta configuración de huésped segura.
En el bloque 940, el control de interfaz segura implementa la creación de configuración (por ejemplo, creación de configuración UVC de huésped seguro). Para la creación de configuración UVC de huésped seguro, el control de interfaz segura puede marcar el almacenamiento donado como seguro; registrar el almacenamiento donado en la tabla de seguridad de zona para uso UV; y registrar el almacenamiento donado con el dominio de huésped seguro asociado. El almacenamiento base donado (absoluto de anfitrión) se registra como que no tiene ningún par de direcciones virtuales de anfitrión asociadas. El almacenamiento variable donado (virtual de anfitrión) se registra con el par de direcciones virtuales de anfitrión asociadas.
En el bloque 945, el hipervisor reserva el almacenamiento base específico de CPU de huésped seguro (por ejemplo, un tamaño devuelto por la consulta UV). En el bloque 950, el hipervisor especifica un origen de almacenamiento. Por ejemplo, el hipervisor emite a la UV la creación de CPU de huésped seguro que especifica un origen de almacenamiento base específico de CPU de huésped seguro. En el bloque 955, el control de interfaz segura implementa la creación de CPU (por ejemplo, UVC de creación de CPU de huésped seguro). Para la UVC de creación de CPU de huésped seguro, el control de interfaz segura puede marcar el almacenamiento donado como seguro y registrar el almacenamiento donado en la tabla de seguridad de zona para uso UV, pero sin dominio de huésped seguro asociado y sin un par de direcciones virtuales de anfitrión asociadas.
Volviendo ahora a la FIG. 10, se muestra generalmente un flujo 1000 de proceso con respecto a una transición de páginas de hipervisor no seguras a páginas seguras de un control de interfaz segura según una o más realizaciones de la presente invención. En el flujo 1000 de proceso, se muestran tres páginas de hipervisor (por ejemplo, una página de hipervisor no segura A, una página de hipervisor no segura B y una página de hipervisor no segura C).
Las páginas A, B y C del hipervisor (no seguras) puede ser accedidas por una entidad no segura (incluido el hipervisor). Además, las páginas A, B y C del hipervisor (no seguras) se marcan como no seguras (NS), y se registran en una tabla de seguridad de zona (por ejemplo, la tabla 100 de seguridad de zona mostrada en la FIG. 1) como no seguras y no compartidas. En la flecha 1005, se emite una Inicialización de UVC, que realiza la transición de la página de huésped A a la página de almacenamiento 1010 real de control de interfaz segura asociada a una zona completa (UV2). El almacenamiento 1010 real de control de interfaz segura puede marcarse como seguro y registrarse en una tabla de seguridad de zona (por ejemplo, la tabla 100 de seguridad de zona mostrada en la FIG.
1) como UV sin dominio de huésped seguro y sin mapeo de hipervisor a absoluto de anfitrión (HV->HA). En su lugar, se registra con un dominio seguro UV2 único y el bit DA se establece en 1. Se observa que el control de interfaz segura puede acceder al almacenamiento 1010 real de control de interfaz segura como real.
Desde la página B de hipervisor (no segura), en la flecha 1025, se emite la creación de configuración SG o creación de SG CPU UVC, que realiza la transición de esta página a un almacenamiento 1030 real de control de interfaz segura asociado a un dominio de huésped seguro (UVS). El almacenamiento 1030 real de control de interfaz segura puede ser marcado como seguro, junto con el registro en una tabla de seguridad de zona (por ejemplo, la tabla 100 de seguridad de zona mostrada en la FIG. 1) como UV con un dominio de huésped seguro asociado y sin mapeo absoluto de hipervisor a anfitrión (HV->HA) (es decir, bit DA= 1). Se observa que el control de interfaz segura puede acceder al almacenamiento 1010 real de control de interfaz segura como real en nombre de un dominio de huésped seguro.
Desde la página C de hipervisor (no segura), en la flecha 1045, se emite la creación de configuración SG UVC, que realiza la transición de esta página a un almacenamiento 1050 virtual de control de interfaz segura asociado a un dominio de huésped seguro (UVV). El almacenamiento 1050 virtual de control de interfaz segura puede marcarse como seguro, junto con el registro en una tabla de seguridad de zona (por ejemplo, la tabla 100 de seguridad de zona mostrada en la FIG. 1) como UV con un dominio de huésped seguro y mapeo de hipervisor a absoluto de anfitrión (HV->HA). Se observa que se puede acceder al almacenamiento 1050 virtual de control de interfaz segura como virtual UV en nombre de un dominio de huésped seguro.
Volviendo ahora a la FIG. 11, se representa un flujo 1100 de proceso con respecto a un acceso de almacenamiento seguro realizado por el programa o el control de interfaz segura según una o más realizaciones. Esto representa la situación en la que el control de interfaz segura va a acceder al almacenamiento de huésped o al almacenamiento de control de interfaz segura y debe etiquetar ese acceso correctamente para permitir que el hardware verifique la seguridad de ese acceso. 1100 describe este etiquetado de los accesos de almacenamiento mediante el control de interfaz segura. El flujo 1100 de proceso comienza en el bloque 1110, donde el control de interfaz segura determina si está accediendo a un almacenamiento de control de interfaz segura.
Si este no es un acceso al almacenamiento de control de interfaz segura, entonces el flujo 1100 de proceso pasa al bloque 1112 de decisión (como se muestra mediante la flecha NO). En el bloque 1112 de decisión, el control de interfaz segura determina si está accediendo a un almacenamiento de huésped seguro. Si este no es un acceso al almacenamiento de huésped seguro, entonces el flujo 1100 de proceso pasa a “B” (que está conectado al flujo 1200 de proceso de la FIG. 12), que usará el ajuste predeterminado para accesos no seguros. Si este es un acceso al almacenamiento de huésped seguro, entonces el flujo 1100 de proceso pasa al bloque 1113 de decisión, donde el control de interfaz segura determina si se está usando un dominio de huésped seguro predeterminado. Si es así, entonces el flujo 1100 de proceso procede a pasar a “B” (que está conectado al flujo 1200 de proceso de la FIG. 12), que usará el ajuste predeterminado para accesos de huésped seguro. Si no, entonces el flujo 1100 de proceso pasa al bloque 1114. En el bloque 1114, se carga un dominio de huésped seguro apropiado en el registro de dominio seguro SG (y pasa a “B”, que está conectado al flujo 1200 de proceso de la FIG. 12).
Si este es un acceso al almacenamiento de control de interfaz segura, entonces el flujo 1100 de proceso pasa al bloque 1120 (como se muestra mediante la flecha SÍ). En el bloque 1120, el acceso se etiqueta como UV seguro (por ejemplo, usa el registro de dominio seguro UV).
El flujo 1100 de proceso pasa entonces al bloque 1130 de decisión, donde el control de interfaz segura determina si este es un acceso al espacio UVV (por ejemplo, tabla variable de configuración SG). Si es un acceso al espacio UVV, entonces el flujo 1100 de proceso pasa al bloque 1134 (como se muestra mediante la flecha SÍ). En el bloque 1134, el acceso se etiqueta como virtual. En el bloque 1136, un dominio de huésped seguro aplicable se carga en el registro de dominio seguro UV. En el bloque 1138, la traducción DAT y el acceso a almacenamiento están listos para comenzar. Volviendo al bloque 1130 de decisión, si este no es un acceso al espacio UVV, entonces el flujo 1100 de proceso pasa al bloque 1140 (como se muestra mediante la flecha NO). En el bloque 1140, el acceso se etiqueta como real.
En el bloque 1150 de decisión, el control de interfaz segura determina si este es un acceso al espacio UVS (por ejemplo, configuración SG o la tabla de CPU). Si este es un acceso al espacio UVS, entonces el flujo 1100 de proceso pasa al bloque 1136 (como se muestra mediante la flecha SÍ). Si este no es un acceso al espacio UVS, entonces el flujo 1100 de proceso pasa al bloque 1170 (como se muestra mediante la flecha NO). Este acceso sería entonces un acceso al espacio UV2 (por ejemplo, tabla de seguridad de zona). En el bloque 1170, se carga un dominio seguro UV2 único en el registro de dominio seguro UV.
La FIG. 12 representa un flujo 1200 de proceso según una o más realizaciones de la presente invención. Cuando se asigna un huésped, el firmware de Entrada SIE puede indicar al hardware que se está ejecutando un huésped (por ejemplo, modo huésped activo) y puede indicar si el huésped es seguro. Si el huésped es seguro, el dominio de huésped seguro asociado se puede cargar en el hardware (por ejemplo, en el registro de dominio seguro SG). Cuando un programa accede al almacenamiento, el hardware puede etiquetar el acceso en base al estado actual del programa en el momento del acceso. La FIG. 12 ilustra un ejemplo de este proceso en el flujo 1200 de proceso. En el bloque 1205, el hardware puede determinar si la máquina se está ejecutando actualmente en modo de huésped y, de no ser así, puede etiquetar el acceso como un acceso de anfitrión en el bloque 1210 y como un acceso no seguro en el bloque 1215. Si la máquina se está ejecutando en modo de huésped en el bloque 1205, el acceso puede etiquetarse como un acceso de huésped en el bloque 1220 y determinar además si el huésped actual es un huésped seguro en el bloque 1225. Si el huésped no es seguro, el acceso puede etiquetarse como no seguro en el bloque 1215. Si el huésped es seguro, el hardware puede etiquetar al huésped como seguro en el bloque 1230, lo que puede asociar al huésped seguro con el registro de dominio seguro SG que se cargó cuando se asignó el huésped seguro. Tanto para los huéspedes seguros como para los no seguros, se puede comprobar el estado DAT en el bloque 1235. El acceso puede etiquetarse como real en el bloque 1240, si el DAT está desactivado. El acceso se puede etiquetar como virtual en el bloque 1245, si el DAT está activado. Una vez que el acceso se etiqueta como real en el bloque 1240 con el DAT desactivado o como virtual en el bloque 1245 con el DAT activado, el hardware está listo para comenzar la traducción y acceder al almacenamiento en el bloque 1250, como se describe adicionalmente en la FIG. 13.
La FIG. 13 representa un ejemplo de traducción realizada por el hardware para soportar tanto accesos seguros como no seguros en el flujo 1300 de proceso según una o más realizaciones de la presente invención. En el bloque 1305, el hardware puede determinar si el acceso se etiqueta como una traducción de huésped y, de ser así, y el acceso es virtual en el bloque 1310, entonces la DAT de huésped se puede realizar en el bloque 1315. Durante la traducción DAT de huésped, se pueden realizar búsquedas intermedias anidadas para las tablas DAT de huésped. Las búsquedas de la tabla se pueden etiquetar como reales de huésped y como seguras si la traducción original se etiquetó como segura. Las búsquedas de tabla también pueden seguir el proceso de traducción del flujo 1300 de proceso. Después de realizar la DAT de huésped para un acceso etiquetado como virtual de huésped en el bloque 1315 y para cualquier acceso etiquetado como real de huésped en el bloque 1310 (virtual=No), se pueden aplicar en el bloque 1320 prefijación de huésped y desplazamiento de memoria de huésped. Al completar el proceso de traducción de huésped, la dirección resultante se puede etiquetar como virtual de anfitrión y como segura si la traducción original de huésped se etiquetó como segura en el bloque 1325. El proceso 1300 puede continuar como para cualquier acceso etiquetado como virtual de anfitrión. Si el acceso original es un acceso de anfitrión en el bloque 1305 (huésped=No) y virtual en el bloque 1330, entonces la DAT de anfitrión puede realizarse en el bloque 1335. Las búsquedas de la tabla de anfitrión se pueden marcar como no seguras en el bloque 1335. Después de realizar la DAT de anfitrión en el bloque 1335, o si el acceso de anfitrión original se etiquetó como real (virtual=No) en el bloque 1330, entonces se puede aplicar la prefijación de anfitrión en el bloque 1340. La dirección resultante puede ser una dirección absoluta de anfitrión en el bloque 1345.
La FIG. 14 representa un ejemplo de traducción DAT con protección de almacenamiento seguro que puede realizarse mediante el hardware en el flujo 1400 de proceso según una o más realizaciones de la presente invención. Continuando desde el bloque 1345 de la FIG. 13, si se identifica un acceso UV seguro en el bloque 1405, entonces el hardware puede verificar si el almacenamiento está registrado como almacenamiento UV seguro en el bloque 1410 y, si no, se presenta un error en el bloque 1415. Se puede realizar un acceso UV seguro mediante la interfaz de control segura cuando se accede al almacenamiento UV. Si el almacenamiento está registrado como almacenamiento UV seguro en el bloque 1410, las comprobaciones de protección pueden continuar ya que se puede realizar para cualquier acceso seguro, excepto que el registro de dominio seguro UV (configurado por la interfaz de control segura antes de realizar un acceso UV seguro) pueda usarse como el dominio seguro especificado para la comprobación de dominio en el bloque 1420, donde continúa el procesamiento. Además, cualquier violación que se detecte (punto de entrada D) para un acceso UV en el bloque 1425 puede presentarse como un error en el bloque 1430 en lugar de una excepción al hipervisor en el bloque 1435, como se hace para una violación de huésped seguro en el bloque 1425 (UV seguro=No).
Para el acceso que no está etiquetado como acceso UV seguro en el bloque 1405, el hardware determina si el acceso es un acceso de huésped seguro en el bloque 1440 y, si no, y si la página está marcada como segura en el bloque 1445, se puede presentar una excepción al hipervisor en el bloque 1435. De lo contrario, si el acceso no es un acceso de huésped seguro en el bloque 1440 y la página no está marcada como segura en el bloque 1445, entonces la traducción se realiza con éxito en el bloque 1450.
Si el acceso es un acceso de huésped seguro en el bloque 1440 o un acceso UV seguro al almacenamiento registrado como almacenamiento UV seguro en el bloque 1410, el hardware puede hacer una comprobación para asegurar que el almacenamiento está registrado en la entidad segura asociada al acceso en el bloque 1420. Si este es un acceso UV seguro, el dominio seguro especificado se puede obtener del registro de dominio seguro UV (cargado mediante la interfaz de control segura en base al almacenamiento UV seguro al que se accede) y, para un acceso de huésped seguro, el dominio seguro especificado se obtiene del registro de dominio seguro SG (cargado cuando se asigna a la entidad segura). Si el almacenamiento al que se está accediendo no está registrado en el dominio seguro especificado en el bloque 1420, entonces para los accesos UV seguros en el bloque 1425 se produce un error en el bloque 1430 y para los accesos de huésped seguro en el bloque 1425 (UV seguro=No) se presenta una excepción al hipervisor en el bloque 1435.
Para accesos seguros al almacenamiento en el bloque 1440 y el bloque 1410 que están registrados en el dominio seguro especificado en el bloque 1420, si la comprobación de direcciones virtuales está deshabilitada, es decir, el bit DA=1 en el bloque 1455 y el acceso es real en el bloque 1460, entonces la traducción se completa en el bloque 1450. Sin embargo, si el bit DA=1 en el bloque 1455 pero el acceso es virtual en el bloque 1460 (real=No), entonces para los accesos UV seguros en el bloque 1425 se produce un error en el bloque 1430 y para los accesos de huésped seguro en el bloque 1425 (UV seguro=No) se presenta una excepción al hipervisor en el bloque 1435. Si el bit DA=0 en el bloque 1455 y el acceso es un acceso virtual en el bloque 1475, entonces el hardware puede determinar si el mapeo de virtual de anfitrión a absoluto de anfitrión del acceso coincide con el registrado para esta dirección absoluta de anfitrión en el bloque 1470. Si es así, entonces la traducción se completa con éxito en el bloque 1450. Si el mapeo no coincide en el bloque 1470, entonces para los accesos UV seguros en el bloque 1425 se produce un error en el bloque 1430 y para los accesos de huésped seguro en el bloque 1425 (UV seguro=No) se presenta una excepción al hipervisor en el bloque 1435. Si el bit DA=0 y el acceso es un acceso real en el bloque 1475 (virtual=No), entonces para los accesos UV seguros en el bloque 1425 se produce un error en el bloque 1430 y para los accesos de huésped seguro en el bloque 1425 (UV seguro=No) se presenta una excepción al hipervisor en el bloque 1435; alternativamente, la traducción puede completarse con éxito en el bloque 1450. Cualquier acceso por el subsistema E/S en el bloque 1480 puede comprobar si la página está marcada como segura en el bloque 1445 y si la página es segura, se puede presentar una excepción al hipervisor en el bloque 1435; si la página no está marcada como segura, la traducción se realiza con éxito en el bloque 1450.
Se pueden gestionar colectivamente varias comprobaciones de registro y el mapeo del almacenamiento a través de la interfaz 1485 de tabla de seguridad de zona. Por ejemplo, los bloques 1410, 1420, 1455, 1470 y 1475 pueden interactuar con una tabla de seguridad de zona que está asociada a una misma zona para gestionar varios accesos.
Volviendo ahora a las FIGS. 15-16, los flujos 1500 y 1600 de proceso se refieren generalmente a marcar, mediante un mecanismo de etiquetado (por ejemplo, iniciado por una entidad no confiable y marcado por el control de interfaz segura), al almacenamiento como memoria de control de interfaz segura y como segura para prohibir el acceso de cualquier entidad que no sea el control de interfaz segura, y a aislar, mediante el mecanismo de seguridad de almacenamiento proporcionado en el hardware para el aislamiento entre huéspedes seguros, la memoria de control de interfaz segura.
La FIG. 15 representa un flujo 1500 de proceso para el etiquetado de hardware de almacenamiento seguro de control de interfaz segura según una o más realizaciones de la presente invención. El flujo 1500 de proceso comienza en el bloque 1510, donde una entidad no confiable emite una consulta a un control de interfaz segura. Por ejemplo, la consulta es una llamada de instrucción, como Consultar UVC.
En el bloque 1520, el control de interfaz segura devuelve los datos a la entidad no confiable. Los datos se pueden devolver en una llamada de instrucción, como Consultar UVC. Los datos pueden incluir al menos una cantidad de almacenamiento que se va a donar. Por ejemplo, la al menos una cantidad de almacenamiento que se va a donar puede definirse mediante uno o más de un tamaño base de almacenamiento específico de la zona; un tamaño base de almacenamiento específico del dominio de huésped seguro; un tamaño variable de almacenamiento específico del dominio de huésped seguro (por MB); y un tamaño base de almacenamiento específico de CPU de huésped seguro.
En el bloque 1530, la entidad no confiable emite una inicialización al control de interfaz segura. Por ejemplo, la inicialización es una llamada de instrucción que dona almacenamiento al control de interfaz segura, tal como Inicializar UVC de control de interfaz segura. La llamada a la instrucción puede hacer que la entidad que no es de confianza reserve almacenamiento base específico de la zona (longitud devuelta por la Consulta UVC). Tenga en cuenta que parte de la llamada de instrucción también puede especificar el origen y la longitud de almacenamiento base específicos de la zona.
En el bloque 1540, el control de interfaz segura implementa la inicialización. Por ejemplo, la inicialización es una llamada de instrucción realizada por la entidad no confiable que al menos establece el almacenamiento donado como seguro. Algunos ejemplos de llamada de instrucción pueden ser Inicializar UVC de interfaz segura o Inicializar UVC. Además, la inicialización de UVC hace que el control de interfaz segura verifique que el almacenamiento donado no es actualmente seguro; establezca el almacenamiento donado como seguro; y asigne el almacenamiento base específico de la zona a UV2 (por ejemplo, almacenamiento absoluto del host UV específico de la zona).
En el bloque 1550, la entidad no confiable emite una configuración de creación. Por ejemplo, la creación de configuración es una llamada de instrucción que dona almacenamiento al control de interfaz segura. En este sentido, esta llamada de instrucción puede ser Crear Configuración de Huésped Seguro o Crear Configuración SG. Además, la entidad que no es de confianza reserva el almacenamiento base específico del dominio de huésped seguro (longitud que devuelve Consultar UVC), reserva el almacenamiento variable específico del dominio de huésped seguro en base al tamaño del almacenamiento del dominio de huésped seguro (longitud por MB devuelta por Consultar UVC) y especifica el origen y la longitud del almacenamiento base y variable específico del dominio de huésped seguro.
El flujo 1500 de proceso pasa entonces al Círculo M, donde se conecta con un flujo 1600 de proceso de la FIG. 16.
Volviendo ahora a la FIG. 16, se representa el flujo 1600 de proceso para el etiquetado de hardware de almacenamiento seguro de control de interfaz segura, que es una continuación en el Círculo M del flujo de proceso de la FIG. 15, según una o más realizaciones de la presente invención.
En el bloque 1660, el control de interfaz segura implementa la creación de configuración. En funcionamiento, la creación de configuración registra el almacenamiento donado en el control de interfaz segura y marca este almacenamiento donado como seguro. La creación de configuración puede ser una llamada de instrucción, tal como Crear Configuración de UVC de Huésped Seguro o Crear Configuración de UVC SG. Para la Creación de Configuración de UVC SG, el control de interfaz segura puede verificar que el almacenamiento donado no es seguro actualmente, establecer el almacenamiento donado como seguro, asignar almacenamiento base específico del dominio de huésped seguro a UVS (por ejemplo, almacenamiento absoluto de host seguro específico del dominio de huésped de UV) y asignar almacenamiento variable y específico del dominio de huésped seguro a UVV (por ejemplo, almacenamiento virtual de huésped específico del dominio de huésped seguro de UV).
En el bloque 1670, la entidad no confiable emite una creación de CPU. Por ejemplo, la creación de CPU es una llamada de instrucción que dona almacenamiento al control de interfaz segura. En este sentido, esta llamada de instrucción puede ser una Creación de CPU de Huésped Seguro o Creación de CPU de SG. Por ejemplo, la entidad que no es de confianza reserva el almacenamiento base específico de CPU de huésped seguro (longitud devuelta por Consultar Ultravisor UVC) y especifica el origen y la longitud del almacenamiento base específico de CPU de huésped seguro.
En el bloque 1680, el control de interfaz segura implementa la creación de CPU. Por ejemplo, la creación de CPU es una llamada de instrucción que registra el almacenamiento donado en el control de interfaz segura y lo marca como seguro. En este sentido, esta llamada de instrucción puede ser una Creación de UVC de CPU de Huésped Seguro o Creación de UVC de CPU de SG. Por ejemplo, el control de interfaz segura verifica el almacenamiento donado como no seguro actualmente, establece el almacenamiento donado como seguro y asigna el almacenamiento base específico del dominio de huésped seguro a UVS (por ejemplo, almacenamiento absoluto de anfitrión específico del dominio de huésped seguro UV).
Debe entenderse que, aunque esta descripción incluye una descripción detallada de la informática en la nube, la implementación de las enseñanzas mencionadas en la presente memoria no se limita a un entorno informático en la nube. Más bien, las realizaciones de la presente invención son capaces de implementarse junto con cualquier otro tipo de entorno informático conocido ahora o desarrollado posteriormente.
La informática en la nube es un modelo de distribución de servicios para permitir un acceso de red conveniente y bajo demanda a un conjunto compartido de recursos informáticos configurables (por ejemplo, redes, ancho de banda de red, servidores, procesamiento, memoria, almacenamiento, aplicaciones, VM y servicios) que se pueden aprovisionar y liberar rápidamente con un mínimo esfuerzo de gestión o interacción con un proveedor del servicio. Este modelo en la nube puede incluir al menos cinco características, al menos tres modelos de servicio y al menos cuatro modelos de despliegue.
Las características son como sigue:
Autoservicio bajo demanda: un consumidor en la nube puede aprovisionar capacidades informáticas de forma unilateral, tales como tiempo de servidor y almacenamiento de red, según sea necesario de forma automática, sin requerir interacción humana con el proveedor del servicio.
Amplio acceso a la red: las capacidades están disponibles sobre una red y se accede a ellas a través de mecanismos estándar que promueven el uso por plataformas heterogéneas de clientes ligeros o pesados (por ejemplo, teléfonos móviles, ordenadores portátiles y PDA).
Agrupación de recursos: los recursos informáticos del proveedor se agrupan para servir a múltiples consumidores usando un modelo de múltiples inquilinos, con diferentes recursos físicos y virtuales asignados dinámicamente y reasignados según la demanda. Hay un sentido de independencia de ubicación en el sentido de que el consumidor generalmente no tiene control ni conocimiento sobre la ubicación exacta de los recursos proporcionados, pero puede ser capaz de especificar la ubicación en un nivel de abstracción superior (por ejemplo, país, estado o centro de datos).
Elasticidad rápida: las capacidades se pueden aprovisionar rápida y elásticamente, en algunos casos de manera automática, para ampliar rápidamente y liberar rápidamente para reducir rápidamente. Para el consumidor, las capacidades disponibles para el aprovisionamiento a menudo parecen ilimitadas y pueden adquirirse en cualquier cantidad en cualquier momento.
Servicio medido: los sistemas en la nube controlan y optimizan automáticamente el uso de los recursos al aprovechar una capacidad de medición en algún nivel de abstracción apropiado para el tipo de servicio (por ejemplo, almacenamiento, procesamiento, ancho de banda y cuentas de usuario activas). El uso de recursos se puede monitorizar, controlar e informar, proporcionando transparencia tanto para el proveedor como para el consumidor del servicio usado.
Los Modelos de Servicio son como sigue:
Software como Servicio (SaaS): la capacidad proporcionada al consumidor es para usar las aplicaciones del proveedor que se ejecutan en una infraestructura en la nube. Las aplicaciones son accesibles desde varios dispositivos cliente a través de una interfaz de cliente ligera, tal como un navegador web (por ejemplo, correo electrónico basado en web). El consumidor no gestiona ni controla la infraestructura de nube subyacente incluidas la red, los servidores, los sistemas operativos, el almacenamiento o incluso las capacidades de aplicaciones individuales, con la posible excepción de ajustes limitados de configuración de aplicaciones específicas del usuario.
Plataforma como Servicio (PaaS): la capacidad proporcionada al consumidor es para desplegar en la infraestructura en la nube aplicaciones creadas o adquiridas por el consumidor, creadas usando lenguajes de programación y herramientas soportadas por el proveedor. El consumidor no gestiona ni controla la infraestructura de nube subyacente incluidas las redes, los servidores, los sistemas operativos o el almacenamiento, pero tiene control sobre las aplicaciones desplegadas y, posiblemente, las configuraciones del entorno del alojamiento de aplicaciones.
Infraestructura como Servicio (IaaS): la capacidad proporcionada al consumidor es para aprovisionar procesamiento, almacenamiento, redes y otros recursos informáticos fundamentales donde el consumidor es capaz de desplegar y ejecutar software discrecional, que puede incluir sistemas operativos y aplicaciones. El consumidor no gestiona ni controla la infraestructura en la nube subyacente, pero tiene control sobre los sistemas operativos, el almacenamiento, las aplicaciones desplegadas y, posiblemente, un control limitado de los componentes de interconexión de redes seleccionados (por ejemplo, los cortafuegos de anfitrión).
Los modelos de implementación son como sigue:
Nube privada: la infraestructura en la nube se opera únicamente para una organización. Se puede gestionar por la organización o por un tercero y puede existir en las instalaciones o fuera de las instalaciones.
Nube comunitaria: la infraestructura en la nube es compartida por varias organizaciones y soporta una comunidad específica que tiene intereses compartidos (por ejemplo, misión, requisitos de seguridad, políticas y consideraciones de cumplimiento). Se puede gestionar por las organizaciones o por un tercero y puede existir en las instalaciones o fuera de las instalaciones.
Nube pública: la infraestructura en la nube se pone a disposición del público en general o de un gran grupo industrial y es propiedad de una organización que vende servicios en la nube.
Nube híbrida: la infraestructura en la nube es una composición de dos o más nubes (privada, comunitaria o pública) que siguen siendo entidades únicas, pero están unidas entre sí por una tecnología estandarizada o propietaria que permite la portabilidad de datos y aplicaciones (por ejemplo, la ráfaga en la nube para equilibrar la carga entre nubes).
Un entorno informático en la nube está orientado a servicio con un enfoque en ausencia de control, bajo acoplamiento, modularidad e interoperabilidad semántica. En el corazón de la informática en la nube hay una infraestructura que incluye una red de nodos interconectados.
Haciendo referencia ahora a la FIG. 17, se representa el entorno 50 de informática en la nube ilustrativo. Como se muestra, el entorno 50 de informática en la nube incluye uno o más nodos 10 de informática en la nube con los que pueden comunicarse los dispositivos informáticos locales usados por los consumidores de la nube, tales como, por ejemplo, asistente digital personal (PDA) o teléfono 54A celular, ordenador 54B de sobremesa, ordenador 54C portátil y/o el sistema 54N informático de automóvil. Los nodos 10 pueden comunicarse unos con otros. Se pueden agrupar (no mostrado) física o virtualmente, en una o más redes, tales como nubes Privadas, Comunitarias, Públicas o Híbridas, como se ha descrito anteriormente, o una combinación de las mismas. Esto permite que el entorno 50 de informática en la nube ofrezca infraestructura, plataformas y/o software como servicios para los que un consumidor de la nube no necesita mantener recursos en un dispositivo informático local. Se entiende que los tipos de dispositivos 54A-N informáticos mostrados en la FIG. 17 están destinados a ser únicamente ilustrativos y que los nodos 10 informáticos y el entorno 50 de informática en la nube pueden comunicarse con cualquier tipo de dispositivo informatizado a través de cualquier tipo de red y/o conexión direccionable de red (por ejemplo, usando un navegador web).
Haciendo referencia ahora a la FIG. 18, se muestra un conjunto de capas de abstracción funcionales proporcionadas por el entorno 50 de informática en la nube (FIG. 17). Debe entenderse de antemano que los componentes, capas y funciones mostrados en la FIG. 18 se pretende que sean únicamente ilustrativos y las realizaciones de la invención no se limitan a los mismos. Como se representa, se proporcionan las siguientes capas y funciones correspondientes:
La capa 60 de hardware y software incluye componentes de hardware y software. Ejemplos de componentes de hardware incluyen: ordenadores centrales 61; servidores 62 basados en la arquitectura RISC (Ordenador de Conjunto Reducido de Instrucciones); servidores 63; servidores 64 blade; dispositivos 65 de almacenamiento; y redes y componentes 66 de interconexión de redes. En algunas realizaciones, los componentes de software incluyen software 67 de servidor de aplicaciones de red y el software 68 de base de datos.
La capa 70 de virtualización proporciona una capa de abstracción a partir de la que se pueden proporcionar los siguientes ejemplos de entidades virtuales: servidores 71 virtuales; almacenamiento 72 virtual; redes 73 virtuales, incluidas redes privadas virtuales; aplicaciones virtuales y sistemas operativos 74; y clientes 75 virtuales.
En un ejemplo, la capa 80 de gestión puede proporcionar las funciones descritas a continuación. El aprovisionamiento 81 de recursos proporciona una adquisición dinámica de recursos informáticos y otros recursos que se utilizan para realizar tareas dentro del entorno informático en la nube. La Medición y Fijación de Precios 82 proporcionan un seguimiento de los costes a medida que se utilizan los recursos dentro del entorno informático en la nube, y el cobro o facturación por el consumo de estos recursos. En un ejemplo, estos recursos pueden incluir licencias de software de aplicaciones. La seguridad proporciona comprobación de identidad para los consumidores y las tareas en la nube, así como protección para los datos y otros recursos. El portal 83 de usuario proporciona acceso al entorno informático en la nube para consumidores y administradores de sistemas. La gestión 84 de nivel de servicio proporciona la asignación y gestión de recursos informáticos en la nube de manera que se cumplan los niveles de servicio requeridos. La planificación y el cumplimiento 85 del Acuerdo de Nivel de Servicio (SLA) proporcionan un acuerdo previo para, y la adquisición de, recursos informáticos en la nube para los que se anticipa un requisito futuro según un SLA.
La capa 90 de cargas de trabajo proporciona ejemplos de funcionalidad para lo cual se puede utilizar el entorno informático en la nube. Ejemplos de cargas de trabajo y funciones que se pueden proporcionar desde esta capa incluyen: mapeo y navegación 91; desarrollo de software y gestión 92 del ciclo de vida; impartición 93 de educación en aulas virtuales; procesamiento 94 de análisis de datos; procesamiento 95 de transacciones; y etiquetado 96 de hardware de almacenamiento seguro. Se entiende que estos son solo algunos ejemplos y que, en otras realizaciones, las capas pueden incluir diferentes servicios.
Volviendo ahora a la FIG. 19, se representa un sistema 1900 según una o más realizaciones de la presente invención. El sistema 1900 incluye un nodo 10 de ejemplo (por ejemplo, un nodo de alojamiento) que está en comunicación directa o indirecta con uno o más dispositivos 20A-20E cliente, tal como a través de una red 165. El nodo 10 puede ser un centro de datos o un servidor de anfitrión de un proveedor de informática en la nube. El nodo 10 ejecuta un hipervisor 12, lo que facilita el despliegue de una o más VM 15 (15A-15N). El nodo 10 incluye además una capa 11 de hardware/firmware que proporciona soporte directo para las funciones requeridas por las VM 15A-N y el hipervisor 12, así como facilita que el hipervisor 12 proporcione uno o más servicios a las VM 15. En las implementaciones contemporáneas, la comunicación se proporciona entre la capa de 11 de hardware/firmware y el hipervisor 12, entre la capa 11 de hardware/firmware y las VM 15, entre el hipervisor 12 y las VM 15, y entre el hipervisor 12 y las VM 15 a través de la capa 11 de hardware/firmware. Según una o más realizaciones de la presente invención, se proporciona un control de interfaz segura en la capa 11 de hardware/firmware, y se elimina la comunicación directa entre el hipervisor 12 y las VM 15.
Por ejemplo, el nodo 10 puede facilitar que un dispositivo 20A cliente despliegue una o más de las VM 15A-15N. Las VM 15A-15N pueden desplegarse en respuesta a solicitudes respectivas de los distintos dispositivos 20A-20E cliente. Por ejemplo, la VM 15A puede desplegarse mediante el dispositivo 20A cliente, la VM 15B puede desplegarse mediante el dispositivo 20B cliente y la VM 15C puede desplegarse mediante el dispositivo 20C cliente. El nodo 10 también puede facilitar que un cliente aprovisione un servidor físico (sin ejecutarlo como una VM). Los ejemplos descritos en la presente memoria incorporan el aprovisionamiento de recursos en el nodo 10 como parte de una VM, sin embargo, las soluciones técnicas descritas también se pueden aplicar para aprovisionar los recursos como parte de un servidor físico.
En un ejemplo, los dispositivos 20A-20E cliente pueden pertenecer a la misma entidad, tal como una persona, una empresa, una agencia gubernamental, un departamento dentro de una empresa o cualquier otra entidad, y el nodo 10 se puede operar como una nube privada de la entidad. En este caso, el nodo 10 aloja únicamente las VM 15A-15N que se despliegan por los dispositivos 20A-20E cliente que pertenecen a la entidad. En otro ejemplo, los dispositivos 20A-20E cliente pueden pertenecer a entidades distintas. Por ejemplo, una primera entidad puede poseer del dispositivo 20A cliente, mientras que una segunda entidad puede poseer del dispositivo cliente 20B. En este caso, el nodo 10 se puede operar como una nube pública que aloja las VM de diferentes entidades. Por ejemplo, las VM 15A-15N pueden implementarse de manera oculta, en la que la VM 15A no facilita el acceso a la VM 15B. Por ejemplo, el nodo 10 puede ocultar las VM 15A-15N usando una característica de Partición Lógica (LPAR) de Gestor de Sistemas/Recurso de Procesador (PR/SM) de IBM z Systems®. Estas características, tal como LPAR de PR/SM, proporcionan aislamiento entre particiones, facilitando así que el nodo 10 despliegue dos o más VM 15A-15N para diferentes entidades en el mismo nodo 10 físico en diferentes particiones lógicas.
Un dispositivo 20A cliente de los dispositivos 20A-20E cliente es un aparato de comunicación tal como un ordenador, un teléfono inteligente, un ordenador tableta, un ordenador de sobremesa, un ordenador portátil, un ordenador servidor o cualquier otro aparato de comunicación que solicite el despliegue de una VM por el hipervisor 12 del nodo 10. El dispositivo 20A cliente puede enviar una solicitud para su recepción por el hipervisor a través de la red 165. Una VM 15A, de las VM 15A-15N, es una imagen de VM que el hipervisor 12 despliega en respuesta a una solicitud del dispositivo 20A cliente de los dispositivos 20A-20E cliente. El hipervisor 12 es un monitor de VM (VMM), que puede ser software, firmware o hardware que crea y ejecuta las VM. El hipervisor 12 facilita que la VM 15A utilice los componentes de hardware del nodo 10 para ejecutar programas y/o almacenar datos. Con las características y modificaciones apropiadas, el hipervisor 12 puede ser z Systems® de IBM, VM Server de Oracle, XenServer de Citrix, ESX de VMware, el hipervisor Hyper-V de Microsoft o cualquier otro hipervisor. El hipervisor 12 puede ser un hipervisor nativo que se ejecuta directamente en el nodo 10, o un hipervisor alojado que se ejecuta en otro hipervisor.
Volviendo ahora a la FIG. 20, se muestra un nodo 10 para implementar las enseñanzas de la presente memoria según una o más realizaciones de la invención. El nodo 10 puede ser una plataforma informática electrónica que comprenda y/o emplee cualquier número y combinación de dispositivos informáticos y redes que utilicen varias tecnologías de comunicación, tal y como se describe en la presente memoria. El nodo 10 puede ser fácilmente escalable, extensible y modular, con la capacidad de cambiar a diferentes servicios o reconfigurar algunas características independientemente de otras.
En esta realización, el nodo 10 tiene un procesador 2001, que puede incluir una o más unidades centrales de procesamiento (CPU) 2001a, 2001b, 2001c, etc. El procesador 2001, también denominado circuito de procesamiento, microprocesador, unidad informática, se acopla mediante un bus 2002 de sistema a una memoria 2003 de sistema y a varios otros componentes. La memoria 2003 de sistema incluye la memoria de solo lectura (ROM) 2004 y la memoria de acceso aleatorio (RAM) 2005. La ROM 2004 se acopla al bus 2002 de sistema y puede incluir un sistema básico de entrada/salida (BIOS), que controla determinadas funciones básicas del nodo 10. La RAM es una memoria de lectura-escritura acoplada al bus 2002 de sistema para su uso por el procesador 2001.
El nodo 10 de la FIG. 20 incluye un disco duro 2007, que es un ejemplo de un medio de almacenamiento tangible legible ejecutable por el procesador 2001. El disco duro 2007 almacena el software de 2008 y los datos de 2009. El software 2008 se almacena como instrucciones para ejecución en el nodo 10 por el procesador 2001 (para realizar un proceso, tal como los procesos descritos con referencia a las FIGS. 1-19). Los datos 2009 incluyen un conjunto de valores de variables cualitativas o cuantitativas organizados en varias estructuras de datos para soportar y ser usados por las operaciones del software 2008.
El nodo 10 de la FIG. 20 incluye uno o más adaptadores (por ejemplo, controladores de disco duro, adaptadores de red, adaptadores de gráficos, etc.) que interconectan y soportan las comunicaciones entre el procesador 2001, la memoria 2003 del sistema, el disco duro 2007 y otros componentes del nodo 10 (por ejemplo, dispositivos periféricos y externos). En una o más realizaciones de la presente invención, el o los adaptadores pueden conectarse a uno o más buses de E/S que se conectan al bus 2002 de sistema a través de un puente de bus intermedio, y el o los buses de E/S pueden utilizar protocolos comunes, tales como la Interconexión de Componentes Periféricos (PCI).
Como se muestra, el nodo 10 incluye un adaptador 2020 de interfaz que interconecta un teclado 2021, un ratón 2022, un altavoz 2023 y un micrófono 2024 al bus 2002 de sistema. El nodo 10 incluye un adaptador 2030 de pantalla que interconecta el bus 2002 de sistema a una pantalla 2031. El adaptador 2030 de pantalla (y/o el procesador 2001) pueden incluir un controlador de gráficos para proporcionar rendimiento de gráficos, tal como una pantalla y gestión de una GUI 2032. Un adaptador 2041 de comunicaciones interconecta el bus 2002 de sistema con una red 2050 que permite al nodo 10 comunicarse con otros sistemas, dispositivos, datos y software, tales como un servidor 2051 y una base de datos 2052. En una o más realizaciones de la presente invención, las operaciones del software 2008 y los datos 2009 pueden implementarse en la red 2050 por el servidor 2051 y la base de datos 2052. Por ejemplo, la red 2050, el servidor 2051 y la base de datos 2052 pueden combinarse para proporcionar iteraciones internas del software 2008 y los datos 2009 como una plataforma como un servicio, un software como un servicio y/o infraestructura como un servicio (por ejemplo, como una aplicación web en un sistema distribuido).
Las realizaciones descritas en la presente memoria están necesariamente enraizadas en la tecnología informática y, particularmente, en los servidores informáticos que alojan VM. Además, una o más realizaciones de la presente invención facilitan una mejora en la operación de la propia tecnología informática, en particular los servidores informáticos que alojan VM, facilitando que los servidores informáticos que alojan VM alojen VM seguras, en las que incluso el hipervisor tiene prohibido acceder a la memoria, los registros y otros datos similares asociados a la VM segura. Además, una o más realizaciones de la presente invención proporcionan etapas significativas hacia las mejoras de los servidores informáticos de alojamiento de VM usando un control de interfaz segura (también denominado en la presente memoria "ultavisor" o "UV") que incluye hardware, firmware (por ejemplo, milicódigo) o una combinación de los mismos para facilitar una separación de la VM segura y el hipervisor y, por lo tanto, mantener una seguridad de las VM alojadas por el servidor informático. El control de interfaz segura proporciona operaciones intermedias ligeras para facilitar la seguridad, sin añadir una sobrecarga sustancial para asegurar el estado de la VM durante la inicialización/salida de las VM, como se describe en la presente memoria.
Las realizaciones de la invención descritas en la presente memoria pueden incluir un sistema, método y/o producto de programa informático (en la presente memoria, un sistema) que implementa el etiquetado de hardware de almacenamiento seguro de control de interfaz segura. Se observa que, para cada una de las explicaciones, los identificadores de los elementos se reutilizan para otros elementos similares de diferentes figuras.
En la presente memoria se describen varias realizaciones de la invención con referencia a los dibujos relacionados. Se pueden idear realizaciones alternativas de la invención sin apartarse del alcance de esta invención. En la siguiente descripción y en los dibujos se exponen varias conexiones y relaciones posicionales (por ejemplo, por encima, por debajo, adyacentes, etc.) entre los elementos. Estas conexiones y/o relaciones posicionales, a menos que se especifique lo contrario, pueden ser directas o indirectas, y la presente invención no pretende ser limitante a este respecto. Por consiguiente, un acoplamiento de entidades puede referirse a un acoplamiento directo o indirecto, y una relación posicional entre entidades puede ser una relación posicional directa o indirecta. Además, las varias tareas y etapas del proceso descritas en la presente memoria pueden incorporarse en un procedimiento o proceso más completo que tenga etapas o funcionalidad adicionales no descritas en detalle en la presente memoria.
Deben usarse las siguientes definiciones y abreviaturas para la interpretación de las reivindicaciones y la memoria descriptiva. Tal como se usan en la presente memoria, los términos "comprende", "que comprende", "incluye", "que incluye", "tiene", "que tiene", "contiene" o "que contiene" u otras variaciones de los mismos, se pretende que cubran una inclusión no exclusiva. Por ejemplo, una composición, una mezcla, proceso, método, artículo o aparato que comprenden una lista de elementos no se limitan necesariamente solo a esos elementos, sino que pueden incluir otros elementos no enumerados expresamente o inherentes a dicha composición, mezcla, proceso, método, artículo o aparato.
Además, el término "de ejemplo" se usa en la presente memoria con el significado “que sirve como un ejemplo, caso o ilustración". Cualquier realización o diseño descrito en la presente memoria como "de ejemplo" no debe interpretarse necesariamente como preferido o ventajoso sobre otras realizaciones o diseños. Puede entenderse que los términos "al menos uno" y "uno o más" incluyen cualquier número entero mayor o igual a uno, es decir, uno, dos, tres, cuatro, etc. Se puede entender que los términos "una pluralidad" incluyen cualquier número entero mayor que o igual a dos, es decir, dos, tres, cuatro, cinco, etc. El término "conexión" puede incluir tanto una "conexión" indirecta como una "conexión" directa.
Los términos "aproximadamente", "sustancialmente", "alrededor de" y variaciones de los mismos pretenden incluir el grado de error asociado con la medición de la cantidad particular en función del equipo disponible en el momento de presentar la solicitud. Por ejemplo, "alrededor" puede incluir un intervalo de ± 8% o 5%, o 2% de un valor dado.
La presente invención puede ser un sistema, un método y/o un producto de programa informático en cualquier posible nivel de detalle técnico de integración. El producto de programa informático puede incluir un medio (o medios) de almacenamiento legible(s) por ordenador que tiene(n) instrucciones del programa legibles por ordenador en el(los) mismo(s) para hacer que un procesador lleve a cabo aspectos de la presente invención.
El medio de almacenamiento legible por ordenador puede ser un dispositivo tangible que puede retener y almacenar instrucciones para su uso por un dispositivo de ejecución de instrucciones. El medio de almacenamiento legible por ordenador puede ser, por ejemplo, pero no se limita a, un dispositivo de almacenamiento electrónico, un dispositivo de almacenamiento magnético, un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento electromagnético, un dispositivo de almacenamiento de semiconductores o cualquier combinación adecuada de los anteriores. Una lista no exhaustiva de ejemplos más específicos del medio de almacenamiento legible por ordenador incluye lo siguiente: un disquete de ordenador portátil, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria de solo lectura programable y borrable (EPROM o memoria Flash), una memoria estática de acceso aleatorio (SRAM), un disco compacto de memoria de solo lectura portátil (CD-ROM), un disco versátil digital (DVD), una memoria USB, un disco flexible, un dispositivo codificado mecánicamente, tal como tarjetas perforadas o estructuras elevadas en una ranura que tiene instrucciones grabadas en las mismas, y cualquier combinación adecuada de los anteriores. Un medio de almacenamiento legible por ordenador, tal como se usa en la presente memoria, no debe interpretarse como señales transitorias en sí, tales como ondas de radio u otras ondas electromagnéticas que se propagan libremente, ondas electromagnéticas que se propagan a través de una guía de ondas u otros medios de transmisión (por ejemplo, pulsos de luz que pasan a través de un cable de fibra óptica) o señales eléctricas transmitidas a través de un cable.
Las instrucciones del programa legibles por ordenador descritas en la presente memoria pueden descargarse a los respectivos dispositivos informáticos/de procesamiento desde un medio de almacenamiento legible por ordenador o a un ordenador externo o dispositivo de almacenamiento externo a través de una red, por ejemplo, Internet, una red de área local, una red de área amplia y/o una red inalámbrica. La red puede comprender cables de transmisión de cobre, fibras de transmisión óptica, transmisión inalámbrica, enrutadores, cortafuegos, conmutadores, ordenadores de pasarela y/o servidores periféricos. Una tarjeta adaptadora de red o interfaz de red en cada dispositivo informático/de procesamiento recibe instrucciones del programa legibles por ordenador desde la red y reenvía las instrucciones del programa legibles por ordenador para su almacenamiento en un medio de almacenamiento legible por ordenador dentro del dispositivo informático/de procesamiento respectivo.
Las instrucciones del programa legibles por ordenador para llevar a cabo las operaciones de la presente invención pueden ser instrucciones de ensamblador, instrucciones de arquitectura de conjunto de instrucciones (ISA), instrucciones de máquina, instrucciones dependientes de la máquina, microcódigo, instrucciones de firmware, datos de ajuste de estado, datos de configuración para circuito integrado o código fuente o código objeto escritos en cualquier combinación de uno o más lenguajes de programación, incluidos un lenguaje de programación orientado a objetos como Smalltalk, C++ o similares, y lenguajes de programación procedimentales, como el lenguaje de programación “C” o lenguajes de programación similares. Las instrucciones del programa legibles por ordenador pueden ejecutarse completamente en el ordenador del usuario, en parte en el ordenador del usuario, como un paquete de software independiente, en parte en el ordenador del usuario y en parte en un ordenador remoto o completamente en el ordenador o servidor remoto. En este último escenario, el ordenador remoto puede conectarse al ordenador del usuario a través de cualquier tipo de red, incluida una red de área local (LAN) o una red de área amplia (WAN), o la conexión puede realizarse a un ordenador externo (por ejemplo, a través de Internet usando un Proveedor de Servicios de Internet). En algunas realizaciones, los circuitos electrónicos incluidos, por ejemplo, circuitos lógicos programables, matrices de puertas programables en campo (FPGA) o matrices lógicas programables (PLA) pueden ejecutar instrucciones del programa legibles por ordenador usando información de estado de las instrucciones del programa legibles por ordenador para personalizar los circuitos electrónicos, con el fin de realizar aspectos de la presente invención.
Aspectos de la presente invención se describen en la presente memoria con referencia a ilustraciones de diagrama de flujo y/o diagramas de bloques de métodos, aparatos (sistemas) y productos de programas informáticos según las realizaciones de la invención. Se entenderá que cada bloque de las ilustraciones del diagrama de flujo y/o los diagramas de bloques, y las combinaciones de bloques en las ilustraciones del diagrama de flujo y/o los diagramas de bloques, pueden implementarse mediante instrucciones del programa legibles por ordenador.
Estas instrucciones del programa legibles por ordenador pueden proporcionarse a un procesador de un ordenador de propósito general, un ordenador de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de manera que las instrucciones, que se ejecutan a través del procesador del ordenador u otro aparato programable de procesamiento de datos, creen medios para implementar las funciones/acciones especificadas en el bloque o bloques del diagrama de flujo y/o diagrama de bloques. Estas instrucciones del programa legibles por ordenador también pueden almacenarse en un medio de almacenamiento legible por ordenador que puede dirigir un ordenador, un aparato de procesamiento de datos programable y/u otros dispositivos para que funcionen de una manera particular, de manera que el medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo comprenda un artículo de fabricación incluidas instrucciones que implementen aspectos de la función/acciones especificadas en el bloque o bloques del diagrama de flujo y/o diagrama de bloques.
Las instrucciones del programa legibles por ordenador también pueden cargarse en un ordenador, otro aparato de procesamiento de datos programable u otro dispositivo para hacer que se realicen una serie de etapas operativas en el ordenador, otro aparato programable u otro dispositivo para producir un proceso implementado por ordenador, de manera que las instrucciones que se ejecutan en el ordenador, otro aparato programable u otro dispositivo implementen las funciones/acciones especificadas en el bloque o bloques del diagrama de flujo y/o del diagrama de bloques.
El diagrama de flujo y los diagramas de bloques de las Figuras ilustran la arquitectura, la funcionalidad y la operación de posibles implementaciones de sistemas, métodos y productos de programas informáticos según varias realizaciones de la presente invención. A este respecto, cada bloque en el diagrama de flujo o los diagramas de bloques puede representar un módulo, segmento o porción de instrucciones, que comprende una o más instrucciones ejecutables para implementar la función o funciones lógicas especificadas. En algunas implementaciones alternativas, las funciones indicadas en los bloques pueden ocurrir fuera del orden indicado en las Figuras. Por ejemplo, dos bloques mostrados en sucesión pueden, de hecho, ejecutarse de manera sustancialmente simultánea, o los bloques pueden ejecutarse a veces en orden inverso, dependiendo de la funcionalidad implicada. También se señalará que cada bloque de los diagramas de bloques y/o la ilustración del diagrama de flujo, y las combinaciones de bloques en los diagramas de bloques y/o la ilustración del diagrama de flujo, pueden implementarse mediante sistemas basados en hardware de propósito especial que realizan las funciones o acciones especificadas o llevan a cabo combinaciones de hardware de propósito especial e instrucciones de ordenador.
La terminología usada en la presente memoria tiene el propósito de describir las realizaciones particulares solamente y no se pretende ser limitante. Como se usa en la presente memoria, las formas singulares "un", "una" y "el", “la” se pretenden que incluyan también las formas plurales, a menos que el contexto indique claramente lo contrario. Se entenderá además que los términos "comprende" y/o "que comprende", cuando se usan en esta memoria descriptiva, especifican la presencia de características, números enteros, etapas, operaciones, elementos y/o componentes indicados, pero no excluyen la presencia o adición de una o más características, números enteros, etapas, operaciones, componentes de elementos y/o grupos de los mismos.
Las descripciones de las varias realizaciones de la presente memoria se han presentado con propósitos de ilustración, pero no se pretende que sean exhaustivas ni se limiten a las realizaciones descritas. Muchas modificaciones y variaciones serán evidentes para los expertos en la técnica.
La terminología usada en la presente memoria se eligió para explicar mejor los principios de las realizaciones, la aplicación práctica o la mejora técnica sobre las tecnologías que se encuentran en el mercado, o para permitir que otros expertos en la técnica entiendan las realizaciones descritas en la presente memoria.

Claims (21)

REIVINDICACIONES
1. Un método que comprende:
recibir, mediante un control (11) de interfaz segura de un sistema, una instrucción de inicialización de una entidad no confiable del sistema para establecer el almacenamiento donado de la entidad no confiable como seguro, en donde la entidad no confiable facilita el despliegue de una o más máquinas (15) virtuales en el sistema, y el control (11) de interfaz segura facilita que la entidad no confiable proporcione uno o más servicios a las una o más máquinas (15) virtuales;
implementar (1540), mediante el control (11) de interfaz segura, la instrucción de inicialización a través de la asignación de una parte del almacenamiento donado como almacenamiento específico de la zona y etiquetar el almacenamiento específico de la zona con un dominio seguro único para un control seguro que impida el acceso de la entidad no confiable y de la una o más máquinas (15) virtuales; y
asignar, mediante el control de interfaz segura, un almacenamiento específico del dominio de huésped seguro y etiquetar el almacenamiento específico del dominio de huésped seguro como pertenecientes al control de interfaz segura y cualificado con un dominio de huésped seguro asociado, en donde el dominio de huésped seguro proporciona un acceso seguro a una de las una o más máquinas (15) virtuales e impide el acceso de la entidad no confiable.
2. El método de la reivindicación 1, en donde la implementación de la instrucción de inicialización hace que el control (11) de interfaz segura verifique que el almacenamiento donado no es seguro y establezca el almacenamiento donado como almacenamiento seguro.
3. El método de una cualquiera de las reivindicaciones anteriores, en donde la implementación de la instrucción de inicialización hace que el control (11) de interfaz segura asigne una parte del almacenamiento donado para que se defina como almacenamiento absoluto y etiquete esta parte del almacenamiento donado como si no tuviera una dirección virtual asociada.
4. El método de una cualquiera de las reivindicaciones anteriores, en donde la implementación de la instrucción de inicialización hace que el control (11) de interfaz segura asigne una parte del almacenamiento donado para que se defina como almacenamiento virtual y etiquete esta parte del almacenamiento donado con una dirección virtual asociada.
5. El método de una cualquiera de las reivindicaciones anteriores, en donde
el almacenamiento donado se registra en el control (11) de interfaz segura; y el almacenamiento donado se marca como seguro.
6. El método de una cualquiera de las reivindicaciones anteriores, el método comprende además:
implementar, mediante el control (11) de interfaz segura, una instrucción de creación de configuración que registre el almacenamiento donado en el control (11) de interfaz segura, marque el almacenamiento donado como seguro y haga que el control (11) de interfaz segura etiquete el almacenamiento donado como perteneciente al control (11) de interfaz segura, la implementación de la instrucción de creación de configuración que responde a una segunda llamada de instrucción emitida por la entidad no confiable.
7. El método de una cualquiera de las reivindicaciones anteriores, el método comprende además:
implementar, mediante el control (11) de interfaz segura, una instrucción de creación de una unidad central de procesamiento (CPU) que registra el almacenamiento donado en el control (11) de interfaz segura, marca el almacenamiento donado como seguro y hace que el control (11) de interfaz segura etiquete el almacenamiento donado como perteneciente al control (11) de interfaz segura y calificado con el dominio de huésped seguro asociado, la implementación de la instrucción de creación de configuración que responde a una segunda llamada de instrucción emitida por la entidad no confiable.
8. El método de una cualquiera de las reivindicaciones anteriores, en donde el almacenamiento donado comprende todo el almacenamiento de control de interfaz segura donado por la entidad no confiable.
9. Un producto de programa informático que comprende un medio de almacenamiento legible por ordenador que tiene instrucciones del programa incorporadas en el mismo, instrucciones del programa ejecutables, por un ordenador para hacer que las operaciones comprendan:
recibir, mediante un control (11) de interfaz segura de un sistema, una instrucción de inicialización de una entidad no confiable del sistema para establecer el almacenamiento donado de la entidad no confiable como seguro, en donde la entidad no confiable facilita el despliegue de una o más máquinas (15) virtuales en el sistema, y el control (11) de interfaz segura facilita que la entidad no confiable proporcione uno o más servicios a las una o más máquinas (15) virtuales;
implementar, mediante el control (11) de interfaz segura, la instrucción de inicialización a través de la asignación de una parte del almacenamiento donado como almacenamiento específico de la zona y etiquetar el almacenamiento específico de la zona con un dominio seguro único para un control seguro que impida el acceso de la entidad no confiable y de la una o más máquinas (15) virtuales; y
asignar, mediante el control (11) de interfaz segura, almacenamiento específico del dominio de huésped seguro y etiquetar el almacenamiento específico del dominio de huésped seguro como perteneciente al control (11) de interfaz segura y calificado con un dominio de huésped seguro asociado, en donde el dominio de huésped seguro proporciona un acceso seguro a una de las una o más máquinas (15) virtuales e impide el acceso de la entidad no confiable.
10. El producto de programa informático de la reivindicación 9, en donde la implementación de la instrucción de inicialización hace que el control de interfaz segura verifique que el almacenamiento donado no es seguro y establezca el almacenamiento donado como almacenamiento seguro.
11. El producto de programa informático de una cualquiera de las reivindicaciones 9 a 10, en donde la implementación de la instrucción de inicialización hace que el control (11) de interfaz segura asigne una parte del almacenamiento donado para que se defina como almacenamiento absoluto y etiquete esta parte del almacenamiento donado como si no tuviera una dirección virtual asociada.
12. El producto de programa informático de una cualquiera de las reivindicaciones 9 a 11, en donde la implementación de la instrucción de inicialización hace que el control (11) de interfaz segura asigne una parte del almacenamiento donado para que se defina como almacenamiento virtual y etiquete esta parte del almacenamiento donado con una dirección virtual asociada.
13. El producto de programa informático de una cualquiera de las reivindicaciones 9 a 12, en donde
el almacenamiento donado se registra en el control (11) de interfaz segura; y el almacenamiento donado se marca como seguro.
14. El producto de programa informático de una cualquiera de las reivindicaciones 9 a 13, en donde las instrucciones del programa hacen además que el ordenador realice:
implementar, mediante el control (11) de interfaz segura, una instrucción de creación de configuración que registre el almacenamiento donado en el control (11) de interfaz segura, marque el almacenamiento donado como seguro y haga que el control (11) de interfaz segura etiquete el almacenamiento donado como perteneciente al control (11) de interfaz segura, la implementación de la instrucción de creación de configuración que responde a una segunda llamada de instrucción emitida por la entidad no confiable.
15. El producto de programa informático de una cualquiera de las reivindicaciones 9 a 14, en donde las instrucciones del programa hacen además que el ordenador realice:
implementar, mediante el control (11) de interfaz segura, una instrucción de creación de una unidad central de procesamiento (CPU) que registra el almacenamiento donado en el control (11) de interfaz segura, marca el almacenamiento donado como seguro y hace que el control (11) de interfaz segura etiquete el almacenamiento donado como perteneciente al control (11) de interfaz segura y calificado con el dominio de huésped seguro asociado, la implementación de la instrucción de creación de configuración responde a una segunda llamada de instrucción emitida por la entidad no confiable.
16. Un sistema que comprende:
una memoria (2003);
una unidad (2001) de procesamiento; y
un control (11) de interfaz segura interconectado con la unidad (2001) de procesamiento y la memoria (2003), el control (11) de interfaz segura en comunicación con una entidad no confiable y configurado para realizar operaciones que comprenden:
recibir una instrucción de inicialización de la entidad no confiable para establecer el almacenamiento donado de la entidad no confiable como seguro, en donde la entidad no confiable facilita el despliegue de una o más máquinas (15) virtuales en el sistema, y el control (11) de interfaz segura facilita que la entidad no confiable proporcione uno o más servicios a las una o más máquinas (15) virtuales;
implementar la instrucción de inicialización a través de la asignación de una parte del almacenamiento donado como almacenamiento específico de la zona y etiquetar el almacenamiento específico de la zona con un dominio seguro único para un control seguro que impida el acceso de la entidad no confiable y de las una o más máquinas (15) virtuales; y
asignar almacenamiento específico del dominio de huésped seguro y etiquetar el almacenamiento específico del dominio de huésped seguro como perteneciente al control (11) de interfaz segura y calificado con un dominio de huésped seguro asociado, en donde el dominio de huésped seguro proporciona un acceso seguro a una de las una o más máquinas (15) virtuales e impide el acceso de la entidad no confiable.
17. Un método, que comprende:
implementar, mediante un control (11) de interfaz segura en comunicación con una entidad no confiable en un sistema, una instrucción de inicialización de control de interfaz segura que registra el almacenamiento donado en el control (11) de interfaz segura y marca el almacenamiento donado como seguro, la implementación de la instrucción de inicialización de control de interfaz segura que responde a una primera llamada de instrucción emitida por la entidad no confiable, en donde la entidad no confiable facilita el despliegue de una o más máquinas (15) virtuales en el sistema, y el control de interfaz segura facilita que la entidad no confiable proporcione uno o más servicios a las una o más máquinas (15) virtuales;
implementar, mediante el control (11) de interfaz segura, una instrucción de creación de configuración segura que registra el almacenamiento donado en el control (11) de interfaz segura y marca el almacenamiento donado como seguro, la implementación de la instrucción de creación de configuración segura que responde a una segunda llamada de instrucción emitida por la entidad no confiable para proporcionar acceso seguro a una de las una o más máquinas (15) virtuales e impedir el acceso de la entidad no confiable; e
implementar, mediante el control de interfaz segura, una instrucción de creación de una unidad central de procesamiento (CPU) segura que registra el almacenamiento donado en el control (11) de interfaz segura y marca el almacenamiento donado como seguro, la implementación de la instrucción de creación de CPU segura que responde a una tercera llamada de instrucción emitida por la entidad no confiable para crear una o más CPU virtuales para una de las una o más máquinas (15) virtuales e impedir el acceso de la entidad no confiable.
18. El método de la reivindicación 17, en donde la implementación de la instrucción de inicialización de control de interfaz segura hace que el control (11) de interfaz segura asigne el almacenamiento donado como almacenamiento específico de la zona y etiquete el almacenamiento específico de la zona con un dominio seguro único,
en donde la implementación de la instrucción de creación de configuración segura hace que el control (11) de interfaz segura asigne la configuración segura de base donada y el almacenamiento de configuración segura variable como almacenamiento específico del dominio de huésped seguro y etiquete el almacenamiento específico del dominio de huésped seguro como perteneciente al control (11) de interfaz segura y calificado con un dominio de huésped seguro asociado, o
en donde la implementación de la instrucción de creación de CPU segura hace que el control de interfaz segura asigne el almacenamiento de CPU seguro de base donado como almacenamiento específico del dominio de huésped seguro y etiquete el almacenamiento específico del dominio de huésped seguro como perteneciente al control de interfaz segura y cualificado con el dominio de huésped seguro asociado.
19. El método de la reivindicación 18, en donde el almacenamiento específico de la zona donado, el almacenamiento de configuración segura de base o el almacenamiento de CPU de base se definen como almacenamiento absoluto y se etiquetan como que no tienen una dirección virtual asociada, y
en donde el almacenamiento de configuración segura variable donado se define como almacenamiento virtual y se etiqueta con la dirección virtual asociada.
20. El método de una cualquiera de las reivindicaciones 17 a 19, en donde la implementación del control de inicialización de interfaz segura, la creación de una configuración segura o las instrucciones de creación de una CPU segura hacen que el control de interfaz segura verifique que el almacenamiento donado no es seguro y establezca el almacenamiento donado como seguro.
21. El método de cualquiera de las reivindicaciones 17 a 20, en donde el almacenamiento donado comprende todo el almacenamiento de control de interfaz segura donado por la entidad no confiable.
ES20710115T 2019-03-08 2020-03-06 Etiquetado de hardware de almacenamiento seguro de control de interfaz segura Active ES2975041T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/296,450 US11283800B2 (en) 2019-03-08 2019-03-08 Secure interface control secure storage hardware tagging
PCT/EP2020/055979 WO2020182644A1 (en) 2019-03-08 2020-03-06 Secure interface control secure storage hardware tagging

Publications (1)

Publication Number Publication Date
ES2975041T3 true ES2975041T3 (es) 2024-07-02

Family

ID=69780193

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20710115T Active ES2975041T3 (es) 2019-03-08 2020-03-06 Etiquetado de hardware de almacenamiento seguro de control de interfaz segura

Country Status (17)

Country Link
US (1) US11283800B2 (es)
EP (1) EP3935510B1 (es)
JP (1) JP7379517B2 (es)
KR (1) KR102789374B1 (es)
CN (1) CN113544655B (es)
AU (1) AU2020233947B2 (es)
BR (1) BR112021017783A2 (es)
CA (1) CA3132757A1 (es)
ES (1) ES2975041T3 (es)
HU (1) HUE066118T2 (es)
IL (1) IL285065B2 (es)
MX (1) MX2021010587A (es)
PL (1) PL3935510T3 (es)
SG (1) SG11202105420VA (es)
TW (1) TWI752412B (es)
WO (1) WO2020182644A1 (es)
ZA (1) ZA202106317B (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11308215B2 (en) * 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
US11347529B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Inject interrupts and exceptions into secure virtual machine
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11493975B2 (en) * 2020-09-24 2022-11-08 Intel Corporation System, apparatus and method for providing power monitoring isolation in a processor
JP2024066819A (ja) * 2022-11-02 2024-05-16 キオクシア株式会社 メモリシステムおよび情報処理システム

Family Cites Families (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4245302A (en) 1978-10-10 1981-01-13 Magnuson Computer Systems, Inc. Computer and method for executing target instructions
US4787031A (en) 1985-01-04 1988-11-22 Digital Equipment Corporation Computer with virtual machine mode and multiple protection rings
US8108873B1 (en) 1999-05-28 2012-01-31 Oracle International Corporation System for extending an addressable range of memory
US7194740B1 (en) 1999-05-28 2007-03-20 Oracle International Corporation System for extending an addressable range of memory
US6678815B1 (en) 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
US8037530B1 (en) 2000-08-28 2011-10-11 Verizon Corporate Services Group Inc. Method and apparatus for providing adaptive self-synchronized dynamic address translation as an intrusion detection sensor
US7433951B1 (en) 2000-09-22 2008-10-07 Vmware, Inc. System and method for controlling resource revocation in a multi-guest computer system
US7191440B2 (en) 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US20030226014A1 (en) 2002-05-31 2003-12-04 Schmidt Rodney W. Trusted client utilizing security kernel under secure execution mode
US7149862B2 (en) 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
WO2004046934A2 (en) 2002-11-18 2004-06-03 Arm Limited Secure memory for protecting against malicious programs
WO2005036367A2 (en) 2003-10-08 2005-04-21 Unisys Corporation Virtual data center that allocates and manages system resources across multiple nodes
US7987497B1 (en) * 2004-03-05 2011-07-26 Microsoft Corporation Systems and methods for data encryption using plugins within virtual systems and subsystems
US7191292B2 (en) 2004-06-04 2007-03-13 Sun Microsystems, Inc. Logging of level-two cache transactions into banks of the level-two cache for system rollback
US7475166B2 (en) 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US7685635B2 (en) 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US20070094323A1 (en) 2005-10-25 2007-04-26 Smith Jeffrey C Managed resource sharing method and apparatus
US20080294866A1 (en) 2007-05-22 2008-11-27 Hewlett-Packard Development Company, L.P. Method And Apparatus For Memory Management
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8219989B2 (en) 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct with non-native device driver for facilitating access to a physical input/output device
US8176280B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Use of test protection instruction in computing environments that support pageable guests
US8458438B2 (en) 2008-02-26 2013-06-04 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US8312230B2 (en) * 2008-06-06 2012-11-13 International Business Machines Corporation Dynamic control of partition memory affinity in a shared memory partition data processing system
US8799892B2 (en) 2008-06-09 2014-08-05 International Business Machines Corporation Selective memory donation in virtual real memory environment
US8151032B2 (en) 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8261320B1 (en) 2008-06-30 2012-09-04 Symantec Corporation Systems and methods for securely managing access to data
US8370835B2 (en) * 2009-03-12 2013-02-05 Arend Erich Dittmer Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US20110153944A1 (en) 2009-12-22 2011-06-23 Klaus Kursawe Secure Cache Memory Architecture
US9087200B2 (en) 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US20120297177A1 (en) * 2010-11-15 2012-11-22 Ghosh Anup K Hardware Assisted Operating System Switch
CN102594852B (zh) 2011-01-04 2016-03-30 中国移动通信集团公司 数据访问方法、节点及系统
KR20120097136A (ko) 2011-02-24 2012-09-03 삼성전자주식회사 가상화 환경에서의 메모리 풀 관리
US8590005B2 (en) 2011-06-08 2013-11-19 Adventium Enterprises, Llc Multi-domain information sharing
US9141785B2 (en) 2011-08-03 2015-09-22 Cloudbyte, Inc. Techniques for providing tenant based storage security and service level assurance in cloud storage environment
US8538924B2 (en) * 2011-08-31 2013-09-17 Hitachi, Ltd. Computer system and data access control method for recalling the stubbed file on snapshot
US8788763B2 (en) 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
US8782351B2 (en) * 2011-10-13 2014-07-15 International Business Machines Corporation Protecting memory of a virtual guest
US9251039B2 (en) 2012-02-17 2016-02-02 Microsoft Technology Licensing, Llc Remote debugging as a service
US20140007189A1 (en) 2012-06-28 2014-01-02 International Business Machines Corporation Secure access to shared storage resources
CN103729230B (zh) 2012-10-11 2017-04-12 财团法人工业技术研究院 虚拟机系统的内存管理方法和计算机系统
EP2923478B1 (en) 2012-11-21 2019-08-14 Apple Inc. Policy-based techniques for managing access control
US9185114B2 (en) 2012-12-05 2015-11-10 Symantec Corporation Methods and systems for secure storage segmentation based on security context in a virtual environment
CN103368973B (zh) * 2013-07-25 2016-02-17 浪潮(北京)电子信息产业有限公司 一种云操作系统安全体系
US9767044B2 (en) 2013-09-24 2017-09-19 Intel Corporation Secure memory repartitioning
CN103778368A (zh) * 2014-01-23 2014-05-07 重庆邮电大学 一种基于系统虚拟化技术的进程安全隔离方法
US9792448B2 (en) 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
WO2015132753A1 (en) 2014-03-07 2015-09-11 Eco4Cloud S.R.L. Method for memory management in virtual machines, and corresponding system and computer program product
US9672058B2 (en) 2014-03-13 2017-06-06 Unisys Corporation Reduced service partition virtualization system and method
US9483639B2 (en) 2014-03-13 2016-11-01 Unisys Corporation Service partition virtualization system and method having a secure application
CN103885725B (zh) * 2014-03-19 2017-03-15 华存数据信息技术有限公司 一种基于云计算环境的虚拟机访问控制系统及其控制方法
CN105095094B (zh) * 2014-05-06 2018-11-30 华为技术有限公司 内存管理方法和设备
US9792222B2 (en) 2014-06-27 2017-10-17 Intel Corporation Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure
US9553850B2 (en) 2014-06-30 2017-01-24 International Business Machines Corporation Multi-tenant secure separation of data in a cloud-based application
KR101592782B1 (ko) 2014-11-05 2016-02-12 플러스기술주식회사 전가상화 시스템에서 자원을 감시하는 장치 및 방법
WO2016081867A1 (en) 2014-11-20 2016-05-26 Interdigital Patent Holdings, Inc. Providing security to computing systems
US9703720B2 (en) * 2014-12-23 2017-07-11 Intel Corporation Method and apparatus to allow secure guest access to extended page tables
US20160203014A1 (en) * 2015-01-08 2016-07-14 International Business Machines Corporaiton Managing virtual machines using globally unique persistent virtual machine identifiers
US9870324B2 (en) 2015-04-09 2018-01-16 Vmware, Inc. Isolating guest code and data using multiple nested page tables
US9875047B2 (en) * 2015-05-27 2018-01-23 Red Hat Israel, Ltd. Exit-less host memory locking in a virtualized environment
US10114958B2 (en) 2015-06-16 2018-10-30 Microsoft Technology Licensing, Llc Protected regions
US9942035B2 (en) 2015-08-18 2018-04-10 Intel Corporation Platform migration of secure enclaves
US9558004B1 (en) 2015-10-16 2017-01-31 International Business Machines Corporation Inter-platform management of computing resources
US10019279B2 (en) 2015-12-17 2018-07-10 International Business Machines Corporation Transparent secure interception handling
US10013579B2 (en) 2015-12-23 2018-07-03 Intel Corporation Secure routing of trusted software transactions in unsecure fabric
US10516533B2 (en) 2016-02-05 2019-12-24 Mohammad Mannan Password triggered trusted encryption key deletion
US10152350B2 (en) 2016-07-01 2018-12-11 Intel Corporation Secure domain manager
US10802986B2 (en) * 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10585805B2 (en) 2016-07-29 2020-03-10 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
US10462219B2 (en) 2016-08-10 2019-10-29 Iboss, Inc. Distributed network security system providing isolation of customer data
US12265849B2 (en) 2016-08-28 2025-04-01 VMware LLC Use of nested hypervisors by a resource-exchange system to enhance data and operational security and to facilitate component installation
US10528721B2 (en) 2016-10-20 2020-01-07 Intel Corporation Trusted packet processing for multi-domain separatization and security
US9710395B1 (en) 2016-10-26 2017-07-18 International Business Machines Corporation Dynamic address translation table allocation
US10380032B2 (en) 2017-03-09 2019-08-13 Internatinoal Business Machines Corporation Multi-engine address translation facility
KR102257320B1 (ko) * 2017-03-29 2021-05-27 어드밴스드 마이크로 디바이시즈, 인코포레이티드 하이퍼바이저 및 가상 머신 간 메모리 페이지 이행의 모니터링
US10387686B2 (en) * 2017-07-27 2019-08-20 International Business Machines Corporation Hardware based isolation for secure execution of virtual machines
US11687654B2 (en) 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains
US10671737B2 (en) 2017-11-10 2020-06-02 Intel Corporation Cryptographic memory ownership table for secure public cloud
US10474382B2 (en) 2017-12-01 2019-11-12 Red Hat, Inc. Fast virtual machine storage allocation with encrypted storage
US10552344B2 (en) 2017-12-26 2020-02-04 Intel Corporation Unblock instruction to reverse page block during paging
EP3776288A4 (en) 2018-04-10 2022-01-05 Al Belooshi, Bushra Abbas Mohammed SECURITY SYSTEM AND METHOD OF CRYPTOGRAPHIC KEYS IN THE CLOUD
US11258861B2 (en) * 2018-06-29 2022-02-22 Intel Corporation Secure reporting of platform state information to a remote server
US10761996B2 (en) 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
CN109359487B (zh) * 2018-10-09 2022-02-18 湖北文理学院 一种基于硬件隔离的可扩展安全影子存储及标签管理方法
US11461244B2 (en) * 2018-12-20 2022-10-04 Intel Corporation Co-existence of trust domain architecture with multi-key total memory encryption technology in servers
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment

Also Published As

Publication number Publication date
SG11202105420VA (en) 2021-06-29
TWI752412B (zh) 2022-01-11
HUE066118T2 (hu) 2024-07-28
AU2020233947B2 (en) 2023-03-16
KR102789374B1 (ko) 2025-04-01
CN113544655A (zh) 2021-10-22
EP3935510A1 (en) 2022-01-12
MX2021010587A (es) 2021-10-13
BR112021017783A2 (pt) 2021-11-23
US11283800B2 (en) 2022-03-22
WO2020182644A1 (en) 2020-09-17
CN113544655B (zh) 2023-09-01
TW202036309A (zh) 2020-10-01
IL285065B2 (en) 2024-04-01
EP3935510C0 (en) 2024-03-13
CA3132757A1 (en) 2020-09-17
EP3935510B1 (en) 2024-03-13
US20200287902A1 (en) 2020-09-10
KR20210119466A (ko) 2021-10-05
PL3935510T3 (pl) 2024-05-27
JP2022522766A (ja) 2022-04-20
ZA202106317B (en) 2022-07-27
IL285065B1 (en) 2023-12-01
IL285065A (en) 2021-09-30
AU2020233947A1 (en) 2021-06-17
JP7379517B2 (ja) 2023-11-14

Similar Documents

Publication Publication Date Title
ES2975041T3 (es) Etiquetado de hardware de almacenamiento seguro de control de interfaz segura
ES2966715T3 (es) Espacio de direcciones virtuales de anfitrión para un almacenamiento de control de interfaz segura
US11487906B2 (en) Storage sharing between a secure domain and a non-secure entity
US11635991B2 (en) Secure storage query and donation
US11455398B2 (en) Testing storage protection hardware in a secure virtual machine environment
US11182192B2 (en) Controlling access to secure storage of a virtual machine
ES3014595T3 (en) Secure interface control high-level page management
ES2998775T3 (en) Secure interface control high-level instruction interception for interruption enablement
ES3056857T3 (en) Secure storage isolation
HK40057638B (zh) 安全接口控件安全存储硬件标记
HK40057638A (en) Secure interface control secure storage hardware tagging