专利名称:伪随机数生成器种子的自适应生成的制作方法
伪随机数生成器种子的自适应生成
背景技术:
电子设备生成随机序列来用于密码或其他用途,诸如赌博、统计采样、计算机仿真 和其中随机序列在产生不可预测的结果中是有用的其他领域。一些电子设备被配置成使用硬件随机数生成器来生成随机序列。然而,一些电子 设备被配置成在没有硬件随机数生成器的情况下生成随机序列。这些电子设备依赖于软 件来生成随机序列。这种性质的软件被称为“伪随机数生成器”(PRNG),因为与通常的硬件 随机数生成器作比较,它不生成真实的随机序列。伪随机数生成器从初始种子生成数的序列。选择不良的初始种子可能产生不够随 机的序列。在密码中,这意味着不安全的密码。在其他领域中,这意味着可以预测结果。因 此,选择良好的种子是重要的,使得伪随机数生成器生成足够效力的伪随机序列,使得例如 密码是安全的并且不可容易地预测其他结果。通过使用/聚焦在系统中或平台上发生的不可预测的事件,可以提高种子的效 力,其中,从该系统或平台生成不可预测的数。在此,不可预测的数可用于得出较大效力的 初始种子。如果可用,则鼠标移动、按键敲击、网络业务、热噪声和电子噪声都可以用作不可 预测事件,以生成不可预测的数。然而,不是不可预测的数的所有来源在每一个系统中或每一个平台上可用。例如, 鼠标、键盘、网络和/或风扇在无盘机顶盒平台或其他嵌入系统中可能不可用。即使当不可 预测的数的来源在系统中或平台上可用时,一些应用花费太长时间而不能得出期望效力的 良好种子。例如,在PC上运行的一些应用的启动(boot up)处理可能花费不止5秒来生成 安全的伪随机序列。这太长了。虽然足够随机的序列的生成可能有益或甚至是特定使用所要求的以提高密码的 安全性并且/或者避免容易能够预测的结果,但是这样的任务在一些系统中、在一些平台 上和使用没有硬件随机数生成器的一些应用时可能困难。因此,用于确定在密码中使用的 良好种子的安全的、强壮的、平台灵活的和快速的技术可能是有益的。
通过下面参考附图的描述,本发明的特征对于本领域的技术人员将变得显而易 见,在附图中图1示出了根据实施例的电子设备100的简化框图,该电子设备被配置成确定种 子,该种子用作在伪随机数生成器中的熵输入的来源,该伪随机数生成器用于在安全密码 操作或其中不可预测的结果是所需的或有益的其他使用中使用。图2示出了根据本发明的实施例的计算装置的框图200,该计算装置被配置成实 现或执行图3的实施例的方法300,以确定种子,该种子用作在伪随机数生成器中的熵输入 的来源,该伪随机数生成器用于在安全密码操作或其中不可预测的结果是所需的或有益的 其他使用中使用。图3示出根据实施例的方法300的流程图,方法300用于确定种子,该种子用作在伪随机数生成器中的熵输入的来源,该伪随机数生成器用于在安全密码操作或其中不可预 测的结果是所需的或有益的其他使用中使用。
具体实施例方式为了简单和说明性的目的,主要通过参考一个或多个实施例来描述本发明。在下 面的描述中,阐述了多个具体细节,以便提供对本发明的透彻理解。然而,对于本领域的普 通技术人员将显而易见的是,可以不限于这些具体细节地实施本发明。在其他情况下,不详 细描述公知方法和结构,以便不会不必要地混淆本发明的实施例的描述。根据实施例,公开了一种安全的、强壮的、平台灵活的和快速的方法,该方法用于 确定在安全密码操作或其中不可预测的结果是所需的或有益的其他使用中使用的随机的、 不可预测的、不可猜测的种子。密码操作用于隐藏信息。例如,内容的所有者、分发者和用户使用密码操作,该内 容包括商业内容、版权内容、其他用途内容或者可能需要或受益于安全性的任何内容。这些 密码操作用于保护、隐藏、存储、控制和/或管理这样的内容的复制、分发、访问和使用,并 且被称为“数字权利管理”操作(DRM)。在这一点上,伪随机数生成器可以被用作DRM操作 的基础。伪随机数生成器使用种子来初始化或例示伪随机数生成器,以生成伪随机序列。 伪随机序列可以被称为伪随机数、伪随机数序列或意欲具有近似真实不可预测的随机数的 序列的属性的伪随机数或序列的一个或多个集合。通常,种子本身是随机数的序列,并且可 以被称为序列和比特串等。然而,种子通常在比特长度上比从种子生成的典型伪随机序列
短得多。因为正常伪随机数生成器是确定性的,所以相同的种子和相同的伪随机数生成器 将输出相同的伪随机序列。伪随机序列本身是“确定性的”,这意味着它基本上重复。伪随 机序列越接近完全随机,则密码操作或其中不可预测的结果是所需的或有益的其他使用更 安全。相反,伪随机序列距离完全随机越远,则该安全密码操作或其他使用更不安全。因此, 可以使用以下的知识来“攻击”或“篡改(hack)”伪随机序列1)伪随机数生成器,以及,2) 用于生成伪随机序列的种子。幸运的是,种子可以具有如此多的值,使得不可能在攻击者/黑客的使用期中通 过“强力”获得种子,其中,通过“强力”意味着通过计算种子的每一个可能值,以便避免必 须预测其值并且仍然获得其值。因此,确定性的伪随机数生成器可以仍然是安全的。然而, 每次(或近乎每次)使用伪随机数生成器时,生成随机的、不可猜测的和不可预测的种子变 得非常关键。即使种子可以是随机的、不可猜测和不可预测的,但是这样的种子的安全性仍然 取决于幻种子的保密。这样的种子被生成,因此存在,这意味着其可以被发现、复制和使 用。种子越保密,则密码操作或其他使用越安全,并且反之亦然。例如,种子距离被隐藏在 完全随机的位置中越近,则该操作或使用越安全。相反,种子距离被隐藏在完全随机的位置 中越远,则该操作或使用越不安全。因此,可以幻使用其位置的知识来“攻击”或“篡改”伪 随机序列。幸运的是,可以将种子保持保密。例如,在不可能在攻击者/黑客的使用期内通过“强力,,定位种子的许多情况下可以隐藏种子,其中,通过“强力,,意味着通过搜索种子的每 一个可能位置,以便避免必须预测其位置并且仍然找到其位置。然而,隐藏种子使得它能够 保持保密变得非常关键。例如,每次种子被生成、确定、处理、指导、修改和改变等时,可以将 种子隐藏在随机的、不可预测的和不可猜测的位置。转向图1,示出了根据实施例的电子设备100的简化框图,电子设备100被配置成 执行在此所述的各种功能。在图2中,示出了根据实施例的计算装置200的简化框图,计算 装置200被配置成执行在此所述的各种功能。在图1的实施例中,参考图2。然而,下面进 一步甚至更详细地描述图2。应当明白,电子设备100可以包括可以在电子设备100的操作 中实现的诸如数字信号处理器的媒体组件、诸如通用处理器的控制组件或任何数目的媒体 和控制组件。电子设备100可以包括被配置成生成要用于确定伪随机序列的种子的软件、固 件、硬件或其组合。电子设备100可以是媒体设备。电子设备100的其他示例包括但是不限 于便携媒体播放器、静态媒体播放器、用于支持视频代码转换的电子设备、没有硬件随机数 生成器的电子设备、机顶盒(例如,电缆、卫星或DSL)、PC、电话、蜂窝电话、任何其他电话、 电视机、无线高清晰度界面、任何其他高清晰度界面、计算设备、MP3播放器、诸如对讲机的 收发信机、需要DRM的设备或可用于安全支持的任何其他设备和/或处理。如图1中所示,电子设备100包括伪随机数生成器117、熵数据获取模块155、熵评 估模块175、种子确定模块180、伪随机序列确定模块185和密码操作模块190。另外,图1 示出熵源150N、熵数据比特151、(一个或多个)密钥195和内容/其他199。熵数据获取模块155从熵源150N中的一个或多个获取熵数据比特151,其中,N是 正整数。单独地,“熵数据比特”可以是1)总是可预测,2)有些时间可预测,或3)根本不 可预测。术语“熵数据”或“熵数据比特”是对于一个或多个比特的引用,该一个或多个比 特中的任何一个可以是这三种可能之一。“熵源”是这样的“熵数据比特”的来源。熵数据 比特151被熵数据获取模块155用来输出在此称为“比特串”的内容。熵数据获取模块155使用可测量数量的时间来输出这样的比特串。然而,为了在 密码操作或其他使用中如此使用比特串,这样的比特串必须满足预定的“安全强度”,如下 进一步更详细所述。“安全强度”是安全的度量。可以根据“熵强度”定义“安全强度”。“熵 强度”是随机性的度量。在示例中,电子设备100或计算装置200的用户通常在启动到密码操作或其他使 用期间等待,直到从熵数据获取模块155输出的比特串满足预定安全强度为止。因为在启 动期间的长的等待时段可能导致负面的用户体验,所以如在此所述避免长的等待时段。作 为另一个示例特征,避免用户设备已经冻结或甚至崩溃的感知或现实。在此,熵数据获取模 块155被配置成在输出满足预定安全强度的比特串时使启动进展到密码操作。相反,熵数 据获取模块巧5被配置成在必要时执行一个或多个迭代,以便输出满足预定安全强度的比 特串,以保护密码操作或其他使用。其他部分都相同,1)更多的迭代意味着更长的启动时 间,2)更好的熵源趋向于导致更少的迭代,以及,3)更好地使用熵源趋向于导致更少的迭 代。通常,更好的熵源是可以(1)在任何给定时间并且O)以更大的频率来从其获取更大 数目的不可预测的比特的熵源。在确定不满足预定的“熵强度”时,熵数据获取模块155迭代地从熵源150N获取附加熵数据比特,直到熵数据获取模块巧5执行下述行为为止1)输出满足预定安全强度 的比特串,或2)已经获取了预定的“最大数目的熵数据比特”,但是未能满足必要的预定安 全强度,如下进一步所述。在后一种情况下,如在此所述的,电子设备100或计算设备200 可以重新启动或再一次开始。作为选项,熵数据获取模块155也可以进一步地、单独地或与任何一个或多个附 加比特和任何一个或多个附加比特串等组合地处理比特串。熵数据获取模块155可以单独 地或以任何组合地执行的处理的示例包括组合;连接;散列化;映射;以及转换。然而,应 当明白,熵数据获取模块巧5可以执行除了在此举例枚举的之外的附加处理。通过被配置 用于进一步的处理,熵数据获取模块巧5被配置成在电子设备100中操作,以自适应地引导 生成具有既不能够容易预测也不能够容易定位的值的种子。通过以这种方式进行处理(或根据情况,通过以这种方式进行附加处理),熵数据 获取模块1 使得攻击者/黑客更难猜测随机序列。因此,可以增加密码操作或其他使用 的安全性。在从熵数据获取模块155输出比特串时,该比特串被输入到熵评估模块175。熵评估模块175被配置成从熵数据获取模块155接收每一个比特串(在必要时, 以迭代的方式)。在接收到比特串时,熵评估模块175针对以下来评估比特串1)比特串的 熵强度是否满足预定安全强度,幻是否已经获取了预定最大数目的熵数据比特(即使已经 同时确定没有比特串满足/达到预定安全强度),以及,3)关于需要多少附加熵数据比特来 满足/达到预定安全强度的估计。除非熵评估模块175在没有识别满足预定安全强度的比 特串的情况下已经获取了预定最大数目的熵数据比特(这可以在第一或任何随后的迭代 中),熵评估模块175迭代地触发熵数据获取模块155来从熵源155N迭代地获取附加熵数 据比特151,并且迭代地输出对应的附加比特串以便以在此所述的方式进行评估。因此,如 下进一步所述,熵评估模块175自适应地引导(一个或多个)种子的生成以节省时间。在涉及引导种子的生成以节省时间的第一情况下,熵评估模块175估计所需要 (来满足预定安全强度)的附加熵数据比特的数目在总数上比预定最大数目的熵数据比特 总数少得多。在该情况下,当每次迭代需要可测量的数量的时间时,可以通过仅获取所估计 数目的熵数据比特而不是总的预定最大值来节省时间。在涉及引导种子的生成以节省时间的第二情况下,熵评估模块175确定它已经获 取了预定最大数目的熵数据比特并且未能测量包含满足预定安全强度的熵强度的比特串。 在此,电子设备100例如报告错误,重新启动,并且再一次开始。通过再一次开始,较快地而 不是较慢地,电子设备100的用户可以避免由于重复的失败迭代造成的电子设备100的可 归因于冻结和/或崩溃的负面体验。通过再一次开始而不是使用包含小于预定安全强度的 熵强度的比特串,避免不安全的密码操作的风险。在涉及引导种子的生成的第三情况下,熵评估模块175测量从熵数据获取模块 巧5接收到的比特串,并且例如确定该比特串具有满足/达到预定安全强度的熵强度。在 此,熵评估模块175向种子确定模块180输出比特串。作为第四选项,熵评估模块175也可以进一步、单独地或与任何一个或多个附加 比特串组合地处理比特串。熵评估模块175可以单独或以任何组合地执行的处理的示例包 括组合;连接;散列化;映射;以及转换。然而,应当明白,熵评估模块175可以执行除了在 此举例枚举的之外的附加处理。通过被配置用于进一步的处理,熵评估模块175被配置成在电子设备100中操作,以自适应地引导生成具有既不能够容易预测也不能够容易定位的 值的种子。通过以这种方式进行处理(或根据情况,通过以这种方式进行附加处理),熵评估 模块175使得攻击者/黑客更难猜测随机序列。因此,可以增加密码操作或其他使用的安 全性。在从熵评估模块175输出不满足预定安全强度的比特串时,该比特串被输出到熵 数据获取模块155,并且例如被用作在此所述的迭代处理的一部分。作为第五选项,熵数据 获取模块巧5可以被配置成从熵评估模块175接收信号,而不是接收比特串本身。在此,熵 数据获取模块155除了向熵评估模块175输出比特串之外,还保存输出到熵评估模块175 的比特串。在任何选项中,如在此所述,比特串可以被熵数据获取模块155用于迭代中,以 用于随后向熵评估模块175输出比特串。然而,在输出满足预定安全强度的比特串后,该比 特串被输入到种子确定模块180。种子确定模块180使用以下来确定种子1)以如下进一步所述的方式从熵数据获 取模块155输出的比特串,以及,幻一个或多个数据比特串,诸如密钥195,使得(一个或多 个)密钥195中的至少一个可以是保密密钥。在确定种子后,种子确定模块180输出种子 以由伪随机序列确定模块185输入。(一个或多个)密钥195中的每一个是在加密和解密操作中用来“转换”或“不转 换”内容/其他199材料的保密数据集合。(一个或多个)密钥195的不同密钥指定不同 数据转换。(一个或多个)密钥的一个示例是“公共密钥”,公共密钥是公共密钥对的公共 部分。(一个或多个)密钥的另一个示例是“私有密钥”,私有密钥可以例如是公共密钥对 的另一个或私有部分。(一个或多个)密钥195的另一种类型是可以是“对称密钥”的“随 机保密密钥”。(一个或多个)密钥195的对称密钥的一个示例是在电子设备100的一次 性可编程存储器上存储的保密密钥。(一个或多个)密钥的这个特定的一个是“设备唯一 的密钥”。它可以被编程一次,因此无人能够修改它,并且它通常不能被读取,但是它能够在 密码操作或其他使用中使用。例如,它可以用于加密内容/其他199材料。作为选项,它可 以用于加密任何一个或多个(一个或多个)密钥195,并且可以被存储在电子设备100上。 (一个或多个)密钥195的这个特定密钥可以被称为“KEK” (密钥加密密钥)。在示例中,种子确定模块180在从熵评估模块175接收到(满足预定的安全强度 的)比特串后并且在接收到(一个或多个)密钥195的密钥后,至少根据以下来确定种子 1)比特串,以及,2)(—个或多个)密钥195的密钥。作为第一选项,(一个或多个)密钥 195中的至少一个可以或是保密密钥或是非保密密钥或其组合。作为第二选项,(一个或多 个)密钥195中的该一个或多个可以被加密,不被加密或其组合。在第二选项中,可以以加 密形式、非加密形式或其组合来在存储器中存储(一个或多个)密钥195中的至少一个或 多个。在任一选项中,可以在当前或随后的密码操作或其他使用中使用存储在存储器中的 (一个或多个)密钥195中的该至少一个或多个。可以在密码操作或其他使用中使用在存 储器中以加密格式存储的任何密钥。作为第三选项,种子确定模块180也可以进一步、单独地或与任何一个或多个附 加比特串组合地处理比特串。种子确定模块180可以单独或以任何组合地执行的处理的示 例包括组合;连接;散列化;映射;以及转换。然而,应当明白,种子确定模块180可以执行除了在此举例枚举的之外的附加处理。通过被配置用于进一步的处理,种子确定模块180 被配置成在电子设备100中操作,以自适应地引导生成具有既不能够容易预测也不能够容 易定位的值的种子。通过以这种方式进行处理(或根据情况,通过以这种方式进行附加处理),种子确 定模块180使得攻击者/黑客更难猜测随机序列。因此,可以增加密码操作或其他使用的 安全性。在确定种子后,种子确定模块180向伪随机序列确定模块185输出种子。如在此所述,伪随机序列确定模块185在接收到种子后使用该种子来确定伪随机 序列。例如,伪随机序列确定模块185使用种子来作为熵输入的来源,以确定伪随机序列。 种子至少是伪随机序列确定模块185的初始内部状态的一部分。作为第一选项,伪随机序列确定模块185单独或与熵输入的一个或多个其他来源 组合地使用种子来确定伪随机序列。作为第二选项,伪随机序列确定模块185可以进一步、 单独地或与任何一个或多个附加比特串组合地处理种子。可以由伪随机序列确定模块185 单独或以任何组合执行的处理的示例包括组合;连接;散列化;映射;以及,转换。然而,应 当明白,伪随机序列确定模块185可以执行除了在此举例枚举的之外的附加处理。通过被 配置用于进一步的处理,伪随机序列确定模块185被配置成在电子设备100中操作,以自适 应地引导生成具有既不能够容易预测也不能够容易定位的值的种子。通过以这种方式进行处理(或根据情况,通过以这种方式进行附加处理),伪随机 序列确定模块185使得攻击者/黑客甚至更难猜测随机序列。因此,可以增加密码操作或 其他使用的安全性。作为第三选项,伪随机序列确定模块185可以输出(一个或多个)伪随机序列的 一个或多个集合以存储在存储器(盘或其他)以供以后使用。例如,任何一个或多个伪随机 序列可以单独地或与任何一个或多个附加比特串组合地被用作另一个伪随机数生成器种 子的基础。示例包括任何数目的熵数据比特151、从熵数据获取模块155输出的任何一个或 多个部分或全部比特串、从熵评估模块175输出的任何一个或多个部分或全部比特串、从 种子确定模块180输出的任何一个或多个部分或全部比特串、由伪随机序列确定模块185 本身预先生成的任何一个或多个部分或全部比特串、在存储器中加密地或另外地存储的任 何比特串以及任何其他比特串。在此,第四选项是可以加密、不加密和/或在存储器中存 储从伪随机数生成器117输出的任何随机序列。伪随机序列确定模块185向密码操作模块 190输出伪随机序列。密码操作模块190在接收到伪随机序列后使用该伪随机序列来执行密码操作或 其他使用。例如,可以在操作或使用中使用内容/其他199材料。在操作或其他使用中使 用保密密钥的任何情况下,操作或其他使用可以根据情况被称为“保密密钥加密”、“保密密 钥解密”或“保密密钥密码操作”。作为第一选项,密码操作模块190可以进一步、单独地或与任何一个或多个附加 比特串组合地处理伪随机序列。可以由密码操作模块190单独或以任何组合执行的处理的 示例包括组合;连接;散列化;映射;以及,转换。然而,应当明白,密码操作模块190可以 执行除了在此举例枚举的之外的附加处理。通过被配置用于进一步的处理,密码操作模块 190被配置成在电子设备100中操作,以自适应地引导生成具有既不能够容易预测也不能 够容易定位的值的种子。
通过以这种方式进行处理(或根据情况,通过以这种方式进行附加处理),密码操 作模块190使得攻击者/黑客甚至更难猜测随机序列。因此,可以增加密码操作或其他使 用的安全性。图2示出根据本发明实施例的计算装置的框图200,该计算装置被配置成实现或 执行图1的实施例中的电子设备100和/或图3的实施例中的方法300的特征。计算装置 200可以被用作用于执行以上相对于电子设备100和以下相对于方法300描述的一个或多 个特征的平台。计算装置200包括一个或多个处理器202,该一个或多个处理器202可以实现或执 行方法300中描述的步骤中的一些或全部步骤。在通信总线204上传送来自处理器202的 命令和数据。计算装置200也包括主存储器206,诸如随机存取存储器(RAM),其中,可以 在运行时间期间执行用于处理器202的程序代码;以及,辅助存储器208。辅助存储器208 例如包括一个或多个硬盘驱动器210和/或可移除储存驱动器212,其中,可以存储用于方 法300的程序代码的拷贝,该可移除存储驱动器表示软盘驱动器、磁带存储器、光盘驱动器等。可移除储存驱动器210以公知的方式从可移除储存单元214读取并且/或者向可 移除存储单元214写入。用户输入和输出设备可以包括键盘216、鼠标218和显示器220。 显示器适配器222可以与通信总线204和显示器220对接,并且可以从处理器202接收显 示数据,并且将该显示数据转换为用于显示器220的显示命令。另外,(一个或多个)处理 器202可以通过网络接口 2 在例如因特网、局域网等的网络上进行通信。对于本领域的普通技术人员将显而易见的是,可以在计算装置200中添加或替换 其他已知的电子组件。还应当显而易见的是,在图2中描述的一个或多个组件可以是可选 的(例如,用户输入设备、辅助存储器等)。虽然在本公开的全部内容中具体地被描述,但是本发明的代表性实施例在大范围 的应用上具有效用,并且上述和下述的实施例不意欲并且不应当被解释为限制性的,而是 被提供为本发明的方面的说明性讨论。现在将参考下面在图3的实施例中描述的方法300的流程图来描述一种方法,该 方法包括电子设备100和计算装置200可以采用的特征的示例。对于本领域的普通技术 人员应当显而易见的是,在不偏离方法300的范围的情况下,可以添加其他步骤,或可以去 除、修改或重新布置现有步骤。参考图1的实施例中的电子设备100和图2的实施例中的计算装置200来进行方 法300的描述。因此,描述参考图1和2中所示的元件。然而,应当明白,方法300不限于 在电子设备100或计算装置200中给出的元件。相反,应当明白,可以通过具有与在电子设 备100和计算装置200的实施例中给出的配置不同的配置的电子设备来实施方法300。方法300中给出的一些或全部操作可以作为实用工具、软件程序或子程序被包含 在任何期望的计算机可访问介质中。另外,方法300可以通过计算机程序体现,该计算机程 序可以以活动和不活动的多种形式来存在。例如,方法300可以作为(一个或多个)软件 程序存在,该软件程序由以压缩或未压缩形式的源代码、目标代码、可执行代码或其他格式 的程序指令构成。上述部分的任何一个可以被体现在包括储存设备的计算机可读介质上。示例性计算机可读储存介质包括任何基底,该基底被嵌入用于执行在此所述的一个或多个特征的一个或多个计算机程序;以及,各种常规计算机系统基底,诸如RAM、 ROM、EPROM、EEPROM和磁盘或光盘或带子。在基底上的示例性计算机可读信号或在一个或 多个计算机程序上运行的示例性计算机可读信号可以被配置成访问这样的(一个或多个) 程序,包括使用通过因特网或其他网络下载的信号。上述部分的具体示例包括在CD ROM上 的(一个或多个)程序分发或经由因特网下载的程序分发。在某种含义上,因特网本身是 计算机可读介质。这通常对于计算机网络也是成立的。因此应当明白,能够执行在此所述 的特征的任何电子设备可以执行上面枚举的那些功能。诸如处理器(未示出)、数字信号处理器、ASIC、微控制器等的控制器的一个或多 个的任何组合或组合这些组件的任何一个或多个的计算机芯片可以实现或执行电子设备 100和计算装置200,以执行方法300。替代地,电子设备100和计算装置200可以被配置成 独立于任何其他处理器、数字信号处理器、芯片或计算设备来操作。参考图3的实施例,图3示出了根据实施例的用于确定种子的方法300的流程图, 该种子用作在伪随机数生成器中的熵输入的来源,该伪随机数生成器在密码操作或其中不 可预测的结果是所需的或有益的其他使用中使用。在步骤310,熵数据获取模块155例如以以上在图1-2的实施例中在此描述的方式 从熵的任何一个或多个源150N获取熵数据比特151。依赖于平台、系统、应用等,熵数据源中的一些在一些平台和应用上不可用。然而, 因为需要满足预定安全强度的比特串(以执行密码操作),所以一个或多个熵源的不可用 性也可以意味着用于满足预定安全强度的更长时间。例如,可能要求用于获取附加熵数据 比特的附加迭代(需要更多的时间)来在任何平台、系统或应用中满足预定安全强度,该任 何平台、系统或应用未使用较好的熵源,该较好的熵源可能另外对其他平台、系统或应用可 用。然而,因为方法300可适于基于可用熵源来引导熵数据比特的获取,所以本发明的特征 包括避免在平台、系统和/或应用上的不必要的等待,所述平台、系统和/或应用可以更快 地获取足够数目的熵数据比特以输出满足预定安全强度的比特串。在方法300中,根据需要,熵数据获取模块155可以例如处理、附加处理和/或执 行迭代操作等。由熵数据获取模块巧5单独或以任何组合进行处理的示例包括组合;连 接;散列化;映射;以及转换。然而,应当明白,可以执行除了在此举例枚举的之外的附加处 理。在此,方法300自适应地引导生成具有既不能够容易预测也不能够容易定位的值的种 子。在处理的第一示例中,在第一和第二比特串相对于彼此独立的情况下,可以通过 经由连接组合两个比特串来提高熵强度。例如,考虑具有第一熵强度的第一比特串和具有 独立于第一熵强度的第二熵强度的第二比特串的连接。如在此所述的,“熵强度”能够被表 达为用于指示比特串的可预测性的数。连接的熵强度可以是第一和第二熵强度的和。在第二处理示例中,通过散列化来分布熵强度。在此,散列化可以在整个连接上均 勻地分布随机性。考虑使用硬盘对无盘机顶盒的数字视频记录。使用熵数据获取模块155 的方法300被配置成从一个或多个熵源150N获取“熵数据比特”。例如,数字视频记录器 是通常使硬盘可选地用作熵源的平台。在使用计数器来计数在对于硬盘的一个或多个读取 /写入操作所花费的时间期间过去的时钟周期的情况下,可以启动计数器,执行读取/写入 操作,并且读取计数器。在此,由于在时间上的不可预测的变化而造成不可预测(一个或多个)读取/写入操作,该在时间上的不可预测的变化归因于例如温度或在(一个或多个) 读取/写入操作期间执行的其他操作等。从此,从计数器读取的计数的值是“熵数据比特 151”的示例。通常,从计数器读取的计数更可能在用于表示计数的比特串的最低有效比特 位置上具有不可预测的比特。在此,最低有效比特可能全部或近乎全部地不可预测,并且因 此单独地可以被用作不可预测的熵数据比特。然而,作为选项,可以散列化值的全部比特串 或其任何部分,这意味着可以对于其他比特均勻地分布最低有效比特的随机性。在散列化 后,在整个比特串中的每一个比特可以具有相同的随机性。通常,可以散列化具有高度随机 的最低有效比特和几乎不随机的最高有效比特的比特串(诸如从计数器读取的值)。在此, 最小有效比特的随机性通常被均勻地分布在包括最高有效比特的所有比特上,使得最高有 效比特的随机性可以提高以接近已经降低的最低有效比特的随机性。对于无盘机顶盒,它没有用于计数在一个或多个读取/写入操作期间的过去的时 钟周期的盘。相反,例如,无盘机顶盒可以例如计数在休眠操作期间过去的时钟周期。然而, 当与硬盘读写操作的最低有效比特作比较时,休眠操作的计数器的最低有效比特可能更不 可预测。在所有其他部分相同的情况下,在无盘机顶盒中需要更多的迭代来输出满足预定 安全强度的、来自熵数据获取模块155的比特串。在此,启动密码操作的速度可以因平台不 同(和/或因应用不同和/或因系统不同)而不同。例如,PC平台可以连接到网络,该网络具有作为来源的可用随机数据。未连接到 那个网络的同一PC不如此。在不同平台的另一个示例中,无盘机顶盒与具有硬盘的数字视 频记录器不同。因此,无盘机顶盒没有用于计数在一个或多个读取/写入操作期间过去的 时钟周期的硬盘。相反,无盘机顶盒可以例如计数在一个或多个休眠操作期间过去的时钟 周期。在又一个示例中,不同的平台可以不访问同一熵源。例如,下述的图2的实施例中的 计算装置200可以可选地使用硬盘来作为熵源。相反,图1的实施例中的电子设备100可 以甚至没有硬盘等。方法300可以组合任何数目的熵数据比特串。例如,熵数据获取模块155可以组 合多个熵数据比特串,所述多个熵数据比特串1)在同一迭代期间,幻在任何一个或多个 附加迭代期间,幻从任何一个或多个不同的熵源,4)从由熵评估模块175先前确定为不满 足预定义安全强度的任何一个或多个不同的比特串,4)从存储的数据,以及幻从任何其他 数据,等等被获取。与散列化计数器值的比特串的示例类似,散列化连接的比特串在全部连 接中均勻地分布随机性。通过以这种方式进行处理(或根据情况,通过以这种方式进行附加处理),随机序 列确定模块185使得攻击者/黑客甚至更难猜测随机序列。因此,可以增加密码操作或其 他使用的安全性。方法300可以例如包括测量从熵数据获取模块155输出的每一个比特串的随机 性,以确定每一个串是否具有满足预定安全强度的熵强度;基于猜测在当前比特串中的任 何给定比特的不确定性来估计/确定可能需要多少附加熵数据比特来满足预定安全强度; 以及根据需要,迭代地获取所确定的估计的附加熵比特。在步骤320,熵评估模块175确定(从熵数据获取模块155输出的)比特串是否满 足预定的安全强度。例如,可以将比特串量化为可表达为在熵强度方面的比特数目的数目。可以按照比特数目来提及熵强度。不应当将熵强度与术语“熵数据比特”混淆,熵数据比特 指的是在图1的实施例中的熵数据获取模块155的输入。然而,本发明的特征是估计满足 预定的安全强度所需要的熵数据比特,使得熵数据获取模块巧5在必要时以一次迭代来获 取估计。像熵数据比特的估计数目那样,预定的“安全强度”能够被量化为比特数目。从这 两个数目,可以在步骤320确定从熵数据获取模块155输出的比特串是否满足预定的安全 强度。例如,在判定比特串的“熵强度”的数目等于或大于预定的安全强度时,比特串满足 预定的安全强度。在步骤330,在确定从熵数据获取模块155输出的比特串的熵强度满足预定的安 全强度时,种子确定模块180例如从熵评估模块175接收比特串,并且以例如如上参考图1 和2的实施例所述的方式来确定在密码操作中要使用的种子。在比特串不满足预定的安全强度和不超过熵数据比特的预定最大数目时,方法 300迭代地在每一个迭代获取附加熵数据比特,导致例如来自熵数据获取模块155的“比特 串”的附加输出迭代地输出每一个附加比特串。在此,至密码操作内的启动时间的持续时间 可以因系统不同和/或因平台不同的基础上而不同。然而,与系统和平台无关,在例如逐个 操作的基础上弓I导至密码操作中的启动时间。正常地,在比特串满足(由熵评估模块175确定的)预定的安全强度时,如下所 述,熵数据获取模块155不输出附加“比特串”。在此,减少了至密码操作中的启动时间的持 续时间。在步骤340,熵评估模块175例如估计满足/达到预定的安全强度所需要的熵数 据比特的总数。熵评估模块175以公知的方式来测量比特串的熵强度,例如使用标准OTST SP 800-90,附录C,2007年3月,该标准描述了使用等式Hmin = -1 (pmax)来测量比特串中 的熵的保守测量方式。假设预定的安全强度总共是112比特。正常地,通过“强力”来中断随机序列 所需要的组合的数目总共是2—-steengh。“强力”(BruteR)rce)穷尽地尝试所有可能 的组合,以便找到解密的组合,由此避免猜测。安全强度越大,则更可能需要计算“强力” 的组合以解决预定的熵比特长度。在这个示例中,总共112的预定的安全强度具有总共 5. 19229685853X IO33 的组合计数(2112 = 5. 19229685853X IO33)。在第一情况下,在判定 比特串满足预定的安全强度时,方法300进行以在步骤330确定种子。在第二情况下,在判 定比特串未能满足预定的安全强度时,进行估计需要多少附加熵数据比特来满足预定的安 全强度。在第三情况下,在判定已经获取了预定最大数目的熵数据比特时,方法300发送错 误,重新启动,并且再一次开始。假设比特串的比特长度也是总共112。另外,假设整个比特串的计数是70个“1” 和42个“0” (72+42 = 112比特)(注意,这种特定类型的计数是1比特值计数。可以执行 其他公知类型的计数,诸如2比特值计数、4比特值计数等)。在此,对于每一个比特,Dpfflax 或猜测每一个比特(“0”或“1”)的最大概率是62.5% (70/112 = 0. 625),并且,2) Hmin或 每一个比特的随机性的估计是67. 8% (Hfflin =-Ig2(0. 625) = 0.678)。在“熵比特”中表达 的整个串的熵长度总共是76(112X0. 678 = 75.936)。因此,估计数目需要总共36 (112-76 =36)个附加“熵比特”。
例如,根据相对于1比特值计数(70个“1”和42个“0”)的概率的原理,这意味着猜 测112比特的比特串的任何给定比特值的最大概率是0. 625或62. 5% (70/112 = 0. 625)。 根据上面的等式,估计(在从熵数据获取模块155输出的比特串中)每一个比特以具有每 比特67. 8%随机性的熵(Hmin = -1 (0.625) = 0.678)。通过取整到最近的整数,以“熵 比特”表达的熵强度(在从熵数据获取模块155输出的比特串中)总共是76(112X0. 678 =75.936)。因此,76个“熵比特”小于预定的安全强度,预定的安全强度是112。在此, 112的安全强度被估计为需要总共36个附加“熵比特”(112-76 = 36)。当每一个数据比 特具有0. 678的估计熵时,估计112的预定的安全强度需要总共获取M个附加“熵数据比 特” (36/0. 678 = 53. 097)。作为选项,用于使得熵估计更精确的一种技术是跟踪平均最小熵,并且例如,在文 件中存储平均最小熵。平均最小熵文件可以存储在电子设备100中过去生成的全部、近乎 全部或一些熵数据比特的平均最小熵。每次生成和/或获取附加熵数据比特时,可以更新 平均最小熵的值。在步骤340,不是基于例如从熵数据获取模块155输出的一个比特串来估 计要获取的附加熵数据比特的数目(在一次迭代中获取的数据的相对小采样),而是方法 300可以使用先前估计的历史平均值,以便随后获取历史平均值。例如,历史平均值可以要 求获取比当前估计更少的附加熵数据比特。通过依赖于历史平均而不是单独依赖于当前估 计,方法300可以获取平均地满足预定的安全强度的附加熵数据比特。当历史平均值要求 获取成功地平均满足预定的安全强度的较小数目的附加熵数据比特时,方法300可以通过 节省时间来提高满足安全强度的速度,避免获取较高的估计。在此,该较高的数目可以变为 未来平均的一部分,等等。在步骤350,熵评估模块175例如确定是否已经获取了预定最大数目的熵数据比 特。假设熵数据比特的预定最大数目总共是512。在示例中,在第一迭代时,熵数据获取模 块总共输出212个比特的串。在比特串不满足预定的安全强度的情况下,方法300可以以 在此所述的方式来迭代地获取附加熵数据比特。例如,在总共输出212个比特的来自数据 获取模块155的比特串时,数据获取模块155限于总共获取超过300个的附加熵数据比特 (512-212 = 400)。例如,与迭代的数目无关,在总共达到512个比特时,方法300报告错误, 重新启动,并且再一次开始。在此,方法300可以在再一次发送错误、再一次重新启动并且 再一次开始之前总共获取512个熵数据比特。在估计需要获取M个熵数据比特以满足安全强度的示例中,假设估计是精确的, 使得在获取附加的M个熵数据比特后满足预定的安全强度。在这个点获取的熵数据比特 的数目总共是266 (212+ = 266),这个数目比熵数据比特的预定最大数目(51 小得多, 可以通过获取266个熵数据比特而不是获取512个熵数据比特来节省时间,因为不需要该 差来满足/达到预定的安全强度。然而,在特征在于在步骤320未能确定从熵数据获取模块155输出的比特串的熵 强度满足预定的安全强度的多次迭代后,确定已经获取了预定最大数目的熵数据比特是可 能的。在该情况下,电子设备100输出错误、重新启动、并且再一次尝试确定满足预定的安 全强度的种子。方法300可以执行映射/转换技术以将熵数据比特从较小空间映射到较大的空 间,以使得更难定位不可预测的种子。例如,使用设备唯一的保密密钥对较短比特长度的种子应用加密可以将种子从较小“搜索空间”映射到较大“搜索空间”,并且因此使得攻击者/ 黑客猜测种子更困难。在此,“搜索空间”是攻击者/黑客可能需要通过以找到他/她正在 寻找的匹配数据的数据空间。例如,在使用具有128比特密钥的128比特AES加密算法来加密64比特随机数并 且使用128比特加密数据作为PRNG种子后,因为加密可以在128比特数据空间中均勻地分 布全部64比特数据的加密值(AES的特征),所以攻击者/黑客必须搜索1 比特数据空间 以找到种子值,这比在64比特数据空间中搜索困难得多。虽然这种映射/转换没有映射到 128比特空间中的所有数据,但是攻击者/黑客不知道从64比特空间映射数据的哪个部分, 他/她必须搜索整个128比特空间,因为可能映射任何数据。例如,方法300可以使用保密 密钥加密将熵数据比特的N比特串转换为熵数据比特的M比特串,其中,N和M是整数,并 且N小于M。例如,N可以是64比特,并且M可以是1 比特。除了在此描述者之外的其他熵源可以被用作用于获得熵数据比特的串的基础。电 子设备100的熵源150N的附加示例包括数字化处理、评定处理、可选调节处理、中断调用、 时间戳、文件系统等。可以具有改变的文件信息并且因此是熵源150N的一种类型的文件系 统是Linux文件系统。例如,改变在Linux文件系统中的文件信息可以包括1)何时访问 文件,幻何时修改文件,幻何时改变文件,4)任何文件的大小,以及,幻任何文件的索引节 点名称等等。然而,其他文件系统可以具有改变的文件信息,并且因此是熵源150N的附加 示例。因为可以从任何来源单独或以任何组合地获取熵数据比特151,所以可以从在此 所述的那些之外的附加熵源获取熵数据比特151。尽管如此,可以从关于可以被用作熵数据 比特的、不可预测的熵源的任何事物的一个或多个测量来获取熵数据比特,在此的描述提 供了示例。在这一方面,附加的描述示例包括计数器或已经过去的定时器,该计数器或已经 过去的定时器在这些可变的移动、事件、活动、操作和处理的一个或多个期间可以被读取以 获取熵数据比特。作为示例,可以启动计数器,可以执行对于硬盘驱动器/盘文件的一个或 多个读取/写入操作,并且可以读取计数器以获取用于表示计数的比特串。因为硬盘驱动 器读取/写入操作通常随时间变化,所以计数值是不可预测的,并且因此被看作熵数据比 特的串。其他示例包括计数中断调用的时间和休眠模式操作等。进一步的示例包括计算机 鼠标的移动、计算机小键盘的键击、网络业务的特性和/或特征和/或数量、热噪声和电子 噪声等的任何测量。本发明的示例特征包括基于以下来自适应地引导种子生成1)更好熵源的使用, 2)可用熵源的更好使用,幻加速每一个种子的生成,4)预定的安全强度,幻最小化获取或 达到预定最大数目的熵比特的出现,6)重新启动并且再一次开始以避免电子设备的冻结或 崩溃的出现,7)最小化在至密码操作或其他使用中的启动期间的用户等待时段,8)最大化 启动的速度,9)避免不安全,10)生成用于每一个操作或使用的新的种子(可选地,甚至更 频繁地),11)通过映射转换(例如,从较小到较大位置)来隐藏比特串,以及,12)基于一次 迭代或迭代的历史来迭代地估计或计算达到预定的安全强度所需的比特的数目(例如,平 均、均值、标准偏差等)。然而,无论哪种方式,本方法测量熵强度并且基于所测量的熵强度 的结果来估计可能需要多少更多的数据比特。在此,如果一个电子设备的休眠操作的熵强 度用于获取比另一个盘的读写操作更多的熵数据比特,则熵评估模块基于逐个获取来估计所需要的剩余熵数据比特,并且根据结果来自适应地弓I导电子设备。虽然在本公开的全部内容中具体地被描述,但是本发明的代表性实施例在大范围 的应用上具有效用,并且上面的讨论不意欲并且不应当被解释为是限制性的,而是被提供 为本发明的方面的说明性讨论。在此已经描述和说明的内容是本发明的实施例以及它们的一些变化形式。在此使 用的术语、描述和附图仅通过说明给出,并且不意味着限制。本领域的技术人员将认识到 在本发明的精神和范围内许多改变是可能的,其中,本发明意欲被权利要求——及其等同 物——来限定,其中,所有的术语以它们最广义的合理意义来表示含义,除非另外指示。虽然已经参考示例描述了实施例,但是本领域的技术人员将能够在不偏离真实精 神和范围的情况下对所描述的实施例进行各种修改。在此使用的术语和描述仅通过说明而 给出,并且不意味着限制。具体地说,虽然已经通过示例描述了方法,但是可以以与所说明 的顺序不同的顺序或同时地执行该方法的步骤。本领域的技术人员将认识到,这些和其他 变化在权利要求及其等同物中限定的精神和范围内是可能的。
权利要求
1.一种电子设备,所述电子设备被配置用于确定用于在密码操作中使用的种子,所述 电子设备包括伪随机数生成器,所述伪随机数生成器被配置成基于比特串的熵强度来估计满足所 述密码操作的预定安全强度的熵数据比特的数目,所述熵强度是随机性的度量;其中,所述伪随机数生成器被配置成根据已估计的熵数据比特的数目来不同地引导 所述种子的确定;以及密码操作模块,所述密码操作模块被配置成使用伪随机序列来执行所述密码操作,所 述伪随机序列具有来自密钥和熵数据的熵强度。
2.根据权利要求1所述的电子设备,其中,所述伪随机数生成器包括熵数据获取模块,所述熵数据获取模块被配置成在判定所述比特串的所述熵强度未 能满足所述预定安全强度时获取附加熵数据比特;以及其中,所述电子设备被配置成在确定用于在密码操作中使用的种子的步骤中使用所 述附加熵数据比特中的至少一个。
3.根据权利要求1所述的电子设备,其中,所述电子设备进一步包括种子确定模块,所述种子确定模块被配置成使用保密密钥加密来将熵数据比特的N 比特串转换为熵数据比特的M比特串,其中,N和M是整数,并且N小于M ;其中,所述电子设备被配置成在所述密码操作中使用熵数据比特的所述M比特串的 至少一部分。
4.根据权利要求1所述的电子设备,其中,所述电子设备进一步包括被配置成用于在获取了预定最大数目的熵数据比特时重新启动所述电子设备的模块;其中,在重新启动后,所述电子设备被配置成估计满足所述密码操作的所述预定安全 强度的熵数据比特的第二数目;以及其中,所述电子设备被配置成在确定不同的比特串满足所述预定安全强度时在重新 启动后执行所述密码操作,所述不同的数据比特串是至少部分地基于获取所述熵数据比特 的第二数目的步骤。
5.根据权利要求1所述的电子设备,进一步包括被配置成使用所述密钥和所述附加熵数据来确定所述伪随机序列的模块,其中,所述 密钥是保密密钥,并且至少使用计数器、定时器或文件信息来从至少一个熵源获取所述附 加熵数据;以及其中,所述电子设备被配置成使用所述保密密钥和从所述至少一个熵源获取的所述 附加熵数据来生成用于在所述密码操作中使用的所述种子。
6.一种确定用于在电子设备密码操作中使用的种子的方法,所述方法包括 基于比特串的熵强度来估计满足所述密码操作的预定安全强度所需的熵数据比特的数目,其中,所述熵强度是随机性的度量;以及根据已估计的熵数据比特的数目来不同地引导所述种子的确定。
7.根据权利要求6所述的方法,进一步包括使用伪随机序列来执行所述密码操作,所述伪随机序列具有来自密钥和熵数据的熵强
8.根据权利要求6所述的方法,进一步包括在判定所述熵强度未能满足所述预定安全强度时,获取附加熵数据比特,以及 其中,所述附加熵数据比特中的至少一个被用于生成用于在所述密码操作中使用的所 述种子。
9.根据权利要求8所述的方法,进一步包括 连接多个数据比特串;以及其中,已连接的多个数据比特串至少部分地被用于确定用于在密码操作中使用的种子 的步骤中。
10.根据权利要求9所述的方法,进一步包括散列化所述已连接的多个比特串的至少一部分,其中,散列化至少部分地用于确定用 于在密码操作中使用的种子的步骤中;至少部分地使用所述散列化的已连接的多个比特串的至少一部分来生成所述种子;以及使用所述散列化的已连接的多个比特串的至少一部分来执行所述密码操作。
11.根据权利要求8所述的方法,进一步包括在确定已经获取了最大数目的熵数据比特时,重新启动所述电子设备; 在重新启动后,估计满足所述密码操作的所述预定安全强度的熵数据比特的第二数 目;以及在确定不同的比特串满足所述预定安全强度时在重新启动后执行所述密码操作,所述 不同的比特串至少部分地基于获取所述所述熵数据比特的第二数目的步骤。
12.根据权利要求6所述的方法,进一步包括使用保密密钥加密来将熵数据比特的N比特串转换为熵数据比特的M比特串,其中,N 和M是整数,并且N小于M ;以及在转换后,使用熵数据比特的所述M比特串的至少一部分来执行所述密码操作。
13.根据权利要求6所述的方法,进一步包括从一个或多个熵源获取附加熵数据比特,其中,使用下述内容中的至少一个来获取所 述附加熵数据比特文件信息、驱动寻找时间、数字化处理、评定处理、可选调节处理、在至 少一个中断期间确定的计数器值、或在休眠模式期间确定的计数器值。
14.根据权利要求9所述的方法,进一步包括从不同的熵源获取所述已连接的多个比特串中的至少两个; 至少部分地使用所述已连接的多个比特串来生成所述种子;以及 至少部分地使用所生成的种子来执行所述密码操作。
15.根据权利要求8所述的方法,进一步包括 在确定已经获取了最大数目的熵数据比特时,发送错误; 在发送所述错误后获取熵数据比特的第二数目;至少部分地根据所述熵数据比特的第二数目来生成所述种子;以及 使用所生成的种子来执行所述密码操作。
16.根据权利要求6所述的方法,进一步包括 确定所述数据比特串的所述熵强度;以及判定已确定的熵强度是否满足所述预定安全强度;以及在判定所述熵强度满足所述预定安全强度时,至少部分地从所述数据比特串确定所述 种子。
17.根据权利要求6所述的方法,进一步包括在判定所述熵强度未能满足所述预定安全强度时,获取附加熵数据比特; 处理所述附加熵数据比特,其中,所述处理包括以下内容中的一个或多个散列化、连 接、或映射多个独立的比特串;以及使用伪随机序列来执行所述密码操作,所述伪随机序列具有来自保密密钥和熵数据的熵强度。
18.一种计算机可读储存介质,其上嵌入了一个或多个计算机程序,所述一个或多个计 算机程序实现一种用于确定用于在密码操作中使用的种子的方法,所述一个或多个计算机 程序包括计算机可读代码,所述计算机可读代码用于基于比特串的熵强度来估计满足所述密码操作的预定安全强度所需的熵数据比特的 数目,其中,所述熵强度是随机性的度量;以及根据已估计的熵数据比特的数目来不同地引导所述种子的确定。
19.根据权利要求18所述的计算机可读储存介质,进一步包括用于以下的代码 确定所述数据比特串的所述熵强度;以及判定已确定的熵强度是否满足所述预定安全强度;以及在判定所述熵强度满足所述预定的安全强度时,至少部分地从所述熵数据比特串确定 所述种子。
20.根据权利要求19所述的计算机可读储存介质,进一步包括用于以下的代码 在判定所述熵强度未能满足所述预定安全强度时,获取附加熵数据比特;处理所述附加熵数据比特,其中,处理包括以下内容中的一个或多个散列化、连接、或 映射多个独立的比特串;以及使用伪随机序列来执行所述密码操作,所述伪随机序列具有来自保密密钥和熵数据的 熵强度。
全文摘要
通过估计满足密码操作的预定的安全强度所需要的熵数据比特的数目来确定用于在电子设备的密码操作中使用的种子。该估计基于熵数据比特串的熵强度。熵强度是随机性的度量。此外,可以执行根据所估计的熵数据比特的数目来不同地引导种子的确定。
文档编号G06F7/58GK102084336SQ200980126324
公开日2011年6月1日 申请日期2009年6月24日 优先权日2008年7月7日
发明者章江 申请人:通用仪表公司