CN104919750B - 计算关于函数‑输入值的数据函数的计算设备和方法 - Google Patents

计算关于函数‑输入值的数据函数的计算设备和方法 Download PDF

Info

Publication number
CN104919750B
CN104919750B CN201380066929.8A CN201380066929A CN104919750B CN 104919750 B CN104919750 B CN 104919750B CN 201380066929 A CN201380066929 A CN 201380066929A CN 104919750 B CN104919750 B CN 104919750B
Authority
CN
China
Prior art keywords
network
function
tables
input
output
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.)
Active
Application number
CN201380066929.8A
Other languages
English (en)
Other versions
CN104919750A (zh
Inventor
L.M.G.M.托休伊泽恩
P.M.H.M.A.戈里斯森
A.A.M.L.布鲁伊克斯
M.邓
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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN104919750A publication Critical patent/CN104919750A/zh
Application granted granted Critical
Publication of CN104919750B publication Critical patent/CN104919750B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for 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/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • 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

Abstract

一种被配置成计算关于函数‑输入值(w)的数据函数(f)的计算设备,所述设备包括存储被配置用于所述数据函数(f)的第一表格网络的电子存储装置,所述计算设备包括耦合至所述存储装置并且被配置成获取用于所述第一表格网络的多个第一表格输入的电子处理器,所述多个第一表格输入 (x=E(w,s))包括所述函数‑输入值(w),并且所述电子处理器被配置成通过向所述多个第一表格输入(x)应用所述第一表格网络以产生多个第一表格输出 (u=E(f(w),g(w,s))来计算所述数据函数(f),所述多个第一表格输出(u)包括函数‑输出值(f(w)),所述函数‑输出值(f(w))对应于向所述函数‑输入值(w)应用所述数据函数(f)的结果,所述电子存储装置还存储第二表格网络,所述第二表格网络被配置成与所述第一表格网络合作以反击针对所述第一表格网络做出的修改,所述电子处理器被配置成获取用于所述第二表格网络的多个第二表格输入,所述第二表格输入包括所述多个第一表格输出(u)和所述多个第一表格输入(w;s)中的至少一个,并且所述电子处理器被配置成向所述多个第二表格输入应用所述第二表格网络,所述第二表格网络被配置成针对所述多个第一表格输出中的至少具体的一个 (f(w) 或g(w,s))验证未修改的第一表格网络是否能够从所述多个第一表格输入(w;s)中的给定的至少一个获取所述多个第一表格输出 (f(w);g(w,s))中的所述具体的一个,所述第二表格网络产生包括被保护的函数输出(w’)的第二表格输出 (v=E(w’,s’)),在所述验证是成功的情形中所述被保护的函数输出等于所述函数输出(f(w)),以及在所述验证是不成功的情形中,所述被保护的函数输出(w’)不等于所述函数输出。

Description

计算关于函数-输入值的数据函数的计算设备和方法
技术领域
本发明涉及被配置成计算关于函数-输入值的数据函数的计算设备,该设备包括存储被配置用于数据函数的第一表格网络的电子存储装置,该计算设备包括耦合至所述存储装置并且被配置成获取用于第一表格网络的多个第一表格输入的电子处理器,多个第一表格输入包括函数-输入值,并且该计算设备被配置成通过向多个第一表格输入应用第一表格网络以产生多个第一表格输出来计算数据函数,多个第一表格输出包括函数-输出值,函数-输出值对应于向函数-输入值应用数据函数的结果。
背景技术
在传统的密码学中,通常假定攻击者仅能访问安全系统的输入和输出值。例如,攻击者将能够观察进入系统中的普通文本以及从系统出来的加密文本。尽管攻击者可能通过分析这样的输入/输出对、甚至可能使用在计算上强烈的方法来尝试得到优势,但是没有想到他直接访问实施输入/输出行为的系统。
最近,将其中假定攻击者对实施有一些了解的威胁模型考虑进去已经成为必要。例如,人们可考虑边-信道分析以及逆向工程的威胁。此外,之前大多与安全性问题关联的关注已经延伸至其它的领域,诸如私密(privacy)。尽管处理诸如密钥的安全性信息的密码系统仍然是主要的关注点,但是其它程序(例如,处理私密相关的信息的那些程序)的保护也已经变得重要。
很久已经知道计算机系统通过所谓的边-信道泄露一些信息。观察计算机系统的输入-输出行为可能不会提供关于敏感信息(例如由计算机系统使用的密钥)的任何有用的信息。但是,计算机系统具有可以被观察的其它的信道,例如,其功耗或者电磁辐射,这些信道被称为边-信道。例如,可以测量由不同的指令所消耗的功率方面的变化以及在执行指令时所消耗的功率方面的变化。所测量到的变化可与敏感信息(例如密钥)有关。这种超越可观察和意图的输入-输出行为的关于秘密信息的附加信息被叫做边-信道。通过边-信道,计算机系统在其使用期间可能“泄露”秘密信息。观察和分析边-信道可能让攻击者访问比仅从输入-输出行为的密码分析获取的信息更佳的信息。一种已知的类型的边-信道攻击是所谓的差分功率分析(DPA)。
当前针对边-信道问题的方法在计算中引入了随机性。例如,在执行程序的真正的操作之间,虚拟指令可能被插入以模糊功耗和程序正在对其起作用的数据之间的关系。
计算机上的甚至更强的攻击是所谓的逆向工程。在许多安全性情境中,攻击者可完全地访问计算机。这给予它们分解程序并且获取关于计算机和程序的任何信息的机会。给予足够的努力,攻击者可能发现比如隐藏在程序中的任何钥匙。
保护对抗该攻击情境已经证明是非常困难的。一种类型的对策是所谓的白盒密码学。在白盒密码学中,钥匙和算法被组合。所得到的算法只针对一个特定的钥匙起作用。接下来,算法可以被实施为所谓的查找表网络。计算被变换成依赖于钥匙的表格中的一系列查找。例如,对于该方法的示例,参见S. Chow, P. Eisen, H. Johnson, P.C. vanOorschot的“白盒密码学和AES实施(White-Box Cryptography and an AESImplementation)”。
发明内容
对抗针对计算机系统的边-信道攻击的已知的对策不是完全地令人满意的。例如,通过统计分析可反击随机性的引入。通过对程序的操作的更加高级的分析,可以反击软件的混淆。因而,存在针对更多且更佳的对策的需要。
例如,一种混淆计算机程序的方式是对输入值进行编码并且在被编码的值上尽可能多地进行操作。人们甚至可使用所谓的表格网络来实行计算。这样的表格网络可以手工制作或者通过专门的程序制作(例如,在白盒密码学的情形中),或者通过通用的编译器来制作。一般而言,相信表格会混淆被实行的操作的类型。然而,发明人已经发现后者一般不是真实的。
即使函数的(多个)输入和(多个)输出被编码,输入/输出关系的统计属性可揭示哪个函数正在被编码。该现象的示例如下。
考虑W= {0,1,...,N-1}, 编码E, 和其对应的解码D=E-1。让 F 和 G 分别表示被编码的模数N 加法以及被编码的模数N 乘法。也就是说,将 定义为其中 表示模数N加法, 以及将定义为其中表示模数N乘法。
对于每个固定的x, 我们具有 {F(x,y) | 而且,对于每个非零的, 以及 N 素数,我们具有以及.对于非素数的N ,发生类似的模式。
结果,人们可以独立于编码E确定F不可能是被编码的模数N乘法,以及G不可能是被编码的模数N加法。攻击者至少具有两种方式来这样做。他可固定W中的两个不同的元素x 1x 2,并且对于针对所有的y将 进行比较。如果对于所有的y,这些量是不同的,则H不可能代表模数N乘法;如果对于一些 y,这些量一致,则H不可能代表模数N加法。不能选取哪个表格入口要读取、但是可以观察运行软件程序的表格访问的结果的攻击者可以使用以下事实:W中的每个元素经常同等地作为具有G的期间(while)的输出而发生,元素E(0)更加频繁地作为输出发生。因此,如果W中的元素比W中的其它元素更加经常地作为H的输出而发生,则H更加可能是被混淆的模数N乘法,而不是被混淆的模数N加法。
换言之,即使人们使用可用的最佳的软件混淆方法中的一种方法,即,如果人们使用针对计算的输入和输出值以及表格网络的全编码,则通过程序的检验仍可获取一些信息。该情况是非常不期望的。
已经发现该问题通过同时在多个输入值上操作的表格网络的引入而被解决。表格网络可向不同的输入或者输入组应用不同的函数。使用向单个值加密的编码,多个输入中的两个或者更多个一起被加密到单个的值中,攻击者确定表格网络意图针对什么函数变为不可能,因为,实际上其实行两个函数。参见于2012年12月21日提交的、具有号码US61/740691、以及标题“包括表格网络的计算设备(Computing device comprising a tablenetwork)”的美国临时申请和/或同一标题“包括表格网络的计算设备(Computing devicecomprising a table network)”的欧洲专利申请,欧洲专利申请具有申请日2012年12月27日以及申请号EP12199387。
尽管该系统相当地增加了安全性,但是仍有攻击向量,尤其是如果攻击模型被进一步拓宽。我们假定攻击者不仅具有全访问使得他可观察在系统中发生的每件事,我们还准备了能够修改程序的攻击者。我们考虑两种这样的修改,对表格入口的修改以及对变量的修改。第一种类型的修改在攻击者上较少地假定,因为可以在程序执行已经开始之前就做出修改,后一类型的修改是在程序正在运行是完成,并且因此被考虑为更难。例如,攻击者可能尝试下面的攻击(主要可能以自动的方式)。他修改表格中的入口,并且针对各种输入运行修改的程序。如果这些运行中没有运行示出原始的程序和经修改的程序的输出中的任何差异,则他断定经修改的表格入口和未经修改的表格入口就相关的数据而言是同等的,并且只是在混淆计算方面(即,所谓的状态变量和状态函数)不同。给予足够的时间,可以构建就正确的计算而言是同等的值的类别的图。因而,状态变量被有效地消除。要清楚,由于编码的原因,攻击者将不能够直接观察数据值是否是相同的,而状态值是不同的,但是他可能能够从分析表格修改的效果来推断这一点。
将有利的是,具有被配置成计算关于函数-输入值的数据函数的计算设备,该计算设备具有对抗程序修改的增强的恢复力。
提供了被配置成计算关于函数-输入值的数据函数的计算设备,该计算设备至少处理该关注。
计算设备包括电子存储装置以及耦合至存储装置的电子处理器。电子存储装置被配置成存储被配置用于数据函数f的第一表格网络以及第二表格网络,第二表格网络被配置成与第一表格网络合作以反击对第一表格网络做出的修改。
处理器(例如,通过合适的计算机处理器代码)被配置成获取用于第一表格网络的多个第一表格输入,多个第一表格输入包括函数-输入值,并且处理器被配置成通过向多个第一表格输入应用第一表格网络以产生多个第一表格输出来计算数据函数,多个第一表格输出包括函数-输出值,函数-输出值对应于向函数-输入值应用数据函数的结果。
处理器还被配置成获取用于第二表格网络的多个第二表格输入,第二表格输入包括多个第一表格输出并且第二表格输入与多个第一表格输入共享至少一个输入,并且处理器被配置成向多个第二表格输入应用第二表格网络,第二表格网络被配置成针对多个第一表格输出中的至少具体的一个验证未修改的第一表格网络是否能够从给定的多个第一表格输入中的至少一个获取多个第一表格输出中的该具体的一个。
第二表格网络产生包括被保护的函数输出的第二表格输出,在验证是成功的情形中,被保护的函数输出等于函数输出,以及在验证是不成功的情形中,被保护的函数输出不等于函数输出。例如,人们可以配置第二表格网络,使得在验证是不成功的情形中,被保护的函数输出总是不相等的。然而,在有利的实施方式中,输出被随机化,例如,在不成功的验证的情形中,在构造表格时随机地选择输出。在后一情形中,人们可能偶尔具有相等的输出。采取状态变量和随机输出作为参考,人们可能要求在不成功的验证的情形中,输出在至少90%的情形(即,所有的表格入口,即所有的可能的第一表格输入)中应当是不相等的。
因而,该计算设备以深奥的方式被混淆并且保护对抗早前概述的修改攻击。实际上,第一表格网络在多个输入上操作并产生多个输出。多个输入当中是到数据函数的输入中的至少一个输入,以及多个输出当中是至少函数输出。在以上提到的专利申请中,已经描述了可以以各种方式来构造这样的表格网络。作为这样的构造的一部分,数据函数可能已经针对所有可能的输入值被评估。
第二表格网络验证第一表格网络的计算的一部分。为此,第二表格网络接收第一表格网络的输出并且共享到第一表格网络的多个输入中的至少部分。由于第二表格网络不一定具有所有的多个输入值,所以第二表格网络完成全计算也许是不可能的。然而,选取第二表格网络使得其能够针对多个第一表格输出中的至少一个验证未修改的第一表格网络是否将具有给定的不同值。换言之,第二表格网络验证包括输入的多个第一表格输入中的至少一个的多个第一表格输入的存在,未修改的第一表格网络从其中获取多个第一表格输出中的具体的一个。实现这一点的一种实际的方式是实行第一表格网络完成的相同的计算中的部分或全部,但是这不是严格地必要的,例如,给定函数输入的部分,也许可能的是,断定一些函数输出已经成为不可能。而且,在后一示例中,通过在编译期间枚举,该兼容性将被建立并且在执行期间被查找。
第二表格网络可与多个第一表格输入分享输入至少存在两种方式,第一选项是第一表格网络的输入中的一个被拷贝到第二表格网络。该方法的结果是如果输入与其它的输入一起被编码,则它们也将是到第二表格网络的输入。这可能导致比期望的更大的表格。在某种程度上,使用提取表格(例如,状态提取表格)以从被一起编码的输入中获取一个或多个输入(例如,状态),这一点可被补救。第二选项是使用影子变量,也就是说,第一网络的多个输入中的一个或多个可能在不同的编码中至少被维持至少两次。例如,第一表格网络可具有函数和状态输入,而第二表格网络仅共享状态输入。在该情形中,不需要直接地从第一表格网络的输入拷贝第二表格网络的输入。这两个网络具有一个或多个共用的输入,但是共用的输入不需要必然直接地来自于同一源。这可导致第二表格网络中的较小的表格。另一方面,其要求至少在程序的一部分中变量中的一些被维持两次,即所谓的影子变量。
在第二表格网络检测到对第一表格网络的修改的情形中,其修改函数输出,即,输出不等于函数输出的被保护的函数输出。这具有以下效果:攻击者将看见由于攻击者的并非偶然的修改导致的改变。例如,即使攻击者已经修改了不相关的数据(例如,状态),这也可能由第二表格网络检测到,而第二表格网络又引起改变扩散至数据变量。总而言之,如果可能话的,以上概述的攻击变得更难。
在实施例中,多个第一表格输入进一步包括状态-输入值,并且多个第一表格输出进一步包括状态-输出值,其中状态-输出值等于向状态-输入值应用状态函数的结果,并且第二表格网络被配置成采取状态-输入值作为输入,第二表格网络被配置成使得在向状态-输入值应用状态函数的结果等于包括在被输入至第二表格网络的多个第一表格输出中的状态值的情形中,被保护的函数输出等于函数输出。
通过计算彼此独立的两个函数(同一表格网络中的数据函数和状态函数),验证它们中的一个成为可能。因而,需要在第二表格网络中完成的工作量被减少。结果,人们可以设计具有较少的输入的第二表格网络,这具有显著地更小的表格的结果。
在实施例中,第一表格网络被配置成采取被编码的输入值作为输入,被编码的输入值将函数-输入值与被一起编码的状态-输入值一起组合成单个的值,并且第一表格网络被配置成产生第一被编码的输出值作为输出,第一被编码的输出值将函数-输出值与被一起编码的状态-输出值一起组合成单个的值,其中状态-输出值等于向状态-输入值应用状态函数的结果,第二表格网络被配置成采取第一表格网络的第一被编码的输出值以及状态-输入值和函数-输入值中的至少一个作为输入,第二表格网络被配置成产生第二被编码的输出值、包含被保护的函数输出的被编码的输出值作为输出。
对多个输入中的一些或全部和/或多个输出中的一些或全部进行一起编码使得对设备的逆向工程更难。攻击者不直接地知晓值代表什么或者该值实际上是什么。
编码(经常被称为“E”)至少部分是可逆的,也就是说,对于一些被编码的函数输入值和状态输入值的对,函数输入值和/或状态输入值可以被恢复;同样地,对于被编码的函数输出值和状态输出值的对也是一样。在实际的实施方式中,编码通常被选择为是完全可逆的,尽管如以上所指出的,这不是严格地必要的。也就是说,对于完全可逆的编码,人们能够针对任何被编码的函数输入值和状态输入值的对恢复函数输入值和状态输入值二者。同样地,从被编码的函数输出值和状态输出值的对,函数输出值和状态输出值可以被恢复。
编码是私密的,也就是说,系统的不同实施方式可使用不同的方式来对输入或者输出值一起进行编码。
此外,编码至少在某种程度上坚持扩散的原则。被编码的值中的值取决于很大部分的被编码的值。例如,当从被编码的输入/ 输出值恢复输入/输出值时,则输入/输出值优选地取决于所有的被编码的输入/输出值,至少其更多地取决于位而不是输入/输出值自身的位大小。这具有输入/输出值上的信息被分布在许多位上的效果。优选地,如果人们仅访问被编码的值的一部分,则即使人们完美地了解编码/解码函数,也不可能恢复其进行编码的值。注意,传统地,加密常使用钥匙。使用带钥匙的编码是有吸引力的可能性,但是由于输入/输出值的相对小的大小的缘故,将编码代表为表格也是可能的。由于该原因,可互换地使用在变量值(例如输入/输出值或者中间值)的上下文中进行编码和加密。
由于表格网络可代表两个函数,并且实际上被编码的输入值包含两个输入(函数和状态),所以如果表格网络是数据函数或者状态函数的被编码的版本,则从其中分辨是不可能的。实际上,表格网络被完全地装配来计算任一函数,并且实际上计算关于独立变量或者变量的集合(在数据函数和-或状态函数具有多个输入的实施例中)的两个函数。
例如,应用于以上的示例,人们将获取可以被用来实行加法和乘法的表格网络。通过对表格网络的检验,人们不能分辨哪一个被使用,因为实际上表格网络能够实行任一个。
数据函数可采取一个或多个输入值。状态函数可采取一个或多个输入值。在实施例中,数据和状态函数的输入值的数目是相同的。例如,设备可被配置成获取多个函数-输入值作为多个被编码的输入值。多个被编码的输入值中的每个将多个输入值中的函数-输入值与一起被加密的多个状态输入值中的状态-输入值一起组合成单个的值。表格网络被配置成采取多个被编码的输入值作为输入,并且产生被编码的输出值作为输出。被编码的输出值将函数-输出值与一起被加密的状态-输出值一起组合成单个的值。函数-输出值等于向多个函数-输入值应用数据函数的结果,并且状态-输出值等于向多个状态-输入值应用状态函数的结果。
在实施例中,第二表格网络被配置成产生第二被编码的输出值作为输出,被编码的输出值将被保护的函数输出值与一起被加密的被保护的状态-输出值一起组合成单个的值,被保护的状态-输出等于向状态-输出值应用状态排列的结果。
添加反击对第一网络的修改的第二表格网络显著地增加了攻击该系统的难题。然而,如果攻击者能够发现第二表格网络,他可能能够从其输出判断其是否做出改变。通过总是修改第二表格网络的输出中的状态值,攻击者不能看出第二表格网络是否需要向函数输出应用改变,因为被编码的值作为整体将改变,即使其内的仅一个值改变。
在实施例中,第二表格网络包括状态表格和对准表格网络,状态表格被配置用于状态函数,处理器被配置成向状态-输入应用状态表格以获取平行的(parallel)状态输出值,对准表格网络被配置成接收至少所述平行的状态输出值以及从第一表格网络接收到的状态-输出值作为输入。这样,状态表格可以与函数表格平行。在完成对准表格网络之前,可以使用多个状态和函数表格。这减小了作出的关于修改的检查的数目,同时仍然检测它们。这样,代码大小被减小。
在实施例中,第二表格网络包括经修改的状态表格和对准表格网络,状态表格被配置成接收状态-输入值作为输入,并且计算经修改的状态值,经修改的状态值等于向由另外的状态函数跟随的状态-输入值应用状态函数的结果,对准表格网络被配置成采取状态-输出值和经修改的状态-输出值作为输入,并且验证应用到状态-输出值的另外的状态函数产生经修改的状态-输出值。
在状态表格中,实行状态函数和另外的状态函数的函数合成,而在第一表格网络中,仅使用状态函数。对准表格验证状态变量是否具有预期的值。注意,输出被检查,未必检查其是如何被获取的。这保护对抗试图移除对准表格网络并且比如用第一表格网络的输出替代其输出的攻击。这样的企图将不可行,因为状态变量和数据变量将不再并行地运行。
第二表格网络不一定在状态值上操作,可以使用多个输入的其它部分。在实施例中,第二表格网络被配置成采取函数-输入值作为输入,第二表格网络被配置为使得在向函数-输入值应用数据函数的结果等于在第一被编码的输出值中的被编码的函数-输出值的情形中被保护的函数输出等于函数输出。
函数输入和输出可以是4、5、6、7或者8位,甚至可能更大,比如16位,状态输入和输出值的大小相同,或者可能更小,比如2或者3位。实际的选择是让函数和状态值每个4位,并且包含函数和状态值的被编码的值作为8位。
本发明的方面关注用于接收数据函数并且用于产生第一和第二表格网络的编译器,其中第一表格网络被配置成接收用于第一表格网络的多个第一表格输入,多个第一表格输入包括函数-输入值,并且第一表格网络被配置成产生多个第一表格输出,多个第一表格输出包括函数-输出值,函数-输出值对应于向函数-输入值应用数据函数的结果,第二表格网络被配置成与第一表格网络合作,以反击对第一表格网络做出的修改,第二表格网络被配置成接收多个第二表格输入,第二表格输入包括多个第一表格输出以及多个第一表格输入中的至少一个,第二表格网络被配置成针对多个第一表格输出中的至少具体的一个验证未修改的第一表格网络是否能够从多个第一表格输入中的给定的至少一个获取多个第一表格输出中的该具体的一个,第二表格网络产生包括被保护的函数输出的第二表格输出,被保护的函数输出在验证是成功的情形中等于函数输出,并且在验证是不成功的情形中,被保护的函数输出不等于函数输出。
计算设备是电子设备,例如,移动计算设备、移动电话、机顶盒、计算机等。
根据本发明的方法可以作为计算机所实施的方法,或者以专门的硬件或者以二者的组合在计算机上实施。用于根据本发明的方法的可执行代码可以被存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上的非暂时性程序代码构件,当所述程序产品在计算机上被执行时,所述程序代码构件用于实行根据本发明的方法。
在优选的实施例中,计算机程序包括被适配成当计算机程序在计算机上运行时实行根据本发明的方法的所有的步骤的计算机程序代码构件。优选地,计算机程序体现在计算机可读介质上。
附图说明
从在下文描述的实施例,本发明的这些以及其它的方面将是明显的,并且将参照在下文描述的实施例来阐明它们。在附图中,
图1是图示实施数据函数和状态函数的表格网络的示意图,
图2是图示被配置有表格网络的计算设备202和204的框图,
图3是图示表格网络的框图,
图4是图示总体上的表格网络的框图,
图5是图示计算设备的框图,
图6是图示编译器的流程图,
图7是图示用于计算函数的方法的流程图,
图8a和8b是图示表格网络的框图,
图9是图示程序流的图。
应当注意,在不同的图中具有相同附图标记的项目具有相同的结构特征和相同的功能,或者是相同的信号。在已经解释了这样的项目的功能和/或结构的地方,没有必要在详细的描述中重复其解释。
具体实施方式
虽然本发明容许许多不同形式的实施例,但是采用本公开被考虑作为本发明的原理的示例性并且并不意图将本发明限制为如所示出和描述的具体实施例的理解,一个或多个具体的实施例将在绘图中示出并且将在本文详细地描述。
图4图示表格网络的一般性概念,所示出的是表格网络400。大部分的函数可以被表达为表格的网络。特别地,算法和逻辑操作的任何合成可以这样来表达。例如,表格的网络可以是例如密码的实施。所示出的是多个表格(8个表格)。表格通过输入值的表格查找将输入值转换为输出值。所示出的是用于从函数实施外部接收输入的三个输入表格410。示出了多个输出表格430中的一个。例如通过联结,多个输出表格430一起形成函数实施的输出。所示出的是中间表格420、422、424、426的四个表格,其从表格中的另一表格接收至少一个输入并且产生用作针对至少一个其它的表格的输入的输出;在图中,例如,中间表格422和410提供用于表格426的输入。这些表格一起形成网络。密码可以是块密码,块密码可以被配置用于加密或者解密。块密码可以对比如AES的块加密。实施方式可以是针对特定的钥匙,在该情形中,表格可取决于特定的钥匙。
查找表426代表具有两个输入和一个输出的算子。用于一元算子的查找表的构造可以被延伸至二元算子。例如,第二输入可以被“套用(curried out)”;指的是函数变换技术,套用(currying)是以其可以被称作函数的链的方式采取多个(n)个变元(变元的n-元组)对函数进行变换的技术,每个函数具有单个的变元。当使用该方法时,查找表426被实施为多个一元查找表。另一方面,人们还可以针对每个输入生成位流并且将结果联结。这样,查找表被直接地生成,并且获得一个单个的但是更大的查找表。尽管查找表的布局可能基于构造而不同,但是它们具有相等的大小和相同属性。注意,不必根据相同的编码对多个输入值进行编码。
表格网络可使用对两个函数进行编码的多个表格或者具有针对两个函数进行编码的表格网络作为子网络。此外,表格网络可并入一个或第一以及第二表格网络以防止攻击者使用表格和/或可变的修改知悉关于系统的有用信息。
取决于当前的编码,系统可以被配置成使用网络表格的该状态或者数据函数。如本文所描述的,也可以在表格网络中应用表格网络混淆技术。
例如,假定第二表格接收第一表格的输出作为输入,则可以用机密(例如,随机选取的编码)对第一表格的输出进行编码,并且可以用逆编码对第二表格的输入进行编码。
图1示出了嵌入在较大的网络表格100中的表格网络180。如所示出的,表格网络180仅包含单个的表格130。如所注意到的,以例如表格大小和安全性之间的折中将表格130实施为表格网络是可能的。在图1中,用矩形来图示表格,并且用右上角被切掉的矩形来图示值。
表格网络180被配置成采取多个被编码的输入值作为输入,所示出的是被编码的输入值122和124。表格网络180被配置成产生被编码的输出值160作为输出。在下面的描述中,我们将假定具有两个输入值和单个的输出值的数据函数和状态函数。然而,实施例可以被延展至任何数目的输入值和/或输出值。特别地,带有一个输入和一个输出的数据/状态函数是可能的,以及带有两个输入和一个输出的数据/状态函数是可能的。
表格网络180被配置用于数据函数并且被存储在电子存储装置中,电子存储装置耦合至被配置成通过应用表格网络来计算数据函数的电子处理器。
从函数输入值102和状态输入值112获得被编码的值122。例如,可以由编码器110来完成这一点。编码器110可以包括在存储表格网络180的同一设备中,但是这是不需要的。输入值可以以被编码的形式已经被接收和/或以被编码的形式被传送。或者它们可能以未编码的形式被接收/传送。在后一情形中,它们可以被编码并且以被编码的形式被内部地使用。还可能存在再编码,例如如果在设备外使用不同的编码的话。例如,可以从编码器170获取函数输出值162和状态输出值164。
数据函数的被编码的输入可以是另一表格或表格网络的输出。后者可以是或者可以不是被配置用于两个函数的表格网络。通过将被配置用于不同的数据函数的表格网络组合,可以建立整个程序。
编码器/解码器110和170可以被获得作为彼此的逆。可以如下面这样获取编码器110。列出了函数输入值和状态输入值的每个可能的组合。例如,如果二者都是4位宽的,则存在16*16=256个可能的组合。这256个组合可以按照随机的双射的次序被映射至其自身。这同样适用于其它的大小。而且,可以使用加密函数,例如,使用一些机密编码钥匙,可以应用8位块密码。
被编码的输入值包含相互依赖的形式的函数输入值102和状态输入值112,例如,函数输入取决于被编码的输入的所有的位。因而,仅知晓被编码的输入值122的一部分一般将不允许人们找到函数输入值102或者状态输入值112。
下面,我们将使用数学语言给出多个实施例。将函数输入值与状态值组合的一个优点在于函数输入具有多个代表。函数f指的是数据函数以及g指的是状态函数。函数f被编码到F中使得F的域中的值具有多个代表。为了隐藏哪个函数f正在被编码,f的(多个)输入和(多个)输出具有f的被编码的版本F的域以及范围中的多个代表。设计函数F使得每当X代表x时,则F(X)代表f(x)。在后来,我们有时谈到“长”变量(F的输入/输出)以及“短”变量(f的输入/输出)以强调f的每个输入/输出对应于F的多个输入/输出,结果,我们一般需要比代表来自f的输入/输出更多的位来代表来自F的输入/输出。下面描述获取针对运算量的多个代表的一种方式。再次注意,为了简单性,我们考虑具有相等的输入和输出符号的函数,这可能是一般化的。
让W表示我们希望进行编码的运算量的集合。我们引入“状态”的有限集合Σ以及具有等于W和Σ的基数的积的基数的有限集合V。通过机密编码函数E,W x Σ的元素以一对一的方式被映射到V。W中的元素w的代表是以下集合中的元:
Ω(w)
W中的每个元素的代表的数目因而等于Σ的基数。结果,携带来自于V的符号的数据路径比用于携带来自W的符号的数据路径更宽。例如,如果W是16位整数的集合并且状态空间Σ具有16 =24 个元素,则用于V的数据路径使用16+4=20位,而用于W的数据路径使用16位。
下面的实施例对两个变量的函数进行编码。考虑我们期望编码的函数f: W x W→ W 。我们构造函数F: V x V → V,使得对于所有的 以及,我们具有
或者,换种表述:F将的代表中的任何的对映射到的代表。
的代表的状态可能以确定性的方式或者以随机化的方式取决于运算量二者,并且甚至可能取决于状态二者。更具体地,状态可能仅取决于状态,这可通过采取函数以及通过定义以下等式来实施:
如果我们采取Σ = W,则以上实施例的有趣的特别的情形出现。虽然利用不同的编码函数,但是使用函数E,对f 进行编码的函数F也对函数g进行编码。也就是说,不能推断两个函数f g中的哪个正在由F实施。我们定义 通过计算,我们发现:
因而,如果正在使用E进行编码,则用于F的表格实施函数f,以及如果正在被用作进行编码的函数,则实施函数g 。这样,证明了仅从表格130,人们不能分辨哪个函数正在被使用,因为它可能至少针对两个函数进行编码。
用于F的表格可以用于计算f和g二者。实际上,如果使用E,则,如前所述,用于F的表格实施f。通过用函数对输入和输出进行前置处理以及后置处理,同样的表格也可以被用于实施g。确切地讲,让, 并且写入
则我们具有:
因此,我们具有
.
被编码的输入值可以是到可能包含数据函数或者由数据函数代表的计算机程序的输入值。计算机程序可以在计算机上运行。计算机程序的指令可以由数据函数代表。编码和解码可以在机密钥匙的控制下。编码和解码表格自身可以被视作这样的钥匙。如果应用在采用编码Ek进行编码的数据上操作的指令f ,则其首先对数据进行解码,然后在被解码的数据上应用f,并且随后再次对结果进行编码。也就是说,数据x 导致输出F (x) = E k( f (D k (x))。通过函数F的直接存储(例如,作为查找表),函数f及其语义(semantics )被隐藏。在具体的实施例中,解码是编码的左逆,也就是说,对于所有的x,D k(E k(x)) = x 。这具有以下优点:如果两个函数fg被编码而且用相同的函数E kD k解码,则可以通过接连地使用针对G (x) = E k( g (D k (x)) 以及F (x) = E k( f (D k (x))的表格,来完成函数 f(g(x))的被编码的版本。实际上,可以看出的是,对于每个x,我们具有E k (f(g(D k(x)) = F(G(x)),结果可以从随后的针对G和针对F的表格的访问获取针对f(g(x)) 的被编码的版本。这样,在接连的操作之间不进行编码和解码的情境下,可以应用操作的顺序,因而极大地提高了安全性。在实施例中,只是在保密侧进行编码和解码,而所有的编码的操作在开放的不保密侧进行。一个或多个被编码的函数的(多个)输出可充当至另一被编码的函数的(多个)输入。正如我们已经看出的,如果编码和解码是彼此的逆,则这可以方便地被设置。以下是利用我们的发明的用于执行一系列的操作的优选的实施例。首选,在保密域中,“短”变量被转换成“长”变量。随机化被牵涉以确保“长”变量大致同等经常地发生。例如,可以通过具有生成随机状态的设备以及在 k(x,上映射变量x 来实现这一点,其中Ek是“长”变量的编码。在开放侧的所有的计算之后,在保密侧应用使用“长”变量的所有的操作、解码D k ,并且接下来,确定对应于被解码的长变量的“短”变量。替代性地,在一个组合的步骤中完成短变量的解码和确定。字母k表示机密,例如密钥。
具有针对变量的多个代表暗示着数据路径变得更长。而且,其暗示用于实施f的被编码的版本F的表格变得更大。例如,考虑具有两个16位变量xy作为输入以及16位变量作为输出的函数 f(x,y) 。在不具有多个代表的情境下,用于实施f的被编码的版本的表格使用具有个入口的表格,每个表格入口是16位宽,其总计位的表格大小。现在,假定每个16位变量具有16个代表,因而可以用20位来表示代表的集合。现在,我们使用具有个入口的表格,每个表格入口是20位宽,其总计位大小的表格。也就是说,表格是不具有多个代表的情况下的倍。
下面给出编码器110、解码器170和状态提取器表格212和214的构造的示例。我们 将假定每个4位的单个的函数输入以及单个的状态输入(也可以有更多的函数输入或状态 输入)。
函数输入 状态输入 编码
0000 0000 0100 0110
0000 0001 0101 1000
.... .... ....
0000 1111 1100 1100
0001 0000 1001 0111
0001 0001 0111 1010
.... .... ....
1111 1111 0011 1001
前两列列出了函数输入值和状态输入值的所有的可能的组合,最后一列以二进制列出了数字0至255的随机排列。注意,即使采用256-2=254个输入-输出对的完备的认知,余下的两对仍具有它们中的一个不确定的位,在该意义上说,加密是完备的。在信息理论的意义上,完备的编码是期望的,但是对于良好的结果不是必需的。例如,通过使用比如说8位宽的块密码,即具有等于函数输入和状态输入的和的块大小的块密码,可以获取不太完备但是仍然非常合用的编码。
通过在前两列上进行分类获得编码表格,所得到的表格示出如何从前两列获取最后一列(编码)。通过在最后一列上进行分类,获得进行解码而不是编码的表格。通过去除第一列以及在最后一列上进行分类,获取状态提取器函数。一般地,注意,不需要存储输入和输出列二者。例如,如果输入列被分类并且包含所有可能的组合,则其可以被省略。
图2图示了用于在具有电子存储装置和电子处理器的计算设备(例如,图5中示出的设备(见下面))中使用的表格网络204和202。
两个第一表格网络212和214被示出用于表格网络202。第一表格214使用第一表格212的输出216作为输入。表格网络212和214可以是表格网络180的类型。第一表格212接收多个输入210,并且产生多个输出,输入当中是函数输入值,并且输出当中是函数输出值。为了增加图的清楚性,没有以个性化的方式示出多个输入和多个输出,除非其被认为在阐述方面是有帮助的。表格212的函数输出值被用作针对表格214的另外的输入,而其又产生多个输出。表格212和214的多个输入和输出被编码,使得攻击者不能(至少不能从单个的值)确定什么部分对应于实际的数据以及什么不对应于实际的数据。例如,表格212和214可以接收一个或多个被编码的输入作为输入,每个表格将函数输入与状态输入组合,并且每个可产生一个或多个被编码的输出。经常使用的组合是接收两个或更多的被编码的输入以及产生一个被编码的输出。
使用网络202是有利的,因为表格212和214实行关于针对程序的最终结果不是直接地相关的数据的计算,表格网络202是该程序的一部分。然而,攻击者可能能够通过修改表格入口并且观察结果来攻击系统。他将寻找看起来不会影响程序的运行的改变,因为从那里,他能够推断最初的以及修改的值就函数数据而言是相等的。
表格网络204已经被构造为对表格网络202的替代以避免该攻击。表格网络204包括第一表格网络222和224,以及附加地还包括表格网络232以及234。第一表格网络222和224可以被选取为分别等于表格212和214。
表格网络232接收表格网络222的输出226作为输入,并且将其输入的至少一部分与表格网络222的输入220分享。第二表格网络能够验证从表格222接收到的输出226是否与被给予表格232的输入220的内容兼容。特别地,表格232至少针对多个第一表格输出226中的具体的一个(但是更优选地针对所有的)验证未修改的第一表格网络222是否能够从给定的多个第一表格输入中的至少一个获取多个第一表格输出中的该具体的一个。表格(或者表格网络)232可通过表格查询操作来完成这一点。在表格232的构造期间,确定所有的可能的输入220是什么以及所有的对应的输出226是什么,实际上,这可以是构造表格222自身的一部分。接下来,做出针对表格232的输入和输出的每个组合注意其是否对应于表格222的输入/输出对的表格。基于该确定,表格232具有不同的输出(见下面)。换言之,表格222确定包括所输入的多个第一表格输入中的至少一个的多个第一表格输入的存在,未修改的第一表格网络从所述多个第一表格输入获取多个第一表格输出中的具体的一个。
实现这一点的实际的方式是具有仅从输入220的一部分计算出的一个输出226。例如,输入220可包括状态和函数输入。输出226可包含函数输出(其是应用于函数输入的函数)以及状态输出。状态输出优选地仅取决于状态输入,但是也可以取决于函数输入。给定函数输入以及表格222的所有的输出,表格232可以验证函数输入以及函数输出相对应,即,应用于函数输入的数据函数是否给出函数输出。替代性地或者附加地,给定状态输入以及表格222的所有的输出,表格232可验证状态输入和状态输出相对应,即,应用于状态输入的状态函数是否给出状态输出。在优选的实施例中,第二表格网络至少验证状态变量。捕捉这些种类的误差(即,修改的状态)被认为是重要的,因为它们可能导致未修改的程序输出(即,如果函数值碰巧没有被改变)。后一种的改变尤其携带针对攻击者的大量信息。
正常情况下,表格232会促进226的输出用于在下一个可能在其上实行一些处理步骤的表格/表格网络中的使用。然而,在表格232检测到误差的情形中,即,通过篡改表格222或者可能地变量自身,仅能够已经获取222的输入和输出,表格232在传递输出226之前对输出226的至少一部分随机化。我们将被传递通过第二表格网络的输出值称为被保护的输出值。在没有检测到误差的情形中,被保护的值对于另外的计算是有用的,但是在检测到篡改的情形中,其已经被随机化。
被保护的变量的效果在于通过篡改可以获知的信息被显著减少。攻击者将发现如果他篡改,输出改变并且程序不正常起作用,但是在篡改时这是被预期的。攻击者从该事实本身没有获知任何事。然而,由于随机化,有用的信息(例如,哪个改变对应于状态以及哪个对应于函数数据)已经消失。随机化是优选的,但是,只要在验证是不成功的情形下被保护的函数输出不等于函数输出,更精细的(subtle)改变也是可能的。注意,随机化在表格的构造期间被固定在(多个)表格中。不需要随机的数字发生器来应用表格网络。
表格232的输出被运送至下一个表格网络,此处是表格224和234。这对应于表格214,其将接收未被保护的网络中的输出。此处224是第一表格网络以及234是第二表格网络。
表格网络204被存储在电子存储装置(比如闪存或随机存取存储器)上,并由电子处理器使用,即通过将表格网络应用至从设备外侧接收到的或者在设备上生成的数据。注意,在通常的实施例中,根据到攻击者的编码机密对到表格网络的输入进行编码。对于表格网络,编码是透明的,一旦表格被做出,其不牵涉任何附加的处理。也就是说,向普通值应用表格或者向编码的值应用表格在处理要求方面是同等的。注意,编码可能在表格之间容易地改变。编码是普通值和内在地使用的值之间的映射。
优选地,表格网络204对将函数值与状态值组合的变量起作用。当系统也关于状态值计算时,由于表格同时实行两个函数,所以攻击者从表格不能分辨其针对哪个函数进行编码。状态变量和函数变量的角色可能通过程序的进程互换。在这些实施例中,表格同时实行两个函数。然而,被同时实行的函数的数目也可以被选取为更大,进一步使得攻击者的分析复杂化。例如,表格可代表三个函数,比如数据函数以及第一和第二状态函数,甚至更大数目的函数是可能的,比如4或者5。
下面,以数学语言给出了第二表格网络的一列可能的实施例。在这些示例中,是对函数值和状态值进行编码的变量; 是状态值; 是函数值。变量是第一和第二表格网络的最终输出,其可被用于进一步的下游处理(例如,表格)中。函数 是数据函数; 是状态函数。函数是状态提取器, 是函数值提取器以及是编码器函数,即 以及; 所有的这些函数可以被实施为表格。函数 是关于状态变量(优选地,排列)的函数。函数对应于,但是不被转录至编码的域,即,
字母表示对准函数,如果第一输入对应于第二以及另外的输入,则输出是第一输入,如果输出没有被改变,例如被随机化,第一输入可能具有一些进一步的处理。
在这些实施例中,表格对两个函数输入起作用。然而,可以如所期望的选取输入的数目。该系统可以被应用于单输入,但是有趣地也可应用于多输入函数。我们将使用是4位的状态和函数作为示例,并且他们的组合的编码是8位。不同的大小显然是可能的,比如针对状态2位,针对函数6位,等。
在下面的所有的示例中,第一表格网络实施函数。这可通过具有两个被编码的输入和一个被编码的输出的单个表格来完成。
第二表格网络可以是以下当中的任何一个:
1. 第二表格网络采取x, y和u(即第一表格网络的所有的输入和输出)作为输入。第二表格网络包含三个表格。前两个是状态提取器以及第三个是对准表格:输入x, y.这里如果,则 并且否则是随机的。换言之,第二表格网络验证第一表格网络正确地计算出状态函数。如果验证是成功的,则u 和v具有相等的值,但是具有不同的状态。如果验证检测到误差,则v 的值不同于u的值。注意,状态接收排列P形式的扭曲(twist)。该实施例使用带有8、8和16位的输入大小的三个表格。
2: 第二表格网络采取x, y和u作为输入。第二表格网络包含一个表格。输入x, y.这里如果 ,则 并且否则是随机的。这里验证第一表格网络的满计算。表格具有8+8+8= 24位的输入大小。
3. 第二表格网络采取x, y和u作为输入。第二表格网络包含两个表格。输入x,y.这里如果,则,并且否则是随机的。这里仅验证第一表格网络的状态部分。表格具有16和12位的输入大小。作为变量,人们可使用:针对对准表格的。在验证失败的情形中,这种改变是特别相关的。
作为进一步的变体,第二表格网络使用:
. 这里第二表格网络使用3个表格,但是具有仅8、8和12位的输入。
4. 设备对两种变量起作用:具有状态和函数值二者的被编码的变量(“长”变量)以及对应的仅状态的变量(状态-变量)。后者也可以被编码,但是在大小上更小。对于示例性的大小,“长变量”包含函数值以及状态值并且是8位,并且对应的状态-变量是4位。长变量和状态-变量在它们的状态变量是处于可验证的关系的意义上相对应,例如是相等的。
如以上所指示的,第一表格网络对长变量x 和y起作用。第二表格网络采取对应的状态-变量和u作为输入。让状态-变量对应于长变量使得从对第二表格可用的第一表格的多个输入做出不同的子集成为可能。我们将 称作对应于的状态-变量。注意,状态-变量是第一表格网络的输入的一部分,因为被编码的长变量包含状态-变量,即, =(x), = (y)。第二表格网络采取分享这些输入,因为其使用 , 作为输入并且u包含两个表格来计算 = g(, ); v= E(z(u, ), P())。在这里如果 ,则 并且否则其是随机的。到第二网络中的表格的输入只是8和12位。注意,, 可以是独立于 (x) 和 (y)的实际值被保持记录的分离的变量。程序已经被配置使得这些值可以被彼此对照地验证,比如,为了相等。
5. 第二表格网络采取, 作为输入,并且第二表格网络包含两个表格来计算; v= E(z(u, ), P())。在这里如果,则 并且否则是随机的。在这里 在第一表格网络中使用的状态函数。第二表格网络中的状态计算表格实行关于状态值的附加函数,这在第一表格网络中未被完成。然后,对准表格验证该事实,并且对其进行校正。这样,攻击者不可能省略对准表格,因为其将包围将是未对准的状态和函数值。在下一个对准表格中,失配将被检测和校正。
注意,这些示例在许多方面是不同的。首先,它们具有不同的输入和输出大小,这将导致不同的表格大小。如果程序的大小需要被保持在限度内,则表格大小是重要的准则。而且,这些示例在什么值对于攻击者而言是可用的方面不同。如果在不用函数值进行编码的情况下状态值是可用的,则这被认为是对攻击者的优点。取决于关于大小和安全性的确切要求,可以在这些替代方案之间做出选择。注意,不必是程序仅使用单个的选择。不同的第二表格可使用不同的变体。
图3、8a 和8b 图示针对采取单个的输入的数据函数和状态函数的多个这些可能性。例如,图3图示计算设备300。计算设备300存储第一表格网络310和第二表格网络340。
第一表格网络310采取长变量作为输入305。表格310被构造成在函数部分上应用函数f 312 以及在状态部分上应用函数g 314。注意,在实际的实施方式中,这些部分不是直接可见的,通过查找预先计算的表格中的值,表格310直接地作用于被编码的值。表格310产生输出307: 。第二表格网络作为两个表格:表格320和330。第二表格网络采取x作为输入并且向其应用状态提取器表格320以获取提取的状态322: 。提取的状态322 和输出307是到对准表格330的输入。已经从函数 z 332和排列334构造对准表格。这里 如果,则 ,并且否则其是随机的。排列334向状态应用排列,在此选择是针对从表格310获取的状态,但是来自表格320的状态也是可能的。让排列在对准表格中保证表格的输出总是改变,而不论是否已经检测到改变的事实。这避免了其中表格330中的改变被用来确定由篡改引入的改变的攻击。而且表格330是单个的表格,其中函数332和334不是单独地可见的。
图8a图示包括工作存储器的计算设备800,工作存储器存储长变量的集,对函数值和状态值以及对应的状态-变量的集进行编码。状态-变量的集中的特定的一个对应长变量的集中的每个长变量。长变量和状态-变量具有可验证的关系。例如,长变量对状态值进行编码,状态值也在状态-变量中被编码。例如,长变量对状态值进行编码,而状态-变量对该状态值的函数进行编码。
表格网络存储在设备800上。如以上所描述的来使用第一表格网络310,采取长变量作为输入(示出的是其中单个的长变量被接收的情况,但是更多长变量被接收是可能的,以上的公式说明了其中两个长变量被接收的情况,更多的长变量被接收是可能的)。
表格310接收多个输入,即函数值和状态值。注意,这两个输入是一起被编码的,尽管表格310以不同的方式对输入起作用。特别地,表格310可以非常好地彼此独立地作用于函数和状态输入。
第二表格网络包括状态函数表格810和对准表格330。对于表格330,可以使用与图3中相同的表格。状态函数表格810采取表格310的多个输入的子集作为输入,特别地,状态值被接收。这可通过向对应于长变量的状态-变量应用表格810来实施,表格310被应用至该长变量。替代性地,805可以是独立于路径305的发展而发展的路径的部分。表格810实施相同的状态函数作为表格310。
在优选的实施方式中,由状态函数表格810和表格310二者使用的状态函数独立于函数起作用。这极大地简化了实施。然而,引入依赖于状态函数表格的函数值是可能的。在该情形中,状态函数表格810在其计算中使用来自表格310的部分的中间结果。应注意,在完成这一点时,不要暴露普通形式的函数值。如果另一方面下一个状态仅取决于当前状态,而不取决于函数值,则状态值的暴露是不太关键的。
表格810产生输出807作为向状态值应用状态函数的结果:。注意,该值是状态值(不与函数值组合)但是在通常的实施方式中将被编码。在表格网络中,不对数据进行编码是平常的,因为这不会以任何方式阻止处理。有趣地,多个输入(比如函数和状态值)可以一起被编码,即,被加密到单个的值。可以采用状态空间的随机的排列来完成对状态变量进行编码。
图8b描述了有趣的变型。示出的是包含接收长输入305和815的表格310以及使用表格310的输出305和另外的长输入836的表格830的第一表格网络。表格310和830能够计算关于多个被编码的输入的更复杂的函数。对应于表格310和830的是状态函数表格810和820。它们接收对应于由表格310和830使用的长变量的状态-变量作为输入,即:分别对应于长变量305, 815, 307, 836和837的状态-变量805, 806, 807, 816, 817。
有趣地,这给出了一旦使用作用于长变量的表格网络并且一旦作用于对应的状态-变量就两次运行计算机程序的节段的可能性。在节段的结尾,对准表格验证两个程序是否仍然是同步的。
这进一步被图示在图9中。如在所有的图中,从图的顶部至底部进行程序执行。在910处,程序在一个单线程中运行。没有做出附加的验证。在某时刻,更多的安全性敏感部分被输入。在该时刻,程序分叉为两部分,比如在左边状态-变量被评估,而在右边长变量被评估。这发生在920处。在某时刻,甚至更关键的部分被输入。在该时刻,比如说长变量被完全地评估两次。在该区段的结尾,对准表格保证没有改变被做出,这在930处被完成。即使检测到改变,程序也继续运行,但是带有依据有用的相关性被清除的值。在940处,第一分叉也结束,再次与对准函数一起。在950处,程序继续作为两个线程运行,比如在状态变量和长变量上。最终,在960处,存在另一对准函数并且程序再次作为单线程运行。
图5示出了具有存储设备510的计算设备500。图5中示出的设备可以与图1, 2, 3,4, 8a, 8b 和 9中图示的表格网络一起使用,特别是作为计算设备100, 204, 202, 300和800。
存储设备510通常是一个或多个非易失性存储器,但是还可以是硬盘、光盘等。存储设备510还可以是包括下载的或者以其它方式接收的数据的易失性存储器。计算设备500包括处理器550。处理器通常运行存储在存储器中的代码555。为了方便,代码可以被存储在存储设备510中。代码引起处理器执行计算。设备500可包括可选的I/O设备560以接收输入值和/或传送结果。I/O设备560可以是网络连接、可移除的存储设备等等。
存储设备510包含一个或多个根据图1至3中的一个的表格网络。
在实施例中,计算设备在操作期间可按照如下工作:计算设备500接收输入值。例如,通过使用编码表格541(例如,表格110),输入值被编码。因而,输入值被获取作为被编码的输入值。注意,输入值可以被获取作为被直接地编码的输入值,例如,通过设备560。将输入值编码到被编码的输入值暗示必须选取状态输入。存在若干种方式来这样做,例如,例如通过随机的数字发生器来随机地选取状态输入。可以根据算法来选取状态输入。算法可以是复杂的并且增加混淆。状态输入值可以是恒定的,或者从一系列数字(比如具有恒定的增量(比如1)、并且从某个起点处开始的整数的序列)有序地采取。起点可以是零、随机数字等。选取状态输入作为随机的数字并且对于每个下一个状态输入选取增加1是特别有利的选择。如果离设备选取状态输入,则攻击者没有办法追踪哪里的状态输入值被选取以及它们是什么。
处理器550执行存储器510中的程序555。程序引起处理器向被编码的输入值或者所得到的输出值应用查找表。可以针对任何的逻辑或者算法函数创建查找表,因而通过使用一系列的查找表可以实行任何的计算。这有助于混淆程序。在该情形中,查找表针对混淆被编码并且中间值也是这样。在该情形中,混淆是特别有利的,因为单个的函数输入值可以由多个被编码的输入值代表。此外,一些或所有的表格和/或表格网络具有多种函数属性,在具有多种函数属性的表格网络中,一些或者所有的表格网络与用于验证结果的第二表格网络配对。
在某些时刻,发现了结果值。如果需要的话,结果可以被解码,例如使用解码表格542,例如图1中图示的表格170。但是,结果也可以编码的形式被导出。还可以从输入设备获取输入值,并且输出值可被用来在屏上示出。
实行关于被编码的数据字的计算。通过应用一系列的表格查找访问来完成计算。所使用的输入值可以是从计算设备外部接收到的输入值,但是也可以通过之前的查找表格访问来获取。这样,获得中间结果,然后中间结果可以被用于新的查找表格访问。在某时刻,中间结果中的一个是函数的被编码的结果。
计算设备500可包括用于向数据函数输入分配状态输入值的随机数字发生器。
图6以流程图图示编译方法600。在步骤610中,第一计算机程序由接收器接收。在步骤620中,实行词法分析,例如,以由词法分析器识别标记。也许还完成诸如宏扩展之类的处理。在步骤630中,由解析器对程序进行解析。例如,解析器根据第一程序的编程语言的形式语法生成解析树。解析器识别程序中的不同的语言结构,并且调用合适的代码生成例程。特别地,算子或多个算子被识别。在该情形中,在步骤640中,由代码生成器完成代码生成。在代码生成期间,一些代码被生成,并且如果需要的话,伴随的表格被生成。伴随的表格包括被配置用于两个函数的表格:一个用于所需要的算子和状态函数, 即第一表格或第一表格网络。第一表格网络中的一些与对应的第二表格网络配对。有各种方式来决定哪个第一表格网络与第二表格网络配对。编译器可被配置成将所有的第一表格网络与第二表格网络配对。编译器可被配置成检测在接收到的计算机程序中的开始和停止标签,所述标签向编译器指示开始生成第二表格网络以及用于将它们应用到第一表格网络的输出的对应的代码。编译器可生成用于第一表格网络的随机样本的第二表格网络。
所生成的代码不需要并且一般将不包含算子,因为其由一个或多个查找表替换。可以随机地选取状态函数。状态函数还可以被选取为程序的结果,例如,状态函数可以是将允许表格被再使用的另一需要的算子。例如,解析器将识别并添加操作并且将其转换为针对添加指令的查找表以及用于将查找表应用于正确的值的所生成的代码。编译器可选择随机的函数作为状态函数。编译器还可从函数的集合(比如,加、减、乘等)中随机地选取函数。
在步骤655中,生成的表格被合并至表格底(base),因为很可能发生一些表格被多次生成,在该情形中不需要将它们多次存储。例如,可能需要增加-表格并且仅生成一次。当所有的代码被合并并且所有的表格被合并时,完成编译。可选地,可存在优化步骤。
通常,编译器使用被编码的域,即,其中所有的值或者至少所有的与一些准则对应的值被编码的程序的区段,即,具有代码字位大小(n)。在被编码的域中,可通过查找表执行来执行操作。当被编码的域被输入时,所有的值被编码,当被编码的域被留下时,所有的值被解码。准则可以是值被相关联,或者取决于安全性敏感信息,例如密钥。
下面是创建编译器的有趣方式。在步骤630中,完成了中间的编译。这可以是中间的语言,例如,寄存器传送语言等,但是也可以是机器语言代码编译。这意味着对于图6的步骤610-630,可以使用不产生表格网络的常规的编译器。然而,在步骤640中,基于中间的编译来完成代码生成。例如,如果使用机器语言代码,则每个指令由该指令的对应的无算子的实施方式(即该指令的基于表格的实施方式)替代。这代表特别直截了当的创建编译器的方式。图6还被用于生成不产生机器语言而产生第二编程语言的编译器。
在实施例中,编译器是用于将以第一计算机编程语言编写的第一计算机程序编译成第二计算机程序的编译器,编译器包括通过生成表格和机器语言代码生成第二计算机程序的代码生成器,所生成的表格和生成的机器语言代码一起形成第二计算机程序,所生成的机器语言代码引用表格,其中编译器被配置成识别第一计算机程序中的算术或者逻辑表达,该表达取决于至少一个变量,并且代码生成器被配置成生成代表针对该变量的多个值的所识别的表达的预先计算的结果以及代表至少一个其它的表达的一个或多个表格,并且被配置成生成机器语言代码以通过访问代表预先计算的结果的所生成的一个或多个表格来以第二计算机程序实施所识别的表达。理想地,被生成以实施所识别的表达的机器语言代码不包含算术或者逻辑机器指令自身,至少没有与敏感信息有关的算术或者逻辑机器指令。对表格进行逆向工程的攻击者可发现其可代表所识别的表达,但是其还可代表其它的表达。
这增加了对抗逆向工程的抵抗并且降低了第二计算机程序的边-信道泄露,因为其含有较少的算术或者逻辑操作。理想地,所有的算术和逻辑表达以及其中的子表达由表格访问替换。因为不存在构成算术或者逻辑表达以及子表达的那些指令,所以它们不能泄露任何信息。表格被预先计算,被消耗以实行包括在表格中的算术或逻辑行为的功率在程序的执行期间是不可见的。
下面,给出有利的表格网络的进一步的细节和进一步的实施例。
如前面,我们将 称作我们希望进行编码的运算量(操作的输入和输出值)的集合,和“状态”的有限集合以及具有等于的基数的积的基数的有限集合V。如果没有消除它的容易的方式,则以上描述的数据路径的延伸是更有利的。如果攻击者将能够发现或者隔离每个,则我们考虑该数据路径延伸在安全性方面被破坏。我们描述旨在发现等价类的两种有关的攻击。
第一种攻击是其中虚拟机(VM)和程序向用户提供输出的延伸的设置,其中该输出不依赖于状态(实际上,人们可能对变量进行加密,这不是依赖于状态完成)。例如:在屏幕上提供图像的解密引擎。在这样的设置中,攻击者可按照如下做:对于程序中的每个变量,他预测其状态信息。攻击者写下最初的值,开始用其它的值t替代该变量。对于产生正确的图像的所有的值t,攻击者知晓t属于集合,v 是该集合中的代表。即使对于未被正确地显示的图像,攻击者可将所得到的错误的图像进行比较并且断定导致相同的误差的取代v的值s和t将代表相等的值。第二种类似的攻击是在功能元件(比如算子)的输出上,其可能被制成表,假如在表格中。如果程序使用表格输出,则攻击者可变更表格的位置i中的值。如果算法成功,则攻击者知道位置i处的新的入口(很可能)在集合中。
向程序添加冗余。结果,在程序的执行期间,可能检测到缺陷并且可采取合适的措施。在一个实施例中,关于缺陷检查的反应是如下:如果检测到变量中的缺陷,则改变变量的值(很可能导致不正确的程序输出),而否则,变量的状态改变,但是其值保持相同。
可以使用三个部件:
- 向程序添加冗余,例如,除了运算量之外的状态,即函数值。
- 在程序的执行期间(或者之后)使用冗余以检测未预期的情况。
- 采取作为使用用于未预期的情况的检测的冗余的结果的动作。
例如,程序的不同版本可能并行地(例如交错地)运行。不同的版本可具有不同的编码E和/或针对程序中的变量的状态的不同的初始值。更具体而言,假定我们具有程序P以及并行地运行m个版本。版本i 使用编码E i 并且具有σ i 作为用于所有的(或者一些)变量的初始状态矢量。我们将P的第i个版本表示为 E i (P,σ i ).。优选地,编码是截然不同的。
所有的版本并行地运行,并且在程序执行的任何时刻,可以检查程序中的一个或多个对应的变量是否匹配。注意,我们可省略检查一个或多个变量的匹配,并且不是所有的被检查的变量需要在所有的程序中被检查。例如,如果我们具有三个版本的带有三个变量x,y,z的程序P,则我们针对全部的三个版本中的匹配检查变量x,针对版本1和3之间变量y的匹配进行检查,并且根本不检查变量z。在失配的情形中,可以采取各种动作,例如,停止程序的执行,用修改的值继续运行,等。
并行地运行多个程序可能是相当昂贵的。现在我们描述更加经济的、并且旨在挫败其中表格被改变的攻击的第二实施例。作为说明性的示例,我们考虑保护防止改变实施两个变量的函数f的表格中的入口。
我们使用以下的记号。我们通过要求针对每个,我们具有来定义函数 以及 。我们假定: 的机密排列P。因此对于每个以及 函数 如以上所解释地实施函数
,其中
每当函数f 将被计算时,利用输入 xy,我们可以运行如由下面的伪代码表达的程序:
函数使得如果,则 并且否则是另一值,比如随机值。例如,如果 我们可以采取 使用具有由来自的元素标记的入口的表格T,可以完成v的评估,使得对于 在以上的伪代码中,xy的状态值无阻碍地出现。如果我么使用下面的程序:,则可避免这一点,后者被实施为单个的表格。函数使得如果且仅当时Z(u,x,y) = w(u)。v 的评估可使用具有由的元素标记的入口的表格T来完成,使得对于所有的
作为第三种替代,我们可以使用下面的程序。
其中函数 使得如果且仅当时,。可以使用带有由的元素标记或者由的入口标记的入口的表格T完成 a的评估,使得对于所有的(如果出现在程序中的话)。在后一情形中,对于所有的。可以使用带有由来自的元素标记的入口的表格U来完成v 的评估,使得对于所有的
作为第四种替代,我们可以使用与第三种替代非常类似的下面的程序 其中函数使得如果且仅当时,。可以使用带有由的元素标记的、或者由的入口标记的入口的表格T完成 a的评估,使得对于所有的(如果出现在程序中的话)。在后一情形中,对于所有的。可以使用具有由来自的元素标记的入口的表格U来完成v 的评估,使得对于所有的
下面说明用于以上程序的中的第一个的基本原理(类似的说理适用于其它的变型)。假定攻击者将实施F的表格T中的入口[x,y] 从 a 修改为 a’。我们应用具有输入x 和 y的以上程序。因而我们具有, 以及。现在我们考虑两种情形。
首先我们假定。由于 我们具有。 由于z的属性得出, 并且因此,我们假定 我们具有, 也就是说,换言之:的值不等于 F(x,y)的值。也就是说:程序将用具有不正确的值不变量继续,并且攻击者将认为如果的值可能等于或者可能不等于F(x,y)的值。在第一种情形中,攻击者认为 这显然是帮助防卫者。在第二种情形中,攻击者将认为 这对于他而言不是非常有用的信息。
在以上的变型中,我们观察变量uv 的变换,使得如果且仅当 u 的状态匹配于基于xy预期的状态时。概括而言,替代匹配状态值,状态值的函数被匹配。例如,如果且仅当状态和预期的状态在给定数目的它们的最高有效位(MSB)中或者在给定的它们的最低有效位(LSB)中一致时,或者如果状态以及预期的状态的符号上的检查和一致时,
第二实施例的变型保护防止其中表格入口被改变的攻击。我们接下来考虑给予对抗其中变量被改变的攻击的保护的第三实施例。为了这样做,对于每个我们希望保护的变量,我们保持追踪对应的变量(在正常的情况下,其应等于。每当x 被更新时, 也被更新。因此,用于更新x和的程序的部分必须同步。优选地,的更新不使用被用来更新x的任何变量, 而只是对应于这些变量的像状态的变量中的变量。例如,假定我们具有带有对应的像状态的变量的变量,并且我们将x 改变至F(x,y)。然后我们也将更新至 其中 使得 (像状态的变量是具有中而不是V中的值的变量)。
状态混合函数g 对于不同的函数F可以是不同的。也就是说,更新的方式可取决于正在被应用至x的变换。更一般地,更新的方式可能取决于更新之前的x和/或被用于更新x的函数(方法、程序)。每次更新x的值时,可以检查的值,但是这不是必需的。每当检查确实发生时, 可以应用下面的程序: (A)。在此, 的排列,并且函数使得如果且仅当
换言之:如果状态和预期的状态匹配,则x的值保持相同,但其状态被改变。如果状态和预期的状态不匹配,则x的值被变更。可以使用带有由来自的元素标记的入口的表格T来完成x的评估,使得对于所有的
注意,在程序之后,我们具有 如果攻击者设法禁用从程序对x 的更新或者 (但不是二者)的更新,则在随后的检查时, 极可能是不相等的,并且x的值将被改变(除非,攻击者还设法禁用从以上程序更新x)。
同等地,(A) 中的分配的次序可以被更改至 其中使得如果且仅当或者,同等地,如果且仅当。再次,可以使用带有由来自的元素标记的入口的表格来完成 x 的评估。
替代性的程序是如下:
可以使用具有由来自的元素标记的入口的表格来完成x 的评估,使得对于所有的。注意,在该替代方案中,可使用带有由来自V的元素标记的入口的表格U来完成针对的更新,使得 ,或者,如果让 明确地出现没有害处,人们可以首先找到带有用于的表格的,并且随后使用具有由来自W的元素标记的入口的表格Y找到 。表格Y具有比表格U更少的入口。
在更一般的设置中,检查之后的x 的新状态不仅取决于,还取决于x。然后,替代(B) ,我们使用
其中 使得对于所有的 。可以使用具有由来自于的元素标记的入口的表格来完成x 的评估,使得对于所有的
图7以流程图图示方法700。在步骤710,获取用于存储在电子存储装置上的第一表格网络的多个第一表格输入。例如,可以从之前的表格接收它们。在步骤720,第一表格网络被应用于多个第一表格输入来计算数据函数。例如,计算机程序代码可指令处理器查找第一表格网络的表格中的特定的表格入口(如由多个输入所指示的)。即使使用多个输入,这也可通过对这些中的一些或者所有一起进行编码而被混淆。在步骤730,获取用于存储在电子存储装置上的第二表格网络的多个第二表格输入,第二表格输入包括第一表格网络的输出和多个第一表格输入中的至少一个。在步骤740,该第二表格网络则被应用至多个第二表格输入以产生包括被保护的函数输出的第二表格输出。
而且,第二表格网络可以是其中完成单个的表格查找的单个表格,然而,该表格已经被构造使得若干件事情一起发生,包括步骤744、748和749。已经用虚线箭头图示了这一点。在步骤740,产生包括被保护的函数输出的第二表格输出。在步骤744,针对多个第一表格输出中的至少具体的一个验证未修改的第一表格网络是否能够从多个第一表格输入中的给定的至少一个获取多个第一表格输出中的该具体的一个。取决于该验证,采取步骤748或者749。在步骤748(即,在验证未成功的情形中,即不能获取该值),被保护的函数输出不等于函数输出。在步骤749(即,在验证是成功的情形中,即可以获取该值),被保护的函数输出等于函数输出。
可以在下一次计算中使用被保护的输出。注意,被保护的输出可以与状态值(即,从第一表格输出获取的状态值)一起被编码。优选地,状态值被排列。由于函数和状态值被一起编码,这具有整个的编码的值看起来改变的效果。在优选的实施例中,被保护的输出与状态值组合,并且该状态值一直被排列,使得攻击者不能看出是否已经应用了748或749。
正如对本领域技术人员将是显然的,执行该方法的许多不同的方式是可能的。例如,步骤的次序可以被更改或者一些步骤可以并行执行。而且,其它的方法步骤可以插入步骤之间。被插入的步骤可代表诸如在本文描述的方法的精化,或者可能与该方法无关。例如,步骤744、748和/或749优选地由单个的表格查找执行,或者由单个的表格网络中的一系列表格查找以不同的优选性折衷执行。而且,在开始下一个步骤之前,可能尚未完全完成给定的步骤。
可使用软件执行根据本发明的方法,所述软件包括用于引起处理器系统实行方法700的指令。软件可只包括由系统的特定的子实体所采取的那些步骤。软件可以被存储在适当的存储介质中,诸如硬盘、软盘、存储器等。软件可以作为信号沿着接线被发送,或者被无线地发送,或者使用数据网络(例如互联网)发送。软件可以被作出为可用于下载和/或用于服务器上的远程使用。
将领会到的是,本发明还延展至计算机程序,特别是适用于将本发明投入实践的载体上或者载体中的计算机程序。程序可以是源代码、目标代码、代码中间源和诸如被部分编译的形式的目标代码的形式,或者适合在根据本发明的方法是实施中使用的任何其它的形式。与计算机程序产品有关的实施例包括对应于所阐述的方法中的至少一个的处理步骤中的每个步骤的计算机可执行指令。这些指令可以被细分成子例程和/或被存储在可以被静态或者动态地链接的一个或多个文件中。与计算机程序产品有关的另一实施例包括对应于所阐述的系统和/或产品中的至少一个的构件中的每个构件的计算机可执行指令。
应当注意,以上提到的实施例图示而不是限制本发明,并且本领域技术人员将能够设计许多替代性实施例。
在权利要求中,任何放置在括号之间的附图标记不应被解释为限制权利要求。动词“包括”及其词形变化的使用不排除与在权利要求中陈述的那些不同的元件或步骤的存在。元件之前的冠词“一”或“一个”不排除多个这样的元件的存在。本发明可借助包括若干个分立元件的硬件,或者借助适当地被编程的计算机来实施。在列举若干个构件的设备权利要求中,这些构件中的若干个可以由一个且同一个硬件的项目来体现。某些措施仅被记载在相互不同的从属权利要求中这一单纯事实不指示这些措施的组合不能被有利地使用。
图1, 2, 3, 4, 5, 8a和 8b的附图标记列表:
100 表格网络
102, 104 函数输入值
110 编码器
112, 114 状态输入值
122, 124 被编码的输入值
130 用于数据函数和状态函数的表格
160 被编码的输出值
162 函数输出值
164 状态输出值
170 解码器
180 表格网络
202, 204 计算设备
210, 220 第一表格输入 A
212, 222 第一表格网络 A
214, 224 第一表格网络B
216, 226 第一表格输出A
232 第二表格网络A
234 第二表格网络B
236 第二表格输出 A
300 计算设备
305 输入x=E(w,p)
307 输出u
310 第一表格网络
312 数据函数 f
314 状态函数 g
320 状态提取器表格
322 表格320的输出
330 对准表格
332 z函数
334 排列
340 第二表格网络
410 输入表格
420 中间表格
430 输出表格
500 计算设备
510 存储设备
521, 522 单个的输入查找表格
531, 532 多个输入查找表格
5311-5323 单个的输入查找表格
541 编码查找表格
542 解码查找表格
550 计算机处理器
555 机器语言代码
560 I/O 设备
800 计算设备
805,806,816 状态输入
807,817 状态输出
810,820 状态函数表格
830 数据函数表格
836 函数输入
837 函数输出。

Claims (11)

1.一种被配置成计算关于函数-输入值的数据函数的计算设备,所述计算设备包括存储被配置用于所述数据函数的第一表格网络的电子存储装置,
- 所述计算设备包括耦合至所述电子存储装置并且被配置成获取用于所述第一表格网络的多个第一表格输入的电子处理器,所述多个第一表格输入包括所述函数-输入值,并且所述电子处理器被配置成通过向所述多个第一表格输入应用所述第一表格网络以产生多个第一表格输出来计算所述数据函数,所述多个第一表格输出包括函数-输出值,所述函数-输出值对应于向所述函数-输入值应用所述数据函数的结果,其中
- 所述电子存储装置还存储第二表格网络,所述第二表格网络被配置成与所述第一表格网络合作以反击针对所述第一表格网络做出的修改,所述电子处理器被配置成获取用于所述第二表格网络的多个第二表格输入,所述第二表格输入包括所述多个第一表格输出,并且所述第二表格输入与所述多个第一表格输入共享至少一个输入,并且所述电子处理器被配置成向所述多个第二表格输入应用所述第二表格网络,所述第二表格网络被配置成针对所述多个第一表格输出中的至少具体的一个来验证未修改的第一表格网络是否能够从所述多个第一表格输入中的给定的至少一个获取所述多个第一表格输出中的所述具体的一个,
- 所述第二表格网络产生包括被保护的函数输出的第二表格输出,在所述验证是成功的情形中所述被保护的函数输出等于所述函数-输出值 ,以及在对于所述多个第一表格输入中的至少一些值而言所述验证是不成功的情形中,所述被保护的函数输出不等于所述函数-输出值。
2.如权利要求1中所述的计算设备,其中
- 所述多个第一表格输入包括状态-输入值,并且所述多个第一表格输出包括状态-输出值,其中所述状态-输出值等于向所述状态-输入值应用状态函数的结果,并且
- 所述第二表格网络被配置成使得与所述多个第一表格输入共享的所述第二表格输入包括所述状态-输入值,所述第二表格网络被配置成使得在向所述状态-输入值应用所述状态函数的结果等于包括在被输入至所述第二表格网络的所述多个第一表格输出中的状态值的情形中,所述被保护的函数输出等于所述函数-输出值。
3.如权利要求1中所述的计算设备,其中
- 所述第一表格网络被配置成采取被编码的输入值作为输入,所述被编码的输入值将所述函数-输入值与被一起加密的状态-输入值一起组合成单个的值,并且
- 所述第一表格网络被配置成产生第一被编码的输出值作为输出,所述第一被编码的输出值将所述函数-输出值与被一起加密的状态-输出值一起组合成单个的值,其中所述状态-输出值等于向所述状态-输入值应用状态函数的结果,
- 所述第二表格网络被配置成采取所述第一表格网络的所述第一被编码的输出值以及所述状态-输入值和所述函数-输入值中的至少一个作为输入,所述第二表格网络被配置成产生第二被编码的输出值作为输出,所述第二被编码的输出值包含所述被保护的函数输出。
4.如权利要求3中所述的计算设备,其中所述第二表格网络被配置成产生第二被编码的输出值作为输出,所述第二被编码的输出值将所述被保护的函数输出值与一起被加密的被保护的状态-输出值一起组合成单个的值,所述被保护的状态-输出值等于向所述状态-输出值应用状态排列的结果。
5.如权利要求2、3和4中的任一项所述的计算设备,其中所述第二表格网络包括状态表格网络和对准表格网络,所述状态表格网络被配置用于所述状态函数,所述电子处理器被配置成向所述状态-输入值应用所述状态表格以获取平行的状态输出值,所述对准表格网络被配置成接收至少所述平行的状态输出值以及从所述第一表格网络接收到的状态-输出值作为输入。
6.如权利要求2、3和4中的任一项所述的计算设备,其中所述第二表格网络包括经修改的状态表格和对准表格网络,该状态表格被配置成接收所述状态-输入值作为输入并且计算经修改的状态值,所述经修改的状态值等于向由另外的状态函数跟随的状态-输入值应用状态函数的结果,所述对准表格网络被配置成采取所述状态-输出值和所述经修改的状态值作为输入,并且验证应用到所述状态-输出值的所述另外的状态函数产生所述经修改的状态值。
7.如权利要求5所述的计算设备,其中包含被编码的形式的函数值和状态值的被编码的变量以及状态变量被并行地维持,其中所述被编码的变量和所述状态变量处于可验证的关系。
8.如权利要求1-4中的任一项所述的计算设备,其中
- 所述第二表格网络被配置成采取所述函数-输入值作为输入,所述第二表格网络被配置成使得在向所述函数-输入值应用所述数据函数的结果等于所述第一被编码的输出值中被编码的函数-输出值的情形中所述被保护的函数输出等于所述函数-输出值。
9.一种用于计算关于函数-输入值的数据函数的设备,包括:
- 用于接收数据函数的装置;和
- 用于产生第一和第二表格网络的装置,其中
所述第一表格网络被配置成接收用于所述第一表格网络的多个第一表格输入,所述多个第一表格输入包括所述函数-输入值,并且所述第一表格网络被配置成产生多个第一表格输出,所述多个第一表格输出包括函数-输出值,所述函数-输出值对应于向所述函数-输入值应用所述数据函数的结果,其中
所述第二表格网络被配置成与所述第一表格网络合作,以反击针对所述第一表格网络做出的修改,所述第二表格网络被配置成接收多个第二表格输入,所述第二表格输入包括所述多个第一表格输出,并且所述第二表格输入与所述多个第一表格输入共享至少一个输入,所述第二表格网络被配置成针对至少所述多个第一表格输出中的至少具体的一个来验证未修改的第一表格网络是否能够从所述多个第一表格输入中的给定的至少一个获取所述多个第一表格输出中的该具体的一个,
所述第二表格网络产生包括被保护的函数输出的第二表格输出,在所述验证是成功的情形中所述被保护的函数输出等于所述函数-输出值,并且在所述验证对于所述多个第一表格输入中的至少一些值而言是不成功的情形中,所述被保护的函数输出不等于所述函数-输出值。
10.一种计算关于函数-输入值的数据函数的电子方法,包括
- 在电子存储装置上存储被配置用于所述数据函数的第一表格网络,
- 获取用于所述第一表格网络的多个第一表格输入,所述多个第一表格输入包括函数-输入值,
- 通过向所述多个第一表格输入应用所述第一表格网络以产生多个第一表格输出来计算所述数据函数,所述多个第一表格输出包括函数-输出值,所述函数-输出值对应于向所述函数-输入值应用所述数据函数的结果,
- 存储第二表格网络,所述第二表格网络被配置成与所述第一表格网络合作以反击针对所述第一表格网络做出的修改,
- 获取用于所述第二表格网络的多个第二表格输入,所述第二表格输入包括所述多个第一表格输出,并且所述第二表格输入与所述多个第一表格输入共享至少一个输入,并且向所述多个第二表格输入应用所述第二表格网络,所述第二表格网络被配置成针对所述多个第一表格输出中的至少具体的一个来验证未修改的第一表格网络是否能够从所述多个第一表格输入中的给定的至少一个获取所述多个第一表格输出中的所述具体的一个, 所述第二表格网络产生包括被保护的函数输出的第二表格输出,在所述验证是成功的情形中所述被保护的函数输出等于所述函数-输出值,以及在对于所述多个第一表格输入中的至少一些值而言所述验证是不成功的情形中,所述被保护的函数输出不等于所述函数-输出值。
11.一种用于计算关于函数-输入值的数据函数的设备,包括
- 用于在电子存储装置上存储被配置用于所述数据函数的第一表格网络的装置,
- 用于获取用于所述第一表格网络的多个第一表格输入的装置,所述多个第一表格输入包括函数-输入值,
- 用于通过向所述多个第一表格输入应用所述第一表格网络以产生多个第一表格输出来计算所述数据函数的装置,所述多个第一表格输出包括函数-输出值,所述函数-输出值对应于向所述函数-输入值应用所述数据函数的结果,
- 用于存储第二表格网络的装置,所述第二表格网络被配置成与所述第一表格网络合作以反击针对所述第一表格网络做出的修改,
- 用于获取用于所述第二表格网络的多个第二表格输入的装置,所述第二表格输入包括所述多个第一表格输出,并且所述第二表格输入与所述多个第一表格输入共享至少一个输入,并且向所述多个第二表格输入应用所述第二表格网络,所述第二表格网络被配置成针对所述多个第一表格输出中的至少具体的一个来验证未修改的第一表格网络是否能够从所述多个第一表格输入中的给定的至少一个获取所述多个第一表格输出中的所述具体的一个, 所述第二表格网络产生包括被保护的函数输出的第二表格输出,在所述验证是成功的情形中所述被保护的函数输出等于所述函数-输出值,以及在对于所述多个第一表格输入中的至少一些值而言所述验证是不成功的情形中,所述被保护的函数输出不等于所述函数-输出值。
CN201380066929.8A 2012-12-21 2013-12-19 计算关于函数‑输入值的数据函数的计算设备和方法 Active CN104919750B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261740726P 2012-12-21 2012-12-21
US61/740726 2012-12-21
US201361767856P 2013-02-22 2013-02-22
US61/767856 2013-02-22
EP13156302 2013-02-22
EP13156302.5 2013-02-22
PCT/EP2013/077267 WO2014096117A1 (en) 2012-12-21 2013-12-19 Computing device configured with a table network

Publications (2)

Publication Number Publication Date
CN104919750A CN104919750A (zh) 2015-09-16
CN104919750B true CN104919750B (zh) 2017-06-06

Family

ID=47877774

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380066929.8A Active CN104919750B (zh) 2012-12-21 2013-12-19 计算关于函数‑输入值的数据函数的计算设备和方法

Country Status (8)

Country Link
US (1) US9594769B2 (zh)
EP (1) EP2936730B1 (zh)
JP (1) JP5861018B1 (zh)
CN (1) CN104919750B (zh)
BR (1) BR112015014946A2 (zh)
MX (1) MX343892B (zh)
RU (1) RU2661308C2 (zh)
WO (1) WO2014096117A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013205166A1 (de) * 2013-03-22 2014-09-25 Robert Bosch Gmbh Verfahren zum Erzeugen einer Einwegfunktion
US9998279B2 (en) 2013-05-01 2018-06-12 Koninklijke Philips N.V. Electronic block cipher device suitable for obfuscation
EP3078154B1 (en) * 2013-12-05 2018-09-19 Koninklijke Philips N.V. A computing device for iterative application of table networks
SG10201405852QA (en) * 2014-09-18 2016-04-28 Huawei Internat Pte Ltd Encryption function and decryption function generating method, encryption and decryption method and related apparatuses
RU2715021C2 (ru) 2014-12-22 2020-02-21 Конинклейке Филипс Н.В. Скрытие исполнения программы
JP6423100B2 (ja) 2014-12-24 2018-11-14 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 暗号のシステム及び方法
KR102311340B1 (ko) * 2015-01-15 2021-10-15 한국전자통신연구원 암호화 장치 및 방법
US10685587B2 (en) * 2015-04-30 2020-06-16 Koninklijke Philips N.V. Cryptographic device for calculating a block cipher
JP6499323B2 (ja) * 2015-05-19 2019-04-10 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 暗号化された値での計算
NL2015745B1 (en) * 2015-11-09 2017-05-26 Koninklijke Philips Nv A cryptographic device arranged to compute a target block cipher.
US11755288B2 (en) 2016-11-08 2023-09-12 Koninklijke Philips N.V. Secure transformation from a residue number system to a radix representation
RU2019121710A (ru) 2016-12-12 2021-01-12 Конинклейке Филипс Н.В. Электронное вычислительное устройство, выполненное с возможностью вычисления произведения целых чисел

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102461058A (zh) * 2009-03-10 2012-05-16 爱迪德有限责任公司 具有输入相关编码的白盒密码系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10154976A (ja) * 1996-11-22 1998-06-09 Toshiba Corp タンパーフリー装置
FR2838262B1 (fr) * 2002-04-08 2004-07-30 Oberthur Card Syst Sa Procede de securisation d'une electronique a acces crypte
JP4884976B2 (ja) * 2003-12-11 2012-02-29 イルデト・コーポレート・ビー・ヴイ 各暗号化ラウンドのコア暗号化関数を隠蔽するために置換を用いたブロック暗号化システム
US8479016B2 (en) * 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
JP5496663B2 (ja) * 2006-07-12 2014-05-21 イルデト・コーポレート・ビー・ヴイ デジタルデータ処理装置の耐改竄性
JP5113169B2 (ja) * 2006-07-12 2013-01-09 イルデト・コーポレート・ビー・ヴイ 暗号関数を難読化する方法およびシステム
JP5261088B2 (ja) * 2008-09-09 2013-08-14 富士通株式会社 不正操作検知回路、不正操作検知回路を備えた装置、及び不正操作検知方法
US8914621B2 (en) 2009-04-02 2014-12-16 Infineon Technologies Ag Processing unit that detects manipulations thereof, device comprising two processing units, method for testing a processing unit and a device comprising two processing units
PL2520041T3 (pl) * 2009-12-30 2016-09-30 Sposób generowania tabeli korelacji dla białej skrzynki kryptograficznej
RU2439693C1 (ru) * 2010-06-04 2012-01-10 Федеральное государственное учреждение "Государственный научно-исследовательский испытательный институт проблем технической защиты информации Федеральной службы по техническому и экспортному контролю" Способ защиты текстовой информации от несанкционированного доступа
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
US8718280B2 (en) * 2010-12-17 2014-05-06 Apple Inc. Securing keys of a cipher using properties of the cipher process
JP2012182779A (ja) * 2011-01-31 2012-09-20 Nippon Hoso Kyokai <Nhk> 受信装置、放送システム及びプログラム
US9525435B2 (en) * 2012-11-07 2016-12-20 Koninklijke Philips N.V. Computing device storing look-up tables for computation of a function
EP2936727A1 (en) 2012-12-21 2015-10-28 Koninklijke Philips N.V. Computing device comprising a table network

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102461058A (zh) * 2009-03-10 2012-05-16 爱迪德有限责任公司 具有输入相关编码的白盒密码系统

Also Published As

Publication number Publication date
CN104919750A (zh) 2015-09-16
US9594769B2 (en) 2017-03-14
BR112015014946A2 (pt) 2017-07-11
JP5861018B1 (ja) 2016-02-16
EP2936730A1 (en) 2015-10-28
WO2014096117A1 (en) 2014-06-26
US20150293911A1 (en) 2015-10-15
RU2661308C2 (ru) 2018-07-13
EP2936730B1 (en) 2016-06-15
MX343892B (es) 2016-11-28
RU2015123670A (ru) 2017-01-10
JP2016507940A (ja) 2016-03-10
MX2015006158A (es) 2015-08-05

Similar Documents

Publication Publication Date Title
CN104919750B (zh) 计算关于函数‑输入值的数据函数的计算设备和方法
Moss et al. Compiler assisted masking
CN104662549B (zh) 使用交叉链接来保护可访问的系统
US9053300B2 (en) Device and a method for generating software code
Banescu et al. A tutorial on software obfuscation
Eyrolles Obfuscation with Mixed Boolean-Arithmetic Expressions: reconstruction, analysis and simplification tools
CN105765896B (zh) 用于表格网络的迭代应用的计算设备
Manikyam Program protection using software based hardware abstraction
US10331896B2 (en) Method of protecting secret data when used in a cryptographic algorithm
US20200151007A1 (en) Lightweight dispatcher for program control flow flattening
CN107113160B (zh) 用于隐藏程序执行的系统、方法和计算机存储介质
Banescu Characterizing the strength of software obfuscation against automated attacks
Moss et al. Automatic insertion of dpa countermeasures
JP2007157021A (ja) 耐タンパ証明携帯プログラム配信システム及びその方法
Badier et al. Protecting Behavioral IPs During Design Time: Key-Based Obfuscation Techniques for HLS in the Cloud
Wilhoite Code Obfuscation: methods and practicality within automation
Bhattacharya Property driven program slicing and watermarking in the abstract interpretation framework
Breuer An Obfuscating Compiler

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220905

Address after: No.018, 8th floor, building 6, No.33 yard, middle Xierqi Road, Haidian District, Beijing

Patentee after: BEIJING XIAOMI MOBILE SOFTWARE Co.,Ltd.

Address before: Holland Ian Deho Finn

Patentee before: KONINKLIJKE PHILIPS N.V.