用于虚拟机的熵池的制作方法

上传人:ting****789 文档编号:310027624 上传时间:2022-06-14 格式:DOCX 页数:6 大小:24.92KB
返回 下载 相关 举报
用于虚拟机的熵池的制作方法_第1页
第1页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《用于虚拟机的熵池的制作方法》由会员分享,可在线阅读,更多相关《用于虚拟机的熵池的制作方法(6页珍藏版)》请在金锄头文库上搜索。

1、用于虚拟机的熵池的制作方法专利名称:用于虚拟机的熵池的制作方法用于虚拟机的熵池背景技术:随机数能够在多种不同的计算场景中使用。一个常见的使用场景是密码加密 (cryptography),其中密码加密密钥和密码加密处理全都依赖于随机数的生成。随机数生成通常依赖于计算机中的一个或多个硬件组件的状态。然而,当虚拟机在计算机上运行时, 这种依赖性有可能会存在问题。所述虚拟机抽象化计算机中的硬件组件,并且将其作为虚拟组件呈现给虚拟机中运行的操作系统。与其对应的硬件组件相比,这种虚拟组件有可能具有较小的随机性或熵,而这有可能会减小所产生的数字的熵。发明内容本发明内容是为了以简化形式引入精选概念而被提供的,

2、并且在以下的详细描述中将会进一步描述这些概念。本发明内容的目的既不是识别所要求保护主题的关键特征或必要特征,也不是用于限制所要求保护的主题的范围。根据一个或多个方面,由计算设备中的虚拟机管理器管理的程序的熵池至少部分基于计算设备中的一个或多个硬件组件中的每一个而被产生。所述程序访问熵池,并且使用熵池作为产生随机数的基础。根据一个或多个方面,在计算设备的主机操作系统中,熵数据至少部分基于计算设备的一个或多个硬件组件中的每一个而被收集。熵池至少部分基于收集到的熵数据而被更新,并且被提供给作为计算设备的虚拟机运行的客户操作系统。在附图中始终使用了相同数字来引用相同特征。图1是示出了根据一个或多个实施

3、例来实现用于虚拟机的熵池的例示计算设备的框图。图2是示出了根据一个或多个实施例来获取和提供用于虚拟机的熵的例示处理的流程图。图3是示出了根据一个或多个实施例来实现用于虚拟机的熵池的例示客户操作系统的框图。图4是示出了根据一个或多个实施例的用于使用了顺序计数器的客户操作系统的例示处理的流程图。图5示出了能够根据一个或多个实施例而被配置成实现用于虚拟机的熵池的例示计算设备。具体实施例方式在这里论述的是用于虚拟机的熵池。基于计算设备中的硬件组件的熵池是由计算设备的主机操作系统产生和更新的。运行客户操作系统的虚拟机也可以在计算设备上运行。所述客户操作系统具有至少部分基于主机操作系统的熵池产生的熵池,由

4、此,即便客户操作系统是在虚拟机中运行的,也可以至少部分基于硬件组件来为客户操作系统提供熵池。此外,客户操作系统可以保持顺序计数器值。在每次产生客户操作系统的拷贝或克隆的时候,其中一个客户操作系统的顺序计数器值都会递增。此外,在每次获取基于客户操作系统熵池的值时,这时都会存储关于所获取的值以及获取该值时的客户操作系统的当前顺序计数器值的记录。当使用基于客户操作系统熵池的值时,关于该值的已存储顺序计数器值将会与客户操作系统的当前顺序计数器值相比较,并且只有在这两个计数器值相同的时候才会使用该值。图1是示出了根据一个或多个实施例来实现用于虚拟机的熵池的例示计算设备 100的框图。计算设备100可以是

5、多种不同类型的设备。例如,所述计算设备100可以是台式计算机、移动站、上网本、娱乐电器、可通信地耦合到显示设备的机顶盒、电视、蜂窝或其他无线电话、游戏控制台、车载计算机等等。由此,计算设备100的范围可以是从具有大量存储器和处理器资源的资源充足的设备(例如个人计算机、游戏控制台)到存储器和/或处理资源有限的资源很少的设备(例如传统的机顶盒、手持游戏控制台)。计算设备100包括主机操作系统102和虚拟机管理器104。主机操作系统102管理对由一个或多个组件108提供的功能所进行的访问。组件108可以是多种不同的输入/ 输出(I/O)组件以及其他组件或设备。例如,组件108可以包括一个或多个存储器

6、组件、存储设备、通信组件等等。对于包括虚拟机管理器104在内的在计算设备100上运行的其他各种不同的组件或模块来说,即使这种组件或模块不能直接访问组件108,它们也可以访问主机操作系统102管理的这个功能。主机操作系统102还包括熵池110。通常,熵池是一组向计算设备100提供随机源的数据或比特。所述熵池是基于从一个或多个熵源收集的数据产生的,并且是由随机数生成器和/或作为随机源的其他组件进行提取的。在主机操作系统102上可以运行一个或多个虚拟机(VM)管理器。虚拟机管理器允许一个或多个附加程序在计算设备100上运行。这些程序可以是每个都被称为客户操作系统的操作系统或可替换地是其他程序。虚拟机

7、管理器向客户操作系统呈现一个虚拟化硬件系统,其中客户操作系统是在所述虚拟化硬件系统中运行的。相应地,在虚拟化硬件系统中运行的客户操作系统也被称为虚拟机。客户操作系统经常是在不知道其硬件资源已被虚拟化的情况下在这个虚拟化硬件系统中运行的。虚拟机支持各种不同的使用场景,这其中包括允许以不同方式将I/O组件呈现给客户操作系统(例如仿真、合成、虚拟、透传、作为不同组件、具有不同的通信协议等等)。在图1中,虚拟机管理器104包括虚拟机控制模块120以及一个或多个虚拟化组件122。虚拟机控制模块120管理虚拟化硬件系统,由此与客户操作系统132进行通信。虚拟化组件122是由虚拟机控制模块120作为硬件组件

8、呈现给客户操作系统132的虚拟化硬件组件。虚拟化组件122与组件108既可以是相同类型的组件,可替换地,也可以是不同类型的组件。客户操作系统132与控制模块120和/或虚拟化组件122进行通信,就好像客户操作系统132在与计算设备100的物理硬件进行通信一样。虽然在这里是参考客户操作系统132来论述计算设备100的,但是作为替换,除了操作系统之外的其他程序也可以在虚拟机中运行。客户操作系统132包括随机数生成器134和熵池136。在这里将熵池136论述成由随机数生成器134使用,但是应该了解,可替换地,熵池136也可以由客户操作系统132 的其他组件使用。随机数生成器134是一个被设计成模拟或

9、近似真实随机发生器的确定性系统。相应地,随机数生成器134也可以被称为伪随机数生成器。随机数生成器134可以采用多种不同方式中的一种或多种方式来产生随机数。在一个或多个实施例中,随机数生成器134基于从熵池136获取的被称为种子值的数据来产生随机数。所述随机数生成器134 可以通过将多种不同算法应用于种子值来获取随机数,例如安全散列算法(SHA)函数(例如 SHA-512)、标准对称密码算法(例如高级加密标准(AES)等等中的一种。作为熵池(例如熵池136或熵池110)存储的数据是基于来自一个或多个熵源的值而被产生的。熵源是具有某种随机量的数据或值的来源。有多种不同的源可被用于熵池的熵源。例如

10、,下列系统信息中的每一个都可以是熵源,如各种系统时钟或定时器、页面错误发生次数、可用空闲RAM大小、已占用盘驱动器空间、空闲盘驱动器空间、系统后备信息、系统中断信息等等。每一个网络信息都可以是熵源,例如接收或发送的分组的数目、网络分组定时、从中接收到网络分组的地址等等。此外,鼠标移动、按键、语音输入及其他类似事件的定时或内容中的每一个都可以是熵源。计算系统上的现有硬件资源也可以充当熵源。来自插有(或未插入)源的声音或视频输入的数据可以是熵源。由于混乱的空气扰动,盘驱动器在旋转速度中有可能具有小的随机波动,所述空气扰动可以由低级磁盘寻道时间测量装置(low level disk seek tim

11、e instrumentation)测量并被用作熵源。包括硬盘驱动器序列号和BIOS固件表在内的唯一 (或几乎唯一的)硬件ID和序列号也可以被用作熵源。包含在设备100中或与之耦合的硬件随机数生成器也可以是熵源。硬件随机数生成器指的是一个产生随机输出的专用硬件组件。例如,这种硬件随机数生成器可以基于电子电路产生的放大噪声,环境声音噪声、半导体中的量子效应、放射性衰变定时等等。来自熵源的数据可以用多种不同方式引入熵池(例如熵池110或136)。在一个或多个实施例中,来自熵源的数据将被散列,以便产生引入熵池的散列值,或者,可替换地,来自熵源的数据本身可被引入熵池。例如,将数据引入熵池的处理可以通过

12、将数据串联到熵池,将至少一部分数据插入熵池的一个或多个位置以及诸如此类的处理来执行。主机操作系统102从一个或多个熵源获取数据,并且将所获取的数据引入熵池 110。主机操作系统102获取基于组件108的数据。相应地,熵池110是以硬件熵源为基础的。熵池136被包含在虚拟机中运行的客户操作系统132中。虚拟机控制模块120访问熵池110,并且使来自熵池110的至少一部分数据对熵池136而言是可获得的。如下文中更详细论述的那样,来自熵池110的数据可以用多种不同的方式被使得对熵池106而言是可获得。由此,即使熵池136是虚拟机中的客户操作系统的一部分,所述熵池136仍旧以硬件熵源为基础。在一个或多

13、个实施例中,主机操作系统102将来自熵池110的数据经由虚拟化组件122提供给客户操作系统132。当引导(boot)客户操作系统132或是其以其他方式开始运行所述系统时,主机操作系统102从熵池110获取数据。从熵池110获取的该数据被保存在虚拟化组件122中,例如通过将数据映射到虚拟化组件122的存储器空间。所述虚拟化组件122进而又被客户操作系统132访问并被用作(或者添加到)熵池136。相应地,客户操作系统132具有基于硬件熵源的熵池136。来自主机操作系统102提供的熵池110的数据量是可以改变的。例如,来自主机操作系统102提供的熵池110的数据量可以是预定数量的比特、预定百分比或数

14、量的熵池 110,熵池110中的所有数据等等。在一个或多个实施例中,保存了来自熵池110的数据的虚拟化组件122是供客户操作系统132访问的BIOS (基本输入/输出系统)表。主机操作系统102将来自熵池110 的数据映射到虚拟机管理器104的特定存储器空间,该存储器空间是存储了客户操作系统 132使用的BIOS表的存储器空间。相应地,除了 BIOS表中通常包含的数据之外,来自熵池 110的熵数据同样包含在BIOS表中。然而可以意识到的是,BIOS表的使用仅仅是一个示例,来自熵池110的数据可以保存在多种不同的虚拟化组件中。存储了来自熵池110的数据的虚拟化组件122的存储器空间通常是原本未被

15、正常工作的虚拟化组件122或客户操作系统132使用或需要的虚拟化组件122的一部分。例如, 与客户操作系统132的正常工作无关的BIOS表的一部分可被用作存入来自熵池110的数据的BIOS表的一部分。主机操作系统102继续收集基于组件108的熵数据,并且将熵数据添加至熵池 110。这个由主机操作系统102实施的熵数据收集处理是在独立于客户操作系统132对熵数据的收集和/或使用的情况下继续进行的。作为在引导客户操作系统132时将来自熵池110的数据提供给客户操作系统132 的处理的补充或替换,来自熵池Iio的数据可以在客户操作系统132正在运行时被提供给客户操作系统132。在这种情形下,虚拟机控

16、制模块120支持客户操作系统132与主机操作系统102之间的通信接口,从而允许将来自熵池110的数据提供给熵池136。这样做允许在引导了客户操作系统132之后基于硬件熵源来更新熵池136中的数据。在一个或多个实施例中,客户操作系统132会在需要时请求附加熵。客户操作系统132可以采用多种不同方式来确定何时需要附加熵,例如以规则或不规则的间隔,响应于熵池136中的可用数据降至阈值数量以下的确定等等。当需要附加熵时,客户操作系统 132会向主机操作系统102 (经由虚拟机管理器104)发送对于附加熵的请求。响应于这种请求,主机操作系统102会返回来自熵池110的附加数据。所返回的来自熵池110的数据量是可以改变的。例如,所返回的来自熵池110的数据量可以是预定数量的比特,客户操作系统132请求的多个比特,熵池110中的所有数据等等。在其他实施例中,主机操作系统102以规则或不规则的间隔将熵数据发送到客户操作系统132 (经由虚拟机管理器104)。这个关于主机操作系统102何时发送熵的定时是可变的,例如按照预定时间表(例如每十分钟),响应于熵池110包含

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号