KR20120065335A - 가상 머신을 위한 엔트로피 풀 - Google Patents

가상 머신을 위한 엔트로피 풀 Download PDF

Info

Publication number
KR20120065335A
KR20120065335A KR1020127004750A KR20127004750A KR20120065335A KR 20120065335 A KR20120065335 A KR 20120065335A KR 1020127004750 A KR1020127004750 A KR 1020127004750A KR 20127004750 A KR20127004750 A KR 20127004750A KR 20120065335 A KR20120065335 A KR 20120065335A
Authority
KR
South Korea
Prior art keywords
operating system
entropy
computing device
guest operating
entropy pool
Prior art date
Application number
KR1020127004750A
Other languages
English (en)
Other versions
KR101761950B1 (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 KR20120065335A publication Critical patent/KR20120065335A/ko
Application granted granted Critical
Publication of KR101761950B1 publication Critical patent/KR101761950B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register

Abstract

컴퓨팅 장치의 호스트 운영 시스템에서, 엔트로피 데이터는 컴퓨팅 장치의 하나 이상의 하드웨어 구성요소 각각에 적어도 부분적으로 기초하여 수집된다. 엔트로피 풀(entropy pool)은 수집된 엔트로피 데이터에 적어도 부분적으로 기초하여 업데이트되고, 엔트로피 풀로부터의 데이터는 컴퓨팅 장치의 가상 머신으로서 실행하는 게스트 운영 시스템에 제공된다. 게스트 운영 시스템(guest operating system)은 호스트 운영 시스템(host operating system)에 의해 제공되는 엔트로피 풀로부터의 데이터에 기초하여 게스트 운영 시스템 엔트로피 풀을 유지한다. 게스트 운영 시스템은 게스트 운영 시스템 엔트로피 풀을 액세스하고, 난수(random numbers)를 포함하는 값을 생성하기 위한 기반으로서 게스트 운영 시스템 엔트로피 풀을 이용한다.

Description

가상 머신을 위한 엔트로피 풀{ENTROPY POOLS FOR VIRTUAL MACHINES}
본 발명은 가상 머신을 위한 엔트로피 풀(entropy pools)에 관한 것이다.
난수(random numbers)는 다양한 서로 다른 컴퓨팅 시나리오에서 사용될 수 있다. 통상적인 사용 시나리오 중 하나로는 암호 기술(cryptography)이 있는데, 여기에서 암호화 키(cryptographic key) 및 암호화 프로세스는 난수의 생성에 의존한다. 난수의 생성은 때때로 컴퓨터 내의 하나 이상의 하드웨어 구성요소의 상태에 의존한다.
그러나 이러한 의존성은 가상 머신이 컴퓨터에서 실행될 때 문제를 발생시킬 수 있다. 가상 머신은 컴퓨터 내의 하드웨어 구성요소를 추출하고, 그것을 가상 머신 내에 실행되는 운영 시스템에게 가상 구성요소로서 제시한다. 이러한 가상 구성요소는 그 대응하는 하드웨어 구성요소에 비해서 더 적은 난수화(randomness) 또는 엔트로피를 가질 수 있고, 이것은 생성된 숫자의 엔트로피를 감소할 수 있다.
이 요약은 이하의 상세한 설명에서 추가적으로 설명되는 본 발명의 개념의 선택을 간단한 형태로 도입하고자 제공되었다. 이 요약은 청구 대상의 주요 특징 또는 필수 특징을 식별하도록 의도된 것이 아니고, 청구 대상의 범주를 제한하기 위해 사용하도록 의도된 것도 아니다.
하나 이상의 측면에 따르면, 컴퓨팅 장치 내의 가상 머신 관리자에 의해 관리되는 프로그램의 엔트로피 풀(entropy pool)은 컴퓨팅 장치의 하나 이상의 하드웨어 구성요소 각각에 대해 적어도 부분적으로 기초하여 생성된다. 프로그램은 엔트로피 풀을 액세스하고, 난수를 생성하기 위한 기반으로서 이 엔트로피 풀을 이용한다.
하나 이상의 측면에 따르면, 컴퓨팅 장치의 호스트 운영 시스템에서 엔트로피 데이터는 컴퓨팅 장치의 하나 이상의 하드웨어 구성요소 각각에 대해 적어도 부분적으로 기초하여 수집된다. 엔트로피 풀은 수집된 엔트로피 데이터에 적어도 부분적으로 기초하여 업데이트되고, 컴퓨팅 장치의 가상 머신으로서 실행되는 게스트 운영 시스템에 제공된다.
도면에 걸쳐 동일한 특징부를 지칭하기 위해 동일한 참조 번호를 사용하였다.
본 발명은 암호 기술 등과 같은 분야에서 암호화를 위한 안정적으로 난수를 생성하고 제공하는 기술을 제공한다.
도 1은 하나 이상의 실시예에 따라서 가상 머신을 위한 엔트로피 풀을 구현하는 예시적인 컴퓨팅 장치를 도시하는 블록도.
도 2는 하나 이상의 실시예에 따라서 가상 머신을 위한 엔트로피를 획득하고 제공하는 예시적인 프로세스를 도시하는 흐름도.
도 3은 하나 이상의 실시예에 따라서 가상 머신을 위한 엔트로피 풀을 구현하는 예시적인 게스트 운영 시스템을 도시하는 블록도.
도 4는 하나 이상의 실시예에 따라서 게스트 운영 시스템이 시퀀스 카운터를 이용하는 예시적인 프로세스를 도시하는 흐름도.
도 5는 하나 이상의 실시예에 따라서 가상 머신을 위한 엔트로피 풀을 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치를 도시하는 도면.
본 명세서는 가상 머신을 위한 엔트로피 풀에 관해 설명한다. 컴퓨팅 장치 내의 하드웨어 구성요소에 기초한 엔트로피 풀은 컴퓨팅 장치의 호스트 운영 시스템에 의해 생성 및 업데이트된다. 게스트 운영 시스템을 실행하는 가상 머신은 또한 컴퓨팅 장치에서 실행될 수 있다. 게스트 운영 시스템은 호스트 운영 시스템 엔트로피 풀에 적어도 부분적으로 기초하여 생성된 엔트로피 풀을 구비하고, 여기에서 게스트 운영 시스템은 게스트 운영 시스템이 가상 머신 내에서 실행된다고 해도 하드웨어 구성요소에 적어도 부분적으로 기초하여 엔트로피 풀을 제공받는다.
추가하여, 시퀀스 카운터 값은 게스트 운영 시스템에 의해 유지될 수 있다. 게스트 운영 시스템의 복사 또는 복제가 이루어질 때마다, 게스트 운영 시스템 중 하나의 시퀀스 카운터 값이 증분(incremented)된다. 추가하여, 게스트 운영 시스템의 엔트로피 풀에 기초한 값이 획득될 때마다, 그 값이 획득된 시간에 게스트 운영 시스템의 획득된 값 및 현재의 시퀀스 카운터 값의 기록이 저장된다. 게스트 운영 시스템의 엔트로피 풀에 기초한 값이 사용될 때, 그 값에 대한 저장된 시퀀스 카운터 값은 게스트 운영 시스템의 현재의 시퀀스 카운터 값에 대해 비교되고, 그 값은 2개의 카운터 값이 동일할 경우에만 사용된다.
도 1은 하나 이상의 실시예에 따라서 가상 머신을 위한 엔트로피 풀을 구현하는 예시적인 컴퓨팅 장치(100)를 도시하는 블록도이다. 컴퓨팅 장치(100)는 다양한 서로 다른 종류의 장치일 수 있다. 예를 들면, 컴퓨팅 장치(100)는 데스크탑 컴퓨터, 이동국(mobile station), 넷북(netbook), 오락 기기, 디스플레이 장치에 통신 가능하게 결합된 셋탑 박스(set-top box), 텔레비전, 휴대 전화기 또는 다른 무선 전화기, 게임 콘솔, 자동차용 컴퓨터 등일 수 있다. 따라서 컴퓨팅 장치(100)는 충분한 메모리 및 프로세서 자원을 갖는 최대 자원의 장치(예를 들면, 퍼스널 컴퓨터, 게임 콘솔)로부터 한정된 메모리 및/또는 처리 자원을 갖는 낮은 자원의 장치(예를 들면, 통상적인 셋탑 박스, 휴대형 게임 콘솔)까지의 범위를 가질 수 있다.
컴퓨팅 장치(100)는 호스트 운영 시스템(102) 및 가상 머신 관리자(104)를 포함한다. 호스트 운영 시스템(102)은 하나 이상의 구성요소(108)에 의해 제공되는 기능에 대한 액세스를 관리한다. 구성요소(108)는 다른 구성요소 또는 장치뿐만 아니라 다양한 서로 다른 입/출력(I/O) 구성요소일 수 있다. 예를 들면, 구성요소(108)는 메모리 구성요소, 저장 장치, 통신 구성요소 등에서 하나 이상을 포함할 수 있다. 가상 머신 관리자(104)를 포함하여 컴퓨팅 장치(100)에서 실행되는 다양한 다른 구성요소 또는 모듈은, 이러한 구성요소 또는 모듈이 구성요소(108)를 직접적으로 액세스할 수 없는 경우에도 호스트 운영 시스템(102)에 의해 관리되는 이 기능을 액세스할 수 있다.
호스트 운영 시스템(102)은 또한 엔트로피 풀(110)을 포함한다. 일반적으로 엔트로피 풀은 컴퓨팅 장치(100)에 난수화의 소스를 제공하는 데이터 또는 비트의 집합이다. 엔트로피 풀은 하나 이상의 엔트로피 소스로부터 수집되는 데이터에 기초하여 성생되고, 난수 생성기 및/또는 다른 구성요소에 의해 난수화의 소스로서 도출된다.
하나 이상의 가상 머신(VM) 관리자는 호스트 운영 시스템(102)에서 실행될 수 있다. 가상 머신 관리자는 하나 이상의 추가적인 프로그램이 컴퓨팅 장치(100)에서 실행될 수 있게 한다. 이 프로그램은 운영 시스템일 수 있고, 그 각각은 게스트 운영 시스템으로 지칭되거나, 이와 다르게 다른 프로그램으로 지칭된다. 가상 머신 관리자는 게스트 운영 시스템에 대해 그 게스트 운영 시스템이 실행될 수 있는 가상화된 하드웨어 시스템을 제시한다. 따라서 가상화된 하드웨어 시스템에서 실행되는 게스트 운영 시스템은 또한 가상 머신으로 지칭된다. 게스트 운영 시스템은 때때로 그 하드웨어 자원이 가상화되었다는 정보 없이도 이 가상화된 하드웨어 시스템에서 실행된다. 가상 머신은 I/O 구성요소가 서로 다른 방식(예를 들면, 서로 다른 통신 프로토콜과의 에뮬레이션(emulated), 합성(synthetic), 가상, 패스쓰루(passthrough) 등으로 서로 다른 구성요소가 되게 하는 등)으로 게스트 운영 시스템에 제시되게 하는 것을 포함하는 다양한 사용 시나리오를 지원한다.
도 1에서, 가상 머신 관리자(104)는 가상 머신 제어 모듈(120) 및 하나 이상의 가상화된 구성요소(122)를 포함한다. 가상 머신 제어 모듈(120)은 게스트 운영 시스템(132)과 통신하는 가상화된 하드웨어 시스템을 관리한다. 가상화된 구성요소(122)는 가상 머신 제어 모듈(120)에 의해 하드웨어 구성요소로서 게스트 운영 시스템(132)에 제공된 가상화된 하드웨어 구성요소가다. 가상화된 구성요소(122)는 구성요소(108)와 동일한 종류의 구성요소가거나, 이와 다르게 서로 다른 종류의 구성요소일 수 있다. 게스트 운영 시스템(132)은 게스트 운영 시스템(132)이 컴퓨팅 장치(100)의 물리적 하드웨어와 통신하는 것처럼 제어 모듈(120) 및/또는 가상화된 구성요소(122)와 통신한다. 본 명세서에서는 컴퓨팅 장치(100)가 게스트 운영 시스템(132)을 참조하여 설명되어 있으나, 이와 다르게 운영 시스템 이외의 다른 프로그램이 가상 머신 내에 실행될 수 있다.
게스트 운영 시스템(132)은 난수 생성기(134) 및 엔트로피 풀(136)을 포함한다. 엔트로피 풀(136)은 본 명세서에서 난수 생성기(134)에 의해 사용되는 것으로 설명되어 있으나, 엔트로피 풀(136)은 이와 다르게 게스트 운영 시스템(132)의 다른 구성요소에 의해 사용될 수 있다는 것을 이해할 것이다. 난수 생성기(134)는 진정 난수(true random) 생성기를 한정하거나 근사치를 찾도록 설계된 결정(deterministic) 시스템이다. 따라서 난수 생성기(134)는 또한 유사-난수 생성기로 지칭될 수 있다. 난수 생성기(134)는 하나 이상의 다양한 서로 다른 방식으로 난수를 생성할 수 있다. 하나 이상의 실시예에서, 난수 생성기(134)는 엔트로피 풀(136)로부터 획득된 초기 값(seed value)으로 지칭되는 데이터에 기초하여 난수를 생성한다. 난수 생성기(134)는 SHA(Secure Hash Algorithm) 함수(예를 들면, SHA-512), 표준 대칭 암호화 알고리즘(standard symmetric cryptographic algorithm)(예를 들면, AES(Advanced Encryption Standard) 등 중의 하나 등과 같이 난수를 획득하기 위한 초기 값에 대해 다양한 서로 다른 알고리즘을 적용할 수 있다.
엔트로피 풀(예를 들면, 엔트로피 풀(136) 또는 엔트로피 풀(110))로서 저장된 데이터는 하나 이상의 엔트로피 소스로부터의 값에 기초하여 생성된다. 엔트로피 소스는 소정 량의 난수화를 갖는 데이터 또는 값의 소스이다. 엔트로피 풀을 위한 엔트로피 소스로서 다양한 서로 다른 소스가 사용될 수 있다. 예를 들면, 다양한 시스템 클록(clocks) 또는 타이머, 페이지 폴트(page faults)가 발생하는 횟수, 이용 가능한 여유(free) RAM의 양, 점유된 디스크 드라이브 공간, 여유 디스크 드라이브 공간, 시스템 색인(lookaside) 정보, 시스템 인터럽트 정보 등과 같은 시스템 정보는 각각 엔트로피 소스가 될 수 있다. 수신 또는 송신된 패킷(packets)의 수, 네트워크 패킷 타이밍, 네트워크 패킷이 수신되는 어드레스 등과 같은 네트워크 정보는 각각 엔트로피 소스가 될 수 있다. 마우스 이동의 타이밍 또는 컨텐츠, 키 스트로크, 음성 입력 및 다른 유사한 이벤트는 각각 엔트로피 소스가 될 수 있다.
컴퓨팅 시스템에서의 기존의 하드웨어 소스는 또한 엔트로피 소스로서 작용할 수 있다. 그것에 삽입되어 있는 소스가 있는(또는 없는) 소리 또는 비디오 입력으로부터의 데이터는 엔트로피 소스가 될 수 있다. 디스크 드라이브는 낮은 레벨의 디스크 탐색 시간 수단에 의해 측정될 수 있는 무질서 난류(chaotic air turbulence)에 기인하여 그 회전 속도에 작은 임의적 변동을 가질 수 있고 이는 엔트로피 소스로서 사용될 수 있다. 하드 드라이브 일련 번호 및 BIOS 펌웨어 테이블을 포함하는 고유한(또는 거의 고유한) 하드웨어 ID 및 일련 번호는 엔트로피 소스로서 사용될 수 있다.
장치(100)에 포함되거나 결합되는 하드웨어 난수 생성기는 또한 엔트로피 소스가 될 수 있다. 하드웨어 난수 생성기는 난수화 출력을 생성하는 전용 하드웨어 구성요소를 지칭한다. 예를 들면, 이러한 하드웨어 난수 생성기는 전자 회로, 환경적 음향 노이즈, 반도체 내의 양자 효과(quantum effects), 방사선 붕괴(radioactive decays)의 타이밍 등에 의해 생성된 증폭된 노이즈에 기초할 수 있다.
엔트로피 소스로부터의 데이터는 다양한 서로 다른 방식으로 엔트로피 풀(예를 들면, 엔트로피 풀(110 또는 136))에 통합될 수 있다. 하나 이상의 실시예에서, 엔트로피 소스로부터의 데이터가 엔트로피 풀로 통합되는 해시 값(hash value)을 생성하도록 해싱(hashed)되거나, 이와 다르게 엔트로피 소스로부터의 데이터 그 자체가 엔트로피 풀에 통합될 수 있다. 데이터를 엔트로피 풀에 통합하는 것은 예를 들면, 엔트로피 풀에 데이터를 연접(concatenating)하는 것, 데이터의 적어도 일부분을 엔트로피 풀의 하나 이상의 위치에 삽입하는 것 등에 의해 실행될 수 있다.
호스트 운영 시스템(102)은 하나 이상의 엔트로피 소스로부터 데이터를 획득하고, 획득된 데이터를 엔트로피 풀(110)에 통합한다. 호스트 운영 시스템(102)은 구성요소(108)에 기초하여 데이터를 획득한다. 따라서 엔트로피 풀(110)은 하드웨어 엔트로피 소스에 기초한다.
엔트로피 풀(136)은 가상 머신 내에서 실행되는 게스트 운영 시스템(132) 내에 포함된다. 가상 머신 제어 모듈(120)은 엔트로피 풀(110)을 액세스하고, 엔트로피 풀(110)로부터의 데이터의 적어도 부분이 엔트로피 풀(136)에 의해 이용될 수 있게 한다. 엔트로피 풀(110)로부터의 데이터는 이하에 보다 상세하게 설명되는 바와 같이 다양한 서로 다른 방식으로 엔트로피 풀(136)에 이용 가능하게 될 수 있다. 그러므로 엔트로피 풀(136)이 가상 머신 내의 게스트 운영 시스템의 일부분일지라도, 엔트로피 풀(136)은 여전히 하드웨어 엔트로피 소스에 기초한다.
하나 이상의 실시예에서, 호스트 운영 시스템(102)은 엔트로피 풀(110)로부터의 데이터를 가상화된 구성요소(122)를 통해 게스트 운영 시스템(132)으로 제공한다. 게스트 운영 시스템(132)이 부팅(booted)되거나 실행을 시작할 때, 호스트 운영 시스템(102)은 엔트로피 풀(110)로부터 데이터를 획득한다. 엔트로피 풀(110)로부터 획득된 이 데이터는 가상화된 구성요소(122)의 메모리 공간 내에 데이터를 매핑하는 것 등에 의해서 가상화된 구성요소(122) 내에 저장된다. 가상화된 구성요소(122)는 게스트 운영 시스템(132)에 의해 액세스되고, 엔트로피 풀(136)로서 사용(또는 그것에 추가)된다. 따라서 게스트 운영 시스템(132)은 하드웨어 엔트로피 소스에 기초하는 엔트로피 풀(136)을 갖는다.
엔트로피 풀(110)로부터 호스트 운영 시스템(102)에 의해 제공되는 데이터의 양은 변동될 수 있다. 예를 들면, 엔트로피 풀(110)로부터 호스트 운영 시스템(102)에 의해 제공되는 데이터의 양은 엔트로피 풀(110)의 사전 결정된 개수의 비트, 사전 결정된 분율 또는 양, 엔트로피 풀(110) 내의 모든 데이터 등일 수 있다.
하나 이상의 실시예에 있어서, 엔트로피 풀(110)로부터의 데이터가 저장되어 있는 가상화된 구성요소(122)는 게스트 운영 시스템(132)에 의해 액세스되는 BIOS(basic input/output system) 테이블이다. 호스트 운영 시스템(102)은 엔트로피 풀(110)로부터의 데이터를 가상 머신 관리자(104)의 특정한 메모리 공간으로 매핑하고, 이 메모리 공간은 게스트 운영 시스템(132)이 사용하는 BIOS 테이블이 저장되는 메모리 공간이다. 따라서 BIOS 테이블 내에 전형적으로 포함되는 데이터에 추가하여, 엔트로피 풀(110)로부터의 엔트로피 데이터는 또한 BIOS 테이블 내에 포함된다. 그러나 BIOS 테이블의 사용은 예시에 불과하고, 엔트로피 풀(110)로부터의 데이터는 다양한 서로 다른 가상화된 구성요소 내에 저장될 수 있다는 것을 이해할 것이다.
엔트로피 풀(110)로부터의 데이터가 저장되는 가상화된 구성요소(122)의 메모리 공간은 전형적으로 적절한 기능을 위해서 가상화된 구성요소(122) 또는 게스트 운영 시스템(132)에 의해 달리 사용되거나 필요하지 않은 가상화된 구성요소(122)의 일부분이다. 예를 들면, 게스트 운영 시스템(132)이 적절히 기능하게 하는 것과 무관한 BIOS 테이블의 부분은 엔트로피 풀(110)로부터의 데이터가 저장되는 BIOS 테이블의 부분으로 사용될 수 있다.
호스트 운영 시스템(102)은 구성요소(108)에 기초하여 엔트로피 데이터를 계속 수집하고, 엔트로피 풀(110)에 엔트로피 데이터를 추가한다. 호스트 운영 시스템(102)에 의한 엔트로피 데이터의 이러한 수집은 게스트 운영 시스템(132)에 의한 엔트로피 데이터의 수집 및/또는 사용과는 독립적으로 지속된다.
엔트로피 풀(110)로부터 게스트 운영 시스템(132)으로 데이터를 제공하는 것에 추가하여 또는 그것을 대체하여, 게스트 운영 시스템(132)이 부팅될 때, 게스트 운영 시스템(132)이 실행되는 동안에 엔트로피 풀(110)로부터의 데이터는 게스트 운영 시스템(132)에 제공될 수 있다. 이러한 상황에서, 가상 머신 제어 모듈(120)은 게스트 운영 시스템(132)과 호스트 운영 시스템(102) 사이에 통신 인터페이스를 지원하여 엔트로피 풀(110)로부터의 데이터가 엔트로피 풀(136)에 제공될 수 있게 한다. 이것은 게스트 운영 시스템(132)이 부팅된 후에 하드웨어 엔트로피 소스에 기초하여 엔트로피 풀(136) 내의 데이터가 업데이트될 수 있게 한다.
하나 이상의 실시예에 있어서, 게스트 운영 시스템(132)은 필요한 경우에 추가적인 엔트로피를 요청한다. 게스트 운영 시스템(132)은 규칙적 또는 불규칙적인 간격으로, 엔트로피 풀(136) 내의 이용 가능 데이터가 임계량 이하로 내려간다는 결정에 응답하는 것 등과 같은 다양한 서로 다른 방식으로 언제 추가적인 엔트로피가 요구되는지를 결정할 수 있다. 추가적인 엔트로피가 요구될 때, 게스트 운영 시스템(132)은 (가상 머신 관리자(104)를 통해) 호스트 운영 시스템(102)으로 추가적인 엔트로피의 요청을 전송한다. 이러한 요청에 응답하여, 호스트 운영 시스템(102)은 엔트로피 풀(110)로부터 추가적인 데이터를 리턴(returns)한다. 엔트로피 풀(110)로부터 리턴되는 데이터의 양은 변동될 수 있다. 예를 들면, 엔트로피 풀(110)로부터 리턴되는 데이터의 양은 사전 결정된 개수의 비트, 게스트 운영 시스템(132)에 의해 요청되는 개수의 비트, 엔트로피 풀(110) 내의 모든 데이터 등일 수 있다.
다른 실시예에 있어서, 호스트 운영 시스템(102)은 규칙적 또는 불규칙적인 간격으로 (가상 머신 관리자(104)를 통해) 게스트 운영 시스템(132)에 엔트로피 데이터를 전송한다. 호스트 운영 시스템(102)이 엔트로피를 전송하는 타이밍은 사전 결정된 스케줄(예를 들면, 10분마다)로 엔트로피 풀(110)이 임계량의 데이터를 포함하는 것 등에 응답하여 이루어지는 것과 같이 변동될 수 있다. 게스트 운영 시스템(132)에 전송되는 데이터는 엔트로피 풀(136) 내에 저장되고, 이는 게스트 운영 시스템(132)이 추가적인 엔트로피의 요청을 호스트 운영 시스템(102)으로 전송하지 않고 필요할 때 난수 생성기(134)가 데이터를 이용할 수 있게 한다.
엔트로피 풀(136) 내의 데이터는 엔트로피 풀(110)로부터 전체적으로 획득되거나, 이와 다르게 다른 엔트로피 소스로부터 또한 획득될 수 있다. 예를 들면, 하나 이상의 가상화된 구성요소(122)는 게스트 운영 시스템(132)에 의해 엔트로피 소스로서 사용될 수 있고, 이러한 엔트로피 소스로부터 획득된 데이터는 엔트로피 풀(136) 내에 통합된다.
도 2는 하나 이상의 실시예에 따라서 가상 머신을 위한 엔트로피를 획득 및 제공하는 예시적인 프로세스(200)를 도시하는 흐름도이다. 프로세스(200)는 소프트웨어, 펌웨어, 하드웨어 또는 그 조합으로 구현될 수 있다. 도 2의 좌측에 도시된 프로세스(200)의 단계는 도 1의 호스트 운영 시스템(102) 등과 같은 컴퓨팅 장치의 호스트 운영 시스템에 의해 실행된다. 도 2의 우측에 도시된 프로세스(200)의 단계는 도 1의 게스트 운영 시스템(132) 등과 같은 컴퓨팅 장치의 가상 머신에 의해 실행된다. 프로세스(200)는 단계의 집합으로 도시되어 있고, 여러 단계의 동작을 실행하기 위하여 도시된 순서로 한정되지 않는다. 프로세스(200)는 가상 머신을 위한 엔트로피를 획득 및 제공하는 예시적인 프로세스이고, 가상 머신을 위한 엔트로피를 획득 및 제공하는 것에 대한 추가적인 설명은 서로 다른 도면을 참조하여 본 명세서에 포함되어 있다.
프로세스(200)에서, 호스트 운영 시스템은 하드웨어 구성요소에 기초하여 엔트로피 데이터를 수집한다(단계(202)). 이 엔트로피 데이터는 상술된 바와 같은 다양한 서로 다른 엔트로피 소스로부터 수집될 수 있다.
호스트 운영 시스템의 엔트로피 풀은 수집된 엔트로피 데이터에 기초하여 업데이트된다(단계(204)). 수집된 엔트로피 데이터는 상술된 다양한 서로 다른 방식으로 호스트 운영 시스템의 엔트로피 풀 내에 통합될 수 있다.
단계(202, 204)는 여러 번 반복될 수 있고, 여기에서 호스트 운영 시스템은 지속적으로 새로운 엔트로피 데이터를 수집하고, 그 새로운 엔트로피 데이터에 기초하여 호스트 운영 시스템의 엔트로피 풀을 업데이트한다. 단계(202, 204)에서의 이러한 수집 및 업데이트는 게스트 운영 시스템이 게스트 운영 시스템의 엔트로피 풀을 액세스 또는 사용하는지 여부에 무관하게 지속될 수 있다.
호스트 운영 시스템은 호스트 운영 시스템의 엔트로피 풀로부터의 데이터를 게스트 운영 시스템으로 제공한다(단계(206)). 엔트로피 풀로부터의 데이터는 운영 시스템이 부팅될 때 및/또는 상술된 바와 같이 게스트 운영 시스템이 실행 중인 다른 시점에서 게스트 운영 시스템에 제공될 수 있다.
게스트 운영 시스템은 호스트 운영 시스템의 엔트로피 풀에 적어도 부분적으로 기초하여 게스트 운영 시스템의 엔트로피 풀을 생성한다(단계(208)). 단계(206)에서 호스트 운영 시스템에 의해 제공되는 호스트 운영 시스템의 엔트로피 풀로부터의 데이터는 게스트 운영 시스템의 엔트로피 풀로서 사용되거나 그것에 추가될 수 있다.
게스트 운영 시스템은 게스트 운영 시스템의 엔트로피 풀에 액세스하고(단계(210)), 이것은 단계(204)에서 호스트 운영 시스템에 의해 업데이트되는 엔트로피 풀에 적어도 부분적으로 기초한다. 엔트로피 풀은 또한 선택적으로 다른 엔트로피 소스로부터 게스트 운영 시스템에 의해 획득되는 데이터를 포함할 수 있다.
게스트 운영 시스템은 난수 생성의 기초로서 게스트 운영 시스템의 엔트로피 풀을 이용한다(단계(212)). 게스트 운영 시스템은 또한 다른 동작을 위해 게스트 운영 시스템의 엔트로피 풀을 이용 및/또는 난수 생성 이외에 엔트로피가 요구되는 경우에 값을 획득할 수 있다.
단계(206) 및 단계(208)는 게스트 운영 시스템이 실행되는 동안에 여러 번 반복되어, 게스트 운영 시스템의 엔트로피 풀이 새로운 엔트로피 데이터로 반복적으로 업데이트되게 할 수 있다는 것을 주지하라.
도 1로 되돌아가면, 가상 머신이 복제될 수 있는 상황이 발생할 수 있다. 가상 머신의 복제는 가상 머신의 현재 상태(예를 들면, 게스트 운영 시스템의 여러 설정)를 기술하는 데이터뿐만 아니라 가상 머신에서 실행되는 임의의 애플리케이션을 포함하는 가상 머신의 복사를 지칭한다. 이 복사는 가상 머신의 2개의 동일한 복사본이 생성되게 한다. 복제는 가상 머신이 유휴 상태(dormant)(실행되지 않는 상태)일 때 또는 가상 머신이 실행될 때 등과 같이 다양한 시기에 실행될 수 있다. 복제는 또한 스냅샷(snapshot)으로 지칭되는 가상 머신의 복사본을 저장하는 데 이용되어, 컴퓨팅 장치(100)가 이와 같이 저장된 설정으로 복귀될 수 있게 한다. 복제는 사용자 및/또는 컴퓨팅 장치(100) 내의 다른 구성요소 또는 모듈로부터의 요청에 응답하여 실행될 수 있다.
그러나 가상 머신의 복제를 허용하는 것은 엔트로피 풀(136)에 문제를 발생시킬 수 있다. 복제 후에 2개의 가상 머신이 동일한 엔트로피 풀을 갖게 되어, 난수 생성기(134)에 의해 생성된 수를 재사용하는 것에 의하여 난수화의 감소 또는 난수의 예측 가능성을 제공할 수 있게 되는 상황이 발생할 수 있다. 하나 이상의 실시예에 있어서, 시퀀스 카운터는 이하에 보다 상세하게 설명되는 바와 같이 서로 다른 가상 머신을 구별하는 데 이용된다.
도 3은 하나 이상의 실시예에 따라서 가상 머신을 위한 엔트로피 풀을 구현하는 예시적인 게스트 운영 시스템(300)을 도시하는 블록도이다. 게스트 운영 시스템(300)은 예를 들면, 도 1의 게스트 운영 시스템(132)일 수 있다. 게스트 운영 시스템(300)은 도 1의 게스트 운영 시스템(132)과 유사하게 가상화된 하드웨어 시스템 내의 가상 머신으로서 실행된다.
게스트 운영 시스템(300)은 난수 생성기(302), 엔트로피 풀(304), 시퀀스 카운터(306), 시퀀스 관리자 모듈(308) 및 값 태깅(value tagging) 모듈(310)을 포함한다. 난수 생성기(302)는 도 1의 난수 생성기(134) 및 엔트로피 풀(136)과 유사하게 엔트로피 풀(304)에 기초하여 난수를 생성한다.
시퀀스 카운터(306)는 게스트 운영 시스템(300)과 동일한 조직 트리(family tree)의 브랜치(branch) 내의 복제로부터 생성(예를 들면, 이들은 게스트 운영 시스템(300)의 차일드(children) 또는 다른 하위 단위(descendants), 또는 게스트 운영 시스템(300)의 페어런트(parents) 또는 다른 상위 단위(ancestors)임)된 다른 게스트 운영 시스템으로부터 게스트 운영 시스템(300)을 구별하는 카운터 값이다. 하나 이상의 실시예에 있어서, 시퀀스 카운터(306)는 숫자 값을 갖지만, 공지된 순서를 갖는 다른 목록 내의 값들도 사용 가능하다.
게스트 운영 시스템이 복제될 때, 다른 게스트 운영 시스템의 시퀀스 카운터(306)가 변경되지 않고 유지되는 동안에 게스트 운영 시스템 중 하나의 시퀀스 카운터(306)는 증분(incremented)된다. 복제 이후에 운영 시스템의 복사본 중 하나가 계속 실행된다면 그 운영 시스템은 그 값을 유지하는 시퀀스 카운터를 갖는 운영 시스템이지만, 그렇지 않다면 운영 시스템 복사본 중 어느 것은 그 시퀀스 카운터가 증분될 수 있다. 예를 들면, 실행 중인 게스트 운영 시스템의 스냅샷이 선택되었다면, 저장된 스냅샷의 복사본이 그 시퀀스 카운터 값을 (예를 들면, 1만큼) 증분하는 반면 실행 중인 게스트 운영 시스템은 그 시퀀스 카운터 값을 유지한다. 다른 예시로서, 유휴 상태인 게스트 운영 시스템의 복제가 이루어졌다면 게스트 운영 시스템의 2개의 복사본 중 하나는 그 시퀀스 카운터를 (예를 들면, 1만큼) 증분하는 반면 다른 하나는 그 시퀀스 카운터 값을 유지한다.
게스트 운영 시스템 중 하나의 시퀀스 카운터(306)는 다양한 서로 다른 방식으로 증분될 수 있다. 하나 이상의 실시예에 있어서, 호스트 운영 시스템 또는 게스트 운영 시스템의 복제를 관리하는 다른 구성요소는 게스트 운영 시스템 중 하나의 시퀀스 카운터(306)를 증분한다. 다른 실시예에서, 게스트 운영 시스템 중 하나는 그 자신의 시퀀스 카운터(306)를 증분한다. 예를 들면, 호스트 운영 시스템 또는 게스트 운영 시스템의 복제를 관리하는 다른 구성요소는 게스트 운영 시스템이 복제되었다는 것에 대한 플래그(flag) 또는 다른 표시자를 설정할 수 있다. 이 플래그 또는 다른 표시자는 다음에 부팅될 때 게스트 운영 시스템의 복사본에 의해 검출됨으로써, 게스트 운영 시스템이 그 시퀀스 카운터(306)를 업데이트할 수 있게 한다.
시퀀스 관리자 모듈(308) 및 값 태깅 모듈(310)은 시퀀스 카운터(306)를 이용하여 엔트로피 풀(304)에 기초하여 생성된 값의 난수화가 복제에 기인하여 절충되지 않도록 보장한다. 값 태깅 모듈(310)은 엔트로피 풀(304)에 기초한 값이 생성될 때마다 시퀀스 카운터(306)의 현재의 값을 획득한다. 이러한 생성된 값의 예시는 난수 생성기(302)에 의해 생성된 난수, 난수에 기초하여 생성된 암호화 키 등을 포함한다. 엔트로피 풀(304)에 기초한 값이 생성될 때마다, 모듈(310)은 그 생성된 값과 함께 시퀀스 카운터(306)의 현재의 값을 저장한다. 따라서 각각의 생성된 값과 함께 유효한 시퀀스 카운터 값의 연관 표시가 저장된다.
엔트로피 풀(304)에 기초하여 생성된 값이 사용될 때, 시퀀스 관리자 모듈(308)은 해당 생성된 값의 저장된 시퀀스 카운터 값을 검색한다. 저장된 시퀀스 카운터 값은 시퀀스 카운터(306)의 현재의 값에 대해 비교된다. 저장된 시퀀스 카운터 값이 시퀀스 카운터(306)의 현재의 값과 동일하다면, 엔트로피 풀(304)에 기초하여 생성된 값이 사용될 수 있다. 그러나 저장된 시퀀스 카운터 값이 시퀀스 카운터(306)의 현재의 값과 동일하지 않으면(예를 들어, 더 작으면), 엔트로피 풀(304)에 기초하여 생성된 값은 사용되지 않는다.
엔트로피 풀(304)에 기초하여 생성된 값이 사용되지 않으면, 새로운 값이 게스트 운영 시스템(300)에 의해 생성된다. 추가하여, (예를 들면, 상술된 바와 같이 호스트 운영 시스템의 엔트로피 풀에 기초하여) 엔트로피 풀(304)은 소거(cleared)되고 재생성된다. 엔트로피 풀(304)은 선택적으로 게스트 운영 시스템(300)에서 특정한 시퀀스 카운터 값에 대해서 오로지 한 번만 소거되고 재생성될 수 있다는 것을 주지하라. 예를 들면, 엔트로피 풀(304)에 기초하여 생성된 제 1 값의 사용이 시도되었으나 저장된 시퀀스 카운터 값이 시퀀스 카운터(306)의 현재의 값보다 적어서 사용되지 않았다면, 엔트로피 풀(304)은 소거되고 재생성된다. 엔트로피 풀(304)에 기초하여 생성된 제 2 값의 사용이 시도되었으나 저장된 시퀀스 카운터 값이 시퀀스 카운터(306)의 현재의 값보다 적어서 사용되지 않았다면, 제 2 값의 사용이 시도될 때의 시퀀스 카운터(306)의 현재의 값이 제 1 값의 사용이 시도될 때의 시퀀스 카운터(306)의 현재의 값과 동일할 경우 이는 엔트로피 풀(304)이 이미 소거되고 재생성되었다는 것이기 때문에 엔트로피 풀(304)은 소거되거나 재생성될 필요가 없다.
예를 들어, 암호 키(encryption key)로서 사용되어 보안 통신 채널을 제공하기 위하여 게스트 운영 시스템에 의해 난수가 생성되었다고 가정한다. 또한 암호 키가 생성된 시점에서 게스트 운영 시스템이 현재의 시퀀스 카운터 값으로서 3을 갖고 있다고 가정한다. 암호 키가 생성될 때, 값 태깅 모듈(310)은 암호 키를 위한 시퀀스 카운터 값의 기록을 3으로 저장한다.
계속하여 이 예시에 있어서, 게스트 운영 시스템의 복사본을 저장하기 위해서 스냅샷이 선택되었다고 가정한다. 실행 중인 게스트 운영 시스템은 시퀀스 카운터 값을 3으로 유지하지만, 게스트 운영 시스템의 스냅샷 복사본은 그 시퀀스 카운터 값이 4로 증분된다. 실행 중인 게스트 운영 시스템이 보안 통신 채널을 제공하기 위해서 암호 키를 계속 사용하도록 시도했다면, 실행 중인 게스트 운영 시스템의 시퀀스 카운터 값(그 값은 3임)은 암호 키에 대해 기록된 시퀀스 카운터 값과 동일하므로, 그 암호 키는 실행 중인 게스트 운영 시스템에 의해 사용될 수 있다. 그러나 게스트 운영 시스템의 스냅샷 복사본이 보안 통신 채널을 제공하기 위해서 그 암호 키를 실행 및 이용하도록 시도하였다면, 암호 키에 대해 기록된 시퀀스 카운터 값(그 값은 3임)은 실행 중인 게스트 운영 시스템의 스냅샷 복사본의 시퀀스 카운터 값(그 값은 4임)보다 적게 되므로, 그 암호 키는 사용되지 않을 것이다.
그러나 엔트로피 풀(304)에 기초하여 생성된 값이 암호화 및 복호화를 위해 사용된 키(key)일 때, 암호 키에 대해 기록된 시퀀스 카운터 값이 실행 중인 게스트 운영 시스템의 스냅샷 복사본의 시퀀스 카운터 값보다 적은 경우에도 생성된 값의 기록은 유지된다는 것을 주지하여야 한다. 생성된 값의 기록을 유지함으로써, 생성된 값은 또한 생성된 값에 기초하여 암호화되었던 데이터를 복호화하는 데 사용될 수 있다.
도 4는 하나 이상의 실시예에 따라서 시퀀스 카운터를 이용하는 게스트 운영 시스템을 위한 예시적인 프로세스(400)를 도시하는 흐름도이다. 프로세스(400)는 도 3의 게스트 운영 시스템(300) 등과 같은 게스트 운영 시스템에 의해 실행되고, 소프트웨어, 펌웨어, 하드웨어 또는 그 조합으로 구현될 수 있다. 프로세스(400)는 단계의 집합으로 도시되어 있고, 여러 단계의 동작을 실행하기 위해 도시된 순서로 한정되지 않는다. 프로세스(400)는 시퀀스 카운터를 이용하는 게스트 운영 시스템을 위한 예시적인 프로세스이고, 시퀀스 카운터를 이용하는 게스트 운영 시스템에 대한 추가적인 설명은 서로 다른 도면들을 참조하여 본 명세서에 포함되어 있다.
프로세스(400)에서, 엔트로피 풀에 기초한 값이 생성된다(단계(402)). 이하에서 설명되는 바와 같이 난수, 암호화 키 등과 같은 다양한 서로 다른 값이 단계(402)에서 생성될 수 있다.
프로세스(400)를 구현하는 게스트 운영 시스템의 현재의 시퀀스 카운터 값이 획득되고(단계(404)), 생성된 값 및 현재의 시퀀스 카운터 값의 기록이 저장된다(단계(406)).
생성된 값에 대한 사용 요청이 후속적으로 수신된다(단계(408)). 이 요청은 프로세스(400)를 구현하는 게스트 운영 시스템의 구성요소 또는 모듈로부터, 다른 구성요소 또는 모듈로부터, 사용자 등으로부터 수신될 수 있다. 이 요청에 응답하여, 생성된 값과 함께 저장된 시퀀스 카운터 값이 획득된다(단계(410)). 프로세스(400)를 구현하는 게스트 운영 시스템의 현재의 시퀀스 카운터 값이 또한 획득된다(단계(412)).
다음에 게스트 운영 시스템은 단계(412)에서 획득된 현재의 시퀀스 카운터 값이 단계(410)에서 획득된 저장된 시퀀스 카운터 값과 동일한지 여부를 검사한다(단계(414)). 2개의 값이 동일하다면, 생성된 값이 사용될 수 있다(단계(416)).
그러나 2개의 값이 동일하지 않다면, 게스트 운영 시스템의 엔트로피 풀은 소거되고 재생성된다(단계(418)). 요청된 값이 재생성되고(단계(420)), 재생성된 값이 사용될 수 있다(단계(422)).
도 5는 하나 이상의 실시예에 따라서 가상 머신을 위한 엔트로피 풀을 구현하도록 구성될 수 있는 예시적인 컴퓨팅 장치(500)를 도시한다. 컴퓨팅 장치(500)는 예를 들면, 도 1의 컴퓨팅 장치(100)일 수 있다.
컴퓨팅 장치(500)는 하나 이상의 프로세서 또는 처리 장치(502)와, 하나 이상의 메모리 및/또는 저장 구성요소(506)를 포함할 수 있는 하나 이상의 컴퓨터 판독 가능 매체(504)와, 하나 이상의 입/출력(I/O) 장치(508)와, 여러 구성요소 및 장치가 서로 통신할 수 있게 하는 버스(510)를 포함한다. 컴퓨터 판독 가능 매체(504) 및/또는 하나 이상의 I/O 장치(508)는 컴퓨팅 장치(500)의 일부분으로 포함되거나 이와 다르게 컴퓨팅 장치(500)에 결합될 수 있다. 버스(510)는 다양한 서로 다른 버스 아키텍처를 이용하여 메모리 버스 또는 메모리 제어기, 주변 버스, 가속화 그래픽 포트(accelerated graphics port), 프로세서 또는 지역 버스 등을 포함하는 여러 종류의 버스 구조 중 하나 이상을 나타낸다. 버스(510)는 유선 및/또는 무선 버스를 포함할 수 있다.
메모리/저장 구성요소(506)는 하나 이상의 컴퓨터 저장 매체를 나타낸다. 구성요소(506)는 휘발성 매체(RAM(random access memory) 등) 및/또는 비휘발성 매체(ROM(read only memory), 플래시 메모리, 광학 디스크, 자기 디스크 등)를 포함할 수 있다. 구성요소(506)는 탈착 가능 매체(예를 들면, 플래시 메모리 드라이브, 탈착 가능 하드 드라이브, 광학 디스크 등)뿐만 아니라 고정형 매체(예를 들면, RAM, ROM, 고정형 하드 드라이브 등)를 포함할 수 있다.
본 명세서에 설명된 기법은 하나 이상의 처리 장치(502)에 의해 실행되는 명령어를 갖는 소프트웨어로 구현될 수 있다. 서로 다른 명령어는 처리 장치(502), 처리 장치(502)의 여러 캐시 메모리, 장치(500)의 다른 캐시 메모리(도시하지 않음), 다른 컴퓨터 판독 가능 매체 등과 같은 컴퓨팅 장치(500)의 서로 다른 구성요소에 저장될 수 있다. 추가하여, 명령어가 컴퓨팅 장치(500) 내에 저장되는 위치는 시간에 따라 변경될 수 있다는 것을 이해할 것이다.
하나 이상의 입/출력 장치(508)는 사용자가 컴퓨팅 장치(500)에 커맨드 및 정보를 입력할 수 있게 하고, 또한 정보가 사용자 및/또는 다른 구성요소 또는 장치에 표시될 수 있게 한다. 입력 장치의 예시는 키보드, 커서 제어 장치(예를 들면, 마우스), 마이크로폰, 스캐너 등을 포함한다. 출력 장치의 예시는 디스플레이 장치(예를 들면, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등을 포함한다.
본 명세서에서 소프트웨어 또는 프로그램 모듈의 일반 문맥으로 여러 기술이 설명될 수 있다. 일반적으로 소프트웨어는 특정한 작업을 실행하거나 특정한 추상적 데이터 종류를 구현하는 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 이러한 모듈 및 기술의 구현은 몇몇 형태의 컴퓨터 판독 가능 매체에 저장되거나 그 매체 사이에 전송될 수 있다. 컴퓨터 판독 가능 매체는 임의의 이용 가능 매체 또는 컴퓨팅 장치에 의해 액세스 가능한 매체일 수 있다. 제한 사항이 아닌 예시로서, 컴퓨터 판독 가능 매체는 "컴퓨터 저장 매체" 및 "통신 매체"를 포함할 수 있다.
"컴퓨터 저장 매체"는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터 등과 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 탈착 가능 및 탈착 불가능 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 다른 광학 저장부, 자기 카세트, 자기 테이프, 자기 디스크 저장부 또는 다른 자기 저장 장치 또는 원하는 정보를 저장하는 데 이용될 수 있고, 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만 이것으로 한정되지 않는다.
"통신 매체"는 전형적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 반송파(carrier wave) 또는 다른 전송 메커니즘 등과 같은 변조된 데이터 신호 내의 다른 데이터를 구현한다. 통신 매체는 또한 임의의 정보 전달 매체를 포함한다. "변조 데이터 신호"라는 용어는 그 특성 집합 중 하나 이상을 갖고 있거나 그 신호 내에 정보를 암호화하는 방식으로 변경되는 신호를 의미한다. 제한 사항이 아닌 예시로서, 통신 매체는 유선 네트워크 또는 직접 유선(direct-wired) 접속 등과 같은 유선 매체 및 음향, RF, 적외선 및 다른 무선 매체 등과 같은 무선 매체를 포함한다. 상술된 것 중 그 임의의 조합은 또한 컴퓨터 판독 가능 매체의 범주 내에 포함된다.
일반적으로, 본 명세서에 설명된 기능 또는 기술 중 어떤 것도 소프트웨어, 펌웨어, 하드웨어(예를 들면, 고정 로직 회로), 수동 처리 장치 또는 이 구현의 조합을 이용하여 구현될 수 있다. 본 명세서에 사용된 "모듈" 및 "구성요소"이라는 용어는 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 그 조합을 나타낸다. 소프트웨어 구현의 경우에, 모듈 또는 구성요소는 프로세서(예를 들면, CPU 또는 CPU들)에서 실행될 때 특정한 작업을 실행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독 가능 메모리 장치 내에 저장될 수 있고, 그에 관한 추가적인 설명은 도 5를 참조하여 확인할 수 있다. 본 명세서에 설명된 가상 머신 기술을 위한 엔트로피 풀의 특징은 플랫폼 독립형으로서, 이는 이 기술이 다양한 프로세서를 갖는 다양한 상업적 컴퓨팅 플랫폼에서 구현될 수 있다는 것을 나타낸다.
본 청구 대상은 구조적 특징 및/또는 방법적 단계를 특정하는 언어로 설명되어 있으나, 첨부된 청구항에 정의된 청구 대상은 상술된 특정 특징부 또는 단계로 반드시 한정되지는 않는다는 것을 이해할 것이다. 오히려 상술된 특정 특징부 및 동작은 청구항을 구현하는 예시적인 형태로서 개시되어 있다.

Claims (15)

  1. 컴퓨팅 장치로서,
    프로세서와, 컴퓨터 판독 가능 매체를 포함하고,
    상기 컴퓨터 판독 가능 매체는 상기 프로세서에 의해 실행될 때 상기 프로세서가 동작을 실행하게 하고 가상 머신 관리자에 의해 관리되는 프로그램을 위한 명령어를 저장하고,
    상기 동작은
    상기 프로그램의 엔트로피 풀(entropy pool)-상기 엔트로피 풀은 상기 프로그램이 실행 중인 동안에 상기 컴퓨팅 장치의 하나 이상의 하드웨어 구성요소 각각에 대해 적어도 부분적으로 기초하여 생성됨-을 액세스하는 동작과,
    난수(random number)를 생성하기 위한 기초로서 상기 엔트로피 풀을 이용하는 동작을 포함하는
    컴퓨팅 장치.
  2. 제 1 항에 있어서,
    상기 엔트로피 풀은 상기 컴퓨팅 장치에 있는 호스트 운영 시스템으로부터 획득되는
    컴퓨팅 장치.
  3. 제 2 항에 있어서,
    상기 엔트로피 풀의 적어도 일부분은 상기 호스트 운영 시스템에 의해 상기 가상 머신 관리자의 메모리 공간으로 매핑되는
    컴퓨팅 장치.
  4. 제 2 항에 있어서,
    상기 엔트로피 풀은 상기 프로그램의 기본 입/출력 시스템(BIOS) 테이블을 통해 상기 호스트 운영 시스템으로부터 획득되는
    컴퓨팅 장치.
  5. 제 2 항에 있어서,
    상기 명령어는 또한 상기 프로세서가
    상기 호스트 운영 시스템으로부터 추가적인 엔트로피를 요청하는 동작과,
    상기 호스트 운영 시스템으로부터 추가적인 엔트로피 데이터를 수신하는 동작과,
    상기 추가적인 엔트로피 데이터를 상기 프로그램의 상기 엔트로피 풀에 통합하는 동작을 실행하게 하는
    컴퓨팅 장치.
  6. 제 2 항에 있어서,
    상기 명령어는 또한 상기 프로세서가
    특정한 간격으로 상기 호스트 운영 시스템으로부터 추가적인 엔트로피를 수신하는 동작과,
    상기 추가적인 엔트로피 데이터를 상기 프로그램의 상기 엔트로피 풀에 통합하는 동작을 실행하게 하는
    컴퓨팅 장치.
  7. 제 1 항에 있어서,
    상기 프로그램은 게스트 운영 시스템을 포함하는
    컴퓨팅 장치.
  8. 제 1 항에 있어서,
    상기 명령어는 또한 상기 프로세서가
    상기 프로그램을 위한 제 1 시퀀스 카운터 값을 획득하는 동작과,
    상기 프로그램을 위한 상기 난수 및 상기 제 1 시퀀스 카운터 값을 저장하는 동작을 실행하게 하는
    컴퓨팅 장치.
  9. 제 8 항에 있어서,
    상기 명령어는 또한 상기 프로세서가
    상기 난수를 이용하려는 요청을 수신하는 동작과,
    상기 저장된 제 1 시퀀스 카운터 값을 획득하는 동작과,
    상기 요청이 수신될 때 상기 프로그램을 위한 제 2 시퀀스 카운터 값을 획득하는 동작과,
    상기 제 1 시퀀스 카운터 값에 대해 상기 제 2 시퀀스 카운터 값을 비교하는 동작과,
    상기 제 1 시퀀스 카운터 값과 상기 제 2 시퀀스 카운터 값이 동일하다면 상기 난수를 사용하는 동작과,
    상기 제 1 시퀀스 카운터 값과 상기 제 2 시퀀스 카운터 값이 동일하지 않다면, 상기 프로그램의 상기 엔트로피 풀을 재생성하는 동작과, 상기 재생성된 엔트로피 풀에 기초하여 새로운 난수를 생성하는 동작과, 상기 새로운 난수를 이용하는 동작을 실행하게 하는
    컴퓨팅 장치.
  10. 컴퓨팅 장치 내의 실행 방법으로서,
    게스트 운영 시스템이 실행 중인 동안에 상기 컴퓨팅 장치의 하나 이상의 하드웨어 구성요소 각각에 적어도 부분적으로 기초하여 엔트로피 데이터를 수집하는 단계와,
    상기 수집된 엔트로피 데이터에 적어도 부분적으로 기초하여 엔트로피 풀을 업데이트하는 단계와,
    상기 엔트로피 풀로부터 상기 컴퓨팅 장치의 가상 머신으로서 실행되는 상기 게스트 운영 시스템으로 데이터를 제공하는 단계를 포함하는
    컴퓨팅 장치 내의 실행 방법.
  11. 제 10 항에 있어서,
    상기 게스트 운영 시스템으로부터의 추가적인 엔트로피에 대한 요청에 응답하여 상기 엔트로피 풀로부터 상기 게스트 운영 시스템으로 상기 데이터를 제공하는 단계를 더 포함하는
    컴퓨팅 장치 내의 실행 방법.
  12. 제 10 항에 있어서,
    상기 장치의 상기 하나 이상의 하드웨어 구성요소 그 각각에 적어도 부분적으로 기초하여 추가적인 엔트로피 데이터를 수집하는 단계와,
    상기 추가적으로 수집된 엔트로피 데이터에 적어도 부분적으로 기초하여 상기 엔트로피 풀을 업데이트하는 단계를 더 포함하는
    컴퓨팅 장치 내의 실행 방법.
  13. 제 10 항에 있어서,
    상기 게스트 운영 시스템이 부팅(booted)될 때 상기 엔트로피 풀로부터 상기 게스트 운영 시스템으로 데이터를 제공하는 단계를 더 포함하는
    컴퓨팅 장치 내의 실행 방법.
  14. 제 13 항에 있어서,
    상기 게스트 운영 시스템이 부팅될 때 상기 엔트로피 풀로부터 상기 게스트 운영 시스템으로 상기 데이터를 제공하는 상기 단계는, 상기 게스트 운영 시스템에 의해 이용되는 기본 입/출력 시스템(BIOS) 테이블이 저장되어 있는 상기 가상 머신의 메모리 공간 내에 상기 엔트로피 풀의 적어도 일부분을 포함하는 단계를 포함하는
    컴퓨팅 장치 내의 실행 방법.
  15. 제 10 항에 있어서,
    상기 컴퓨팅 장치의 호스트 운영 시스템으로 구현되는
    컴퓨팅 장치 내의 실행 방법.
KR1020127004750A 2009-08-24 2010-08-13 가상 머신을 위한 엔트로피 풀 KR101761950B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/546,167 US9495190B2 (en) 2009-08-24 2009-08-24 Entropy pools for virtual machines
US12/546,167 2009-08-24
PCT/US2010/045474 WO2011028391A2 (en) 2009-08-24 2010-08-13 Entropy pools for virtual machines

Publications (2)

Publication Number Publication Date
KR20120065335A true KR20120065335A (ko) 2012-06-20
KR101761950B1 KR101761950B1 (ko) 2017-08-04

Family

ID=43606324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127004750A KR101761950B1 (ko) 2009-08-24 2010-08-13 가상 머신을 위한 엔트로피 풀

Country Status (9)

Country Link
US (1) US9495190B2 (ko)
EP (1) EP2470989B1 (ko)
JP (1) JP5745518B2 (ko)
KR (1) KR101761950B1 (ko)
CN (1) CN102473098B (ko)
BR (1) BR112012004052A2 (ko)
CA (1) CA2768062A1 (ko)
RU (1) RU2589348C2 (ko)
WO (1) WO2011028391A2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9286182B2 (en) * 2011-06-17 2016-03-15 Microsoft Technology Licensing, Llc Virtual machine snapshotting and analysis
US9965250B2 (en) * 2011-12-07 2018-05-08 Quintessencelabs Pty Ltd. Integrated quantum-random noise generator using quantum vacuum states of light
CN102609441B (zh) * 2011-12-27 2014-06-25 中国科学院计算技术研究所 基于分布熵的局部敏感哈希高维索引方法
US8954723B2 (en) 2012-05-09 2015-02-10 International Business Machines Corporation Anonymization of data within a streams environment
GB2502541A (en) 2012-05-30 2013-12-04 Ibm Balancing consumption of random data using multiple sources with different levels of entropy
US9086936B2 (en) 2012-07-31 2015-07-21 International Business Machines Corporation Method of entropy distribution on a parallel computer
TWI601063B (zh) 2012-09-19 2017-10-01 聯想企業解決方案(新加坡)有限公司 使用亂數產生器的電腦系統與資料處理方法
US8763085B1 (en) * 2012-12-19 2014-06-24 Trend Micro Incorporated Protection of remotely managed virtual machines
CA3029231C (en) * 2013-02-28 2020-06-02 Amazon Technologies, Inc. Configurable-quality random data service
US9819727B2 (en) 2013-02-28 2017-11-14 Amazon Technologies, Inc. Computing infrastructure for configurable-quality random data
DE102013209915A1 (de) * 2013-05-28 2014-12-04 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Bereitstellung von Zufallsbitfolgen in einer virtuellen Ausführungsumgebung eines Rechnersystems
US9530009B2 (en) * 2013-06-27 2016-12-27 Visa International Service Association Secure execution and update of application module code
US10275268B2 (en) * 2013-08-26 2019-04-30 Red Hat, Inc. Providing entropy to a guest operating system
GB2519115A (en) * 2013-10-10 2015-04-15 Ibm Providing isolated entropy elements
US9436529B2 (en) * 2014-12-26 2016-09-06 Red Hat, Inc. Providing random data to a guest operating system
KR101646689B1 (ko) * 2015-01-29 2016-08-08 국민대학교산학협력단 상대적 독립성을 이용한 누적 엔트로피 평가 장치 및 방법
US20170063550A1 (en) * 2015-04-23 2017-03-02 Keith J Brodie Secure Digital Signature Apparatus and Methods
US9658832B2 (en) 2015-05-18 2017-05-23 Red Hat Israel, Ltd. Multi-factor entropy sourcing for random number generators
US9913137B2 (en) * 2015-09-02 2018-03-06 Huawei Technologies Co., Ltd. System and method for channel security
DE102016223695A1 (de) * 2016-11-29 2018-05-30 Continental Teves Ag & Co. Ohg Verfahren zur Bereitstellung von Zufallszahlen für Steuereinheiten eines Fahrzeugnetzwerks sowie Fahrzeugnetzwerk zur Durchführung dieses Verfahrens
US10333987B2 (en) * 2017-05-18 2019-06-25 Bank Of America Corporation Security enhancement tool for a target computer system operating within a complex web of interconnected systems
US10481872B2 (en) * 2017-08-29 2019-11-19 Colossio, Inc. Cryptographically secure random number generator
US10623183B2 (en) * 2017-11-01 2020-04-14 International Business Machines Corporation Postponing entropy depletion in key management systems with hardware security modules
CN107943450A (zh) * 2017-11-17 2018-04-20 上海众人网络安全技术有限公司 随机数生成方法、装置、计算机设备及计算机可读介质
KR20190028330A (ko) 2018-09-06 2019-03-18 (주) 퓨전데이타 풀 그룹화를 이용한 가상 데스크탑 시스템 및 서비스 방법
US11048477B2 (en) * 2018-09-25 2021-06-29 International Business Machines Corporation Entropy server for random number generation
US11843695B2 (en) 2018-11-09 2023-12-12 Visa International Service Association Distributed entropy system and method
US11030065B2 (en) * 2018-11-14 2021-06-08 Arm Limited Apparatus and method of generating random numbers
CN112380069B (zh) * 2020-12-04 2022-05-17 海光信息技术股份有限公司 一种虚拟机容错系统及其容错方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0013349D0 (en) 2000-06-01 2000-07-26 Tao Group Ltd Pseudo-random number generator
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US20060072747A1 (en) 2001-03-30 2006-04-06 Wood Matthew D Enhancing entropy in pseudo-random number generators using remote sources
JP2003051819A (ja) 2001-08-08 2003-02-21 Toshiba Corp マイクロプロセッサ
US20030076956A1 (en) 2001-10-17 2003-04-24 Shackleford J. Barry Software implementation of cellular automata based random number generators
US7103771B2 (en) 2001-12-17 2006-09-05 Intel Corporation Connecting a virtual token to a physical token
US7085933B2 (en) 2002-06-11 2006-08-01 Lenvo (Singapore) Pte, Ltd. Computer system apparatus and method for improved assurance of authentication
US7296294B2 (en) * 2003-03-03 2007-11-13 Microsoft Corporation System for binding secrets to a computer system having tolerance for hardware changes
US7222062B2 (en) 2003-12-23 2007-05-22 Intel Corporation Method and system to support a trusted set of operational environments using emulated trusted hardware
US20060184936A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method using virtual machines for decoupling software from management and control systems
US7370190B2 (en) * 2005-03-03 2008-05-06 Digimarc Corporation Data processing systems and methods with enhanced bios functionality
BRPI0612995A2 (pt) 2005-07-14 2010-12-14 Matsushita Electric Ind Co Ltd mÉtodo de verificaÇço, dispositivo de processamento de informaÇço, circuito integrado implementado em um dispositivo de processamento de informaÇço, meio de armazenamento e programa de verificaÇço
US8019802B2 (en) * 2005-08-24 2011-09-13 Qualcomm Incorporated Cryptographically secure pseudo-random number generator
US20070061535A1 (en) * 2005-09-12 2007-03-15 Microsoft Corporation Processing unit enclosed operating system
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7693811B2 (en) 2006-02-28 2010-04-06 International Business Machines Corporation Generating unique identifiers for logical partitions
US7894602B2 (en) * 2006-03-31 2011-02-22 Sap Ag System and method for generating pseudo-random numbers
RU2313125C1 (ru) 2006-06-05 2007-12-20 ВОЕННАЯ АКАДЕМИЯ СВЯЗИ имени С.М. Буденного Генератор случайной последовательности
US9098347B2 (en) * 2006-12-21 2015-08-04 Vmware Implementation of virtual machine operations using storage system functionality
US9026638B2 (en) 2007-02-05 2015-05-05 Novell, Inc. Stealth entropy collection
US8112753B2 (en) * 2007-02-27 2012-02-07 Red Hat, Inc. Delaying initiation of virtual machine support process by random delay value generated based on unique ID associated with the virtual machine
US8856782B2 (en) * 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
JP4903071B2 (ja) * 2007-03-15 2012-03-21 株式会社リコー 情報処理装置、ソフトウェア更新方法及び画像処理装置
US7930332B2 (en) * 2007-03-23 2011-04-19 Microsoft Corporation Weighted entropy pool service
US8949827B2 (en) * 2007-06-22 2015-02-03 Red Hat, Inc. Tracking a virtual machine
EP2183695B1 (en) 2007-07-20 2014-11-12 Nxp B.V. Device with a secure virtual machine
US8307443B2 (en) 2007-09-28 2012-11-06 Microsoft Corporation Securing anti-virus software with virtualization
US20090204964A1 (en) * 2007-10-12 2009-08-13 Foley Peter F Distributed trusted virtualization platform
US20090113111A1 (en) * 2007-10-30 2009-04-30 Vmware, Inc. Secure identification of execution contexts
US8250127B2 (en) * 2008-01-07 2012-08-21 Aruba Networks, Inc. Harvesting entropy from trusted cryptographic sources
US9262194B2 (en) * 2008-06-10 2016-02-16 Apple Inc. Virtual machine communications
US20100088698A1 (en) * 2008-10-03 2010-04-08 Ravishankar Krishnamurthy Techniques for managing communication sessions
US9026571B2 (en) * 2008-10-27 2015-05-05 Microsoft Technology Licensing, Llc Random number generation failure detection and entropy estimation
US8370835B2 (en) * 2009-03-12 2013-02-05 Arend Erich Dittmer Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US8478801B2 (en) * 2009-05-20 2013-07-02 Vmware, Inc. Efficient reconstruction of virtual disk hierarchies across storage domains

Also Published As

Publication number Publication date
EP2470989A2 (en) 2012-07-04
RU2012106610A (ru) 2013-08-27
KR101761950B1 (ko) 2017-08-04
JP2013502665A (ja) 2013-01-24
BR112012004052A2 (pt) 2016-03-29
RU2589348C2 (ru) 2016-07-10
US9495190B2 (en) 2016-11-15
CN102473098B (zh) 2016-11-16
WO2011028391A3 (en) 2011-06-30
CN102473098A (zh) 2012-05-23
CA2768062A1 (en) 2011-03-10
WO2011028391A2 (en) 2011-03-10
EP2470989B1 (en) 2018-01-10
EP2470989A4 (en) 2013-01-23
US20110047545A1 (en) 2011-02-24
JP5745518B2 (ja) 2015-07-08

Similar Documents

Publication Publication Date Title
KR101761950B1 (ko) 가상 머신을 위한 엔트로피 풀
US9740639B2 (en) Map-based rapid data encryption policy compliance
EP3518098B1 (en) Cross platform content management and distribution system
Liu et al. Last-level cache side-channel attacks are practical
CN104598257B (zh) 远程应用程序运行的方法和装置
US8689279B2 (en) Encrypted chunk-based rapid data encryption policy compliance
US10423791B2 (en) Enabling offline restart of shielded virtual machines using key caching
US9026571B2 (en) Random number generation failure detection and entropy estimation
US20180095899A1 (en) Multi-crypto-color-group vm/enclave memory integrity method and apparatus
CN109165079B (zh) 基于虚拟化的云数据中心可信平台、信任链构建方法
AU2014321545A1 (en) Virtual machine manager facilitated selective code integrity enforcement
US9934000B2 (en) Balancing consumption of random data
CN112953930A (zh) 一种云存储数据的处理方法、装置及计算机系统
US9195821B2 (en) System and methods for remote software authentication of a computing device
US20140082275A1 (en) Server, host and method for reading base image through storage area network
CN104639313A (zh) 一种密码算法的检测方法
CN108171062B (zh) 一种针对设备的定位方法、装置及存储介质
CN110032832B (zh) 一种Web应用程序的处理方法及装置
US9213842B2 (en) Tracing data block operations
US20150143132A1 (en) Information processing device, information processing method, and computer program product
WO2020226054A1 (ja) 情報処理方法、情報処理装置及び記憶媒体
Sarıtaş Analysis of Android Random Number Generator

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant