编译设备和方法技术

技术编号:21958990 阅读:35 留言:0更新日期:2019-08-24 22:18
一种被配置为将源代码计算机程序(102)转换成目标代码计算机程序(106)的编译设备(100),所述编译设备包括:‑处理器电路,其被布置为‑解析(120)所述源代码计算机程序,并且生成针对所述源代码计算机程序的至少部分的静态单赋值(SSA)图(122),并且‑搜索所述SSA图的第二子图(P),其中,所述第一子图(N)是所述第二子图的子图

Compiling devices and methods

【技术实现步骤摘要】
【国外来华专利技术】编译设备和方法
本专利技术涉及编译设备、编译方法以及计算机可读介质。
技术介绍
有时希望防止一些运行时间数据在程序执行期间可见。例如,在处理敏感数据的计算机程序中,避免所述敏感数据在存储器中清楚地进行处理可能是优选的。例如,敏感数据可以包括例如在金融或多媒体应用中所使用的密钥。例如,在区块加密或密钥MAC的实施方式中,可以设法避免清楚地使用密钥值。为了隐藏数据的其他原因可以是要隐藏专有算法的细节。针对这种问题,已经设计了各种解决方案。一种方法是掩蔽包含敏感信息的变量。AndreasHoheisel在“Side-ChannelAnalysisResistantImplementationofAESonAutomotiveProcessors”中详述了一种这样的方法。但是掩蔽具有缺点。例如,掩蔽仍然留下加密形式的数据可获得。此外,掩码常常需要在向计算单元提供数据之前被移除。例如,如果要对掩蔽的数据执行不与进行掩蔽的方式相兼容的操作,这可能是必要的。在区块加密的情况下,所谓的S盒在这方面可能是有问题的。另一方法是使用白盒密码术。在白盒密码术中,例如通过将双射函数可能与椒盐(salt)一起应用于数据来对编码的数据执行所有操作。计算机程序然后被表示为对编码的数据进行操作的表格网络。在S.Chow等人的“White-BoxCryptographyandanAESImplementation”一文中能够发现这样的实施方式的范例。白盒密码术一般将给予比掩蔽更高水平的保护,但是对这种方法来说仍然存在缺点。一个具体问题是白盒密码术常常需要计算机程序的设计者的实质参与。例如,在AES白盒的情况下,人类设计者谨慎地选择程序的哪些部分可以最佳地通过表格来表示。
技术实现思路
提出了一种解决这些问题的编译设备。所述编译设备允许程序员简单地指示程序的哪个部分要在执行期间被隐藏。所述编译设备使用SSA图来对程序进行分析,并且找到能够被有效地实施的部分同时保持期望的部分被隐藏。这可以被用于创建在程序员一侧显著更少努力的白盒实施方式。专利技术人注意到,对SSA图中的要保持隐藏的子图的直接替代常常不是高效的解决方案。所述编译设备的应用包括防止侧信道攻击、密钥刮擦(也被称为存储器刮擦)和白盒攻击。例如,在存储器刮擦攻击中,针对密码密钥(例如,在DRM受保护的媒体播放器中所使用的密钥)来扫描数字设备的存储器。在实施例中,最小切割算法被用于找到具有小输入尺寸(size)的SSA图的部分,并且因此导致存储器高效的实施方式。根据本专利技术的方法可以在计算机上作为计算机实施的方法、或者以专用硬件、或者以这两者的组合来实施。针对根据本专利技术的方法的可执行代码可以被存储在计算机程序产品上。计算机程序产品的范例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,所述计算机程序产品包括被存储在计算机可读介质上的非瞬态程序代码,当所述程序产品在计算机上被执行时,所述非瞬态程序代码用于执行根据本专利技术的方法。在优选实施例中,所述计算机程序包括计算机程序代码,当计算机程序在计算机上被运行时,所述计算机程序代码适合于执行根据本专利技术的方法的所有步骤。优选地,所述计算机程序被实施在计算机可读介质上。本专利技术的另一方面提供了一种制作可用于下载的计算机程序的方法。当计算机程序被上传到例如Apple’sAppStore、Google’sPlayStore或Microsoft’sWindowsStore中时并且当计算机程序可用于从这样的商店下载时,该方面被使用。参考BayrakAliGalip等人的"AutomaticApplicationofPowerAnalysisCountermeasures"一文。参考GiovanniAgosta等人的"TheMEETApproach:SecuringCryptographicEmbeddedSoftwareAgainstSideChannelAttacks"一文。附图说明将仅通过范例的方式参考附图来描述本专利技术的另外的细节、方面和实施例。附图中的元素是为了简单和清晰而图示的并且不一定是按比例绘制的。在附图中,与已经描述的元件相对应的元件可以具有相同的附图标记。在附图中,图1a示意性示出了编译设备的实施例的范例,图1b示意性示出了搜索单元的实施例的范例,图2a示意性示出了程序片段的实施例的范例,图2b示意性示出了SSA图的实施例的范例,图2c示意性示出了指示SSA图中的边缘的实施例的范例,图2d示意性示出了SSA图中的边缘的实施例的范例,图2e示意性示出了SSA图中的修改的边缘的实施例的范例,图3a示意性示出了SSA图的实施例的范例,图3b示意性示出了修改的SSA图的实施例的范例,图4a示意性示出了程序片段的实施例的范例,图4b示意性示出了SSA图的实施例的范例,图4c示意性示出了修改的SSA图的实施例的范例,图5a示意性示出了SSA图的实施例的范例,图5b示意性示出了派生图的实施例的范例,图5c示意性示出了派生图的实施例的范例,图5d示意性示出了最小切割解的实施例的范例,图5e示意性示出了修改的SSA图的实施例的范例,图6示意性示出了编译方法的实施例的范例,图7a示意性示出了根据实施例的具有包括计算机程序的可编写部分的计算机可读介质,图7b示意性示出了根据实施例的处理器系统的表示。图1a-5e中的参考数字的列表:100编译设备102源代码计算机程序104SSA图的第一子图(N)的指示106目标代码计算机程序110输入部120解析器122第一静态单赋值(SSA)图130搜索单元132第二图选择器133SSA图修改器134控制流136第二SSA图137关于(一个或多个)替代的第二子图的实施的信息140代码生成器200搜索单元210派生SSA图生成器220最小切割求解器230SSA图修改器310分发节点320、330顶点320’、330’顶点322、324顶点501-516顶点520源530汇点540添加的顶点570最小切割解具体实施方式尽管本专利技术容许有许多不同形式的实施例,但是在附图中示出了并且将在本文中详细描述一个或多个特定实施例,并且理解本公开将被认为是本专利技术的原理的范例,而并不旨在将本专利技术限于所示和所描述的特定实施例。在下文中,出于理解的缘故,描述了实施例的在操作中的元件。然而,将明显的是,各个元件被布置成执行被描述为由其执行的功能。此外,本专利技术并不限于实施例,并且本专利技术在于每个以及每种新颖的特征或者上文所描述的或者在相互不同的从属权利要求中所记载的特征的组合。如上文所讨论的,常常希望在程序中隐藏中间值(也被称为中间数据)。本专利技术提供了一种旨在完全避免对这样的隐藏值的显式计算的编译器。编译方法的实施例能够以编译器的遍次(pass)方式来实施。实施例可以是自动真实地隐藏运行时间数据,因为数据已经从执行中消失。图1a示意性示出了编译设备100的实施例的范例。编译设备100被配置为将源代码计算机程序102转换成目标代码计算机程序106。编译设备100包括被布置为接收源代码计算机程序102的输入部110。图1a示出了各种单元中的编译设备的一种可能的架构和/或功能组织。这些单元可以通过处理器电路(在图1a中未单独示出)来实施,如硬件实施本文档来自技高网
...

【技术保护点】
1.一种被配置为将源代码计算机程序(102)转换成目标代码计算机程序(106)的编译设备(100),所述编译设备包括:‑输入部(110),其被布置为接收源代码计算机程序,以及‑处理器电路,其被布置为:‑解析(120)所述源代码计算机程序,并且生成针对所述源代码计算机程序的至少部分的静态单赋值(SSA)图(122),所述SSA图的顶点对应于操作,并且所述SSA图的边缘对应于具有对应的位尺寸的赋值,其中,所述输入部(110)还被配置为:‑接收所述SSA图的非空的第一子图的指示(104),所述指示包括所述源代码程序的一个或多个变量和/或赋值,并且其中,所述处理器电路还被布置为:‑搜索所述SSA图的第二子图,其中,所述第一子图是所述第二子图的子图,与所述第二子图的引入边缘相关联的所述位尺寸的总和小于与所述第一图的引入边缘相关联的所述位尺寸的总和,‑在所述目标代码计算机程序中将所述SSA图的所述第二子图实施为单个操作,由此省略与所述第一子图的边缘相对应的所述赋值。

【技术特征摘要】
【国外来华专利技术】2017.01.05 EP 17150336.01.一种被配置为将源代码计算机程序(102)转换成目标代码计算机程序(106)的编译设备(100),所述编译设备包括:-输入部(110),其被布置为接收源代码计算机程序,以及-处理器电路,其被布置为:-解析(120)所述源代码计算机程序,并且生成针对所述源代码计算机程序的至少部分的静态单赋值(SSA)图(122),所述SSA图的顶点对应于操作,并且所述SSA图的边缘对应于具有对应的位尺寸的赋值,其中,所述输入部(110)还被配置为:-接收所述SSA图的非空的第一子图的指示(104),所述指示包括所述源代码程序的一个或多个变量和/或赋值,并且其中,所述处理器电路还被布置为:-搜索所述SSA图的第二子图,其中,所述第一子图是所述第二子图的子图,与所述第二子图的引入边缘相关联的所述位尺寸的总和小于与所述第一图的引入边缘相关联的所述位尺寸的总和,-在所述目标代码计算机程序中将所述SSA图的所述第二子图实施为单个操作,由此省略与所述第一子图的边缘相对应的所述赋值。2.根据权利要求1所述的编译设备,其中,所述SSA图的所述第二子图在所述目标代码计算机程序中被实施为表格或表格网络(134)。3.根据权利要求1所述的编译设备,其中,所述SSA图的所述第二子图在所述目标代码计算机程序中被实施为仿射变换。4.根据前述权利要求中的任一项所述的编译设备,其中,所述SSA图中的所述第二子图由经修改的SSA图中的单个顶点来替代,所述单个顶点指示所述经修改的SSA图中的与由未经修改的SSA图中的第二子图所指示的操作相同的操作。5.根据前述权利要求中的任一项所述的编译设备,其中,所述SSA图的第一子图的所述指示包括所述SSA图的一个或多个边缘的指示,所述处理器电路被布置为选择多个指示的边缘中的第一边缘以及所述多个指示的边缘中的通过所述SSA图中的包括指示的边缘的路径被连接到所述第一边缘的所有另外的边缘。6.根据权利要求5所述的编译设备,其中,所述SSA图的第一子图的所述指示包括所述源代码计算机程序中的变量的指示,所述处理器电路被布置为将对所指示的变量的赋值表示为所述SSA图中的边缘,所述的表示的边缘被包括在所述SSA图的多个边缘的所述指示中。7.根据权利要求6所述的编译设备,其中,所述SSA图的第一子图的所述指示包括所述源代码计算机程序的部分的指示,所述处理器电路被布置为将所述源代码计算机程序的所指示的部分中的赋值表示为包括开始边缘、中间边缘和结束边缘的路径,所述开始边缘和所述结束边缘被包括在所述多个指示的边缘中,所述中间边缘不被包括在所述多个指示的边缘中。8.根据权利要求2和7的组合所述的编译设备,其中,所述表格或所述表格网络对编码的数据进行操作。9.根据前述权利要求中的任一项所述的编译设备,其中,所述处理器电路被布置为遍历所述第一子图的多个超图,并且...

【专利技术属性】
技术研发人员:W·C·马龙
申请(专利权)人:皇家飞利浦有限公司
类型:发明
国别省市:荷兰,NL

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1