CN102473098B - 用于虚拟机的熵池 - Google Patents

用于虚拟机的熵池 Download PDF

Info

Publication number
CN102473098B
CN102473098B CN201080037813.8A CN201080037813A CN102473098B CN 102473098 B CN102473098 B CN 102473098B CN 201080037813 A CN201080037813 A CN 201080037813A CN 102473098 B CN102473098 B CN 102473098B
Authority
CN
China
Prior art keywords
operating system
entropy
entropy pool
data
pool
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201080037813.8A
Other languages
English (en)
Other versions
CN102473098A (zh
Inventor
C.M.埃利森
S.A.菲尔德
B.S.贝克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102473098A publication Critical patent/CN102473098A/zh
Application granted granted Critical
Publication of CN102473098B publication Critical patent/CN102473098B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Feedback Control In General (AREA)
  • Operation Control Of Excavators (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在计算设备的主机操作系统中,熵数据是至少部分基于计算设备的一个或多个硬件组件中的每一个收集的。熵池至少部分是基于收集到的熵数据更新的,并且来自熵池的数据被提供给作为计算设备的虚拟机运行的客户操作系统。客户操作系统基于来自主机操作系统提供的熵池的数据来保持客户操作系统熵池。客户操作系统访问客户操作系统熵池,并且使用客户操作系统熵池作为产生包括随机数在内的值的基础。

Description

用于虚拟机的熵池
背景技术
随机数能够在多种不同的计算场景中使用。一个常见的使用场景是密码加密(cryptography),其中密码加密密钥和密码加密处理全都依赖于随机数的生成。随机数生成通常依赖于计算机中的一个或多个硬件组件的状态。然而,当虚拟机在计算机上运行时,这种依赖性有可能会存在问题。所述虚拟机抽象化计算机中的硬件组件,并且将其作为虚拟组件呈现给虚拟机中运行的操作系统。与其对应的硬件组件相比,这种虚拟组件有可能具有较小的随机性或熵,而这有可能会减小所产生的数字的熵。
发明内容
本发明内容是为了以简化形式引入精选概念而被提供的,并且在以下的详细描述中将会进一步描述这些概念。本发明内容的目的既不是识别所要求保护主题的关键特征或必要特征,也不是用于限制所要求保护的主题的范围。
根据一个或多个方面,由计算设备中的虚拟机管理器管理的程序的熵池至少部分基于计算设备中的一个或多个硬件组件中的每一个而被产生。所述程序访问熵池,并且使用熵池作为产生随机数的基础。
根据一个或多个方面,在计算设备的主机操作系统中,熵数据至少部分基于计算设备的一个或多个硬件组件中的每一个而被收集。熵池至少部分基于收集到的熵数据而被更新,并且被提供给作为计算设备的虚拟机运行的客户操作系统。
附图说明
在附图中始终使用了相同数字来引用相同特征。
图1是示出了根据一个或多个实施例来实现用于虚拟机的熵池的例示计算设备的框图。
图2是示出了根据一个或多个实施例来获取和提供用于虚拟机的熵的例示处理的流程图。
图3是示出了根据一个或多个实施例来实现用于虚拟机的熵池的例示客户操作系统的框图。
图4是示出了根据一个或多个实施例的用于使用了顺序计数器的客户操作系统的例示处理的流程图。
图5示出了能够根据一个或多个实施例而被配置成实现用于虚拟机的熵池的例示计算设备。
具体实施方式
在这里论述的是用于虚拟机的熵池。基于计算设备中的硬件组件的熵池是由计算设备的主机操作系统产生和更新的。运行客户操作系统的虚拟机也可以在计算设备上运行。所述客户操作系统具有至少部分基于主机操作系统的熵池产生的熵池,由此,即便客户操作系统是在虚拟机中运行的,也可以至少部分基于硬件组件来为客户操作系统提供熵池。
此外,客户操作系统可以保持顺序计数器值。在每次产生客户操作系统的拷贝或克隆的时候,其中一个客户操作系统的顺序计数器值都会递增。此外,在每次获取基于客户操作系统熵池的值时,这时都会存储关于所获取的值以及获取该值时的客户操作系统的当前顺序计数器值的记录。当使用基于客户操作系统熵池的值时,关于该值的已存储顺序计数器值将会与客户操作系统的当前顺序计数器值相比较,并且只有在这两个计数器值相同的时候才会使用该值。
图1是示出了根据一个或多个实施例来实现用于虚拟机的熵池的例示计算设备100的框图。计算设备100可以是多种不同类型的设备。例如,所述计算设备100可以是台式计算机、移动站、上网本、娱乐电器、可通信地耦合到显示设备的机顶盒、电视、蜂窝或其他无线电话、游戏控制台、车载计算机等等。由此,计算设备100的范围可以是从具有大量存储器和处理器资源的资源充足的设备(例如个人计算机、游戏控制台)到存储器和/或处理资源有限的资源很少的设备(例如传统的机顶盒、手持游戏控制台)。
计算设备100包括主机操作系统102和虚拟机管理器104。主机操作系统102管理对由一个或多个组件108提供的功能所进行的访问。组件108可以是多种不同的输入/输出(I/O)组件以及其他组件或设备。例如,组件108可以包括一个或多个存储器组件、存储设备、通信组件等等。对于包括虚拟机管理器104在内的在计算设备100上运行的其他各种不同的组件或模块来说,即使这种组件或模块不能直接访问组件108,它们也可以访问主机操作系统102管理的这个功能。
主机操作系统102还包括熵池110。通常,熵池是一组向计算设备100提供随机源的数据或比特。所述熵池是基于从一个或多个熵源收集的数据产生的,并且是由随机数生成器和/或作为随机源的其他组件进行提取的。
在主机操作系统102上可以运行一个或多个虚拟机(VM)管理器。虚拟机管理器允许一个或多个附加程序在计算设备100上运行。这些程序可以是每个都被称为客户操作系统的操作系统或可替换地是其他程序。虚拟机管理器向客户操作系统呈现一个虚拟化硬件系统,其中客户操作系统是在所述虚拟化硬件系统中运行的。相应地,在虚拟化硬件系统中运行的客户操作系统也被称为虚拟机。客户操作系统经常是在不知道其硬件资源已被虚拟化的情况下在这个虚拟化硬件系统中运行的。虚拟机支持各种不同的使用场景,这其中包括允许以不同方式将I/O组件呈现给客户操作系统(例如仿真、合成、虚拟、透传、作为不同组件、具有不同的通信协议等等)。
在图1中,虚拟机管理器104包括虚拟机控制模块120以及一个或多个虚拟化组件122。虚拟机控制模块120管理虚拟化硬件系统,由此与客户操作系统132进行通信。虚拟化组件122是由虚拟机控制模块120作为硬件组件呈现给客户操作系统132的虚拟化硬件组件。虚拟化组件122与组件108既可以是相同类型的组件,可替换地,也可以是不同类型的组件。客户操作系统132与控制模块120和/或虚拟化组件122进行通信,就好像客户操作系统132在与计算设备100的物理硬件进行通信一样。虽然在这里是参考客户操作系统132来论述计算设备100的,但是作为替换,除了操作系统之外的其他程序也可以在虚拟机中运行。
客户操作系统132包括随机数生成器134和熵池136。在这里将熵池136论述成由随机数生成器134使用,但是应该了解,可替换地,熵池136也可以由客户操作系统132的其他组件使用。随机数生成器134是一个被设计成模拟或近似真实随机发生器的确定性系统。相应地,随机数生成器134也可以被称为伪随机数生成器。随机数生成器134可以采用多种不同方式中的一种或多种方式来产生随机数。在一个或多个实施例中,随机数生成器134基于从熵池136获取的被称为种子值的数据来产生随机数。所述随机数生成器134可以通过将多种不同算法应用于种子值来获取随机数,例如安全散列算法(SHA)函数(例如SHA-512)、标准对称密码算法(例如高级加密标准(AES))等等中的一种。
作为熵池(例如熵池136或熵池110)存储的数据是基于来自一个或多个熵源的值而被产生的。熵源是具有某种随机量的数据或值的来源。有多种不同的源可被用于熵池的熵源。例如,下列系统信息中的每一个都可以是熵源,如各种系统时钟或定时器、页面错误发生次数、可用空闲RAM大小、已占用盘驱动器空间、空闲盘驱动器空间、系统后备信息、系统中断信息等等。每一个网络信息都可以是熵源,例如接收或发送的分组的数目、网络分组定时、从中接收到网络分组的地址等等。此外,鼠标移动、按键、语音输入及其他类似事件的定时或内容中的每一个都可以是熵源。
计算系统上的现有硬件资源也可以充当熵源。来自插有(或未插入)源的声音或视频输入的数据可以是熵源。由于混乱的空气扰动,盘驱动器在旋转速度中有可能具有小的随机波动,所述空气扰动可以由低级磁盘寻道时间测量装置(low level disk seek timeinstrumentation)测量并被用作熵源。包括硬盘驱动器序列号和BIOS固件表在内的唯一(或几乎唯一的)硬件ID和序列号也可以被用作熵源。
包含在设备100中或与之耦合的硬件随机数生成器也可以是熵源。硬件随机数生成器指的是一个产生随机输出的专用硬件组件。例如,这种硬件随机数生成器可以基于电子电路产生的放大噪声,环境声音噪声、半导体中的量子效应、放射性衰变定时等等。
来自熵源的数据可以用多种不同方式引入熵池(例如熵池110或136)。在一个或多个实施例中,来自熵源的数据将被散列,以便产生引入熵池的散列值,或者,可替换地,来自熵源的数据本身可被引入熵池。例如,将数据引入熵池的处理可以通过将数据串联到熵池,将至少一部分数据插入熵池的一个或多个位置以及诸如此类的处理来执行。
主机操作系统102从一个或多个熵源获取数据,并且将所获取的数据引入熵池110。主机操作系统102获取基于组件108的数据。相应地,熵池110是以硬件熵源为基础的。
熵池136被包含在虚拟机中运行的客户操作系统132中。虚拟机控制模块120访问熵池110,并且使来自熵池110的至少一部分数据对熵池136而言是可获得的。如下文中更详细论述的那样,来自熵池110的数据可以用多种不同的方式被使得对熵池106而言是可获得。由此,即使熵池136是虚拟机中的客户操作系统的一部分,所述熵池136仍旧以硬件熵源为基础。
在一个或多个实施例中,主机操作系统102将来自熵池110的数据经由虚拟化组件122提供给客户操作系统132。当引导(boot)客户操作系统132或是其以其他方式开始运行所述系统时,主机操作系统102从熵池110获取数据。从熵池110获取的该数据被保存在虚拟化组件122中,例如通过将数据映射到虚拟化组件122的存储器空间。所述虚拟化组件122进而又被客户操作系统132访问并被用作(或者添加到)熵池136。相应地,客户操作系统132具有基于硬件熵源的熵池136。
来自主机操作系统102提供的熵池110的数据量是可以改变的。例如,来自主机操作系统102提供的熵池110的数据量可以是预定数量的比特、预定百分比或数量的熵池110,熵池110中的所有数据等等。
在一个或多个实施例中,保存了来自熵池110的数据的虚拟化组件122是供客户操作系统132访问的BIOS(基本输入/输出系统)表。主机操作系统102将来自熵池110的数据映射到虚拟机管理器104的特定存储器空间,该存储器空间是存储了客户操作系统132使用的BIOS表的存储器空间。相应地,除了BIOS表中通常包含的数据之外,来自熵池110的熵数据同样包含在BIOS表中。然而可以意识到的是,BIOS表的使用仅仅是一个示例,来自熵池110的数据可以保存在多种不同的虚拟化组件中。
存储了来自熵池110的数据的虚拟化组件122的存储器空间通常是原本未被正常工作的虚拟化组件122或客户操作系统132使用或需要的虚拟化组件122的一部分。例如,与客户操作系统132的正常工作无关的BIOS表的一部分可被用作存入来自熵池110的数据的BIOS表的一部分。
主机操作系统102继续收集基于组件108的熵数据,并且将熵数据添加至熵池110。这个由主机操作系统102实施的熵数据收集处理是在独立于客户操作系统132对熵数据的收集和/或使用的情况下继续进行的。
作为在引导客户操作系统132时将来自熵池110的数据提供给客户操作系统132的处理的补充或替换,来自熵池110的数据可以在客户操作系统132正在运行时被提供给客户操作系统132。在这种情形下,虚拟机控制模块120支持客户操作系统132与主机操作系统102之间的通信接口,从而允许将来自熵池110的数据提供给熵池136。这样做允许在引导了客户操作系统132之后基于硬件熵源来更新熵池136中的数据。
在一个或多个实施例中,客户操作系统132会在需要时请求附加熵。客户操作系统132可以采用多种不同方式来确定何时需要附加熵,例如以规则或不规则的间隔,响应于熵池136中的可用数据降至阈值数量以下的确定等等。当需要附加熵时,客户操作系统132会向主机操作系统102(经由虚拟机管理器104)发送对于附加熵的请求。响应于这种请求,主机操作系统102会返回来自熵池110的附加数据。所返回的来自熵池110的数据量是可以改变的。例如,所返回的来自熵池110的数据量可以是预定数量的比特,客户操作系统132请求的多个比特,熵池110中的所有数据等等。
在其他实施例中,主机操作系统102以规则或不规则的间隔将熵数据发送到客户操作系统132(经由虚拟机管理器104)。这个关于主机操作系统102何时发送熵的定时是可变的,例如按照预定时间表(例如每十分钟),响应于熵池110包含阈值量的数据等等。发送至客户操作系统132的数据被保存在熵池136中,由此使得该数据在需要时对随机数生成器134而言是可获得的,而不用客户操作系统132向主机操作系统102发送对于附加熵的请求。
熵池136中的数据可以全都是从熵池110获取的,作为替换,该数据也可以是从其他熵源获取的。例如,客户操作系统132可以将一个或多个虚拟化组件122用作熵源,从此类熵源获取的数据则会被引入到熵池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,在这里有可能出现能够克隆虚拟机的情形。虚拟机的克隆指的是复制虚拟机,包括在虚拟机上运行的任何应用以及描述虚拟机当前状态的数据(例如客户操作系统的各种不同设置)。该复制处理会导致产生虚拟机的两个相同拷贝。所述克隆处理可以在不同时间执行,例如在虚拟机休眠(不运行)时或是在虚拟机运行时。该克隆处理可用于保存被称为快照的虚拟机拷贝,从而允许计算设备100回滚到这些已存储的设置。克隆处理可以是响应于来自用户和/或来自计算设备100中的其他组件或模块的请求而被执行的。
然而,允许克隆虚拟机可能带来关于熵池136的问题。在克隆之后有可能出现两个虚拟机具有相同熵池的情形,而这有可能会因为重复使用随机数生成器134产生的数字而导致随机性减小或是引入随机数的可预测性。在一个或多个实施例中,顺序计数器可被用于区分不同的虚拟机,在下文中将会对此进行更详细的论述。
图3是示出了根据一个或多个实施例来实现用于虚拟机的熵池的例示客户操作系统300的框图。例如,客户操作系统300可以是图1的客户操作系统132。与图1的客户操作系统132相似,客户操作系统300是作为虚拟化硬件系统中的虚拟机运行的。
客户操作系统300包括随机数生成器302,熵池304,顺序计数器306,顺序管理器模块308以及值标记模块310。与图1的随机数生成器134和熵池136相似,随机数生成器302是基于熵池304来产生随机数的。
顺序计数器306是一个区分客户操作系统300与其他客户操作系统的计数器值,其中所述其他客户操作系统是因为在与客户操作系统300相同的系谱树分支中执行克隆处理产生的(例如,所述其他客户操作系统是客户操作系统300的子女或其他子代,或者是客户操作系统300的双亲或其他先人)。在一个或多个实施例中,顺序计数器306具有一个数值,但是所使用的也可以是具有已知顺序的其他列表中的值。
在克隆客户操作系统时,客户操作系统之一的顺序计数器306将会递增,同时其他客户操作系统的顺序计数器306则保持不变。如果其中一个操作系统拷贝在克隆之后保持运行,那么该操作系统是使其顺序计数器保持其值的操作系统;否则,任一操作系统拷贝都可以让其顺序计数器递增。举个例子,如果要获取正在运行的客户操作系统的快照,那么所述正在运行的客户操作系统将会保持其顺序计数器值,而已存储的快照拷贝则会使其顺序计数器值递增(例如加1)。另举一例,如果对休眠的客户操作系统执行克隆,那么这两个客户操作系统拷贝之一会使其顺序计数器递增(例如加1),而另一个则会保持其顺序计数器值。
客户操作系统之一的顺序计数器306可以采用多种不同的方式递增。在一个或多个实施例中,主机操作系统或管理客户操作系统克隆的其他组件将会递增其中一个客户操作系统的顺序计数器306。在其他实施例中,客户操作系统之一将会递增其自身的顺序计数器306。例如,主机操作系统或其他那些管理客户操作系统克隆的组件可以设置一个表明客户操作系统已被克隆的标记或其他指示符。当下一次引导客户操作系统的拷贝时,所述拷贝可以检测到所述标记或其他指示符,从而促使该客户操作系统更新其顺序计数器306。
顺序管理器模块308和值标记模块310使用顺序计数器306来确保基于熵池304产生的值的随机性不会因为克隆处理而受损。在每次产生基于熵池304的值的时候,值标记模块310都会获取顺序计数器306的当前值。这样产生的值的示例包括随机数生成器302产生的随机数,基于随机数产生的密码加密密钥等等。在每次产生基于熵池304的值时,模块310都会将所产生的值与顺序计数器306的当前值保存在一起。相应地,与所产生的每个值一起保存的是对其有效的顺序计数器值的相关联指示。
当使用基于熵池304产生的值时,顺序管理器模块308将会检索为该产生的值存储的顺序计数器值。已存储的顺序计数器值会与顺序计数器306的当前值相比较。如果已存储的顺序计数器值与顺序计数器306的当前值相同,则可以使用基于熵池304产生的值。然而,如果已存储的顺序计数器值不同于(例如小于)顺序计数器306的当前值,那么不会使用基于熵池304产生的值。
如果不使用基于熵池304产生的值,那么客户操作系统300将会产生新值。此外,熵池304将被清空和再生(例如基于如上所述的主机操作系统的熵池)。应该指出的是,对于特定的顺序计数器值来说,熵池304只能可选地为客户操作系统300清空和再生一次。举个例子,如果尝试使用基于熵池304产生的第一个值,然而却因为已存储的顺序计数器值小于顺序计数器306的当前值而未使用该值,那么熵池304将被清空和再生。如果尝试使用基于熵池304产生的第二个值,然而却因为已存储的顺序计数器值小于顺序计数器306的当前值而未使用该值,那么,如果在尝试使用第二个值的时候的顺序计数器306的当前值与因为已经清空且再生了熵池304而尝试使用第一个值的时候的顺序计数器306的当前值相同,则不必再次清空和再生熵池304。
举个例子,假设客户操作系统已经产生了一个随机数,以便将其用作加密密钥来提供安全通信信道。更进一步的假设是客户操作系统在产生加密密钥时具有当前顺序计数器值3。当产生加密密钥时,值标记模块310将会为加密密钥存储一条顺序计数器值是3的记录。
继续该示例,假设随后获取了一个快照来存储客户操作系统的拷贝。正在运行的客户操作系统将会保持其顺序计数器值3,然而客户操作系统的快照拷贝则会将其顺序计数器值递增至4。如果正在运行的客户操作系统尝试继续使用加密密钥来提供安全通信信道,那么正在运行的客户操作系统的顺序计数器值(该值为3)与为加密密钥记录的顺序计数器值相同,由此,加密密钥可以被正在运行的客户操作系统使用。然而,如果客户操作系统的快照拷贝尝试运行和使用加密密钥来提供安全通信信道,那么为加密密钥记录的顺序计数器值(其值为3)将会小于运行中的客户操作系统的快照拷贝的顺序计数器值(其值为4),由此不会使用加密密钥。
然而应该指出的是,当基于熵池304产生的值是用于加密和解密的密钥时,即便为加密密钥记录的顺序计数器值小于运行中的客户操作系统的快照拷贝的顺序计数器值,也会保持所产生的值的记录。通过保持所产生的值的记录,所述所产生的值仍旧可以用于解密那些基于所产生的值加密的数据。
图4是示出了根据一个或多个实施例使用了顺序计数器的客户操作系统的例示处理400的流程图。处理400是由诸如图3的客户操作系统300之类的客户操作系统执行的,并且可以采用软件、固件、硬件或其组合的方式实现。处理400被显示成是一组行为,并且不受所示出的执行各种不同行为的操作的顺序的限制。处理400是使用了顺序计数器的客户操作系统的例示处理;关于使用顺序计数器的客户操作系统的附加论述是参考附图而被包含在这里的。
在处理400中,基于熵池的值被产生(行为402)。在行为402中可以产生多种不同的值,例如上文所述的随机数、密码加密密钥等等。
实现处理400的客户操作系统的当前顺序计数器值被获取(行为404),并且将会存储所产生的值以及当前顺序计数器值的记录(行为406)。
随后接收要求使用所产生的值的请求(行为408)。该请求可以是从实现处理400的客户操作系统的组件或模块接收,从别的组件或模块接收,从用户接收等等。响应于该请求,与所产生的值一起保存的顺序计数器值将被获取(行为410)。此外,实现处理400的客户操作系统的当前顺序计数器值也被获取(行为412)。
然后,客户操作系统将会检查在行为412中获取的当前顺序计数器值与在行为410中获取的已存储顺序计数器值是否相同(行为414)。如果这两个值相同,则可以使用所产生的值(行为416)。
然而,如果这两个值不同,那么客户操作系统的熵池将被清空和再生(行为418)。所请求的值被再生(行为420),并且再生的值可被使用(行为422)。
图5示出了根据一个或多个实施例而可以被配置成实现用于虚拟机的熵池的例示计算设备500。举例来说,计算设备500可以是图1的计算设备100。
计算设备500包括:一个或多个处理器或处理单元502,一个或多个可以包含一个或多个存储器和/或存储组件506的计算机可读媒体504,一个或多个输入/输出(I/O)设备508,以及允许不同组件和设备相互通信的总线510。计算机可读媒体504和/或一个或多个IO设备508既可以被包含成是计算设备500的一部分,可替换地,也可以与之耦合。总线510代表使用多种不同总线架构的若干种总线结构中的一种或多种,包括存储器总线或存储控制器、外设总线、加速图形端口、处理器或本地总线等等。总线510可以包括有线和/或无线总线。
存储器/存储组件506代表一个或多个计算机存储媒体。组件506可以包括易失媒体(例如随机存取存储器(RAM))和/或非易失媒体(例如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件506可以包括固定媒体(例如RAM、ROM、固定硬盘驱动器等等)以及可移除媒体(例如闪存驱动器、可移除硬盘驱动器、光盘等等)。
这里论述的技术可以在软件中实现,其中指令由一个或多个处理单元502执行。应该意识到的是,不同指令可以保存在计算设备500的不同组件中,例如处理单元502中、处理单元502的不同缓冲存储器中、设备500的其他缓冲存储器(未显示)中、其他计算机可读媒体中等等。此外还应该意识到的是,在计算设备500中存储指令的位置是可以随时间改变的。
一个或多个输入/输出设备508允许用户将命令和信息输入计算设备500,并且还允许将信息呈现给用户和/或其他组件或设备。输入设备的示例包括键盘、光标控制设备(例如鼠标)、麦克风、扫描仪等等。输出设备的示例包括显示设备(例如监视器或投影仪)、扬声器、打印机、网卡等等。
在这里可以在软件或程序模块的一般上下文中描述不同技术。通常,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些模块和技术的实现可被保存在某种形式的计算机可读媒体上,或是经由所述媒体传送。计算机可读媒体可以是任何能被计算设备访问的可用介质或媒体。作为示例而不是限制,计算机可读媒体可以包括“计算机存储媒体”和“通信媒体”。
“计算机存储媒体”包括通过任何方法和技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的易失和非易失以及可移除和不可移除媒体。计算机存储媒体包括但不局限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多用途碟片(DVD)或其他光存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或是可以用于存储期望信息并能被计算机访问的其他任何介质。
“通信媒体”通常包括计算机可读指令、数据结构、程序模块或是诸如载波或其他传输机制之类的已调制数据信号中的其他数据。通信媒体还包括任何信息递送媒体。术语“调制数据信号”指的是这样的信号,它的一个或多个特性依照将信息编码在该信号中的这样一种方式被设置或改变。作为例证而不是限制,通信媒体包括有线媒体,例如有线网络或直线线路连接,以及包括无线媒体,例如声学、RF、红外及其他无线媒体。此外,在计算机可读媒体的范围中还包含上述各项的组合。
通常,这里描述的任何功能或技术都可以使用软件、固件、硬件(例如固定逻辑电路)、手动处理或是这些实现的组合来实现。这里使用的术语“模块”和“组件”通常代表软件、固件、硬件或是其组合。在软件实现的情况下,模块或组件代表当在处理器(例如一个或多个CPU)上运行时执行指定任务的程序代码。程序代码可以保存在一个或多个计算机可读存储器设备中,关于所述设备的进一步描述可以参考图5而被发现。用于这里描述的虚拟机技术的熵池的特征与平台是无关的,这意味着该技术可以在具有多种处理器的多种商业计算平台上实现。
虽然通过特定于结构特征和/或方法行为的语言描述了本主题,但是应该理解,附加权利要求中限定的主题未必局限于上述具体特征或行为。相反,以上描述的具体特征和行为是作为用于实现权利要求的例示形式公开的。

Claims (12)

1.一种计算设备,包括:
处理器;以及
计算机可读媒体,在该计算机可读媒体上存储了用于虚拟机管理器管理的程序的指令,其中在由处理器运行时,所述指令将会促使处理器:
访问至少部分基于计算设备的一个或多个硬件组件中的每一个产生的熵池,所述程序运行在虚拟化硬件系统中,所述熵池已从所述计算设备上的主机操作系统获取,其中经由虚拟机管理器管理的程序将该熵池从主机操作系统传送到所述虚拟机管理器的虚拟化组件,存储在虚拟化组件中并且通过客户操作系统访问;以及
使用所述熵池作为产生用于创建密码加密密钥的随机数的基础。
2.如权利要求1所述的计算设备,其中熵池的至少一部分被主机操作系统映射到虚拟机管理器的存储器空间。
3.如权利要求1所述的计算设备,其中熵池是经由程序的基本输入/输出系统(BIOS)表而从主机操作系统获取的。
4.如权利要求1所述的计算设备,该指令还会促使处理器:
向主机操作系统请求附加熵;
从主机操作系统接收附加熵数据;以及
将附加熵数据引入程序的熵池。
5.如权利要求1所述的计算设备,该指令还促使处理器:
在特定间隔接收来自主机操作系统的附加熵;以及
将附加熵数据引入程序的熵池。
6.如权利要求1所述的计算设备,该指令还促使处理器:
获取程序的第一顺序计数器值;以及
存储用于该程序的随机数以及第一顺序计数器值。
7.如权利要求6所述的计算设备,该指令还促使处理器:
接收要求使用随机数的请求;
获取已存储的第一顺序计数器值;
在接收到请求时,获取用于该程序的第二顺序计数器值;
将第二顺序计数器值与第一顺序计数器值相比较;
如果第一顺序计数器值和第二顺序计数器值相同,则使用随机数;
如果第一顺序计数器值与第二顺序计数器值不同,则:
再生该程序的熵池,
基于再生的熵池产生新的随机数,以及
使用新的随机数。
8.一种计算设备中的方法,该方法包括:
至少部分基于计算设备的一个或多个硬件组件中的每一个来收集熵数据;
至少部分基于所收集的熵数据来更新主机操作系统上的熵池;
将来自主机操作系统上的熵池的数据提供给作为计算设备的虚拟机运行的客户操作系统上存在的熵池,其中提供给客户操作系统上存在的熵池的数据被用来产生第一随机数,并且其中将来自所述熵池的数据提供给客户操作系统包括至少在引导所述客户操作系统时将来自所述熵池的数据提供给所述客户操作系统;
克隆所述虚拟机;以及
将来自主机操作系统上的熵池的数据提供给克隆的虚拟机上的熵池,并使用所述克隆的虚拟机上的熵池来产生第二随机数以使得第一随机数和第二随机数的随机性不会因为克隆处理而受损。
9.如权利要求8所述的方法,还包括:响应于来自客户操作系统的对于附加熵的请求,将来自熵池的数据提供给客户操作系统。
10.如权利要求8所述的方法,还包括:
至少部分基于该设备的一个或多个硬件组件中的每一个来收集附加熵数据;以及
至少部分基于收集到的附加熵数据来更新熵池。
11.如权利要求8所述的方法,其中在引导客户操作系统时将来自熵池的数据提供给客户操作系统的处理包括:将熵池的至少一部分包含在存储了客户操作系统所使用的基本输入/输出系统(BIOS)表的虚拟机的存储器空间中。
12.如权利要求8所述的方法,其中该方法是在计算设备的主机操作系统中实现的。
CN201080037813.8A 2009-08-24 2010-08-13 用于虚拟机的熵池 Active CN102473098B (zh)

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/546167 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
CN102473098A CN102473098A (zh) 2012-05-23
CN102473098B true CN102473098B (zh) 2016-11-16

Family

ID=43606324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080037813.8A Active CN102473098B (zh) 2009-08-24 2010-08-13 用于虚拟机的熵池

Country Status (9)

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

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
EP2962441B1 (en) * 2013-02-28 2020-04-22 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
US9495544B2 (en) * 2013-06-27 2016-11-15 Visa International Service Association Secure data transmission and verification with untrusted computing devices
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
SG11202104633WA (en) * 2018-11-09 2021-06-29 Visa Int Service Ass 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
US8281362B2 (en) * 2005-07-14 2012-10-02 Panasonic Corporation Verification method, verification program, recording medium, information processor, and integrated circuit
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
WO2009013673A2 (en) 2007-07-20 2009-01-29 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
US8555081B2 (en) * 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
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
RU2589348C2 (ru) 2016-07-10
CA2768062A1 (en) 2011-03-10
WO2011028391A2 (en) 2011-03-10
WO2011028391A3 (en) 2011-06-30
JP5745518B2 (ja) 2015-07-08
EP2470989B1 (en) 2018-01-10
RU2012106610A (ru) 2013-08-27
US9495190B2 (en) 2016-11-15
KR101761950B1 (ko) 2017-08-04
CN102473098A (zh) 2012-05-23
EP2470989A4 (en) 2013-01-23
EP2470989A2 (en) 2012-07-04
US20110047545A1 (en) 2011-02-24
KR20120065335A (ko) 2012-06-20
BR112012004052A2 (pt) 2016-03-29
JP2013502665A (ja) 2013-01-24

Similar Documents

Publication Publication Date Title
CN102473098B (zh) 用于虚拟机的熵池
US9026571B2 (en) Random number generation failure detection and entropy estimation
CN103250163B (zh) 用于加密和解密虚拟盘的计算机可读存储介质
US10256981B2 (en) Secure logging for host security module
US6510502B1 (en) Information processing device and method for reading information recorded on an information recording medium
CN108230047B (zh) 抽奖数据处理方法及装置
CN111898137A (zh) 一种联邦学习的隐私数据处理方法、设备及系统
CN102750233B (zh) 加密和存储机密数据
CN107408081A (zh) 提供对存储器的加强重放保护
CN102855452B (zh) 基于加密组块的快速数据加密策略遵从
CN112953930A (zh) 一种云存储数据的处理方法、装置及计算机系统
CN107408192A (zh) 保护存储器
CN102202044A (zh) 便携式云存储方法和设备
CN103795525A (zh) 数据加密的方法
CN107924339A (zh) 数据中心私密性
Huang et al. Outsourced private information retrieval
CN110430194A (zh) 一种信息验证的方法、棋牌信息验证的方法及装置
CN114090479A (zh) 访问报告系统、方法、装置、芯片及电子设备
JPH10240128A (ja) 暗号装置、暗号鍵生成方法及び暗号鍵管理方法、並びに素数生成装置及び素数生成方法
JP2005099910A (ja) デジタルコンテンツの提供方法および提供装置
CN107430519B (zh) 内容部署、扩展和遥测
CN111245810B (zh) 一种云主机功能型终端实现方法、装置、设备和介质
CN113591142A (zh) 一种用于招投标的评标方法、装置及存储介质
US11463249B2 (en) Fairness in gaming
FI129030B (en) Electronic lottery

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150618

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150618

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant