包括表网络的计算设备的制造方法

文档序号:9693619阅读:225来源:国知局
包括表网络的计算设备的制造方法
【技术领域】
[0001]本发明涉及被配置为根据函数输入值计算数据函数的计算设备,该设备包括电子 存储装置和与存储装置耦合的电子处理器,电子存储装置存储被配置用于数据函数的表网 络,电子处理器被配置为通过应用表网络来计算数据函数,其中,该设备被配置为获得函数 输入值作为编码的输入值,表网络被配为将编码的输入值当作输入并且生成编码的输出 值、编码的函数输出值作为输出,函数输出值等于对函数输入值应用了数据函数的结果。
[0002] 本发明还涉及对应的方法和编译器。
【背景技术】
[0003] US2012/0300922公开了一种用于生成适合于用在密码学处理方法中的对应关系 表并且包括将多个输入数据和多个输出数据存储在该表中的方法,每个输入数据与该表中 的至少一个输出数据相关联。对于每个输入数据,所述输出数据中的至少一个是通过对第 一辅助数据和根据输入数据加密的中间数据应用编码化函数而获得的。
[0004] US2012/0155638公开了在启用计算机的密码学领域,通过保护密码密钥,通过在 使用一个密钥加密或解密消息之前对其应用预定线性置换来硬化诸如块密码之类的密码 来对抗攻击。这在"白盒"环境中特别有利,在"白盒"环境中,攻击者在密码算法的执行期间 具有对于密码算法(包括算法内部状态)的完全访问权。该方法和关联的计算装置是有用 的,其中密钥通过一个过程导出,因此其在具体实现密码的软件代码被编译时是未知的。这 典型地是以下情况,其中存在密码的许多用户并且每个用户具有他自己的密钥,或者其中 每个用户会话具有它自己的密钥。
[0005] 在传统密码学中,典型地假设,攻击者仅仅有权访问安全系统的输入和输出值。例 如,攻击者将能够观察到将进入系统的明文文本并且观察到离开系统的加密的文本。尽管 攻击者可以尝试通过分析这样的输入/输出对,可能地甚至使用在计算上加强的方法,来得 到益处,但是他不会想到有权直接访问实施输入/输出行为的系统。
[0006] 近来,考虑威胁模型已经变得必要,其中假设攻击者对于实现方式有一些了解。例 如,可以考虑边信道分析和反向工程的威胁。此外,先前与安全问题最关联的关注点已经延 展到其他领域,比如机密性。尽管处理诸如密码学密钥之类的安全信息的密码学系统仍然 是主要的关注点,但是其他程序(例如,处理机密性相关的信息的那些程序)的保护也变得 重要。
[0007] 长期已知的是,计算机系统通过所谓的边信道泄露一些信息。观察计算机系统的 输入-输出行为可以不提供关于敏感信息(比如计算机系统所使用的秘密密钥)的任何有用 的信息。但是计算机系统具有可以被观察的其他信道,例如其功耗或电磁辐射;这些信道被 称作边信道。例如,不同指令所消耗的功率的小变化和在执行指令时消耗的功率的变化可 以被测量。所测量的变化可以是关于敏感信息的,比如密码学密钥。超出可观察的有意的输 入-输出行为的关于秘密信息的该附加信息被称为边信道。通过边信道,计算机系统可以在 其使用期间"泄露"秘密信息。与可以仅仅从输入-输出行为的密码学分析获得信息相比,观 察并分析边信道可以使攻击者访问到更好的信息。一种已知类型的边信道攻击是所谓的差 分功率分析(DPA)。
[0008] 针对边信道问题的当前方法引入了计算上的随机性。例如,在执行程序的真实操 作之间可以插入空(dummy)指令以弄模糊功率消耗与程序正在其上工作的数据之间的关 系。
[0009]关于计算机的甚至更强的攻击是所谓的反向工程。在许多安全场景中,攻击者可 以具有对于计算机的完全访问权。这给了他们分解程序并获得关于计算机和程序的任何信 息的机会。只要足够努力,例如隐藏在程序中的任何密钥都可以被攻击者发现。
[0010]对抗该攻击场景的保护已经证明是非常困难的。一种类型的反抗措施是所谓的白 盒密码学。在白盒密码学中,密钥和算法被组合。得到的算法仅仅为一个特定密钥工作。接 下来,算法可以被实施为所谓的查找表网络。计算被变换成密钥相关的表中的一系列的查 找。对于该方法的示例,参见例如,S·Chow,P·Eisen,H.Johnson,P·C·vanOorschot的 "White-BoxCryptographyandanAESImplementation"。

【发明内容】

[0011] 针对计算机系统的已知反抗措施完全不令人满意。例如,随机性的引入可以通过 统计学分析来反抗。软件的混淆可以通过程序操作的更高级的分析来反抗。因此,需要更多 且更好的反抗措施。
[0012] 例如,一种混淆计算机程序的方式是对输入值编码并且尽可能多地操作编码的 值。甚至可以使用所谓的表网络来执行计算。这样的表网络可以手工、或者例如在白盒密码 学的情况下通过专门的程序、或者通过通用编译器来制作。曾认为,一般而言,表混淆了被 执行的操作的类型。然而,本发明人发现,后者一般不是真的。
[0013]即使函数的(多个)输入和(多个)输出被编码,输入/输出关系的统计学属性也可 以披露哪个函数被编码。以下是该现象的一个示例。
[0014]考虑W= {0,1,…,N_1},编码E及其对应的解码D=E-、让F和G分别表示编码的模N 加法和编码的模n乘法。即,将F:ffxff-ff定义为ftij)=左〇^00(>y)X其中鏺#表示 模N加法,以及将G:WXW4W定义为G(x,y)=E(D(x)*ND(y)),其中*N表示模N乘法。
[0015] 对于每个固定X,得到{F(x,y)|y£W}=W.此外,对于每个非零XeW并且N质数,得 至lJ{G(X,y)|yeW}=W,和{G(0,y)|yeW}=E(0)。对于N非质数,出现类似的模式。
[0016]结果,独立于编码E,可以确定F不能是编码的模N乘法,并且G不能是编码的模N加 法。攻击者具有至少两种方法这样做。他可以固定在W中的两个不同元素xdPx2,并且对于Η £^,6},,针对所有7比较!1(11,7)和!1(1 2,7)。如果对于所有7,这些量相等,则!1不能代表模~ 乘法;如果对于所有y,这些量一致,则Η不能代表模Ν加法。不能选择要读取哪些表条目但是 可以观察到运行的软件程序的表访问的结果的攻击者可以使用以下事实:W的每个元素在 作为G的输出时,出现的频率相等,元素Ε(0)作为输出出现得频繁得多。因此,如果作为Η的 输出,W的一个元素比W的其他元素出现得频繁得多,则Η更可能是混淆的模Ν乘法,而非混淆 的模Ν加法。
[0017]换言之,如果使用可用的最佳软件混淆方法之一,即,如果将输入和输出值的完全 编码以及表网络用于计算,则一些信息仍热可以通过程序的检查而获得。这种情形是非常 不希望有的。
[0018]将有利的是,具有解决以上讨论的问题中的一些的设备或方法。本发明通过独立 权利要求来限定。从属权利要求限定有利的实施例。
[0019]本发明的第一方面涉及一种被配置来编译计算机程序的编译器,编译器被配置来 解析计算机程序以便识别多个运算符(包括数据函数(f)和状态函数(g)),以及被配置来生 成被配置用于数据函数和状态函数的表网络,其中表网络被配置来将编码的输入值当作输 入并生成编码的输出值作为输出,编码的输出值将被一起加密到单个值中的状态输出值与 函数输出值组合在一起,其中,函数输出值等于对函数输入值应用数据函数的结果,以及状 态输出值等于对状态输入值应用状态函数的结果,其中编码的输入值将被一起加密到单个 值中的状态输入值与函数输入值组合在一起。
[0020] 此外,提供被配置为计算运行由这样的编译器编译的计算机程序的计算设备。计 算设备包括电子存储装置和与存储装置耦合的电子处理器,该电子存储装置存储被配置用 于数据函数的表网络,该电子处理器被配置为通过应用表网络来计算数据函数。
[0021] 该设备被配置为获得函数输入值作为编码的输入值,编码的输入值将被一起加密 到单个值中的状态输入值与函数输入值组合在一起。表网络被进一步配置为将编码的输入 值当作输入并且生成编码的输出值作为输出,编码的输出值将被一起加密到单个值中的状 态输出值与函数输出值组合在一起,其中函数输出值等于对函数输入值应用数据函数的结 果以及状态输出值等于对状态输入值应用状态函数的结果。
[0022] 获得函数输入值作为编码的输入值意味着,设备接收函数输入,因为其接收编码 的输入值(其中函数输入与另一值编码在一起)。
[0023]设备计算两个函数:将函数输入值当作输入且生成函数输出值的数据函数,以及 将状态输入值当作输入且生成状态输出值的状态函数。然而,尽管根据独立的输入值计算 两个可能不同的函数,从而生成相应的独立的输出值,但是需要仅仅一个表网络。一个表网 络接收单个编码的输入值,函数输入值和状态输入值二者被加密到该单个编码的输入值 中。状态输入值可以取至少两个不同值。
[0024]在单个表网络(其中,函数输入值与多个状态值中的一个在一起被加密)中实施两 个函数具有的优势在于,函数输入值对应于多个不同的编码的输入值。这意味着,基于列出 了输入值与中间值之间的对应关系的攻击被阻止了。此外,有利的是,数据函数和状态函数 是独立的,即状态函数不取决于(可能地多个)函数输入中的任何一个,数据函数不取决于 (可能地多个)状态输入中的任何一个。这意味着,相同的表网络可以在不同时间用于不同 函数;在相同时间用于不同函数;或者用于一个函数但不用于另一个函数。此外,这三个选 项可以在相同程序中针对不同表网络进行使用。这相当大地增加了反向工程的困难。的确, 即使从信息理论的视角,具有对两个不同函数编码的表网络使得不可能从网络本身判断其 用于哪个函数,因为网络实际上被配置用于两个,其中的任何一个可以被或可以不被使用。 因此,攻击者被强制在相同时间分析程序的大得多的部分。
[0025]加密(通常称作"E")是可逆的,S卩,从编码的函数输入值和状态输入值对,函数输 入值和状态输入值二者都可以被恢复。同样地,从编码的函数输出值和状态输出值对,函数 输出值和状态输出值二者都可以被恢复。
[0026]加密是私有的,S卩,系统的不同实现方式可以使用不同的方式来一起加密输入或 输出值。此外,加密至少
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1