ES2966715T3 - Espacio de direcciones virtuales de anfitrión para un almacenamiento de control de interfaz segura - Google Patents

Espacio de direcciones virtuales de anfitrión para un almacenamiento de control de interfaz segura Download PDF

Info

Publication number
ES2966715T3
ES2966715T3 ES20709572T ES20709572T ES2966715T3 ES 2966715 T3 ES2966715 T3 ES 2966715T3 ES 20709572 T ES20709572 T ES 20709572T ES 20709572 T ES20709572 T ES 20709572T ES 2966715 T3 ES2966715 T3 ES 2966715T3
Authority
ES
Spain
Prior art keywords
secure
interface control
address
virtual
host
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
ES20709572T
Other languages
English (en)
Inventor
Claudio Imbrenda
Christian Borntraeger
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 ES2966715T3 publication Critical patent/ES2966715T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/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; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

Según una o más realizaciones de la presente invención, un método implementado por computadora incluye recibir, en un control de interfaz seguro de un sistema informático, una solicitud de acceso para una estructura de datos relacionada con una entidad segura en un dominio seguro del sistema informático. El control de interfaz segura puede verificar una dirección de almacenamiento virtual asociada con una ubicación de la estructura de datos. El control de interfaz segura puede solicitar una traducción de dirección utilizando un espacio de direcciones virtuales de una entidad no segura del sistema informático basándose en la determinación de que la ubicación de la estructura de datos está asociada con la dirección de almacenamiento virtual. El control de interfaz seguro puede acceder a la estructura de datos basándose en el resultado de la traducción de direcciones. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Espacio de direcciones virtuales de anfitrión para un almacenamiento 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 uso del espacio de direcciones virtuales de anfitrión para el almacenamiento 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 proporcionar espacio para un servidor físico. El cliente puede expandir o contraer fácilmente la VM de acuerdo con las preferencias o requisitos cambiantes del cliente. Por lo general, 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 invitado bajo el control de un hipervisor de anfitrión, depende de ese hipervisor para proporcionar servicios de virtualización de forma transparente para ese invitado. 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 (páginar dentro) sus datos desde un disco para que residan en la memoria y la VM también puede mover sus datos de regreso (páginar fuera) al disco. Mientras la página reside en la memoria, la VM (invitado) utiliza la traducción dinámica de direcciones (DAT) para mapear las páginas en la memoria desde una dirección virtual de invitado a una dirección absoluta de invitado. Además, el hipervisor de anfitrión tiene su propio mapeo DAT (desde la dirección virtual del anfitrión a la dirección absoluta del anfitrión) para las páginas de invitado en la memoria y puede, de forma independiente y transparente para el invitado, páginar las páginas del invitado dentro y fuera de la memoria. Es a través de las tablas DAT del anfitrión que el hipervisor proporciona aislamiento de memoria o uso compartido de memoria de invitado entre dos VM de invitado separadas. El anfitrión también puede acceder a la memoria del invitado para simular las operaciones del invitado, cuando sea necesario, en nombre del invitado.
El documento JIN SEONGWOOK y otros: “H-SVM: Hardware-Assisted Secure Virtual Machines under a Vulnerable Hypervisor”, publicado en IEEE<t>R<a>NSACTIONS ON COMPUTERS, vol. 64, n.° 10, 1 de octubre de 2015 (01-10 2015), páginas 2833-2846, divulga proteger las VM de invitado incluso bajo un hipervisor que no sea de confianza mediante el uso de aislamiento de memoria proporcionado a través de un hardware seguro.
Sumario
De acuerdo con una o más realizaciones de la presente invención, un método implementado por ordenador incluye las etapas del método establecidas en la reivindicación 1.
De acuerdo con las realizaciones de la presente invención, el control de interfaz segura puede acceder a la estructura de datos utilizando una dirección absoluta en base a la determinación de que la ubicación de la estructura de datos no está asociada a la dirección de almacenamiento virtual. Las ventajas pueden incluir flexibilidad de direccionamiento para un direccionamiento absoluto.
De acuerdo con la presente invención, se verifica un mapeo de la dirección de almacenamiento virtual proporcionada por la entidad no segura. Las ventajas pueden incluir la verificación de la integridad de los datos gestionados por una entidad no segura para una entidad segura.
De acuerdo con las realizaciones de la presente invención, la verificación del mapeo de la dirección de almacenamiento virtual puede incluir la verificación de un cambio en el mapeo en comparación con un mapeo anterior. Las ventajas pueden incluir la confirmación de que una entidad no segura no modifica el mapeo de direcciones para una entidad segura.
De acuerdo con las realizaciones de la presente invención, la estructura de datos relacionada con la entidad segura en el dominio seguro puede distribuirse entre una pluralidad de páginas de memoria. Las ventajas pueden incluir el soporte de la fragmentación de la estructura de datos.
De acuerdo con las realizaciones de la presente invención, las páginas de memoria donadas por la entidad no segura pueden residir en un rango contiguo de direcciones virtuales. Las ventajas pueden incluir hacer que las direcciones absolutas fragmentadas parezcan contiguas.
De acuerdo con la presente invención, la verificación de la dirección de almacenamiento virtual incluye inspeccionar una tabla de seguridad de zona para determinar si una comparación de direcciones virtuales asociada a una dirección virtual del anfitrión está habilitada o deshabilitada. Las ventajas pueden incluir la gestión de las opciones del modo de direccionamiento por dominio o página.
De acuerdo con las realizaciones de la presente invención, el control de la interfaz segura puede ser firmware, hardware, software confiable o una combinación de firmware, hardware y software confiable. Las ventajas pueden incluir la implementación del control de interfaz segura con un bajo impacto operativo asociado al rendimiento general del sistema.
De acuerdo con las realizaciones de la presente invención, la entidad no segura puede ser un hipervisor configurado para alojar a uno o más invitados seguros como la entidad segura. Las ventajas pueden incluir alojar invitados seguros por un hipervisor no seguro.
Otras realizaciones de la presente invención implementan las características de los métodos descritos anteriormente en sistemas informáticos y en productos de programas informáticos.
Se obtienen características y ventajas adicionales a través de las técnicas de la presente descripción. Otras realizaciones y aspectos de la invención se describen en detalle en el presente documento y se consideran parte de la invención. Para una mejor comprensión de la invención con las ventajas y características, consultar la descripción y los dibujos.
Breve descripción de los dibujos
Los detalles de los derechos exclusivos descritos en el presente documento se señalan particularmente y se reivindican claramente en las reivindicaciones al final de la memoria descriptiva. El método y el sistema definidos por las reivindicaciones se describen con referencia a las figuras 16, 19 y 20. Los pasajes que hacen referencia a las otras figuras son útiles para comprender la invención. Las anteriores y otras características y ventajas 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 de acuerdo con una o más realizaciones de la presente invención;
La FIG. 2 representa espacios de direcciones virtuales y absolutas para realizar la DAT de acuerdo con 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 de acuerdo con una o más realizaciones de la presente invención;
La FIG. 4 representa un mapeo del almacenamiento de invitado seguro de acuerdo con 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) de acuerdo con 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 de acuerdo con 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 de acuerdo con 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 de acuerdo con una o más realizaciones de la presente invención;
La FIG. 9 representa un proceso de una operación de memoria donada de acuerdo 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 de acuerdo con 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 de acuerdo con 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 de acuerdo con 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 de acuerdo con 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 de acuerdo con una o más realizaciones de la presente invención; La FIG. 15 representa un flujo de proceso para una determinación del modo de direccionamiento de acuerdo con una o más realizaciones de la presente invención;
La FIG. 16 representa un flujo de proceso para usar el espacio de direcciones virtuales de anfitrión para el almacenamiento de control de interfaz segura de acuerdo con una o más realizaciones de la presente invención; La FIG. 17 ilustra un entorno de informática en la nube de acuerdo con una o más realizaciones de la presente invención;
La FIG. 18 representa capas de modelo de abstracción de acuerdo con una o más realizaciones de la presente invención;
La FIG. 19 representa un sistema de acuerdo con una o más realizaciones de la presente invención; y
La FIG. 20 representa un sistema de procesamiento de acuerdo con una o más realizaciones de la presente invención.
Los diagramas representados en el presente documento 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. Además, el término “acoplado”, y variaciones del mismo, describe que tiene una ruta de comunicaciones entre dos elementos y no implica una conexión directa entre los elementos sin elementos/conexiones intermedios entre ellos.
Descripción detallada
Una o más realizaciones de la presente invención aprovechan un control de interfaz segura ligero y eficiente entre el software y la máquina para proporcionar seguridad adicional.
Una máquina virtual (VM), que se ejecuta como invitado bajo el control de un hipervisor de anfitrión, depende de ese hipervisor para proporcionar servicios de virtualización de forma transparente para ese invitado. Estos servicios se pueden aplicar a cualquier interfaz entre una entidad segura y otra entidad no confiable que tradicionalmente permite el acceso a los recursos seguros por parte de 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 invitado. El término “máquina virtual” o “VM”, como se usa en el presente documento, 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 (OS), recursos de software, etc.). La VM se mantiene como software que se ejecuta en una máquina de 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 el presente documento, se refieren a un entorno de procesamiento o servicio de plataforma que gestiona y permite que múltiples VM se ejecuten utilizando múltiples (y a veces diferentes) OS en una misma máquina de 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, la implementación 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 apoyar a los invitados seguros, existe un desafío técnico en el que se requiere seguridad adicional entre el hipervisor y los invitados seguros sin depender del hipervisor, de modo que el hipervisor no puede acceder a los datos de la VM y, por lo tanto, no puede proporcionar servicios de la manera descrita anteriormente.
La ejecución segura descrita en el presente documento 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 invitados seguros, se proporciona seguridad adicional entre el hipervisor no seguro “no confiable” y los invitados seguros. Para hacer esto, muchas de las funciones que el hipervisor normalmente hace en nombre de los invitados deben incorporarse en la máquina. En el presente documento se describe un nuevo control de interfaz segura, también denominado “UV” en el presente documento, para proporcionar una interfaz segura entre el hipervisor y los invitados seguros. Los términos control de interfaz segura y UV se usan indistintamente en el presente documento. El control de interfaz segura funciona en colaboración con el hardware para proporcionar esta seguridad adicional. Además, un hipervisor de nivel inferior puede proporcionar virtualización para este hipervisor no confiable, y, si el hipervisor de nivel inferior se implementa en un código/software confiable, también puede ser parte del control de la interfaz segura.
El control de interfaz segura, en un ejemplo, se implementa en hardware y/o firmware interno, seguro y confiable. Este firmware confiable puede incluir, por ejemplo, procesador milicódigo o código de partición lógica P<r>/SM. Para un invitado o entidad seguros, el control de interfaz segura proporciona la inicialización y el mantenimiento del entorno seguro, así como la coordinación del envío de estas entidades seguras en el hardware. Mientras el invitado seguro utiliza activamente los datos y es residente en el almacenamiento del anfitrión, se mantiene “a salvo” en almacenamiento seguro. Ese invitado seguro único puede acceder al almacenamiento seguro de invitado; el hardware hace cumplir esto estrictamente. Es decir, el hardware evita que cualquier entidad no segura (incluido el hipervisor u otros invitados no seguros) o invitado seguro diferente acceda 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 utiliza para implementar las instrucciones y funciones complejas definidas, por ejemplo, en zArchitecture® de IBM. 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 invitado seguro y almacenamiento compartido. Esto le permite proporcionar cualquier función que necesite el invitado seguro o el hipervisor en apoyo de ese invitado. El control de interfaz segura también tiene acceso directo al hardware, lo que permite que el hardware proporcione controles de seguridad de manera eficiente bajo el control de las condiciones establecidas por el control de interfaz segura.
De acuerdo con 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 evita que cualquier invitado 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 invitado 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 del anfitrión que el hardware utiliza en cualquier traducción DAT realizada por una entidad segura para verificar que solo el invitado seguro o la entidad que la posee acceden a la página.
De acuerdo con 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. El control de la interfaz segura y el hardware utilizan este almacenamiento para proporcionar la seguridad necesaria para los invitados seguros. El control de interfaz segura utiliza este almacenamiento seguro para almacenar información sobre sí mismo, la zona habilitada para ejecutar invitados seguros, los invitados seguros y las CPU virtuales seguras. El almacenamiento de control de interfaz segura, similar al almacenamiento de invitado seguro, también se marca como página segura para evitar 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 utilizan para evitar que otras entidades seguras accedan al almacenamiento de control de interfaz segura.
Una o más realizaciones de la presente invención utilizan el espacio de direcciones virtuales del anfitrión para el almacenamiento de control de interfaz segura. Las áreas de memoria para almacenar información sobre el control de interfaz segura, invitados y CPU virtuales se ubican normalmente en la memoria absoluta, lo que significa que el control de interfaz segura puede acceder a las áreas de memoria directamente sin traducción de dirección. Para permitir un intercambio seguro, se puede crear, mantener y utilizar una estructura de datos, tal como una tabla de integridad, en áreas de memoria donadas desde el anfitrión al control de interfaz segura. La tabla de integridad puede contener una suma de verificación del contenido de cada página y la información relacionada a medida que las páginas se intercambian al disco, por lo que el contenido de la página se puede verificar una vez que la página se vuelve a intercambiar. El tamaño de la tabla de integridad puede depender del tamaño del almacenamiento de un invitado seguro y puede abarcar grandes áreas de memoria. La tabla de integridad y otras estructuras de datos del control de interfaz segura se pueden asignar en tiempo de ejecución y puede que necesiten aparecer como memoria contigua por estructura de datos. Una vez que un sistema se ha ejecutado durante algún tiempo, puede resultar difícil encontrar una gran área contigua de almacenamiento debido a la fragmentación de la memoria. Una o más realizaciones de la presente invención proporcionan una solución alternativa a los problemas de fragmentación de memoria al permitir la asignación de grandes áreas contiguas de almacenamiento para el control de interfaz segura incluso cuando el sistema se ha estado ejecutando durante algún tiempo. En lugar de limitar el control de interfaz segura a solo memoria de direcciones como direcciones absolutas, el control de interfaz segura puede utilizar el almacenamiento virtual en el espacio de direcciones de un hipervisor no confiable para almacenar una o más estructuras de datos, tal como una tabla de integridad. Esto puede permitir que el control de interfaz segura utilice la traducción dinámica de direcciones (DAT) para acceder a estructuras en espacio de direcciones virtuales del anfitrión para un almacenamiento de control de interfaz segura.
De acuerdo con una o más realizaciones de la presente invención, el software utiliza 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 utilizar la instrucción UVC para inicializar el control de interfaz segura, crear el dominio de invitado seguro (por ejemplo, configuración de invitado 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 invitado seguro) y exportar (cifrar y permitir el acceso del anfitrión) una página de invitado segura como parte de las operaciones de páginar dentro o páginar fuera del hipervisor. Además, el invitado 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 los estados de firmware y 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 la interfaz segura proporcionando al mismo tiempo el nivel de seguridad necesario.
De acuerdo con una o más realizaciones de la presente invención, en apoyo de las estructuras de bloque de control necesarias por el control de interfaz segura y el hardware para mantener adecuadamente los entornos de invitado seguro y de hipervisor de soporte, el hipervisor dona almacenamiento al control de interfaz segura mientras inicializa el entorno de invitado seguro. Como resultado, en preparación para 1) inicializar una zona para ejecutar invitados seguros, 2) crear dominios de invitado seguros y 3) crear las CPU seguras que se ejecutan en cada uno de los dominios, el hipervisor emite una instrucción UVC de consulta 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 invitada no segura o segura. Este sigue siendo el caso hasta el momento en que se destruye la entidad asociada (por ejemplo, CPU de invitado segura, zona o dominio de invitado 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 UVC de inicialización y reside en lo que en el presente documento se denomina almacenamiento UV2. Las secciones segunda y tercera de almacenamiento UV, para soportar los bloques de control de configuración de invitado seguro base y variable (para cada dominio de invitado seguro), se donan como parte de la UVC de configuración de invitado seguro de creación y residen en 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 CPU de invitado seguro de creación. A medida que se dona cada una de estas áreas, la interfaz de control segura las marca como seguras (para evitar que cualquier entidad no segura acceda a ellas) y también las registra en la tabla de seguridad de zona como pertenecientes al control de interfaz segura (para evitar que cualquier entidad invitada 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 invitado seguro específico) también se etiqueta con un dominio seguro UV2 único, mientras que los espacios UVS y UVV se etiquetan adicionalmente con el dominio de invitado seguro específico asociado. En este ejemplo, el espacio UVV reside en el espacio virtual del 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 invitado 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. Utilizando los mismos mecanismos de hardware que proporcionan aislamiento entre dominios de invitado seguros, las realizaciones de la presente invención pueden proporcionar un aislamiento similar dentro del almacenamiento UV. Esto garantiza que el control de interfaz segura solo acceda al almacenamiento UV cuando esté previsto y especificado; solo acceda al almacenamiento de invitado seguro para el invitado seguro especificado deseado; y solo acceda al almacenamiento no seguro cuando se especifique. Es decir, el control de interfaz segura puede especificar de manera muy explícita el almacenamiento al que pretende acceder, de modo 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 invitado seguro especificado.
Para proporcionar seguridad, cuando el hipervisor busca de forma transparente la entrada y salida de los datos de invitados seguros, el control de la 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 al enviar y recibir los datos seguros de invitado. 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 regresa a una página segura, se requiere emitir una UVC de nueva conversión de almacenamiento seguro (exportación). El control de la 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 eliminar la página de invitado cifrada.
Además, cada vez que el hipervisor entre en una página segura, debe emitir una UVC de nueva conversión a almacenamiento seguro (importación). El UV, o control de interfaz segura, en respuesta a esta UVC de importación, 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 invitado seguro particular y 5) restablecerá el bloqueo UV. Siempre que una entidad segura realiza un acceso, el hardware realiza verificaciones de autorización en esa página durante la traducción. Estas verificaciones incluyen 1) una verificación para verificar que la página realmente pertenece al dominio de invitado seguro que está tratando de acceder a ella y 2) una verificación para asegurarse de que el hipervisor no ha cambiado el mapeo de anfitrión de esta página mientras esta página ha sido residente en la memoria de invitado. Una vez que una página se marca como segura, el hardware evita el acceso a cualquier página segura por parte del hipervisor o de una VM invitada no segura. Las etapas de traducción adicionales impiden el acceso por otra VM segura y evitan el remapeo por parte del hipervisor.
Volviendo ahora a la FIG. 1, se muestra generalmente una tabla 100 para seguridad de zona de acuerdo con una o más realizaciones de la presente invención. La tabla de seguridad de zona 100 mostrada en la FIG. 1 se mantiene mediante el control de interfaz segura y se utiliza 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 de seguridad de zona 100 está indexada por la dirección absoluta 110 de anfitrión. Es decir, hay una entrada para cada página de almacenamiento absoluto del anfitrión. Cada entrada incluye información que se utiliza 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 de seguridad de zona 100 incluye una ID de dominio seguro 120 (identifica el dominio seguro asociado a esta página); un bit UV 130 (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) (utilizado 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 (SH) compartido 150 (indica que la página es compartida con el hipervisor no seguro) y una dirección virtual de anfitrión 160 (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 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 la 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é utilizando el invitado.
La traducción dinámica de direcciones (DAT) se utiliza para mapear el almacenamiento virtual al almacenamiento real. Cuando una VM invitada se ejecuta como un invitado páginable bajo el control de un hipervisor, el invitado utiliza DAT para gestionar las páginas que residen en su memoria. Además, el anfitrión, de forma independiente, utiliza DAT para gestionar aquellas páginas de invitado (junto con sus propias páginas) cuando las páginas residen en su memoria. El hipervisor utiliza DAT para proporcionar aislamiento y/o compartir almacenamiento entre diferentes VM, así como para evitar que el invitado acceda al almacenamiento de hipervisor. El hipervisor tiene acceso a todo el almacenamiento de los invitados cuando los invitados 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 utilizarse 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 que cada dirección virtual se traduzca a una dirección absoluta asociada que identifica esa dirección con una ubicación de bytes en almacenamiento.
El DAT utiliza 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 páginación hacia fuera de una página, por ejemplo, para incluir otra página. Cuando la página esté páginada hacia fuera, 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 páginada hacia fuera, 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 páginará hacia dentro 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 utiliza 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 de direcciones virtuales 202 y 204 de ejemplo y un espacio de direcciones absoluto 206 para realizar la DAT se muestran generalmente de acuerdo con 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 de direcciones virtual 202 (definido por el elemento de control de espacio de direcciones (ASCE) A 208) y el espacio de direcciones virtual 204 (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 de páginas 232a, 232b), utilizando 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, utilizando el ASc E 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 utilizada para soportar una VM que se ejecuta bajo un hipervisor de acuerdo con 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 del invitado A (definido por el ASCE (GASCE) A 304 del invitado) y el espacio de direcciones virtuales B 306 del invitado 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 invitado A, se mapean, por el gestor de almacenamiento del invitado A, utilizando GASCEA 304 a las páginas absolutas de invitado 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 invitado B, se mapean, independientemente, por el gestor de almacenamiento del invitado B, utilizando GASCEB 308 a las páginas absolutas de invitado B1.HV 360b1 y B2.HV 360b2, respectivamente. En este ejemplo, estas páginas absolutas de invitado se mapean directamente al espacio de direcciones virtuales de anfitrión compartido 325 y, posteriormente, pasan a través de una traducción DAT de anfitrión adicional a un espacio de dirección absoluta de anfitrión 330. Como se muestra, las direcciones virtuales del anfitrión A1.HV 340a1, A3.HV 340a3 y B1.HV 360b1 se mapean, por el gestor de almacenamiento del anfitrión utilizando el anfitrión ASCE (HASCE) 350 a A1.HA 370a1, A3.HA 370a3 y B1.HA 370b1. La dirección virtual de anfitrión A2.HV 340a2, que pertenece al invitado A, y la B2.HV 360b2, que pertenece al invitado B, se mapean a la misma página absoluta de anfitrión AB2.HA 380. Esto permite que los datos se compartan entre estos dos invitados. Durante la traducción DAT de invitado, cada una de las direcciones de la tabla de invitado se trata como una absoluta de invitado y se somete a una traducción DAT de anfitrión anidada adicional.
Las realizaciones de la presente invención descritas en el presente documento proporcionan una protección de almacenamiento UV e invitado seguro. El acceso al almacenamiento seguro por parte de los invitados no seguros y al hipervisor está prohibido. El hipervisor proporciona que, para una página de invitado segura residente dada, ocurra lo siguiente. La dirección absoluta del 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 invitado seguro. El mapeo DAT de hipervisor (virtual de anfitrión a absoluto de anfitrión) asociado a una página de invitado segura dada no cambia mientras se página hacia dentro. La página absoluta del anfitrión asociada a una página de invitado segura se mapea para un único invitado seguro.
También está prohibido compartir de almacenamiento entre invitados seguros de acuerdo con una o más realizaciones de la presente invención. El almacenamiento se comparte entre un único invitado seguro y el hipervisor bajo el control del invitado seguro. El almacenamiento UV es un almacenamiento seguro y es accesible mediante el control de interfaz segura, pero no por los invitados/anfitriones. El hipervisor mapea el almacenamiento al control de interfaz segura. De acuerdo con una o más realizaciones de la presente invención, cualquier intento de violación de estas reglas está prohibido por el hardware y el control de interfaz segura.
Volviendo ahora a la FIG. 4, se muestra generalmente un ejemplo de mapeo de almacenamiento de invitado seguro de acuerdo con 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 invitado seguro A y el invitado 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 invitado A, como la B2.HV 360b2, que pertenece al invitado B, se mapean a la misma página absoluta de anfitrión AB2.HA 380. En el ejemplo de almacenamiento de invitado seguro de la FIG. 4, la dirección virtual de anfitrión A2.HV 340a2, que pertenece al invitado A, se mapea a la dirección absoluta de anfitrión A2.HA 490a, mientras que la B2.HV 360b2, que pertenece al invitado B, se mapea a su propia B2.HA 490b. En este ejemplo, no se comparte nada entre invitados seguros.
Aunque la página de invitado segura reside en el disco, está cifrada. Cuando el hipervisor página dentro de una página de invitado segura, emite una llamada UV (UVC), lo que hace que el control de interfaz 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 invitado seguro apropiado (el invitado 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 al intentar acceder a la página de invitado segura. Cuando el hipervisor página fuera de una página de invitado, se emite una UVC similar que cifra la página de invitado (a menos que se comparta) antes de marcar la página de invitado 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, el control de la interfaz segura marca cada una de las páginas absolutas de anfitrión como segura cuando el hipervisor las página hacia dentro. Esto evita que los invitados no seguros y el hipervisor accedan a ellas. Las páginas absolutas de anfitrión K, P y M se registran como pertenecientes al invitado A cuando el hipervisor las página hacia dentro; las páginas absolutas de anfitrión L y N se registran al invitado B cuando el hipervisor las página hacia dentro. Las páginas compartidas, páginas compartidas entre un único invitado seguro y el hipervisor, no se cifran ni descifran durante la páginación. No se marcan como seguras (permiten el acceso por el hipervisor), pero se registran con un único dominio de invitado seguro en la tabla de seguridad de zona.
De acuerdo con una o más realizaciones de la presente invención, cuando un invitado no seguro o el hipervisor intentan acceder a una página que es propiedad de un invitado 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.
De acuerdo con una o más realizaciones, cuando una entidad segura intenta acceder a una página, el hardware realiza una verificación de traducción adicional que verifica que el almacenamiento pertenece realmente a ese invitado 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 invitado seguro puede acceder al almacenamiento que no esté marcado como seguro siempre y cuando las verificaciones 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 de acuerdo con 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 DAT 525 de anfitrión; se observa que las líneas punteadas representan el mapeo a través de la traducción DAT 525) a un espacio 530 de direcciones absolutas del hipervisor (anfitrión). Por ejemplo, la FIG. 5 ilustra el uso compartido de almacenamiento absoluto de anfitrión por dos espacios de direcciones virtuales de anfitrión diferentes y también el uso compartido de una de esas direcciones virtuales de anfitrión no solo entre dos invitados 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 ASCE primario de anfitrión (HPASCE) 591 y el a Sc E de inicio de anfitrión (HHASCE) 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 invitado A A1.HV, una página absoluta de invitado A A2.HV, una página absoluta de invitado 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.
De acuerdo con una o más realizaciones de la presente invención, se registra todo el almacenamiento de invitado seguro (por ejemplo, invitado seguro A e invitado seguro B) en la tabla de seguridad de zona descrita en el presente documento como perteneciente a una configuración de invitado 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 invitado 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 invitado seguro asociado. De acuerdo con 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. De acuerdo con 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 invitado = 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 invitado A A1.HV se mapea a una absoluta de anfitrión A1.HA que pertenece un invitado seguro A; la página absoluta de invitado A A2.HV se mapea a una absoluta de anfitrión A2.HA que pertenece al invitado seguro A; la página absoluta de invitado B B1.HV se mapea a una absoluta de anfitrión B1.HA que pertenece al invitado 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 direcciones de anfitrión porque 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 seguro; 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 operación, si un invitado 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 invitado no seguro o el hipervisor intentan acceder a una página segura (incluidas las asignadas al control de interfaz segura), el hardware presenta al hipervisor una excepción de acceso de 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 invitado seguro en lugar del control de interfaz segura, o hay una disparidad en el par de direcciones de anfitrión que se utiliza con el par registrado) en un acceso de control de interfaz segura, se presenta una verificació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 invitado seguro A) y B1.HV (que pertenecen al invitado 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 invitado seguro A y al invitado seguro B se marcan como seguras y se registran en la tabla de seguridad de zona 100 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 invitados seguros, debe donar almacenamiento de anfitrión al control de interfaz segura para usar en los bloques de control seguros necesarios para soportar estos invitados 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, las páginas absolutas de anfitrión U1.HA y U2.HA absolutas UV seguras son 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 de seguridad de zona 100 mostrada en la FIG. 1 como perteneciente al control de interfaz segura y con un dominio seguro asociado. Como 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 de seguridad de zona 100.
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 de sistema 600 con respecto a una memoria de control de interfaz segura de acuerdo con una o más realizaciones de la presente invención. El esquema de sistema 600 ilustra un espacio 630 de direcciones absolutas de hipervisor (anfitrión) que incluye una página absoluta de anfitrión A2.HA invitado seguro A (para A2.HV); una página absoluta anfitrión B1.HA, invitado 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 invitado seguro A (para A1.HV).
Volviendo ahora a la FIG. 7, se muestra generalmente un flujo de proceso 700 para una operación de importación de acuerdo con una o más realizaciones de la presente invención. Cuando un invitado seguro accede a una página que ha sido paginada hacia fuera por el hipervisor, se produce una secuencia de eventos tal como la que se muestra en el flujo de proceso 700 para volver a introducir esa página de forma segura. El flujo de proceso 700 comienza en el bloque 705, donde el invitado seguro accede a la página virtual de invitado. 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 de interrupción de programa 11 (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 invitado (véase el bloque 720) y se página hacia dentro la página de invitado 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 reenvía después al invitado seguro. En el bloque 740, el invitado seguro vuelve a acceder a la página segura de invitado. El fallo de página ya no existe, pero dado que se trata de un acceso de invitado seguro y la página no está marcada como segura en la tabla de seguridad de zona 100 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 invitado a esta página segura hasta que se haya emitido la importación necesaria. A continuación, el flujo de proceso 700 pasa a “A”, que está conectado a la FIG. 8.
Volviendo ahora a la FIG. 8, se muestra generalmente un flujo de proceso 800 para realizar una operación de importación de acuerdo con 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 UVC de importación (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 invitados seguros no pueden acceder a la misma.
Como parte de la UVC de importación, el firmware confiable que actúa como control de interfaz segura verifica si esta página ya está bloqueada por el control de interfaz segura (ver el bloque de decisión 810). Si lo está, el flujo de proceso 800 pasa al bloque 820. En el bloque 820, se regresa un código de retorno “ocupado” al hipervisor que, en respuesta, retrasará (véase el bloque 825) y volverá a emitir la UVC de importación (el flujo de proceso 800 regresa al bloque 805). Si la página aún no está bloqueada, el flujo de proceso 800 pasa al bloque de decisión 822.
En el bloque de decisión 822, el control de interfaz segura verifica si la página es una página que se comparte con el hipervisor no seguro. Si se comparte (el flujo de proceso 800 pasa al bloque de decisión 824), el control de interfaz segura registra la dirección absoluta de anfitrión en la tabla de seguridad de zona con el dominio de invitado seguro asociado, la dirección virtual de anfitrión y como compartida. Esta página permanece marcada como no segura. Esto completa la UVC de importación y la página ahora está disponible para que acceda el invitado. El procesamiento continúa con el hipervisor que reenvía al invitado (bloque 830) y el invitado 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 de proceso 800 pasa al bloque 840), el control de interfaz segura marcará la página como segura, de modo que el hipervisor ya no pueda acceder a la página. En el bloque 845, el control de interfaz segura bloquea la página, de modo que ninguna otra UVC puede modificar el estado de la página. Una vez establecido el bloqueo (en el bloque 850), el control de la interfaz segura verificará que el contenido de la página de invitado 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 invitado y la dirección virtual de anfitrión apropiados para completar el par HV->HA de direcciones de anfitrión. Esto permite el acceso del invitado y completa la UVC.
Volviendo ahora a la FIG. 9, un flujo de proceso 900 con respecto a una operación de memoria donada se muestra generalmente de acuerdo con una o más realizaciones de la presente invención. El flujo de proceso 900 comienza en el bloque 905, donde un hipervisor emite una UVC de consulta al control de interfaz segura. En el bloque 910, el control de interfaz segura devuelve datos (por ejemplo, UVC de consulta). Estos datos pueden incluir una cantidad de almacenamiento base absoluto de anfitrión específico de zona requerida; una cantidad de almacenamiento base absoluto de anfitrión específico del dominio de invitado seguro requerida; una cantidad de almacenamiento variable virtual de anfitrión específico del dominio de invitado seguro requerida por MB; y/o una cantidad de almacenamiento base absoluto de anfitrión específico de CPU de invitado seguro requerida.
En el bloque 915, el hipervisor reserva el almacenamiento base específico de zona absoluto de anfitrión (p. ej., en base a un tamaño devuelto por la UVC de consulta). En el bloque 920, el hipervisor emite una inicialización al control de interfaz segura. En este sentido, el hipervisor puede emitir una UVC de inicialización que proporciona almacenamiento donado para los bloques de control UV que se necesitan para coordinar entre las configuraciones de invitado seguro para toda la zona. La UVC de inicialización especifica un origen de almacenamiento base específico de zona.
En el bloque 925, el control de interfaz segura implementa la inicialización (por ejemplo, UVC de inicialización) registrando el almacenamiento donado a UV y marcándolo como seguro. Para la UVC de inicialización, 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 invitado 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 de dominio de invitado seguro). Por ejemplo, el hipervisor reserva almacenamiento base y variable (p. ej., en base al tamaño de almacenamiento de dominio de invitado seguro) específico de dominio de invitado seguro (por ejemplo, un tamaño devuelto por la UVC de consulta). 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 UVC de configuración de invitado seguro de creación que especifica el origen de almacenamiento base y variable específico de dominio de invitado seguro. Además, el UVC de configuración de invitado seguro de creación proporciona almacenamiento donado para los bloques de control UV que se necesitan para soportar esta configuración de invitado segura.
En el bloque 940, el control de interfaz segura implementa la configuración de creación (por ejemplo, UVC de configuración de invitado seguro de creación). Para la UVC de configuración de invitado seguro de creación, 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 invitado 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 invitado seguro (por ejemplo, un tamaño devuelto por la UV de consulta). En el bloque 950, el hipervisor especifica un origen de almacenamiento. Por ejemplo, el hipervisor emite a la UV la CPU invitado seguro de creación que especifica un origen de almacenamiento base específico de CPU de invitado seguro. En el bloque 955, el control de interfaz segura implementa la CPU de creación (por ejemplo, UVC de CPU de invitado seguro de creación). Para la UVC de CPU de invitado seguro de creación, 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 invitado seguro asociado y sin un par de direcciones virtuales de anfitrión asociadas.
Volviendo ahora a la FIG. 10, un flujo de proceso 1000 con respecto a una transición de páginas de hipervisor no seguras a páginas seguras de un control de interfaz segura se muestra generalmente de acuerdo con una o más realizaciones de la presente invención. En el flujo de proceso 1000, 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).
Una entidad no segura (incluido el hipervisor) puede acceder a las páginas A, B y C del hipervisor (no seguras). 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 (p. ej., la tabla de seguridad de zona 100 mostrada en la FIG. 1) como no seguras y no compartidas. En la flecha 1005, se emite una UVC de inicialización, que realiza la transición de la página de invitado A a la página de almacenamiento real de control de interfaz segura 1010 asociada a una zona completa (UV2). El almacenamiento real de control de interfaz segura 1010 puede marcarse como seguro y registrarse en una tabla de seguridad de zona (p. ej., la tabla de seguridad de zona 100 mostrada en la FIG. 1) como UV sin dominio de invitado 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 real de control de interfaz segura 1010 como real.
Desde la página B de hipervisor (no segura), en la flecha 1025, se emite la UVC de configuración SG de creación o CPU de SG de creación, que realiza la transición de esta página a un almacenamiento real de control de interfaz segura 1030 asociado a un dominio de invitado seguro (UVS). El almacenamiento real de control de interfaz segura 1030 puede marcarse como seguro y registrarse en una tabla de seguridad de zona (p. ej., la tabla de seguridad de zona 100 mostrada en la FIG. 1) como UV con un dominio de invitado seguro asociado y sin mapeo de hipervisor a absoluto de anfitrión (HV->HA) (es decir, bit DA=1). Se observa que el control de interfaz segura puede acceder al almacenamiento real de control de interfaz segura 1010 como real en nombre de un dominio de invitado seguro.
Desde la página B de hipervisor (no segura), en la flecha 1045, se emite la UVC de configuración SG de creación, que realiza la transición de esta página a un almacenamiento virtual de control de interfaz segura 1050 asociado a un dominio de invitado seguro (UVV). El almacenamiento virtual de control de interfaz segura 1050 puede marcarse como seguro y registrarse en una tabla de seguridad de zona (p. ej., la tabla de seguridad de zona 100 mostrada en la FIG.
1) como UV con un dominio de invitado seguro y mapeo de hipervisor a absoluto de anfitrión (HV->HA). Se observa que se puede acceder al almacenamiento virtual de control de interfaz segura 1050 como virtual UV en nombre de un dominio invitado seguro.
Volviendo ahora a la FIG. 11, se representa un flujo de proceso 1100 con respecto a un acceso de almacenamiento seguro realizado por el programa o el control de interfaz segura de acuerdo con una o más realizaciones. Esto representa la situación en la que el control de interfaz segura va a acceder al almacenamiento de invitado 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 de proceso 1100 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 de proceso 1100 pasa al bloque de decisión 1112 (como se muestra mediante la flecha NO). En el bloque de decisión 1112, el control de interfaz segura determina si está accediendo a un almacenamiento de invitado seguro. Si este no es un acceso al almacenamiento de invitado seguro, entonces el flujo de proceso 1100 pasa a “B” (que está conectado al flujo de proceso 1200 de la FIG. 12), que utilizará el ajuste predeterminado para accesos no seguros. Si este es un acceso al almacenamiento de invitado seguro, entonces el flujo de proceso 1100 pasa al bloque de decisión 1113, donde el control de interfaz segura determina si se está utilizando un dominio de invitado seguro predeterminado. Si es así, entonces el flujo de proceso 1100 procede a pasar a “B” (que está conectado al flujo de proceso 1200 de la FIG. 12), que utilizará el ajuste predeterminado para accesos de invitado seguros. Si no, entonces el flujo de proceso 1100 pasa al bloque 1114. En el bloque 1114, se carga un dominio de invitado seguro apropiado en el registro de dominio seguro SG (y pasa a “B”, que está conectado al flujo de proceso 1200 de la FIG. 12).
Si este es un acceso al almacenamiento de control de interfaz segura, entonces el flujo de proceso 1100 pasa al bloque 1120 (como se muestra mediante la flecha SÍ). En el bloque 1120, el acceso se etiqueta como UV seguro (p. ej., utiliza el registro de dominio seguro UV).
El flujo de proceso 1100 pasa entonces al bloque de decisión 1130, donde el control de interfaz segura determina si este es un acceso al espacio UVV (p. ej., tabla variable de configuración SG). Si es un acceso al espacio UVV, entonces el flujo de proceso 1100 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 invitado 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 de decisión 1130, si este no es un acceso al espacio UVV, entonces el flujo de proceso 1100 pasa al bloque 1140 (como se muestra mediante la flecha NO). En el bloque 1140, el acceso se etiqueta como real.
En el bloque de decisión 1150, el control de interfaz segura determina si este es un acceso al espacio UVS (p. ej., configuración SG o la tabla de CPU). Si este es un acceso al espacio UVS, entonces el flujo de proceso 1100 pasa al bloque 1136 (como se muestra mediante la flecha SÍ). Si este no es un acceso al espacio UVS, entonces el flujo de proceso 1100 pasa al bloque 1170 (como se muestra mediante la flecha NO). Este acceso sería entonces un acceso al espacio UV2 (p. ej., 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 de proceso 1200 de acuerdo con una o más realizaciones de la presente invención. Cuando se envía un invitado, el firmware Entrada SIE puede indicar al hardware que se está ejecutando un invitado (p. ej., modo invitado activo) y puede indicar si el invitado es seguro. Si el invitado es seguro, el dominio de invitado seguro asociado se puede cargar en el hardware (p. ej., 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 de proceso 1200. En el bloque 1205, el hardware puede determinar si la máquina se está ejecutando actualmente en modo de invitado 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 invitado en el bloque 1205, el acceso puede etiquetarse como un acceso de invitado en el bloque 1220 y determinar además si el invitado actual es un invitado seguro en el bloque 1225. Si el invitado no es seguro, el acceso puede etiquetarse como no seguro en el bloque 1215. Si el invitado es seguro, el hardware puede etiquetar al invitado como seguro en el bloque 1230, lo que puede asociar al invitado seguro con el registro de dominio seguro SG que se cargó cuando se envió el invitado seguro. Tanto para los invitados seguros como para los no seguros, se puede verificar el estado DAT en el bloque 1235. El acceso puede etiquetarse como real en el bloque 1240, si el DAT está activado. El acceso se puede etiquetar como virtual en el bloque 1245, si el DAT está desactivado. 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 de proceso 1300 de acuerdo con 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 invitado y, de ser así, y el acceso es virtual en el bloque 1310, entonces la DAT de invitado se puede realizar en el bloque 1315. Durante la traducción DAT de invitado, se pueden realizar búsquedas intermedias anidadas para las tablas DAT de invitado. Las búsquedas de la tabla se pueden etiquetar como reales de invitado 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 de proceso 1300. Después de realizar la DAT de invitado para un acceso etiquetado como virtual de invitado en el bloque 1315 y para cualquier acceso etiquetado como real de invitado en el bloque 1310 (virtual=No), se pueden aplicar en el bloque 1320 prefijación de invitado y desplazamiento de memoria de invitado. Al completar el proceso de traducción de invitado, la dirección resultante se puede etiquetar como virtual de anfitrión y como segura si la traducción original de invitado 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 (invitado=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 de proceso 1400 de acuerdo con 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 el control de interfaz segura al acceder al almacenamiento UV. Si el almacenamiento está registrado como almacenamiento UV seguro en el bloque 1410, las verificaciones de protección pueden continuar ya que se puede realizar para cualquier acceso seguro, excepto que el registro de dominio seguro UV (configurado por el control de interfaz segura antes de realizar un acceso UV seguro) puede usarse como el dominio seguro especificado para la verificació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 invitado 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 invitado 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 invitado 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 invitado seguro en el bloque 1440 o un acceso UV seguro al almacenamiento registrado como almacenamiento UV seguro en el bloque 1410, el hardware puede verificar 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 el control de interfaz segura en base al almacenamiento UV seguro al que se accede) y, para un acceso de invitado seguro, el dominio seguro especificado se obtiene del registro de dominio seguro SG (cargado cuando se enví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 invitado 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 verificació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 invitado 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 invitado 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 invitado 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 verificar 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 verificaciones de registro y el mapeo del almacenamiento a través de la interfaz de tabla de seguridad de zona 1485. 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 la FIG. 15, un flujo de proceso 1500 para una determinación del modo de direccionamiento se muestra generalmente de acuerdo con una o más realizaciones de la presente invención. Como se describió anteriormente con respecto a la FIG. 10, un control de interfaz segura puede acceder a una página, tal como la página B en UVS, que se estableció como almacenamiento real/absoluto accesible a través del almacenamiento real de control de interfaz segura 1030. Además, el control de interfaz segura puede acceder a una página, tal como la página C en UVV, que se estableció como almacenamiento virtual de control de interfaz segura 1050 en el flujo de proceso 1000 de la FIG. 10. El flujo de proceso 1100 de la FIG. 11 puede determinar si se debe realizar un acceso al espacio UVV, tal como para una tabla de integridad, en el bloque 1130 o si se debe realizar un acceso al espacio UVS en el bloque 1150. El flujo de proceso 1500 ilustra además un proceso de traducción de dirección que puede soportar el flujo de proceso 1100 de la FIG. 11. En el bloque 1505 de la FIG. 15, cuando el control de interfaz segura necesita acceder a una o más estructuras de datos relacionadas con un invitado seguro, tal como una tabla de integridad o la tabla de seguridad de zona 100 de la FIG. 1, el flujo 1500 del proceso pasa al bloque 1510. En el bloque 1510, el control de interfaz segura puede determinar si el acceso está asociado a una dirección de almacenamiento virtual. En el bloque 1515, si el acceso está asociado a una dirección de almacenamiento virtual, el control de interfaz segura puede traducir la dirección de almacenamiento virtual utilizando el espacio de direcciones virtuales del hipervisor, tal como a través de una tabla DAT. En el bloque 1520, el control de la interfaz segura y/o el hardware/firmware de soporte pueden realizar una o más verificaciones para asegurar que se devuelva un mapeo esperado de la dirección de almacenamiento virtual (p. ej., un mapeo que se registró previamente para esta página absoluta) desde el acceso a través de la DATA del hipervisor. Como ejemplo, el control de interfaz segura puede confirmar que el hipervisor no cambió un mapeo de anfitrión asociado de una estructura de datos como se configuró anteriormente. En el bloque 1525, una vez que se ha determinado la dirección absoluta a través de una tabla DAT del hipervisor, o si el acceso ya estaba asociado a una dirección absoluta (p. ej., bloque 1510 = No), el control de interfaz segura puede acceder a la estructura de datos en la dirección absoluta.
Volviendo ahora a la FIG. 16, un flujo de proceso 1600 para usar el espacio de direcciones virtuales del anfitrión para el almacenamiento seguro del control de interfaz se muestra generalmente de acuerdo con una o más realizaciones de la presente invención. El flujo de proceso 1600 es una variación del flujo de proceso 1500 de la FIG. 15. En el bloque 1605, un control de interfaz segura de un sistema informático puede recibir una solicitud de acceso para una estructura de datos relacionada con una entidad segura en un dominio seguro del sistema informático. La solicitud de acceso puede ser parte de una secuencia interna de gestión de seguridad a través del control de interfaz segura. La entidad segura puede ser uno o más invitados seguros, tales como VM, o contenedores seguros. En el bloque 1610, el control de interfaz segura puede verificar una dirección de almacenamiento virtual asociada a una ubicación de la estructura de datos. La estructura de datos relacionada con la entidad segura en el dominio seguro se puede distribuir entre una pluralidad de páginas de memoria. Las páginas de memoria se pueden donar por una entidad no segura en una pluralidad de ubicaciones fijas para uso seguro por el control de interfaz segura. Las páginas de memoria donadas por la entidad no segura pueden residir en un rango contiguo de direcciones virtuales. La entidad no segura puede ser un hipervisor o sistema operativo configurado para alojar uno o más invitados o contenedores seguros como la entidad segura. La verificación del mapeo de direcciones de almacenamiento virtual puede incluir inspeccionar una tabla de seguridad de zona 100 de la FIG. 1 para determinar si una comparación de direcciones virtuales asociada a una dirección virtual de anfitrión está habilitada o deshabilitada (p. ej., estado del bit DA 140).
En el bloque 1615, el control de interfaz segura puede realizar una traducción de dirección utilizando un espacio de direcciones virtual de una entidad no segura del sistema informático en base a la determinación de que la ubicación de la estructura de datos está asociada a una dirección de almacenamiento virtual. La traducción de dirección se puede realizar utilizando cualquiera de los procesos y elementos como se describió anteriormente. El control de interfaz segura puede verificar un mapeo de la dirección de almacenamiento virtual proporcionada por la entidad no segura. La verificación del mapeo de la dirección de almacenamiento virtual puede incluir la verificación de un cambio en el mapeo en comparación con un mapeo registrado anterior. El mapeo por tablas de traducción de dirección se pueden configurar para presentar las páginas de memoria que se distribuyen en ubicaciones absolutas no contiguas como direcciones virtuales contiguas. Por lo tanto, las estructuras de datos que no pueden caber en un bloque contiguo de memoria absoluta pueden aparecer como contiguas en el espacio de direcciones virtuales del anfitrión.
En el bloque 1620, el control de interfaz segura puede acceder a la estructura de datos en base a la dirección absoluta resultante de la traducción de dirección. Alternativamente, el control de interfaz segura puede acceder a la estructura de datos directamente utilizando una dirección absoluta en base a la determinación de que la ubicación de la estructura de datos no está asociada a la dirección de almacenamiento virtual.
Debe entenderse que, aunque esta divulgación incluye una descripción detallada de la informática en la nube, la implementación de las enseñanzas mencionadas en el presente documento no se limita a un entorno de informática 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 (p. ej., 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 de nube puede incluir al menos cinco características, al menos tres modelos de servicio y al menos cuatro modelos de implementación.
Las características son las siguientes:
Autoservicio bajo demanda: un consumidor de la nube puede aprovisionar de forma unilateral capacidades informáticas, como el tiempo de servidor y almacenamiento en 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 a través de una red y se accede a través de mecanismos estándar que promueven el uso por plataformas cliente heterogéneas ligeras o pesadas (p. ej., 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 utilizando un modelo multiinquilino, con diferentes recursos físicos y virtuales asignados y reasignados dinámicamente según la demanda. Existe una sensación de independencia de ubicación 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 de forma rápida y elástica, en algunos casos de forma automática, para escalarlas horizontalmente de forma rápida y liberarlas rápidamente para escalarlas dentro de forma rápida. Para el consumidor, las capacidades disponibles para el aprovisionamiento a menudo parecen ser ilimitadas y pueden adquirirse en cualquier cantidad y 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 (p. ej., 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 utilizado.
Los modelos de servicio son los siguientes:
Software como un servicio (SaaS): la capacidad proporcionada al consumidor es para utilizar 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 (p. ej., correo electrónico basado en web). El consumidor no gestiona ni controla la infraestructura en la nube subyacente, que incluye la red, los servidores, los sistemas operativos, el almacenamiento o incluso las capacidades de las aplicaciones individuales, con la posible excepción de los ajustes limitados de configuración de aplicación específicos del usuario.
Plataforma como un servicio (PaaS): la capacidad proporcionada al consumidor es para implementar 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 en la nube subyacente, que incluye redes, servidores, sistemas operativos o almacenamiento, pero tiene control sobre las aplicaciones implementadas y, posiblemente, las configuraciones del entorno de alojamiento de aplicaciones.
Infraestructura como un servicio (IaaS): la capacidad proporcionada al consumidor es para proporcionar procesamiento, almacenamiento, redes y otros recursos informáticos fundamentales donde el consumidor es capaz de implementar y ejecutar software arbitrario, 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 implementadas y, posiblemente, un control limitado de los componentes de conexión en red seleccionados (p. ej., los firewalls del anfitrión).
Los modelos de implementación son los siguientes:
Nube privada: la infraestructura en la nube se opera únicamente para una organización. Se puede gestionar por la organización o 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 preocupaciones compartidas (por ejemplo, misión, requisitos de seguridad, políticas y consideraciones de cumplimiento). Se puede gestionar por las organizaciones o un tercero y puede existir en las instalaciones o fuera de las instalaciones.
Nube pública: la infraestructura en la nube está disponible para el público en general o para 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 (privadas, comunitarias o públicas) que siguen siendo entidades únicas, pero están unidas por una tecnología estandarizada o patentada que permite la portabilidad de los datos y aplicaciones (p. ej., ráfaga en la nube para el equilibrio de cargas entre nubes).
Un entorno de informática en la nube está orientado al servicio con un enfoque en ausencia de estado, 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 de informática en la nube 50 ilustrativo. Como se muestra, el entorno de informática en la nube 50 incluye uno o más nodos de informática en la nube 10 con los que pueden comunicarse los dispositivos informáticos locales utilizados por los consumidores de la nube, tales como, por ejemplo, asistente digital personal (PDA) o teléfono celular 54A, ordenador de sobremesa 54B, ordenador portátil 54C y/o el sistema informático de automóvil 54N. Los nodos 10 pueden comunicarse entre sí. 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, tal como se describió anteriormente, o una combinación de las mismas. Esto permite que el entorno de informática en la nube 50 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 informáticos 54A-N mostrados en la FIG. 17 están destinados a ser únicamente ilustrativos y que los nodos informáticos 10 y el entorno informático en la nube 50 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, utilizando un navegador web).
Haciendo referencia ahora a la FIG. 18, se muestra un conjunto de capas de abstracción funcionales proporcionadas por el entorno de informática en la nube 50 (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 las funciones correspondientes:
La capa de hardware y software 60 incluye componentes de hardware y software. Ejemplos de componentes de hardware incluyen: ordenadores centrales 61; servidores basados en arquitectura RISC (ordenador de conjunto de instrucciones reducido) 62; servidores 63; servidores blade 64; dispositivos de almacenamiento 65; y redes y componentes de red 66. En algunas realizaciones, los componentes de software incluyen el software de servidor de aplicaciones de red 67 y el software de base de datos 68.
La capa de virtualización 70 proporciona una capa de abstracción a partir de la cual se pueden proporcionar los siguientes ejemplos de entidades virtuales: servidores virtuales 71; almacenamiento virtual 72; redes virtuales 73, incluidas redes privadas virtuales; aplicaciones virtuales y sistemas operativos 74; y clientes virtuales 75.
En un ejemplo, la capa de gestión 80 puede proporcionar las funciones que se describen a continuación. El aprovisionamiento de recursos 81 proporciona una adquisición dinámica de recursos informáticos y otros recursos que se utilizan para realizar tareas dentro del entorno de informática 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 en el entorno de informática 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 verificación de identidad para los consumidores y las tareas en la nube, así como protección para los datos y otros recursos. El portal de usuario 83 proporciona acceso al entorno de informática en la nube para consumidores y administradores de sistemas. La gestión de nivel de servicio 84 proporciona la asignación y gestión de recursos de informática en la nube de manera que se cumplan los niveles de servicio requeridos. La planificación y el cumplimiento del Acuerdo de Nivel de Servicio (SLA) 85 proporcionan un acuerdo previo y la adquisición de recursos de informática en la nube para los que se anticipa un requisito futuro de acuerdo con un SLA.
La capa de cargas de trabajo 90 proporciona ejemplos de funcionalidad para la que se puede utilizar el entorno de informática en la nube. Ejemplos de cargas de trabajo y funciones que se pueden proporcionar a partir de esta capa se incluyen: mapeo y navegación 91; desarrollo de software y gestión del ciclo de vida 92; distribución de educación en el aula virtual 93; procesamiento de análisis de datos 94; procesamiento de transacciones 95; y control del acceso al almacenamiento seguro asociado a una máquina virtual 96. 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 de acuerdo con una o más realizaciones de la presente invención. El sistema 1900 incluye un nodo 10 de ejemplo (p. ej., un nodo de alojamiento) que está en comunicación directa o indirecta con uno o más dispositivos cliente 20A-20E, 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 la implementación de una o más VM 15 (15A-15N). El nodo 10 incluye además una capa de hardware/firmware 13 que incluye un control de interfaz segura 11. El control de interfaz segura 11 incluye uno o más módulos de hardware y firmware que facilitan que el hipervisor 12 proporcione uno o más servicios a las máquinas virtuales 15. Puede haber comunicaciones entre el hipervisor 12 y el control de interfaz segura 11; el control de interfaz segura 11 y una o más VM 15; el hipervisor 12 y la una o más VM 15; y el hipervisor 12 a las VM 15 a través del control de interfaz segura 11. Para facilitar un entorno de VM seguro, el nodo de alojamiento 10, según una o más realizaciones de la presente invención, no incluye ninguna comunicación directa entre el hipervisor 12 y las una o más VM 15.
Por ejemplo, el nodo 10 puede facilitar que un dispositivo cliente 20A implemente una o más de las VM 15A-15N. Las VM 15A-15N pueden implementarse en respuesta a solicitudes respectivas de los distintos dispositivos cliente 20A-20E. Por ejemplo, la VM 15A puede implementarse mediante el dispositivo cliente 20A, la VM 15B puede implementarse mediante el dispositivo cliente 20B y la VM 15C puede implementarse mediante el dispositivo cliente 20C. El nodo 10 también puede facilitar que un cliente aprovisione un servidor físico (sin ejecutarlo como una VM). Los ejemplos descritos en el presente documento 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 cliente 20A-20E 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 implementan por los dispositivos cliente 20A-20E que pertenecen a la entidad. En otro ejemplo, los dispositivos cliente 20A-20E pueden pertenecer a entidades distintas. Por ejemplo, una primera entidad puede poseer del dispositivo cliente 20A, 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 utilizando 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 PR/SM LPAR, proporcionan aislamiento entre particiones, facilitando así que el nodo 10 implemente dos o más VM 15A-15N para diferentes entidades en el mismo nodo físico 10 en diferentes particiones lógicas. El hipervisor PR/SM LPAR se implementa en un firmware interno confiable con hardware específico para proporcionar este aislamiento.
Un dispositivo cliente 20A de los dispositivos cliente 20A-20e 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 de servidor o cualquier otro aparato de comunicación que solicite la implementación de una VM por el hipervisor 12 del nodo 10. El dispositivo cliente 20A puede enviar una solicitud de recepción por parte del 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 implementa en respuesta a una solicitud del dispositivo cliente 20A desde los dispositivos cliente 20A-20e. 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 IBM z Systems®, Oracle's VM Server, Citrix's XenServer, VMware's ESX, el hipervisor Microsoft Hyper-V 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 del presente documento de acuerdo con una o más realizaciones de la invención. El nodo 10 puede ser una plataforma informática electrónica que comprende y/o emplea cualquier número y combinación de dispositivos informáticos y redes que utilizan diversas tecnologías de comunicación, como se describe en el presente documento. 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, 2001 b, 2001c, etc. El procesador 2001, también denominado circuito de procesamiento, microprocesador, unidad informática, se acopla mediante un bus de sistema 2002 a una memoria de sistema 2003 y a varios otros componentes. La memoria de sistema 2003 incluye la memoria de solo lectura (ROM) 2004 y la memoria de acceso aleatorio (RAM) 2005. La ROM 2004 se acopla al bus de sistema 2002 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 de sistema 2002 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 parte del procesador 2001 (para realizar un proceso, tal como los procesos descritos con referencia a las FIGs. 1 a 19). Los datos de 2009 incluyen un conjunto de valores de variables cualitativas o cuantitativas organizados en varias estructuras de datos para soportar y ser utilizados por las operaciones del software 2008.
El nodo 10 de la FIG. 20 incluye uno o más adaptadores (p. ej., controladores de disco duro, adaptadores de red, adaptadores de gráficos, etc.) que interconectan y soportan las comunicaciones entre el procesador 2001, la memoria del sistema 2003, el disco duro 2007 y otros componentes del nodo 10 (p. ej., dispositivos periféricos y externos). En una o más realizaciones de la presente invención, el uno o más adaptadores pueden conectarse a uno o más buses de E/S que se conectan al bus del sistema 2002 a través de un puente de bus intermedio, y el uno o más 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 de interfaz 2020 que interconecta un teclado 2021, un ratón 2022, un altavoz 2023 y un micrófono 2024 al bus del sistema 2002. El nodo 10 incluye un adaptador de pantalla 2030 que interconecta el bus del sistema 2002 a una pantalla 2031. El adaptador de pantalla 2030 (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 de comunicaciones 2041 interconecta el bus del sistema 2002 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 (p. ej., como una aplicación web en un sistema distribuido).
Las realizaciones descritas en el presente documento 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, al facilitar 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 mediante el uso de un control de interfaz segura (también denominado en el presente documento “UV”) que incluye hardware, firmware (p. ej., milicódigo) o una combinación de los mismos para facilitar la separación de la VM segura y el hipervisor y, por lo tanto, mantener la 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 el presente documento.
Las realizaciones de la invención descritas en el presente documento pueden incluir un sistema, método y/o producto de programa informático (en el presente documento, un sistema) que controlan el acceso al almacenamiento seguro de una VM. Se observa que, para cada una de las explicaciones, los identificadores de los elementos se reutilizan para otros elementos similares de diferentes figuras.
En el presente documento se describen varias realizaciones de la invención con referencia a los dibujos relacionados. En la siguiente descripción y en los dibujos se exponen varias conexiones y relaciones posicionales (p. ej., 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 o bien 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 diversas tareas y etapas del proceso descritas en el presente documento pueden incorporarse en un procedimiento o proceso más completo que tenga etapas o funcionalidad adicionales no descritas en detalle en el presente documento.
Las siguientes definiciones y abreviaturas deben utilizarse para la interpretación de las reivindicaciones y la memoria descriptiva. Como se usan en el presente documento, los términos “comprende”, “que comprende”, “incluye”, “que incluye”, “tiene”, “que tiene”, “contiene”, o “que contiene” o cualquier otra variación de los mismos, pretenden cubrir una inclusión no exclusiva. Por ejemplo, una composición, una mezcla, un proceso, un método, un artículo o un aparato que comprende una lista de elementos no se limita necesariamente solo a esos elementos, sino que puede 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 el presente documento para significar “que sirve como un ejemplo, caso o ilustración”. Cualquier realización o diseño descrito en el presente documento 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 sus variaciones 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 nivel posible de detalle técnico de integración. El producto de programa informático puede incluir un medio (o medios) de almacenamiento legible por ordenador que tenga instrucciones de programa legibles por ordenador en el mismo 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), una memoria portátil de solo lectura de disco compacto (CD-ROM), un disco versátil digital (DVD), una tarjeta de memoria, un disco flexible, un dispositivo codificado mecánicamente, tal como tarjetas perforadas o estructuras elevadas en una surco que tiene instrucciones grabadas en el mismo, y cualquier combinación adecuada de los anteriores. Un medio de almacenamiento legible por ordenador, tal como se usa en el presente documento, 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 otro medio de transmisión (p. ej., 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 de programa legibles por ordenador descritas en el presente documento pueden descargarse a dispositivos informáticos/de procesamiento respectivos 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 ópticas de transmisión, transmisión inalámbrica, enrutadores, firewalls, conmutadores, ordenadores de puerta de enlace y/o servidores periféricos. Una tarjeta de adaptador de red o interfaz de red en cada dispositivo informático/de procesamiento recibe instrucciones de programa legibles por ordenador desde la red y reenvía las instrucciones de 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 de 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 establecimiento de estado, datos de configuración para circuitos integrados, o bien código fuente o código objeto escrito en cualquier combinación de uno o más lenguajes de programación, incluyendo un lenguaje de programación orientado a objetos tal como Smalltalk, C++ o similares, y lenguajes de programación de procedimiento, como el lenguaje de programación “C” o lenguajes de programación similares. Las instrucciones de programa legibles por ordenador pueden ejecutarse completamente en el ordenador del usuario, parcialmente en el ordenador del usuario, como un paquete de software independiente, parcialmente en el ordenador del usuario y parcialmente 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, incluyendo una red de área local (LAN) o una red de área amplia (WAN), o la conexión puede realizarse a un ordenador externo (p. ej., a través de Internet utilizando un Proveedor de Servicios de Internet). En algunas realizaciones, los circuitos electrónicos que incluyen, por ejemplo, los circuitos lógicos programables, las matrices de puertas programables en campo (FPGA) o las matrices lógicas programables (PLA) pueden ejecutar las instrucciones de programa legibles por ordenador mediante el uso de la información de estado de las instrucciones de programa legibles por ordenador para personalizar los circuitos electrónicos, con el fin de realizar aspectos de la presente invención.
Los aspectos de la presente invención se describen en el presente documento con referencia a ilustraciones de diagramas de flujo y/o diagramas de bloques de métodos, aparatos (sistemas) y productos de programas informáticos de acuerdo con las realizaciones de la invención. Se entenderá que cada bloque de las ilustraciones de diagrama de flujo y/o diagramas de bloques, y las combinaciones de bloques en las ilustraciones de diagrama de flujo y/o diagramas de bloques, pueden implementarse mediante instrucciones de programa legibles por ordenador.
Estas instrucciones de programa legibles por ordenador pueden proporcionarse a un procesador de un ordenador de propósito general, ordenador de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de modo que las instrucciones, que se ejecutan a través del procesador del ordenador u otro aparato de procesamiento de datos programable, creen medios para implementar las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques. Estas instrucciones de 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 modo que el medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo comprenda un artículo de fabricación que incluye instrucciones que implementan aspectos de la función/acto especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
Las instrucciones de programa legibles por ordenador también pueden cargarse en un ordenador, otro aparato de procesamiento de datos programable u otro dispositivo para provocar que se realicen una serie de etapas operacionales en el ordenador, otro aparato programable u otro dispositivo para producir un proceso implementado por ordenador, de modo que las instrucciones que se ejecutan en el ordenador, otro aparato programable u otro dispositivo implementen las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
El diagrama de flujo y los diagramas de bloques de las Figuras ilustran la arquitectura, funcionalidad y operación de posibles implementaciones de sistemas, métodos y productos de programas informáticos de acuerdo con varias realizaciones de la presente invención. A este respecto, cada bloque del diagrama de flujo o 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 señaladas en los bloques pueden producirse 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 observará 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 actos especificados o llevan a cabo combinaciones de hardware de propósito especial e instrucciones de ordenador.
La terminología utilizada en el presente documento tiene el propósito de describir las realizaciones particulares únicamente y no se pretende que sea limitante. Como se usa en el presente documento, las formas singulares “un”, “una” y “el” 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 diversas realizaciones del presente documento 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 utilizada en el presente documento 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 el presente documento.

Claims (19)

REIVINDICACIONES
1. Un método, que comprende:
recibir (1605), en un control de interfaz segura (11) de un sistema informático, una solicitud de acceso a una estructura de datos relacionada con una entidad segura en un dominio seguro del sistema informático; verificar (1610), mediante el control de interfaz segura (11), de una dirección de almacenamiento virtual asociada a una ubicación de la estructura de datos, en donde la verificación de la dirección de almacenamiento virtual comprende además inspeccionar una tabla de seguridad de zona (100) para determinar si un bit indicador de comparación de direcciones virtuales asociado a una dirección virtual de anfitrión (160) está habilitado o deshabilitado, en donde la tabla de seguridad de zona (100) comprende una entrada para cada página del almacenamiento absoluto de anfitrión, cada entrada está indexada por una dirección absoluta de anfitrión (110), y cada entrada comprende información para verificar la entrada como perteneciente a la entidad segura; verificar, mediante el control de interfaz segura (11), un mapeo de la dirección de almacenamiento virtual proporcionada por una entidad no segura en base a la determinación de que el bit indicador de comparación de direcciones virtuales está habilitado;
solicitar (1615), mediante el control de interfaz segura (11), una traducción de dirección utilizando un espacio de direcciones virtuales (202, 204, 325, 510, 520) de la entidad no segura del sistema informático en base a la determinación de que la ubicación de la estructura de datos está asociada a la dirección de almacenamiento virtual; y
acceder (1620), mediante el control de interfaz segura (11), a la estructura de datos en base a un resultado de la traducción de dirección.
2. El método de la reivindicación 1, que comprende además:
acceder, mediante el control de interfaz segura (11), a la estructura de datos utilizando una dirección absoluta en base a la determinación de que la ubicación de la estructura de datos no está asociada a la dirección de almacenamiento virtual.
3. El método de la reivindicación 1, en donde verificar el mapeo de la dirección de almacenamiento virtual comprende verificar un cambio en el mapeo en comparación con un mapeo anterior.
4. El método de una cualquiera de las reivindicaciones anteriores, en donde la estructura de datos relacionada con la entidad segura en el dominio seguro se distribuye entre una pluralidad de páginas de memoria.
5. El método de la reivindicación 4, en donde una o más páginas de memoria donadas por la entidad no segura residen en un rango contiguo de direcciones virtuales.
6. El método de una cualquiera de las reivindicaciones anteriores, en donde el control de interfaz segura (11) comprende firmware, hardware, software confiable o una combinación de firmware, hardware y software confiable.
7. El método de una cualquiera de las reivindicaciones anteriores, en donde la entidad no segura comprende un hipervisor (12) configurado para alojar uno o más invitados seguros como la entidad segura.
8. Un sistema que comprende: una memoria (2003);
una unidad de procesamiento (2001); y
un control de interfaz segura (11) configurado para realizar una pluralidad de operaciones que comprende: recibir (1605) una solicitud de acceso a una estructura de datos relacionada con una entidad segura en un dominio seguro;
verificar (1605) una dirección de almacenamiento virtual asociada a una ubicación de la estructura de datos en la memoria, en donde la verificación de la dirección de almacenamiento virtual comprende además inspeccionar una tabla de seguridad de zona (100) para determinar si un bit indicador de comparación de direcciones virtuales asociado a una dirección virtual de anfitrión (160) está habilitado o deshabilitado, en donde la tabla de seguridad de zona comprende una entrada para cada página del almacenamiento absoluto de anfitrión, cada entrada está indexada por una dirección absoluta de anfitrión (110), y cada entrada comprende información para verificar la entrada como perteneciente a la entidad segura;
verificar un mapeo de la dirección de almacenamiento virtual proporcionada por una entidad no segura en base a la determinación de que el bit indicador de comparación de direcciones virtuales está habilitado;
solicitar (1615) una traducción de dirección utilizando un espacio de direcciones virtuales (202, 204, 325, 510, 520) de la entidad no segura de la unidad de procesamiento en base a la determinación de que la ubicación de la estructura de datos está asociada a la dirección de almacenamiento virtual; y
acceder (1620) a la estructura de datos en base a un resultado de la traducción de dirección.
9. El sistema de la reivindicación 8, en donde el control de interfaz segura (11) está configurado para realizar operaciones que comprenden:
acceder a la estructura de datos utilizando una dirección absoluta en base a la determinación de que la ubicación de la estructura de datos no está asociada a la dirección de almacenamiento virtual.
10. El sistema de la reivindicación 8, en donde verificar el mapeo de la dirección de almacenamiento virtual comprende verificar un cambio en el mapeo en comparación con un mapeo anterior.
11. El sistema de una cualquiera de las reivindicaciones 8 a 10, en donde la estructura de datos relacionada con la entidad segura en el dominio seguro se distribuye entre una pluralidad de páginas de memoria.
12. El sistema de la reivindicación 11, en donde una o más páginas de memoria donadas por la entidad no segura residen en un rango contiguo de direcciones virtuales.
13. El sistema de una cualquiera de las reivindicaciones 8 a 12, en donde el control de interfaz segura (11) comprende firmware, hardware, software confiable o una combinación de firmware, hardware y software confiable.
14. El sistema de una cualquiera de las reivindicaciones 8 a 13, en donde la entidad no segura comprende un hipervisor (12) configurado para alojar uno o más invitados seguros como la entidad segura.
15. Un producto de programa informático que comprende un medio de almacenamiento legible por ordenador, comprendiendo el medio de almacenamiento legible por ordenador instrucciones ejecutables por ordenador, que cuando se ejecutan mediante un control de interfaz segura (11) de una unidad de procesamiento (2001) hace que la unidad de procesamiento realice un método que comprende:
recibir (1605), en el control de interfaz segura (11), una solicitud de acceso a una estructura de datos relacionada con una entidad segura en un dominio seguro;
verificar (1610), mediante el control de interfaz segura (11), una dirección de almacenamiento virtual asociada a una ubicación de la estructura de datos, en donde la verificación de la dirección de almacenamiento virtual comprende además inspeccionar una tabla de seguridad de zona (100) para determinar si un bit indicador de comparación de direcciones virtuales asociado a una dirección virtual de anfitrión (160) está habilitado o deshabilitado, en donde la tabla de seguridad de zona (100) comprende una entrada para cada página del almacenamiento absoluto de anfitrión, cada entrada está indexada por una dirección absoluta de anfitrión (110), y cada entrada comprende información para verificar la entrada como perteneciente a la entidad segura;
verificar, mediante el control de interfaz segura (11), un mapeo de la dirección de almacenamiento virtual proporcionada por una entidad no segura en base a la determinación de que el bit indicador de comparación de direcciones virtuales está habilitado;
solicitar (1615), mediante el control de interfaz segura (11), una traducción de dirección utilizando un espacio de direcciones virtuales (202, 204, 325, 510, 520) de la entidad no segura en base a la determinación de que la ubicación de la estructura de datos está asociada a la dirección de almacenamiento virtual; y
acceder (1620), mediante el control de interfaz segura (11), a la estructura de datos en base a un resultado de la traducción de dirección.
16. El producto de programa informático de la reclamación 15, en donde las instrucciones ejecutables provocan además que la unidad de procesamiento realice:
acceder, mediante el control de interfaz segura (11), a la estructura de datos utilizando una dirección absoluta en base a la determinación de que la ubicación de la estructura de datos no está asociada a la dirección de almacenamiento virtual.
17. El producto de programa informático de la reclamación 15, en donde verificar el mapeo de la dirección virtual comprende verificar un cambio en el mapeo en comparación con un mapeo anterior.
18. El producto de programa informático de una cualquiera de las reivindicaciones 15 a 17, en donde la estructura de datos relacionada con la entidad segura en el dominio seguro se distribuye entre una pluralidad de páginas de memoria.
19. El producto de programa informático de la reclamación 18, en donde una o más páginas de memoria donadas por la entidad no segura residen en un rango contiguo de direcciones virtuales.
ES20709572T 2019-03-08 2020-03-06 Espacio de direcciones virtuales de anfitrión para un almacenamiento de control de interfaz segura Active ES2966715T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/296,301 US11176054B2 (en) 2019-03-08 2019-03-08 Host virtual address space for secure interface control storage
PCT/EP2020/056033 WO2020182664A1 (en) 2019-03-08 2020-03-06 Host virtual address space for secure interface control storage

Publications (1)

Publication Number Publication Date
ES2966715T3 true ES2966715T3 (es) 2024-04-23

Family

ID=69770916

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20709572T Active ES2966715T3 (es) 2019-03-08 2020-03-06 Espacio de direcciones virtuales de anfitrión para un almacenamiento de control de interfaz segura

Country Status (11)

Country Link
US (2) US11176054B2 (es)
EP (1) EP3935546B1 (es)
JP (1) JP7379516B2 (es)
KR (1) KR102551936B1 (es)
CN (1) CN113597609A (es)
ES (1) ES2966715T3 (es)
HU (1) HUE064583T2 (es)
MX (1) MX2021010589A (es)
PL (1) PL3935546T3 (es)
SG (1) SG11202105425TA (es)
WO (1) WO2020182664A1 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US11347529B2 (en) 2019-03-08 2022-05-31 International Business Machines Corporation Inject interrupts and exceptions into secure virtual machine
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11308215B2 (en) * 2019-03-08 2022-04-19 International Business Machines Corporation Secure interface control high-level instruction interception for interruption enablement
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging

Family Cites Families (97)

* 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
JP4302641B2 (ja) 2002-11-18 2009-07-29 エイアールエム リミテッド デバイスによるメモリへのアクセスの制御
US7149862B2 (en) 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
AU2004280976A1 (en) 2003-10-08 2005-04-21 Unisys Corporation Computer system para-virtualization using a hypervisor that is implemented in a partition of the host system
US7421533B2 (en) 2004-04-19 2008-09-02 Intel Corporation Method to manage memory in a platform with virtual machines
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
US20070091809A1 (en) 2005-10-25 2007-04-26 Smith Jeffrey C Managed network resource sharing and optimization method and apparatus
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
US8219988B2 (en) 2007-08-02 2012-07-10 International Business Machines Corporation Partition adjunct for data processing system
US8145676B2 (en) 2008-02-11 2012-03-27 International Business Machines Corporation Shared inventory item donation in a virtual universe
US8176279B2 (en) 2008-02-25 2012-05-08 International Business Machines Corporation Managing use of storage by multiple pageable guests of a computing environment
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
US8166254B2 (en) 2008-06-06 2012-04-24 International Business Machines Corporation Hypervisor page fault processing 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
WO2011041615A1 (en) 2009-09-30 2011-04-07 Citrix Systems, Inc. Dynamic reallocation of physical memory responsive to virtual machine events
US9087200B2 (en) 2009-12-22 2015-07-21 Intel Corporation Method and apparatus to provide secure application execution
US20110153944A1 (en) 2009-12-22 2011-06-23 Klaus Kursawe Secure Cache Memory Architecture
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 삼성전자주식회사 가상화 환경에서의 메모리 풀 관리
CN103430185B (zh) 2011-03-22 2016-10-26 瑞典爱立信有限公司 用于在虚拟化***操作与非虚拟化***操作之间切换的方法
US9276953B2 (en) 2011-05-13 2016-03-01 International Business Machines Corporation Method and apparatus to detect and block unauthorized MAC address by virtual machine aware network switches
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
US8788763B2 (en) 2011-10-13 2014-07-22 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
US20130232315A1 (en) 2012-03-02 2013-09-05 Samsung Electronics Co., Ltd. Scalable, customizable, and load-balancing physical memory management scheme
US20140007189A1 (en) 2012-06-28 2014-01-02 International Business Machines Corporation Secure access to shared storage resources
US9697047B2 (en) 2012-09-25 2017-07-04 International Business Machines Corporation Cooperation of hoarding memory allocators in a multi-process system
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
US9767044B2 (en) 2013-09-24 2017-09-19 Intel Corporation Secure memory repartitioning
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
US9483639B2 (en) 2014-03-13 2016-11-01 Unisys Corporation Service partition virtualization system and method having a secure application
US9672058B2 (en) 2014-03-13 2017-06-06 Unisys Corporation Reduced service partition virtualization system and method
GB2525596B (en) 2014-04-28 2021-05-26 Arm Ip Ltd Access control and code scheduling
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 플러스기술주식회사 전가상화 시스템에서 자원을 감시하는 장치 및 방법
US20170364685A1 (en) 2014-11-20 2017-12-21 Interdigital Patent Holdings. Inc. Providing security to computing systems
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
US9760290B2 (en) 2015-09-25 2017-09-12 International Business Machines Corporation Smart volume manager for storage space usage optimization
US9558004B1 (en) 2015-10-16 2017-01-31 International Business Machines Corporation Inter-platform management of computing resources
US10579792B2 (en) * 2015-11-23 2020-03-03 Armor Defense Inc. Extracting malicious instructions on a virtual machine
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
US9910768B1 (en) 2016-05-23 2018-03-06 Parallels IP Holdings GmbH Method for memory management for virtual machines
US10152350B2 (en) 2016-07-01 2018-12-11 Intel Corporation Secure domain manager
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
US20180260251A1 (en) 2016-08-28 2018-09-13 Vmware, Inc. 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
US10671422B2 (en) 2017-03-29 2020-06-02 Advanced Micro Devices, Inc. Monitoring of memory page transitions between a hypervisor and a virtual machine
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
JP2019159562A (ja) 2018-03-09 2019-09-19 富士通株式会社 情報処理装置、情報処理システム、及びプログラム
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
US10929165B2 (en) 2018-07-31 2021-02-23 Nutanix, Inc. System and method for memory resizing in a virtual computing environment
US10761996B2 (en) 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
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
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11487906B2 (en) 2019-03-08 2022-11-01 International Business Machines Corporation Storage sharing between a secure domain and a non-secure entity
US10956188B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Transparent interpretation of guest instructions in secure virtual machine environment
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
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage

Also Published As

Publication number Publication date
US11176054B2 (en) 2021-11-16
KR20210121124A (ko) 2021-10-07
EP3935546B1 (en) 2023-11-29
EP3935546A1 (en) 2022-01-12
US11669462B2 (en) 2023-06-06
SG11202105425TA (en) 2021-06-29
EP3935546C0 (en) 2023-11-29
PL3935546T3 (pl) 2024-03-11
JP7379516B2 (ja) 2023-11-14
MX2021010589A (es) 2022-08-25
JP2022523785A (ja) 2022-04-26
KR102551936B1 (ko) 2023-07-06
US20200285589A1 (en) 2020-09-10
HUE064583T2 (hu) 2024-03-28
US20220004499A1 (en) 2022-01-06
WO2020182664A1 (en) 2020-09-17
CN113597609A (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
ES2966715T3 (es) Espacio de direcciones virtuales de anfitrión para un almacenamiento de control de interfaz segura
US11455398B2 (en) Testing storage protection hardware in a secure virtual machine environment
EP3935510B1 (en) Secure interface control secure storage hardware tagging
JP7379512B2 (ja) セキュア・ドメインと非セキュア・エンティティとの間のストレージ共用
US11182192B2 (en) Controlling access to secure storage of a virtual machine
US11635991B2 (en) Secure storage query and donation
AU2020238889B2 (en) Secure storage isolation
AU2020237597B2 (en) Secure interface control high-level instruction interception for interruption enablement
EP3935509A1 (en) Secure interface control high-level page management
CA3132753A1 (en) Communication interface of a secure interface control
KR102681250B1 (ko) 보안 스토리지 격리