评估密码熵的制作方法

文档序号:7993501阅读:228来源:国知局
评估密码熵的制作方法
【专利摘要】本发明描述了用于在密码系统中评估熵的系统、方法、软件及其组合。在一些方面,由熵源系统产生采样值。可以确定采样值中的每一个的典型性。基于采样值的典型性来确定预先选择的分布的分级。基于分级来选择预先选择的分布的子集。基于多个分布的子集来计算熵源系统的熵。
【专利说明】评估密码熵
【技术领域】
[0001]本申请要求于2011年11月30日提交的欧洲专利申请N0.11191302.6的优先权,其全部内容通过引用的方式并入本文。
【背景技术】
[0002]本说明书涉及在密码系统中评估熵。密码系统实现通过公共信道进行安全通信。例如,在公钥密码系统中,消息发送方使用加密算法对明文消息进行加密,并且向接收方发送加密的消息。接收方可以使用秘密密钥值来从加密消息中恢复明文消息。在一些密码系统中,秘密密钥值的熵使得密码系统相对于特定类型的攻击是鲁棒的。
【专利附图】

【附图说明】
[0003]图1是示例性密码系统的示意图。
[0004]图2是用于在密码系统中评估熵的示例性方法。
【具体实施方式】
[0005]密码系统可以产生和利用密码秘密(例如,秘密密钥值、密码等)。在一些实例中,密码秘密可以包括来自熵源的熵。例如,从对手的角度来看,产生密码秘密的伪随机数发生器可以以随机的值作为种子,从而防止对手的特定类型的攻击。熵可以与这些和其他方式结合使用以减小复杂的对手攻击的有效性或效率。
[0006]本公开描述了适合于在密码系统中使用的几种形式的熵。本公开还描述了适合于在密码系统中评估熵的统计推断技术。例如,密码秘密包括用于避免被对手猜出的熵。例如,可以评估针对密钥收集的熵,使得可以可靠地对攻击的风险进行估计。本公开描述了可以用于一些密码系统的不例性熵源。本公开还描述了与表征熵源的概率有关的一些不例性假设。在本公开的一些方面,通过使用统计推断来产生对熵量的保守估计。
[0007]可以进行多种类型的熵评估。在一些实例中,例如,为了生成保守评估,可以将评估的最小值作为总评估或实际评估。可以基于从熵源直接获得的采样值来评估熵。在一些实例中,与其他类型的测量(例如,基于密码操作的输出的熵测量)相比,基于从熵源获得的值的熵测量提供了更准确或更有用的评估。诸如散列函数和分组密码等的一些密码操作通常可以被设计为产生看似均匀分布的输出,即使输入是非均匀的也是如此。在一些实例中,不具体考虑密码操作的推断方法可能潜在地获得超过实际熵的评估熵。在此类实例中,熵评估的任务可能潜在地被弱化或者甚至被消弱。在一些实现中,可以使用考虑密码操作的熵评估。
[0008]图1是示例性密码系统100的示意图。示例性密码系统100包括熵源系统102、密码秘密产生器模块106、熵评估器模块108、以及密码通信模块110a。在一些实例中,如图1所示的示例中一样,密码系统100包括额外的密码通信模块(例如,密码通信模块IlOb以及可能更多的密码通信模块)以及对手112。密码系统100可以包括额外或不同的特征和组件,并且可以关于图1所示和所述的或者以不同的方式来配置密码系统100。
[0009]在操作的一个不例性方面,熵源系统102向密码秘密产生器模块106提供输出值。由熵源系统102提供的输出值可以用作密码秘密产生器模块106的熵的源。例如,密码秘密产生器模块106可以是以来自熵源系统102的输出值为种子的伪随机数发生器模块。密码秘密产生器模块106产生密码秘密(例如,私钥),并且向密码通信模块IlOa提供密码秘密。密码通信模块IIOa基于密码秘密与密码系统100中的其他实体进行通信。例如,密码通信模块IlOa可以基于由密码秘密产生器模块106提供的密钥来产生加密消息、数字签名、数字凭证、密码密钥(例如,公钥和私钥、短期密钥和长期密钥等)或者这些和其他类型的密码数据的组合。由密码秘密产生器模块106提供的秘密值可以用作或者可以用于产生用于密码通信的密码密钥。
[0010]在操作的一些方面,熵评估器模块108评估由熵源系统102产生的输出值的熵。例如,熵评估器模块108可以从熵源系统获得采样输出值,并且从示例性对手112的角度或者从其他人的角度来评估熵源系统102的熵。在一些情况下,熵评估器模块108使用下述技术中的一个或更多个。熵评估器模块108可以例如结合制造熵源系统102、密码秘密产生器模块106或者密码系统100的这些和其他组件的任意组合来评估熵。熵评估器模块108可以例如结合在使用密码系统100期间或者在其他实例中部署或测试密码系统100的方面或组件来评估熵。在一些实现中,当指示熵源系统102向密码秘密产生器模块106提供输出值时,熵评估器模块108评估熵源系统102的熵。
[0011]可以以硬件、软件、固件或其组合的任意适当组合来实现图1中所示的示例性密码系统100的组件。在一些实例中,熵源系统102、密码秘密产生器模块106、熵评估器模块108和密码通信模块IlOa可以实现为由一个或更多个通用处理器执行的软件模块。在一些实例中,熵源系统102、密码秘密产生器模块106、熵评估器模块108或者密码通信模块IlOa中的一个或更多个可以实现为一个或更多个硬件组件。硬件组件可以包括专用处理器或预编程逻辑、执行软件的通用处理器、或者其他类型的数据处理装置。
[0012]密码秘密产生器模块106基于从熵源系统102提供的值来产生输出。例如,密码秘密产生器模块106可以包括伪随机数发生器或者另一种类型的系统或过程。可以用硬件、软件或其任意组合来实现伪随机数发生器。伪随机数发生器可以确定性地操作,并且提供从对手的角度来看随机的输出。因此,伪随机数发生器的输出可以称作随机输出值,但是伪随机数发生器本身确定性地操作。在一些实现中,从伪随机数发生器获得的输出值取决于伪随机数发生器的状态。例如,伪随机数发生器可以定义多种不同的状态,每一个状态与不同的输出值相对应。例如可以通过每当伪随机数发生器提供输出值时前进至下一个状态,来更新状态。可以例如刷新(或者重新播种)状态,以周期性地或者在特定条件时将熵添加至状态。
[0013]密码通信模块IlOa可以包括可操作于执行密码操作的任何适当的硬件、软件、固件或其组合。在一些实例中,密码通信模块IlOa被配置为执行数据加密。例如,密码通信模块IlOa可以被配置为基于密码秘密产生器模块106提供的密钥来对消息或其他类型的数据进行加密。在一些实例中,密码通信模块IlOa被配置为提供数据认证。例如,密码通信模块IlOa可以被配置为基于密码秘密产生器模块106提供的密钥来生成数字签名或认证标记。在一些实例中,密码通信模块IlOa被配置为生成数字凭证或其他类型的密码对象。例如,密码通信模块IlOa可以被配置为凭证管理中心,以基于密码秘密产生器模块106提供的密钥发出数字凭证。密码通信模块IlOa可以被配置为执行额外或不同类型的操作。
[0014]在一些实现中,密码通信模块110a和IlOb可以通过开放信道彼此通信。例如,密码通信模块IlOa可以通过对手112可部分或完全观测的通信信道来向密码通信模块IlOb发送密码数据(例如,加密的消息、签名的消息、密码凭证、公钥、密钥协商数据等)。在一些实例中,密码通信模块IlOa和IlOb可以通过一个或更多个数据通信网络、通过无线或有线通信链路、或者通过其他类型的通信信道来进行通信。通信网络可以包括例如蜂窝网络、电信网络、企业网络、专用公共网络、局域网(LAN)、广域网(WAN)、私有网络、公共网络(例如,互联网)、WiFi网络、包括卫星链路的网络、或者另一种类型的数据通信网络。通信链路可以包括有线或接触式的通信链路、短距离无线通信链路(例如,BLUCTOOT丨丨⑧、光学、NFC等)或者这些和其他类型的链路的任何适当的组合。
[0015]熵源系统102可以包括一个或更多个熵源。例如,如图1中所示,熵源系统102包括两个熵源104a和104b(“熵源104a-b”)。在一些实例中,熵源可以按需要被修改或添加到熵源系统102,以例如实现充分的熵。熵源104a-b可以提供具有熵的信息。例如,熵源104a-b可以包括环形振荡器、噪声二极管、鼠标移动、磁盘读取时间的变化、系统过程使用、或者其他可量化但不可预测的现象或行为。在一些实现中,熵源104a_b生成采样(例如,日志记录的信号、测量历史、保存的变化)集合,通过使用确定过程将这些采样集合累积到熵池中。例如,熵池可以是所有采样值的级联。考虑到存储器限制,可以对级联应用压缩。压缩过程可以是组添加、密码散列函数、随机提取、或者任何其他适当的压缩方法。
[0016]密码秘密产生器模块106可以使用熵源104a_b的熵池来生成密码秘密(即,密钥)。例如,可以从熵池中提取种子以用于秘密生成。密码秘密产生器模块106可以作为良好播种且良好设计的确定性伪随机数发生器来操作,以生成随机数作为密钥。初始种子可以向生成的数提供密码熵。在一些实例中,由密码秘密产生器模块106生成的随机数可以表现为与均匀分布的随机数难以区分开。密码秘密产生器模块106可以采用回溯阻力和其他技术。例如,伪随机数发生器可以通过以下方式来生成输出值:避免输出值可行地用于恢复伪随机数发生器的内部状态,并且避免输出值可行地与伪随机数发生器的初始状态一起使用来确定过去的内部状态。在一些实现中,密码秘密产生器模块106的回溯阻力可以提供密钥协商方案的前向保密性。
[0017]从熵源104a_b到密码秘密产生器模块106的采样的处理可以是确定性的而无需额外的熵。密码系统中的确定性算法可以不保持足够机密,或者在一些实例中评估算法的熵是不切实际的。例如,如果对手不知道算法,则在一些实例中,由于对手不知道算法,因此测量或量化对手未知的信息可能是不切实际的。熵源104a_b可以根据可以用于评估熵源104a-b的概率分布来操作。该概率分布可能小于精确定义的概率分布,但是可以假设至少属于某已知的概率分布集合。在这种假设下,可以应用统计推断以评估熵源104a_b和/或一般地其他熵源提供的密码熵。
[0018]在一些实现中,熵源104a_b包括或访问操作系统(例如,计算设备的操作系统)的过程。在一些实现中,对于具有熵源的软件,一个惯例是检查在安装软件的计算机上运行的过程集合。在多个过程在其中共享处理器时间的一些示例性操作系统中,具有每一个过程已经使用的处理器时间量的过程列表可以具有某一熵。例如,一些过程可能需要写入硬盘。当写入硬盘时,已知磁盘寻道时间根据数据在硬盘上所处的位置以及其他因素而改变。这种熵源的优点在于,熵源不需要特殊硬件或用户动作。
[0019]在一些实现中,熵源104a_b包括或访问环境条件。例如,一些系统具有可以用作熵源的输入端,例如,用于监控本地环境中的声音的麦克风。录音可以是不能预测的噪声和环境行为的组合。这种熵源的优点在于,熵源不需要用户动作或特定或额外硬件(例如,这是因为麦克风、摄像机和其他计算机外围硬件是常用的)。可能的缺点是,足够近的任何对手也可能具有对熵源的部分访问。例如,对手112可以在相同的环境中放置麦克风以记录相同的环境行为的声音。
[0020]在一些实现中,熵源104a_b包括或访问用户输入。在一些系统中,用户通常提供输入,例如,鼠标移动、键盘敲击、触摸板手势等。这些输入可以用作熵源104a_b。可以通过正常使用偶然地或者通过使用指令请求用户进行输入的过程来收集用于熵的输入以产生随机的事物。除了将用户输入视为可以其中提取熵以导出秘密密码密钥的熵源之外,系统还可以依赖于用户以按用户选择的口令的形式直接提供秘密值。用户选择的口令可以需要熵。因此,可以评估用户选择的口令的熵。在一些实现中,系统生成的口令也可以用作秘密值。系统生成的口令可以对随机数发生器的输出应用确定性函数。确定性函数以更用户友好的格式(例如,字母数字)呈现随机值。结果是可能需要熵的口令,并且熵源可以是某其他熵源。因此,可以评估口令的熵。
[0021]在一些实现中,熵源104a_b可以包括或访问掷硬币。在一些示例中,可以按如下方式实现掷硬币熵源。硬币可以被人掷入空中,并且绕着近似通过硬币的直径的轴进行某一旋转。硬币被允许落到某表面上或者被手接住。结果是正面或反面,这是由投掷的硬币的哪一面朝上来确定的。掷硬币通常被建模使得每一个结果独立于所有先前的结果。此外,对于典型的硬币,通常将其建模为正面和反面同概率。可以通过将正面的每一个结果转换为I并且将每一个反面转换为0,来将掷硬币序列转换为比特字符串。在这种简单的模型中,得到比特字符串均匀地分布在给定长度的所有比特字符串中。
[0022]在一些实现中,可以按如下方式形成更不可知和/或复杂的掷硬币模型。首先,可以注意到,不诚实的掷硬币者可以潜在地用特定方式来进行欺骗。例如,骗子可以不绕着正确的轴旋转硬币,而是绕着与硬币的平面成45度的轴来旋转硬币。这可能使硬币看起来在旋转,但是使一面保持最接近空间中的特定方向。对于另一示例,具有欺骗技巧的骗子可以以给定的速度和(适当类型的)旋转来投掷硬币,使得硬币在期望的面朝上的情况下被接住或者可能以更高的概率落到期望的面上而落到表面上。如果认为欺骗是可能的,则认为诚实的掷硬币者可能无意地在掷硬币时引入偏差。实际上,在仅依赖于掷硬币来得到熵的密码应用中,用户可能需要将硬币投掷至少128次。然后,当用户厌烦重复的投掷时,用户可能开始变得重复并且可能遭受这种偏差。为了考虑这种情况,可以针对掷硬币者形成更保守的概率模型,然后进行某统计分析从而将保守模型与实际的掷硬币采样进行比较。
[0023]在一些实现中,熵源104a_b可以包括或访问一个或更多个骰子。骰子或者在各面上具有数字的立方体可以在投机游戏中使用。如果在滚动时使用足够的过程,则当骰子的运动停止时终止在骰子顶部的数字被认为至少独立于前面的事件。一方面,一旦骰子被释放时,骰子的滚动被视为主要由确定性的机械定律来控制,因此可能看起来滚动骰子的手提供了所有的随机性。另一方面,可能显而易见的是,骰子的滚动者不能控制骰子滚动的结果,具体地,随机性的源是实际的滚动过程。可以通过如下方式来解释该差异。
[0024]骰子与地面的每一次碰撞将使其弹跳。因为当骰子弹跳时它会翻转,因此骰子的旋转能量中的一些能量可能转换为骰子的平移能量,反之亦然。该转换在很大程度上取决于当骰子碰撞它在其上滚动的表面时骰子的方位。随着每一次弹跳,得到的平移能量影响下一次弹跳之前的时间量。弹跳之间的时间量影响骰子的旋转量并且因此影响其方位。这可能意味着一次弹跳时方位的细微差别导致下一次弹跳时方位的较大差别。
[0025]滚动骰子的行为可能与蝴蝶效应类似,这是因为每一次弹跳放大了方位和旋转的效果,并且骰子的最终方位所确定的骰子滚动的结果取决于骰子的初始方位和运动的细节。这种过程被认为是混沌的。虽然在技术上是确定性的,但是物理混沌过程难以预测,这部分地是因为获得初始条件的必要精度以确定最终条件是不切实际的。因此,滚动骰子可以是为可以用于生成组织级秘密密钥的随机数发生器播种的实际方式。对于一些类型的用户级秘密密钥,滚动骰子可能是不切实际的,例如,滚动骰子不可用于运行时熵源。
[0026]在一些实现中,熵源104a_b可以包括或访问环形振荡器,该环形振荡器已经是常见的熵源。环形振荡器可以实现为延迟的非门的奇数循环。而延迟的非门的偶数循环可以用于存储器存储,环形振荡器常常以与振荡器中的门的数量成比例的速率在O与I (低电压和高电压)之间振荡。因为可以根据门的数目和一般环境因素(例如,温度)来计算平均振荡速率,因此振荡的变化可以被视为熵源。在一些通用计算机系统中,环形振荡器不可用,但是它们可以包含在其他类型的硬件(例如,定制系统、现场可编程门阵列(FPGA)等)中。
[0027]在一些实现中,熵源104a_b可以包括或访问放射性衰变。一些烟雾检测器使用发射α粒子的放射性元素镅。相同的方法可以用作密码熵源,以例如用于生成组织级秘密密钥。
[0028]在一些实现中,熵源104a_b可以包括假设μ介子测量器。μ介质测量器可以提供穿过设备的每一个μ介子的速度的32比特度量。在一些示例中,平均每分钟有一个μ介子穿过检测器。由于μ介子的基本物理特性,因此该熵源可以被视为提供熵速率不受对手影响的鲁棒的熵源。
[0029]在一些实现中,熵源104a_b可以包括或访问量子粒子测量。量子力学的理论暗示诸如光子或电子等的量子粒子可以存在于测量引起波函数塌陷(collapse)的状态的叠加中。理论规定波函数塌陷是独立于宇宙中的所有其他事件的完全随机过程。基于该理论,根据这种波函数塌陷导出的熵源将完全不可预测,这对于密码使用是非常有用的。
[0030]可以针对可靠风险分析来评估熵源104a_b,使得密码秘密产生器模块106可以产生有效地抵抗对手的密钥。作为示例,用于伪随机数发生器的适当播种的含糊责任可能导致问题。假设密码软件的制造商实现伪随机数发生器但是不提供熵源。如果制造商将种子设置为默认值,并且软件的用户可能在不经意地认为随机数发生器包括熵源的情况下错误地使用默认种子生成“随机”值,则伪随机数发生器的输出可以被认为具有零熵(例如,对于知道默认种子的对手而言)。熵的评估可以帮助避免这种弱点。
[0031]在一些实例中,形式上评估熵防止或减小密码系统中的特定类型的故障和弱点的可能性。例如,如果确定性伪随机数发生器的内部状态有时暴露于对手,则除非用新熵刷新伪随机数发生器,否则对手可以确定其所有未来的输出。通过频繁刷新获得的属性有时被称作预测阻力(其中,刷新有时被称作再播)或前向保密性。通常可以在现场部署期间获得前向保密性所需的熵。在很多情况下,现场的熵可以被视为缺乏的。由于该原因,熵评估是适合的。
[0032]可以在部署之前、在部署期间、或者在这些和其他时刻的任何适当的组合时由熵评估器模块108来执行对熵源104a-b的评估。例如,来自熵源104a-b的一个或更多个采样值可以用于推断与其分布有关的内容。在一些情况下,丢弃采样值,并且对源的推断可以用于评估其在未来生成熵的能力。该方法提供了在部署之前执行的预期评估。在另一种情况下,米样值可以用于一些密码应用,例如,形成密码秘密产生器模块106的输入中的一些,密码秘密产生器模块106导出秘密密钥。例如,可能存在以下环境或背景,熵被认为是缺乏的,使得丢弃采样值是不可承受的。该方法提供了在部署期间执行的追溯评估。在一些情况下,追溯评估可能向对手泄露信息。因此,可能需要视情况评估偶然熵(contingententropy)。
[0033]在一些情况下,密码秘密产生器模块106可以生成用于多个用途的密钥,使得这种使用的一个观测提供了足以使用无限计算来确定然后可以用于折中密钥的剩余使用的密钥的信息。例如,在很多形式的公钥密码使用中,公钥唯一地确定其相应的私钥。作为另一示例,假设诸如在计数器模式中使用的高级加密标准(AES-CTR)等的典型的流密码(其尝试根据有限密钥生成一次性密码本)对在一部分被对手已知并且一部分未知的消息使用一次。如果消息的已知部分具有足够的长度,则考虑到无限的计算,对手可以确定流密码密钥,然后确定整个消息。相比之下,一些密码协议提供了信息理论安全性。这些协议通过不切实际地要求非常大的密码密钥(在很多情况下,可能近似均匀)来尝试抵抗具有无限的计算能力的对手。
[0034]持续的安全性取决于计算假设的密钥可能具有可确认性属性。具有候选密钥的对手可以通过观测密钥的实际使用来确认密钥的正确性。这意味着被认为是密钥的熵的内容需要考虑可以穷举地搜 索密钥的对手。诸如公钥等的一些类型的计算安全性密钥使得纯计算攻击确实比密钥的所有可能值的穷举搜索更快。例如,诸如在DifTie-Hellman密钥协商或者El Gamal签名中使用的密钥等的离散对数密钥可以是小于某质数q的正整数。诸
如Pollard rho算法等的算法可以用约~〗来计算私钥。Schnorr给出了以下强有力的
证据,如果私钥是从大小为^啲随机集合中选择的(这允许.^步的穷举搜索),则诸如
Pollard rho等的通用算法没有明显改善,即,不比约.^步更快。因此,一些离散对数私钥可能需要比特长度的约一半的熵。
[0035]诸如对称加密密钥等的其他类型的计算安全性密钥是使得当前已知的计算攻击具有与穷举搜索类似的成本。例如,考虑密钥大小为128比特的分组密码高级加密标准(AES)。对分组密码的使用的攻击穷举地搜索每一个可能的密钥。因此,AES-128通常被认为提供128比特的安全性。但是提供128比特的安全性看起来需要密钥完全均匀,这意味着它具有128或接近128比特的熵。这种考虑提供了用于生成均匀密钥的动机。根据从熵缺乏的环境中的实际源获得的偏置熵创建近似均匀的分布在一些背景中可能太昂贵。但是,假设AES-128与仅具有100比特的熵一起使用。然后,可能将提供仅100比特的安全性。存在这些密钥可能较弱的某可能性。但是,如果例如通过散列的输出伪随机地选择这些密钥,则这看起来不太可能。如果100比特的安全性提供足够的保护,则产生均匀密钥的负担上升,并且可以集中于提供足够的熵。
[0036]熵评估器模块108可以由第三方或者其他类型的实体使用。在一些情况下,当第一方向第二方提供密码产品时,第二方评价密码产品的第三方评估。熵的第三方评估可能具有一些困难。例如,适合的熵评估需要直接访问源,这可能通常在密码产品中不可用。第一方具有提供确定性伪随机数发生器的输出作为要求保护的源的动机。对于第三方评估器,其效果将是源看起来符合均匀分布。
[0037]熵评估器模块108可以在组织或另一种类型的安全基础设施中使用。在一些情况下,组织可以向其成员提供秘密密钥以用于加密的目的,但是维持秘密密钥的备份复制。组织可以使用确定性伪随机数发生器以生成成员的秘密密钥。组织可能需要确定秘密密钥的安全性,并且将可能投入相当多资源来针对种子使用足够的熵。诸如个人隐私和非否认性等的一些密码应用要求用户的密钥对于用户是完全机密的。在该情况下,可以在用户的本地系统上生成针对用户秘密密钥的某熵。
[0038]在一些情况下,用户定义的口令是用户需要回想起并且通常输入到设备以由于诸如为了获得访问特定保密信息的许可等原因来认证用户的值。从能够使穷举搜索不可行的意义上说,这些密码通常太短而不包含足以用作密码秘密密钥的熵。该简短部分地基于用户不能记住高熵口令的想法。由于其低熵,不能使将允许对口令猜测进行离线确认的任何数据值(例如,口令的散列)是公共的。否则,可以应用口令词典。口令认证的密钥协商方案(例如,简单口令指数密钥交换(SPEKE))被设计为避免这种离线攻击。对将用户定义的口令暴露于离线猜测攻击的限制可以应用于用户选择的口令和系统生成的口令。
[0039]在操作的一些示例性方面,熵评估器模块108可以评估示例性对手112是否可以猜出密码秘密。熵评估器模块108可以观测来自熵源104a-b的采样输出值。熵评估器模块108可以依赖于熵源104a-b的可能分布的假设的概率模型。可以基于熵源104a-b的理论理解、来自熵源104a-b的采样输出值的观测或者这些和其他信息的任何适当的组合来假设概率模型。熵评估器模块108可以根据熵源104a-b产生的观测到的采样输出值来推断假设的概率模型内的熵源104a-b的分布集合。可以通过考虑采样输出值和分布之间的分级来推断分布集合。分级可以基于似然性、典型性或者这些和其他因素的组合。可以基于对来自观测的采样值的分级进行最大化或设定阈值来推断分布集合。
[0040]在操作的此类示例性方面,可以根据采样统计来得到分级。采样统计可以包括假设的概率模型。例如,采样统计可以是与模型无关的或不随模型改变的。概率模型可以是Markov模型。可以根据采样统计来得到分级。在一些示例中,采样统计可以是Markov频率统计,并且可以使用Goulden-Jackson公式来计算得到的概率。可以根据小于或等于正在被分级的采样的概率的采样的概率之和来确定典型性分级。可以根据将每一个采样输出值的概率与正在分级的采样的概率进行比较的奇函数的所有采样值的概率加权和来确定典型性分级。比较采样概率的奇函数可以是线性的。
[0041]在操作的一些示例性方面,熵评估器模块108可以量化熵源104a_b的熵或不可猜测性。例如,熵评估器模块108可以通过以下方式来量化熵源104a-b的熵:表征对手112的工作量;确定泄露给对手112的可能辅助信道信息;考虑在对密码密钥求导时将使用采样值的哪一个函数;针对每一个分布,确定分布的条件应用工作熵的值(例如,对对手猜出密码密钥的最大概率取对数);得到推断的分布集合上的熵的最小值;或者这些技术的任何适当的组合。
[0042]在操作的一些示例性方面,熵评估器模块108可以采取措施以确保密码秘密产生器模块106使用以导出密码秘密的值的总熵对于规定的安全性级别是足够的。例如,熵评估器模块108可以根据规定的安全性级别来确定针对对手112表征的工作量处的适合熵级另O。在一些实例中,如果评估的熵不够,则熵评估器模块108可以从熵源104a-b获得更多采样或者获得更多熵源,并且重新评估熵,直到熵的量对于期望的安全性水平足够为止。这样,熵评估器模块108可以考虑用于做出决策的过程可能向对手112泄露该信息的某部分的可能性。在一些实例中,可以根据从源获得的采样来导出密码密钥。
[0043]在操作的此类示例性方面,可以预先执行熵的评估。例如,在要进行任何密钥生成(例如,开发时间)之前,使用来自源的观测采样值来评估源。从部分地使用旨在用于密钥生成的采样值来评估源的意义上说,可以回溯地执行评估。计算的熵可以是考虑了从源获得的采样可能具有较低概率的可能性的最终熵,因此是比源的最可能的输出更多的熵。
[0044]在操作的一些示例性方面,关于推断出的分布集合最小化熵并且对分级进行可能的最大化以获得推断出的分布集合可以使用通用优化技术。通用优化技术可以是例如梯度法、牛顿法、共轭方向法、准牛顿法、神经网络、不可微分方法(例如,Nelder-Mead单一或模拟退火法)、惩罚方法、Karush-Kuhn-Tucker条件、凸方法。可以通过假设概率模型特有的算法来获得在熵评估中涉及的优化问题之一(例如,最小化推断出的分布集合上的熵、或者确定推断出的分布集合作为最大分级集合)的解。例如,如果假设概率模型是隐式Markov模型,则Baum-Welch算法可以用于对熵评估中涉及的优化问题进行求解。
[0045]图2是示出了用于在密码系统中计算熵的示例性过程200的流程图。示例性过程200可以由例如熵评估器模块108来执行,以评估图1中所示的熵源104a-b的熵。可以单独地评估熵源104a-b中的每一个。可以组合(例如,相加或者以其他方式组合)独立源的熵。可以将熵源系统102作为熵池来评估。在一些实例中,示例性过程200中的一些或全部操作可以由计算设备、服务器、另一种类型的计算系统或者其任何适当的组合来执行。在一些实现中,在安全的环境中(例如,在防火墙后、在安全硬件中或者在另一种类型的环境中)执行过程200。示例性过程200可以包括额外或不同的操作,并且可以以所示的顺序或者以不同的顺序来执行操作。在一些实现中,可以以迭代的方式重复或执行示例性过程200中的一个或更多个操作。
[0046]在210,从一个或更多个熵源来获得采样值。熵源可以包括图1中的熵源104a_b中的一个或更多个或者其他类型的熵源。例如,可以根据用户输入、环形振荡器、噪声二极管、磁盘读取时间的变化和/或系统使用来获得采样值。
[0047]可以针对每一个熵源获得或导出概率模型。熵源的概率模型可以是或者可以对应于熵源的预定的可能分布集合。熵源的分布针对熵源的每一个可能的输出值指示熵源将产生该输出值的概率。熵源的实际分布可能不是先验已知的(例如,它可以随着时间而改变,或者可能不能或难以完全表征实际分布),因此熵源的概率模型提供了可以潜在地描述熵源的预定的分布集合。因此,可以根据熵源的概率模型或者其他类型的信息来确定熵源的预定分布集合。
[0048]按如下方式提供示例性的理论框架。概率空间Π和采样空间X是集合。在密码环境中,X通常是有限的,但是Π通常是不可数无限的。采样空间X可以被假设为有限的。元素pen可以是分布。元素X ex可以是采样。Π和X的概率函数可以是以下函数:
[0049]Ρ:Π XX— [0,1]:(p,x) — Pp(X)
[0050]使得针对所有pen,下面的求和成立:
[0051]Σ xex Cx) = 1。
[0052]可以用三元组(Π,Χ,Ρ)表示概率模型,其中,Π是概率空间,X是采样空间,P是概率函数。换言之,在一些实例中,评估在有限集合χ(称作采样空间)中产生采样值的源的密码熵可以依赖于源具有属于某集合Π (称作概率空间)的分布的假设。为了进行评估,可以使该假设的概率模型是显式的。标记Pp(X)可以用于表示Ρ(ρ,χ)。
[0053]在220,确定从熵源获得的每一个采样值的典型性。可以针对预定的分布集合中的分布中的每一个来确定获得的采样值的典型性。例如,可以针对所选概率模型中的一些或全部分布来确定采样值的典型性。在一些实例中,给定采样值的典型性指示从熵源系统中随机选择的米样值最多与给定米样值同概率的概率。在一些实现中,在220,确定每一个米样值的似然性。可以针对预定的分布集合中的每一个分布来确定获得的采样值中的一些或全部的似然性。
[0054]在230,基于典型性来确定预先选择的分布中的每一个的分级。在一些实现中,典型性的值用于分级。在一些实现中,似然性的值用于分级。可以基于典型性、似然性或者根据采样值和分布导出的其他值来确定分级。在240,基于分级来选择或者推断分布的子集。选择过程可以包括选择具有最高分级或者具有高于指定最小阈值的分级的一个或更多个分布。因此,所选的分布子集可以包括单个分布,或者所选的分布子集可以包括多个分布。
[0055]可以按如下方式在示例性理论框架中描述操作220、230和240。最大分级技术可以用于选择分布的子集。假设g是与分级值推断函数ig相关联的概率模型(Π,X,P)的一般分级。可以按如下方式将与分级g相关联的最大分级推断描述为集合值推断imaxg:
[0056]Imaxg(X) = {p: g(x,q) < g(x,p)Vq E Π]
[0057]函数imaxg可以被认为是根据g或根据18导出的。在一些情况下,g是非连续的,并且这种最大值P可能不存在。在这些情况下,有时可以使用备选方式。考虑X处的分
级值的上确界,写为 sx = SUPpeng(x, p)。定义Se = {p:g(x,p) > — e} £ /7,其是根据大小e来嵌套的。为了方便,在Π的某自然拓扑中,^可以是^^的闭包。如果将
hnpgix)=ne>0&定义为非空的(如果Π具有紧凑拓扑,则这是成立的),则isupg(x)可
以用作空集imaxg(x)的适当替换形式,即使g(x,P)的值< sx,其中,P e isupg(x) ο
[0058]在密码应用中,熵参数可能比分布本身更受关注。如果参数是连续的,则上面关于isupg(x)的定义将提供参数的期望答案。对于非连续参数,isupg(x)上的参数可能不是期望
的。在该情况下,不是认为isupg(x)是^隼合链的交叉点,而是可以认为isupg(x)是集合&
链的极限。这使得我们能够考虑Se的参数的极限,其可能与交叉点上的参数的值不同。在很多情况下,推断的集合imaxg(x)是单个元素(单元素)集合。在这些情况下,推断更像是点值推断函数。然而,X通常具有使几个(可能无穷多个)不同的分布P达到最大值的一些值。如果G是一般分级方法或者Ie是分级值推断方法,则可以使用上面的推断函数来导出集合值推断方法Imaxe。Wimaxg(X)的等式包括Π的意义上说,最大分级推断可以是与模型有关的。该与模型相关性的潜在结果是,模型(Π,Χ,Ρ)的约束(Θ,Χ,Ρ)中的最大分级推断可能不具有与模型(Π,Χ,Ρ)中的最大分级推断的给定关系。
[0059]阈值分级技术或置信度可以用于选择分布的子集。假设g是模型(Π,Χ,Ρ)的一般分级。Ste [0,I],并且将该值称作阈值水平。阈值分级推断函数ig>t是集合值推断函数,其由下式给出:
[0060]ig>t(x) = {p:g(x, p) > t}
[0061]如果t > u,则C ig>u(x),因此,获得的集合作为阈值的函数在大小上
是缩小的或稳定的。高阈值可能导致较窄(甚至可能空)推断结果,而低阈值可能导致较宽推断结果。
[0062]值c = Ι-t有时被称作推断的置信度。随着置信度的增加,推断结果的广度可能增加(或者保持稳定)。这反映出我们通常可以做出加宽我们的推断集合的牺牲以得到更多可信推断结果的想法。在一些实例中,当针对固定的P和变化的X的分级的分布与[0,I]上的均匀分布存在一定的相似性时,可以最佳地给分级设定阈值,这是因为置信度具有更好的意义。一些分级具有这种属性,而其他分级不具有这种属性。如果分级不是与模型有关的,则阈值分级推断不是与模型有关的。具体地,如果i0(x)在模型(Π,Χ,Ρ)的约束(Θ,χ,ρ)中是阈值分级推断,并且in(x)在模型中是阈值分级推断,则
[0063]i θ (X) = Θ Π i Θ (χ) ο
[0064]当使用这种阈值分级推断并且采用参数的下确界时,模型的约束不能减小推断的参数,并且松弛模型不能增加推断的参数。在一些实例中,可以假定对手可以影响Π中P的选择。如果对手对P具有这种能力,则最大分级推断可以具有更少的值。为了适当的分级,高置信度阈值分级将仍然具有某值。
[0065]可以通过任何适当的技术来生成分级。可以将似然性分级描述为:
[0066]gL(x, p) = Pp(X)。
[0067]相关联的推断函数可以被写为Lx = igL(x)。因此,Lx(p) = Pp(X)。
[0068]术语似然性可以指示Lx可以具有与概率函数所具有的属性不同的属性。例如,对所有概率分布上的Lx的值进行求和(或者积分)未被保证获得I。似然性是统计推断中的公知且基本的概念。
[0069]可以基于典型性来生成分级。对于给定的包含性级别k e [O, I],典型性分级gk可以被写为:
[0070]
【权利要求】
1.一种用于在密码系统中评估熵的方法,所述方法包括: 获得由熵源系统产生的多个采样值; 确定预先选择的多个分布中的每一个分布的分级,所述分级是基于所述采样值的典型性来确定的; 基于所述分级来选择所述多个分布的子集;以及 基于所述多个分布的所述子集来计算所述熵源系统的熵。
2.根据权利要求1所述的方法,还包括:确定所述采样值中的每一个采样值的典型性。
3.根据任意前述权利要求所述的方法,还包括: 确定所述熵源系统是否具有足够的熵以达到所述密码系统中指定的安全性级别;以及 基于确定所述熵源系统具有不足的熵来修改所述熵源系统。
4.根据任意前述权利要求所述的方法,其中,给定采样值的典型性指示从所述熵源系统中随机选择的采样值 至多与所述给定采样值同概率的概率。
5.根据任意前述权利要求所述的方法,还包括: 基于由所述熵源系统产生的采样值来给伪随机数发生器播种;以及 基于经播种的伪随机数发生器的输出来获得密码秘密。
6.根据任意前述权利要求所述的方法,还包括:确定每一个采样值的似然性,其中,所述分级是基于采样值的典型性和所述采样值的似然性来确定的。
7.根据任意前述权利要求所述的方法,其中,基于所述分级选择所述多个分布的子集包括以下中的至少一个: 选择具有最大分级的一个或更多个分布;或者 选择具有高于指定的阈值分级的分级的一个或更多个分布。
8.根据任意前述权利要求所述的方法,其中,计算所述熵包括: 识别对手可得到的辅助信道信息和计算资源; 针对所述分布子集中的每一个分布,确定所述对手使用所述对手可得到的所述辅助信道信息和所述资源猜出所述密码秘密的最大概率的对数;以及将针对所述分布子集所确定的对数的最小值识别为所述熵。
9.一种密码装置,包括: 熵源组件; 熵评估器组件,操作于: 获得由所述熵源组件产生的多个采样值; 针对预先选择的多个分布中的每一个分布确定分级,所述分级是基于所述采样值的典型性来确定的; 基于所述分级来选择所述多个分布的子集;以及 基于所述多个分布的所述子集来计算所述熵源组件的熵。
10.根据权利要求9所述的密码装置,所述熵评估器组件还操作于: 确定所述熵源组件是否被配置为针对所述密码系统中指定的安全性级别产生足够的熵;以及 基于确定所述熵源组件未被配置为产生足够的熵来修改所述熵源组件。
11.根据权利要求9或10所述的密码装置,还包括:密码秘密产生器组件,所述密码秘密产生器组件是基于由所述熵源组件产生的值被播种的;以及 密码通信组件,操作于从所述密码秘密产生器组件获得密码秘密。
12.根据权利要求9至11中任意一项所述的密码装置,所述熵评估器组件还操作于确定每一个采样值的似然性,其中,所述分级是基于采样值的典型性和采样值的似然性来确定的。
13.根据权利要求9至12中任意一项所述的密码装置,其中,计算所述熵包括: 识别对手可得到的辅助信道信息和计算资源; 针对所述分布子集中的每一个分布,确定所述对手使用所述对手可得到的所述辅助信道信息和所述资源猜出所述密码秘密的最大概率的对数;以及将针对所述分布子集所确定的对数的最小值识别为所述熵。
14.一种计算机可读介质,包括:用于在密码系统中评估熵的指令,当由数据处理装置执行时,所述 指令操作与执行根据权利要求1至8中任意一项所述的方法。
【文档编号】H04L9/00GK103975373SQ201280059138
【公开日】2014年8月6日 申请日期:2012年9月26日 优先权日:2011年11月30日
【发明者】丹尼尔·理查德·L·布朗 申请人:塞尔蒂卡姆公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1