ES2827007T3 - Sistema y procedimientos para descifrar el tráfico de red en un entorno virtualizado - Google Patents

Sistema y procedimientos para descifrar el tráfico de red en un entorno virtualizado Download PDF

Info

Publication number
ES2827007T3
ES2827007T3 ES17715652T ES17715652T ES2827007T3 ES 2827007 T3 ES2827007 T3 ES 2827007T3 ES 17715652 T ES17715652 T ES 17715652T ES 17715652 T ES17715652 T ES 17715652T ES 2827007 T3 ES2827007 T3 ES 2827007T3
Authority
ES
Spain
Prior art keywords
session
memory page
virtual machine
occurrence
event
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
ES17715652T
Other languages
English (en)
Inventor
Radu Caragea
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.)
Bitdefender IPR Management Ltd
Original Assignee
Bitdefender IPR Management Ltd
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 Bitdefender IPR Management Ltd filed Critical Bitdefender IPR Management Ltd
Application granted granted Critical
Publication of ES2827007T3 publication Critical patent/ES2827007T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3249Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using RSA or related signature schemes, e.g. Rabin scheme
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Un sistema informático (12) que comprende un procesador de hardware y una memoria, el procesador de hardware configurado para ejecutar una máquina virtual (32) y un motor de introspección, (418), en el que: la máquina virtual está configurada para llevar a cabo una sesión de comunicación con una parte remota, comprendiendo la sesión de comunicación un mensaje de toma de contacto seguido de una cabida útil cifrada, en el que el mensaje de toma de contacto contiene un parámetro de cifrado utilizado por el sistema informático para derivar una clave de cifrado, y donde la cabida útil cifrada está cifrada con la clave de cifrado; y en el que el motor de introspección se ejecuta fuera de la máquina virtual y está configurado para: identificar dentro de la memoria una página de memoria objetivo en función de si un contenido de la página de memoria objetivo ha cambiado (536) entre una ocurrencia de un primer evento de sesión de la sesión de comunicación (524) y una ocurrencia de un segundo evento de sesión de la sesión de comunicación, (530), y en respuesta, transmitir el contenido de la página de memoria objetivo a un motor de descifrado configurado para descifrar la cabida útil cifrada en función del contenido.

Description

DESCRIPCIÓN
Sistema y procedimientos para descifrar el tráfico de red en un entorno virtualizado
Solicitudes relacionadas
Esta solicitud reivindica el beneficio de la fecha de presentación de la solicitud de patente provisional de EE. UU. N° 62/317.804, presentada el 4 de abril de 2016, titulada "Systems and Methods for Decrypting NetWork Traffic in a Virtualized Environment".
Antecedentes
La invención se refiere a sistemas y procedimientos de seguridad informática y, en particular, a comunicación electrónica cifrada.
En el mundo digital moderno, una amplia variedad de productos y servicios dependen del cifrado de datos. Las comunicaciones cifradas permiten, entre otros, el comercio en línea, la banca en línea y la telefonía a través de redes de datos como Internet. El cifrado también se usa ampliamente para proteger la privacidad y los datos personales de los usuarios. En una era de proliferación de dispositivos electrónicos interconectados (Internet de las cosas), la confianza en el cifrado es una fortaleza, pero también una vulnerabilidad.
En los últimos años, el cifrado se utiliza cada vez más con fines maliciosos, por ejemplo, para ocultar las actividades de software malicioso o para exigir un rescate por los datos valiosos de un usuario. Un ejemplo típico de actividades de software malicioso comprende la configuración de una red de sistemas informáticos secuestrados, conocida comúnmente como botnet (red robot), y el uso de la red respectiva para lanzar un ataque distribuido de denegación de servicio contra un servidor web objetivo. Como parte de la configuración de la botnet, se infiltra un agente de software en cada miembro de la botnet, utilizando diversos procedimientos (por ejemplo, piratería directa, phishing, etc.). A continuación, el agente puede utilizar el cifrado para comunicarse discretamente con un servidor remoto, por ejemplo, para recibir la dirección de red del objetivo y/o para coordinar el ataque con otros miembros de la botnet. Se han descrito diversos procedimientos para impedir o contrarrestar tales actividades maliciosas. Un ejemplo es la publicación de preconcesión de EE. UU. N°. 2014/0115702A1 de Li y col., titulada "Encrypted Data Inspection in a Network Environment", que describe el descifrado de un flujo de red entre un primer nodo y un segundo nodo, y el escaneo del descifrado de datos objetivo que pueden indicar malicia.
Las operaciones antimalware se complican aún más con la llegada de la tecnología de virtualización de hardware, que permite la creación de entornos informáticos simulados conocidos comúnmente como máquinas virtuales. Varias máquinas virtuales pueden ejecutarse simultáneamente en la misma máquina física, compartiendo los recursos de hardware entre ellas, reduciendo así los costes de inversión y operación. Cada máquina virtual puede ejecutar su propio sistema operativo y/o aplicaciones de software, por separado de otras máquinas virtuales. La virtualización de hardware se despliega por diversas razones, por ejemplo, para garantizar la portabilidad del software o para fortalecer la seguridad. Otras aplicaciones populares de virtualización de hardware, conocidas con el nombre genérico de "computación en la nube", incluyen granjas de servidores web e infraestructura de escritorio virtual (VDI). En una configuración de VDI típica, una aplicación de software se ejecuta en un primer sistema informático, mientras que el usuario interactúa con la aplicación respectiva utilizando un segundo sistema informático (terminal). Se crea una instancia bajo demanda de una máquina virtual que ejecuta la aplicación respectiva en el primer sistema informático, que puede terminar ejecutando cientos de tales máquinas virtuales para múltiples usuarios remotos. Debido a la constante proliferación de malware, cada máquina virtual requiere potencialmente protección contra el malware.
La escalada de amenazas de seguridad y una creciente demanda de virtualización generan un gran interés en desarrollar sistemas y procedimientos antimalware eficientes diseñados para abordar los desafíos de la virtualización de hardware.
Compendio
Según un aspecto, un sistema cliente comprende un procesador de hardware y una memoria, el procesador de hardware configurado para ejecutar una máquina virtual y un motor de introspección. La máquina virtual está configurada para llevar a cabo una sesión de comunicación con una parte remota, comprendiendo la sesión de comunicación un mensaje de toma de contacto seguido de una cabida útil cifrada, donde el mensaje de toma de contacto contiene un parámetro de cifrado utilizado por el sistema cliente para derivar una clave de cifrado, y donde la cabida útil cifrada está cifrada con la clave de cifrado. El motor de introspección se ejecuta fuera de la máquina virtual y está configurado para identificar dentro de la memoria una página de memoria objetivo en función de si un contenido de la página de memoria objetivo ha cambiado entre una ocurrencia de un primer evento de sesión de la sesión de comunicación y una ocurrencia de un segundo evento de sesión de la sesión de comunicación. El motor de introspección está configurado además para transmitir el contenido de la página de memoria objetivo a un motor de descifrado configurado para descifrar la cabida útil cifrada en función del contenido.
Según otro aspecto, un sistema informático servidor comprende un procesador de hardware configurado para ejecutar un motor de descifrado configurado para realizar procedimientos de descifrado para una pluralidad de sistemas cliente.
Un procedimiento de descifrado comprende recibir un contenido de una página de memoria objetivo de un sistema cliente de la pluralidad de sistemas cliente, recibir una cabida útil cifrada de una sesión de comunicación llevada a cabo entre una máquina virtual que se ejecuta en el sistema cliente y una parte remota y, en respuesta, descifrar la cabida útil cifrada en función del contenido de la página de memoria objetivo. La sesión de comunicación comprende un mensaje de toma de contacto seguido de la cabida útil cifrada, donde el mensaje de toma de contacto contiene un parámetro de cifrado utilizado por el sistema cliente para derivar una clave de cifrado, y donde la cabida útil cifrada está cifrada con la clave de cifrado. El sistema cliente está configurado para ejecutar un motor de introspección fuera de la máquina virtual, el motor de introspección configurado para identificar la página de memoria objetivo dentro de una memoria del sistema cliente en función de si el contenido de la página de memoria objetivo ha cambiado entre una ocurrencia de un primer evento de sesión de la sesión de comunicación y una ocurrencia de un segundo evento de sesión de la sesión de comunicación.
Según otro aspecto, un medio no transitorio legible por ordenador almacena instrucciones que, cuando son ejecutadas por un procesador de hardware de un sistema cliente que comprende además una memoria, hacen que el procesador de hardware forme un motor de introspección que se ejecuta fuera de una máquina virtual que se ejecuta en el sistema cliente. La máquina virtual está configurada para llevar a cabo una sesión de comunicación con una parte remota, comprendiendo la sesión de comunicación un mensaje de toma de contacto seguido de una cabida útil cifrada, donde el mensaje de toma de contacto contiene un parámetro de cifrado utilizado por el sistema cliente para derivar una clave de cifrado, y donde la cabida útil cifrada está cifrada con la clave de cifrado. El motor de introspección está configurado para identificar dentro de la memoria una página de memoria objetivo en función de si un contenido de la página de memoria objetivo ha cambiado entre una ocurrencia de un primer evento de sesión de la sesión de comunicación y una ocurrencia de un segundo evento de sesión de la sesión de comunicación. El motor de introspección está configurado además para transmitir el contenido de la página de memoria objetivo a un motor de descifrado configurado para descifrar la cabida útil cifrada en función del contenido.
Según otro aspecto, un procedimiento de descifrado de comunicaciones cifradas entre un sistema cliente y una parte remota. El sistema cliente está configurado para ejecutar una máquina virtual. La máquina virtual está configurada para llevar a cabo una sesión de comunicación con una parte remota, comprendiendo la sesión de comunicación un mensaje de toma de contacto seguido de una cabida útil cifrada, donde el mensaje de toma de contacto contiene un parámetro de cifrado utilizado por el sistema cliente para derivar una clave de cifrado, y donde la cabida útil cifrada está cifrada con la clave de cifrado. El procedimiento comprende emplear al menos un procesador de hardware para identificar dentro de una memoria del sistema cliente una página de memoria objetivo en función de si un contenido de la página de memoria objetivo ha cambiado entre una ocurrencia de un primer evento de sesión de la sesión de comunicación y una ocurrencia de un segundo evento de sesión de la sesión de comunicación. El procedimiento comprende además emplear al menos un procesador de hardware para recoger la cabida útil cifrada, y emplear al menos un procesador de hardware para descifrar la cabida útil cifrada en función del contenido de la página de memoria objetivo.
Breve descripción de los dibujos
Los aspectos y ventajas anteriores de la presente invención se entenderán mejor al leer la siguiente descripción detallada y al hacer referencia a los dibujos donde:
la Figura 1 ilustra una configuración ejemplar donde los sistemas clientes colaboran con un servidor de seguridad para descifrar el tráfico de red potencialmente malicioso según algunas realizaciones de la presente invención.
La Figura 2 ilustra una configuración de hardware ejemplar de un sistema cliente según algunas realizaciones de la presente invención.
La Figura 2-B ilustra una configuración de hardware ejemplar de un servidor de seguridad según algunas realizaciones de la presente invención.
La Figura 3 muestra una máquina virtual (VM) invitada expuesta por un hipervisor que se ejecuta en un sistema cliente, y un motor de introspección que se ejecuta fuera de la(s) VM(s) invitada(s) según algunas realizaciones de la presente invención.
La Figura 4 muestra una traducción de dirección de memoria ejemplar en una configuración de virtualización de hardware como se ilustra en la Figura 3.
La Figura 5 muestra una secuencia ejemplar de etapas llevadas a cabo por el motor de introspección para interceptar el tráfico cifrado que entra o sale de una VM invitada, según algunas realizaciones de la presente invención.
La Figura 6 muestra una secuencia ejemplar de etapas realizadas por el motor de introspección para obtener una instantánea de memoria optimizada de una VM invitada, según algunas realizaciones de la presente invención.
La Figura 7 ilustra una secuencia ejemplar de etapas realizadas por el motor de introspección para obtener instantáneas de memoria optimizada para múltiples sesiones de comunicación cifrada simultáneas, según algunas realizaciones de la presente invención.
La Figura 8 ilustra un motor de descifrado ejemplar que se ejecuta en el servidor de seguridad según algunas realizaciones de la presente invención.
La Figura 9 muestra una secuencia ejemplar de etapas realizadas por el motor de descifrado según algunas realizaciones de la presente invención.
Descripción detallada de realizaciones preferidas de la invención
En la siguiente descripción, se entiende que todas las conexiones enumeradas entre estructuras pueden ser conexiones operativas directas o conexiones operativas indirectas a través de estructuras intermedias. Un conjunto de elementos incluye uno o más elementos. Se entiende que cualquier enumeración de un elemento se refiere a al menos un elemento. Una pluralidad de elementos incluye al menos dos elementos. A menos que se especifique lo contrario, cualquier uso de "O" se refiere a un o no exclusivo. A menos que se requiera lo contrario, cualquier etapa del procedimiento descrito no necesita realizarse necesariamente en un orden ilustrado particular. Un primer elemento (por ejemplo, datos) derivado de un segundo elemento engloba un primer elemento igual al segundo elemento, así como un primer elemento generado procesando el segundo elemento y opcionalmente otros datos. Tomar una determinación o decisión en función de un parámetro engloba tomar la determinación o decisión en función del parámetro y opcionalmente en función de otros datos. A menos que se especifique lo contrario, un indicador de alguna cantidad/datos puede ser la cantidad/datos en sí, o un indicador diferente de la cantidad/datos en sí. La seguridad informática engloba la protección de usuarios y equipos contra el acceso no intencionado o no autorizado a datos y/o hardware, la modificación no intencionada o no autorizada de datos y/o hardware, y la destrucción de datos y/o hardware. Un programa informático es una secuencia de instrucciones de procesador que llevan a cabo una tarea. Los programas informáticos descritos en algunas realizaciones de la presente invención pueden ser entidades o subentidades de software independientes (por ejemplo, subrutinas, bibliotecas) de otros programas informáticos. A menos que se especifique lo contrario, el software invitado se ejecuta dentro de una máquina virtual. Se dice que un programa se ejecuta dentro de una máquina virtual cuando se ejecuta en un procesador virtual de la máquina virtual respectiva. Un proceso es una instancia de un programa informático, como una aplicación o una parte de un sistema operativo, y se caracteriza por tener al menos un hilo de ejecución y un espacio de memoria virtual asignado a él, donde un contenido del espacio de memoria virtual respectivo incluye código ejecutable. A menos que se especifique lo contrario, una página representa la unidad más pequeña de memoria virtual que puede ser asignada individualmente a una memoria física de un sistema anfitrión. A menos que se especifique lo contrario, una instantánea de memoria de un sistema cliente/máquina virtual comprende una copia de un contenido de una sección de la memoria utilizada por el sistema cliente/máquina virtual respectiva. Los medios legibles por ordenador engloban medios no transitorios como medios de almacenamiento magnéticos, ópticos y semiconductores (por ejemplo, discos duros, discos ópticos, memoria flash, DRAM), así como enlaces de comunicación como cables conductores y enlaces de fibra óptica. Según algunas realizaciones, la presente invención proporciona, entre otras cosas, sistemas informáticos que comprenden hardware (por ejemplo, uno o más microprocesadores) programados para realizar los procedimientos descritos en esta invención, así como instrucciones de codificación de medios legibles por ordenador para realizar los procedimientos descritos en esta invención.
La siguiente descripción ilustra realizaciones de la invención a título de ejemplo y no necesariamente a título de limitación.
La Figura 1 muestra una configuración ejemplar según algunas realizaciones de la presente invención, donde un conjunto de sistemas cliente 12a-d colabora con un servidor de seguridad 15 para interceptar y descifrar el tráfico de red cifrado que se produce entre los sistemas cliente respectivos 12a-d y una parte remota ilustrada como un servidor de contenido 13. Cada uno de los servidores 13 y 15 representa en general un conjunto de sistemas informáticos interconectados, que pueden estar o no en proximidad física entre sí.
Los sistemas cliente ejemplares 12a-d incluyen sistemas informáticos corporativos, pero también sistemas informáticos personales, plataformas informáticas móviles (ordenadores portátiles, tabletas, teléfonos móviles), dispositivos electrónicos portátiles (relojes inteligentes), electrodomésticos (televisores inteligentes, termostatos, sistemas de seguridad/vigilancia del hogar), o cualquier otro dispositivo electrónico que tenga un procesador y una memoria y que soporte virtualización de hardware. Un sistema cliente ejemplar de particular interés para la seguridad informática es un ordenador configurado como señuelo. Señuelo es un término genérico utilizado en la técnica para describir un conjunto de sistemas y procedimientos para atraer a entidades maliciosas para la recopilación de datos y el estudio de software malicioso. Un señuelo ejemplar comprende un sistema informático aparentemente desprotegido que puede permitir que un pirata informático o un agente de malware entre, instale software y/o se comunique con otros ordenadores a través de una red.
Los sistemas cliente ilustrados están interconectados a través de una red de comunicación local 10, como una red corporativa o una red doméstica. Las partes de la red local 10 puede incluir una red de área local (LAN). Un dispositivo de pasarela 14 puede permitir el acceso de sistemas cliente 12a-d del cliente a una red extendida 11 (por ejemplo, Internet), de modo que todo o parte del tráfico de red entre los sistemas cliente 12a-d y una parte remota atraviese el dispositivo de pasarela 14. Un dispositivo de pasarela ejemplar 14 comprende un aparato físico como un encaminador y/o un conmutador.
La Figura 2-A ilustra una configuración de hardware ejemplar de un sistema cliente 12 según algunas realizaciones de la presente invención. El sistema cliente 12 puede representar cualquiera de los sistemas 12a-d de la Figura 1. Por simplicidad, el sistema cliente ilustrado es un ordenador personal; la configuración de hardware de otros sistemas cliente tales como teléfonos móviles, ordenadores tipo tableta, etc., puede diferir algo de la configuración ilustrada de la Figura 2-A. El sistema cliente 12 comprende un conjunto de dispositivos físicos, que incluyen un procesador de hardware 16 y una unidad de memoria 18. El procesador 16 comprende un dispositivo físico (por ejemplo, un microprocesador, un circuito integrado multinúcleo formado sobre un sustrato semiconductor, etc.) configurado para ejecutar operaciones computacionales y/o lógicas con un conjunto de señales y/o datos. En algunas realizaciones, tales operaciones se entregan al procesador 16 en forma de una secuencia de instrucciones de procesador (por ejemplo, código máquina u otro tipo de codificación). La unidad de memoria 18 puede comprender medios legibles por ordenador volátiles (por ejemplo, DRAM, SRAM) que almacenan instrucciones y/o datos a los que se accede o generados por el procesador 16.
Los dispositivos de entrada 20 pueden incluir teclados y ratones de ordenador, entre otros, que permiten al usuario introducir datos y/o instrucciones en el sistema 12. Los dispositivos de salida 22 pueden incluir dispositivos de visualización tales como monitores. En algunas realizaciones, los dispositivos de entrada 20 y los dispositivos de salida 22 pueden compartir un componente de hardware común, como en el caso de los dispositivos de pantalla táctil. Los dispositivos de almacenamiento 24 incluyen medios legibles por ordenador que permiten el almacenamiento, lectura y escritura no volátiles de instrucciones de software y/o datos. Los dispositivos de almacenamiento ejemplares 24 incluyen discos magnéticos y ópticos y dispositivos de memoria flash, así como medios extraíbles tales como unidades y discos CD y/o DVD. Los adaptadores de red 26 permiten que el sistema 12 se conecte a una red 10 y/o a otras máquinas/sistemas informáticos. El concentrador controlador 28 representa genéricamente la pluralidad de buses de sistema, periféricos y de chipset, y/o todos los demás circuitos que permiten la intercomunicación de los dispositivos 16-26 del sistema 12. Por ejemplo, el concentrador controlador 28 puede incluir un controlador de memoria, un controlador de entrada/salida (E/S) y un controlador de interrupciones, entre otros. En otro ejemplo, el concentrador 28 puede comprender el bus de puente norte que conecta el procesador 16 a la memoria 18, y/o el bus de puente sur que conecta el procesador 16 a los dispositivos 20, 22, 24 y 26, entre otros.
La Figura 2-B muestra una configuración de hardware ejemplar del servidor de seguridad 15 en algunas realizaciones de la presente invención. En la configuración ilustrada, el servidor 15 comprende un procesador de servidor 16, una memoria de servidor 18, un conjunto de dispositivos de almacenamiento de servidor 124 y un conjunto de adaptadores de red 126. El procesador 116 puede comprender un microprocesador u otro dispositivo físico configurado para ejecutar operaciones matemáticas y/o lógicas con un conjunto de datos. La memoria 18 puede comprender medios legibles por ordenador volátiles que almacenan instrucciones y/o datos para su ejecución y/o procesamiento por el procesador 116. Los dispositivos de almacenamiento de servidor 124 comprenden medios legibles por ordenador no volátiles tales como discos duros, CD y DVD ROM, y memoria flash, entre otros. Los adaptadores de red de servidor 126 permiten que el servidor de seguridad 15 se conecte e intercambie datos con otros dispositivos electrónicos a través de la red extendida 11.
La Figura 3 muestra una configuración de software típica según algunas realizaciones de la presente invención. El sistema cliente 12 está configurado para exponer un conjunto de máquinas virtuales (VM). Aunque la Figura 3 muestra solo una VM invitada 32, algunas realizaciones pueden hospedar múltiples VM (por ejemplo, cientos) que operan simultáneamente. Cada máquina virtual comprende una emulación de una máquina física/sistema informático real y puede ejecutar un sistema operativo y una variedad de aplicaciones de software. Las realizaciones como la ilustrada en la Figura 3 pueden utilizarse para proteger a los clientes de la computación en la nube contra software malicioso, como software que intenta robar datos de propiedad, privados y/o confidenciales, o software que intenta secuestrar y transformar el sistema cliente 12 en un miembro de la botnet. En tales realizaciones, el sistema cliente 12 puede representar un sistema informático servidor de un proveedor de servicios en la nube. En otras realizaciones ejemplares, el sistema cliente 12 representa el dispositivo privado de un usuario, como un ordenador personal o un teléfono móvil. Tales dispositivos a menudo emplean la virtualización de hardware, por ejemplo, para aumentar la portabilidad del software o para fortalecer la seguridad. En otra realización ejemplar más, el sistema cliente 12 puede estar configurado como un señuelo. En tales realizaciones, el sistema cliente 12 puede exponer múltiples máquinas virtuales, por ejemplo, una que se hace pasar por un servidor web, otra que se hace pasar por un ordenador personal conectado a una red corporativa, etc.
En algunas realizaciones, un hipervisor 30 se ejecuta en el sistema cliente 12, comprendiendo el hipervisor 30 software configurado para crear o habilitar una pluralidad de dispositivos virtualizados, como un procesador virtual y una unidad de gestión de memoria virtual, y para presentar tales dispositivos virtualizados al software en lugar de los dispositivos físicos reales del sistema cliente 12. Tales operaciones son conocidas comúnmente en la técnica como exponer una máquina virtual. El hipervisor 30 puede permitir además que múltiples máquinas virtuales compartan los recursos de hardware del sistema anfitrión 12, de modo que cada VM funcione de forma independiente y no sea consciente de otras VM que se ejecutan simultáneamente ejecutándose en el sistema cliente 12. Ejemplos de hipervisores populares incluyen VMware vSphere™ de VMware Inc. y el hipervisor Xen de código abierto, entre otros.
En la configuración ejemplar ilustrada en la Figura 3 , la VM invitada 32 ejecuta un sistema operativo (SO) invitado 34, y un conjunto de aplicaciones 36a-b. El SO invitado 34 puede comprender cualquier sistema operativo ampliamente disponible, como Microsoft Windows®, MacOS®, Linux®, iOS® o Android™, entre otros, proporcionando una interfaz entre las aplicaciones que se ejecutan dentro de la VM 32 y los dispositivos de hardware virtualizados de la VM invitada 32. Las aplicaciones 36a-b representan genéricamente cualquier aplicación de usuario, como un procesador de texto, una aplicación de hoja de cálculo, una aplicación de gráficos, un navegador, una aplicación de medios sociales y una aplicación de comunicación electrónica, entre otras. En esta invención, se dice que el SO invitado 34 y las aplicaciones 36a-b se ejecutan dentro de la VM invitada 32, es decir, se ejecutan en un procesador virtual de la VM 32. En cambio, se dice que el hipervisor 30 se ejecuta fuera de la VM invitada 32
En algunas realizaciones, exponer la VM invitada 32 comprende configurar una estructura de datos utilizada por el hipervisor 30 para gestionar el funcionamiento de la VM invitada 32. Tal estructura se denominará en esta invención objeto de estado de máquina virtual (VMSO). Los VMSO ejemplares incluyen la estructura de control de máquina virtual (VMCS) en las plataformas Intel® y el bloque de control de máquina virtual (VMCB) en las plataformas AMD®. En algunas realizaciones, el procesador 16 asocia una región en la memoria con cada VMSO, de modo que el software puede hacer referencia a un VMSO específico utilizando una dirección de memoria o puntero (por ejemplo, un puntero VMCS en plataformas Intel®).
Cada VMSO puede comprender datos que representan un estado actual de un procesador virtualizado respectivo expuesto en el sistema cliente 12. En configuraciones multihilo, el procesador de hardware 16 puede operar una pluralidad de núcleos, comprendiendo además cada núcleo múltiples procesadores lógicos, donde cada procesador lógico puede procesar un hilo de ejecución independientemente de, y simultáneamente con, otros procesadores lógicos. Múltiples procesadores lógicos pueden compartir algunos recursos de hardware, por ejemplo, una MMU común. En un entorno multihilo, puede configurarse un VMSO distinto para cada procesador lógico distinto. Cada VMSO puede comprender un área de estado de invitado y un área de estado de anfitrión, conteniendo el área de estado de invitado el estado de la CPU de la VM respectiva (es decir, del procesador virtualizado respectivo) y almacenando el área de estado de anfitrión el estado actual del hipervisor 30. En algunas realizaciones, el área de estado de invitado del VMSO incluye el contenido de los registros de control (por ejemplo, CR0, CR3, etc.), el puntero de instrucción (por ejemplo, RIP), registros de propósito general (por ejemplo, EAX, ECX, etc.), y registros de estado (por ejemplo, EFLAGS) del procesador virtual de la VM respectiva, entre otros. El área de estado de anfitrión del VMSO puede incluir un puntero (por ejemplo, un puntero EPT en las plataformas Intel®) a una tabla de páginas configurada para traducciones de direcciones para la VM respectiva.
En algunas realizaciones, el procesador 16 puede almacenar una parte de un VMSO dentro de registros/cachés internos dedicados, mientras que otras partes del VMSO respectivo pueden residir en la memoria 18. En cualquier momento dado, como máximo un VMSO (denominado en esta invención VMSO actual) puede cargarse en un procesador lógico, identificando la máquina virtual que tiene actualmente el control del procesador lógico respectivo. Cuando el procesador 16 cambia de ejecutar software dentro de la VM (por ejemplo, la aplicación 36a en la Figura 3) a ejecutar software fuera de la VM respectiva (por ejemplo, el hipervisor 30), el procesador 16 puede guardar el estado actual del procesador en el área de estado de invitado del VMSO actual. y cargue el estado de anfitrión del VMSO en el procesador. A la inversa, cuando el procesador 16 cambia de ejecutar software fuera de la VM a ejecutar software dentro de la VM respectiva, el procesador 16 puede guardar el estado actual del procesador en el área de estado de anfitrión del VMSO y cargar el estado de invitado del VMSO actual en el procesador 16.
En algunas realizaciones, un motor de introspección 40 se ejecuta fuera de todas las VM invitadas expuestas en el sistema cliente respectivo. La introspección es un término establecido en la técnica de la virtualización de hardware, que denota genéricamente recopilar información acerca de diversos aspectos del funcionamiento de una máquina virtual desde una posición fuera de la VM respectiva. En algunas realizaciones de la presente invención, la introspección comprende operaciones tales como monitorizar los procesos que se ejecutan dentro de la VM invitada 32, interceptar un intento de ejecutar una cierta función del SO o instrucción del procesador dentro de la VM invitada 32, interceptar un intento de acceder a una página de memoria utilizada por la VM invitada 32, y determinar una ubicación en la memoria 18 donde se almacenan los datos específicos utilizados por la VM invitada, entre otros. El motor 40 puede incorporarse en el hipervisor 30, o puede entregarse como un componente de software distinto e independiente del hipervisor 30, pero que se ejecuta a un nivel de privilegio de procesador sustancialmente similar al del hipervisor 30. Un único motor 40 puede estar configurado para realizar una introspección de múltiples VM que se ejecutan en el sistema cliente 12. El motor 40 puede colaborar con el hipervisor 30 para descifrar las comunicaciones que entran y/o salen de los sistemas cliente 12. Más específicamente, el motor 40 puede estar configurado para ubicar aproximadamente dentro de la memoria 18 una clave de cifrado utilizada para cifrar un mensaje enviado o recibido por la VM invitada 32, como se detalla a continuación.
El software que se ejecuta en el sistema cliente 12 puede comprender además un filtro de red 42 configurado para interceptar las comunicaciones que entran o salen de la VM invitada 32 y para intercambiar información con el motor de introspección 40. El filtro 42 puede escuchar puertos de red específicos, por ejemplo, conexiones del puerto 443 que respetan el protocolo TLS. El filtro 42 puede ejecutarse dentro o fuera de la VM 32. Cuando se ejecuta fuera de la VM 32, un solo filtro de red puede monitorizar las comunicaciones que entran o salen de múltiples VM que se ejecutan en el sistema cliente 12. Para lograr tal monitorización, el hipervisor 30 puede encaminar todas las comunicaciones dentro y/o fuera del sistema cliente 12 a través del filtro de red 42. El filtro 42 puede tener control exclusivo del (de los) adaptador(es) de red 26, una configuración que puede implementarse, por ejemplo, utilizando tecnología VT-d® de Intel®. Cuando se monitorizan múltiples VM, el filtro 42 puede mantener una cola de paquetes específica de VM, es decir, asociar cada paquete de red interceptado con una VM de origen y/o destino.
En algunas realizaciones, el motor de Introspección 40 opera detectando diversos eventos que se producen durante la ejecución del software dentro de la VM invitada 32. Eventos ejemplares detectados por el motor de introspección 40 incluyen, por ejemplo, una excepción y/o interrupción del procesador, un intento de ejecutar una función particular del SO invitado 34, un cambio de privilegio del procesador (por ejemplo, una llamada al sistema), un intento de acceso ( leer desde, escribir en y/o ejecutar desde) una ubicación de memoria particular, etc. El motor de introspección 40 puede estar configurado además para determinar las direcciones de memoria de diversos componentes de software que se ejecutan dentro de la VM invitada 32, como se describe más adelante.
Algunas realizaciones comprenden además un agente de utilidad 44 que se ejecuta dentro de la VM invitada 32, colaborando el agente 44 con el motor de introspección 40 para detectar y analizar eventos que se producen dentro de la VM invitada 32. El agente 44 puede comprender, por ejemplo, un controlador que se ejecuta en el nivel de privilegio del procesador del SO invitado 34 (por ejemplo, anillo 0, modo kernel), y puede estar registrado como manipulador para diversos eventos del procesador tales como fallos de página e interrupciones de hardware. Una ventaja de tales configuraciones es que cierta información es mucho más fácil de obtener desde dentro de una VM que desde fuera de la VM respectiva, ya que un agente interno tiene acceso a toda la funcionalidad del SO invitado 34. Una desventaja es que los agentes que se ejecutan dentro de la VM invitada 32 son potencialmente vulnerables al software malicioso que se ejecuta dentro de la VM respectiva. Para mitigar este riesgo, algunas realizaciones pueden inyectar el agente 44 solo temporalmente dentro de la VM invitada 32, y pueden borrar el agente 44 después de que el agente 44 complete la ejecución.
Para detectar eventos que se producen dentro de la VM invitada 32, el motor de introspección 40 puede emplear cualquier procedimiento conocido en la técnica de la virtualización. Una categoría importante de procedimientos utiliza un intento de acceder a una ubicación de memoria particular como indicador de la ocurrencia de un evento en particular. Para detectar tal intento de acceso a la memoria, algunas realizaciones configuran permisos de acceso a la memoria de modo que el intento violará los permisos respectivos. A continuación, la violación es interceptada por el motor de introspección y/o el agente de utilidad 44. Las máquinas virtuales operan típicamente con una memoria física virtualizada, también conocida en la técnica como memoria física de invitado. La memoria física virtualizada comprende una representación abstracta de la memoria física real 18, por ejemplo, como un espacio contiguo de direcciones específicas para cada VM, con partes de dicho espacio asignadas a direcciones dentro de la memoria física 18 y/o dispositivos de almacenamiento físicos 24. En las plataformas de virtualización de hardware modernas, tal asignación se logra típicamente a través de estructuras y mecanismos de datos dedicados controlados por el procesador 16, conocido como traducción de direcciones de segundo nivel (SLAT). Las implementaciones populares de SLAT incluyen tablas de páginas extendidas (EPT) en plataformas Intel® e indexación de virtualización rápida (RVI)/tablas de páginas anidadas (NPT) en plataformas AMD®. En tales sistemas, la memoria física virtualizada se particiona en unidades conocidas en la técnica como páginas, representando una página la unidad más pequeña de memoria física virtualizada asignada individualmente a la memoria física a través de SLAT, es decir, la asignación entre la memoria física y virtualizada se realiza con granularidad de página. Todas las páginas tienen típicamente un tamaño predeterminado, por ejemplo, 4 kilobytes, 2 megabytes, etc. El particionamiento de la memoria física virtualizada en páginas se configura normalmente mediante el hipervisor 30. En algunas realizaciones, el hipervisor 30 también configura las estructuras SLAT y, por lo tanto, la asignación entre la memoria física y la memoria física virtualizada. En algunas realizaciones, un puntero a una estructura de datos SLAT (por ejemplo, a una tabla de páginas) se almacena dentro del VMSO de la máquina virtual respectiva. La asignación real (traducción) de una dirección de memoria física virtualizada a una dirección de memoria física puede comprender buscar la dirección de memoria física en una memoria intermedia de traducción anticipada (TLB) del sistema cliente 12. En algunas realizaciones, la traducción de direcciones comprende realizar un recorrido de páginas, que incluye un conjunto de búsquedas de direcciones sucesivas en un conjunto de tablas de páginas y/o directorios de páginas, y realizar cálculos tales como añadir un desplazamiento de una página a una dirección relativa a la página respectiva.
La Figura 4 ilustra tal asignación de direcciones de memoria en una realización como se muestra en la Figura 3. Tras la exposición por el hipervisor 30, la VM invitada 32 ve un espacio de memoria física virtualizada 218 como su propio espacio de memoria física. A un objeto de software (por ejemplo, la aplicación 36a) que se ejecuta dentro de la VM invitada 32 se le asigna un espacio de memoria virtual 318 por parte del SO invitado 34. Cuando el objeto de software intenta acceder a un contenido de una página de memoria ejemplar 50a del espacio 318a, una dirección de la página 50a es traducida por el procesador virtualizado de la VM invitada 32 en una dirección de una página 50b del espacio de memoria física virtualizada 218, en función de las tablas de páginas configuradas y controladas por el SO invitado 34. La dirección de la página 50b es asignada además por el procesador físico 16 a una dirección de una página 50c dentro de la memoria física 18 utilizando SLAT configurada por el hipervisor 30.
El espacio de direcciones virtuales 218 se conoce comúnmente en la técnica como memoria física de invitado, y una dirección dentro de uno de tales espacios de memoria se denomina dirección física de invitado (GPA). El espacio de direcciones 318 se denomina normalmente memoria virtual de invitado y contiene direcciones virtuales de invitado (GVA). Las direcciones dentro de la memoria física 18 se denominan normalmente direcciones físicas de anfitrión (HPA). Por lo tanto, una traducción/asignación de direcciones tal como 52 en la Figura 4 se denomina traducción de GVA a GPA. En cambio, las traducciones de direcciones tales como 54 se conocen comúnmente como traducciones de GPA a HPA.
En algunas realizaciones, el hipervisor 30 configura su propio espacio de memoria virtual 418 que comprende una representación de la memoria física 18, y emplea un mecanismo de traducción (por ejemplo, tablas de páginas) para asignar direcciones en el espacio 418 a direcciones en la memoria física 18. En la Figura 4 , tal asignación ejemplar traduce la dirección de una página 50f dentro del espacio virtual 418 a la dirección física de la página 50c, y la dirección de una página 50d a la dirección física de la página 50e. Tales asignaciones permiten potencialmente que cualquier objeto de software que se ejecute en el nivel de privilegio del procesador del hipervisor 30 administre páginas de memoria que pertenecen a objetos de software que se ejecutan dentro de diversas VM que se ejecutan en el sistema cliente 12. En particular, el motor de introspección de memoria 40 puede así enumerar, leer, escribir y controlar el acceso a las páginas de memoria física utilizadas por cualquier proceso que se ejecute dentro de la VM invitada 32.
En algunas realizaciones, la detección de un evento que se produce dentro de la VM invitada 32 comprende que el motor de introspección 40 colabore con el hipervisor 30 para establecer permisos de acceso a la memoria dentro de una estructura de datos SLAT. Estas funciones pueden ser específicas de la plataforma, pero los permisos de acceso se establecen típicamente con granularidad de página. Por ejemplo, en las plataformas Intel® que soportan virtualización, la entrada EPT de cada página de memoria incluye un conjunto de bits de permiso de acceso que indican si la página respectiva puede ser leída, escrita y ejecutada, respectivamente. Cuando un intento de acceder a una página de memoria particular viola un permiso de acceso establecido para la página de memoria respectiva, el intento respectivo puede activar un evento de procesador, como una excepción o un evento de salida de máquina virtual (VMExit en plataformas Intel®). En respuesta al evento de procesador, el procesador 16 puede cambiar para ejecutar una rutina de manipulador de eventos fuera de la VM respectiva, lo que permite que el motor de introspección 40 detecte la ocurrencia de la violación de acceso respectiva. En una realización alternativa, una infracción de acceso a la memoria puede activar una excepción de procesador (por ejemplo, una excepción de virtualización o #VE en plataformas Intel®). En respuesta a tales eventos de procesador, el procesador 16 puede cambiar a ejecutar una rutina de manipulador de eventos dentro de la VM respectiva, es decir, sin salir de la VM respectiva. En realizaciones que tienen un agente de utilidad 44 como se muestra en la Figura 4 , el agente 44 puede registrarse como un manipulador de excepciones de virtualización, detectando así violaciones de acceso a la memoria.
En algunas realizaciones, una entrada SLAT de una página de memoria comprende además campos (por ejemplo, bits) que indican si se ha accedido a la página respectiva y/o si se ha escrito en la página respectiva. Tales bits se denominan típicamente bits a los que se ha accedido y sucios. Algunas realizaciones utilizan bits a los que se ha accedido y/o sucios para identificar páginas de memoria que es probable que contengan claves de cifrado, como se muestra adicionalmente a continuación.
En algunas realizaciones de la presente invención, el motor de introspección 40 está configurado para monitorizar las comunicaciones cifradas que entran o salen de la VM invitada. Una sesión de comunicación comprende típicamente una negociación preliminar entre las partes, seguida del intercambio real de mensajes cifrados. En la técnica, al primero se denomina normalmente toma de contacto, mientras que el contenido del mensaje se conoce comúnmente como cabida útil. La toma de contacto comprende un conjunto de intercambios que especifican, entre otros, una cifra (es decir, un algoritmo de cifrado) y un ingrediente para derivar una clave de cifrado. Cifras ejemplares incluyen cifras de bloques derivados del estándar de cifrado avanzado (AES) y cifras de flujo como ChaCha-20. En algunas realizaciones, la toma de contacto puede comprender un intercambio de claves real realizado en función de un protocolo específico y/o etapas adicionales para verificar la identidad de una o ambas partes. Dependiendo de la cifra, los ingredientes para derivar la clave de cifrado pueden comprender un conjunto de números aleatorios, una clave pública de las partes comunicantes, etc.
Un ejemplo concreto de un protocolo de comunicación seguro es el protocolo de seguridad en la capa de transporte (TLS) descrito, por ejemplo, en la solicitud de comentarios (RFC) 5246 del Grupo de trabajo en red del grupo especial sobre ingeniería de Internet (IETF). El protocolo TLS es utilizado actualmente por la mayoría de navegadores, comercio electrónico y aplicaciones de banca electrónica segura. Una sesión de TLS incluye, entre otros, un identificador de sesión único, una especificación de cifra y un secreto maestro compartido entre las partes en comunicación. El secreto maestro es calculado normalmente por cada parte por separado, utilizando ingredientes intercambiados durante la toma de contacto. El protocolo de toma de contacto de TLS comprende las siguientes etapas/fases:
a) Intercambiar mensajes de saludo para acordar parámetros criptográficos para la comunicación. Un mensaje Client Hello enviado desde un cliente a un servidor puede indicar una lista de cifras soportadas e incluir un número aleatorio proporcionado por el cliente, entre otros. Un mensaje Server Hello enviado desde el servidor al cliente puede indicar una elección de cifra de entre los propuestos por el cliente e incluir un número aleatorio proporcionado por el servidor.
b) Realizar autenticación de las partes. El servidor puede enviar un certificado que confirma su identidad y puede solicitar a su vez un certificado del cliente. Esta etapa puede comprender un mensaje ClientCertificate del cliente y un mensaje ServerCertificate del servidor.
c) Intercambiar los parámetros criptográficos necesarios para permitir que el cliente y el servidor acuerden o calculen un secreto compartido (por ejemplo, un secreto premaestro). Los parámetros criptográficos pueden comprender un conjunto de claves u otra información en función de la cifra escogida. Por ejemplo, las claves intercambiadas durante esta fase pueden ser claves criptográficas públicas (Rivest-Shamir-Adleman, Diffie-Hellman, etc.) del cliente y del servidor. Esta etapa puede comprender un mensaje ClientKeyExchange transmitido por el cliente y/o un mensaje ServerKeyExchange transmitido por el servidor. Cuando se utiliza Rivest-Shamir-Adleman (RSA) para autenticación del servidor e intercambio de claves, el cliente genera un secreto premaestro, cifrado con la clave pública del servidor y se envía al servidor como parte del mensaje ClientKeyExchange. El servidor utiliza a continuación su clave privada para descifrar el secreto premaestro. Cuando se utiliza Diffie-Hellman, cada lado calcula su propio secreto premaestro en función de una clave negociada.
d) Intercambiar mensajes ChangeCipherSpec para indicar que cada parte remitente cifrará en lo sucesivo los mensajes salientes de la sesión utilizando los parámetros criptográficos acordados.
e) Intercambiar mensajes Finished (ClientFinished y ServerFinished) para finalizar formalmente la toma de contacto de la sesión. Para permitir que el cliente y el servidor verifiquen que su par ha recibido y/o calculado los parámetros de seguridad correctos (por ejemplo, un secreto compartido) y que la toma de contacto se produjo sin falsificación por parte de un atacante, los mensajes ClientFinished y ServerFinish son cifrados. Cada parte receptora debe intentar descifrar el mensaje Finished recibido; el descifrado exitoso indica una toma de contacto exitosa.
En el protocolo TLS, cada parte calcula un secreto maestro en función de los parámetros criptográficos intercambiados durante la toma de contacto, por ejemplo, en función del secreto premaestro y números aleatorios proporcionados por el cliente y el servidor. A partir del secreto maestro, cada lado puede determinar a continuación un conjunto de claves de sesión. El término "claves de sesión" se utilizará en esta invención para denotar genéricamente valores de parámetros criptográficos utilizados para cifrar y/o descifrar comunicaciones durante la sesión actual. Las claves de sesión ejemplares comprenden un secreto premaestro, un secreto maestro, claves de escritura del lado del cliente y del servidor, vectores/valores de seguridad de inicialización y códigos de autenticación de mensajes (MAC), entre otros. En una realización que utiliza criptografía simétrica, las claves de cifrado y descifrado son idénticas, por lo que el conocimiento de una clave de cifrado es suficiente para el descifrado. En la criptografía asimétrica, las claves de cifrado y descifrado difieren. Cómo se utilizan las claves de sesión depende, por tanto, de la cifra negociada.
Algunas realizaciones de la presente invención se basan en la observación de que las claves de sesión utilizadas para el cifrado durante la sesión actual deben ser calculadas por cada lado antes de enviar el mensaje Finished de la toma de contacto (de lo contrario, el mensaje respectivo no puede ser cifrado). Además, los ingredientes para derivar las claves de sesión son recibidos por cada lado como parte de la toma de contacto, por ejemplo, como parte de los mensajes Server-Hello, ClientKeyExchange y ServerKeyExchange. Por lo tanto, es probable que las claves de sesión aparezcan en la memoria del sistema cliente en algún momento durante la toma de contacto. Algunas realizaciones de la presente invención utilizan la sincronización de la toma de contacto para determinar una ubicación de memoria aproximada de las claves de sesión.
La Figura 5 muestra una secuencia ejemplar de etapas realizadas por el motor de introspección 40 según algunas realizaciones de la presente invención. En una secuencia de etapas 502-504, el motor 40 puede colaborar con el filtro de red 42 para detectar un mensaje de toma de contacto transmitido entre el sistema cliente 12 a una parte remota (por ejemplo, el servidor de contenido 13 en la Figura 1). En un ejemplo, una solicitud de conexión puede provenir de una aplicación que se ejecuta dentro de la VM invitada 32, por ejemplo, un navegador, y puede indicar la intención de iniciar una sesión de comunicación cifrada, como una sesión TLS, una sesión SSH, una sesión VPN, etc. Como tal, la solicitud de conexión puede comprender un mensaje de toma de contacto (por ejemplo, ClientHello) al servidor 13. En otro ejemplo, el mensaje de toma de contacto detectado comprende un mensaje del servidor 13 (por ejemplo, un ServerHello), transmitido en respuesta a un ClientHello recibido del sistema cliente 12.
Cuando se detecta un mensaje de toma de contacto, en una etapa 506 el motor de introspección 40 puede extraer un conjunto de parámetros de toma de contacto, tales como un ID de sesión y un indicador de la cifra que se utilizará para la sesión. En una realización que monitoriza las conexiones TLS, la etapa 506 puede extraer además parámetros criptográficos tales como números aleatorios proporcionados por el servidor y/o el cliente. El motor de introspección 40 a continuación puede ordenar al filtro de red 42 que reenvíe el mensaje de toma de contacto a su VM destinataria prevista (por ejemplo, la VM invitada 32 en la Figura 3).
En una etapa 508, el motor de introspección 40 puede obtener una instantánea de memoria optimizada de la VM invitada 32. Una instantánea de memoria comprende una copia del contenido de un conjunto de páginas de memoria utilizadas por la VM respectiva. En algunas realizaciones, la instantánea optimizada comprende el contenido de un conjunto de páginas de memoria que lo más probable es que contengan las claves de sesión, o al menos valores de parámetros criptográficos utilizados para derivar las claves de sesión de la sesión de comunicación actual. Más adelante se describen procedimientos ejemplares para obtener la instantánea optimizada.
Una etapa 510 puede recoger la cabida útil cifrada de la sesión actual, obteniendo una copia de la cabida útil respectiva del filtro de red 42. En algunas realizaciones, el filtro de red 42 está configurado para mantener múltiples colas de datos, por ejemplo, indexadas por ID de sesión y/o máquina virtual. El filtro de red 42 puede, por tanto, recuperar de manera inequívoca y coherente la cabida útil cifrada de una sesión incluso cuando la cabida útil respectiva está dividida en múltiples paquetes intercalados entre otras comunicaciones. A continuación, en una etapa 512, el motor de introspección 40 puede transmitir la instantánea de memoria optimizada recogida, los parámetros de toma de contacto y la cabida útil cifrada al servidor de seguridad 15 para su análisis.
La Figura 6 muestra una secuencia ejemplar de etapas realizadas por el motor de introspección 40 para obtener una instantánea de memoria optimizada de la VM invitada 32. Para derivar la ubicación de memoria aproximada de las claves de sesión, algunas realizaciones de la presente invención identifican un conjunto de páginas de memoria cuyo contenido ha cambiado durante un intervalo de tiempo que coincide aproximadamente con el momento en que se generaron las claves de sesión respectivas.
Las páginas de memoria cuyo contenido ha cambiado recientemente, es decir, páginas en las que se escribió recientemente, pueden identificarse utilizando cualquier procedimiento conocido en la técnica. En un ejemplo, el motor de introspección 40 puede marcar un conjunto de páginas de memoria utilizadas por la VM invitada 32 como no escribibles en una estructura de datos SLAT asociada con la VM invitada 32. Cualquier intento posterior de modificar el contenido de tal página constituirá entonces una violación de acceso a la memoria y, por lo tanto, activará un evento de procesador (por ejemplo, Salida de VM o excepción de virtualización), que a continuación será interceptado por el motor de introspección 40 y/o el agente de utilidad 44. En respuesta a la interceptación del evento, el motor 40 puede marcar la página respectiva como escribible y volver a lanzar la VM respectiva, para permitir que prosiga la escritura respectiva. De tal manera, el motor 40 puede terminar con una lista de páginas de memoria "sucias", cuyo contenido constituye la instantánea de memoria optimizada deseada.
El escenario anterior es bastante ineficiente y computacionalmente costoso. Son posibles varias optimizaciones en plataformas de hardware seleccionadas. Por ejemplo, en plataformas que soportan bits a los que se ha accedido y/o sucios, algunas realizaciones pueden restablecer el bit sucio de una entrada de tabla de páginas (entrada EPT en plataformas Intel®) de una página de memoria utilizada por la VM invitada 32, y comprobar el valor del bit sucio en algún momento posterior para determinar si se ha escrito en la página respectiva. Este mecanismo puede optimizarse aún más. Por ejemplo, ciertas generaciones de procesadores Intel® poseen una característica denominada registro de modificación de página (PML), que exporta automáticamente una lista de páginas cuyo contenido ha cambiado a una ubicación de memoria accesible al motor de introspección de memoria 40.
Otra posible estrategia de optimización utiliza una función de migración en tiempo real que algunos hipervisores (por ejemplo, Xen®) utilizan para migrar y/o clonar eficientemente máquinas virtuales. La característica respectiva se construye alrededor de un conjunto de primitivas de registro sucio que rastrean automáticamente las páginas en las que se ha escrito y exportan una lista de tales páginas en función de un programa.
La secuencia de etapas ilustrada en la Figura 6 identifica páginas que han sido modificadas durante un intervalo de tiempo entre un evento de sesión de un primer- tipo y un evento de sesión de un segundo tipo. Los eventos de sesión en esta invención denotan diversas fases de un protocolo de comunicación, por ejemplo, como se describió anteriormente en relación con el protocolo TLS. Eventos de sesión ejemplares comprenden, por ejemplo, enviar y/o recibir mensajes que forman parte de una sesión de comunicación particular (por ejemplo, un mensaje de toma de contacto transmitido entre el sistema cliente 12 y el servidor 13, un mensaje que contiene una parte de una cabida útil cifrada de la sesión respectiva, etc.). Una detección del 1er tipo de evento (etapas 522-524) activa la monitorización de modificación de página (etapa 526). En algunas realizaciones, la etapa 526 comprende suspender el funcionamiento de la VM invitada 32, restablecer el bit sucio de las entradas SLAT que corresponden a las páginas de memoria utilizadas por la VM invitada 32 y volver a lanzar la VM invitada 32. En algunas realizaciones, el conjunto de páginas de memoria cuya escritura será monitorizada puede reducirse, por ejemplo, a un conjunto de páginas utilizadas por el proceso (por ejemplo, navegador) que lleva a cabo la sesión de comunicación actual, o por un proceso que maneja el cifrado/descifrado (por ejemplo, LSASS.EXE en Windows®). El motor de introspección de memoria 40 puede identificar páginas utilizadas por el proceso/aplicación respectivo mediante estructuras de datos de recorrido utilizadas por el SO invitado 34 para gestionar hilos y procesos. La tarea de identificar tales páginas de memoria puede facilitarse colaborando con el agente de utilidad 44 que se ejecuta dentro de la VM invitada 32 - el agente 44 típicamente tiene acceso a mucha más información que el motor 40.
La monitorización de escrituras se desactiva (etapa 534) tras detectar la ocurrencia de un evento de sesión de un segundo tipo (etapas 528-530), por ejemplo, la recepción de otro mensaje de toma de contacto de la sesión respectiva. Una etapa 532 puede suspender la ejecución de la VM invitada 32, para impedir que se produzcan modificaciones en la memoria mientras se toma la instantánea de la memoria. En una secuencia adicional de etapas 536-538, el motor 40 identifica las páginas en las que se ha escrito entre el primer y el segundo evento de sesión, y copia el contenido de tales páginas como una instantánea de memoria optimizada. En una etapa adicional 540, el motor de introspección 40 puede volver a lanzar la VM invitada 32.
En una realización alternativa, la ejecución de la VM invitada 32 no se suspende mientras dure la recogida de la instantánea de memoria optimizada. Es probable que tales suspensiones ralenticen el sistema y afecten a la experiencia del usuario. Además, suspender la VM invitada 32 puede no ser deseable por motivos de seguridad, ya que puede revelar el hecho de que la VM respectiva está siendo monitorizada. Como las claves de sesión se escriben típicamente una vez y no se trasladan en la memoria, no se requiere la coherencia de todas las páginas utilizadas por la VM invitada 32. Uno simplemente debe asegurarse de que la sesión actual no finalice (y, por lo tanto, las claves no desaparezcan) antes de que se copien las páginas sucias. En lugar de detener la VM invitada 32, algunas realizaciones utilizan el filtro de red 42 para manipular el flujo de comunicación dentro o fuera de la VM invitada 32. Por ejemplo, el filtro 42 puede retrasar la entrega de paquetes de datos desde el servidor 13 a la VM invitada 32 mientras dure la recogida de la instantánea de memoria. El retardo puede parecerle al software que se ejecuta dentro de la VM invitada 32 como latencia de red bastante normal. Para lograr la funcionalidad de retardo, algunas realizaciones utilizan un mecanismo de notificación entre procesos para comunicarse entre el motor 40 y el filtro de red 42. Por ejemplo, el motor 40 puede notificar al filtro 42 en respuesta a una recogida exitosa de la instantánea de memoria optimizada. A su vez, el filtro 42 puede notificar al motor 40 en respuesta a la interceptación de ciertos paquetes de red (por ejemplo, los mensajes Server-Hello o ServerFinished).
Tras la observación de que las claves de sesión se derivan típicamente durante la parte de toma de contacto de una sesión, diversas realizaciones de la presente invención utilizan diversos eventos de toma de contacto como eventos de sesión del 1er y el 2° tipo. Por ejemplo, en algunas realizaciones, los eventos del 1er tipo - que activan la monitorización de páginas - incluyen la interceptación por el filtro de red 42 de un paquete de red que comprende un ingrediente para derivar una clave de sesión para la sesión respectiva. Ingredientes ejemplares incluyen un número aleatorio, una clave y un secreto compartido, entre otros. Uno de tales eventos de sesión ejemplares del 1er tipo es un mensaje ServerHello recibido del servidor 13. Otras realizaciones pueden utilizar. Otras elecciones posibles para un evento del 1er tipo incluyen un mensaje ClientHello de la VM invitada 32, un ClientKeyExchange y un mensaje ServerKeyExchange. En cuanto a los eventos de sesión del 2° tipo - que desactivan la monitorización de páginas -algunas realizaciones utilizan la interceptación por el filtro de red 42 de un mensaje cifrado transmitido hacia o desde la VM invitada 32. Un ejemplo de un evento del 2° tipo es la interceptación de un mensaje ClientFinished o ServerFinished. Otro evento de elección posible del 2° tipo es la interceptación de un paquete que comprende una parte de una cabida útil cifrada utilizando una clave de sesión de la sesión actual.
Los procedimientos ejemplares descritos anteriormente en relación con las Figs. 5-6 se aplican a una sola sesión de comunicación. En la práctica, pueden llevarse a cabo múltiples sesiones simultáneamente dentro de una sola VM, por ejemplo, mediante múltiples instancias de un navegador (como en la navegación con pestañas), o mediante distintas aplicaciones que se ejecutan al mismo tiempo. Algunas realizaciones están configuradas para rastrear páginas sucias para cada sesión por separado. Por claridad, la descripción a continuación se centrará en la tarea particular de recoger instantáneas de memoria de sesiones TLS, comprendiendo cada instantánea páginas de memoria modificadas entre un mensaje ServerHello de cada sesión y un mensaje ClientFinished de la sesión respectiva.
Obtener instantáneas optimizadas específicas de la sesión plantea un desafío adicional para esclarecer una secuencia arbitraria de eventos de sesión. Algunas realizaciones configuran el mecanismo de monitorización de páginas para identificar todas las páginas en las que se ha escrito entre dos eventos consecutivos. Sin embargo, tales eventos pueden pertenecer a sesiones distintas y pueden ser del primer tipo o del segundo tipo (para tomar prestada la nomenclatura utilizada anteriormente en relación con la Figura 6). Para tener en cuenta esta ambigüedad, algunas realizaciones del motor de introspección 40 mantienen una lista global de sesiones actualmente activas, comprendiendo cada entrada de la lista información tal como una ID de sesión, una dirección de protocolo de Internet (IP) de origen, número de puerto de origen, dirección IP de destino, número de puerto de destino y una indicación de tiempo de un mensaje ServerHello de la sesión respectiva. El motor 40 puede mantener además una matriz global de indicaciones de tiempo, almacenando al menos una indicación de tiempo para cada página de memoria monitorizada. Cada indicación de tiempo de la matriz puede ser indicativa de un momento en el tiempo en el que se ha escrito en la página respectiva. Por esta razón, la matriz de indicaciones de tiempo se considerará en esta invención como matriz de indicación de tiempo de modificación de página.
La Figura 7 muestra una secuencia ejemplar de etapas realizadas por el motor de introspección de memoria en una realización configurada para rastrear múltiples sesiones de TLS simultáneas. Una etapa 552 inicializa la matriz de indicaciones de tiempo de modificación de página. La etapa 552 puede comprender además configurar el mecanismo de detección de modificación de página (por ejemplo, PML, restablecer bits sucios, etc.). Una secuencia de etapas 554-556 escucha eventos de tipo Hello o Finished. Cuando se detecta un evento, en una etapa 558, el motor de introspección 40 puede invocar el mecanismo de detección de modificación de página para identificar páginas actualmente sucias, es decir, páginas de memoria cuyo contenido ha cambiado desde el evento detectado anterior, independientemente de si fue un mensaje Hello o Finished. Una etapa 560 puede actualizar a continuación la matriz de indicaciones de tiempo de modificación de página de modo que las indicaciones de tiempo que corresponden a páginas sucias se actualicen a la indicación de tiempo actual, o a una indicación de tiempo indicativa de la ocurrencia del evento detectado actualmente. Cuando el evento respectivo es del 1er tipo (p. ej, ServerHello), en una etapa 564 el motor 40 puede inicializar una nueva estructura de datos de sesión, rellenando un ID de sesión, una dirección IP de origen y de destino y puertos, entre otros. Una etapa adicional 566 registra una indicación de tiempo indicativa del evento ServerHello actual, que en esta invención se considerará como indicación de tiempo de Hello de la sesión respectiva
Cuando el evento detectado actualmente es del 2° tipo (por ejemplo, ClientFinished), en una etapa 570, el motor de introspección 40 puede recorrer la matriz de indicaciones de tiempo de modificación de página. Para cada página, algunas realizaciones pueden comparar la indicación de tiempo de modificación de página de la página respectiva con la indicación de tiempo de Hello de la sesión respectiva (es decir, de la sesión a la que pertenece el evento detectado actualmente). Cuando la indicación de tiempo de modificación indica que se ha escrito en la página respectiva después del evento Hello de la sesión respectiva, el motor 40 puede incluir la página respectiva en la instantánea de memoria optimizada de la sesión respectiva.
La Figura 8 muestra un software ejemplar que se ejecuta en el servidor de seguridad 15, que incluye un motor de descifrado 60 según algunas realizaciones de la presente invención. Para cada sesión de comunicación monitorizada, el motor 60 puede recibir datos de sesión del sistema cliente respectivo (por ejemplo, los sistemas cliente 12a-d en la Figura 1), tales como un conjunto de parámetros de toma de contacto 72, una instantánea de memoria optimizada 70 y/o una cabida útil cifrada 74. Tales datos pueden comprender además indicadores que asocian inequívocamente cada elemento con un sistema cliente, VM y/o sesión de comunicación particular. Los parámetros de toma de contacto 72 pueden comprender un indicador de una cifra utilizada para cifrar la cabida útil 74. La instantánea de memoria optimizada 70 comprende una copia de un contenido de una página de memoria de un sistema cliente, como se describió anteriormente. La cabida útil 74 comprende una parte de una comunicación cifrada (por ejemplo, un paquete de red).
La Figura 9 muestra una secuencia ejemplar de etapas realizadas por el motor de descifrado 60 según algunas realizaciones de la presente invención. En respuesta a la recepción de datos de sesión del sistema cliente 12 (etapa 582), en una etapa 584 el motor 60 puede extraer de los datos de sesión un indicador de la cifra utilizada en la sesión respectiva. El motor de descifrado 60 puede seleccionar a continuación un procedimiento/algoritmo de descifrado en función de la cifra. A continuación, se repite una secuencia de etapas 586-588-590 en un bucle hasta que se satisface una condición de finalización, por ejemplo, hasta que se logra un descifrado exitoso de la cabida útil, o hasta que expira un período de tiempo asignado para el descifrado.
Los intentos de descifrar la cabida útil pueden proceder según cualquier procedimiento conocido en la técnica de la criptografía. El procedimiento para recoger la instantánea de memoria optimizada se diseñó de modo que las claves de sesión, o al menos los valores de los parámetros criptográficos utilizados para derivar las claves de cifrado y descifrado para la sesión respectiva es probable que residan dentro de la instantánea de memoria respectiva. El tamaño de bytes de las claves de sesión puede conocerse a priori, o puede derivarse de los parámetros de cifrado recibidos del sistema cliente 12. Sin embargo, puede que no se conozca la ubicación precisa de las claves de sesión dentro de la instantánea. Por lo tanto, algunas realizaciones pueden buscar el material clave mediante ensayo y error. En uno de tales ejemplos ilustrado en la Figura 9 , una etapa 586 puede derivar una clave de descifrado candidata a partir de la instantánea de memoria optimizada. En una realización que utiliza criptografía simétrica (por ejemplo, protocolo TLS), las claves de cifrado y descifrado son idénticas, por lo tanto, una clave de descifrado candidata puede comprender, por ejemplo, una secuencia de bytes de la instantánea, teniendo la secuencia el tamaño de bytes requerido. En una etapa 588, el motor 60 puede intentar descifrar al menos una parte de la cabida útil de la sesión respectiva utilizando las claves candidatas. El éxito puede evaluarse utilizando diversos procedimientos conocidos en la técnica. Por ejemplo, algunas realizaciones calculan una entropía de información del mensaje descifrado. La entropía baja indica típicamente descifrado exitoso, aunque se sabe que tales procedimientos producen falsos positivos o falsos negativos.
Un enfoque alternativo para el descifrado utiliza lo que se conoce en la técnica como un ataque de texto claro conocido. Una de tales realizaciones explota el hecho de que el motor de descifrado 60 tiene acceso a una versión cifrada de un mensaje conocido, por ejemplo, al contenido de un mensaje ClientFinished y/o ServerFinished (cifrado) intercambiado durante la sesión respectiva. El formato y el texto claro de tales mensajes es conocido a priori, estando documentado en el protocolo TLS.
Algunas realizaciones de la presente invención permiten descifrar algunas o todas las comunicaciones entre un sistema cliente y una parte remota. Ejemplos de tales comunicaciones incluyen cualquier comunicación cifrada utilizando algoritmos de clave simétrica o asimétrica, incluyendo conexiones de capa de conexión segura (Secure Socket Layer, SSL)/seguridad en la capa de transporte (Transport Layer Security, TLS), línea de comandos segura (Secure Shell, SSH), conexiones de red privada virtual (Virtual Prívate Network, VPN) y encaminamiento de cebolla/conexiones de red de anonimato (por ejemplo, el software TOR). Aplicaciones ejemplares de los procedimientos descritos incluyen la detección y el análisis de software malicioso, la detección de intrusión y la vigilancia, entre otras.
En una aplicación ejemplar, un sistema informático que aloja al menos una parte del sistema de descifrado forma parte de un sistema señuelo. Los señuelos están configurados típicamente para permitir la instalación de software malicioso y/o para permitir que un intruso tome el control de algunos aspectos del sistema informático respectivo. El software malicioso y los intrusos pueden utilizar a continuación un canal cifrado para comunicarse con entidades externas, tales como servidores de mando y control (C&C). Permitiendo el descifrado de tales comunicaciones, algunas realizaciones pueden facilitar la investigación sobre malware, intrusión y/o procedimientos de piratería.
Otro uso antimalware ejemplar de algunas realizaciones comprende la detección de contenido malicioso antes de que se infiltre en un sistema cliente. En algunos escenarios de ataque de malware avanzado, un agente de software malicioso llega al cliente a través de una comunicación cifrada con un servidor por lo demás benigno, por ejemplo, a través del correo electrónico (phishing) o publicidad en línea. Debido al cifrado, típicamente el agente no puede ser detectado hasta que haya sido descomprimido e instalado en el anfitrión, o incluso hasta más tarde, cuando realiza alguna acción indicativa de malware. Algunas realizaciones de la presente invención pueden permitir una detección e incapacitación temprana de tales agentes.
En otra aplicación ejemplar, los proveedores de servicios en la nube pueden utilizar algunas realizaciones para inspeccionar el tráfico cifrado en tiempo casi real y detectar rápidamente datos maliciosos que circulan hacia o desde sus servidores. Tal detección puede impedir que los servidores respectivos actúen como plataforma de lanzamiento para un ataque malicioso, por ejemplo, un ataque de denegación de servicio distribuido (DDOS).
El descifrado de comunicación cifrada es una empresa sumamente difícil. Algunos enfoques convencionales para romper el cifrado intentan evitar el descifrado totalmente. Tales procedimientos incluyen, por ejemplo, la modificación de bibliotecas de cifrado para proporcionar información adicional o la introducción de "puertas traseras" que permitan a un usuario obtener acceso discretamente al texto llano de la comunicación respectiva, a una clave de cifrado real o a alguna otra información que conduzca a una clave. Tales enfoques se consideran peligrosos, ya que pueden debilitar la seguridad de Internet a largo plazo. También son inconvenientes por ser típicamente no portables, es decir, efectivos solo en ciertas plataformas de hardware y/o sistemas operativos. Otro inconveniente es que una modificación de una biblioteca criptográfica es visible para el software que se ejecuta en el cliente respectivo y, por lo tanto, puede detectarse y neutralizarse.
Las cifras modernas solo pueden ser descifrar utilizando alguna versión de un ataque de fuerza bruta, que conlleva típicamente un coste computacional sustancial. Uno de tales ataques comprende probar varias claves candidatas, hasta que una finalmente funcione. Algunos sistemas/procedimientos de descifrado convencionales buscan material clave en la memoria del sistema cliente. Sin embargo, no conocer la ubicación real del material clave puede hacer que tales procedimientos resulten poco prácticos debido al inmenso gasto computacional requerido para la búsqueda. Además, es probable que detener la máquina respectiva durante el tiempo necesario para adquirir grandes volcados de memoria afecte negativamente la experiencia del usuario. Algunos enfoques convencionales intentan optimizar la búsqueda de material clave estableciendo "puntos de derivación" con el fin de obtener volcados de memoria en ciertos momentos de ejecución. Sin embargo, los puntos de derivación están predefinidos y, por lo tanto, pueden romperse si se actualiza el sistema subyacente y/o el software de comunicación.
Algunas realizaciones de la presente invención se basan en dos observaciones clave. En primer lugar, un gran número de sistemas cliente que se benefician potencialmente del descifrado se ejecutan en configuraciones de virtualización de hardware (máquinas virtuales). Ejemplos incluyen granjas de servidores y proveedores en la nube de infraestructura de escritorio virtual. Para aprovechar tales configuraciones, algunas realizaciones de la presente invención colocan un motor de introspección fuera de una máquina virtual que lleva a cabo la comunicación cifrada, a un nivel de privilegio de procesador de un hipervisor que expone la VM respectiva. El motor de introspección puede utilizar técnicas de la técnica de virtualización para acceder e inspeccionar el contenido de la memoria utilizada por la VM respectiva, potencialmente sin conocimiento o interferencia del software que se ejecuta dentro de la VM respectiva. Por lo tanto, un solo motor de introspección puede monitorizar discretamente las comunicaciones llevadas a cabo por múltiples VM que se ejecutan simultáneamente en el sistema cliente respectivo.
La segunda observación es que las claves de cifrado, o al menos los parámetros criptográficos utilizados para derivar las claves respectivas, son intercambiados por los socios de comunicación durante una fase específica de una sesión, por ejemplo durante una toma de contacto. Algunas realizaciones utilizan esta observación para derivar una ubicación aproximada de las claves de sesión, permitiendo así una reducción del área de búsqueda de memoria de cientos de megabytes en procedimientos convencionales a unas pocas páginas de memoria (por ejemplo, decenas de kilobytes a unos pocos megabytes). Esto reduce sustancialmente el esfuerzo computacional de descifrado, haciendo factible un ataque de fuerza bruta.
Algunas realizaciones utilizan optimizaciones de hardware de procesadores modernos, como la capacidad de establecer accesos y/o banderas sucias dentro de una entrada de tabla de páginas, o la característica de registro de modificación de página (PML) de algunos procesadores Intel®, para identificar un conjunto de páginas de memoria cuyo contenido cambia durante un intervalo de tiempo que incluye el intercambio y/o la generación de claves de sesión. A continuación, algunas realizaciones buscan el material clave dentro del contenido de las páginas de memoria respectivas.
Al ubicar las claves de sesión en función de las características del protocolo de comunicación, en lugar de basarse en características específicas de hardware o software del sistema cliente/de la máquina virtual, algunas realizaciones permiten el descifrado de comunicaciones en diversos dispositivos (ordenadores personales, teléfonos móviles, electrodomésticos, etc.), así como en sistemas cliente que ejecutan múltiples máquinas virtuales heterogéneas, independientemente del sistema operativo y la aplicación de comunicación (por ejemplo, navegador, aplicación de mensajería, software VPN, etc.).
Para evitar la detección por parte del software que se ejecuta dentro de la VM monitorizada, algunas realizaciones disfrazan los retardos ocasionales causados por la recogida de una instantánea de memoria optimizada de la VM respectiva como latencia de red. En un ejemplo, el motor de introspección colabora con el filtro de red para retrasar la entrega de ciertos paquetes de red a la VM monitorizada mientras dure la adquisición de la instantánea de memoria. Para el software que se ejecuta dentro de la VM, estos retardos pueden parecer estar causados por problemas de transmisión en la red. Además, para evitar afectar a la experiencia del usuario, algunas realizaciones descargan la carga computacional del descifrado sobre una máquina separada (servidor de seguridad). Por lo tanto, el descifrado real puede llevarse a cabo fuera de línea.
Resultará evidente para un experto en la técnica que las realizaciones anteriores pueden alterarse de muchas formas sin apartarse del alcance de la invención. Por consiguiente, el alcance de la invención debería estar determinado por las siguientes reivindicaciones y sus equivalentes legales.

Claims (21)

REIVINDICACIONES
1. Un sistema informático (12) que comprende un procesador de hardware y una memoria, el procesador de hardware configurado para ejecutar una máquina virtual (32) y un motor de introspección, (418), en el que:
la máquina virtual está configurada para llevar a cabo una sesión de comunicación con una parte remota, comprendiendo la sesión de comunicación un mensaje de toma de contacto seguido de una cabida útil cifrada, en el que el mensaje de toma de contacto contiene un parámetro de cifrado utilizado por el sistema informático para derivar una clave de cifrado, y donde la cabida útil cifrada está cifrada con la clave de cifrado; y
en el que el motor de introspección se ejecuta fuera de la máquina virtual y está configurado para:
identificar dentro de la memoria una página de memoria objetivo en función de si un contenido de la página de memoria objetivo ha cambiado (536) entre una ocurrencia de un primer evento de sesión de la sesión de comunicación (524) y una ocurrencia de un segundo evento de sesión de la sesión de comunicación, (530), y
en respuesta, transmitir el contenido de la página de memoria objetivo a un motor de descifrado configurado para descifrar la cabida útil cifrada en función del contenido.
2. El sistema informático de la reivindicación 1, en el que el primer evento de sesión comprende enviar el mensaje de toma de contacto desde el sistema cliente a la parte remota o recibir el mensaje de toma de contacto en el sistema cliente.
3. El sistema informático de la reivindicación 2, en el que la sesión de comunicación cumple con un protocolo de seguridad en la capa de transporte (Transport Layer Security, TLS), y en el que el mensaje de toma de contacto comprende un mensaje ClientHello o un mensaje ServerHello.
4. El sistema informático de la reivindicación 1, en el que el segundo evento de sesión comprende enviar un paquete de datos cifrados desde el sistema cliente a la parte remota o recibir el paquete de datos cifrados en el sistema cliente, y en el que el paquete de datos está cifrado con la clave de cifrado.
5. El sistema informático de la reivindicación 4, en el que la sesión de comunicación cumple con un protocolo de seguridad en la capa de transporte y en el que el paquete de datos comprende una parte de un mensaje ClientFinished o una parte de un mensaje ServerFinished.
6. El sistema informático de la reivindicación 4, en el que el paquete de datos comprende una parte de la cabida útil cifrada.
7. El sistema informático de la reivindicación 1, en el que identificar la página de memoria objetivo comprende:
seleccionar una página de memoria candidata de un grupo de páginas de memoria utilizadas por la máquina virtual; en respuesta a la detección de la ocurrencia del segundo evento de sesión, determinar en función de una entrada de la tabla de páginas de la página de memoria candidata si se ha escrito en la página de memoria candidata antes de la ocurrencia del segundo evento de sesión;
en respuesta a la determinación de si se ha escrito en la página de memoria candidata, cuando se ha escrito en la página de memoria candidata, seleccionar la página de memoria candidata como la página de memoria objetivo.
8. El sistema informático de la reivindicación 1, en el que el al menos un procesador de hardware está configurado para ejecutar además un filtro de red fuera de la máquina virtual, controlando el filtro de red un adaptador de red del sistema cliente, en el que:
el filtro de red está configurado para interceptar el mensaje de toma de contacto y, en respuesta, para transmitir una notificación al motor de introspección; y el motor de introspección está configurado además para inferir la ocurrencia del primer evento de sesión en función de la notificación.
9. El sistema informático de la reivindicación 1, en el que el al menos un procesador de hardware está configurado para ejecutar además un filtro de red fuera de la máquina virtual, controlando el filtro de red un adaptador de red del sistema cliente, en el que:
el motor de introspección está configurado, además, en respuesta a la ocurrencia del segundo evento de sesión, para copiar el contenido de la página de memoria objetivo y, en respuesta, para transmitir una notificación al filtro de red; y
el filtro de red está configurado para interceptar un paquete de datos destinado a la máquina virtual y, en respuesta, para retrasar la entrega del paquete de datos a la máquina virtual hasta recibir la notificación.
10. El sistema informático de la reivindicación 1, en el que el motor de introspección está configurado además, en respuesta a una ocurrencia de un tercer evento, para identificar la página de memoria objetivo además en función de si el contenido de la página de memoria objetivo ha cambiado entre la ocurrencia del primer evento de sesión y la ocurrencia del tercer evento, en el que la ocurrencia del tercer evento está causada por otra sesión de comunicación simultánea a la sesión de comunicación.
11. Un procedimiento implementado por ordenador para descifrar comunicaciones cifradas entre un sistema informático (12) y una parte remota, en el que el sistema informático está configurado para ejecutar una máquina virtual (32) y un motor de introspección (418) que se ejecuta fuera de la máquina virtual, en el que la máquina virtual está configurada para llevar a cabo una sesión de comunicación con la parte remota, comprendiendo la sesión de comunicación un mensaje de toma de contacto seguido de una cabida útil cifrada, en el que el mensaje de toma de contacto contiene un parámetro de cifrado utilizado por el sistema informático para derivar una clave de cifrado, y en el que la cabida útil cifrada está cifrada con la clave de cifrado, comprendiendo el procedimiento las etapas de identificar, mediante el motor de introspección, dentro de una memoria del sistema informático una página de memoria objetivo en función de
si un contenido de la página de memoria objetivo ha cambiado (536) entre una ocurrencia de
un primer evento de sesión de la sesión de comunicación (524) y una ocurrencia de un
segundo evento de sesión de la sesión de comunicación (530); y transmitir el contenido de la página de memoria objetivo a un motor de descifrado configurado para descifrar la cabida útil cifrada en función del contenido de la página de memoria objetivo.
12. El procedimiento de la reivindicación 11, en el que el primer evento de sesión comprende enviar el mensaje de toma de contacto desde el sistema cliente a la parte remota o recibir el mensaje de toma de contacto en el sistema cliente.
13. El procedimiento de la reivindicación 12, en el que la sesión de comunicación cumple con un protocolo de seguridad en la capa de transporte, TLS, y en el que el mensaje de toma de contacto comprende un mensaje ClientHello o un mensaje ServerHello.
14. El procedimiento de la reivindicación 11, en el que el segundo evento de sesión comprende enviar un paquete de datos cifrados desde el sistema cliente a la parte remota o recibir el paquete de datos cifrados en el sistema cliente, y en el que el paquete de datos está cifrado con la clave de cifrado.
15. El procedimiento de la reivindicación 14, en el que la sesión de comunicación cumple con un protocolo de seguridad en la capa de transporte y en el que el paquete de datos comprende una parte de un mensaje ClientFinished o una parte de un mensaje ServerFinished.
16. El procedimiento de la reivindicación 14, en el que el paquete de datos comprende una parte de la cabida útil cifrada.
17. El procedimiento de la reivindicación 11, en el que identificar la página de memoria objetivo comprende:
seleccionar una página de memoria candidata de un grupo de páginas de memoria utilizadas por la máquina virtual; en respuesta a la detección de la ocurrencia del segundo evento de sesión, determinar en función de una entrada de la tabla de páginas de la página de memoria candidata si se ha escrito en la página de memoria candidata antes de la ocurrencia del segundo evento de sesión;
en respuesta a la determinación de si se ha escrito en la página de memoria candidata, cuando se ha escrito en la página de memoria candidata, seleccionar la página de memoria candidata como la página de memoria objetivo.
18. El procedimiento de la reivindicación 11, en el que el al menos un procesador de hardware está configurado para ejecutar además un filtro de red fuera de la máquina virtual, controlando el filtro de red un adaptador de red del sistema cliente, el procedimiento además caracterizado por:
estar configurado el filtro de red para interceptar el mensaje de toma de contacto y, en respuesta, para transmitir una notificación al motor de introspección; y
estar configurado además el motor de introspección para inferir la ocurrencia del primer evento de sesión en función de la notificación.
19. El procedimiento de la reivindicación 11, en el que el al menos un procesador de hardware está configurado para ejecutar además un filtro de red fuera de la máquina virtual, controlando el filtro de red un adaptador de red del sistema cliente, el procedimiento además caracterizado por:
estar configurado el motor de introspección, en respuesta a la ocurrencia del segundo evento de sesión, para copiar el contenido de la página de memoria objetivo y, en respuesta, para transmitir una notificación al filtro de red; y
estar configurado el filtro de red para interceptar un paquete de datos destinado a la máquina virtual y, en respuesta, para retrasar la entrega del paquete de datos a la máquina virtual hasta recibir la notificación.
20. El procedimiento de la reivindicación 11, además caracterizado por que el motor de introspección está configurado, en respuesta a una ocurrencia de un tercer evento, para identificar la página de memoria objetivo además en función de si el contenido de la página de memoria objetivo ha cambiado entre la ocurrencia del primer evento de sesión y la ocurrencia del tercer evento, en el que la ocurrencia del tercer evento está causada por otra sesión de comunicación simultánea a la sesión de comunicación.
21. Un medio no transitorio legible por ordenador que almacena instrucciones que, cuando son ejecutadas por un procesador de hardware de un sistema informático, hacen que el procesador de hardware forme una máquina virtual que se ejecuta en el sistema informático y un motor de introspección que se ejecuta en el sistema informático fuera de la máquina virtual, en el que la máquina virtual está configurada para llevar a cabo una sesión de comunicación con una parte remota, comprendiendo la sesión de comunicación un mensaje de toma de contacto seguido de una cabida útil cifrada, en el que el mensaje de toma de contacto contiene un parámetro de cifrado utilizado por el sistema informático para derivar una clave de cifrado, y en el que la cabida útil cifrada es cifrada con la clave de cifrado, el medio legible por ordenador caracterizado por hacer que el motor de introspección realice las etapas enumeradas en la reivindicación 11.
ES17715652T 2016-04-04 2017-03-29 Sistema y procedimientos para descifrar el tráfico de red en un entorno virtualizado Active ES2827007T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662317804P 2016-04-04 2016-04-04
US15/471,981 US10116630B2 (en) 2016-04-04 2017-03-28 Systems and methods for decrypting network traffic in a virtualized environment
PCT/EP2017/057422 WO2017174418A1 (en) 2016-04-04 2017-03-29 System and methods for decrypting network traffic in a virtualized environment

Publications (1)

Publication Number Publication Date
ES2827007T3 true ES2827007T3 (es) 2021-05-19

Family

ID=59962053

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17715652T Active ES2827007T3 (es) 2016-04-04 2017-03-29 Sistema y procedimientos para descifrar el tráfico de red en un entorno virtualizado

Country Status (13)

Country Link
US (2) US10116630B2 (es)
EP (1) EP3440584B1 (es)
JP (1) JP6857193B2 (es)
KR (1) KR102041584B1 (es)
CN (1) CN108885665B (es)
AU (1) AU2017247547B2 (es)
CA (1) CA3018021C (es)
ES (1) ES2827007T3 (es)
HK (1) HK1257399A1 (es)
IL (1) IL261826B (es)
RU (1) RU2738021C2 (es)
SG (1) SG11201807964UA (es)
WO (1) WO2017174418A1 (es)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10805331B2 (en) 2010-09-24 2020-10-13 BitSight Technologies, Inc. Information technology security assessment system
US9438615B2 (en) 2013-09-09 2016-09-06 BitSight Technologies, Inc. Security risk management
US10979328B2 (en) * 2017-03-31 2021-04-13 Intel Corporation Resource monitoring
US10462182B2 (en) * 2017-05-12 2019-10-29 Vmware, Inc. Thin agent-based SSL offloading
US10903985B2 (en) * 2017-08-25 2021-01-26 Keysight Technologies Singapore (Sales) Pte. Ltd. Monitoring encrypted network traffic flows in a virtual environment using dynamic session key acquisition techniques
US10565376B1 (en) 2017-09-11 2020-02-18 Palo Alto Networks, Inc. Efficient program deobfuscation through system API instrumentation
US10733290B2 (en) * 2017-10-26 2020-08-04 Western Digital Technologies, Inc. Device-based anti-malware
US10257219B1 (en) 2018-03-12 2019-04-09 BitSight Technologies, Inc. Correlated risk in cybersecurity
US11055411B2 (en) * 2018-05-10 2021-07-06 Acronis International Gmbh System and method for protection against ransomware attacks
US10893030B2 (en) 2018-08-10 2021-01-12 Keysight Technologies, Inc. Methods, systems, and computer readable media for implementing bandwidth limitations on specific application traffic at a proxy element
US11374971B2 (en) * 2018-08-24 2022-06-28 Micro Focus Llc Deception server deployment
EP3623980B1 (en) * 2018-09-12 2021-04-28 British Telecommunications public limited company Ransomware encryption algorithm determination
EP3623982B1 (en) 2018-09-12 2021-05-19 British Telecommunications public limited company Ransomware remediation
WO2020060450A1 (en) * 2018-09-17 2020-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Bit register in shared memory indicating the processor and the software handlers
US10949547B2 (en) * 2018-10-05 2021-03-16 Google Llc Enclave fork support
US11200323B2 (en) 2018-10-17 2021-12-14 BitSight Technologies, Inc. Systems and methods for forecasting cybersecurity ratings based on event-rate scenarios
US10521583B1 (en) * 2018-10-25 2019-12-31 BitSight Technologies, Inc. Systems and methods for remote detection of software through browser webinjects
US11206128B2 (en) 2019-03-08 2021-12-21 International Business Machines Corporation Secure paging with page change detection
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11222123B2 (en) 2019-04-22 2022-01-11 Cyberark Software Ltd. Securing privileged virtualized execution instances from penetrating a virtual host environment
US10735430B1 (en) * 2019-04-22 2020-08-04 Cyberark Software Ltd. Systems and methods for dynamically enrolling virtualized execution instances and managing secure communications between virtualized execution instances and clients
US20200403978A1 (en) * 2019-06-19 2020-12-24 Amazon Technologies, Inc. Hybrid key exchanges for double-hulled encryption
US10726136B1 (en) 2019-07-17 2020-07-28 BitSight Technologies, Inc. Systems and methods for generating security improvement plans for entities
US11956265B2 (en) 2019-08-23 2024-04-09 BitSight Technologies, Inc. Systems and methods for inferring entity relationships via network communications of users or user devices
US11032244B2 (en) 2019-09-30 2021-06-08 BitSight Technologies, Inc. Systems and methods for determining asset importance in security risk management
US11200548B2 (en) 2019-12-09 2021-12-14 Evan Chase Rose Graphical user interface and operator console management system for distributed terminal network
US10902705B1 (en) 2019-12-09 2021-01-26 Evan Chase Rose Biometric authentication, decentralized learning framework, and adaptive security protocols in distributed terminal network
US11113665B1 (en) 2020-03-12 2021-09-07 Evan Chase Rose Distributed terminals network management, systems, interfaces and workflows
US10873578B1 (en) 2019-12-09 2020-12-22 Evan Chase Rose Biometric authentication, decentralized learning framework, and adaptive security protocols in distributed terminal network
US10893067B1 (en) 2020-01-31 2021-01-12 BitSight Technologies, Inc. Systems and methods for rapidly generating security ratings
KR20210117682A (ko) * 2020-03-20 2021-09-29 라인 가부시키가이샤 메모리 맵을 활용한 멀웨어 탐지 방법 및 시스템
US11023585B1 (en) 2020-05-27 2021-06-01 BitSight Technologies, Inc. Systems and methods for managing cybersecurity alerts
US11611540B2 (en) * 2020-07-01 2023-03-21 Vmware, Inc. Protection of authentication data of a server cluster
WO2022081733A1 (en) * 2020-10-13 2022-04-21 BedRock Systems, Inc. A formally verified trusted computing base with active security and policy enforcement
US11734042B2 (en) 2020-12-10 2023-08-22 Red Hat, Inc. Providing supplemental information to a guest operating system by a hypervisor
CN112583591A (zh) * 2020-12-23 2021-03-30 维沃移动通信有限公司 应用程序控制方法及装置
CN114760153A (zh) * 2022-06-14 2022-07-15 北京升鑫网络科技有限公司 加密流量的实时解密方法、装置及电子设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US8001543B2 (en) * 2005-10-08 2011-08-16 International Business Machines Corporation Direct-memory access between input/output device and physical memory within virtual machine environment
FR2899749B1 (fr) * 2006-04-07 2008-07-04 Groupe Ecoles Telecomm Procede de protection d'identite, dispositifs, et produit programme d'ordinateur correspondants.
US8001381B2 (en) * 2008-02-26 2011-08-16 Motorola Solutions, Inc. Method and system for mutual authentication of nodes in a wireless communication network
US8090797B2 (en) * 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8327059B2 (en) * 2009-09-30 2012-12-04 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment
JP5717164B2 (ja) * 2009-10-07 2015-05-13 日本電気株式会社 コンピュータシステム、及びコンピュータシステムのメンテナンス方法
EP3002703B1 (en) * 2009-12-14 2017-08-30 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
EP2577448A4 (en) * 2010-05-30 2014-07-09 Hewlett Packard Development Co INJECTION OF A VIRTUAL MACHINE CODE
US8489889B1 (en) * 2010-09-17 2013-07-16 Symantec Corporation Method and apparatus for restricting access to encrypted data
US9053053B2 (en) * 2010-11-29 2015-06-09 International Business Machines Corporation Efficiently determining identical pieces of memory used by virtual machines
IL209960A0 (en) * 2010-12-13 2011-02-28 Comitari Technologies Ltd Web element spoofing prevention system and method
WO2012092261A2 (en) * 2010-12-29 2012-07-05 Citrix Systems, Inc. Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination
US8984478B2 (en) * 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
US8656482B1 (en) * 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
US9176838B2 (en) * 2012-10-19 2015-11-03 Intel Corporation Encrypted data inspection in a network environment
US9571507B2 (en) * 2012-10-21 2017-02-14 Mcafee, Inc. Providing a virtual security appliance architecture to a virtual cloud infrastructure
US9438488B2 (en) * 2012-11-09 2016-09-06 Citrix Systems, Inc. Systems and methods for appflow for datastream
US8910238B2 (en) 2012-11-13 2014-12-09 Bitdefender IPR Management Ltd. Hypervisor-based enterprise endpoint protection
US9396011B2 (en) * 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
US9407519B2 (en) 2013-03-15 2016-08-02 Vmware, Inc. Virtual network flow monitoring
US9117080B2 (en) * 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9507727B2 (en) * 2013-07-17 2016-11-29 Bitdefender IPR Management Ltd. Page fault injection in virtual machines
US9602498B2 (en) 2013-10-17 2017-03-21 Fortinet, Inc. Inline inspection of security protocols
US9319380B2 (en) * 2014-03-20 2016-04-19 Bitdefender IPR Management Ltd. Below-OS security solution for distributed network endpoints
US20150288659A1 (en) * 2014-04-03 2015-10-08 Bitdefender IPR Management Ltd. Systems and Methods for Mutual Integrity Attestation Between A Network Endpoint And A Network Appliance
CN104461678B (zh) * 2014-11-03 2017-11-24 中国科学院信息工程研究所 一种在虚拟化环境中提供密码服务的方法和系统

Also Published As

Publication number Publication date
US10116630B2 (en) 2018-10-30
RU2018132840A3 (es) 2020-06-17
EP3440584A1 (en) 2019-02-13
SG11201807964UA (en) 2018-10-30
AU2017247547B2 (en) 2021-07-08
CA3018021A1 (en) 2017-10-12
JP2019516294A (ja) 2019-06-13
JP6857193B2 (ja) 2021-04-14
KR20180129830A (ko) 2018-12-05
AU2017247547A1 (en) 2018-10-11
RU2018132840A (ru) 2020-05-12
EP3440584B1 (en) 2020-07-29
CN108885665A (zh) 2018-11-23
WO2017174418A1 (en) 2017-10-12
CA3018021C (en) 2021-12-28
US20170289109A1 (en) 2017-10-05
KR102041584B1 (ko) 2019-11-06
US10257170B2 (en) 2019-04-09
IL261826A (en) 2018-10-31
CN108885665B (zh) 2022-04-08
RU2738021C2 (ru) 2020-12-07
HK1257399A1 (zh) 2019-10-18
US20190068561A1 (en) 2019-02-28
IL261826B (en) 2021-02-28

Similar Documents

Publication Publication Date Title
ES2827007T3 (es) Sistema y procedimientos para descifrar el tráfico de red en un entorno virtualizado
US10169574B2 (en) Using trusted execution environments for security of code and data
Coppolino et al. Cloud security: Emerging threats and current solutions
ES2762988T3 (es) Autoanálisis de memoria dual para asegurar múltiples puntos finales de red
JP6006423B2 (ja) ネットワーク環境における暗号化データ検査
EP2672673B1 (en) Apparatus and method for secure data processing
US20220245255A1 (en) Systems and methods for processor virtualization
Li et al. TLB Poisoning Attacks on AMD Secure Encrypted Virtualization
Morbitzer et al. Guarantee: Introducing control-flow attestation for trusted execution environments
Brandão et al. Hardening cryptographic operations through the use of secure enclaves
Coppola et al. Automation for industry 4.0 by using secure lorawan edge gateways
Marku et al. Towards protected VNFs for multi-operator service delivery
Lee et al. S2Net: Preserving privacy in smart home routers
US20230098117A1 (en) Translation lookaside buffer (tlb) poisoning attacks on secure encrypted virtualization
Liang et al. Architectural protection of trusted system services for SGX enclaves in cloud computing
Janjua et al. Enhanced secure mechanism for virtual machine migration in clouds
Yasmin et al. Investigating the possibility of data leakage in time of live VM migration
Chu et al. Secure cryptography infrastructures in the cloud
Kaur et al. PARAMETRIC ANALYSIS TO ENHANCE SECURITY IN CLOUD COMPUTING TO PREVENT ATTACKS IN LIVE MIGRATION.
Denzel Malware tolerance: Distributing trust over multiple devices
Li et al. SSUKey: A CPU-Based Solution Protecting Private Keys on Untrusted OS