CN103875001A - 用于保护密码散列函数的执行的方法和系统 - Google Patents

用于保护密码散列函数的执行的方法和系统 Download PDF

Info

Publication number
CN103875001A
CN103875001A CN201180071355.4A CN201180071355A CN103875001A CN 103875001 A CN103875001 A CN 103875001A CN 201180071355 A CN201180071355 A CN 201180071355A CN 103875001 A CN103875001 A CN 103875001A
Authority
CN
China
Prior art keywords
hash function
encoded
message
transformed
cryptographic hash
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.)
Granted
Application number
CN201180071355.4A
Other languages
English (en)
Other versions
CN103875001B (zh
Inventor
J.埃梅特
P.A.埃森
J.缪尔
D.默多克
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.)
Irdeto BV
Original Assignee
Irdeto BV
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 Irdeto BV filed Critical Irdeto BV
Publication of CN103875001A publication Critical patent/CN103875001A/zh
Application granted granted Critical
Publication of CN103875001B publication Critical patent/CN103875001B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Power Engineering (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

一种在能够观察输入、输出和中间值的计算环境中保护诸如SHA-256的密码散列函数的执行的计算机实现的方法。所述方法包含:对输入消息进行编码,使得散列函数输入被放置在变换后的域中,并接着应用变换后的密码散列函数以产生编码输出摘要;所述变换后的密码散列函数在所述变换后的域中实现所述密码散列函数。

Description

用于保护密码散列函数的执行的方法和系统
技术领域
本发明一般涉及数字密码。更特别地,本发明涉及在白盒攻击环境中保护密码散列函数的操作。
背景技术
密码散列函数用来产生数据的数字“指纹”,并且是许多密码系统的组件。这种散列函数采取任意长度的位串作为输入,并将它们映射到固定长度的位串作为输出。输入通常被称作消息,而其输出通常被称作摘要(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的密码散列函数的执行的计算机实现的方法。该方法包括对输入消息进行编码以在变换后的域中提供编码输入消息。然后,应用变换后的密码散列函数以提供输出摘要。变换后的密码散列函数在变换后的域中实现密码散列函数。然后,对输出摘要进行编码以提供编码输出摘要。也提供了包含指令的非瞬态计算机可读介质,其当由处理器执行时使处理器执行所述方法。
根据实施例,可以以编码形式接收输入消息,并且可以根据内部编码对输入消息进行重新编码。可以用未编码的填充字节来填充编码输入消息以提供填充后的消息,并且可以划分填充后的消息以提供编码字和未编码的填充字的至少一个阵列。可以根据变换后的安全散列函数来处理每个阵列,使得包含输入消息的任何部分的中间值总被编码。初始状态变量和常数可以被初始化,并接着用在散列函数迭代中以提供更新后的状态变量。可以将输出编码应用于更新后的状态变量以提供编码状态变量,并且可以将编码状态变量级联以提供输出摘要。可以确定在变换后的域中的用在散列函数中的组件函数的映射,并将其用在每次散列函数迭代中。这些映射可以被存储在查找表中,并且可以用来扩充在每个阵列中的字的数量,并且用来提供状态变量的中间值。
根据更进一步的方面,提供了一种通过使用密码散列函数来导出用于数字权利管理(DRM)内容的加密密钥的计算机实现的方法。该方法包括对输入消息进行编码以在变换后的域中提供编码输入消息。然后,应用变换后的密码散列函数以提供加密密钥,所述变换后的密码散列函数在变换后的域中实现密码散列函数,并且该加密密钥被编码。
附图说明
现在将参考附图仅通过举例来描述本发明的实施例。在所述附图中:
图1是描绘了SHA-256算法的常规实现的高级别概观的流程图。
图2是描绘了用于SHA-256算法的消息填充过程的流程图。
图3是描绘了用于SHA-256算法的消息块扩充过程的流程图。
图4是描绘了用于SHA-256算法的使用压缩算法的临时值的处理的流程图。
图5是示出了在变换后的和未变换的域中的加密和解密函数的通用化实现。
图6是根据实施例的用于保护密码散列函数的操作的系统的框图。
图7是根据实施例的SHA-256算法的安全实现的流程图。
图8是描绘了根据实施例的用于SHA-256算法的编码实现的填充过程的流程图。
图9是描绘了根据实施例的Wi阵列消息扩充的安全实现的流程图。
图10是描绘了根据实施例的用来处理Hi阵列的安全SHA-256实现的流程图。
具体实施方式
一般地,本发明提供了用于创建密码散列函数的安全软件实现的方法和系统,所述密码散列函数在白盒环境中抗攻击。如本文中使用的,白盒环境是攻击者对执行环境和软件实现具有完全控制的环境。换句话说,攻击者可访问代码、数据结构和执行环境。题目为“SYSTEM AND METHOD FOR OBSCURING BIT-WISE AND TWO'S COMPLEMENT INTEGER COMPUTATIONS IN SOFTWARE”的Johnson等人的美国专利No.7,397,916包含关于白盒攻击的背景信息,并且通过引用并入本文中。
本文中描述的安全的密码散列实现允许对散列计算的输入和输出进行编码。如本文中使用的,编码是可逆的函数(例如,从字节到字节,或者从字到字),其用来隐藏敏感数据。本公开内容描述了如何接受编码消息和产生编码摘要,而没有暴露存储器中的未编码的值(即,消息、摘要和中间值)。
本公开内容的实施例变换散列算法以在变换后的域中操作,并且以对变换后的输入起作用和/或以有效的方式产生变换后的输出而在任何时间不暴露受保护的资产,由此针对白盒攻击保护散列函数的操作。实施例在仍维持与原始散列算法的兼容性的同时完成这个。在该上下文中的兼容性意味着接收编码消息输入并产生未编码的输出摘要的安全实现将产生与接收未编码的消息输入的标准散列函数实现相同的结果。
常规散列算法
如在2008年10月的安全散列标准(SHS)、FIPS PUB 180-3(美国商务部)中描述的,示例密码散列函数是SHA-256算法。图1-4及其所附描述描述了SHA-256算法的常规实现。SHA-256算法仅作为示例提供,并且用来说明本发明。然而,本领域的普通技术人员将理解,本公开内容的实施例可以应用于任何密码散列函数。
图1示出了SHA-256算法的面向字节的散列实现的高级别概观。如将由本领域技术人员理解的,也可以支持面向位的实现。
首先将8个初始散列值Hi(在本文中也被称作状态变量)以及64个常数值Kj初始化为如在算法规范中定义的特定的常数值(步骤102, 104)。
然后,预处理输出消息M。根据图2中的算法首先填充消息(步骤106)。如图2中所示,将0x80字节附加至消息M的末端(步骤202)。然后,进一步地将0 x 00填充字节附加至消息M的末端,直至M的长度(以字节为单位)是56模64(56 modulo 64)(步骤204, 206)。然后,将以位为单位的M的原始长度附加至M作为64位的大端整数(即,8个字节)(步骤208)。因此,填充过程产生填充后的消息,其以字节为单位的长度是全等于0模64(congruent to 0 modulo 64)。再次参考图1,于是,将消息划分为64字节的块,其中,每个块被解释为16个32位大端字的阵列m(步骤108)。
如图3中详述的,在对中间值a,b,…h进行初始化(步骤110)之后,将每个阵列m扩充为64个32位字的阵列W(步骤112)。如图3所示,对于                                               
Figure DEST_PATH_IMAGE002
,元素Wi=Mi,并且对于
Figure DEST_PATH_IMAGE004
,元素
Figure DEST_PATH_IMAGE006
,其中,如所示的,根据“右旋”(ROTR)和“右移”(SHR)函数来定义
Figure DEST_PATH_IMAGE008
函数。
对于阵列W的每个元素,将8个散列值Hi复制为临时处理值(a至h),其如在图4的流程图中示出的那样被映射(步骤114),并且被反馈到8个中间摘要值Hi中(步骤116),直至填充后的消息M的所有块已经被处理(步骤118)。最终的散列摘要是在所有的消息块m已经被处理后通过级联最终的8个Hi值来形成的256位的值(步骤120)。
可以从上面的描述中推论标准SHA-256算法的当考虑如何针对白盒攻击保护实现时是重要的以下性质:
1. 输入消息必须是可访问的(可读取的),以便构建W阵列。
2. 如图3所示的W阵列的构建仅使用“移动”、“异或”(XOR)以及“加”操作。如被良好理解的,旋转操作可以用“移动”和XOR来实现。例如,32位字x的右旋n位可以通过x的右移n与x的左移(32-n)进行异或来完成。
3. W阵列中的前16个值正好是16个字m,其正好是当前正被处理的M的512个位。
4. 取决于消息M的长度,填充位存在于最终的消息块中,并且可以存在于倒数第二个的消息块中。这些填充位是已知的值。假定攻击者知道M的长度,并因此知道所有填充位以及填充开始的地方。
5. 在用图4中的方法处理第一消息块的同时,值H以及因此的a至h都是固定的,可以基于正被使用的算法预测的已知值。如图4所示,在构建T1中“未知”值(消息位或者从消息位导出的值)仅仅通过W阵列而混合。这些未知值以每轮两个的速率(在第一轮后的a和e、在第二轮后的a、e、b和f、等等)通过加上T1以及使值经过状态变量而前进来传播到状态变量中。仅在第一个消息块的第四轮后,所有状态值包含“未知”数据。随后的消息块从前面块的最后状态开始,并因此包含从开始的未知数据。
6. 图4的消息块处理、或者压缩算法仅使用移动、异或、与、非以及加操作。异或可以被表达为加和与的组合。
7. 在许多应用中,消息和摘要被作为字节的阵列对待,但SHA-2算法将它们作为32位或64位的字来进行内部操作。
编码函数
对密码加密和解密函数的安全软件实现的输入和/或输出由编码参数组成,所述编码参数在与安全软件实现对接的模块中的要求特定的自适应。图5示出了带有操作的应用,所述操作使用函数E将输入域ID映射到输出域OD。反向操作D将输出值映射回在输入域ID中的值。图表也示出了将输入域ID映射到编码输入域ID'的变换TA以及用来将编码输出域OD'中的值映射到输出域OD的变换TB。TA和TB是双向单射的。
连同密码函数E和D使用编码函数TA、TB暗示了通过应用变换函数TA将域ID'的变换后的数据元素输入到变换后的加密函数E',而不将输入域ID的数据元素输入到加密函数E以获得输出域OD的加密数据元素。变换后的加密函数E'在加密操作中组合反变换函数TA -1和/或TB -1以保护机密信息,诸如密钥。然后,获得域OD'的变换后的加密数据元素。类似地,D'解密OD'中的数据值,并将它们映射到ID'中的值。通过在安全实现中执行TA和/或TB,当在变换后的数据空间中分析输入数据和输出数据时不能够取回用于加密函数E和解密函数D的密钥。
变换函数TA、TB中的至少一个应当是非平凡函数(即,它应当不同于恒等函数)。如果TA是恒等函数,则输入域ID和ID'将是相同的域。如果TB是恒等函数,则输出域是相同的域。
在散列算法中的编码
在OMA DRM示例中,散列函数的输出用来恢复内容加密密钥。因此,在这种情况下,至少应当将编码应用于摘要。然而,仅对摘要进行编码不提供充分的保护。因为散列函数是未加密钥的,所以如果攻击者可以观察未编码的输入,则他们可以通过使用他们自己的在OMA规范中定义的散列函数实现来计算未编码的输出。所以,在实施例中,也对散列函数的输入进行编码。
在要求密码散列函数的受保护实现的大部分情况下,必须对输入消息进行编码。编码帮助使消息对于攻击者保持机密(即消息不能容易被读取),并且使攻击者难以以有意义的方式改变消息,由此提供消息完整性的形式。必须遍及至少一些散列算法来维持编码,使得攻击者难以从中间状态向后工作并计算可能的未编码的输入消息。
注意的是,从编码消息产生未编码的摘要不必然泄露未编码的消息。安全密码散列函数的单向函数性质意味着找到产生给定摘要的输入消息在计算上是不可行的。因此,应用使用带有未编码输出的散列函数的安全实现是可能的。然而,将编码应用于摘要帮助使它们对于白盒攻击者保持机密,并且使它们难以以有意义的方式变更。
如上面注意的,本公开内容的实施例使用SHA-256散列算法。以下的描述提供了如何创建抗白盒攻击的SHA-256的实施方式的示例。如本领域普通技术人员将理解的,可以在仅平凡的改变的情况下以类似的方式使用所描述的方法和系统来保护SHA-2族(SHA-224、SHA-384和SHA-512)的其它密码散列函数。此外,该方法和描述使本领域技术人员足以将相同的保护应用于诸如SHA-1、MD5及其祖先的其它密码散列函数。
抗白盒攻击是通过对散列算法的输入、输出和中间状态值进行编码的使用来完成的。消息(输入)和摘要(输出)可以独立地受保护,并且如果被编码,则消息或摘要不在实现中的任何点处以它们的原始的未编码的形式出现。算法的基础功能未被修改,意味着由受保护的实现产生的编码摘要与通过将相同的编码应用于由未受保护的实现产生的摘要来产生的摘要完全相同。
鲁棒散列
保护散列操作实质上涉及通过应用可逆的编码函数来变换散列函数的输入(消息)和/或输出(摘要)。该编码函数可以如与固定值的异或那么简单,或者可以是任意复杂函数。本公开内容的实施例改变散列算法以对变换后的输入起作用,和/或以在任何时间处在不暴露受保护的资产的情况下以有效的方式产生变换后的输出,同时仍维持与原始散列算法的兼容性(即,涉及变换后的消息输入和未编码的输出摘要的白盒实现的实施例将产生与具有相同消息的未编码形式的标准实现相同的散列)。本公开内容的实施例允许大小为8位和32位的变换(每次变换8位或32位,分别使用8位或32位的变换系数),以便允许更大的变换空间。用表查找操作来代替散列算法的部分,所述表查找操作在不暴露变换方案的细节的情况下提供从变换后的输入到变换后的输出的有效映射。
该公开内容的特定实施例假定消息和摘要都被变换。该配置提供了最大的安全。然而,以变弱的安全性质为代价可以使用未变换的消息或摘要。使用未变换的消息和未变换的摘要两者的配置是可能的,但是不被推荐,因为它给予有限的保护。所描述的实施例假定8位变换用于消息和摘要两者,然而,如下面讨论的,进一步的实施例支持32位变换。
图6是用于保护密码散列函数的操作的系统的高级别框图。于是,相对于图7-10描述了根据本公开内容的一个实施例描述的SHA-256算法的受保护实现。不使用输入或输出的编码的实施例容易通过将TM或Td设置为恒等变换(注意的是,TM和Td分别是消息输入编码和摘要输出编码)来从上面导出。这仅影响从TM到TIM以及从TH到Td的映射。然而,这些实例是较不安全的,因为已知的值将用中间变换来进行编码,其可能允许攻击者攻击该变换并恢复编码资产。
如图6所示,根据编码函数TM编码的输入消息M对输入编码函数TIM 602重新编码。然后,根据填充函数604填充在IM域中所得的编码消息TIM(M)至如由密码散列函数确定的长度。例如,对于SHA-256,填充后的TIM编码的输入消息的长度是0模64(0 mod 64)字节。如在下面更详细讨论的,填充字节是未编码的,除了根据一个实施例将消息长度上调至多个4字节所需的初始填充字节,所述填充字节是在TIM域中进行编码的。该实施例提供附加的安全,因为它确保未编码的填充字节不与消息字节一起被包括在相同的字边界内。这确保了消息字节可以在不担心字的部分被编码且其它部分未被编码的情况下均一地被划分为字。然而,如本领域普通技术人员将理解的,如果所有填充字节都是未编码的,本公开内容的实施例将运行。
然后,预先处理填充后的TIM编码的消息,以由分块或划分函数606将其划分为预先确定的长度的字的块。例如,在SHA-256的受保护实现中,首先将填充后的TIM编码的输入消息划分为64字节的“组块”,并随后将每个组块划分为16位、32位字的块,导致16字的编码阵列TIM(m)。
然后,通过在TIM域中应用变换后的函数来处理每个TIM(m)阵列。对于变换后的SHA-2散列函数,如所示的,在TIM域608中根据扩充函数首先处理给定的TIM(m)阵列,以提供编码阵列TW(W)。例如,对于SHA-256,扩充函数导致由64个32位字组成的编码TW(W)阵列。然后,在TW域610中由压缩函数压缩该扩充后的阵列,导致编码中间值TW(a,b,…h)。一旦消息的所有的组块都已经被处理,最终中间值通过使用编码函数T612可选地进行编码,以提供编码输出散列值TW(H0,H1,…,H7)。然后,由级联函数614级联这些输出散列值以生成原始输入消息M的编码输出摘要Td(D)。
现在将参考变换后的实现SHA-256,并且如图7-10所示的,更详细地描述本方法的操作。如图7所示,将状态变量H0至H7初始化为如由散列函数标准指定的值(步骤702)。也将64个K0…K63值初始化为如在散列算法规范中定义的它们的常数值(步骤704)。这些变量最初是未编码的,帮助确保攻击者不能使用已知的预定义的值来攻击对H0至H7的变换。
通过使用编码方案TM来以编码格式将消息数据输入到算法。该变换可以是面向字节或面向字的。TM是在散列实现与使用受保护的散列函数的模块之间进行编码的“接口”。TM编码可以对应用是唯一的,或者可以对用于应用内的散列算法的使用的实例是唯一的。在一些实施例中,将外部变换TM转换为内部的任意选择的8位变换TIM。TM编码的字节/字用TIM编码重新进行编码(例如,x' = TIM(T-1 M(x)))。根据优选的实施例,重新编码优选地被完成为组合的操作,而非在解码之后编码;以这种方式,编码方案不被暴露。如下所述,TIM变换对于在不暴露变换TM的情况下处理填充字节是有用的。然后填充消息M(步骤706)以产生填充后的编码消息。
填充方法在图8中示出。一般地,以未编码形式添加填充字节,以减小已知的填充字节可以用来攻击对消息的变换TIM的危险。为了简化将消息字节划分成消息字,优选地在32位字边界处执行从编码形式到未编码形式的转变。如果编码消息M的长度是0模4(0 mod 4),则将未编码的0x80字节以及零或更多的未编码的0x00字节附加至消息的末端,直至填充后的消息的长度是56模64(56 mod 64)(步骤802、804)。如果编码消息M的长度不是0模4(0 mod 4),则将TIM编码的0x80字节以及零至两个TIM编码的0x00字节附加至编码消息M的末端,直至它的长度是0模4(0 mod 4)(步骤806、808),在这之后,在其长度是56模64(56 mod 64)之前,将未编码的0x00字节附加至消息的末端,直到至填充后的消息的末端(步骤804)。这些TIM编码的0x80和0x00值可以进行预计算,而非在运行时间处确定。优选地选择TIM变换,使得暴露值0x80和0x00不需要暴露其它值。然后,将消息M(以位为单位)的原始长度附加至填充后的消息,作为64位整数(步骤810)。注意的是,因为该长度字段总是8字节长且以512位的组块结束,所以它将总是字对准的。注意的是,这是适合于应用的简化实现,其中,所有消息具有全等于0模8(0 mod 8)的以位为单位的长度(即,它们是面向字节的,而非面向位的)。将该方案扩展至面向位的消息可以通过附加编码值来平凡地完成,以(在可能的更多的TIM被暴露的安全暗示的情况下)覆盖包含初始“1”个填充位的字节的剩下可能值。然而,用于散列算法的各种各样的应用不要求逐位散列。
返回到图7,填充过程产生填充后的消息,其以字节为单位的长度等同于0模64(0 mod 64)。TIM编码的消息字节由此被划分为64字节的组块(步骤708)。每个组块中的字节进一步被划分为32位的大端字,以形成阵列m的16个字。在将中间值a, b…h初始化为H0…H7的当前值(步骤710)之后,通过使用在图9中示出的消息扩充函数来构建阵列W(步骤712)。
如图9所示,首先确定并存储阵列W的首先的16个元素(对于0≤i≤15的Wi)。在处理中,消息字节在一些点处将转变为未编码填充字节。以未编码形式将未编码填充字节存储在W阵列中。注意的是,如上面图8中概括的填充过程确保从编码消息字节到未编码消息字节的转变可以仅发生在字边界上。所以,每个消息字mi由四个编码字节或由四个未编码字节组成,但绝不是编码字节和未编码字节的组合。如果mi是未编码的(即,如果mi仅由填充字节组成),则W= mi(步骤902)。
如果mi被编码,则 Wi = TW(T-1 IM(mi))。根据优选的实施例,重新编码优选地被完成为组合的操作,而非在解码之后编码;以这种方式,编码方案不被暴露(步骤902)。TW是字节到字函数。
阵列W的这些初始16个字转而被扩充为64个32位编码字的阵列W。W阵列的这些剩下的元素通过查找表LS0、LS1、SLS0和SLS1来计算。如将由本领域普通技术人员理解的,SHA-256算法使用六个逻辑函数,其中,每个函数对32位字进行操作,所述32位字被表示为x、y和z。该函数如下:
Figure DEST_PATH_IMAGE010
其中,是“右旋”或“圆形右移”操作。如果x是w位未签名的字且n是在
Figure DEST_PATH_IMAGE014
情况下的整数,则
Figure DEST_PATH_IMAGE016
由以下给出:
Figure DEST_PATH_IMAGE018
类似地,是由以下给出的“右移”操作:
这些函数中的每个的结果是新的32位字。
根据本公开内容的实施例,查找表用来实现在TIM变换后的域中的函数
Figure DEST_PATH_IMAGE026
Figure 275112DEST_PATH_IMAGE024
Figure 254570DEST_PATH_IMAGE026
函数对32位字进行操作。然而,将32位字映射到32位字的查找表是非常大的,并且因此可期望的是,以某种方式利用更小的查找表。这可以通过注意
Figure DEST_PATH_IMAGE028
函数两者都是线性的来实现。如果我们将字输入x表达为字节b0b1b2b3的序列,则根据
Figure 34307DEST_PATH_IMAGE028
函数的线性度,我们可以导出以下等式:
Figure DEST_PATH_IMAGE030
这示出了在其它字节设置为零的情况下
Figure 928051DEST_PATH_IMAGE028
函数可以应用于输入的每个个别字节。四个函数应用的结果(每个字节bi一个)可以被一起异或以获得如将
Figure 742423DEST_PATH_IMAGE028
函数应用于字x的相同的结果。
为了实现
Figure 627203DEST_PATH_IMAGE028
操作,首先经由字到字节重新编码函数将TW编码字重新编码为任意逐字节变换
Figure DEST_PATH_IMAGE032
。查找表LS0和LS1(每个的四个,分别对应于函数和函数)均将
Figure DEST_PATH_IMAGE034
编码字节映射到将函数的应用表示为在字的四个位置的每个中的特别的字节的TW编码字。通过使用编码XOR操作来将这些四个部分结果字相组合以形成完整的字s0和s1(步骤906、908)。所以,LS0和LS1表中的每个具有4个表,每个表带有用于所有可能的输入字节的256个条目,并且每个条目包含4个字节,以获得整个大小为4096字节的输出字。
SLS0和SLS1表(也分别对应于
Figure 942330DEST_PATH_IMAGE024
Figure 696659DEST_PATH_IMAGE026
函数)将未编码的字节映射到TW编码的、移动的且旋转的字。SLSn表用来执行对消息中的未编码填充字的
Figure 495988DEST_PATH_IMAGE028
操作(步骤910、912)。当Wi-2或Wi-15字是未编码填充字时,使用这些表。它们在结构上类似于LS表,除了输入是未编码的。SLS和LS表使用不同的输出编码方案。用于SLS和LS表的不同的输出编码使得确定输入TW编码更困难。例如,如果SLS和LS表产生相同的编码且我们具有未编码字x和编码字y,其中SLS(x) = LS(y),则TW(y) = y,该信息可以用来攻击变换TW
由编码加函数
Figure DEST_PATH_IMAGE036
来计算最终的Wi值(步骤914)。s0和s1总是TW编码的,而Wi-16和Wi-7值可以是编码填充字或未编码填充字。不同的编码加函数可以用来处理不同的编码情况。
执行图10中所示的压缩函数,以完成数据的单个组块的散列。对于M中的每个mi,将当前散列值H复制到临时处理值(a至h)中,其如图10中所示的被映射。所有操作(加、与、异或以及非)对编码值或者一个编码值和一个未编码值起作用,产生编码值。如果Wi是填充字(这可以仅对是真),则Wi值可以是未编码值。USn表类似于上面的LSn表。它们是
Figure DEST_PATH_IMAGE040
操作的表实现,并且以与操作相同的方式在字的组分字节上被分解为
Figure 636168DEST_PATH_IMAGE040
函数的四个子应用。在消息扩充步骤中不存在对应于SLS表的SUS表,因为算法中的a和e值总是编码值。一旦64个Wi值中的每个已经被处理,通过使用产生对H值上的变换TH的编码加,分别将a至h的值加至H0至H7的现有值(步骤1002)。
可以专门地对待真正第一个消息组块的前四轮,以便更好地保护在Hn和a…h值上的编码方案。可以为每个字Hn,内部变换TH被转换为外部摘要变换Td,并且被级联在一起以形成输出摘要。在消息的初始的512位的前四轮中,状态变量a至h的一些或全部保持由算法固定的值。这允许使用上面的用于消息的第一个组块的前四轮的“专门情况”:
1. 在第一轮中,仅值T1保持未知值。T1通过预计算的常数值和W0的加来计算。因此在第一轮的末端,除了e和a以外的所有变量保持已知的固定值,且不应当被编码。
2. 在第二轮中,T1和T2都包含未知值,并且b、c、d、f、g和h都是已知的固定值。
3. 在第三轮中,c、d、g和h是已知的固定值。
4. 在第四轮中,仅d和h是已知的固定值。
5. 在第一个组块的所有剩下轮中,以及在所有后来的组块中,所有8个中间状态值与消息位混合,并被认为“未知”。
通过使用这些专门的情况,可以最初将所有8个状态变量考虑为“未编码的”且用原始的未编码H值来进行初始化的。在第一个消息组块的前四轮中的每个中,两个状态变量从“未编码”转变到“已编码”,因为数据通过T1的编码加混合到a和e值中。每个后来的轮当在操作中使用变量时考虑将对这些变量的值进行编码。这有助于确保攻击者不能在前四轮中预测状态变量的内容,并且使用此来攻击对状态变量上的变换。为了最好的保护,编码消息M应当具有至少四个字的数据,以确保在每个步骤中将编码数据混合到T1中。因为极其短的消息可以容易被强力破解,所以短消息的这种弱点经常是不显著的。
本实施方式的主要目标是防止攻击者通过观察算法的输入、输出和中间内部状态来确定未编码消息或摘要。在输入消息和摘要都进行了编码的情况下,可以观察实施方式的以下性质:
1. W阵列中的所有字是编码消息字、由被一个或多个编码填充字节跟随的一个或多个编码消息字节组成的字、或者是未编码填充字。W中没有字包含未编码消息字节。
2. 除了值0x80和0x00以外没有填充字节被编码,所述值0x80和0x00用TIM进行编码。该变换不同于外部消息变换TM且应当被这样选择,使得暴露两个已知值不容易允许攻击者确定其它值。例如,将任意字节映射到任意字节(例如,256字节查找表)的函数具有该性质。仅仅用于0x80和0x00的映射需要在该“表”中被暴露,全部映射是不要求的。
3. 从编码填充数据导出的任何TW编码W字涉及编码消息数据的至少一个字节。
4.将W字作为输入的所有操作输出编码数据。
5. 计算状态变量a至h的所有操作涉及未编码输入(在这种情况下,它们保持未编码),或者涉及至少一个编码输入(在这种情况下,输出被编码)。
6. 在第一个消息组块的第四轮之后,所有的状态变量a,…h被编码。
7. 在处理第一个消息组块之后,值H0至H7都被编码。
8. 没有已知的值(用于H0至H7的初始值,K值)用与用来保持未知数据的相同的编码来进行编码。
9. 涉及未编码填充数据的
Figure DEST_PATH_IMAGE042
操作的输出(SLS表)和用于编码数据的
Figure 963548DEST_PATH_IMAGE042
操作的输出(LS表)使用不同的编码。使用这些值的加操作是不同的。
由于上面内容,在消息扩充期间或者在散列处理期间,绝不会泄露输入消息字节。它们用绝不用来对诸如算法常数或填充值的已知的固定数据进行编码的编码方案来进行编码。这确保了消息值绝不以未编码形式暴露,并且也挫败了该已知的明文类型的攻击,因为所有填充和固定值是未编码的或者不同于消息和状态数据而被编码。本公开内容的特定实施例可以采用附加的保护特征。例如,可以将控制流变换应用于算法以进一步混淆算法。
用来将填充字节作为未编码值处理的方法可以被扩展为允许未编码地传递消息M的任意部分。从安全的角度,保持填充值未编码是可期望的,因为它防止对消息变换的一些已知的明文类型攻击。对于涉及具有诸如结构化文档或格式化数据的部分已知(或容易猜到)的值的消息的应用,可期望的是,允许仅仅敏感的消息的部分被编码,并且允许消息数据的剩下部分不编码。其的示例是计算以已知的或容易猜到的格式嵌入在数据结构内部的密钥(例如,ASN1编码RSA密钥)的散列。上面的方案容易扩展到在任何字边界处允许在编码值与未编码值之间的转变,并且适当的元数据被维持以指示转变出现在流内的何处。填充机构在诸如消息认证编码(MAC)的加密钥的密码散列函数中也可以是有用的。
在前面的描述中,为了解释的目的,叙述了许多细节,以便提供对实施例的透彻理解。然而,对本领域技术人员而言,明显的将是,不要求这些具体细节。在其它实例中,以框图形式示出公知的电结构和电路,以便不使理解模糊。例如,不提供关于本文中描述的实施例是被实现为软件例程、硬件电路、固件还是其组合的具体细节。
本公开内容的实施例可以被表示为存储在机器可读媒介或介质(也被称作计算机可读介质、处理器可读介质、或其中体现有计算机可读程序代码的计算机可使用介质)上的计算机程序产品。机器可读介质可以是任何适当的有形非瞬态介质,包括磁、光、或电存储介质,所述存储介质包括磁盘、只读存储器光盘(CD-ROM)、存储器装置(易失性或非易失性)、或者类似的存储机构。机器可读介质可以包含各种指令集、代码序列、配置信息、或者其它数据,其当被执行时使处理器执行根据本公开内容的实施例的方法中的步骤。本领域技术人员将理解,实现所描述的实施方式所必需的其它指令和操作也可以被存储在机器可读介质上。存储在机器可读介质上的指令可以由处理器或其它适当的处理装置来执行,并且可以与电路对接以执行所描述的任务。
本发明的上述实施例仅意在成为示例。在不脱离单独由随附于此的权利要求限定的本发明的范围的情况下,可以由本领域技术人员对特别的实施例实现替换、修改和变化。

Claims (25)

1. 一种在能够观察输入、输出和中间值的计算环境中保护密码散列函数的执行的计算机实现的方法,所述方法包括:
对输入消息进行编码以在变换后的域中提供编码输入消息;以及
应用变换后的密码散列函数以提供输出摘要,所述变换后的密码散列函数在所述变换后的域中实现所述密码散列函数。
2. 权利要求1所述的方法,进一步包括:
对所述输出摘要进行编码以提供编码输出摘要。
3. 权利要求1或权利要求2所述的方法,其中,以编码形式接收所述输入消息,以及对所述输入消息进行编码包括根据内部编码对所述输入消息进行重新编码。
4. 权利要求1至3中的任意一项所述的方法,其中,所述密码散列函数是SHA-1、SHA-224、SHA-256、SHA-384、或者SHA-512。
5. 权利要求4中的任意一项所述的方法,进一步包括:
用未编码的填充字节来填充所述编码输入消息以提供填充后的消息。
6. 权利要求5所述的方法,进一步包括:
划分所述填充后的消息以提供编码字和未编码的填充字的至少一个阵列。
7. 权利要求6所述的方法,其中,应用所述变换后的密码散列函数包括:
根据所述变换后的安全散列函数来处理所述至少一个阵列中的每个,使得包含所述输入消息的任何部分的中间值总被编码。
8. 权利要求7所述的方法,其中,处理所述至少一个阵列中的每个包括:
对将用在散列函数迭代中的初始状态变量和常数进行初始化;
对所述至少一个阵列中的每个执行散列函数迭代以提供更新后的状态变量;
将输出编码应用于所述更新后的状态变量以提供编码状态变量;以及
将所述编码状态变量级联以提供所述输出摘要。
9. 权利要求8所述的方法,其中,对所述至少一个阵列中的每个执行散列函数迭代包括:
在所述变换后的域中确定用在所述散列函数中的组件函数的映射。
10. 权利要求9所述的方法,其中,所述映射被存储在查找表中。
11. 权利要求9或权利要求10所述的方法,其中,所述映射用来扩充在所述至少一个阵列中的字的数量。
12. 权利要求9-11中的任意一项所述的方法,其中,所述映射用来提供所述状态变量的中间值。
13. 一种包含指令的非瞬态计算机可读介质,其当由处理器执行时使所述处理器执行在能够观察输入、输出和中间值的计算环境中保护密码散列函数的执行的方法,所述方法包括:
对输入消息进行编码以在变换后的域中提供编码输入消息;以及
应用变换后的密码散列函数以提供输出摘要,所述变换后的密码散列函数在所述变换后的域中实现所述密码散列函数。
14. 权利要求13所述的计算机可读介质,进一步包括:
对所述输出摘要进行编码以提供编码输出摘要。
15. 权利要求13或权利要求14所述的计算机可读介质,其中,以编码形式接收所述输入消息,以及对所述输入消息进行编码包括根据内部编码对所述输入消息进行重新编码。
16. 权利要求13至15中的任意一项所述的计算机可读介质,其中,所述密码散列函数是SHA-1、SHA-224、SHA-256、SHA-384、或者SHA-512。
17. 权利要求13至16中的任意一项所述的计算机可读介质,进一步包括:
用未编码的填充字节来填充所述编码输入消息以提供填充后的消息。
18. 权利要求17所述的计算机可读介质,进一步包括:
划分所述填充后的消息以提供编码字和未编码的填充字的至少一个阵列。
19. 权利要求18所述的计算机可读介质,其中,应用所述变换后的密码散列函数包括:
根据所述变换后的安全散列函数来处理所述至少一个阵列中的每个,使得包含所述输入消息的任何部分的中间值总被编码。
20. 权利要求19所述的计算机可读介质,其中,处理所述至少一个阵列中的每个包括:
对将用在散列函数迭代中的初始状态变量和常数进行初始化;
对所述至少一个阵列中的每个执行散列函数迭代以提供更新后的状态变量;
将输出编码应用于所述更新后的状态变量以提供编码状态变量;以及
将所述编码状态变量级联以提供所述输出摘要。
21. 权利要求20所述的计算机可读介质,其中,对所述至少一个阵列中的每个执行散列函数迭代包括:
在所述变换后的域中确定用在所述散列函数中的组件函数的映射。
22. 权利要求21所述的计算机可读介质,其中,所述映射被存储在查找表中。
23. 权利要求21或权利要求22所述的计算机可读介质,其中,所述映射用来扩充在所述至少一个阵列中的字的数量。
24. 权利要求21-23中的任意一项所述的计算机可读介质,其中,所述映射用来提供所述状态变量的中间值。
25. 一种通过使用密码散列函数来导出用于数字权利管理(DRM)内容的加密密钥的计算机实现的方法,所述方法包括:
对输入消息进行编码以在变换后的域中提供编码输入消息;
应用变换后的密码散列函数以提供所述加密密钥,所述变换后的密码散列函数在所述变换后的域中实现所述密码散列函数;以及
对加密密钥进行编码。
CN201180071355.4A 2011-03-31 2011-03-31 用于保护密码散列函数的执行的方法和系统 Active CN103875001B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CA2011/050172 WO2012129638A2 (en) 2011-03-31 2011-03-31 Method and system for protecting execution of cryptographic hash functions

Publications (2)

Publication Number Publication Date
CN103875001A true CN103875001A (zh) 2014-06-18
CN103875001B CN103875001B (zh) 2017-04-19

Family

ID=46931991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180071355.4A Active CN103875001B (zh) 2011-03-31 2011-03-31 用于保护密码散列函数的执行的方法和系统

Country Status (9)

Country Link
US (1) US9443091B2 (zh)
EP (1) EP2691906B1 (zh)
JP (1) JP5930235B2 (zh)
KR (1) KR20140051163A (zh)
CN (1) CN103875001B (zh)
AU (1) AU2011363942B2 (zh)
CA (1) CA2831367C (zh)
WO (1) WO2012129638A2 (zh)
ZA (1) ZA201307366B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107273724A (zh) * 2016-03-30 2017-10-20 恩智浦有限公司 为白盒实施方案的输入和输出加水印
TWI672633B (zh) * 2017-06-23 2019-09-21 中國商上海兆芯集成電路有限公司 實施安全雜湊演算法之處理器以及數位訊號處理方法
CN110943841A (zh) * 2018-09-24 2020-03-31 恩智浦有限公司 使用白盒加密的口令认证
CN111382464A (zh) * 2016-01-15 2020-07-07 布洛克钱恩阿西克斯公司 包括电路编码变换函数的加密asic

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104322002B (zh) * 2012-03-20 2018-03-30 爱迪德技术有限公司 更新秘钥信息
US9673983B2 (en) 2012-09-14 2017-06-06 Qualcomm Incorporated Apparatus and method for protecting message data
FR2998434B1 (fr) * 2012-11-21 2015-11-06 Oberthur Technologies Procede de traitement cryptographique comprenant une utilisation d'une fonction booleenne adjointe, produit programme d'ordinateur et dispositif correspondants
US9262639B2 (en) * 2013-01-09 2016-02-16 Cisco Technology Inc. Plaintext injection attack protection
US9519805B2 (en) * 2013-08-01 2016-12-13 Cellco Partnership Digest obfuscation for data cryptography
US9313021B2 (en) * 2013-08-29 2016-04-12 National Chiao Tung University Secret communication method with self-authentication capability
US9641337B2 (en) * 2014-04-28 2017-05-02 Nxp B.V. Interface compatible approach for gluing white-box implementation to surrounding program
US9665699B2 (en) * 2015-03-13 2017-05-30 Nxp B.V. Implementing padding in a white-box implementation
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.
US10171234B2 (en) * 2015-12-16 2019-01-01 Nxp B.V. Wide encoding of intermediate values within a white-box implementation
US9614668B1 (en) * 2016-09-14 2017-04-04 ISARA Corporation Conversion schemes for cryptography systems
US10348506B2 (en) * 2016-09-30 2019-07-09 International Business Machines Corporation Determination of state of padding operation
US9800403B1 (en) * 2016-09-30 2017-10-24 International Business Machines Corporation Message processing using extended output functions
US9853810B1 (en) 2016-09-30 2017-12-26 International Business Machines Corporation Message padding for bit-oriented and bit-reversed input messages
US10567159B2 (en) * 2017-06-07 2020-02-18 Nxp B.V. CMAC computation using white-box implementations with external encodings
US10404458B1 (en) 2017-11-17 2019-09-03 ISARA Corporation Multi-round key encapsulation process
US10598778B2 (en) * 2017-11-29 2020-03-24 National Chung Shan Institute Of Science And Technology Phase controller and phase controlling method for antenna array, and communication apparatus using the same
US10061636B1 (en) 2017-12-22 2018-08-28 ISARA Corporation Conversion schemes for public key cryptosystems
US10031795B1 (en) 2017-12-22 2018-07-24 ISARA Corporation Using conversion schemes in public key cryptosystems
EP3506558A1 (en) * 2017-12-28 2019-07-03 Koninklijke Philips N.V. Whitebox computation of keyed message authentication codes
US20210036864A1 (en) * 2018-03-29 2021-02-04 Agency For Science, Technology And Research Method and system for generating a keccak message authentication code (kmac) based on white-box implementation
US10606888B2 (en) * 2018-06-05 2020-03-31 Eight Plus Ventures, LLC Image inventory production
US11101979B2 (en) 2019-05-30 2021-08-24 Kira Inc. Method and system for creating word-level differential privacy using feature hashing techniques
WO2021025631A1 (en) * 2019-08-05 2021-02-11 Securify Bilisim Teknolojileri Ve Guvenligi Egt. Dan. San. Ve Tic. Ltd. Sti. A method for generating digital signatures
US11799857B2 (en) * 2021-08-31 2023-10-24 Cisco Technology, Inc. Software posture for zero trust access
US11777708B2 (en) 2021-09-30 2023-10-03 International Business Machines Corporation Secure encryption of partial blocks
US20230259618A1 (en) * 2022-02-16 2023-08-17 Nxp B.V. Method and device for detecting a profiling attack

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010046307A1 (en) * 1998-04-30 2001-11-29 Hewlett-Packard Company Method and apparatus for digital watermarking of images
US20030105718A1 (en) * 1998-08-13 2003-06-05 Marco M. Hurtado Secure electronic content distribution on cds and dvds
US20080028474A1 (en) * 1999-07-29 2008-01-31 Intertrust Technologies Corp. Systems and Methods for Watermarking Software and Other Media
CN101431403A (zh) * 2007-11-08 2009-05-13 北京工业大学 一种提供接口数据的装置与方法以及一种可信计算系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171350A (ja) 1996-12-10 1998-06-26 Hitachi Ltd ハッシュ値生成方法および装置
US7239702B1 (en) 1999-08-20 2007-07-03 Sony Corporation Information recording/reproducing device
WO2008059420A2 (en) 2006-11-17 2008-05-22 Koninklijke Philips Electronics N.V. Cryptographic method for a white-box implementation
US8085932B2 (en) 2008-05-09 2011-12-27 Apple Inc. Secure distribution of data or content using keyless transformation
EP2406916A1 (en) * 2009-03-10 2012-01-18 Irdeto Corporate B.V. White-box cryptographic system with input dependent encodings
JP5646612B2 (ja) 2009-06-19 2014-12-24 イルデト・コーポレート・ビー・ヴイ 中間データ変更を使用する構成可能な鍵を用いるホワイトボックス暗号システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010046307A1 (en) * 1998-04-30 2001-11-29 Hewlett-Packard Company Method and apparatus for digital watermarking of images
US20030105718A1 (en) * 1998-08-13 2003-06-05 Marco M. Hurtado Secure electronic content distribution on cds and dvds
US20080028474A1 (en) * 1999-07-29 2008-01-31 Intertrust Technologies Corp. Systems and Methods for Watermarking Software and Other Media
CN101431403A (zh) * 2007-11-08 2009-05-13 北京工业大学 一种提供接口数据的装置与方法以及一种可信计算系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CITA FURLANI: "Secure Hash Standard (SHS)", 《HTTP://CSRC.NIST.GOV/PUBLICATIONS/PUBSFIPS.HTML#FIPS180-4》 *
RYAN GLABB, LAURENT IMBERT: "Multi-mode Operator for SHA-2 Hash Functions", 《HTTPS://HAL-LIRMM.CCSD.CNRS.FR/LIRMM-00125521》 *
SHAI HALEVI,HUGO KRAWCZYK: "Strengthening Digital Signatures via", 《ANNUAL INTERNATIONAL CRYPTOLOGY CONFERENCE-CRYPTO 2006:ADCANCES IN CRYPTOLOGY》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111382464A (zh) * 2016-01-15 2020-07-07 布洛克钱恩阿西克斯公司 包括电路编码变换函数的加密asic
CN111382464B (zh) * 2016-01-15 2023-12-12 布洛克钱恩阿西克斯公司 包括电路编码变换函数的加密asic
CN107273724A (zh) * 2016-03-30 2017-10-20 恩智浦有限公司 为白盒实施方案的输入和输出加水印
CN107273724B (zh) * 2016-03-30 2023-05-16 恩智浦有限公司 为白盒实施方案的输入和输出加水印
TWI672633B (zh) * 2017-06-23 2019-09-21 中國商上海兆芯集成電路有限公司 實施安全雜湊演算法之處理器以及數位訊號處理方法
CN110943841A (zh) * 2018-09-24 2020-03-31 恩智浦有限公司 使用白盒加密的口令认证

Also Published As

Publication number Publication date
US20140019771A1 (en) 2014-01-16
US9443091B2 (en) 2016-09-13
ZA201307366B (en) 2014-09-25
CN103875001B (zh) 2017-04-19
JP2014509755A (ja) 2014-04-21
WO2012129638A2 (en) 2012-10-04
CA2831367A1 (en) 2012-10-04
CA2831367C (en) 2019-02-12
WO2012129638A3 (en) 2012-12-06
EP2691906A4 (en) 2014-08-27
EP2691906B1 (en) 2018-12-26
EP2691906A2 (en) 2014-02-05
KR20140051163A (ko) 2014-04-30
JP5930235B2 (ja) 2016-06-08
AU2011363942B2 (en) 2017-02-09
AU2011363942A1 (en) 2013-10-24

Similar Documents

Publication Publication Date Title
CN103875001B (zh) 用于保护密码散列函数的执行的方法和系统
CN106888080B (zh) 保护白盒feistel网络实施方案以防错误攻击
US9838198B2 (en) Splitting S-boxes in a white-box implementation to resist attacks
CN106953723B (zh) 防止dfa攻击的拆分和合并方法
US20080084996A1 (en) Authenticated encryption method and apparatus
EP3035585B1 (en) S-box selection in white-box cryptographic implementation
CN106888081B (zh) 白盒实施方案内中间值的宽编码
US9602273B2 (en) Implementing key scheduling for white-box DES implementation
US9569639B2 (en) Remapping constant points in a white-box implementation
US9380033B2 (en) Implementing use-dependent security settings in a single white-box implementation
CN107273724B (zh) 为白盒实施方案的输入和输出加水印
US9485226B2 (en) Method for including an implicit integrity or authenticity check into a white-box implementation
CN105978680B (zh) 一种加密钥的加密运算方法
CN105721134B (zh) 使用带有多个外部编码的单个白盒实现
EP2960891B1 (en) Method for introducing dependence of white-box implementationon a set of strings
US10412054B2 (en) Method for introducing dependence of white-box implementation on a set of strings
US9338145B2 (en) Security patch without changing the key
EP2940925B1 (en) Implementing use-dependent security settings in a single white-box implementation
EP2940920B1 (en) Security patch without changing the key
JP5293612B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法およびプログラム
Chavan Cloud Data Security Improvement Using Cryptographic Steganography by Truly Random and Cryptographically Secure Random Number

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: Holland Hoofddorp

Applicant after: Ai Dide Technology Co., Ltd.

Address before: Holland Hoofddorp

Applicant before: Irdeto B.V.

COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM:

Free format text: CORRECT: APPLICANT; FROM: IRDETO B.V. TO: IRDETO B. V.

GR01 Patent grant
GR01 Patent grant