CN105453481B - 包括表网络的计算设备 - Google Patents

包括表网络的计算设备 Download PDF

Info

Publication number
CN105453481B
CN105453481B CN201380067505.3A CN201380067505A CN105453481B CN 105453481 B CN105453481 B CN 105453481B CN 201380067505 A CN201380067505 A CN 201380067505A CN 105453481 B CN105453481 B CN 105453481B
Authority
CN
China
Prior art keywords
function
value
state
input
input value
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.)
Expired - Fee Related
Application number
CN201380067505.3A
Other languages
English (en)
Other versions
CN105453481A (zh
Inventor
L.M.G.M.托胡伊泽恩
P.M.H.M.A.戈里斯森
M.邓
A.A.M.L.布鲁伊克斯
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.)
Koninklijke Philips NV
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 CN105453481A publication Critical patent/CN105453481A/zh
Application granted granted Critical
Publication of CN105453481B publication Critical patent/CN105453481B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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

提供了一种计算设备,其被配置为根据函数输入值计算数据函数,其包括电子存储装置和与存储装置耦合的电子处理器,该电子存储装置存储被配置用于数据函数的表网络,该电子处理器被配置为通过应用表网络来计算数据函数,其中该设备被配置为获得函数输入值作为编码的输入值,编码的输入值将被一起加密到单个值中的状态输入值与函数输入值组合在一起,表网络被配置为将编码的输入值当作输入并且生成编码的输出值作为输出,编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起,其中函数输出值等于对函数输入值应用数据函数的结果以及状态输出值等于对状态输入值应用状态函数的结果。

Description

包括表网络的计算设备
技术领域
本发明涉及被配置为根据函数输入值计算数据函数的计算设备,该设备包括电子存储装置和与存储装置耦合的电子处理器,电子存储装置存储被配置用于数据函数的表网络,电子处理器被配置为通过应用表网络来计算数据函数,其中,该设备被配置为获得函数输入值作为编码的输入值,表网络被配为将编码的输入值当作输入并且生成编码的输出值、编码的函数输出值作为输出,函数输出值等于对函数输入值应用了数据函数的结果。
本发明还涉及对应的方法和编译器。
背景技术
US 2012/0300922公开了一种用于生成适合于用在密码学处理方法中的对应关系表并且包括将多个输入数据和多个输出数据存储在该表中的方法,每个输入数据与该表中的至少一个输出数据相关联。对于每个输入数据,所述输出数据中的至少一个是通过对第一辅助数据和根据输入数据加密的中间数据应用编码化函数而获得的。
US 2012/0155638公开了在启用计算机的密码学领域,通过保护密码密钥,通过在使用一个密钥加密或解密消息之前对其应用预定线性置换来硬化诸如块密码之类的密码来对抗攻击。这在“白盒”环境中特别有利,在“白盒”环境中,攻击者在密码算法的执行期间具有对于密码算法(包括算法内部状态)的完全访问权。该方法和关联的计算装置是有用的,其中密钥通过一个过程导出,因此其在具体实现密码的软件代码被编译时是未知的。这典型地是以下情况,其中存在密码的许多用户并且每个用户具有他自己的密钥,或者其中每个用户会话具有它自己的密钥。
在传统密码学中,典型地假设,攻击者仅仅有权访问安全系统的输入和输出值。例如,攻击者将能够观察到将进入系统的明文文本并且观察到离开系统的加密的文本。尽管攻击者可以尝试通过分析这样的输入/输出对,可能地甚至使用在计算上加强的方法,来得到益处,但是他不会想到有权直接访问实施输入/输出行为的系统。
近来,考虑威胁模型已经变得必要,其中假设攻击者对于实现方式有一些了解。例如,可以考虑边信道分析和反向工程的威胁。此外,先前与安全问题最关联的关注点已经延展到其他领域,比如机密性。尽管处理诸如密码学密钥之类的安全信息的密码学系统仍然是主要的关注点,但是其他程序(例如,处理机密性相关的信息的那些程序)的保护也变得重要。
长期已知的是,计算机系统通过所谓的边信道泄露一些信息。观察计算机系统的输入-输出行为可以不提供关于敏感信息(比如计算机系统所使用的秘密密钥)的任何有用的信息。但是计算机系统具有可以被观察的其他信道,例如其功耗或电磁辐射;这些信道被称作边信道。例如,不同指令所消耗的功率的小变化和在执行指令时消耗的功率的变化可以被测量。所测量的变化可以是关于敏感信息的,比如密码学密钥。超出可观察的有意的输入-输出行为的关于秘密信息的该附加信息被称为边信道。通过边信道,计算机系统可以在其使用期间“泄露”秘密信息。与可以仅仅从输入-输出行为的密码学分析获得信息相比,观察并分析边信道可以使攻击者访问到更好的信息。一种已知类型的边信道攻击是所谓的差分功率分析(DPA)。
针对边信道问题的当前方法引入了计算上的随机性。例如,在执行程序的真实操作之间可以插入空(dummy)指令以弄模糊功率消耗与程序正在其上工作的数据之间的关系。
关于计算机的甚至更强的攻击是所谓的反向工程。在许多安全场景中,攻击者可以具有对于计算机的完全访问权。这给了他们分解程序并获得关于计算机和程序的任何信息的机会。只要足够努力,例如隐藏在程序中的任何密钥都可以被攻击者发现。
对抗该攻击场景的保护已经证明是非常困难的。一种类型的反抗措施是所谓的白盒密码学。在白盒密码学中,密钥和算法被组合。得到的算法仅仅为一个特定密钥工作。接下来,算法可以被实施为所谓的查找表网络。计算被变换成密钥相关的表中的一系列的查找。对于该方法的示例,参见例如,S.Chow,P.Eisen,H.Johnson,P.C.van Oorschot的“White-Box Cryptography and an AES Implementation”。
发明内容
针对计算机系统的已知反抗措施完全不令人满意。例如,随机性的引入可以通过统计学分析来反抗。软件的混淆可以通过程序操作的更高级的分析来反抗。因此,需要更多且更好的反抗措施。
例如,一种混淆计算机程序的方式是对输入值编码并且尽可能多地操作编码的值。甚至可以使用所谓的表网络来执行计算。这样的表网络可以手工、或者例如在白盒密码学的情况下通过专门的程序、或者通过通用编译器来制作。曾认为,一般而言,表混淆了被执行的操作的类型。然而,本发明人发现,后者一般不是真的。
即使函数的(多个)输入和(多个)输出被编码,输入/输出关系的统计学属性也可以披露哪个函数被编码。以下是该现象的一个示例。
考虑W={0,1,...,N-1},编码E及其对应的解码D=E-1。让F和G分别表示编码的模N加法和编码的模N乘法。即,将F:W×W→W定义为其中表示模N加法,以及将G:W×W→W定义为G(x,y)=E(D(x)*ND(y)),其中*N表示模N乘法。
对于每个固定x,得到{F(x,y)|y∈W}=W.此外,对于每个非零x∈W并且N质数,得到{G(x,y)|y∈W}=W,和{G(0,y)|y∈W}=E(0)。对于N非质数,出现类似的模式。
结果,独立于编码E,可以确定F不能是编码的模N乘法,并且G不能是编码的模N加法。攻击者具有至少两种方法这样做。他可以固定在W中的两个不同元素x1和x2,并且对于H∈{F,G},,针对所有y比较H(x1,y)和H(x2,y)。如果对于所有y,这些量相等,则H不能代表模N乘法;如果对于所有y,这些量一致,则H不能代表模N加法。不能选择要读取哪些表条目但是可以观察到运行的软件程序的表访问的结果的攻击者可以使用以下事实:W的每个元素在作为G的输出时,出现的频率相等,元素E(0)作为输出出现得频繁得多。因此,如果作为H的输出,W的一个元素比W的其他元素出现得频繁得多,则H更可能是混淆的模N乘法,而非混淆的模N加法。
换言之,如果使用可用的最佳软件混淆方法之一,即,如果将输入和输出值的完全编码以及表网络用于计算,则一些信息仍热可以通过程序的检查而获得。这种情形是非常不希望有的。
将有利的是,具有解决以上讨论的问题中的一些的设备或方法。本发明通过独立权利要求来限定。从属权利要求限定有利的实施例。
本发明的第一方面涉及一种被配置来编译计算机程序的编译器,编译器被配置来解析计算机程序以便识别多个运算符(包括数据函数(f)和状态函数(g)),以及被配置来生成被配置用于数据函数和状态函数的表网络,其中表网络被配置来将编码的输入值当作输入并生成编码的输出值作为输出,编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起,其中,函数输出值等于对函数输入值应用数据函数的结果,以及状态输出值等于对状态输入值应用状态函数的结果,其中编码的输入值将被一起加密到单个值中的状态输入值与函数输入值组合在一起。
此外,提供被配置为计算运行由这样的编译器编译的计算机程序的计算设备。计算设备包括电子存储装置和与存储装置耦合的电子处理器,该电子存储装置存储被配置用于数据函数的表网络,该电子处理器被配置为通过应用表网络来计算数据函数。
该设备被配置为获得函数输入值作为编码的输入值,编码的输入值将被一起加密到单个值中的状态输入值与函数输入值组合在一起。表网络被进一步配置为将编码的输入值当作输入并且生成编码的输出值作为输出,编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起,其中函数输出值等于对函数输入值应用数据函数的结果以及状态输出值等于对状态输入值应用状态函数的结果。
获得函数输入值作为编码的输入值意味着,设备接收函数输入,因为其接收编码的输入值(其中函数输入与另一值编码在一起)。
设备计算两个函数:将函数输入值当作输入且生成函数输出值的数据函数,以及将状态输入值当作输入且生成状态输出值的状态函数。然而,尽管根据独立的输入值计算两个可能不同的函数,从而生成相应的独立的输出值,但是需要仅仅一个表网络。一个表网络接收单个编码的输入值,函数输入值和状态输入值二者被加密到该单个编码的输入值中。状态输入值可以取至少两个不同值。
在单个表网络(其中,函数输入值与多个状态值中的一个在一起被加密)中实施两个函数具有的优势在于,函数输入值对应于多个不同的编码的输入值。这意味着,基于列出了输入值与中间值之间的对应关系的攻击被阻止了。此外,有利的是,数据函数和状态函数是独立的,即状态函数不取决于(可能地多个)函数输入中的任何一个,数据函数不取决于(可能地多个)状态输入中的任何一个。这意味着,相同的表网络可以在不同时间用于不同函数;在相同时间用于不同函数;或者用于一个函数但不用于另一个函数。此外,这三个选项可以在相同程序中针对不同表网络进行使用。这相当大地增加了反向工程的困难。的确,即使从信息理论的视角,具有对两个不同函数编码的表网络使得不可能从网络本身判断其用于哪个函数,因为网络实际上被配置用于两个,其中的任何一个可以被或可以不被使用。因此,攻击者被强制在相同时间分析程序的大得多的部分。
加密(通常称作“E”)是可逆的,即,从编码的函数输入值和状态输入值对,函数输入值和状态输入值二者都可以被恢复。同样地,从编码的函数输出值和状态输出值对,函数输出值和状态输出值二者都可以被恢复。
加密是私有的,即,系统的不同实现方式可以使用不同的方式来一起加密输入或输出值。此外,加密至少部分地遵守扩散(diffusion)的原理。编码的值中的值取决于编码的值的大部分。例如,当从编码的输入/输出值恢复输入/输出值时,输入/输出值于是优选地取决于编码的输入/输出值的全部;至少其取决于比输入/输出值本身的比特大小多的比特。这具有的效果是,关于输入/输出值的信息被分布在许多比特上。优选地,如果某人有权访问编码的值的仅仅一部分,则即使某人非常了解编码/解码函数,也不可能恢复其所编码的值。应注意,传统上,加密经常使用密钥。使用有密钥的编码是一种吸引人的可能发生的事物,但是由于输入/输出值的大小相对小,所以也可能将编码表示为表。基于该原因,在变量值(比如输入/输出值或中间值)的上下文中的编码和加密可互换地被使用。
因为表网络可以代表两个函数并且编码的输入值的确包括两个输入(函数和状态),所以不可能从表网络知道其是数据函数的编码的版本还是状态函数的编码的版本。的确,表网络被完全配备来计算任一函数并且的确确实根据独立的变量或变量集合(在具有多个输入的数据函数和/或状态函数的实施例中)来计算两个函数。
例如,应用于以上示例,将获得可以用于执行加法和乘法的表网络。通过检查表网络,不能知道使用了哪个,因为事实上表网络可以执行任何一个。
数据函数可以采用一个或多个输入值。状态函数可以采用一个或多个输入值。在一个实施例中,数据和状态函数的输入值的数目是相同的。例如,设备可以被配置为获得多个函数输入值作为多个编码的输入值。多个编码的输入值中的每一个将被一起加密到单个值中的所述多个状态输入值中的状态输入值与所述多个输入值中的函数输入值组合在一起。表网络被配置为将多个编码的输入值当作输入且生成编码的输出值作为输出。编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起。函数输出值等于对多个函数输入值应用数据函数的结果,以及状态输出值等于对多个状态输入值应用状态函数的结果。
以下将示出用于生成这样的表网络的若干不同方式。等于或取决于函数输入值的任何中间值(包括函数输出值)仅仅以编码的形式出现,即与状态变量加密在一起。理想地,该属性对于状态输入变量也适用,但是可能需要在该点上进行让步以便满足关于可用资源的竞争性要求。例如,具有这种属性的一种方式是创建包括单个表的表网络,该表将编码的输入值当作输入且生成编码的输出值作为输出。
可能的是在一定程度上分离状态计算,例如表网络可以包括状态提取器表和状态函数表。状态提取器表被配置来使得对编码的输入值应用的状态提取器表生成状态输入值。状态函数表被配置来使得对状态输入值应用的状态函数表生成状态输出值。应注意,即使在表网络中获得状态值,函数输入值也仍然是编码的。此外应注意,状态提取器表可以生成编码的形式的状态值,但是编码的形式不取决于输入值,例如可通过仅仅加密状态值而获得编码的状态值。
一旦状态输出值可能地以编码的形式可用,就可以使用再编码表。再编码表将编码的值当作输入且生成编码的值,然而,编码已经改变。例如,再编码表可以被配置为接收编码的输入值和状态输出值作为输入且生成再编码的输入值作为输出。再编码的输入值将被一起加密到单个值中的状态输出值与函数输入值组合在一起。可以对再编码的输入值应用数据函数表以获得编码的输出值。例如,数据函数表可以被配置为接收作为输入的再编码的输入值以及作为输出的编码的输出值。
这减小了所需要的表的大小。然而,其保持了以下情况,表网络计算两个函数:数据函数和状态函数。攻击者不能知道表网络用于哪个函数。此外,即使状态值以不与输入值一起编码的形式出现,输入值也仅仅以编码的形式出现。
可能的是,甚至进一步地减小表的大小。例如,表网络可以包括减小的状态函数表和第一再编码表。减小的状态函数表被配置用于接收状态输入值且用于生成等于对状态输入值应用的减小的状态函数的结果的中间状态值作为输出,减小的状态函数的范围大于单个值且小于状态函数的范围。第一再编码表被配置用于接收编码的输入值和中间状态值作为输入以及生成再编码的输入值作为输出,再编码的输入值将被一起加密到单个值中的中间状态值与函数输入值组合在一起。
表网络因而计算三个函数,状态函数、减小的状态函数和数据函数。因为减小的状态函数具有比状态函数小的范围,所以减小了用于数据函数的表。应注意,减小的状态函数的范围的大小大于1,使得每个输入数据值具有多于一个的代表,即使具有减小的状态空间。在一个实施例中,减小的状态空间的大小(即,值的数目)至少是2、4或8。
例如,表网络可以包括数据函数表和第二再编码表。数据函数表被配置用于接收作为输入的再编码的输入值和作为输出的再编码的输出值,再编码的输出值将被一起加密到单个值中的中间状态值与函数输出值组合在一起。第二再编码表被配置为接收再编码的输出值和状态输出值作为输入且生成编码的输出值作为输出。
在一个实施例中,表网络被配置用于具有至少4个(优选地至少8个)比特的数据输入值。在一个实施例中,表网络被配置用于具有至少4个(优选地至少8个)比特的状态输入值。
在一个实施例中,数据输入值和状态输入值具有相同比特大小。如果数据函数和状态函数具有相等的输入大小,则它们在这方面不可区分。在一个实施例中,数据输出值和状态输出值具有相同比特大小。
在一个实施例中,数据输入值和状态值具有相同比特大小且具有4比特或更多比特。在一个实施例中,数据输入值和状态值具有相同比特大小且具有6比特或更多比特。在一个实施例中,数据输入值和状态值具有相同比特大小且具有8比特或更多比特。
本发明的一方面涉及用于运行由根据本发明的第一方面的编译器编译的计算机程序的方法,所述方法包括,通过对编码的输入值应用表网络且生成编码的输出值作为输出来计算数据函数,编码的输入值将被一起加密到单个值中的状态输入值与函数输入值组合在一起,编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起,其中函数输出值等于对函数输入值应用数据函数的结果,以及状态输出值等于对状态输入值应用状态函数的结果。
计算设备是电子设备,例如移动电子设备、移动电话、机顶盒、计算机等。
根据本发明的方法可以作为计算机实施的方法、以专用硬件或以二者的组合实施在计算机上。用于根据本发明的方法的可执行代码可以存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上的用于在所述程序产品在计算机上执行时执行根据本发明的方法的非暂时性的程序代码模块。
在优选的实施例中,计算机程序包括适于在计算机程序在计算机上运行时执行根据本发明的方法的所有步骤的计算机程序代码模块。优选地,计算机程序被具体实现在计算机可读介质上。
附图说明
从下文中描述的实施例,本发明的这些和其它方面将显而易见,并且参照下文中描述的实施例,本发明的这些和其它方面将得以阐明。在图中:
图1是图示出实施了数据函数和状态函数的表网络的示意图,
图2是图示出实施了数据函数和状态函数的表网络的示意图,
图3a是图示出实施了数据函数和状态函数的表网络的示意图,
图3b是图示出实施了数据函数和状态函数的表网络的示意图,
图3c是图示出实施了数据函数和状态函数的表网络的示意图,
图4是概括地图示出表网络的框图,
图5是图示出计算设备的框图,
图6是图示出编译器的流程图,
图7是图示出用于计算数据函数的方法的流程图。
应注意,在不同图中具有相同附图标记的项目具有相同的结构特征和相同的功能,或者是相同的信号。其中这样的项目的功能和/或结构已经被说明,没有必要在详细描述中对其进行重复说明。
具体实施方式
尽管本发明容许许多不同形式的实施例,但是在图中示出并将在本文中详细地描述一个或多个特定实施例,其中应理解,本公开被认为是本发明原理的示例并且并非旨在将本发明限制到所示出和所描述的特定实施例。
在图中,用矩形图示出表,并且用右上角被剪切掉的矩形图示出值。
图4图示出示为表网络400的表网络的概括性概念。大多数函数可以被表达为表网络。具体地,算法和逻辑操作的任何组成部分可以如此表达。例如,表网络可以是例如密码的实现方式。示出了多个表中的8个表。表通过输入值的表查找来将输入值变换为输出值。示出了用于从函数实现方式之外接收输入的输入表410中的三个。示出了输出表430中的一个。输出表430通过例如串联一起形成函数实现方式的输出。示出了中间表中的四个表420、422、424、426,其从所述表中的另一个接收至少一个输入并且生成输出以用作至少一个其它表的输入。这些表一起形成网络。密码可以是块密码;块密码可以被配置用于加密或解密。块密码加密块密码,例如AES。该实现方式可以针对特定密钥,在这种情况下,所述表可以取决于该特定密钥。
查找表426代表具有两个输入和一个输出的运算符。用于一元运算符的查找表的构造可以扩展到二元运算符。例如,第二输入可以被“梳刷出(curry out)”;称作函数变换技术,梳刷(currying)是一种以使得其可以被称作函数链(每个函数具有单个自变量)的方式变换具有n多个自变量(或者n元组的自变量)的函数的技术。当使用该方法时,查找表426被实施为多个一元查找表。另一方面,也可以生成针对每个输入的比特串并连结结果。按照这种方式,直接生成查找表,并且获得单一的但是更大的查找表。尽管查找表的布局可以基于构造而不同,但是它们具有相等的大小和相同的属性。应注意,没有必要根据相同编码对多个输入值进行编码。
表网络可以使用多个表对两个函数进行编码或者具有对两个函数编码的表网络作为子网络。该系统可以被配置为根据当前编码使用网络表的该状态或数据函数。表网络混淆技术也可以应用在如本文所描述的表网络中。
例如,假设第二表接收第一表的输出作为输入,则第一表的输出可以用秘密(例如,随机选择的编码)来编码,并且第二表的输入可以用逆编码来编码。
图1示出了嵌入在更大的表网络100中的表网络180。表网络180包括仅仅单个表130。
表网络180被配置为将多个编码的输入值当作输入,示出了编码的输入值122和124。表网络180被配置为生成编码的输出值160作为输出。在以下的描述中,将假设数据函数和状态函数具有两个输入值和单个输出值。然而,实施例可以扩展成任何数目的输入值和/或输出值。具体地,具有一个输入和一个输出的数据/状态函数是可能的,并且具有两个输入和一个输出的数据/状态函数是可能的。
表网络180被配置用于数据函数且被存储在与电子处理器耦合的电子存储装置中,该电子处理器被配置为通过应用表网络来计算数据函数。
从函数输入值102和状态输入值112获得编码的值122。例如,这可以通过编码器110来完成。编码器110可以包括在存储了表网络180的相同设备中,但是这并非是必需的。输入值可以已经以编码的形式被接收和/或以编码的形式被传送。或者,它们可以以未编码的形式被接收/传送。在后一情况下,它们可以在内部以编码的形式被编码和使用。例如如果在设备的外部使用了不同的编码,则也可以存在再编码。例如,函数输出值162和状态输出值164可以从解码器170获得。
数据函数的编码的输入可以是另一表或表网络的输出。后者可以是或可以不是被配置用于两个函数的表网络。通过组合被配置用于不同数据函数的表网络,可以逐步建立整个程序。
编码器/解码器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。W xΣ的元素通过秘密编码函数E按照一对一的方式映射到V。W中的元素w的代表是集合
Ω(w)={E(w,σ)}σ∈∑}的成员。
W中的每个元素的代表数目因而等于Σ的基数。作为结果,携带来自V的符号的数据路径宽于携带来自W的符号的数据路径。例如,如果W是16比特整数的集合并且状态空间Σ具有16=24个元素,则针对V的数据路径使用16+4=20个比特,而针对W的数据路径使用16个比特。
以下实施例对两个变量的函数进行编码。考虑希望编码的函数f:W x W→W。构建函数F:V x V→V,使得对于所有w1,w2∈W和σ1,σ2∈∑,得到
F(E(w1,σ1),E(w2,σ2))∈Ω(f(w1,w2)).
或者用语言表述为:F将w1和w2的任何代表对映射为f(w1,w2).的代表。
f(w1,w2)的代表的状态可以取决于操作数w1和w2二者,并且可以甚至以确定性的方式或随机的方式取决于状态σ1和σ2二者。更具体地,状态可以取决于仅仅状态σ1和σ2,其可以通过采用函数g:∑×∑→∑并且通过定义下式来实施:
F(E(w1,σ1),E(w2,σ2))=E(f(w1,w2),g(σ1,σ2)).
以上实施例的一个有趣的特殊情况将在让Σ=W时发生。于是,使用函数E对f进行编码的函数F还对函数g进行编码,但是其使用不同的编码函数即,不能推导出这两个函数中的哪一个f或g是由F实施的。定义通过计算,发现
因此用于F的表在使用编码E的情况下实施了函数f并且在将用作编码函数的情况下实施了函数g。按照这种方式,证明了,仅仅从表130,不能说出哪个函数正被使用,因为其可能对至少两个函数编码。
用于F的表可以用于计算f和g二者。的确,如果使用E,则如前所述,用于F的表实施了f。相同的表也可以用于通过用函数预处理和后处理输入和输出而实施g。为了精确,让w1,w2∈W,σ1,σ2∈∑,并且写为vi=E(wi,σi),i=1,2.于是得到
结果,得到
编码的输入值可以是针对计算机程序(可能地包括数据函数或由数据函数代表)的输入值。计算机程序可以运行在计算机上。计算机程序的指令可以由数据函数代表。编码和解码可以在秘密密钥的控制之下。编码和解码表自身可以被当作这样的密钥。如果应用指令f,该指令f在用编码Ek编码的数据上操作,则其首先解码该数据,然后对解码的数据应用f,随后再次对结果编码。即,数据x导致得到输出F(x)=Ek(f(Dk(x))输出。通过将函数F直接存储为查找表,函数f及其语义被隐藏。在特定实施例中,解码是编码的左逆,即对于所有x,Dk(Ek(x))=x。这具有的优势在于,如果用相同的函数Ek和Dk对两个函数f和g编码和解码,则可以通过使用接连使用用于G(x)=Ek(g(Dk(x))和F(x)=Ek(f(Dk(x))的表而得到函数f(g(x))的编码的版本。的确,可见的是,对于每个x,我们得到Ek(f(g(Dk(x))=F(G(x)),使得f(g(x))的编码的版本可以从对于G和F的表的接连的访问获得。按照这种方式,操作序列可以在没有在连续操作之间编码和解码的情况下被应用,从而极大地提高了安全性。在一个实施例中,编码和解码仅仅发生在安全的一侧,而所有的已编码的操作发生在开放的不安全的一侧。一个或多个编码的函数的(多个)输出可以用作另一编码的函数的(多个)输入。如我们所见,如果编码和解码是彼此的逆,则这可以被方便地布置。下文是用我们的发明执行操作序列的一个优选实施例。首先,在安全域中,“短”变量被变换为“长”变量。随机性被包含来确保“长”变量接近同等频繁地出现。这可以例如通过具有生成随机状态σ∈∑的设备且映射变量x在Ek(x,σ)上来实现,其中Ek是“长”变量的编码。在开放侧进行了所有计算(所有都使用“长”变量进行操作)之后,在安全侧,应用解码Dk,并且接下来,确定对应于解码的长变量的“短”变量。替换地,短变量的解码和确定在一个组合步骤中完成。字母k表示秘密,例如秘密密钥。
具有变量的多个代表暗示,数据路径变得更长。此外,其暗示,用于实施f的编码的版本F的表变得更大。例如,考虑具有两个16比特变量x和y作为输入以及16比特变量作为输出的函数f(x,y)。用于实施f的编码的版本的表在没有多个代表的情况下使用具有216×216个条目的表,每个表条目是16比特宽,这总计为,表大小是236个比特。现在假设每个16比特变量具有16个代表;代表集合因而可以用20个比特来代表。现在使用具有220×220个条目的表,每个表条目是20个比特宽,这总计为,大小是5×242个比特的表。即,该表是不具有多个代表的表的5×26=320倍大。
图2示出了一种降低组合数据和状态代表对表大小产生的影响的方式。表网络200计算与图1中相同的数据函数和相同的状态函数。
表网络200被配置用于数据函数且被存储在与电子处理器耦合的电子存储装置中,该电子处理器被配置为通过应用表网络来计算数据函数。
表网络200包括状态提取器表212和214,其被配置为从编码的输入值122和124提取对应的状态值112和114。应注意,这在任何时候都不暗示输入值是以明文形式获得的。状态值用作对于状态函数表230的输入。状态函数表230代表状态函数。应注意,状态提取器表212、状态提取器表214和状态函数表230可以将编码用于状态值,可能地甚至将不同编码用于值112和114;然而,该编码仅仅取决于状态值而非输入值;编码可以是秘密的,例如对于特定实现方式而言是私有的。来自状态函数表230的状态输出值232是未知的。
表网络200还包括再编码表242、244。这些表接受编码的输入值122和124,但是对其进行再编码以便具有共同的状态值,在该特定实施例中,为状态输出232。这意味着,数据函数表260可以被显著简化,因为其不再需要被配置用于其接收两个不同状态值的这种可能性。应注意,获得与图1中相同的编码的输出值160。
将在下文中使用数学语言给出多个实施例。考虑m个操作数的函数f。作为第一步骤,可以确定f的操作数的代表,使得至少两个操作数具有相同状态。为了示出优势,考虑以下情况,操作数可以取w个值并且操作数的每个值具有s个代表。图1的方法导致具有(sw)m个条目的表。如果f的所有操作数被强制为相同状态,则可以使用具有仅仅swm个条目的表。在图2的实施例中,f的多个操作数中的至少两个操作数被强制到状态空间中的共同状态。
下文是一种获得操作数的多个代表的方法。让W表示希望编码的操作数集合。引入“状态”的有限集Σ以及基数等于W和Σ的基数的乘积的有限集V。W xΣ的元素通过秘密编码函数E按照一对一的方式映射到V。W中的元素w的代表是集合
Ω(w)={E(w,σ)|σ∈∑}的成员。
W中的每个元素的代表数目因而等于Σ的基数。作为结果,携带来自V的符号的数据路径宽于携带来自W的符号的数据路径。例如,如果W是16比特整数的集合并且状态空间Σ具有16=24个元素,则V的数据路径使用16+4=20个比特,而W的数据路径使用16个比特。
现在考虑希望编码的函数f:W x W→W。构建函数F:V x V→V,使得对于所有w1,w2∈W和σ1,σ2∈∑,得到
F(E(w1,σ1),E(w2,σ2))∈Ω(f(w1,w2)).
或者用语言表述为:F将w1和w2的任何代表对映射为f(w1,w2).的代表。现在考虑以下情形,代表的状态仅仅取决于状态σ1和σ2,其可以通过采用函数g:∑×∑→∑且通过定义下式来实施。
F(E(w1,σ1),E(w2,σ2))=E(f(w1,w2),g(σ1,σ2)).
应注意,该函数F具有来自V的两个输入变量。因而,用于F的表具有|V|2个条目并且每个条目在来自V的元素中。下文中示出了如何显著减小表大小。将表用于定义为下式的状态提取器Sθ:V→∑。
Sθ(E(w,σ))=σ
在图2中,状态提取器表212和214代表这些状态提取器函数Sθ。应注意,与在编码的输入值124中相比,在编码的输入值122中可能使用不同的状态编码。
此外,使用用于计算在图2中的230中实施的函数g的表。此外,使用(秘密)编码以及使用表(对应于图2中的表242和244)用于实施函数
使得对于i=1,2且所有得到
并且最后,使用用于实施函数φ:W×W×T→V的表,使得对于所有w1∈W,w2∈W和τ∈∑,得到
现在考虑输入v1=E(w1,σ1)和v2=E(w2,σ2)应注意,攻击者可以观察到v1和v2,但是不能观察到w1和w2.
运行以下程序。
s1:=Sθ[v1];s2:=Sθ[v2];τ:=g[s1,s2];(**所以s1=σ1,s2=σ2**)
y1:=∈1[v1,τ];y2:=∈2[v2,τ];(**所以
z:=φ[y1,y2,τ],(**所以z=E(f(w1,w2),g(σ1,σ2))**)
以上倒数第2行对应于图2的表242、244、252和254。以上最后1行对应于图2的表260。
现在确定所需要的表的总大小。用于Sθ的表具有|V|个条目,每个条目是Σ的元素:|V|log2|∑|个比特。用于g的表具有|∑|2个条目,每个条目是∑的元素:|∑|2log2|∑|个比特。用于∈1和∈2二者的表具有|V||Σ|个条目,每个条目是W的元素:每个表|V||∑|log2|W|个比特。用于φ的表具有|W|2|∑|个条目,每个条目是V的元素:|W|2|∑|log2|V|个比特。所需要的比特的总数目因而等于
(|V|+|∑|2)log2|∑|+2|V||∑|log2|W|+|W|2|∑|log2|V|。
因此,如果|W|=|∑|,则发现,通过使用该|V|=|W||∑|,所需要的比特的数目等于(4|W|3+2|W|2)log2|W|。图1使用了|V|2log2|V|=2|W|4log2|W|个比特。因此,在该示例中,表大小以接近|W|/2的因数被减少。
图3a示出了可以如何权衡地交换表大小与安全。除了如图2中的状态函数表230,表网络300包括减小的状态函数表310。减少的状态函数表310在状态输入值112和114上计算与状态函数表230不同的函数。事实上,除了减小的状态函数表310具有比状态函数表230更小的范围之外,减小的状态函数表310可以在112和114上计算任何函数,例如,随机函数。即,减小的状态函数表310的可能的输出值的数目小于状态函数表230的可能的输出值的数目。减小的状态函数表310生成减小的状态值320。例如,状态输出值232可以是4比特,而减小的状态输出值可以是2比特。为了简单起见,可以从状态输出值232的比特选择值320的比特;然而,优选地,表310和230是不同且不相关的,尤其在该线性方式上。
替代再编码输入值和状态输出值,表网络300再编码输入值和减小的状态值320。表网络300包括再编码表332和334,其被配置为分别接受编码的输入值122和124作为输入且生成针对减小的状态值320而非状态输出值164进行编码的新的编码的值。结果分别是再编码的输入值342、344。因此,再编码的输入值342将被一起加密到单个值中的减小的状态值320(而不是状态输入值112)与它们在编码的输入122中的函数输入值组合;对于再编码的输入值344,这些同样适用。
最终,数据函数表350类似数据函数表260,除了它接受减小的状态值范围。在输入值上计算的函数对应于数据函数;关于状态函数的函数可以是任何模样的,比如随机的,或者等同的。最后,用再编码表360对结果进行再编码,使得编码的输出值对应于状态输出值164以及函数输出值162。再编码表332和再编码表334也被称作第一再编码表。再编码表360也被称作第二再编码表360。应注意,再编码的输入342和再编码的输入344二者都包括减小的状态,这意味着表350的输入的一部分是重复的,作为结果,表可能是稀疏的,因此例如在对其应用数据压缩时压缩良好。
例如,如果函数值和状态值各自都是4比特宽并且减小的状态值是2比特宽,则:再编码表332/334具有4+4+2=10比特作为输入以及具有6比特作为输出;数据函数表350具有6+6=12比特作为输入。如果表350生成与编码的输入/输出值相同大小的输出值,则其具有4+4=8比特的输出;如果状态值被减小,则其具有6比特的输出;如果输出仅仅具有函数输出值(可能地被编码的),则其具有4比特输出。这些示例性值,比如比特宽度4和2,可以改变。
表网络300被配置用于数据函数且被存储在与电子处理器耦合的电子存储装置中,该电子处理器被配置为通过应用表网络来计算数据函数。
图3b示出了可以如何以不同的方式权衡地交换表大小与安全。类似于图3a,表网络300包括减小的状态函数表310。然而,图3b不包括再编码表332和334。替换地,使用取决于状态的再编码表372和374。
取决于状态的再编码表372将编码的输入值122当作输入,编码的输入值122组合了函数输入值和状态输入值但是是以编码(加密)的形式。取决于状态的再编码表372提取函数输入并且以不同的方式对其进行编码,该再编码取决于减小的状态值320。一种表述此的不同方式是,用作为密钥的减小的状态值320加密在编码的输入值122中的函数输入。取决于状态的再编码表374做相同的事情,但是是针对编码的输入值124。表372和374的结果是再编码的输入值382和384。
例如,如果函数值和状态值各自都是4比特宽并且减小的状态值是2比特宽,则:再编码表372/374具有4+4+2=10比特作为输入以及具有4比特作为输出;数据函数表385具有4+4+2=10比特作为输入。如果表385生成与编码的输入/输出值相同大小的输出值,则其具有4+4=8比特的输出;如果状态值被减小,则其具有6比特的输出;如果输出仅仅具有函数输出值(可能地被编码的),则其具有4比特输出。这些示例性值,比如比特宽度4和2,可以改变。
将在下文中使用数学语言给出多个实施例。实施例允许以不那么好地隐藏函数f为潜在代价来进一步减小所需要的表的大小。
使用用于被定义为Sθ(E(w,σ))=σ;的状态提取器函数Sθ:V→∑的表;该表具有|V|个条目,每个条目都是Σ的元素,因此其使用|V|log2|∑|个比特。这是图3中的表212和214。类似地,用于实施g的表具有|∑|2log2|∑|个比特;这是图3中的表230。接下来,使用“内部状态空间”T和用于映射t:∑×∑→T.的表。用于t的表使用|∑|2log2|T|比特;这是图3中的表310。
此外,使用(秘密)编码和而且,使用用于实施函 数∈1:V×T→W和∈2:V×T→W的表,其使得对于i=1、2以及所有的w∈W,σ∈∑和τ∈T,,得 到用于每个∈i的表具有V||T|个条目,每个条目是来自W的元素, 因此其使用|V||T|log2|W|个比特。这些是图3中的表372和374。使用函数φ:W×W×T→V, 使得对于所有w1∈W,w2∈W和τ∈T,得到其中, 是W×T.的秘密置换(permutation)。用于φ的表具有|W|2|T个条目,每个条目是V的元素, 因此所要求的比特的数目等于|W|2|T|log2|V|.这是图3中的表385。最后,使用用于实施函 数Ψ:W×T×∑:→V的表,使得对于所有w∈W,τ∈T,σ∈∑,,得到 这是图3中的表360。用于该表的比特数目等于|W||T||∑|log2|V|.。
所需要的比特的总数目因此等于(|V|+|∑|2)log2|∑|+|∑|2log2|T|+2|V||T|log2|W|+|W||T|(|W|+|∑|)log2|V在特定情况|W|=|Σ|下,这减小到|W|2log2|T|+2|W|2(3|T|+1)log2|W|.。
从以上内容来看,更小的内部状态空间T可以减小所需要的表大小。接下来,明确地示出如何使用以上提及的表。考虑输入v1=E(w1,σ1)和v2=E(w2,σ2).。应注意攻击者可以观察到v1和v2,,但是不可以观察到w1和w2.运行以下程序。
s1:=Sθ[v1];s2:=Sθ[v2];τ=t[s1,s2];(**所以s1=σ1,s2=σ2**)
y1=∈1[v1,τ];y2=∈2[v2,τ];(**所以
z:=φ[y1,y2,τ];(**所以)**)
σ:=g[s1,s2];(**所以σ=g(σ1,σ2)**)
u:=Ψ[z,σ](**所以u=E((f(w1,w2),g(σ1,σ2)).**
以下是小状态空间的缺点。在以上程序中,计算y1,y2,这使得因此,如果攻击者观察到对于两个不同的值v1和v′1,对应的值y1和y1′实际上相等,则他知道v1和v1代表w的相同值。如果T是小的,则非常可能的是,w1的不同代表产生针对y1·的相同值。作为一个极端的情况:如果T具有仅仅一个元素,则W中的元素的不同代表始终给出y1·的相同值。因此,有利的是,T不被选择得太小。例如,T可以具有4个元素或8或16。
以下给出了编码器110、解码器170和状态提取器表212和214的构造的示例。将假设单个函数输入和单个状态输入各自都是4比特(任一个都可以有更多比特)。
函数输入 状态输入 编码
0000 0000 01000110
0000 0001 01011000
.... .... ....
0000 1111 11001100
0001 0000 10010111
0001 0001 01111010
.... .... ....
1111 1111 00111001
前两列列出了函数输入值和状态输入值的所有可能组合。最后一列列出了二进制的数字0至255的随机排列。应注意,加密从以下意义上来说是极好的:即使非常了解256-2=254个输入-输出对,但剩余两对仍然在它们中具有1比特的不确定性。通过使用8比特宽的块密码,可以获得不那么好但是仍然非常合用的编码。
通过对前两列分类来获得编码表,得到的表将示出如何从前两列获得最后一列(编码)。通过对最后一列分类,获得解码的表,而不是编码的表。通过移除第一列且对最后一列分类,获得状态提取器函数。应注意,一般而言,不需要存储输入列和输出列二者。例如,如果输入列被分类且包括所有可能的组合,则其可以被省略。
图3c示出了没有使用减小的状态函数的取决于状态的再编码。图3c的取决于状态的再编码表372和374与图3b的那些相同,除了它们具有状态输出值232而非减小的状态值作为输入。这意味着发生的再编码更安全。另一方面,372、374和385中的表具有宽输入。有趣的是,尽管图3c的数据函数表385具有比图3b的数据函数表更大的输入,但是不需要再编码表360,因为表385现在具有恰当的状态输出值以合并在输出中(但是这是可能的,其将减小表大小)。
再次以4比特用于函数和状态值作为示例,图3c的表372具有4+4+4=12比特作为输入以及具有4比特作为输出。图3c的表385具有4+4+4=12比特作为输入以及具有4+4=8比特作为输出。
图5示出了具有存储设备510的计算设备500。存储设备510典型地是一个或多个非易失性存储器,但是也可以是硬盘、光盘等。存储设备510还可以是包括下载的或者以其他方式接收的数据的易失性存储器。计算设备500包括处理器550。处理器典型地执行存储在存储器中的代码555。为了方便起见,代码可以存储在存储设备y 510中。代码使得处理器执行计算。设备500可以包括用于接收输入值和/或传送结果的可选的I/O设备560。I/O设备560可以是网络连接、可移除存储设备等。
存储设备510包括根据图1至3之一的一个或多个表网络。
在一个实施例中,计算设备可以在操作期间如下工作:计算设备500接收输入值。例如通过使用编码表541(例如表110)来编码输入值。因此,输入值被获得为编码的输入值。应注意,输入值可以例如直接通过设备560而被获得为编码的输入值。将输入值编码为编码的输入值暗示,必须选择状态输入。存在这样做的几种方式,例如,可以例如通过随机数发生器而随机地选择状态输入。可以根据算法选择状态输入;算法可以是复杂的,并且加入混淆。状态输入值还可以是常数,或者顺序地取自数字序列,例如具有常数增量(例如1)且以某个起始点作为开始的整数序列;起始点可以是零、随机数等。将状态输入选择为随机数且对于每下一个状态输入选择增加1是一种特别有利的选择。如果状态输入是脱离设备被选择,则攻击者没有办法跟踪在哪里选择了状态输入值且它们是什么。
处理器550执行存储器510中的程序555。程序使得处理器对编码的输入值或得到的输出值应用查找表。可以为任何逻辑或算法函数创建查找表,因而可以通过使用一系列的查找表执行任何计算。这有助于混淆程序。在这种情况下,查找表被编码以进行混淆,因而是中间值。在这种情况下,混淆特别有利,因为单个函数输入值可以通过多个编码的输入值来代表。此外,一些或所有表和/或表网络具有多个函数属性。
在某点处,找到结果值。如果需要的话,可以例如使用解码表542(例如表170)解码结果。但是也可以以编码的形式导出结果。也可以从输入设备获得输入值,并且输出值可以用于在屏幕上示出。
对编码的数据字执行计算。计算通过应用一系列的表查找访问来完成。所使用的输入值可以是从计算设备外部接收的输入值,但是也可以通过先前的查找表访问来获得。按照这种方式,获得中间结果,然后其可以用于新的查找表访问。在某点处,中间结果之一是函数的编码的结果。
计算设备500可以包括用于分配状态输入值给数据函数输入的随机数发生器。
图6图示出作为流程图的编译方法600。在步骤610中,由接收器接收第一计算机程序。在步骤620中,由词汇分析器执行词汇分析以例如识别标记。可能地,诸如宏扩展之类的处理也被进行。在步骤630中,由解析器解析程序。例如,解析器根据第一程序的编程语言的形式语法来生成解析树。解析器识别程序中的不同语言构造且调用适当的代码生成例程。具体地,识别一个运算符或多个运算符。在该情况下,在步骤640中,由代码生成器完成代码生成。在代码生成期间,生成某个代码,且如果需要的话,生成附随的表。附随的表包括被配置用于两个函数的表:用于所需要的运算符的一个函数以及状态函数。所生成的代码不需要且一般将不包括运算符,因为其被一个或多个查找表所替代。可以随机选择状态函数。状态函数还可以被选择为程序的结果,例如,状态函数可以是另一需要的运算符,这将允许表被再使用。例如,解析器将识别加操作并且将此转换为针对加指令的查找表以及用于应用该查找表到恰当值的所生成的代码。编译器可以选择随机函数作为状态函数。编译器也可以从函数集合随机地选择函数,例如加法、减法、乘法等。
在步骤655中,所生成的表被合并入表基础中,因为很可能发生的是,某些表被多次生成,在这种情况下,不需要将其存储多次。例如,可能需要加法表,并且仅仅生成该加法表一次。当所有代码被合并且所有表被合并时,完成编译。可选地,可以存在最优化步骤。
典型地,编译器使用编码的域,即程序的几个部分,其中,所有值或至少对应于某准则的所有值被编码,即具有代码字比特大小(n)。在编码的域中,操作可以通过查找表执行来执行。当进入编码的域时,所有值是编码的,当离开编码的域时,所述值是解码的。准则可以是,值关于或取决于安全敏感信息,例如密码学密钥。
以下是一种创建编译器的引起关注的方式。在步骤630中,进行中间编译。这可以是针对中间语言,例如寄存器传输语言等等,但是也可以是机器语言代码编译。这意味着,对于图6的步骤610-630,可以使用常规的编译器,其不生成表网络。然而,在步骤640中,基于中间编译进行代码生成。例如,如果使用机器语言代码,则每个指令由该指令的对应运算符自由实施方式(即,该指令的基于表的实施方式)替代。这代表一种用于创建编译器的特定直接方式。图6还可以用于生成一种产生非机器语言而是第二编程语言的编译器。
在一个实施例中,编译器是一种用于将以第一计算机编程语言撰写的第一计算机程序编译为第二计算机语言的编译器,编译器包括通过生成表和机器语言代码来生成第二计算机语言的代码生成器,所生成的表和所生成的机器语言代码一起形成第二计算机语言,所生成的机器语言代码引用所述表,其中编译器被配置为识别第一计算机语言中的算法或逻辑表达,该表达取决于至少一个变量,以及代码生成器被配置为生成代表所识别的表达针对该变量的多个值的预计算的结果以及代表至少一个其他表达的一个或多个表,以及被配置为生成机器语言代码,以便通过访问所生成的代表预计算的结果的一个或多个表来实施所识别的第二计算机语言的表达。理想地,被生成用于实施所识别的表达的机器语言代码不包括算法或逻辑机器指令本身,至少没有关于敏感信息的算法或逻辑机器指令。对表进行反向工程的攻击者可以发现,其可以代表所识别的表达,但是其也可以代表其他表达。
这改善了对于反向工程的抵抗并且减弱了第二计算机语言的边信道泄露,因为其包括较少的算法或逻辑操作。理想地,所有算法和逻辑表达以及子表达通过表访问替代。因为构成算法或逻辑表达或子表达的那些指令不存在,所以它们不能泄露任何信息。表是预计算的;被消耗来执行在表中封装的算法或逻辑行为的功率在程序的执行期间不可见。
图7图示出用于根据函数输入值计算数据函数的方法700的流程图。在步骤710中,将函数输入值与状态输入值一起组合在编码的输入值中。该组合以加密的方式完成。应注意,输入值的编码可以在不同位置处和/或由不同方来完成。在步骤720中,对编码的输入值应用表网络以生成编码的输出值作为输出。在步骤730中,从编码的输出值获得函数输出值。应注意,也可以从编码的输出值获得状态输出值,但是这可以不是必需的。函数输出值等于对函数输入值应用数据函数的结果,以及状态输出值等于对状态输入值应用状态函数的结果。步骤730可以在不同位置处和/或由不同方来完成。
如对于本领域技术人员将显而易见的是,执行本文所公开的方法的许多不同方式是可能的,例如,步骤的顺序可以改变或者一些步骤可以并行执行。此外,可以在步骤之间插入其他方法步骤。所插入的步骤可以代表例如本文所描述的该方法的精炼,或者可以与该方法无关。
根据本发明的方法可以使用软件来执行,该软件包括用于使得处理器系统执行方法700的指令。软件可以仅仅包括由该系统的特定子实体所采取的那些步骤。软件可以存储在适当的存储介质中,比如硬盘、软盘、存储器等中。软件可以作为信号沿着导线或者无线地或者使用数据网络(例如因特网)而被发送。可以使得软件可用于下载和/或在服务器上远程使用。
应意识到,本发明还扩展到适于将本发明付诸实践的计算机程序,具体地,在载体上或中的计算机程序。程序可以是以下形式:源代码、目标代码、源代码和目标代码之间的代码(比如部分编译的形式),或者可以是适合用在实施根据本发明的方法中的任何其他形式。关于计算机程序产品的一个实施例包括与所阐述的方法中的至少一个的处理步骤中的每一个步骤对应的计算机可执行指令。这些指令可以被细分为子例程和/或存储在可以静态或动态地链接的一个或多个文件中。关于计算机程序产品的另一个实施例包括与所阐述的系统和/或产品中的至少一个的模块中的每一个模块对应的计算机可执行指令。
应该注意,以上提及的实施例说明而非限制本发明,并且本领域技术人员将能够设计许多可替换的实施例。在权利要求书中,置于括号之间的任何附图标记不应该被解释为限制权利要求。对动词“包括”及其动词变化的使用不排除与在权利要求中陈述的那些元件或步骤不同的元件或步骤的存在。元件之前的冠词“一”或“一个”不排除多个这样的元件的存在。本发明可以借助于包括若干不同元件的硬件并且借助于适当编程的计算机来实施。在枚举若干模块的设备权利要求中,这些模块中的若干个可以通过同一项硬件来具体实施。在互不相同的从属权利要求中记载特定措施的纯粹事实并不表明不能有利地使用这些措施的组合。
图1-5中的附图标记列表:
100 表网络
102,104 函数输入值
110 编码器
112,114 状态输入值
122,124 编码的输入值
130 数据函数
160 编码的输出值
162 函数输出值
164 状态输出值
170 解码器
180 表网络
200 表网络
212,214 状态提取器表
230 状态函数表
242,244 再编码表
252,254 再编码的输入值
260 数掘函数表
310 减小的状态函数表
320 减小的状态值
332,334 再编码表
342,344 再编码的输入值
350 数据函数表
360 再编码表
372,374 取决于状态的再编码表
382,384 再编码的输入值
410 输入表
420 中间表
430 输出表
500 计算设备
510 存储设备
521,522 单个输入查找表
531,532 多个输入查找表
5311-5323 单个输入查找表
541 编码的查找表
542 解码的查找表
555 机器语言代码
550 计算机处理器
560 I/O 设备

Claims (21)

1.一种被配置来编译计算机程序的编译器,编译器被配置来解析计算机程序以便识别包括数据函数(f)和状态函数(g)的多个运算符,以及被配置来生成被配置用于数据函数和状态函数的表网络,其中
—— 表网络被配置来将编码的输入值当作输入并生成编码的输出值作为输出,编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起,其中,函数输出值等于对函数输入值应用数据函数的结果,以及状态输出值等于对状态输入值应用状态函数的结果,其中编码的输入值将被一起加密到单个值中的状态输入值与函数输入值组合在一起。
2.一种计算设备(500),被配置来运行由如权利要求1中的编译器编译的计算机程序,设备包括电子存储装置(510)和与存储装置耦合的电子处理器(550),该电子存储装置存储由编译器生成的被配置用于数据函数(f)和状态函数(g)的表网络(180,200,300),该电子处理器被配置为通过应用表网络来计算数据函数和状态函数,其中,
—— 设备被配置来获得函数输入值作为编码的输入值,编码的输入值将被一起加密到单个值中的状态输入值与函数输入值组合在一起,
—— 表网络被配置来将编码的输入值当作输入并生成编码的输出值作为输出,编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起,其中,函数输出值等于对函数输入值应用数据函数(f)的结果,以及状态输出值等于对状态输入值应用状态函数(g)的结果。
3.如权利要求2中的计算设备(500),被配置为根据表网络输入的当前编码来使用表网络的状态函数或数据函数。
4.如权利要求3中的计算设备(500),其中,
—— 编码的输入值根据第一编码()将被一起加密到单个值中的状态输入值与函数输入值组合在一起,
—— 表网络被配置为获得函数输入值和状态输入值作为另外的编码的输入值,该另外的编码的输入值根据第二编码()将被一起加密到单个值中的状态输入值与函数输入值组合在一起,
—— 表网络被配置为将所述另外的编码的输入值当作输入且生成另外的编码的输出值作为输出,所述另外的编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起,其中函数输出值等于对函数输入值应用状态函数(g)的结果,状态输出值等于对状态输入值应用数据函数(f)的结果。
5.如权利要求4中的计算设备(500),其中
—— 第一编码通过第一编码函数E(x,y)来定义,其中x表示函数输入且y表示状态输入,以及第二编码通过由定义的第二编码函数来定义。
6.如权利要求4中的计算设备(500),其被配置为用第二编码( 与第一编码(E)的逆的函数组成(来预处理和后处理表网络(F)的输入和输出。
7.如权利要求2中的计算设备,其中表网络包括单个表,该单个表将编码的输入值当作输入且生成编码的输出值作为输出。
8.如权利要求2中的计算设备,其中,表网络包括
—— 状态提取器表,其被配置为使得对编码的输入值应用的状态提取器表生成状态输入值,
—— 状态函数表,其被配置为使得对状态输入值应用的状态函数表生成状态输出值。
9.如权利要求8中的计算设备,其中,表网络包括:
—— 再编码表,其被配置用于接收编码的输入值和状态输出值作为输入并生成再编码的输入值作为输出,再编码的输入值将被一起加密到单个值中的状态输出值与函数输入值组合在一起。
10.如权利要求9中的计算设备,其中表网络包括数据函数表,其被配置来接收作为输入的再编码的输入值以及作为输出的编码的输出值。
11.如权利要求8中的计算设备,其中表网络包括:
—— 减小的状态函数表,其被配置用于接收状态输入值且生成等于对状态输入值应用的该减小的状态函数的结果的中间状态值作为输出,该减小的状态函数的范围大于单个值且小于状态函数的范围,编码的输入值是根据中间状态值来再编码的。
12.如权利要求11中的计算设备,其中表网络包括:
—— 第一再编码表,其被配置用于接收编码的输入值和中间状态值作为输入且生成再编码的输入值作为输出,再编码的输入值将被一起加密到单个值中的中间状态值与函数输入值组合在一起,
—— 数据函数表,其被配置为接收作为输入的再编码的输入值和作为输出的再编码的输出值,再编码的输出值将被一起加密到单个值中的中间状态值与函数输出值组合在一起,
—— 第二再编码表,其被配置为接收再编码的输出值和状态输出值作为输入且生成编码的输出值作为输出。
13.如权利要求11中的计算设备,其中表网络包括:
—— 第一再编码表,其被配置用于接收编码的输入值和中间状态值作为输入且生成再编码的输入值作为输出,再编码的输入值是函数输入的再编码,再编码是根据中间状态值来选择的,
—— 数据函数表,其被配置为接收作为输入的再编码的输入值和减小的状态值以及作为输出的以编码的形式的函数输出值,
—— 第二再编码表,其被配置为接收以编码的形式的函数输出值和状态输出值作为输入且生成编码的输出值作为输出。
14.如前述权利要求中任一项中的计算设备,其中,表网络包括:
—— 第一再编码表,其被配置用于接收编码的输入值和状态输出值作为输入且生成再编码的输入值作为输出,再编码的输入值是函数输入的再编码,再编码是根据状态输出值来选择的。
15.如权利要求2中的计算设备,其中表网络被配置用于具有至少4个比特的函数输入值。
16.如权利要求2中的计算设备,其中表网络被配置用于具有至少8个比特的函数输入值。
17.如权利要求2中的计算设备,其中表网络被配置用于具有至少4个比特的状态输入值。
18.如权利要求2中的计算设备,其中表网络被配置用于具有至少8个比特的状态输入值。
19.如权利要求2中的计算设备,其中函数输入值和状态输入值具有相同的比特大小。
20.一种用于运行由如权利要求1中的编译器编译的计算机程序的方法,所述方法包括,通过对编码的输入值应用由编译器生成的表网络且生成编码的输出值作为输出来计算数据函数和状态函数,编码的输入值将被一起加密到单个值中的状态输入值与函数输入值组合在一起,编码的输出值将被一起加密到单个值中的状态输出值与函数输出值组合在一起,其中函数输出值等于对函数输入值应用数据函数的结果,以及状态输出值等于对状态输入值应用状态函数的结果。
21.一种存储了计算机程序的计算机可读介质,所述计算机程序包括计算机程序代码模块,所述计算机程序代码模块适于当所述计算机程序在计算机上运行时执行权利要求1或20的所有步骤。
CN201380067505.3A 2012-12-27 2013-12-17 包括表网络的计算设备 Expired - Fee Related CN105453481B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP12199387 2012-12-27
PCT/EP2013/076782 WO2014095772A1 (en) 2012-12-21 2013-12-17 Computing device comprising a table network

Publications (2)

Publication Number Publication Date
CN105453481A CN105453481A (zh) 2016-03-30
CN105453481B true CN105453481B (zh) 2019-02-26

Family

ID=47681539

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380067505.3A Expired - Fee Related CN105453481B (zh) 2012-12-27 2013-12-17 包括表网络的计算设备

Country Status (8)

Country Link
US (1) US10180824B2 (zh)
EP (1) EP2936727A1 (zh)
JP (1) JP2016505891A (zh)
CN (1) CN105453481B (zh)
BR (1) BR112015014470A2 (zh)
MX (1) MX2015007707A (zh)
RU (1) RU2676454C2 (zh)
WO (1) WO2014095772A1 (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MX343892B (es) 2012-12-21 2016-11-28 Koninklijke Philips Nv Dispositivo de computo configurado con una red de tablas.
CN105453481B (zh) 2012-12-27 2019-02-26 皇家飞利浦有限公司 包括表网络的计算设备
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
JP6621813B2 (ja) * 2014-09-30 2019-12-18 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 難読化された算術を実行するための電子計算装置
US10685096B2 (en) 2014-12-22 2020-06-16 Koninklijke Philips N.V. Hiding of a program execution
EP3238365B1 (en) 2014-12-24 2019-02-20 Koninklijke Philips N.V. Cryptographic system and method
US10680796B2 (en) 2015-05-19 2020-06-09 Koninklijke Philips N.V. Computing with encrypted values
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.
NL2015955B1 (en) * 2015-12-14 2017-06-28 Koninklijke Philips Nv Calculating device and method.
RU2708439C1 (ru) * 2015-12-15 2019-12-06 Конинклейке Филипс Н.В. Вычислительное устройство и способ
EP3282675B1 (en) * 2016-08-11 2020-01-29 Nxp B.V. Network node and method for identifying a node in transmissions between neighbouring nodes of a network
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 Конинклейке Филипс Н.В. Электронное вычислительное устройство, выполненное с возможностью вычисления произведения целых чисел
CN110168548B (zh) * 2017-01-05 2023-05-26 皇家飞利浦有限公司 编译设备和方法
EP3376705A1 (en) 2017-03-17 2018-09-19 Koninklijke Philips N.V. Elliptic curve point multiplication device and method in a white-box context

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5111390A (en) * 1988-08-22 1992-05-05 Unisys Corporation Software security system for maintaining integrity of compiled object code by restricting users ability to define compilers
JPH11110224A (ja) 1997-09-29 1999-04-23 Nec Corp 言語処理装置及び方法、並びに情報記憶媒体
US8479016B2 (en) 2006-03-10 2013-07-02 Irdeto B.V. Method and system for obfuscating a cryptographic function
US8479018B2 (en) 2006-04-28 2013-07-02 Panasonic Corporation System for making program difficult to read, device for making program difficult to read, and method for making program difficult to read
US7757181B2 (en) 2006-05-05 2010-07-13 Microsoft Corporation Agenda and day hybrid calendar view
JP5496663B2 (ja) * 2006-07-12 2014-05-21 イルデト・コーポレート・ビー・ヴイ デジタルデータ処理装置の耐改竄性
US8817740B2 (en) * 2006-10-31 2014-08-26 Motorola Mobility Llc Methods and devices of a queue controller for dual mode bidirectional audio communication
US20080127142A1 (en) 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
US9009573B2 (en) * 2008-02-01 2015-04-14 Qualcomm Incorporated Method and apparatus for facilitating concatenated codes for beacon channels
US9710623B2 (en) 2008-03-05 2017-07-18 Irdeto B.V. Cryptographic system
JP5688528B2 (ja) * 2009-03-10 2015-03-25 イルデト・ベー・フェー 入力に依存する符号化を用いたホワイトボックス暗号システム
EP2443786A1 (en) * 2009-06-19 2012-04-25 Irdeto B.V. White-box cryptographic system with configurable key using intermediate data modification
PL2520041T3 (pl) * 2009-12-30 2016-09-30 Sposób generowania tabeli korelacji dla białej skrzynki kryptograficznej
US9274976B2 (en) * 2010-11-05 2016-03-01 Apple Inc. Code tampering protection for insecure environments
US8718280B2 (en) * 2010-12-17 2014-05-06 Apple Inc. Securing keys of a cipher using properties of the cipher process
EP2482184A1 (en) * 2011-02-01 2012-08-01 Irdeto B.V. Adaptive obfuscated virtual machine
RU2620712C2 (ru) 2012-01-09 2017-05-29 Конинклейке Филипс Н.В. Устройство виртуальной машины, имеющее управляемую ключом обфускацию, и способ
CN105453481B (zh) 2012-12-27 2019-02-26 皇家飞利浦有限公司 包括表网络的计算设备
EP3085004A1 (en) 2013-12-20 2016-10-26 Koninklijke Philips N.V. Operator lifting in cryptographic algorithm

Also Published As

Publication number Publication date
WO2014095772A1 (en) 2014-06-26
US10180824B2 (en) 2019-01-15
CN105453481A (zh) 2016-03-30
RU2676454C2 (ru) 2018-12-28
RU2015129742A (ru) 2017-01-26
MX2015007707A (es) 2015-09-07
US20170235552A1 (en) 2017-08-17
EP2936727A1 (en) 2015-10-28
BR112015014470A2 (pt) 2017-07-11
JP2016505891A (ja) 2016-02-25
WO2014095772A9 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
CN105453481B (zh) 包括表网络的计算设备
JP7272363B2 (ja) 高精度プライバシ保護実数値関数評価
Sun et al. MILP‐aided bit‐based division property for primitives with non‐bit‐permutation linear layers
EP3251040B1 (en) Obfuscation for protection of streaming media and other data flows
CN104919750B (zh) 计算关于函数‑输入值的数据函数的计算设备和方法
CN105007256B (zh) 用于在非信任平台上执行安全功能的安全模块
US20190287427A1 (en) Device and method for performing obfuscated arithmetic
CN106656467A (zh) 加密装置及方法
Mazonka et al. Cryptoleq: A heterogeneous abstract machine for encrypted and unencrypted computation
CN105814833B (zh) 用于安全的数据变换的方法和系统
AbdElHaleem et al. A generalized framework for elliptic curves based PRNG and its utilization in image encryption
CN105765896B (zh) 用于表格网络的迭代应用的计算设备
US8707053B2 (en) Performing boolean logic operations using arithmetic operations by code obfuscation
Gu et al. White-box cryptography: practical protection on hostile hosts
CN111602367B (zh) 用于保护在使白盒密码算法安全的对策中使用的熵源的方法
Rahul et al. Chaos-based audio encryption algorithm using biometric image and SHA-256 hash algorithm
EP3391264B1 (en) Calculating device and method
CN114254372B (zh) 数据加密处理方法、系统及电子设备
EP3267618A1 (en) Equality check implemented with secret sharing
CN117155539B (zh) 模拟射频电路网表的混淆及其复原方法、装置、终端及介质
JP6212377B2 (ja) 演算装置、演算方法およびコンピュータプログラム
Yoshikawa et al. Side-Channel Analysis for Searchable Encryption System and its Security Evaluation
Sameh Digital Rights Management of Image Content via LSB Embedding and Palindromic Number Sequence
Jaswanth et al. Data Encryption: A Compiler Based Approach
Huang et al. Optimization of Data Protection in IoT Field of Cloud Computing Using Compiler Privacy Calculation Method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190226

Termination date: 20190424