最优程序变体的生成的制作方法

文档序号:27328564发布日期:2021-11-10 01:30阅读:110来源:国知局
最优程序变体的生成的制作方法

1.本公开涉及用于生成软件程序的最优变体的计算系统、方法和非暂态计算机可读介质。


背景技术:

2.云服务提供了对具有成本效益的计算资源(诸如数据存储和计算能力)的按需访问。通常,云服务是可通过公共网络获得的。因此,云中的数据可能有来自经由边信道(side channel)观察云的恶意用户的窃取风险。例如,通过边信道,未授权用户(例如,服务提供商、其他用户等)可能得知关于正被存储的数据文件、数据文件的使用情况、服务的使用情况等等的信息。作为另一示例,云提供商可能被恶意用户黑客攻击。为了确保数据的机密性,可以在将数据传递到云之前对其应用加密。在这种情况下,云必须对加密数据进行操作,以维持数据的机密性。
3.诸如全同态加密(fully homomorphic encryption,fhe)的密码技术支持对数据的不透露关于数据的任何信息的任意计算。然而,对已经通过fhe加密的数据的计算会遭受高额的计算成本。此外,寻找折衷的努力在控制流决策的数量上是指数级的。因此,消除通过边信道的所有数据泄漏会增加程序的运行时间。另一方面,可信执行环境(trusted execution environment,tee)只需要很少的计算开销,但更容易受到边信道攻击。更为复杂的是,一些应用具有要求数据属性、变量、决策等保持机密的策略。


技术实现要素:

4.本公开的实施例针对一种计算系统,包括:存储装置,被配置为存储软件程序的控制流内的语句集;以及处理器,被配置为:生成所述软件程序的多个变体,所述多个变体分别包括暴露于边信道的控制流内的语句的不同子集;基于所述软件程序的多个变体的边信道泄漏值和性能值,确定所述软件程序的一个或多个帕累托最优变体;以及将关于所述软件程序的一个或多个帕累托最优变体的信息输出到用户设备。
5.本公开的实施例针对一种方法,包括:识别软件程序的控制流内的语句集;生成所述软件程序的多个变体,所述多个变体分别包括暴露于边信道的控制流的语句的不同子集;基于所述软件程序的多个变体的边信道泄漏值和性能值,确定所述软件程序的一个或多个帕累托最优变体;以及将关于所述软件程序的一个或多个帕累托最优变体的信息输出到用户设备。
6.本公开的实施例针对一种包括指令的非暂态计算机可读介质,当由处理器执行时,所述指令使得计算机执行方法,所述方法包括:识别软件程序的控制流内的语句集;生成所述软件程序的多个变体,所述多个变体分别包括暴露于边信道的控制流的语句的不同子集;基于所述软件程序的多个变体的边信道泄漏值和性能值,确定所述软件程序的一个或多个帕累托最优变体;以及将关于所述软件程序的一个或多个帕累托最优变体的信息输出到用户设备。
附图说明
7.参考结合附图的以下详细描述,示例实施例的特征和优点以及在其中实现特征和优点的方式将变得更加明显。
8.图1是示出根据示例实施例的用于生成软件程序的最优变体的计算环境的图。
9.图2a是示出根据示例实施例的其中决策的子集从边信道隐藏的控制流的图。
10.图2b是示出根据示例实施例的将暴露的程序代码转换为隐藏的程序代码的过程的图。
11.图3是示出根据示例实施例的执行安全性和性能折衷分析的过程的图。
12.图4a

图4c是示出根据示例实施例的程序变体的安全性和性能的曲线图的图。
13.图5是示出根据示例实施例的确定软件程序的一个或多个最优变体的方法的图。
14.图6是示出根据示例实施例的用于本文示例中的计算系统的图。
15.在整个附图和详细描述中,除非另有描述,否则相同的附图参考标号将被理解为指代相同的元素、特征和结构。为了清晰、例示和/或方便,可以夸大或调整这些元素的相对大小和描绘。
具体实施方式
16.在下文的描述中,为了提供对各种示例实施例的彻底理解,阐述了具体细节。应当理解,对实施例的各种修改对于本领域的技术人员将是明显的,并且在不偏离本公开的精神和范围的情况下,本文所定义的通用原理可以应用于其他实施例和应用。此外,在以下描述中,为了解释的目的,阐述了许多细节。然而,本领域的普通技术人员应当理解,可以在不使用这些具体细节的情况下实践实施例。在其他情况下,为了不以不必要的细节模糊本描述,公知的结构和过程没有被示出或描述。因此,本公开不旨在限定于示出的实施例,而是要符合与本文所公开的原理和特征相一致的最广泛的范围。
17.示例实施例针对一种系统,该系统可以生成软件程序的多个变体,这些变体具有不同数量的隐藏的(隐蔽的)控制流语句。该系统可以测量软件程序的变体的安全性(例如,经由边信道的比特泄漏等)和性能(例如,程序运行时间等)。此外,该系统可以分析软件程序的变体,并经由安全性和性能折衷分析识别程序的一个或多个最优变体。该分析帮助开发者做出关于隐藏控制流内的哪些语句(决策)以及允许通过边信道观察哪些语句(决策)的决策。相应地,该系统可以提供包括具有不同的策略、信息流、数据等的软件程序的安全性和性能的不同的帕累托最优(pareto

optimal)组合的程序的变体集。
18.可以使用各种算法执行安全性和性能折衷分析,这些算法包括贪婪启发式算法和遗传算法。在一些情况下,基于用户选择,可以只使用一种算法,也可以使用两种算法。更好的算法可以取决于程序的大小、要分析程序的速度等等。此外,用户(开发者)可以提供软件程序的预定义安全策略,该预定义安全策略标识必须保持隐藏的特定变量、语句等。可以基于预定义安全策略生成变体并执行分析。
19.对于一些软件程序,只有当消除所有边信道暴露时,才能实现有意义的安全性。例如,公钥密码学中的密码学基元(诸如用于模幂运算的平方乘算法(square and multiply algorithm))可能需要这种安全性。在这种情况下,如果私钥比特通过边信道泄露,则所有依赖于私钥保密性的安全性都会丢失。
20.可以通过基于秘密数据产生不具有存储器访问或控制流决策的常数时间代码来避免广泛类的边信道。然而,对于更复杂的操作,避免存储器访问或控制流决策会导致抑制的性能增益。例如,dantzig的单纯形算法在当前解的目标值无法再改进时就会终止。它在实践中极其高效,但最坏情况下的运行时间在问题大小上是指数级的。为了消除本示例中的边信道,系统还必须防止终止条件泄漏。这实质上给运行时间创造了指数级的增益。
21.由于运行时间的过高成本,在许多情况下,消除所有边信道是不切实际的。示例实施例提供了可以生成软件程序的变体的机制,这些变体包括一些边信道泄漏,并且也包括一些隐藏的控制流决策。系统可以识别哪些变体提供了安全性和性能之间的最优折衷。因此,系统可以自动选择要隐藏的控制流决策和可以泄漏的控制流决策,从而节省开发者手动进行这种选择。这里,基于可以隐藏的控制流决策的数量,变体的数量呈指数级增长。因此,对于人类来说,执行这种折衷分析是不切实际的。折衷分析可以识别软件程序的一个或多个变体,其中这些变体相对于由系统创建的所有变体,在安全性和性能两方面都是最优的。
22.图1示出了根据示例实施例的用于生成软件程序130的最优变体的计算环境100。参考图1,用户可以经由用户设备110开发软件程序130,并将软件程序的最优变体130k上传到主机系统120。这里,用户设备110可以包括集成开发环境(integrated development environment,ide)等等,其允许用户编写/开发软件程序130。此外,一旦被开发,用户可以经由网络连接到主机系统120,以上传所开发的软件程序的变体130k的可执行文件。例如,用户设备110可以是台式计算机、笔记本电脑、移动设备、平板电脑、服务器等,其经由网络(诸如互联网)连接到主机系统120。主机系统120可以是云平台、网络(web)服务器、数据库等。软件程序130可以用编程语言(诸如java等)编写。
23.在软件程序130内可以是控制流。控制流是软件程序130的编程语句、指令、函数调用等在其中被执行或评估的顺序。在控制流内可以是各种决策。例如,决策(也被称为转变等)是导致做出关于在控制流内遵循两个或更多个路径中的哪一条的选择的编程语句。决策的示例关于图2b被示出和描述。控制流内的决策的一些示例包括“if”语句、“while”语句、“for”循环、“break”语句、“continue”语句和其他条件。
24.根据各种实施例,用户设备110可以包括其中的软件工具(例如,嵌入在ide内等),该软件工具可以执行安全性和性能折衷分析。软件工具可以识别软件程序130的控制流内的决策的列表。这里,用户设备110可以生成软件程序130的多个变体,其中不同的决策子集被隐藏,并且不同的子集被暴露于边信道。这些变体的结果是安全性和性能的不同级别。此外,软件工具可以测量变体中的每一个的安全性,并且测量变体中的每一个的性能值(诸如运行时间)。然后,软件工具可以执行安全性和性能折衷分析,该安全性和性能折衷分析识别包括安全性和性能的帕累托最优值的软件程序的一个或多个最优变体。
25.在图1的示例中,软件工具识别软件程序130的变体的子集,这些变体在安全性和性能之间具有最优折衷。在该示例中,变体的最优子集包括变体130c、130f和130k。变体的最优子集130c、130f和130k可以包括安全性和性能之间的不同折衷。用户设备110的用户可以选择将哪个变体(例如,变体130k等)发送到主机系统120。虽然主机系统120被示出与用户设备110分开,但是应当理解,示例实施例的所有特征可以体现在包括用于执行安全性和性能折衷分析的逻辑以及用于生成软件程序的用户环境的单个设备中。此外,软件工具嵌
入在ide内不是必须的。作为另一示例,软件工具可以是独立的服务或嵌入在另一软件应用内。
26.图2a示出了根据示例实施例的其中一些决策从边信道隐藏的软件程序200的控制流的示例。参考图2a,软件程序200包括具有多个决策211

219的源代码。决策211

219是在其中做出程序选择的程序语句。每个选择可以表示软件应用内的两个或更多个不同路径之间的选择。在一些情况下,决策211

219可以包括被操作的变量。当确定软件程序200的不同变体时,主机系统(例如,图1中的主机系统120)可以选择性地隐蔽/隐藏软件程序200的各种决策211

219。例如,决策211

219可以包括if/then语句、while语句、continue语句、break语句、for循环等。
27.软件程序200的每个变体可以包括隐藏决策的不同子集。在图2a中示出的软件程序200的变体中,决策211、214、217和218是隐藏的,而决策212、213、215、216和219被留下来暴露于边信道。应当理解,“暴露”于边信道并不一定意味着整个决策内容对于边信道是可得的。在一些情况下,决策可以利用预定数量的比特(例如,64比特等)表示,并且可以使用比特来测量泄漏。例如,如果观察者能够确定变量不为零(例如,它必须大于或小于零),这可以被称为64个可能比特中1比特的数据被暴露于边信道。可以观察/获得的决策的数据越多,透露的比特越多。
28.并非所有的程序数据都是同样敏感的。因此,将来自一个决策的数据透露给边信道可能不等于将来自另一个决策的数据透露给边信道。此外,用户可以提供安全策略,该安全策略指定必须保持隐藏的特定决策/变量。哪些决策211

219要隐藏的选择可以基于安全策略,使得每个变量满足该安全策略。
29.根据各种实施例,可以基于其中决策211

219的不同子集被隐藏并且不同子集被透露的软件程序200的不同变体来确定软件程序200的折衷。因为软件程序的变体数量基于控制流中的决策数量呈指数级增长,而且并非所有决策都对安全性具有相同影响,所以用户手动做出这种选择是不切实际的。由本文所描述的主机系统执行的分析帮助开发者确定决策211

219中的哪些决策要透露以及哪些决策要隐藏。在图2a中示出的软件程序200的变体中,安全性值222,其表示软件程序200的该变体的比特泄漏量,其可以由主机系统测量。此外,性能值224表示软件程序200的该变体的运行时间。安全性值222和性能值224将通过改变哪些决策211

219被透露以及哪些被隐藏而改变。如参考图3进一步描述的那样,安全性值222和性能值224可以使用在折衷分析期间由主机系统触发的子例程来测量。
30.图2b是示出根据示例实施例将暴露的程序代码240转换为隐藏的程序代码250的过程200b的图。参考图2b,暴露的程序代码240包括程序的控制流内的决策的程序代码。例如,程序代码240可以表示图2a中示出的决策211。在该示例中,程序代码240包括条件表达式“e”的布尔结果,该结果被透露给能够观察执行的控制流的攻击者。基于“e”的结果,只计算“f”或“g”。选择“f”或“g”的决策从程序代码240是可观察到的。
31.同时,隐藏的程序代码250可以通过将程序代码240转换为不透露决策的语义等价物来生成。例如,主机系统可以将程序代码240重写为隐藏的程序代码250的形式。在这种情况下,隐藏的程序代码250计算“f”和“g”两者,并通过调用不经意(oblivious)选择函数来组合结果。然而,因为攻击者没有得知“e”的结果,所以没有控制流决策是可观察到的。相反,选择语句从边信道隐蔽了这个特征。因此,隐藏的程序代码250的安全性值将大于程序
代码240的安全性值。然而,隐藏的程序代码250的缺点是,系统不得不执行c(f)+c(g)次计算。相反,当执行程序代码240时,系统只需要执行c(f)、c(g)中的最大值次计算。因此,隐藏的程序代码250可以具有更长的运行时间(更差的性能值)。
32.图3示出了根据示例实施例执行安全性和性能折衷分析的过程300。参考图3,主机系统320包括执行软件程序310的多个变体的安全性和性能折衷分析的分析算法322。例如,主机系统320可以是用户设备、服务器、数据库、云平台等等。主机系统320可以生成多个变体。这里,主机系统320可以以其中没有比特通过边信道泄漏的全隐藏程序代码开始。然后,主机系统320可以以增量方式透露决策以生成变体。然而,其他搜索方法也是可能的。例如,主机系统320可以以一些决策隐藏而一些决策透露开始。在一些实施例中,主机系统320可以接收安全策略330,该安全策略330指定了必须保持隐藏的一个或多个决策、变量等。这里,主机系统320可以在考虑到必须保持隐藏的决策等的情况下生成变体。
33.主机系统320可以执行不同的变体。这里,分析算法322可以执行基于安全策略330内的条件的不同变体的安全性和性能折衷分析。此外,在运行时间期间,安全子例程324可以测量变体泄漏的比特量,并且性能子例程326可以测量变体的运行时间。安全性值和性能值可以反馈到分析算法322用于执行折衷分析。如下文进一步描述的那样,分析算法322可以是识别软件程序310的一个或多个帕累托最优变体的贪婪启发式算法。作为另一示例,分析算法322可以是识别软件程序310的一个或多个帕累托最优变体的遗传算法。
34.在该示例中,主机系统320可以向用户设备输出关于软件程序的三个最优变体(变体311、312和313)的信息。这里,主机系统320可以输出代码、度量(安全性值和性能值)等。因此,开发者可以接收建议的代码变更以及建议的代码变更的原因。
35.本文描述的分析系统可以包括可以测量安全性和性能的过程。安全性值和性能值可以通过成本函数确定。例如,安全性度量可以测量从执行的程序中观察到的数据比特泄漏量。例如,性能度量可以是程序变体的运行时间。对手模型(adversary model)可以学习程序的初始状态。对手模型描述了对手的能力,以及,可以针对哪种对手保护程序。
36.为了评估程序的安全性,系统可以依靠已建立的定量信息流(quantitative information flow,qif)技术和信息理论。qif分析可以分解为两个步骤,包括代数解释,接着是数值评估。然后,系统可以捕获对手模型的观点作为程序的初始状态的等价关系。然后,系统可以对等价关系进行量化,以得出表达执行程序时的对手信息流(adversarial information flow)的数值。
37.系统可以使用诸如熵计算的数值度量来量化可以从预定义量的比特中观察到多少比特。得到的度量可以包括在程序执行期间从程序泄漏的平均信息流的测量,以比特为单位。系统可以将从程序的执行所得到的程序到观察者的信息流建模为程序的初始状态中的等价关系。如果控制流的观察者无法在两个状态之间进行区分,那么它们就是等价的。等价类的数量越高并且类越小,透露给攻击者的信息越多。在单一集合的极端情况下,观察者无法在状态中的任何一个之间进行区分,因此不会学到任何信息。另一方面,如果观察得到单元素集合,则攻击者具有初始状态的完美知识。
38.同时,性能度量可以测量运行软件程序所花费的时间。安全性度量和性能度量可以被实施为子例程。还应当理解,如本领域所公知的,可以使用任何安全性度量和性能度量。
39.图4a

图4c示出了根据示例实施例的程序变体的安全性值和性能值的曲线图410、420和430。参考图4a,曲线图410示出了关于程序内隐藏的决策数量的性能值(运行时间)的曲线图。如从曲线图410可以看出的,隐藏的决策越多,运行时间越大。同时,曲线图420示出了关于程序内隐藏的决策数量的比特泄漏的曲线图。如从曲线图420可以看出的,比特泄漏随着越多的决策被隐匿而减少。曲线图420是程序的特殊情况,其中,每个控制流决策的移除导致相似量的安全性增量和相似量的性能损失。一般来说,情况并非如此,因为不同的控制流决策对安全性和性能具有不同的影响。此外,曲线图430示出了曲线图410叠加在曲线图420上。识别帕累托最优解可以识别对比特泄漏和运行时间两者的最优值。在该示例中,每个解都是帕累托最优解。这里,如果在至少一个维度中没有其他解具有严格更好的(即,更低的)值,并且没有其他维度具有更差的(即,更高的)值,则实现帕累托最优。相应地,如果一个解不被另一个解所支配(即,另一个解不是严格更好的),则该解是帕累托最优的。曲线图430并没有示出解的整个空间,而是示出提供不同折衷的印象的解的子集,这些解都是帕累托最优的。
40.在一些实施例中,系统可以识别泄漏以支持定性信息流(qualitative information flow)策略。定性信息流策略为每个程序变量指定在程序执行时到观察者的信息流是否是可容忍的。例如,可以执行污点流(taint flow)分析以确定程序是否符合定性信息流策略。例如,程序p与策略φ相关联。系统可以构建污点流分析,其中控制流转变(决策)是污点流分析中的宿。系统可以从φ构建初始污点变量集。然后,污点可以扩散到其他变量。分析返回流的集合作为元组(v,τ),该元组由污点源变量“v”和宿转变“τ”组成。在该示例中,当且仅当分析输出空集时,p符合φ。
41.作为另一示例,如果程序的对手流不超过任何变量的定量信息流策略,则系统可以考虑程序是否符合定量信息流策略。这里,定量信息流策略可以定义变量的对手信息流的上界,并且系统可以使用最坏情况下的信息流测量。
42.程序p最初违反给定的定量信息流策略ψ是可能的。在这种情况下,系统可以将程序转化为确实符合定量信息流策略ψ的变体。在这种情况下,如果程序不符合ψ,则存在一个变量,其中到观察者的对手信息流超过了用于该变量的预定义阈值。为了使p相符合,必须通过移除控制流语句(诸如图2b的示例中所示)来减少变量的对手信息流。控制流移除算法可以以掩饰、或以其他方式隐匿程序代码内的决策的方式来重写程序代码。
43.接下来,系统可以执行安全性

性能折衷分析。在一些实施例中,给定变体的决策组合(例如,隐藏、透露、隐藏、隐藏、透露等)可以解释为这种折衷的特定选择。在下面的等式中,该特定选择被表示为二元向量(t)。寻找与具有最优安全性和性能的符合程序相对应的转变的问题可以被表示为具有以下优化函数的优化问题。
44.等式1:
[0045][0046]
更详细地,系统可以确定成本函数f(t)的参数最小值(argument minimum),使得程序t(p,t)符合定量信息流策略ψ。这以下列方式描述关于二元向量t的原始程序p的转化。如果t的第i个条目为0,则移除第i个控制流决策。否则,新程序仍然包含此决策。形式
上:
[0047]
等式2:
[0048]
arg min f(t)
[0049]
s.t.t(p,t)符合ψ
[0050]
t∈{0,1}
|t|
[0051]
由于f具有多个对象,所以求解该优化问题可能不会得到单个最优解,而是帕累托最优解的集合。系统可以关于μ
p
以升序输出该集合中的解。
[0052]
用于执行安全性和性能折衷分析的第一分析算法是贪婪启发式算法。贪婪启发式算法提供快速/高效的收敛。贪婪启发式算法的起点是不包含任何透露的控制流决策的初始程序的转化。换句话说,所有的决策都是隐藏的。这被称为全隐藏程序。这个程序显然是符合定量信息流策略ψ的,因为它根本不牵涉任何对手信息流。基于全隐藏程序,系统可以迭代地透露控制流决策,直到透露任何更多的决策将导致不符合定量信息流策略ψ。通过递增地透露控制流决策,系统逐渐获得具有更好的性能以及更低的安全性的符合策略的程序。
[0053]
贪婪启发式可以接收程序p和定量信息流策略ψ作为输入,并输出程序p的非支配集合。该算法,作为启发式,只提供实际解的近似值。在每个迭代步骤中,启发式可以考虑基本程序,在第一步中以全隐藏程序开始,以及对应于具有一个额外控制流转变被透露的程序的比特向量集b。系统可以过滤任何符合策略的和非支配的程序,并将其对应的比特向量添加到当前的比特向量集b,如果每个程序都是不符合的或被解集的程序所支配,或者如果没有更多的转变要透露,则贪婪启发式算法终止。将对应于b的元素每个程序添加到解集中。随机选择这些程序之一作为下一个迭代步骤的基础。过滤非支配程序是通过子例程来实现的,该子例程输出非支配程序的最大子集。
[0054]
系统可以以全透露程序开始(即原始程序)并移除控制流转变,而不是以全隐藏程序开始并透露控制流决策。然而,这可能更困难。例如,全透露程序已经符合策略是不太可能的。因此,系统必须以某种方式通过调查其他程序变体来建立策略符合性。这样做,可能不得不调查大量不符合的程序。
[0055]
作为另一示例,基于策略的安全性和性能折衷分析可以使用遗传算法来执行。例如,遗传算法可以包括用于基于遗传元启发式解决优化问题的启发式方法。遗传算法不需要关于搜索空间的结构的任何先验知识,因此它们很好地适合示例实施例中描述的问题。与贪婪启发式算法相反,考虑并使用不一定符合策略的解的整个集合(即所谓的种群)经由遗传算法来生成新的解。
[0056]
例如,可以根据适合度函数从种群中选择最适合的个体,即大小t的二元向量。基于所选择的个体,通过使用所谓的杂交和突变,生成新的个体,其对种群中最不适合的个体进行替代。重复该过程进行直到找到足够大量的非支配解或已经达到运行时间界限。遗传算法可以使用由开发者确定的种群大小n。算法对于程序p以及定量信息流策略ψ,输出大小最多为n的符合策略的程序的非支配集。由于遗传算法可以收敛到一个解,为了使开发者获得解的广泛选择,遗传算法使用了小生境方法(niching method)。
[0057]
在该示例中,适合度函数f基于将策略符合性考虑在内的排名。对于个体i,如果它在当前种群中被k个个体所支配,则算法可以向其分配f
i
:=n

k。如果程序不是策略符合
的,则算法可以分配f
i
:=0来惩罚这种解,并优选符合的程序。此外,在遗传算法的上下文下,个体的每个成分被称为基因。两个个体可以通过调换父母的基因的前半部分进行杂交获得。对于那些个体,基于种群大小的倒数的概率应用突变。
[0058]
在一些实施例中,可以使用小生境方法。小生境可以被推荐用于多目标优化。如果种群的两个个体在相同的小生境(niche)中(即,它们的距离低于阈值共享参数σ),则它们的适合度被共享。在该示例中,一个毫不含糊的解可以用等式3表示。
[0059]
等式3:
[0060][0061]
在该示例中,m1、m2、m1和m2是在算法的开始被计算一次的标量。它们表示搜索空间的边界。这里,系统可以使用两个熟知的程序的那些特性来近似搜索空间的边界。全透露程序将具有很高的泄漏但具有很好的性能,而全隐藏程序将不具有泄漏但具有很差的性能。通过确定两个点的距离,系统不会将一个维度的影响加权到另一个维度上,因为它们可能具有不同的尺度。相反,系统可以关于上述程序的最大值对两个维度进行标准化。这可以导致下面在等式4中示出的以下参数。
[0062]
等式4:
[0063][0064][0065]
其中μ
s
描述安全性测量,μ
p
描述性能测量,并且描述所有隐藏的程序。其中,在下文中,系统可以如在等式5中所示表示尺度因子。
[0066]
等式5:
[0067][0068]
现在,适合度与相同小生境中的其他个体共享。这里,系统可以定义如等式6中所示的共享函数。
[0069]
等式6:
[0070]
sh:[0,inf]

[0,1]
[0071]
其中
[0072]
[0073]
其中d描述搜索空间中两个点的度量。可以使用欧氏距离度量,如下等式7中所示。基于简单的适合度函数,系统定义了共享适合度函数f。t以个体“i”和包含种群的个体作为列的矩阵“m”作为参数。
[0074]
等式7:
[0075][0076]
基于共享的适合度函数,重复演化过程,直到达到最大迭代次数或满足收敛准则。系统可以使用最大可允许的帕累托百分比作为收敛准则。这里,如果当前种群中的非支配个体的百分比超过用户定义的阈值,则算法终止。
[0077]
图5示出了根据示例实施例的确定软件程序的一个或多个帕累托最优变体的方法500。例如,方法500可以由在云平台、服务器、数据库节点、计算系统(用户设备)、设备/节点的组合等上执行的软件程序(诸如应用、服务或其他程序)执行。参考图5,在510中,方法可以包括识别软件程序的控制流内的决策集。例如,决策可以包括“if”语句、“while”语句、“break”语句等,它们对应于程序内不同路径之间的选择。
[0078]
在520中,方法可以包括生成软件程序的多个变体,该多个变体包括分别部分暴露于边信道并且满足软件程序的预定安全规范的决策的不同子集。变体可以包括隐藏的决策和暴露的决策的不同子集。这里,决策的暴露不一定反映暴露所有程序代码。相反,暴露可以在比特的尺度上表示,其中可以获得表示不同量的比特被泄漏的不同级别的信息。在一些实施例中,生成可以包括将控制流内的决策的代码片段转换为不识别决策结果的语义等价代码。在一些实施例中,转换可以包括将决策的按位操作与常数时间条件赋值操作相结合。在一些实施例中,决策可以包括软件程序的源代码内的条件指令,个条件指令在加密数据上执行。
[0079]
在530中,方法可以包括基于软件程序的多个变体的边信道泄漏值和性能值,确定软件程序的一个或多个帕累托最优变体。此外,在540中,方法可以包括将关于软件程序的一个或多个帕累托最优变体的信息输出到用户设备。
[0080]
在一些实施例中,确定可以经由贪婪启发式算法来执行,该贪婪启发式算法基于边信道泄漏值和性能值识别软件程序的一个或多个帕累托最优变体。在一些实施例中,确定可以经由遗传算法来执行,该遗传算法基于边信道泄漏值和性能值确定软件程序的一个或多个帕累托最优变体。在一些实施例中,确定可以包括基于软件程序的预定义安全策略的实施来确定软件程序的一个或多个最优变体,该预定义安全策略要求一个或多个预定义的决策被隐藏。例如,软件程序的变体的边信道泄漏值可以表示通过边信道暴露了多少比特。作为另一示例,软件程序的变体的性能值表示变体的运行时间。
[0081]
图6示出了根据示例实施例,可以在本文描述的任何方法和过程中使用的计算系统600。例如,计算系统600可以是数据库节点、服务器、云平台等等。在一些实施例中,计算系统600可以跨多个计算设备(诸如多个数据库节点)分布。参考图6,计算系统600包括网络接口610、处理器620、输入/输出630和存储装置640(诸如内存存储)等。尽管在图6中未示出,但计算系统600还可以包括或电连接到其他组件,诸如显示器、(多个)输入单元、接收器、发射器、持久磁盘等。处理器620可以控制计算系统600的其他组件。
[0082]
网络接口610可以通过网络(诸如互联网、私有网络、公共网络、企业网络等)来发送和接收数据。网络接口610可以是无线接口、有线接口或其组合。处理器620可以包括一个或多个处理设备,每个处理设备包括一个或多个处理核。在一些示例中,处理器620是多核处理器或多个多核处理器。并且,处理器620可以是固定的,或者它可以是可重新配置的。输入/输出630可以包括接口、端口、电缆、总线、板、线等,用于向计算系统600输入和从计算系统600输出数据。例如,数据可以被输出到计算系统600的嵌入式显示器、外部连接的显示器、连接到云的显示器、另一个设备等。网络接口610、输入/输出630、存储装置640或其组合可以与在其他设备上执行的应用交互。
[0083]
存储装置640不限于特定的存储设备,并且可以包括任何已知的存储器设备,诸如ram、rom、硬盘等,并且可以或可以不包括在数据库系统、云环境、网络服务器等之内。存储装置640可以存储可以由处理器620执行以执行图5中所示的方法的软件模块或其他指令。根据各种实施例,存储装置640可以包括具有多个表、分区和子分区的数据存储。存储装置640可以用于存储数据库记录、项目、条目等。在一些实施例中,存储装置640可以被配置为存储用于管理分布式系统的配置存储库的指令。
[0084]
如基于上述说明书将理解的,本公开的上述示例可以使用包括计算机软件、固件、硬件或其任何组合或子集的计算机编程或工程技术来实施。任何这样得到的程序,具有计算机可读代码,可以体现或提供在一个或多个非暂态计算机可读介质内,从而根据本公开所讨论的示例制造计算机程序产品,即制造物品。例如,非暂态计算机可读介质可以是但不限于固定驱动器、软盘、光盘、磁带、闪存、外部驱动器、半导体存储器,诸如只读存储器(read

only memory,rom)、随机存取存储器(random

access memory,ram),和/或任何其他非暂态发送和/或接收介质,诸如互联网、云存储、物联网(internet of things,iot)或其他通信网络或链接。可以通过直接从一个介质执行代码、通过将代码从一个介质复制到另一个介质或通过网络发送代码来制造和/或使用包含计算机代码的制造物品。
[0085]
计算机程序(也被称为程序、软件、软件应用、“app”或代码)可以包括用于可编程处理器的机器指令,并且可以用高级程序化和/或面向对象的编程语言、和/或用汇编/机器语言实施。如本文所使用的,术语“机器可读介质”和“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置、云存储、物联网和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(programmable logic device,pld)),包括接收机器指令作为机器可读信号的机器可读介质。然而,“机器可读介质”和“计算机可读介质”不包括暂态信号。术语“机器可读信号”是指可以用于向可编程处理器提供机器指令和/或任何其他种类的数据的任何信号。
[0086]
本文的过程的以上描述和例示不应被考虑为暗示执行过程步骤的固定顺序。相反,可以以可实行的任何顺序执行过程步骤,包括至少一些步骤的同时执行。尽管已经结合具体示例描述了本公开,但是应当理解,在不偏离如所附权利要求阐述的本公开精神和范围的情况下,可以对公开的实施例做出对本领域技术人员来说明显的各种改变、替换和改动。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1