KR20180129830A - 가상화 환경에서 네트워크 트래픽을 해독하기 위한 시스템 및 방법 - Google Patents

가상화 환경에서 네트워크 트래픽을 해독하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180129830A
KR20180129830A KR1020187029897A KR20187029897A KR20180129830A KR 20180129830 A KR20180129830 A KR 20180129830A KR 1020187029897 A KR1020187029897 A KR 1020187029897A KR 20187029897 A KR20187029897 A KR 20187029897A KR 20180129830 A KR20180129830 A KR 20180129830A
Authority
KR
South Korea
Prior art keywords
client system
session
memory page
event
virtual machine
Prior art date
Application number
KR1020187029897A
Other languages
English (en)
Other versions
KR102041584B1 (ko
Inventor
라두 카라게아
Original Assignee
비트데펜더 아이피알 매니지먼트 엘티디
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 비트데펜더 아이피알 매니지먼트 엘티디 filed Critical 비트데펜더 아이피알 매니지먼트 엘티디
Publication of KR20180129830A publication Critical patent/KR20180129830A/ko
Application granted granted Critical
Publication of KR102041584B1 publication Critical patent/KR102041584B1/ko

Links

Images

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
    • 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
    • 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
    • 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

Abstract

특히 악성 소프트웨어의 탐지 및 분석, 침입 탐지, 및 감시와 같은 어플리케이션을 위해, 클라이언트 시스템과 원격 파티 사이의 암호화된 통신을 해독(복호화)할 수 있는 시스템 및 방법이 기술된다. 상기 클라이언트 시스템은 가상 머신과 상기 가상 머신 외부에서 인트로스펙션 엔진을 실행한다. 상기 인트로스펙션 엔진은 제1 세션 이벤트(예를 들어, ServerHello 메시지) 및 제2 세션 이벤트(예를 들어, ClientFinished 메시지) 사이에 콘텐트가 변경된 메모리 페이지를 식별하도록 구성된다. 개별 메모리 페이지는 개별 통신 세션에 대한 암호화 키 재료를 포함할 수 있다. 암호해독 엔진(복호화 엔진)은 그러고 나서 식별된 메모리 페이지의 콘텐트로부터 도출한 정보를 사용하여 개별 통신 세션의 암호화된 페이로드를 해독(복호화)하려고 시도할 수 있다.

Description

가상화 환경에서 네트워크 트래픽을 해독하기 위한 시스템 및 방법
본 출원은 2016년 4월 4일에 출원된 미합중국 가특허출원 번호 제62/317,804호(발명의 명칭 "가상화 환경에서 네트워크 트래픽을 해독하기 위한 시스템 및 방법(Systems and Methods for Decrypting Network Traffic in a Virtualized Environment)")의 출원일에 대한 우선권을 주장하며 그 전체 내용은 본 명세서에서 참조로서 포함된다.
본 발명은 컴퓨터 보안 시스템과 방법에 대한 것이며, 구체적으로는 암호화된 전자 통신에 대한 것이다.
현대 디지털 세계에서는, 매우 다양한 제품 및 서비스들이 데이터 암호화에 의존하고 있다. 암호화된 통신은, 특히, 인터넷과 같은 데이터 네트워크를 통한 온라인 상거래, 온라인 뱅킹, 및 전화 통신(telephony)을 가능하게 한다. 암호화는 또한 사용자의 프라이버시 및 개인 데이터를 보호하기 위해 널리 사용되고 있다. 상호연결된 전자 장치(사물 인터넷(Internet of Things))가 확산되는 시대에, 암호화에 의존하는 것은 강점일 뿐만 아니라 취약점이기도 하다.
최근 몇 년 사이, 암호화는 악성 소프트웨어의 활동을 숨기거나, 또는 사용자의 귀중한 데이터를 인질로 금전을 요구하는 것과 같은 악의적인 목적을 위해 점점 더 많이 사용되고 있다. 악성 소프트웨어 활동의 전형적인 일 예로는, 하이재킹 된 컴퓨팅 시스템의 네트워크-일반적으로 봇넷(botnet)으로 알려져 있음-를 조성하고, 타겟 웹서버에 대하여 분산 서비스 거부 공격(distributed denial of service attack)을 개시하기 위하여 개별 네트워크를 사용하는 것을 포함한다. 봇넷을 구축하는 과정에서, 소프트웨어 에이전트는 다양한 방법(예를 들어, 직접적인 해킹, 피싱 등)을 이용하여 각각의 봇넷 멤버에 침투한다. 그러고 나서 에이전트는 예를 들면 다른 봇넷 멤버와 공격을 조정하거나 그리고/또는 타겟 네트워크 주소를 수신하기 위해 주의를 끌지 않으면서 원격 서버와 통신하기 위하여 암호화를 사용할 수 있다. 그러한 악성 활동을 예방하거나 대항하기 위한 다양한 방법들이 설명되어 왔지만, 이러한 대책은 멀웨어의 효율적인 암호화 사용에 의해 손상될 수 있다.
안티-멀웨어(Anti-malware) 작동은, 일반적으로 가상 머신으로 알려진 시뮬레이티드 컴퓨터 환경(simulated computer environment)의 생성을 가능하게 하는 하드웨어 가상화 기술의 출현으로 인해 더 복잡해졌다. 몇몇 가상 머신은 동일한 물리적 머신 상에서 동시에 실행될 수 있어서, 하드웨어 자원을 그들 사이에서 공유함으로써, 투자 및 운영 비용을 줄일 수 있다. 각각의 가상 머신은 다른 가상 머신들과 별개로 고유의 운영 시스템 및/또는 소프트웨어 어플리케이션을 구동할 수 있다. 하드웨어 가상화는 예를 들어서 소프트웨어의 이식성을 보장하거나 보안을 강화하는 것과 같은 다양한 이유로 배포된다. "클라우드 컴퓨팅(cloud computing)"이라는 일반명으로 알려진 하드웨어 가상화의 다른 대중적인 어플리케이션에는 웹서버 팜(webserver farm) 및 가상 데스크탑 인프라스트럭쳐(virtual desktop infrastructure, VDI)가 포함된다. 일반적인 VDI 구성에서, 소프트웨어 어플리케이션은 제1 컴퓨터 시스템 상에서 실행되는 한편, 사용자는 제2 컴퓨터 시스템(단말기)을 이용하여 개별 어플리케이션과 상호작용한다. 개별 어플리케이션을 실행하는 가상 머신은 제1 컴퓨터 시스템 상에서 요청에 의해(on-demand) 인스턴스화되고, 이는 결과적으로 다수의 원격 사용자들을 위해 수백의 그러한 VM들을 실행시킬 수 있다. 멀웨어의 지속적인 확산으로 인해, 각각의 가상 머신은 멀웨어에 대한 잠재적 보호를 필요로 한다.
보안 위협의 증가와 가상화에 대한 수요 증가는 하드웨어 가상화 문제를 해결하도록 설계된 효율적인 안티-멀웨어 시스템 및 방법의 개발에 관한 큰 관심을 발생시켰다.
일 태양에 따르면, 클라이언트 시스템은 하드웨어 프로세서 및 메모리를 포함하고, 상기 하드웨어 프로세서는 가상 머신 및 인트로스펙션 엔진을 실행하도록 구성된다. 상기 가상 머신은 원격 파티와 통신 세션을 수행하도록 구성되고, 상기 통신 세션은 암호화된 페이로드 이전에 오는 핸드셰이크 메시지(handshake message)를 포함하고, 상기 핸드셰이크 메시지는 암호화 키를 도출하기 위해 상기 클라이언트 시스템에 의해 사용되는 암호화 파라미터(encryption parameter)를 포함하고, 상기 암호화된 페이로드는 상기 암호화 키로 암호화된다. 상기 인트로스펙션 엔진은 상기 가상 머신 외부에서 실행되고, 그리고 상기 통신 세션의 제1 세션 이벤트의 발생과 상기 통신 세션의 제2 세션 이벤트의 발생 사이에 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라 상기 타겟 메모리 페이지를 상기 메모리 내에서 식별하도록 구성된다. 상기 인트로스펙션 엔진은 추가로 상기 콘텐트에 따라서 상기 암호화된 페이로드를 해독(복호화)하도록 구성된 암호해독 엔진(decryption engine, 복호화 엔진)에 상기 타겟 메모리 페이지의 상기 콘텐트를 전송하도록 구성된다.
다른 태양에 따르면, 서버 컴퓨터 시스템은 복수의 클라이언트 시스템을 위한 암호해독(복호화) 과정을 수행하도록 구성된 암호해독 엔진을 실행하도록 구성된 하드웨어 프로세서를 포함한다. 암호해독 과정은, 상기 복수의 클라이언트 시스템의 클라이언트 시스템의 타겟 메모리 페이지의 콘텐트를 수신하는 것, 상기 클라이언트 시스템 상에서 실행되는 가상 머신과 원격 파티 사이에서 수행되는 통신 세션의 암호화된 페이로드를 수신하는 것, 그리고 응답으로, 상기 타겟 메모리 페이지의 콘텐트에 따라서 상기 암호화된 페이로드를 해독(복호화)하는 것을 포함한다. 상기 통신 세션은 암호화된 페이로드 이전에 오는 핸드셰이크 메시지(handshake message)를 포함하고, 상기 핸드셰이크 메시지는 암호화 키를 도출하기 위해 상기 클라이언트 시스템에 의해 사용되는 암호화 파라미터를 포함하고, 상기 암호화된 페이로드는 상기 암호화 키로 암호화된다. 상기 클라이언트 시스템은 상기 가상 머신 외부에서 인트로스펙션 엔진을 실행하도록 구성되고, 상기 인트로스펙션 엔진은 상기 통신 세션의 제1 세션 이벤트의 발생과 상기 통신 세션의 제2 세션 이벤트의 발생 사이에 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라 상기 타겟 메모리 페이지를 상기 클라이언트 시스템의 메모리 내에서 식별하도록 구성된다.
또 다른 태양에 따르면, 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)는 메모리를 추가로 포함하는 클라이언트 시스템의 하드웨어 프로세서에 의하여 실행될 때, 상기 하드웨어 프로세서로 하여금 상기 클라이언트 시스템 상에서 실행되는 가상 머신 외부에서 실행되는 인트로스펙션 엔진을 형성하도록 하는 명령들을 저장한다. 상기 가상 머신은 원격 파티와 통신 세션을 수행하도록 구성되고, 상기 통신 세션은 암호화된 페이로드 이전에 오는 핸드셰이크 메시지를 포함하고, 상기 핸드셰이크 메시지는 암호화 키를 도출하기 위해 상기 클라이언트 시스템에 의해 사용되는 암호화 파라미터를 포함하고, 상기 암호화된 페이로드는 상기 암호화 키로 암호화된다. 상기 인트로스펙션 엔진은, 상기 통신 세션의 제1 세션 이벤트의 발생과 상기 통신 세션의 제2 세션 이벤트의 발생 사이에 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라 상기 타겟 메모리 페이지를 상기 메모리 내에서 식별하도록 구성된다. 상기 인트로스펙션 엔진은 추가로 상기 콘텐트에 따라서 상기 암호화된 페이로드를 해독(복호화)하도록 구성된 암호해독 엔진(decryption engine, 복호화 엔진)에 상기 타겟 메모리 페이지의 상기 콘텐트를 전송하도록 구성된다.
또 다른 태양에 따르면, 클라이언트 시스템과 원격 파티 사이에 암호화된 통신을 해독(복호화)하는 방법이다. 상기 클라이언트 시스템은 가상 머신을 실행하도록 구성된다. 상기 가상 머신은 원격 파티와 통신 세션을 수행하도록 구성되고, 상기 통신 세션은 암호화된 페이로드 이전에 오는 핸드셰이크 메시지를 포함하고, 상기 핸드셰이크 메시지는 암호화 키를 도출하기 위해 상기 클라이언트 시스템에 의해 사용되는 암호화 파라미터를 포함하고, 상기 암호화된 페이로드는 상기 암호화 키로 암호화된다. 상기 방법은, 상기 통신 세션의 제1 세션 이벤트의 발생과 상기 통신 세션의 제2 세션 이벤트의 발생 사이에 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라 상기 타겟 메모리 페이지를 상기 클라이언트 시스템의 메모리 내에서 식별하기 위한 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함한다. 상기 방법은 추가로 상기 암호화된 페이로드를 수확하기 위한 적어도 하나의 하드웨어 프로세서를 채용하는 것, 그리고 상기 타겟 메모리 페이지의 상기 콘텐트에 따라서 상기 암호화된 페이로드를 해독하기 위한 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함한다.
본 발명의 전술한 태양들 및 장점은 후술하는 상세한 설명 및 도면을 참조로 이해하면 더욱 잘 이해될 것이다.
도 1은 본 발명의 일부 실시예에 따라 클라이언트 시스템들이 잠재적인 악성 네트워크 트래픽을 해독하기 위해 보안 서버와 협력하는 예시적 구성을 보여주는 도면.
도 2a는 본 발명의 일부 실시예에 따른 클라이언트 시스템의 예시적 하드웨어 구성을 보여주는 도면.
도 2b는 본 발명의 일부 실시예에 따른 보안 서버의 예시적 하드웨어 구성을 보여주는 도면.
도 3은 본 발명의 일부 실시예에 따른, 클라이언트 시스템 상에서 실행되는 하이퍼바이저에 노출된 게스트 가상 머신(virtual machine, VM) 및 상기 게스트 VM(들) 외부에서 실행되는 인트로스펙션 엔진을 보여주는 도면.
도 4는 도 3에 도시된 바와 같은 하드웨어 가상화 구성에서 예시적 메모리 주소 변환(translation)을 보여주는 도면.
도 5는 본 발명의 일부 실시예에 따라, 게스트 VM 안으로 또는 밖으로 가는 암호화된 트래픽을 인터셉트하기 위하여 인트로스펙션 엔진에 의해 수행되는 단계들의 예시적 시퀀스를 보여주는 도면.
도 6은 본 발명의 일부 실시예에 따라, 게스트 VM들의 최적화된 메모리 스냅샷을 얻기 위하여 인트로스펙션 엔진에 의해 수행되는 단계들의 예시적 시퀀스를 보여주는 도면.
도 7은 본 발명의 일부 실시예에 따라, 다수의 현재 암호화된 통신 세션들에 대한 최적화된 메모리 스냅샷을 얻기 위하여 인트로스펙션 엔진에 의해 수행되는 단계들의 예시적 시퀀스를 보여주는 도면.
도 8은 본 발명의 일부 실시예에 따른 보안 서버 상에서 실행되는 예시적인 암호해독 엔진을 보여주는 도면.
도 9는 본 발명의 일부 실시예에 따른 암호해독 엔진에 의해 수행되는 단계들의 예시적 시퀀스를 보여주는 도면.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 특정되지 않는다면, "또는(or)"의 임의의 사용은 다른 구성을 "배제하지 않는 또는(non-exclusive or)"을 의미한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 컴퓨터 보안은 데이터 및/또는 하드웨어로의 의도되지 않았거나 인가 받지 않은 접근에 대해서, 데이터 및/또는 하드웨어의 의도되지 않았거나 인가 받지 않은 수정, 및 데이터 및/또는 하드웨어의 파괴에 대해서 사용자와 장치를 보호하는 것을 포함한다. 컴퓨터 프로그램은 과업을 수행하는 프로세서 명령들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 개체들 또는 다른 컴퓨터 프로그램들의 서브-개체들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. 달리 특정되지 않는다면, 게스트 소프트웨어는 가상 머신 내에서 실행된다. 프로그램이 개별 가상 머신의 가상 프로세서 상에서 실행될 때, 프로그램은 가상 머신 내에서 실행된다고 일컬어진다. 프로세스는 어플리케이션이나 또는 운영 시스템의 일부와 같은 컴퓨터 프로그램의 인스턴스(instance)이고, 적어도 실행 쓰레드(execution thread)와 이것에 할당된 가상 메모리 공간을 가지는 특징을 가지며, 개별 가상 메모리 공간의 콘텐트는 실행가능 코드(executable code)를 포함한다. 달리 특정되지 않는다면, 페이지는 호스트 시스템의 물리적 메모리에 개별적으로 맵핑될 수 있는 가상 메모리의 최소 유닛을 나타낸다. 달리 특정되지 않는다면, 클라이언트 시스템/가상 머신의 메모리 스냅샷(snapshot)은 각 클라이언트 시스템/가상 머신에 의해 사용되는 메모리 섹션의 콘텐트의 사본을 포함한다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체와 같은 비-일시적 매체(non-transitory medium)(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예컨대, 하나 이상의 마이크로프로세서들)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 인코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.
후술하는 설명은 본 발명의 실시예들을 예시적으로 설명하는 것이며, 반드시 제한적인 것은 아니다.
도 1은 본 발명의 일부 실시예에 따라, 클라이언트 시스템들(12a-d)의 세트가 보안 서버(15)와 협력하여 각각의 클라이언트 시스템들(12a-d)과 콘텐트 서버(13)로 도시된 원격 파티 사이에서 발생하는 암호화된 네트워크 트래픽을 인터셉트하고 해독하는 예시적 구성을 보여준다. 서버들(13 및 15) 각각은 일반적으로 서로 물리적으로 근접할 수도 있고 그렇지 않을 수도 있는 상호연결된 컴퓨팅 시스템의 세트를 나타낸다.
예시적인 클라이언트 시스템들(12a-d)은 기업 컴퓨팅 시스템 뿐만 아니라 개인용 컴퓨터 시스템, 모바일 컴퓨팅 플랫폼(랩탑 컴퓨터, 태블릿, 모바일 전화기), 웨어러블 전자 장치(스마트워치), 가전 제품(스마트 TV, 온도 조절 장치, 가정 감시/보안 시스템), 또는 프로세서 및 메모리를 가지며 하드웨어 가상화를 지원하는 임의의 다른 전자 장치를 포함한다. 컴퓨터 보안에 특히 관심이 있는 예시적인 일 클라이언트 시스템은 허니팟(honeypot)으로 구성된 컴퓨터이다. 허니팟은 악성 소프트웨어의 데이터 수집 및 연구를 위해 악성 엔터티를 유인하기 위한 시스템 및 방법들의 세트를 기술하기 위해 본 기술 분야에서 사용되는 일반적인 용어이다. 예시적인 허니팟은 해커 또는 멀웨어 에이전트로 하여금 네트워크를 통해 다른 컴퓨터에 진입하고, 소프트웨어를 설치하고 및/또는 통신할 수 있게 하는 외관상으로는 비보호된 컴퓨터 시스템을 포함한다.
도시된 클라이언트 시스템들은 기업 네트워크 또는 가정 네트워크와 같은 로컬 통신 네트워크(10)를 통해 상호연결된다. 로컬 네트워크(10)의 일부는 로컬 영역 네트워크(local area network, LAN)을 포함할 수 있다. 게이트웨이 장치(14)는 클라이언트 시스템들(12a-d)의 확장된 네트워크(11)(예를 들어, 인터넷)로의 접근을 가능하게 하며, 따라서 클라이언트 시스템들(12a-d)과 원격 파티 사이의 네트워크 트래픽의 전부 또는 일부는 게이트웨이 장치(14)를 가로지르게 된다. 예시적인 게이트웨이 장치(14)는 라우터 및/또는 스위치와 같은 물리적 장치를 포함한다.
도 2a는 본 발명의 일부 실시예에 따른 클라이언트 시스템(12)의 예시적인 하드웨어 구성을 보여준다. 클라이언트 시스템(12)은 도 1의 시스템들(12a-d) 중 임의의 것을 나타낼 수 있다. 단순성을 위하여, 도시된 클라이언트 시스템은 개인용 컴퓨터이지만; 모바일 전화기, 태블릿 컴퓨터 등과 같은 다른 클라이언트 시스템의 하드웨어 구성은 도 2a의 도시된 구성과는 다소 다를 수 있다. 클라이언트 시스템(12)은 하드웨어 프로세서(16) 및 메모리 유닛(18)을 포함하는 물리적 장치들의 세트를 포함한다. 프로세서(16)는 신호 및/또는 데이터의 세트로 산술 및/또는 논리 연산을 실행하도록 구성된 물리적 장치(예컨대, 반도체 기판에 형성된 멀티-코어 집적 회로, 마이크로프로세서 등)를 포함한다. 일부 실시예들에서, 이러한 연산들은 프로세서 명령들(예를 들어, 머신 코드 또는 다른 유형의 인코딩)의 시퀀스 형태로 프로세서(16)에 전달된다. 메모리 유닛(18)은 프로세서(16)에 의해 액세스되거나 생성되는 명령들 및/또는 데이터를 저장하는 휘발성 컴퓨터-판독 가능 매체(예컨대, DRAM, SRAM)를 포함할 수 있다.
입력 장치(20)는 사용자가 시스템(12)으로 데이터 및/또는 명령들을 도입할 수 있게 하는, 특히 컴퓨터 키보드 및 마우스를 포함할 수 있다. 출력 장치(22)는 모니터와 같은 디스플레이 장치를 포함할 수 있다. 일부 실시예들에서, 입력 장치(20)와 출력 장치(22)는 터치-스크린 장치들의 경우와 같이, 하드웨어의 공통적인 부품을 공유할 수 있다. 저장 장치(24)는 소프트웨어 명령들 및/또는 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장 장치(24)는 자기 디스크 및 광 디스크 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 네트워크 어댑터(26)들은 시스템(12)이 네트워크(10) 및/또는 다른 머신들/컴퓨터 시스템들에 연결될 수 있게 한다. 컨트롤러 허브(28)는 일반적으로 시스템(12)의 장치들(16-26)의 상호 통신(inter-communication)을 가능하게 하는 복수의 시스템, 주변, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 나타낸다. 예를 들어, 컨트롤러 허브(28)는 특히 메모리 컨트롤러, 입력/출력(I/O) 컨트롤러, 및 인터럽트 컨트롤러(interrupt controller)를 포함할 수 있다. 다른 예에서, 특히 허브(28)는 프로세서(16)를 메모리(18)에 연결시키는 노스브리지 버스, 및/또는 프로세서(16)를 장치들(20, 22, 24 및 26)에 연결시키는 사우스브리지 버스를 포함할 수 있다.
도 2b는 본 발명의 일부 실시예에서의, 보안 서버(15)의 예시적인 하드웨어 구성을 보여준다. 도시된 구성에서, 서버(15)는 서버 프로세서(16), 서버 메모리(18), 서버 저장 장치(124)들 세트, 및 네트워크 어댑터(126)들 세트를 포함한다. 프로세서(116)는 데이터 세트와 함께 수학적 및/또는 논리적 연산을 실행하도록 구성된 마이크로프로세서 또는 다른 물리적 장치를 포함할 수 있다. 메모리(18)는 프로세서(116)에 의한 실행 및/또는 처리를 위한 명령 및/또는 데이터를 저장하는 휘발성 컴퓨터-판독 가능 매체를 포함할 수 있다. 서버 저장 장치(124)들은 특히 하드 드라이브, CD 및 DVD ROMs, 및 플래시 메모리와 같은 비휘발성 컴퓨터-판독 가능 매체를 포함한다. 서버 네트워크 어댑터(126)들은 보안 서버(15)가 확장된 네트워크(extended network, 11)를 통해 다른 전자 장치들과 연결되고 데이터를 교환할 수 있게 한다.
도 3은 본 발명의 일부 실시예에 따른 일반적인 소프트웨어 구성을 보여준다. 클라이언트 시스템(12)은 가상 머신(virtual machine, VM)들의 세트를 노출시키도록 구성된다. 도 3은 단지 하나의 게스트 VM(32)만을 보여주고 있으나, 일부 실시예는 동시에 작동하는 다수의 VM들(예를 들어, 수백)을 호스팅할 수 있다. 각각의 가상 머신은 실제 물리적 머신/컴퓨터 시스템의 모방(emulation, 에뮬레이션)을 포함하고, 운영 시스템 및 다양한 소프트웨어 어플리케이션을 실행할 수 있다. 도 3에 도시된 실시예는 사유(proprietary), 개인(private) 및/또는 비밀(confidential) 데이터를 도용하려고 시도하는 소프트웨어, 또는 클라이언트 시스템(12)을 하이재킹(hijack)하고 봇넷(botnet) 멤버로 변형시키려고 시도하는 소프트웨어와 같은 악성 소프트웨어에 대해서 클라우드 컴퓨팅의 고객을 보호하기 위해 사용될 수 있다. 그러한 실시예에서, 클라이언트 시스템(12)은 클라우드 서비스 제공자의 서버 컴퓨터 시스템을 나타낼 수 있다. 다른 예시적인 실시예에서, 클라이언트 시스템(12)은 개인용 컴퓨터 또는 모바일 전화기와 같은 사용자의 개인 장치를 나타낼 수 있다. 이러한 장치들은 예를 들어서, 소프트웨어 이식성(software portability)을 높이거나 또는 보안을 강화하기 위하여 보통 하드웨어 가상화를 채용한다. 또 다른 예시적인 실시예에서, 클라이언트 시스템(12)은 허니팟으로 구성될 수 있다. 그러한 실시예에서, 클라이언트 시스템(12)은 예를 들어서, 하나는 웹서버로 위장하고, 다른 하나는 기업 네트워크에 연결된 개인용 컴퓨터 등으로 위장하여 다수의 가상 머신들을 노출시킬 수 있다.
일부 실시예들에서, 하이퍼바이저(30)는 클라이언트 시스템(12) 상에서 실행되고, 하이퍼바이저(30)는 가상 프로세서와 가상 메모리 관리 유닛과 같은 복수의 가상화된 장치들을 생성하거나 사용가능하게 하고, 클라이언트 시스템(12)의 실제의 물리적인 장치들을 대신하여 그러한 가상화된 장치들을 소프트웨어에 제공하도록 구성된 소프트웨어를 포함한다. 그러한 작동들은 통상적으로 본 기술분야에서 가상 머신 노출로 알려져 있다. 하이퍼바이저(30)는 또한 다수의 가상 머신들이 호스트 시스템(12)의 하드웨어 리소스들을 공유할 수 있게 하여, 각각의 VM이 독립적으로 작동하고 클라이언트 시스템(12)에서 동시에 실행되는 다른 VM들 실행을 알지 못하도록 할 수 있다. 유명한 하이퍼바이저의 예로는, 특히 VMware Inc.의 VMware vSphere™ 및 오픈 소스 Xen 하이퍼바이저가 있다.
도 3에 도시된 예시적인 구성에서, 게스트 VM(32)은 게스트 운영 시스템(operating system, OS)(34) 및 어플리케이션들(36a-b)의 세트를 실행한다. 게스트 OS(34)는 특히, VM(32) 내에서 실행되는 어플리케이션들과 게스트 VM(32)의 가상화된 하드웨어 장치들 사이에 인터페이스를 제공하는 Microsoft Windows®, MacOS®, Linux®, iOS®, 또는 Android™와 같이, 널리 이용가능한 임의의 운영 시스템을 포함할 수 있다. 어플리케이션들(36a-b)은 특히, 워드 프로세서, 스프레드시트 어플리케이션, 그래픽 어플리케이션, 브라우저, 소셜 미디어 어플리케이션, 및 전자 통신 어플리케이션들과 같은 임의의 사용자 어플리케이션을 일반적으로 나타낸다. 게스트 OS(34) 및 어플리케이션들(36a-b)은 본 명세서에서 게스트 VM(32) 내에서 실행된다고, 즉, VM(32)의 가상 프로세서 상에서 실행된다고 지칭한다. 대조적으로, 하이퍼바이저(30)는 게스트 VM(32) 외부에서 실행된다고 지칭한다.
일부 실시예들에서, 게스트 VM(32)을 노출시키는 것은 게스트 VM(32)의 동작을 관리하기 위하여 하이퍼바이저(30)에 의해 사용되는 데이터 구조를 구성하는 것을 포함한다. 그러한 구조는 본 명세서에서 가상 머신 상태 객체(virtual machine state object, VMSO)로 지칭될 것이다. 예시적인 VMSO는 Intel® 플랫폼의 가상 머신 제어 구조(virtual machine control structure, VMCS)와 AMD® 플랫폼의 가상 머신 제어 블록(virtual machine control block, VMCB)을 포함한다. 일부 실시예들에서, 프로세서(16)는 메모리의 영역을 각 VMSO에 연계시켜서 소프트웨어가 메모리 주소 또는 포인터(예를 들어서, Intel® 플랫폼의 VMCS 포인터)를 사용하여 특정 VMSO를 참조할 수 있다.
각 VMSO는 클라이언트 시스템(12) 상에 노출된 각각의 가상화된 프로세서의 현재 상태를 나타내는 데이터를 포함할 수 있다. 멀티쓰레딩(multithreading) 구성에서, 하드웨어 프로세서(16)는 복수의 코어(core)를 작업할 수 있고, 각 코어는 다수의 논리 프로세서(logical processor)를 추가적으로 포함하고, 각 논리 프로세서는 다른 논리 프로세서에 독립적이고 다른 논리 프로세서와 함께 실행 쓰레드(execution thread)를 처리할 수 있다. 다수의 논리 프로세서는 일부 하드웨어 리소스들, 예를 들어서, 공통의 MMU를 공유할 수 있다. 멀티쓰레드식 실시예에서, 특징적 VMSO(distinct VMSO)가 각각의 특징적 논리 프로세서(distinct logical processor)를 위해 설치될 수 있다. 각 VMSO는 게스트 상태 영역(guest state area)과 호스트 상태 영역(host state area)을 포함할 수 있고, 게스트 상태 영역은 개별 VM의(즉, 각각의 가상화된 프로세서의) CPU 상태를 가지고 있고, 호스트 상태 영역은 하이퍼바이저(30)의 현재 상태를 저장하고 있다. 일부 실시예들에서, VMSO의 게스트 상태 영역은 특히 개별 VM의 가상 프로세서의 제어 레지스터(예를 들어서, CR0, CR3 등), 명령 포인터(예를 들어서, RIP), 범용 레지스터(예를 들어서, EAX, ECX 등), 및 상태 레지스터(예를 들어서, EFLAGS)의 콘텐트를 포함한다. VMSO의 호스트 상태 영역은 개별 VM에 대하여 주소 변환을 위하여 구성된 페이지 테이블로의 포인터(예를 들어서, Intel® 플랫폼의 EPT 포인터)를 포함할 수 있다.
일부 실시예들에서, 프로세서(16)는 전용 내부 레지스터들/캐시들 내에 VMSO의 일부를 저장할 수 있고, 반면에 개별 VMSO의 다른 부분들은 메모리(18)에 위치할 수 있다. 임의의 주어진 시간에서, 대개 하나의 VMSO(여기서는 현재의 VMSO를 가리킴)는 논리 프로세서에 로딩될 수 있고 현재 개별 논리 프로세서를 제어하고 있는 가상 머신을 식별한다. 프로세서(16)가 VM 내의 소프트웨어(예를 들어서, 도 3의 어플리케이션(36a))를 실행하는 것에서 개별 VM 외부의 소프트웨어(예를 들어서, 하이퍼바이저(30))를 실행하는 것으로 전환하는 경우, 프로세서(16)는 현재 프로세서 상태를 현재 VMSO의 게스트 상태 영역에 저장하고, 상기 VMSO의 호스트 상태를 프로세서에 로딩할 수 있다. 반대로, 프로세서(16)가 VM 외부의 소프트웨어를 실행하는 것에서 개별 VM 내의 소프트웨어를 실행하는 것으로 전환하는 경우, 프로세서(16)는 현재 프로세서 상태를 VMSO의 호스트 상태 영역에 저장하고, 현재 VMSO의 게스트 상태를 프로세서(16)에 로딩할 수 있다.
일부 실시예들에서, 인트로스펙션 엔진(40)은 개별 클라이언트 시스템 상에 노출된 모든 게스트 VM들의 외부에서 실행된다. 인트로스펙션(introspection)은 하드웨어 가상화 기술 분야에서 확립된 용어로, 일반적으로 개별 VM의 외부 위치에서 가상 머신의 작동에 대한 다양한 측면에 관한 정보를 수집하는 것을 의미한다. 본 발명의 일부 실시예들에서, 인트로스펙션은 특히 게스트 VM(32) 내에서 실행되는 프로세스들을 모니터링하는 것, 게스트 VM(32) 내에서 특정 OS 기능 또는 프로세서 명령을 실행하려고 하는 시도를 인터셉트하는 것, 게스트 VM(32)에 의해 사용되는 메모리 페이지에 접근하려고 하는 시도를 인터셉트하는 것, 그리고 게스트 VM에 의해 사용되는 특정 데이터가 저장되는 메모리(18) 내의 위치를 결정하는 것과 같은 동작을 포함한다. 엔진(40)은 하이퍼바이저(30)에 통합되거나, 또는 하이퍼바이저(30)와는 구별되고 독립적인 소프트웨어 구성요소로서 전달될 수 있지만, 하이퍼바이저(30)와 실질적으로 유사한 프로세서 권한 레벨(processor privilege level)로 실행된다. 단일 엔진(40)은 클라이언트 시스템(12) 상에서 실행되는 다수의 VM에 대해서 인트로스펙트(introspect)하도록 구성될 수 있다. 엔진(40)은 클라이언트 시스템(12)으로 들어오고 및/또는 나가는 통신을 해독하기 위하여 하이퍼바이저(30)와 협력할 수 있다. 보다 구체적으로, 엔진(40)은 후술하는 바와 같이 게스트 VM(32)에 의해 송신되거나 수신되는 메시지를 암호화하기 위해 사용되는 암호화 키를 대략적으로 메모리(18) 내에 위치하도록 구성될 수 있다.
클라이언트 시스템(12) 상에서 실행되는 소프트웨어는, 게스트 VM(32)으로 들어오거나 나가는 통신을 인터셉트하고 인트로스펙션 엔진(40)과 정보 교환을 하도록 구성된 네트워크 필터(42)를 추가적으로 포함할 수 있다. 필터(42)는 특정 네트워크 포트(예를 들어, TLS 프로토콜에 관한 연결을 위한 포트 443)에 주목할 수 있다. 필터(42)는 VM(32) 내부 또는 외부에서 실행될 수 있다. VM(32) 외부에서 실행될 때, 단일 네트워크 필터는 클라이언트 시스템(12) 상에서 실행되는 다수의 VM들로 들어오거나 나가는 통신을 모니터링할 수 있다. 그러한 모니터링을 달성하기 위해, 하이퍼바이저(30)는 네트워크 필터(42)를 통해 클라이언트 시스템(12)으로 들어오고 그리고/또는 나가는 모든 통신을 라우팅할 수 있다. 필터(42)는 네트워크 어댑터(들)(26)의 독점적 제어권을 가질 수 있고, 그 구성은 예를 들어서 Intel®의 VT-d® 기술을 사용하여 구현될 수 있다. 다수의 VM을 모니터링 할 경우, 필터(42)는 VM 특정 패킷 큐(VM-specific packet queue)를 유지할 수 있으며, 다시 말해, 각각의 인터셉트 된 네트워크 패킷을 소스 및/또는 대상 VM과 연관시킬 수 있다.
일부 실시예들에서, 인트로스펙션 엔진(40)은 게스트 VM(32) 내에서 소프트웨어의 실행 중에 발생하는 다양한 이벤트를 탐지함으로써 작동한다. 인트로스펙션 엔진(40)에 의해 탐지되는 예시적인 이벤트는, 예를 들어, 프로세서 예외 및/또는 인터럽트, 게스트 OS(34)의 특정 기능을 실행하려는 시도, 프로세서 권한(예를 들어, 시스템 호출)의 변경, 특정 메모리 위치에 액세스(읽기, 쓰기, 및/또는 실행)하려는 시도 등을 포함한다. 인트로스펙션 엔진(40)은, 추가로 후술되는 바와 같이, 게스트 VM(32) 내에서 실행되는 다양한 소프트웨어 구성 요소들의 메모리 주소를 결정하도록 추가로 구성될 수 있다.
일부 실시예들은 게스트 VM(32) 내에서 실행되는 유틸리티 에이전트(44)를 추가로 포함하며, 에이전트(44)는 게스트 VM(32) 내에서 발생하는 이벤트를 탐지하고 분석하기 위해 인트로스펙션 엔진(40)과 협력한다. 에이전트(44)는, 예를 들어, 게스트 OS(34)의 프로세서 권한 레벨(예를 들면, 링 0, 커널 모드)에서 실행되는 드라이버를 포함할 수 있고, 페이지 폴트(page fault) 및 하드웨어 인터럽트와 같은 다양한 프로세서 이벤트들에 대한 핸들러로서 등록될 수 있다. 이러한 구성의 하나의 장점은, 내부 에이전트가 게스트 OS(34)의 모든 기능에 액세스할 수 있기 때문에 일부 정보는 개별 VM 외부에서 보다 VM 내부에서 얻는 것이 훨씬 쉽다는 것이다. 단점은 게스트 VM(32) 내에서 실행되는 에이전트가 개별 VM 내에서 실행되는 악성 소프트웨어에 잠재적으로 취약하다는 것이다. 이러한 위험을 완화하기 위해, 일부 실시예들은 게스트 VM(32) 내부에 에이전트(44)를 일시적으로만 주입할 수 있고, 에이전트(44)가 실행을 완료한 후에 에이전트(44)를 지울 수 있다.
게스트 VM(32) 내에서 발생하는 이벤트를 탐지하기 위해, 인트로스펙션 엔진(40)은 가상화 기술분야에 알려져 있는 임의의 방법을 채용할 수 있다. 중요 카테고리의 방법들은 특정 이벤트 발생의 표시자인 특정 메모리 위치에 액세스하려는 시도를 이용한다. 그러한 메모리 액세스 시도를 탐지하기 위해 일부 실시예들은 메모리 접근 허가(access permission, 액세스 권한)를 설정하여 시도가 각각의 허가를 위반하게 한다. 그러고 나서 이러한 위반은 인트로스펙션 엔진 및/또는 유틸리티 에이전트(44)에 의해 인터셉트된다. 가상 머신들은 통상적으로 본 기술분야에서 또한 게스트 물리적 메모리(guest-physical memory)로 알려진 가상화된 물리적 메모리와 함께 작동한다. 가상화된 물리적 메모리는, 예를 들어서, 각 VM에 특정된 주소의 연속적 공간(contiguous space of address)으로서(상기 공간의 부분들이 물리적 메모리(18) 및/또는 물리적 저장 장치(24) 내에서 주소들에 맵핑됨) 실제 물리적 메모리(18)의 추상적 표현(abstract representation)을 포함한다. 현대의 하드웨어 가상화 플랫폼에서, 그러한 맵핑은 통상적으로, 제2 레벨 주소 변환(second level address translation, SLAT)으로 알려진, 프로세서(16)에 의하여 제어되는, 전용 데이터 구조 및 메커니즘(dedicated data structures and mechanisms)을 통해 달성된다. 유명한 SLAT 구현은 Intel® 플랫폼에서 확장된 페이지 테이블(extended page table, EPT)과 AMD® 플랫폼에서 빠른 가상화 인덱싱(rapid virtualization indexing, RVI)/내포된 페이지 테이블(nested page table, NPT)을 포함한다. 그러한 시스템들에서, 가상화된 물리적 메모리는 당해 기술분야에서 페이지로 알려진 유닛들로 파티션될 수 있고, 여기서 페이지는 SLAT을 통해서 물리적 메모리에 개별적으로 맵핑된 가상화된 물리적 메모리의 최소 유닛을 나타내며, 다시 말해서 물리적 메모리와 가상화된 물리적 메모리 사이의 맵핑은 페이지 단위(page granularity)로 수행된다. 모든 페이지들은 통상적으로 소정의 크기, 예를 들어 4 킬로바이트, 2 메가바이트 등의 크기를 가진다. 가상화된 물리적 메모리를 페이지들로 파티셔닝하는 것은 대개 하이퍼바이저(30)에 의하여 설정된다. 일부 실시예들에서, 하이퍼바이저(30)는 SLAT 구조를 또한 설정하고 따라서 물리적 메모리와 가상화된 물리적 메모리 사이의 맵핑을 설정한다. 일부 실시예들에서, SLAT 데이터 구조에 대한 (예를 들어서, 페이지 테이블에 대한) 포인터는 개별 가상 머신의 VMSO 내에 저장된다. 가상화된 물리적 메모리 주소를 물리적 메모리 주소로 실질적으로 맵핑(변환)하는 것은 클라이언트 시스템(12)의 변환 색인 버퍼(translation lookaside buffer, TLB)에서 물리적 메모리 주소를 색인(look-up)하는 것을 포함할 수 있다. 일부 실시예들에서, 주소 변환은 페이지 테이블 및/또는 페이지 디렉토리 세트에서 연속적인 주소 색인의 세트를 포함하는 페이지 검색(page walk)을 수행하는 것과, 페이지의 오프셋(offset)을 각 페이지에 대한 주소에 추가하는 것과 같은 연산을 수행하는 것을 포함한다.
도 4는 도 3에 도시된 바와 같은 실시예에서 이러한 메모리 주소의 맵핑을 보여준다. 하이퍼바이저(30)에 의한 노출 이후에, 게스트 VM(32)은 가상화된 물리적 메모리 공간(218)을 그 자신의 물리적 메모리 공간으로 간주한다. 게스트 VM(32) 내에서 실행되는 소프트웨어 객체(예를 들어서, 어플리케이션(36a))는 게스트 OS(34)에 의해서 가상 메모리 공간(318)이 할당된다. 소프트웨어 객체가 공간(318a)의 예시적 메모리 페이지(50a)의 콘텐트에 접근 시도할 때, 페이지(50a)의 주소는 게스트 OS(34)에 의해서 구성되고 제어되는 페이지 테이블들에 따라서, 게스트 VM(32)의 가상화된 프로세서에 의해 가상화된 물리적 메모리 공간(218)의 페이지(50b)의 주소로 변환된다. 페이지(50b)의 주소는 하이퍼바이저(30)에 의해 구성되는 SLAT을 이용하여 물리적 메모리(18) 내에서 페이지(50c)의 주소로, 물리적 프로세서(16)에 의해서 추가적으로 맵핑된다.
가상 주소 공간(218)은 일반적으로 본 기술분야에서 게스트 물리적 메모리로 알려져 있고, 이러한 하나의 메모리 공간 내의 주소는 게스트 물리적 주소(guest physical address, GPA)로서 지칭된다. 주소 공간(318)은 보통 게스트 가상 메모리(guest-virtual memory)라고 칭해지며, 게스트 가상 주소(guest-virtual addresses, GVA)를 포함한다. 물리적 메모리(18) 내의 주소들은 일반적으로 호스트 물리적 주소(host-physical addresses, HPA)로 지칭된다. 그러므로 도 4의 (52)와 같은 주소 변환/맵핑은 GVA-GPA 변환으로 칭해진다. 반면, (54)와 같은 주소 변환은 일반적으로 GPA-HPA 변환으로 알려져 있다.
일부 실시예들에서, 하이퍼바이저(30)는 물리적 메모리(18)의 표현을 포함하는 그 자신의 가상 메모리 공간(418)을 설정하고, 공간(418) 내의 주소를 물리적 메모리(18) 내의 주소로 맵핑하는 변환 메커니즘(예컨대, 페이지 테이블)을 사용한다. 도 4에서, 그러한 예시적인 맵핑은 가상 공간(418) 내에서 페이지(50f)의 주소를 페이지(50c)의 물리적 주소로 변환하고, 페이지(50d)의 주소를 페이지(50e)의 물리적 주소로 변환한다. 이러한 맵핑은 잠재적으로 하이퍼바이저(30)의 프로세서 권한 레벨에서 실행되는 임의의 소프트웨어 객체로 하여금 클라이언트 시스템(12) 상에서 실행되는 다양한 VM 내에서 실행되는 소프트웨어 객체에 속하는 메모리 페이지들을 관리하도록 한다. 따라서 특히 메모리 인트로스펙션 엔진(40)은 게스트 VM(32) 내에서 실행되는 임의의 프로세스에 의해 사용되는 물리적 메모리 페이지에 대하여 접근 제어, 열거, 읽기, 및 쓰기를 할 수 있다.
일부 실시예들에서, 게스트 VM(32) 내에서 발생하는 이벤트를 탐지하는 것은 인트로스펙션 엔진(40)이 하이퍼바이저(30)와 협력하여 SLAT 데이터 구조 내에서 메모리 접근 허가를 설정하는 것을 포함한다. 그러한 특징들은 플랫폼 특이적일 수 있으나 일반적으로 접근 허가는 페이지 단위로 설정된다. 예를 들어서, 가상화를 지원하는 Intel® 플랫폼 상에서, 각 메모리 페이지의 EPT 엔트리는 개별 페이지를 각각 읽고, 쓰고, 실행할 수 있는지 여부를 나타내는 접근 허가 비트(access permission bits)의 세트를 포함한다. 특정 메모리 페이지에 접근하려는 시도가 개별 메모리 페이지에 대해 설정된 접근 허가를 위반할 때, 각각의 상기 시도는 예외 또는 가상 머신 종료 이벤트(Intel® 플랫폼의 VMExit)와 같은 프로세서 이벤트를 촉발(trigger, 트리거)할 수 있다. 프로세서 이벤트에 응답하여, 프로세서(16)는 개별 VM 외부에서 이벤트 핸들러 루틴을 실행하는 것으로 전환할 수 있고, 이는 인트로스펙션 엔진(40)으로 하여금 각각의 접근 위반의 발생을 탐지할 수 있게 한다. 선택적 실시예에서, 메모리 접근 위반은 프로세서 예외(예를 들어, 가상화 예외(virtualization exception) 또는 Intel® 플랫폼의 #VE)를 트리거할 수 있다. 그러한 프로세서 이벤트들에 응답하여, 프로세서(16)는 개별 VM 내에서 즉, 개별 VM을 종료하지 않고, 이벤트 핸들러 루틴을 실행하는 것으로 전환할 수 있다. 도 4에 나타낸 바와 같이 유틸리티 에이전트(44)를 가지는 실시예에서, 에이전트(44)는 가상화 예외 핸들러로 등록될 수 있으며, 따라서 메모리 접근 위반을 탐지할 수 있다.
일부 실시예들에서, 메모리 페이지의 SLAT 엔트리는 개별 페이지가 액세스 되었는지 및/또는 개별 페이지가 쓰여졌는지 여부를 나타내는 필드(예를 들면, 비트)를 추가적으로 포함할 수 있다. 이러한 비트는 일반적으로 액세스 및 더티 비트(accessed and dirty bits, 접근 및 변경 비트)라고 불린다. 일부 실시예는 이하에서 추가로 나타내는 바와 같이 액세스 및/또는 더티 비트를 사용하여 암호화 키를 포함할 가능성이 있는 메모리 페이지를 식별한다.
본 발명의 일부 실시예들에서, 인트로스펙션 엔진(40)은 게스트 VM으로 들어가거나 나오는 암호화된 통신을 모니터링하도록 구성된다. 통신 세션은 일반적으로 암호화된 메시지의 실제 교환에 앞서오는 당사자 간의 예비 교섭(preliminary negotiation)을 포함한다. 본 기술 분야에서, 후자는 흔히 핸드셰이크(handshake)라고 불리우는 한편, 메시지의 콘텐트는 일반적으로 페이로드(payload)로 알려져 있다. 핸드셰이크는 특히 암호화 키를 유도하기 위한 구성 요소 및 암호(cipher)(즉, 암호화 알고리즘)를 특정하는 교환 세트를 포함한다. 예시적인 암호는 고급 암호화 표준(Advanced Encryption Standard, AES) 유도된 블록 암호 및 ChaCha-20과 같은 스트림 암호를 포함한다. 일부 실시예들에서, 핸드셰이크는 특정 프로토콜에 따라 수행되는 실제 키 교환, 및/또는 각 또는 양 당사자의 신원을 검증하기 위한 추가 단계를 포함할 수 있다. 암호에 따라, 암호화 키를 유도하기 위한 구성 요소는 난수(random numbers)의 세트, 통신 당사자의 공개 키 등을 포함할 수 있다.
보안 통신 프로토콜의 구체적인 예는, 예를 들어서, 국제 인터넷 표준화 기구(Internet Engineering Task Force, IETF) 네트워크 워킹 그룹(Network Working Group)의 RFC(Request for Comments) 5246에 기술된 전송 계층 보안(Transport Layer Security, TLS) 프로토콜이다. TLS 프로토콜은 현재 대부분의 브라우저, 전자 상거래(e-commerce) 및 안전한 전자 뱅킹(secure e-banking) 어플리케이션에서 사용된다. TLS 세션은 특히 통신 당사자 사이에 공유되는 고유 세션 식별자, 암호 규격(cipher specification), 및 마스터 비밀(master secret)을 포함한다. 마스터 비밀은 일반적으로 핸드셰이크 중에 교환되는 구성 요소를 이용하여 각 당사자가 별도로 계산(compute)한다. TLS 핸드셰이크 프로토콜은 다음의 순서/단계를 포함한다:
a) 통신에 관한 암호 매개변수(cryptographic parameter)에 동의하는 Hello 메시지를 교환. 클라이언트에서 서버로 전송되는 Client Hello 메시지는 지원되는 암호 목록을 나타낼 수 있으며, 특히 클라이언트 제공 난수(client-supplied random number)를 포함할 수 있다. 상기 서버에서 상기 클라이언트로 전송되는 Server Hello 메시지는 클라이언트가 제안한 암호 중에서 선택한 것을 나타낼 수 있으며, 서버 제공 난수(server-supplied random number)를 포함할 수 있다.
b) 당사자의 인증을 수행. 상기 서버는 자신의 신원을 확인하는 인증서를 전송할 수 있고, 차례로 상기 클라이언트로부터의 인증서를 요청할 수 있다. 이 단계는 상기 클라이언트로부터의 ClientCertificate 메시지 및 상기 서버로부터의 ServerCertificate 메시지를 포함할 수 있다.
c) 상기 클라이언트 및 서버로 하여금 공유 비밀(예를 들어, 사전 마스터 비밀(pre-master secret))에 동의하게 하거나 또는 계산할 수 있도록 하는데 필요한 암호 매개변수를 교환. 상기 암호 매개변수는 선택된 암호에 따라 키 또는 다른 정보들의 세트를 포함할 수 있다. 예를 들어서, 이 단계에서 교환되는 키는 상기 클라이언트 및 서버의 공개 암호 키(Rivest-Shamir-Adleman, Diffie-Hellman 등)일 수 있다. 이 단계는 상기 클라이언트에 의해 전송된 ClientKeyExchange 메시지 및/또는 상기 서버에 의해 전송된 ServerKeyExchange 메시지를 포함할 수 있다. RSA(Rivest-Shamir-Adleman)이 서버 인증 및 키 교환에 사용되는 경우, 사전 마스터 비밀은 클라이언트에 의해 생성되고, 서버의 공개 키에서 암호화되고, ClientKeyExchange 메시지의 일부로 서버에 전송된다. 그러고 나서 상기 서버는 이의 개인 키를 사용하여 상기 사전 마스터 비밀을 해독한다. Diffie-Hellman이 사용된 경우에는, 각 측에서 협상된 키에 따라 자체 사전 마스터 비밀을 계산한다.
d) 각 전송 당사자가 이후 합의된 암호 매개변수를 사용하여 세션의 발신 메시지를 암호화할 것임을 나타내는 ChangeCipherSpec 메시지를 교환.
e) 공식적으로 세션 핸드셰이크를 종료하기 위한 Finished 메시지를 교환. 상기 클라이언트 및 서버로 하여금 이들의 피어(peer)가 올바른 보안 파라미터(예를 들어, 공유 비밀)를 수신 및/또는 계산하였는지, 그리고 침입자에 의한 변조(tampering) 없이 핸드셰이크가 발생하였는지를 확인할 수 있게 하기 위해, ClientFinished 및 ServerFinished 메시지는 암호화된다. 각 수신 당사자는 수신한 Finished 메시지를 해독하려고 시도해야 하고, 성공적인 해독은 성공적인 핸드셰이크를 나타낸다.
TLS 프로토콜에서, 각 당사자는 핸드셰이크 중에 교환된 암호 매개변수에 따라, 예를 들어 사전 마스터 비밀, 및 클라이언트- 및 서버- 제공 난수에 따라, 마스터 비밀을 계산한다. 그리고 상기 마스터 비밀로부터, 각 측은 세션 키의 세트를 결정할 수 있다. 본 명세서에서 용어 "세션 키(session key)"는 현재 세션 동안 통신을 암호화(encryption) 및/또는 암호 해독(decryption, 복호화)하는데 사용되는 암호 매개변수 값들을 총칭적으로 나타내기 위해 사용된다. 예시적인 세션 키는 특히 사전 마스터 비밀, 마스터 비밀, 클라이언트 및 서버 측 기록 키(write key), 초기화 벡터/난스(nonce), 및 메시지 인증 코드(message authentication codes, MAC)를 포함한다. 대칭 암호를 사용하는 실시예에서, 암호화 키와 암호해독 키는 동일하므로 암호화 키에 대한 지식은 암호 해독(복호화)을 위해 충분하다. 비대칭 암호에서는, 암호화 키와 암호해독 키가 다르다. 따라서 세션 키가 사용되는 방식은 협의된 암호에 따라 달라진다.
본 발명의 일부 실시예는 핸드셰이크의 Finished 메시지를 전송하기 전에, 현재 세션 동안에 암호화를 위해 사용된 세션 키가 각 측에 의해 계산되어야만 한다는 관찰에 의존한다(그렇지 않으면 개별 메시지는 암호화될 수 없음). 또한, 세션 키를 도출하기 위한 구성요소는 핸드셰이크의 일부로, 예를 들어서 ServerHello, ClientKeyExchange, 및 ServerKeyExchange 메시지의 일부로, 양 측에 의해 수신된다. 따라서, 세션 키는 핸드셰이크 중에 언젠가 클라이언트 시스템의 메모리에 나타날 수 있다. 본 발명의 일부 실시예는 핸드 셰이크의 타이밍을 사용하여 세션 키의 대략적인 메모리 위치를 결정한다.
도 5는 본 발명의 일부 실시예에 따라 인트로스펙션 엔진(40)에 의해 수행되는 단계들의 예시적 시퀀스를 보여준다. 단계들(502-504)의 시퀀스에서, 엔진(40)은 클라이언트 시스템(12)과 원격 파티(예를 들어, 도 1의 콘텐트 서버(13)) 사이에 전송되는 핸드셰이크 메시지를 탐지하기 위하여 네트워크 필터(42)와 협력할 수 있다. 일 예에서, 연결 요청은 게스트 VM(32) 내에서 실행되는 어플리케이션, 예를 들어, 브라우저로부터 나올 수 있고, TLS 세션, SSH 세션, VPN 세션 등과 같은 암호화된 통신 세션을 개시하려는 의사를 나타낼 수 있다. 이처럼, 연결 요청은 서버(13)로의 핸드셰이크 메시지(예를 들어, ClientHello)를 포함할 수 있다. 다른 예에서, 탐지된 핸드셰이크 메시지는 클라이언트 시스템(12)으로부터 수신한 ClientHello에 대한 응답으로 전송된, 서버(13)로부터의 메시지(예를 들어, ServerHello)를 포함할 수 있다.
핸드셰이크 메시지가 탐지된 경우, 단계(506)에서 인트로스펙션 엔진(40)은 세션에 사용될 세션 ID 및 암호 표시자와 같은 핸드셰이크 매개변수의 세트를 추출할 수 있다. TLS 연결을 모니터링하는 실시예에서, 단계(506)는 서버- 및/또는 클라이언트- 제공 난수와 같은 암호 매개변수를 추가로 추출할 수 있다. 그러고 나서 인트로스펙션 엔진(40)은 네트워크 필터(42)로 하여금 핸드셰이크 메시지를 이가 의도한 수신자 VM(예를 들어, 도 3의 게스트 VM(32))에게 포워딩하도록 지시할 수 있다.
단계(508)에서, 인트로스펙션 엔진(40)은 게스트 VM(32)의 최적화된 메모리 스냅샷을 확보할 수 있다. 메모리 스냅샷은 개별 VM에 의해 사용되는 메모리 페이지들의 세트의 콘텐트 사본을 포함한다. 일부 실시예들에서, 최적화된 스냅샷은 세션 키를 가장 포함할 것 같은 메모리 페이지들의 세트의 콘텐트, 또는 적어도 현재 통신 세션의 세션 키를 도출하는데 사용되는 암호 매개변수 값들을 포함한다. 최적화된 스냅샷을 확보하기 위한 예시적인 방법은 이하에서 상술된다.
단계(510)는 네트워크 필터(42)로부터 개별 페이로드의 사본을 획득함으로써, 현재 세션의 암호화된 페이로드를 수확(harvest)할 수 있다. 일부 실시예들에서, 네트워크 필터(42)는 예를 들어서, 세션 ID 및/또는 가상 머신에 의해 인덱싱된 다수의 데이터 큐를 유지하도록 구성된다. 따라서 네트워크 필터(42)는 개별 페이로드가 다른 통신들 사이에 산재된 다수의 패킷들로 나누어질 때에도, 세션의 암호화된 페이로드를 분명하고 일관되게 복구할 수 있다. 다음으로, 단계(512)에서, 인트로스펙션 엔진(40)은 수확된 최적화된 메모리 스냅샷, 핸드셰이크 매개변수 및 암호화된 페이로드를 분석을 위해 보안 서버(15)로 전송할 수 있다.
도 6은 게스트 VM(32)의 최적화된 메모리 스냅샷을 얻기 위하여 인트로스펙션 엔진(40)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 세션 키의 대략적인 메모리 위치를 도출하기 위해, 본 발명의 일부 실시예는 개별 세션 키가 생성된 시간과 대략적으로 일치하는 시간 간격 동안 그 콘텐트가 변경된 메모리 페이지의 세트를 식별한다.
콘텐트가 최근에 변경된 메모리 페이지, 즉 최근에 쓰여진 페이지는 본 기술분야에 알려진 임의의 방법을 사용하여 식별될 수 있다. 일 예에서, 인트로스펙션 엔진(40)은 게스트 VM(32)과 연관된 SLAT 데이터 구조에서 게스트 VM(32)에 의해 사용된 메모리 페이지들의 세트를 쓰기 금지로 표시할 수 있다. 그러고 나서, 그러한 페이지의 콘텐트를 수정하려는 임의의 후속 시도는 메모리 접근 위반으로 여겨질 것이고, 따라서 프로세서 이벤트(예를 들어서, VM Exit 또는 가상화 예외)를 트리거할 수 있으며, 그러므로 이는 인트로스펙션 엔진(40) 및/또는 유틸리티 에이전트(44)에 의해 인터셉트될 것이다. 이벤트를 인터셉트하는 것에 응답으로, 개별 쓰기가 진행될 수 있게 하기 위하여, 엔진(40)은 개별 페이지를 쓰기 가능으로 표시하고, 개별 VM을 재가동할 수 있다. 이러한 방식으로, 엔진(40)은 "더티(dirty, 변경)" 메모리 페이지의 리스트를 가질 수 있게 되고, 이의 콘텐트는 원하는 최적화된 메모리 스냅샷을 구성한다.
상기 시나리오는 다소 비효율적이고 많은 컴퓨팅 비용이 소요된다. 몇 가지 최적화가 선택된 하드웨어 플랫폼에서 가능하다. 예를 들어, 액세스 및/또는 더티 비트를 지원하는 플랫폼에서, 일부 실시예들은 게스트 VM(32)에 의해 사용되는 메모리 페이지의 페이지 테이블 엔트리(Intel® 플랫폼의 EPT 엔트리)의 더티 비트를 리셋할 수 있고, 개별 페이지가 쓰여졌는지 여부를 결정하기 위해 나중에 더티 비트의 값을 체크할 수 있다. 상기 메커니즘은 추가로 최적화될 수 있다. 예를 들어, 특정 세대의 Intel® 프로세서는, 콘텐트가 변경된 페이지의 리스트를 메모리 인트로스펙션 엔진(40)에 액세스할 수 있는 메모리 위치로 자동으로 내보내는, 페이지 수정 로깅(page modification logging, PML)이라고 불리는 기능을 구비한다.
가능한 다른 최적화 전략은, 일부 하이퍼바이저(예를 들어, Xen®)가 가상 머신을 효율적으로 마이그레이션 및/또는 복제하는데 사용하는 실시간 마이그레이션(Live Migration) 기능을 이용하는 것이다. 각각의 기능은 쓰여진 페이지를 자동으로 추적하고 일정에 따라 상기 페이지의 리스트를 내보내는 로그 변경 프리미티브(log-dirty primitives)의 세트를 중심으로 구성된다.
도 6에 도시된 단계들의 시퀀스는 제1 종류의 세션 이벤트와 제2 종류의 세션 이벤트 사이의 시간 간격 동안 수정된 페이지들을 식별한다. 본 명세서에서 세션 이벤트는, 예를 들어 TLS 프로토콜과 관련하여 상기에 전술한 바와 같은 통신 프로토콜의 다양한 단계들을 나타낸다. 예시적인 세션 이벤트는, 예를 들면 특정 통신 세션의 일부를 형성하는 메시지(예를 들어서, 클라이언트 시스템(12)과 서버(13) 사이에서 전송되는 핸드셰이크 메시지, 개별 세션의 암호화된 페이로드의 일부를 포함하는 메시지, 등)를 전송 및/또는 수신하는 것을 포함한다. 제1 종류의 이벤트의 탐지(단계 522-524)는 페이지 변경 모니터링을 하도록 스위치 온 한다(단계 526). 일부 실시예들에서, 단계(526)는 게스트 VM(32)의 동작을 중단시키는 것, 게스트 VM(32)에 의해 사용되는 메모리 페이지에 대응하는 SLAT 엔트리의 더티 비트를 재설정하는 것, 그리고 게스트 VM(32)을 재개시(re-launch)하는 것을 포함한다. 일부 실시예들에서, 쓰기에 대해 모니터링 될 메모리 페이지들의 세트는, 예를 들어 현재 통신 세션을 수행하는 프로세스(예를 들어 브라우저)에 의해 또는 암호화/암호해독을 처리하는 프로세스(예를 들어, Windows®에서의 LSASS.EXE)에 의해 사용되는 페이지의 세트로 좁혀질 수 있다. 메모리 인트로스펙션 엔진(40)은 게스트 OS(34)에 의해 사용되는 데이터 구조를 검색(walking)함으로써 개별 프로세스/어플리케이션에 의해 사용되는 페이지를 식별할 수 있다. 이러한 메모리 페이지를 식별하는 작업은 게스트 VM(32) 내에서 실행되는 유틸리티 에이전트(44)와 협력함으로써 보다 쉽게 이루어질 수 있고, 에이전트(44)는 일반적으로 엔진(40) 보다 훨씬 많은 정보에 접근한다.
쓰기에 대한 모니터링은, 예를 들어 개별 세션의 다른 핸드셰이크 메시지를 수신하는 것과 같이 제2 종류의 세션 이벤트의 발생을 탐지하면(단계 528-530) 스위치 오프된다(단계 534). 단계(532)는 메모리 스냅샷을 취하는 동안 메모리에 대해 수정이 발생하는 것을 방지하기 위해 게스트 VM(32)의 실행을 중단할 수 있다. 단계들(536-538)의 추가적인 시퀀스에서, 엔진(40)은 제1 및 제2 세션 이벤트 사이에 쓰여진 페이지를 식별하고, 그러한 페이지의 콘텐트를 최적화된 메모리 스냅샷으로 복사한다. 추가적인 단계(540)에서, 인트로스펙션 엔진(40)은 게스트 VM(32)을 재개시할 수 있다.
선택적 실시예에서, 게스트 VM(32)의 실행은 최적화된 메모리 스냅샷을 수확하는 동안 중단되지 않는다. 이러한 중단은 시스템을 느리게 하고 사용자 경험에 영향을 미칠 수 있다. 또한, 게스트 VM(32)을 중단시키는 것은 보안 목적으로 바람직하지 않을 수 있는데, 이는 개별 VM이 모니터링되고 있다는 사실을 누설할 수 있기 때문이다. 일반적으로 세션 키는 한 번만 쓰여지고(write once) 메모리에서 이동하지 않으므로 게스트 VM(32)에 의해 사용되는 모든 페이지의 일관성을 필요로 하지 않는다. 다만 한가지, 더티 페이지(dirty page, 변경 페이지)를 복사하기 전에 현재 세션이 끝나지 않도록 (따라서 키가 사라지지 않도록) 해야 한다. 게스트 VM(32)을 정지(halting)시키는 대신, 일부 실시예는 네트워크 필터(42)를 사용하여 게스트 VM(32)으로 들어오거나 나가는 통신 흐름을 조작한다. 예를 들어서, 필터(42)는 메모리 스냅샷의 수확 기간 중에, 서버(13)로부터 게스트 VM(32)으로의 데이터 패킷의 전달을 지연시킬 수 있다. 지연은 오히려 정상적인 네트워크 지연(network latency)으로 게스트 VM(32) 내에서 실행되는 소프트웨어에 나타날 수 있다. 지연 기능을 달성하기 위해, 일부 실시예는 프로세스간 통지 메커니즘을 사용하여 엔진(40)과 네트워크 필터(42) 사이에 통신한다. 예를 들어서, 엔진(40)은 최적화된 메모리 스냅샷의 성공적인 수확에 대해 응답하여 필터(42)에 통지할 수 있다. 차례로, 필터(42)는 특정 네트워크 패킷(예를 들어, ServerFinished 메시지의 ServerHello)을 인터셉트하는 것에 응답하여 엔진(40)에 통지할 수 있다.
세션 키가 보통 세션의 핸드셰이크 파트 중에 유도된다는 관찰정보(observation)에 따라서, 본 발명의 다양한 실시예들은 제1 및 제2 종류의 세션 이벤트로서 다양한 핸드셰이크 이벤트를 사용한다. 예를 들면, 일부 실시예들에서, 제1 종류의 이벤트-페이지 모니터링을 스위치 온 하는 것-은 개별 세션에 대한 세션 키를 도출하기 위한 구성요소를 포함하는 네트워크 패킷의 네트워크 필터(42)에 의한 인터셉트를 포함한다. 예시적인 구성요소는 특히 난수, 키, 및 공유 비밀을 포함한다. 상기 제1 종류의 이러한 예시적인 세션 이벤트 하나는 서버(13)로부터 수신한 ServerHello 메시지이다. 다른 실시예도 사용될 수 있다. 상기 제1 종류의 이벤트에 대해서 가능한 다른 선택은 게스트 VM(32)으로부터의 ClientHello 메시지, ClientKeyExchange 및 ServerKeyExchange 메시지를 포함한다. 상기 제2 종류의 세션 이벤트-페이지 모니터링을 스위치 오프 하는 것-에 대해서, 일부 실시예는 게스트 VM(32)으로 또는 게스트 VM(32)로부터 전송된 암호화된 메시지의 네트워크 필터(42)에 의한 인터셉트를 사용한다. 상기 제2 종류의 이벤트의 일예는, ClientFinished 또는 ServerFinished 메시지의 인터셉트이다. 상기 제2 종류의 이벤트의 가능한 다른 선택은 현재 세션의 세션 키를 사용하여 암호화된 페이로드의 일부를 포함하는 패킷의 인터셉트이다.
도 5 및 도 6과 관련하여 전술한 예시적인 방법들은 단일 통신 세션에 적용된다. 실제로는, 다수의 세션이 단일 VM 내에서 동시에, 예를 들어, 브라우저의 복수의 인스턴스에 의해(탭 브라우징으로), 또는 동시에 실행되는 특유 어플리케이션에 의해 수행될 수 있다. 일부 실시예들은 각 세션에 대해 개별적으로 더티 페이지를 추적하도록 구성된다. 명료성을 위하여, 이하의 설명은 TLS 세션의 메모리 스냅샷을 수확하는 특정 작업에 초점을 맞출 것이며, 각각의 스냅샷은 각 세션의 ServerHello 메시지와 개별 세션의 ClientFinished 메시지 사이에 수정된 메모리 페이지를 포함한다.
세션 특정 최적화된 스냅샷(session-specific optimized snapshot)을 얻는 것은 세션 이벤트의 임의의 시퀀스를 풀어내야 하는 추가적인 문제를 제기한다. 일부 실시예는 2개의 연속적인 이벤트 사이에 쓰여진 모든 페이지들을 식별하도록 페이지 모니터링 메커니즘을 구성한다. 그러나, 이러한 이벤트는 특징적인 세션에 속할 수 있고, 제1 종류 또는 제2 종류의 것일 수 있다(도 6과 관련하여 위에서 사용된 명명법을 차용). 이러한 모호성을 설명하기 위해, 인트로스펙션 엔진(40)의 일부 실시예는 현재 활성인 세션의 전역 목록(global list)을 유지하며, 상기 리스트의 각 엔트리는 세션 ID, 소스 인터넷 프로토콜(internet protocol, IP) 주소, 소스 포트 번호, 목적지 IP 주소, 목적지 포트 번호, 및 개별 세션의 ServerHello 메시지의 타임스탬프와 같은 정보를 포함한다. 엔진(40)은 각각의 모니터링된 메모리 페이지에 대해 적어도 하나의 타임스탬프를 저장하는 타임스탬프의 전역 배열(global array)을 추가로 유지할 수 있다. 배열의 각 타임스탬프는 개별 페이지가 쓰여질 때의 시간 순간을 나타낼 수 있다. 이러한 이유로, 상기 타임스탬프 배열은 본 명세서에서 페이지 수정 타임스탬프 배열로 간주될 것이다.
도 7은 다수의 현재 TLS 세션을 추적하기 위하여 구성된 실시예에서 메모리 인트로스펙션 엔진에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 단계(552)는 페이지 수정 타임 스탬프 배열(page modification timestamp array)을 초기화한다. 단계(552)는 페이지 수정 탐지 메커니즘(예를 들면, PML, 더티 비트 재설정 등)을 구성하는 것을 추가로 포함할 수 있다. 단계들(554-556)의 시퀀스는 Hello 또는 Finished 종류의 이벤트에 주목(listen for)한다. 이벤트가 탐지되는 경우, 단계(558)에서 인트로스펙션 엔진(40)은 현재 더티 페이지, 즉 이것이 Hello 또는 Finished 메시지인지 여부와는 관계 없이 이전에 탐지된 이벤트 이후에 콘텐트가 변경된 메모리 페이지를 식별하기 위하여 페이지 수정 탐지 메커니즘을 호출할 수 있다. 그러고 나서 단계(560)는 더티 페이지에 대응하는 타임스탬프를 현재 타임스탬프 또는 현재 탐지된 이벤트의 발생을 나타내는 타임스탬프로 업데이트되도록 페이지 수정 타임스탬프 배열을 업데이트할 수 있다. 개별 이벤트가 제1 종류의 것인 경우(예를 들어, ServerHello), 단계(564)에서, 엔진(40)은 특히 세션 ID, 소스 및 목적지 IP 주소 및 포트를 채우는 새로운 세션 데이터 구조를 초기화할 수 있다. 추가적인 단계(566)는 현재의 ServerHello 이벤트를 나타내는 타임스탬프를 기록하고, 이는 본 명세서에서 개별 세션의 Hello 타임스탬프로 간주될 것이다.
현재 탐지된 이벤트가 제2 종류의 것인 경우(예를 들어, ClientFinished), 단계(570)에서, 인트로스펙션 엔진(40)은 페이지 수정 타임스탬프 배열을 검색할 수 있다. 각각의 페이지에 대하여, 일부 실시예는 개별 페이지의 페이지 수정 타임스탬프를 개별 세션의(즉, 현재 탐지된 이벤트가 속하는 세션의) Hello 타임스탬프와 비교할 수 있다. 수정 타임스탬프가 개별 세션의 Hello 이벤트 이후에 개별 페이지가 쓰여졌다고 나타내는 경우, 엔진(40)은 상기 개별 페이지를 개별 세션의 최적화된 메모리 스냅샷에 포함시킬 수 있다.
도 8은 본 발명의 일부 실시예에 따른, 암호해독 엔진(decryption engine, 복호화 엔진, 60)을 포함하는 보안 서버(15) 상에서 실행되는 예시적인 소프트웨어를 보여준다. 각각의 모니터링된 통신 세션에 대하여, 엔진(60)은 개별 클라이언트 시스템(예를 들어, 도 1의 클라이언트 시스템들(12a-d))으로부터 핸드셰이크 매개변수(72)의 세트, 최적화된 메모리 스냅샷(70), 및/또는 암호화된 페이로드(74)와 같은 세션 데이터를 수신할 수 있다. 이러한 데이터는 각 항목을 특정 클라이언트 시스템, VM, 및/또는 통신 세션과 분명하게 연관시키는 표시자를 추가로 포함할 수 있다. 핸드셰이크 매개변수(72)는 페이로드(74)를 암호화하는데 사용되는 암호의 표시자를 포함할 수 있다. 최적화된 메모리 스냅샷(70)은 전술한 바와 같이 클라이언트 시스템의 메모리 페이지의 콘텐트 사본을 포함한다. 페이로드(74)는 암호화된 통신의 일부(예를 들어, 네트워크 패킷)을 포함한다.
도 9는 본 발명의 일부 실시예에 따라 암호해독 엔진(60)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 클라이언트 시스템(12)으로부터 세션 데이터를 수신하는 것에 응답으로(단계 582), 단계(584)에서, 엔진(60)은 상기 세션 데이터로부터 개별 세션에서 사용된 암호의 표시자를 추출할 수 있다. 그러고 나서 암호해독 엔진(60)은 암호에 따라서 암호해독 과정/알고리즘을 선택할 수 있다. 그 다음, 단계들(586-588-590)의 시퀀스는 완료 조건이 만족될 때까지, 예를 들어, 페이로드의 성공적인 암호해독이 달성될 때까지, 또는 암호해독을 위해 할당된 시간 기간이 만료될 때까지 루프 내에서 반복된다.
페이로드를 해독하려는 시도는 암호 기술분야에 알려진 임의의 방법에 따라 진행될 수 있다. 최적화된 메모리 스냅샷을 수확하기 위한 과정은, 개별 세션에 대한 세션 키 또는 암호화 및 암호해독 키를 도출하는데 사용된 최소한의 암호 매개변수 값이 개별 메모리 스냅샷 내에 위치할 수 있도록 만들어졌다. 세션 키의 바이트 사이즈는 미리 알려져 있거나 또는 클라이언트 시스템(12)으로부터 수신한 암호화 파라미터(encryption parameter)로부터 도출될 수 있다. 그러나, 스냅샷 내의 세션 키의 정확한 위치는 알려지지 않을 수 있다. 그러므로 일부 실시예는 트라이얼 앤드 에러 방식으로 키 재료를 검색할 수 있다. 도 9에 도시된 그러한 일 예에서, 단계(586)는 최적화된 메모리 스냅샷으로부터 후보 암호해독 키를 도출할 수 있다. 대칭 암호화 방식(symmetric cryptography)(예를 들어, TLS 프로토콜)을 사용하는 실시예에서, 암호화 및 암호해독 키는 동일하므로 후보 암호해독 키는, 예를 들어 스냅샷의 바이트의 시퀀스(상기 시퀀스는 필요한 바이트 크기를 가짐)를 포함할 수 있다. 단계(588)에서, 엔진(60)은 후보 키를 사용하여 개별 세션 페이로드의 적어도 일부를 해독하려고 시도할 수 있다. 성공은 본 기술분야에 알려져 있는 다양한 방법을 사용하여 평가될 수 있다. 예를 들어, 일부 실시예는 암호 해독된 메시지의 정보 엔트로피(information entropy)를 계산한다. 이러한 방법들은 긍정 오류(false positive) 또는 부정 오류(false negative)를 생성하는 것으로 알려져 있지만, 낮은 엔트로피는 일반적으로 성공적인 암호 해독을 나타낸다.
암호 해독을 위한 대안적인 접근법은 본 기술분야에 기지 평문 공격(known plaintext attack)으로 알려진 것을 사용한다. 이러한 일 실시예는 암호해독 엔진(60)이 알려진 메시지(known message)의 암호화된 버전, 예를 들어, 개별 세션 동안 교환되는 (암호화된) ClientFinished 및/또는 ServerFinished 메시지의 콘텐트에 접근할 수 있다는 사실을 이용한다. 이러한 메시지의 형식과 평문은 TLS 프로토콜에 문서화되어 있으며, 미리 알려져 있다.
본 발명의 일부 실시예들은 클라이언트 시스템과 원격 파티 사이의 통신 일부를 또는 모두를 해독할 수 있게 한다. 이러한 통신의 예로는 보안 소켓 계층(Secure Socket Layer, SSL)/전송 계층 보안(Transport Layer Security, TLS) 연결, 보안 쉘(Secure Shell, SSH), 가상 사설 네트워크(Virtual Private Network, VPN) 연결, 및 어니언 라우팅(onion routing)/익명 네트워크(anonymity network) 연결(예를 들어, TOR 소프트웨어)을 포함하는 대칭 또는 비대칭 키 알고리즘을 사용하여 암호화된 임의의 통신을 포함한다. 기술된 방법의 예시적인 적용은 특히 악성 소프트웨어의 탐지 및 분석, 침입 탐지, 및 감시를 포함한다.
적용의 일 예에서, 암호해독 시스템의 적어도 일부를 호스팅하는 컴퓨터 시스템은 허니팟 시스템의 일부를 형성한다. 일반적으로 허니팟은 악성 소프트웨어의 설치를 허용하거나 그리고/또는 침입자가 개별 컴퓨터 시스템의 일부 양상을 제어할 수 있도록 구성된다. 그리고 악성 소프트웨어 및 침입자는 암호화된 채널을 사용하여 명령 제어(Command and Control, C&C) 서버와 같은 외부 엔터티와 통신할 수 있다. 이러한 통신의 암호 해독을 가능하게 함으로써, 일부 실시예는 멀웨어, 침입, 및/또는 해킹 방법에 대한 연구를 용이하게 할 수 있다.
일부 실시예에서의 다른 예시적인 안티-멀웨어 사용은 악성 콘텐트가 클라이언트 시스템에 침투하기 전 이를 탐지하는 것을 포함한다. 일부 최신의 멀웨어 공격 시나리오에서는, 다른 양성 서버와의 암호화된 통신을 통해, 예를 들어서, 이메일(피싱) 또는 온라인 광고를 통해 악성 소프트웨어 에이전트가 클라이언트에게 도달한다. 암호화로 인해, 에이전트는 일반적으로 호스트 상에 패키지를 풀고 스스로를 설치할 때까지, 또는 이후 멀웨어를 나타내는 일부 활동을 수행할 때까지 탐지되지 않을 수 있다. 본 발명의 일부 실시예는 이러한 에이전트의 조기 탐지 및 불능화를 가능하게 할 수 있다.
다른 예시적인 적용에서, 클라우드 서비스 제공자는 일부 실시예를 사용하여 암호화된 트래픽을 준 실시간으로 검사하고 이들의 서버로 또는 서버로부터 순환하는 악성 데이터를 신속하게 검출할 수 있다. 이러한 탐지는 개별 서버가 예를 들어서 분산 서비스 거부(distributed denial of service, DDOS) 공격과 같은 악성 공격에 대해 런치패드(launchpad)로서 역할하는 것을 방지할 수 있다.
암호화된 통신의 해독은 악명 높게 어려운 분야이다. 암호를 해제하기 위한 종래의 접근법 일부는 암호 해독을 완전히 피하려고 한다. 이러한 방법들은, 예를 들어 추가적인 정보를 제공하기 위해 암호화 라이브러리 수정하거나 또는 사용자로 하여금 개별 통신의 평문(plaintext), 또는 실제 암호화 키, 또는 키에 도움이 되는 그 밖의 정보에 눈에 띄지 않게 접근할 수 있게 하는 백도어(backdoor)를 도입하는 것을 포함한다. 이러한 접근법은 장기적으로 인터넷 보안을 약화시킬 수 있기 때문에 위험한 것으로 여겨진다. 이들은 또한 일반적으로 이식성이 없어서(non-portable), 다시 말해 특정 하드웨어 플랫폼 및/또는 운영 시스템에서만 유효하기 때문에 불편하다. 또 다른 불편은 암호 라이브러리(cryptographic library)에 대한 수정이 개별 클라이언트 상에서 실행되는 소프트웨어에 보여지고 따라서 탐지되고 무효화 될 수 있다는 것이다.
현대의 암호들은 몇몇 버전의 무차별 대입 공격(brute force attack)을 사용하여야만 깨질 수 있고, 이는 통상적으로 상당한 컴퓨팅 비용을 수반한다. 그러한 공격 중 하나는, 어느 하나가 마침내 작동할 때까지 다수의 후보 키를 시도하는 것을 포함한다. 일부 종래의 암호 해독 시스템/방법은 클라이언트 시스템의 메모리 내에서 키 재료를 검색한다. 그러나, 키 재료의 실제 위치를 알지 못한다는 것은 검색에 엄청난 컴퓨팅 비용을 필요로 하기 때문에 이러한 방법을 비현실적으로 만들 수 있다. 또한, 큰 메모리 덤프를 확보하기 위해 필요한 시간 동안 개별 머신을 중지하는 것은 사용자 경험에 부정적인 영향을 줄 수 있다. 일부 종래의 접근법은 실행 중 특정 순간에 메모리 덤프를 얻기 위하여 "탭 포인트(tap point)"를 설정함으로써 키 재료에 대한 검색을 최적화하려고 시도한다. 그러나, 탭 포인트는 미리 정의되므로 기본 시스템 및/또는 통신 소프트웨어가 업데이트 되는 경우 중단될 수 있다.
본 발명의 일부 실시예들은 2가지 키 관찰정보(observations)에 의존한다. 첫째, 잠재적으로 암호 해독으로부터 이익을 얻을 수 있는 다수의 클라이언트 시스템들은 하드웨어 가상화 구성(가상 머신)에서 실행된다. 예로서 가상 데스크탑 인프라스트럭쳐(virtual desktop infrastructure)의 클라우드 제공자 및 서버 팜(server farm)을 포함한다. 이러한 구성의 이점을 이용하기 위해, 본 발명의 일부 실시예는 개별 VM을 노출시키는 하이퍼바이저의 프로세서 권한 레벨에서 암호화된 통신을 수행하는 가상 머신 외부에 인트로스펙션 엔진을 위치시킨다. 인트로스펙션 엔진은 잠재적으로 개별 VM 내에서 실행되는 소프트웨어의 지식이나 간섭 없이 개별 VM에 의해 사용되는 메모리의 콘텐트에 접근하고 감시하기 위해 가상화 분야의 기술을 사용할 수 있다. 따라서 단일 인트로스펙션 엔진은 개별 클라이언트 시스템 상에서 동시에 실행되는 다수의 VM들에 의해 수행되는 통신을 눈에 잘 띄지 않게 모니터링할 수 있다.
두 번째 관찰정보는 암호화 키 또는 적어도 개별 키를 도출하기 위해 사용되는 암호 매개변수가 세션의 특정 단계 동안, 예를 들어 핸드셰이크 동안, 통신 파트너에 의해 교환된다는 것이다. 일부 실시예는 이러한 관찰정보를 사용하여 세션 키의 대략적인 위치를 도출하고, 이렇게 하여 메모리 검색 영역을 종래 방법에서의 수백 메가바이트에서 몇 메모리 페이지로(예를 들어 수십 킬로바이트에서 몇 메가 바이트) 줄일 수 있다. 이는 암호 해독의 컴퓨팅 노력을 현저하게 감소시켜 무차별 대입 공격이 가능하게 만든다.
일부 실시예들은 세션 키의 교환 및/또는 생성을 포함하는 시간 간격 동안 콘텐트가 변경되는 메모리 페이지의 세트를 식별하기 위하여, 페이지 테이블 엔트리 내 액세스 및/또는 더티 플래그(access and/or dirty flag, 접근 및/또는 변경 플래그), 또는 일부 Intel® 프로세서의 페이지 수정 로깅(page modification logging, PML) 기능을 설정하는 능력과 같은 현대 프로세서의 하드웨어 최적화를 사용한다. 일부 실시예들은 그러고 나서 개별 메모리 페이지의 콘텐트 내에서 키 재료를 검색한다.
클라이언트 시스템/가상 머신의 특정 하드웨어 또는 소프트웨어 기능에 의존하는 대신 통신 프로토콜의 기능에 따라 세션 키를 위치시킴으로써, 일부 실시예들은 운영 시스템 및 통신 어플리케이션(예를 들어, 브라우저, 메시징 앱(app), VPN 소프트웨어 등)에 관계없이 다수의 이기종(heterogeneous) 가상 머신을 실행하는 클라이언트 시스템에서 뿐만 아니라 다양한 장치들(개인용 컴퓨터, 모바일 전화기, 가전 제품 등)에서 통신의 암호 해독이 가능하게 한다.
모니터링 되는 VM 내에서 실행되는 소프트웨어에 의한 탐지를 피하기 위해, 일부 실시예들은 개별 VM의 최적화된 메모리 스냅샷을 수확함으로써 야기되는 이따금씩의 지연을 네트워크 지연(network latency)으로 위장한다. 일 예에서, 인트로스펙션 엔진은 메모리 스냅샷 획득 기간 동안 특정 네트워크 패킷을 모니터링 되는 VM으로 전달하는 것을 지연시키기 위하여 네트워크 필터와 협력한다. VM 내부에서 실행되는 소프트웨어의 경우, 이러한 지연은 네트워크 상의 전송 문제로 인하여 발생되는 것으로 보여질 수 있다. 또한, 사용자 경험에 영향을 주는 것을 피하기 위하여, 일부 실시예들은 암호 해독의 컴퓨팅 부담을 별도의 머신(보안 서버)으로 오프로딩(offload) 한다. 따라서 실제 암호 해독은 오프라인으로 수행될 수 있다.
상기의 실시예들이 본 발명의 범위를 벗어나지 않는다면 다양한 방법으로 변경될 수 있음은 통상의 기술자에게 당연한 것이다. 따라서 본 발명의 범위는 이하의 청구항과 그들의 법적 균등물에 의해서 결정되어야 한다.

Claims (24)

  1. 하드웨어 프로세서 및 메모리를 포함하는 클라이언트 시스템으로서, 상기 하드웨어 프로세서는 가상 머신 및 인트로스펙션 엔진을 실행하도록 구성되고, 여기서:
    상기 가상 머신은 원격 파티와 통신 세션을 수행하도록 구성되고, 상기 통신 세션은 암호화된 페이로드 이전에 오는 핸드셰이크 메시지(handshake message)를 포함하고, 상기 핸드셰이크 메시지는 암호화 키를 도출하기 위해 상기 클라이언트 시스템에 의해 사용되는 암호화 파라미터(encryption parameter)를 포함하고, 상기 암호화된 페이로드는 상기 암호화 키로 암호화되고; 그리고
    상기 인트로스펙션 엔진은 상기 가상 머신 외부에서 실행되고, 그리고
    - 상기 통신 세션의 제1 세션 이벤트의 발생과 상기 통신 세션의 제2 세션 이벤트의 발생 사이에 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라 상기 타겟 메모리 페이지를 상기 메모리 내에서 식별하고; 그리고
    - 응답으로, 상기 콘텐트에 따라서 상기 암호화된 페이로드를 해독(복호화)하도록 구성된 암호해독 엔진(decryption engine, 복호화 엔진)에 상기 타겟 메모리 페이지의 상기 콘텐트를 전송하도록 구성되는 것을 특징으로 하는 클라이언트 시스템.
  2. 제1항에 있어서,
    상기 제1 세션 이벤트는 상기 핸드셰이크 메시지를 상기 클라이언트 시스템으로부터 상기 원격 파티로 전송하는 것 또는 상기 핸드셰이크 메시지를 상기 클라이언트 시스템에서 수신하는 것을 포함하는 것을 특징으로 하는 클라이언트 시스템.
  3. 제2항에 있어서,
    상기 통신 세션은 전송 계층 보안(Transport Layer Security, TLS) 프로토콜을 준수하고, 상기 핸드셰이크 메시지는 ClientHello 메시지 또는 ServerHello 메시지를 포함하는 것을 특징으로 하는 클라이언트 시스템.
  4. 제1항에 있어서,
    상기 제2 세션 이벤트는 암호화된 데이터 패킷을 상기 클라이언트 시스템으로부터 상기 원격 파티로 전송하는 것 또는 상기 암호화된 데이터 패킷을 상기 클라이언트 시스템에서 수신하는 것을 포함하고, 상기 데이터 패킷은 상기 암호화 키로 암호화된 것을 특징으로 하는 클라이언트 시스템.
  5. 제4항에 있어서,
    상기 통신 세션은 전송 계층 보안 프로토콜을 준수하고, 상기 데이터 패킷은 ClientFinished 메시지의 일부 또는 ServerFinished 메시지의 일부를 포함하는 것을 특징으로 하는 클라이언트 시스템.
  6. 제4항에 있어서,
    상기 데이터 패킷은 상기 암호화된 페이로드의 일부를 포함하는 것을 특징으로 하는 클라이언트 시스템.
  7. 제1항에 있어서,
    상기 타겟 메모리 페이지를 식별하는 것은:
    상기 가상 머신에 의해 사용되는 메모리 페이지의 풀로부터 후보 메모리 페이지를 선택하는 것;
    상기 제2 세션 이벤트의 발생을 탐지하는 것에 응답으로, 상기 제2 세션 이벤트의 발생 전 상기 후보 메모리 페이지가 쓰여졌는지 여부를 상기 후보 메모리 페이지의 페이지 테이블 엔트리에 따라 결정하는 것;
    상기 후보 메모리 페이지가 쓰여졌는지 여부를 결정하는 것에 응답으로, 상기 후보 메모리 페이지가 쓰여진 경우 상기 후보 메모리 페이지를 상기 타겟 메모리 페이지로서 선택하는 것;
    을 포함하는 것을 특징으로 하는 클라이언트 시스템.
  8. 제1항에 있어서,
    적어도 하나의 하드웨어 프로세서는 상기 가상 머신 외부에서 네트워크 필터를 추가로 실행하도록 구성되고, 상기 네트워크 필터는 상기 클라이언트 시스템의 네트워크 어댑터를 제어하고, 여기서:
    상기 네트워크 필터는 상기 핸드셰이크 메시지를 인터셉트하고, 그리고 응답으로, 상기 인트로스펙션 엔진에 통지를 전송하도록 구성되고; 그리고
    상기 인트로스펙션 엔진은 상기 통지에 따라서 상기 제1 세션 이벤트의 발생을 추론하도록 추가적으로 구성되는 것을 특징으로 하는 클라이언트 시스템.
  9. 제1항에 있어서,
    적어도 하나의 하드웨어 프로세서는 상기 가상 머신 외부에서 네트워크 필터를 추가로 실행하도록 구성되고, 상기 네트워크 필터는 상기 클라이언트 시스템의 네트워크 어댑터를 제어하고, 여기서:
    상기 인트로스펙션 엔진은, 상기 제2 세션 이벤트의 발생에 응답하여, 상기 타겟 메모리 페이지의 콘텐트를 복사하고, 그리고 응답으로 상기 네트워크 필터로 통지를 전송하도록 추가적으로 구성되고; 그리고
    상기 네트워크 필터는 상기 가상 머신으로 향하는 데이터 패킷을 인터셉트하고, 그리고 응답으로 상기 통지를 수신할 때까지 상기 가상 머신으로의 상기 데이터 패킷 전송을 지연시키도록 구성되는 것을 특징으로 하는 클라이언트 시스템.
  10. 제1항에 있어서,
    상기 인트로스펙션 엔진은, 제3 이벤트의 발생에 응답하여, 추가로 상기 제1 세션 이벤트의 발생과 상기 제3 이벤트의 발생 사이에 상기 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라서 상기 타겟 메모리 페이지를 식별하도록 추가적으로 구성되고, 상기 제3 이벤트의 발생은 상기 통신 세션과 동시에 발생하는 다른 통신 세션에 의해 야기되는 것을 특징으로 하는 클라이언트 시스템.
  11. 복수의 클라이언트 시스템을 위한 암호해독(복호화) 과정을 수행하도록 구성된 암호해독 엔진을 실행하도록 구성된 하드웨어 프로세서를 포함하는 서버 컴퓨터 시스템으로서, 상기 암호해독 과정은:
    상기 복수의 클라이언트 시스템의 클라이언트 시스템의 타겟 메모리 페이지의 콘텐트를 수신하는 것;
    상기 클라이언트 시스템 상에서 실행되는 가상 머신과 원격 파티 사이에서 수행되는 통신 세션의 암호화된 페이로드를 수신하는 것; 그리고
    응답으로, 상기 타겟 메모리 페이지의 콘텐트에 따라서 상기 암호화된 페이로드를 해독(복호화)하는 것을 포함하고,
    상기 통신 세션은 암호화된 페이로드 이전에 오는 핸드셰이크 메시지(handshake message)를 포함하고, 상기 핸드셰이크 메시지는 암호화 키를 도출하기 위해 상기 클라이언트 시스템에 의해 사용되는 암호화 파라미터를 포함하고, 상기 암호화된 페이로드는 상기 암호화 키로 암호화되고; 그리고
    상기 클라이언트 시스템은 상기 가상 머신 외부에서 인트로스펙션 엔진을 실행하도록 구성되고, 상기 인트로스펙션 엔진은 상기 통신 세션의 제1 세션 이벤트의 발생과 상기 통신 세션의 제2 세션 이벤트의 발생 사이에 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라 상기 타겟 메모리 페이지를 상기 클라이언트 시스템의 메모리 내에서 식별하도록 구성되는 것을 특징으로 하는 서버 컴퓨터 시스템.
  12. 제11항에 있어서,
    상기 암호화된 페이로드를 해독하는 것은:
    상기 타겟 메모리 페이지의 콘텐트로부터 후보 암호해독 키(decryption key, 복호화 키)를 도출하는 것; 그리고
    상기 후보 암호해독 키를 이용하여 상기 암호화된 페이로드를 해독하려고 시도하는 것을 포함하는 것을 특징으로 하는 서버 컴퓨터 시스템.
  13. 제11항에 있어서,
    상기 제1 세션 이벤트는 상기 핸드셰이크 메시지를 상기 클라이언트 시스템으로부터 상기 원격 파티로 전송하는 것 또는 상기 핸드셰이크 메시지를 상기 클라이언트 시스템에서 수신하는 것을 포함하는 것을 특징으로 하는 서버 컴퓨터 시스템.
  14. 제13항에 있어서,
    상기 통신 세션은 전송 계층 보안(Transport Layer Security, TLS) 프로토콜을 준수하고, 상기 핸드셰이크 메시지는 ClientHello 메시지 또는 ServerHello 메시지를 포함하는 것을 특징으로 하는 서버 컴퓨터 시스템.
  15. 제13항에 있어서,
    상기 제2 세션 이벤트는 암호화된 데이터 패킷을 상기 클라이언트 시스템으로부터 상기 원격 파티로 전송하는 것 또는 상기 암호화된 데이터 패킷을 상기 클라이언트 시스템에서 수신하는 것을 포함하고, 상기 데이터 패킷은 상기 암호화 키로 암호화된 것을 특징으로 하는 클라이언트 시스템.
  16. 제15항에 있어서,
    상기 통신 세션은 전송 계층 보안 프로토콜을 준수하고, 상기 데이터 패킷은 ClientFinished 메시지의 일부 또는 ServerFinished 메시지의 일부를 포함하는 것을 특징으로 하는 서버 컴퓨터 시스템.
  17. 제15항에 있어서,
    상기 데이터 패킷은 상기 암호화된 페이로드의 일부를 포함하는 것을 특징으로 하는 서버 컴퓨터 시스템.
  18. 제11항에 있어서,
    상기 타겟 메모리 페이지를 식별하는 것은:
    상기 가상 머신에 의해 사용되는 메모리 페이지의 풀로부터 후보 메모리 페이지를 선택하는 것;
    상기 제2 세션 이벤트의 발생을 탐지하는 것에 응답으로, 상기 제2 세션 이벤트의 발생 전 상기 후보 메모리 페이지가 쓰여졌는지 여부를 상기 후보 메모리 페이지의 페이지 테이블 엔트리에 따라 결정하는 것;
    상기 후보 메모리 페이지가 쓰여졌는지 여부를 결정하는 것에 응답으로, 상기 후보 메모리 페이지가 쓰여진 경우 상기 후보 메모리 페이지를 상기 타겟 메모리 페이지로서 선택하는 것;
    을 포함하는 것을 특징으로 하는 서버 컴퓨터 시스템.
  19. 제11항에 있어서,
    상기 클라이언트 시스템은 상기 가상 머신 외부에서 네트워크 필터를 실행하도록 추가적으로 구성되고, 상기 네트워크 필터는 상기 클라이언트 시스템의 네트워크 어댑터를 제어하고, 여기서:
    상기 네트워크 필터는 상기 핸드셰이크 메시지를 인터셉트하고, 그리고 응답으로, 상기 인트로스펙션 엔진에 통지를 전송하도록 구성되고; 그리고
    상기 인트로스펙션 엔진은 상기 통지에 따라서 상기 제1 세션 이벤트의 발생을 추론하도록 추가적으로 구성되는 것을 특징으로 하는 서버 컴퓨터 시스템.
  20. 제11항에 있어서,
    상기 클라이언트 시스템은 상기 가상 머신 외부에서 네트워크 필터를 실행하도록 추가적으로 구성되고, 상기 네트워크 필터는 상기 클라이언트 시스템의 네트워크 어댑터를 제어하고, 여기서:
    상기 인트로스펙션 엔진은, 상기 제2 세션 이벤트의 발생에 응답하여, 상기 타겟 메모리 페이지의 콘텐트를 복사하고, 그리고 응답으로 상기 네트워크 필터로 통지를 전송하도록 추가적으로 구성되고; 그리고
    상기 네트워크 필터는 상기 가상 머신으로 향하는 데이터 패킷을 인터셉트하고, 그리고 응답으로 상기 통지를 수신할 때까지 상기 가상 머신으로의 상기 데이터 패킷 전송을 지연시키도록 구성되는 것을 특징으로 하는 서버 컴퓨터 시스템.
  21. 제11항에 있어서,
    상기 인트로스펙션 엔진은, 제3 이벤트의 발생에 응답하여, 추가로 상기 제1 세션 이벤트의 발생과 상기 제3 이벤트의 발생 사이에 상기 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라서 상기 타겟 메모리 페이지를 식별하도록 추가적으로 구성되고, 상기 제3 이벤트의 발생은 상기 통신 세션과 동시에 발생하는 다른 통신 세션에 의해 야기되는 것을 특징으로 하는 서버 컴퓨터 시스템.
  22. 제11항에 있어서,
    상기 하드웨어 프로세서는 상기 암호화된 페이로드를 해독한 결과에 따라서 상기 클라이언트 시스템이 악성 소프트웨어를 포함하고 있는지 여부를 결정하도록 추가적으로 구성되는 것을 특징으로 하는 서버 컴퓨터 시스템.
  23. 메모리를 추가로 포함하는 클라이언트 시스템의 하드웨어 프로세서에 의하여 실행될 때, 상기 하드웨어 프로세서로 하여금 상기 클라이언트 시스템 상에서 실행되는 가상 머신 외부에서 실행되는 인트로스펙션 엔진을 형성하도록 하는 명령들을 저장하는 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)로서,
    상기 가상 머신은 원격 파티와 통신 세션을 수행하도록 구성되고, 상기 통신 세션은 암호화된 페이로드 이전에 오는 핸드셰이크 메시지를 포함하고, 상기 핸드셰이크 메시지는 암호화 키를 도출하기 위해 상기 클라이언트 시스템에 의해 사용되는 암호화 파라미터를 포함하고, 상기 암호화된 페이로드는 상기 암호화 키로 암호화되고; 그리고
    상기 인트로스펙션 엔진은,
    - 상기 통신 세션의 제1 세션 이벤트의 발생과 상기 통신 세션의 제2 세션 이벤트의 발생 사이에 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라 상기 타겟 메모리 페이지를 상기 메모리 내에서 식별하고; 그리고
    - 응답으로, 상기 콘텐트에 따라서 상기 암호화된 페이로드를 해독(복호화)하도록 구성된 암호해독 엔진(decryption engine, 복호화 엔진)에 상기 타겟 메모리 페이지의 상기 콘텐트를 전송하도록 구성되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  24. 클라이언트 시스템과 원격 파티 사이에 암호화된 통신을 해독(복호화)하는 방법으로서, 상기 클라이언트 시스템은 가상 머신을 실행하도록 구성되고,
    상기 가상 머신은 원격 파티와 통신 세션을 수행하도록 구성되고, 상기 통신 세션은 암호화된 페이로드 이전에 오는 핸드셰이크 메시지를 포함하고, 상기 핸드셰이크 메시지는 암호화 키를 도출하기 위해 상기 클라이언트 시스템에 의해 사용되는 암호화 파라미터를 포함하고, 상기 암호화된 페이로드는 상기 암호화 키로 암호화되고,
    상기 방법은:
    상기 통신 세션의 제1 세션 이벤트의 발생과 상기 통신 세션의 제2 세션 이벤트의 발생 사이에 타겟 메모리 페이지의 콘텐트가 변경되었는지 여부에 따라 상기 타겟 메모리 페이지를 상기 클라이언트 시스템의 메모리 내에서 식별하기 위한 적어도 하나의 하드웨어 프로세서를 채용하는 것;
    상기 암호화된 페이로드를 수확하기 위한 적어도 하나의 하드웨어 프로세서를 채용하는 것; 그리고
    상기 타겟 메모리 페이지의 상기 콘텐트에 따라서 상기 암호화된 페이로드를 해독하기 위한 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함하는 것을 특징으로 하는 방법.
KR1020187029897A 2016-04-04 2017-03-29 가상화 환경에서 네트워크 트래픽을 해독하기 위한 시스템 및 방법 KR102041584B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662317804P 2016-04-04 2016-04-04
US62/317,804 2016-04-04
US15/471,981 2017-03-28
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 (2)

Publication Number Publication Date
KR20180129830A true KR20180129830A (ko) 2018-12-05
KR102041584B1 KR102041584B1 (ko) 2019-11-06

Family

ID=59962053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187029897A KR102041584B1 (ko) 2016-04-04 2017-03-29 가상화 환경에서 네트워크 트래픽을 해독하기 위한 시스템 및 방법

Country Status (13)

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

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
EP3623982B1 (en) 2018-09-12 2021-05-19 British Telecommunications public limited company Ransomware remediation
EP3623980B1 (en) * 2018-09-12 2021-04-28 British Telecommunications public limited company Ransomware encryption algorithm determination
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
US11347869B2 (en) * 2019-03-08 2022-05-31 International Business Machines Corporation Secure interface control high-level page management
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting
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
US11222123B2 (en) 2019-04-22 2022-01-11 Cyberark Software Ltd. Securing privileged virtualized execution instances from penetrating a virtual host environment
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
US10873578B1 (en) 2019-12-09 2020-12-22 Evan Chase Rose Biometric authentication, decentralized learning framework, and adaptive security protocols in distributed terminal network
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
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 北京升鑫网络科技有限公司 加密流量的实时解密方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130263263A1 (en) * 2010-12-13 2013-10-03 Comitari Technologies Ltd. Web element spoofing prevention system and method
US20140115702A1 (en) * 2012-10-19 2014-04-24 Xiaoning Li Encrypted data inspection in a network environment
US20150013008A1 (en) * 2013-07-05 2015-01-08 Bitdefender IPR Management Ltd. Process Evaluation for Malware Detection in Virtual Machines

Family Cites Families (24)

* 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 日本電気株式会社 コンピュータシステム、及びコンピュータシステムのメンテナンス方法
CN102763098B (zh) * 2009-12-14 2016-02-17 思杰系统有限公司 用于在可信和不可信虚拟机之间通信的方法和系统
WO2011152816A1 (en) * 2010-05-30 2011-12-08 Hewlett-Packard Development Company, L.P. Virtual machine code injection
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
EP2659650B1 (en) * 2010-12-29 2022-06-22 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
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
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 中国科学院信息工程研究所 一种在虚拟化环境中提供密码服务的方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130263263A1 (en) * 2010-12-13 2013-10-03 Comitari Technologies Ltd. Web element spoofing prevention system and method
US20140115702A1 (en) * 2012-10-19 2014-04-24 Xiaoning Li Encrypted data inspection in a network environment
US20150013008A1 (en) * 2013-07-05 2015-01-08 Bitdefender IPR Management Ltd. Process Evaluation for Malware Detection in Virtual Machines

Also Published As

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

Similar Documents

Publication Publication Date Title
KR102041584B1 (ko) 가상화 환경에서 네트워크 트래픽을 해독하기 위한 시스템 및 방법
US9838361B2 (en) Secure migration of virtual machines from source to target and transfer of VM descriptor and keys between physical servers
US10103892B2 (en) System and method for an endpoint hardware assisted network firewall in a security environment
EP3235161B1 (en) Using trusted execution environments for security of code and data
KR101662614B1 (ko) 네트워크 환경에서 암호화된 데이터 검사
Vaquero et al. Locking the sky: a survey on IaaS cloud security
Aiash et al. Secure live virtual machines migration: issues and solutions
EP2973171B1 (en) Context based switching to a secure operating system environment
US20090204964A1 (en) Distributed trusted virtualization platform
EP2672673B1 (en) Apparatus and method for secure data processing
US10542039B2 (en) Security against side-channel attack in real-time virtualized networks
Morbitzer et al. Guarantee: Introducing control-flow attestation for trusted execution environments
Yao et al. CryptVMI: A flexible and encrypted virtual machine introspection system in the cloud
Coppola et al. Automation for industry 4.0 by using secure lorawan edge gateways
Will et al. Trusted inter-process communication using hardware enclaves
Liang et al. Architectural protection of trusted system services for SGX enclaves in cloud computing
Yasmin et al. Investigating the possibility of data leakage in time of live VM migration
US11106788B2 (en) Security for active data request streams
Babu et al. A secure virtualized cloud environment with pseudo-hypervisor IP based technology
US11902298B2 (en) Dynamic remote browsing
Cheng et al. Protecting in-memory data cache with secure enclaves in untrusted cloud
Saeed Cross-VM Network Attacks & their Countermeasures within Cloud Computing Environments
Tiwari et al. Trusted Infrastructure Design for Secure Virtualization in Cloud Computing: A Review

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right