[发明专利]用于保护密码散列函数的执行的方法和系统有效
申请号: | 201180071355.4 | 申请日: | 2011-03-31 |
公开(公告)号: | CN103875001B | 公开(公告)日: | 2017-04-19 |
发明(设计)人: | J.埃梅特;P.A.埃森;J.缪尔;D.默多克 | 申请(专利权)人: | 爱迪德技术有限公司 |
主分类号: | G06F21/10 | 分类号: | G06F21/10;G06F21/60;H04L9/00;H04L9/06 |
代理公司: | 中国专利代理(香港)有限公司72001 | 代理人: | 蒋骏,胡莉莉 |
地址: | 荷兰霍*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 保护 密码 函数 执行 方法 系统 | ||
技术领域
本发明一般涉及数字密码。更特别地,本发明涉及在白盒攻击环境中保护密码散列函数的操作。
背景技术
密码散列函数用来产生数据的数字“指纹”,并且是许多密码系统的组件。这种散列函数采取任意长度的位串作为输入,并将它们映射到固定长度的位串作为输出。输入通常被称作消息,而其输出通常被称作摘要(digest)。
在散列函数与其它密码原语(例如,块密码)之间的重要区别在于散列函数没有密钥(即,它们是无密钥原语)。这意味着给定输入消息,任何人都可以计算其摘要。存在许多已经在公共可用标准中指定的密码散列函数。例如,2008年10月的安全散列标准(SHS)、FIPS PUB 180-3(美国商务部)指定了五个密码散列函数:SHA-1、SHA-224、SHA-256、SHA-384、SHA-512,通过引用将其内容整体并入本文中。给定到散列函数的输入,计算其输出是非常容易的。然而,安全的密码散列函数必须满足被称作抗预映像或“单向性(one-way-ness)”的数学性质,其意味着,给定输出,计算散列至该输出的输入是非常困难的。因此,散列函数具有重要的不对称性:它们容易估计,但难以反转。
密码散列函数的公知应用包括数字签名方案、消息认证编码、伪随机数生成、代码签名方案、基于口令的认证以及密钥推导函数。散列函数也用来在数字权利管理(“DRM”)方案中恢复内容密钥。这是用于开放移动联盟(“OMA”)DRM的情况,所述开放移动联盟(“OMA”)DRM被部署在诸如移动电话的便携式电子装置上。内容供应者通过使用被称作内容加密密钥的对称密钥对内容进行加密来在交付给最终用户之前在OMA DRM系统中保护他们的内容(例如,视频、歌曲、游戏等等)。如果用户发出请求以在他们的电话上播放受保护的内容,则该电话的DRM代理首先检查针对该内容发行的权利对象内指定的许可。假定请求是授权的,则DRM代理将接着完成用来从权利对象内的数据中恢复所要求的内容加密密钥的计算。然后,解密并播放该内容。在2008年11月6日的OMA DRM规范v.2.1的章节7.1.2中描述了由用来恢复内容加密密钥的DRM代理来完成的密码操作,通过引用将其内容整体并入本文中。该计算包括使用基于诸如SHA-1或SHA-256的散列函数的密钥推导函数。
恶意用户可能试图通过分析实现DRM代理的软件来提取内容密钥。特别是,在攻击者具有对执行环境和软件实现的完全控制(除非计算装置是物理上安全的)的白盒环境中,攻击者可访问代码、数据结构和执行环境。在这种环境中操作的攻击者可以通过进行存储器信息转储或通过在调试器中运行DRM代理来观察散列函数的输出。如果由DRM代理恢复的内容加密密钥被暴露了,则恶意攻击者可以访问它们,并且使用它们来脱机解密内容且将其从由权利对象强加的限制中释放出来(即,它们将能够规避DRM)。因此,重要的是,由DRM代理执行的密码操作是对用户隐藏的。
所以,可期望的是,在不泄露消息、摘要或者在它们两者之间的任何中间物的情况下提供消息的散列,使得散列操作自身是抗白盒攻击的。
发明内容
根据一方面,提供了一种在可以观察输入、输出和中间值的计算环境中保护诸如SHA-1、SHA-224、SHA-256、SHA-384、或者SHA-512的密码散列函数的执行的计算机实现的方法。该方法包括对输入消息进行编码以在变换后的域中提供编码输入消息。然后,应用变换后的密码散列函数以提供输出摘要。变换后的密码散列函数在变换后的域中实现密码散列函数。然后,对输出摘要进行编码以提供编码输出摘要。也提供了包含指令的非瞬态计算机可读介质,其当由处理器执行时使处理器执行所述方法。
根据实施例,可以以编码形式接收输入消息,并且可以根据内部编码对输入消息进行重新编码。可以用未编码的填充字节来填充编码输入消息以提供填充后的消息,并且可以划分填充后的消息以提供编码字和未编码的填充字的至少一个阵列。可以根据变换后的安全散列函数来处理每个阵列,使得包含输入消息的任何部分的中间值总被编码。初始状态变量和常数可以被初始化,并接着用在散列函数迭代中以提供更新后的状态变量。可以将输出编码应用于更新后的状态变量以提供编码状态变量,并且可以将编码状态变量级联以提供输出摘要。可以确定在变换后的域中的用在散列函数中的组件函数的映射,并将其用在每次散列函数迭代中。这些映射可以被存储在查找表中,并且可以用来扩充在每个阵列中的字的数量,并且用来提供状态变量的中间值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于爱迪德技术有限公司,未经爱迪德技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201180071355.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种日字型厚板组合钢柱
- 下一篇:适于形成绿化氧吧带且具有滴灌孔道的墙砖