确定计算机可读程序的信息泄漏的制作方法

文档序号:21319625发布日期:2020-06-30 20:50阅读:183来源:国知局
确定计算机可读程序的信息泄漏的制作方法

本公开内容中讨论的实施方式涉及确定计算机可读程序的信息泄漏。



背景技术:

保护敏感信息是许多人和组织所关心的。一些计算机可读程序对敏感信息进行操作并且可能暴露敏感信息。

本公开内容所描述的主题不限于解决任何缺点的实施方式或仅在诸如上述环境中操作的实施方式。确切地说,提供该背景技术仅用于示出可以实践本公开内容中描述的一些实施方式的一个示例技术领域。



技术实现要素:

本公开内容的一个实施方式可以包括一种方法,该方法包括:获取计算机可读程序的第一组件。第一组件可以具有可能未知的第一信息泄漏。第一组件可以包括第二组件和第三组件。该方法还可以包括:获取第二组件的第二信息泄漏。该方法还可以包括:获取第三组件的第三信息泄露。该方法还可以包括:确定第二组件与第三组件之间相对于第一组件的关系。该方法还可以包括:基于第二信息泄漏、第三信息泄漏和关系来确定第一信息泄漏。

将至少通过本发明的各方面中特别指出的元素、特征和组合来实现或获得实施方式的目的和优点中的一个或更多个。

应当理解,前述总体描述和以下详细描述二者被作为示例给出并且是说明性的,而不限制所要求保护的本公开内容。

附图说明

将通过使用附图更具体和详细地描述和说明示例实施方式,在附图中:

图1是用于确定计算机可读程序的信息泄漏的示例系统的框图;

图2a是包括并行组成的示例组件的框图;

图2b是包括顺序组成的示例组件的框图;

图2c是包括条件分支的示例组件的框图;

图2d是包括原始递归的示例组件的框图;

图3是用于确定计算机可读程序的信息泄漏的示例处理的流程图;以及

图4是示例计算机系统的框图,

所有这些附图都是根据本公开内容中描述的至少一个实施方式的。

具体实施方式

本公开内容涉及确定计算机可读程序的信息泄漏。在本公开内容中,术语“信息泄漏”是指可以通过观察计算机可读程序如何操作来确定的信息,例如可以通过观察存储器访问模式来确定的信息。在本公开内容中,术语“暴露”或“已暴露”类似地描述了可以通过观察计算机可读程序如何操作而泄漏的信息的状态。

本公开内容涉及通过确定计算机可读程序的特定组件的泄漏及其关系来确定整个计算机可读程序的信息泄漏。在本公开内容中,从整个计算机可读程序的组件的信息泄露确定整个计算机可读程序的信息泄露可以被称为“组成信息泄露”。例如,可以通过下述方法来确定整个计算机可读程序的信息泄漏:获得计算机可读程序的两个或更多个单独的代码组件的信息泄漏,确定两个或更多个代码组件之间相对于整个计算机可读程序的关系,并且基于两个或更多个组件的单独的信息泄漏以及两个或更多个组件与整个计算机可读程序之间的关系来确定整个计算机可读程序的泄漏。两个或更多个组件之间的关系可以包括并行组成、顺序组成、条件分支和/或原始递归。

本公开内容的这些实施方式以特定方式改进软件开发的技术领域。例如,本公开内容的实施方式可以用于分析、管理和/或减少计算机可读程序的信息泄漏。

例如,本公开内容的实施方式可以用于确定计算机可读程序的组件的信息泄漏。响应于该确定,该组件的一个或更多个不安全代码行可以被替换成一个或更多个安全代码行。替换可以由软件开发者和/或自动化软件开发工具来完成。替换可以减少计算机可读程序的信息泄漏。因此,本公开内容的实施方式可以通过确定计算机可读程序的组件的信息泄漏,使得可以通过修改组件来减少敏感信息的暴露,从而改进软件开发和/或数据安全的技术领域。下面参照图2c更详细地描述一个或更多个这样的示例。

作为另一示例,响应于确定组件的信息泄漏,该组件可以被标记成不安全,以指示由该组件访问的信息可能处于暴露的风险中。这可以警告软件开发者和/或自动化软件开发工具有暴露的风险。响应于该标记,软件开发者和/或自动化软件开发工具可以修改组件和/或在计算机可读程序中使用该组件的方式。附加地或替选地,开发者和/或自动化软件开发工具可以基于该标记来确定在该组件中使用什么信息。例如,开发者可以设计计算机可读程序,使得敏感信息不被该组件访问。因此,本公开内容的实施方式可以通过将计算机可读程序的组件标记成不安全,使得可以通过修改组件、计算机可读程序以及/或者修改哪些信息由该组件访问来减少敏感信息的暴露,从而改进软件开发和/或数据安全的技术领域。

作为另一示例,在使用敏感信息执行程序时,响应于确定计算机可读程序确实泄漏了信息,确定所泄漏的信息是否为敏感信息。这种确定可以用作将计算机可读程序标记成被许可或不被许可使用敏感信息来执行的基础。因此,本公开内容的实施方式可以通过将计算机可读程序标记成被许可或不被许可,使得可以通过防止不被许可的程序访问敏感信息来减少敏感信息的暴露,从而改进软件开发和/或数据安全的技术领域。

作为另一示例,可以使用特定信息来执行计算机可读程序。响应于确定组件的信息泄漏,可以确定在计算机可读程序的执行期间是否暴露了特定信息。因此,本公开内容的实施方式可以通过确定特定信息是否被泄漏来改进软件分析、数据取证和/或数据安全的技术领域。

本公开内容的这些实施方式可以应用于在可信执行环境(tee)中执行的计算机可读程序。例如,在tee中,攻击者可以能够观察哪些存储器位置已被访问,而不能够观察存储在被访问的存储器位置处的数据。本公开内容的实施方式可以通过修改和/或启用对计算机可读程序的修改以减少信息泄漏来改进可以在tee中使用的计算机可读程序的数据安全性。

另外,本公开内容的实施方式可以通过允许计算机执行先前未由计算机执行的功能来改进计算机的功能。例如,确定计算机可读程序或其一个或更多个组件的信息泄漏。

图1是根据本公开内容中描述的至少一个实施方式的用于确定计算机可读程序的信息泄漏的示例系统100的框图。通常,信息泄露识别器120可以被配置成分析计算机可读程序102和/或其组件110。信息泄露识别器120可以被配置成生成信息泄露简档130。附加地或替选地,信息泄露识别器120可以被配置成生成经修改的计算机可读程序140。

在一些实施方式中,计算机可读程序102可以包括任何适当格式的任何计算机可读程序,例如人类可读代码和/或机器可执行指令。在一些实施方式中,计算机可读程序102可以被配置、设计和/或旨在用于在可信执行环境内部操作。在这些和其他实施方式中,计算机可读程序102可以被设计成对敏感信息进行操作、接收敏感信息作为输入、或者以其他方式利用敏感信息或者潜在地暴露敏感信息。计算机可读程序可以以管理敏感信息或者减少敏感信息的直接暴露的方式来设计或使用。然而,敏感信息可以通过计算机可读程序的操作来暴露。

在一些实施方式中,敏感信息104可以包括在计算机可读程序102的执行期间可以以任何适当格式使用的信息,例如可扩展标记语言(xml)或逗号分隔值(csv)。在一些实施方式中,敏感信息104可以被加密。敏感信息104可以包括实际的或模拟的敏感信息,包括例如个人身份识别信息、健康信息和/或财务信息。敏感信息104可以包括不同敏感度的信息,例如,特定人的社会保险号可能比该特定人的地址更敏感。

附加地或替选地,敏感信息104可以包括模拟数据或者被设计用于测试计算机可读程序102的数据。敏感信息104可以包括与计算机可读程序102和/或计算机可读程序102的操作相关联的信息。在一些实施方式中,系统100可以在没有任何敏感信息104的情况下操作,并且可以在不参考任何敏感信息104的情况下生成信息泄露简档130和/或经修改的计算机可读程序140。

在一些实施方式中,组件110可以是任何适当格式的计算机可读程序102的一个或更多个组件。组件110可以包括代码行、函数、方法和/或处理器指令。在一些实施方式中,计算机可读程序102可以被划分成组件110,使得所有组件110组合以形成计算机可读程序102。

在一些实施方式中,信息泄露识别器120可以被配置成分析计算机可读程序102和/或其一个或更多个组件110以生成信息泄露简档130和/或经修改的计算机可读程序140。信息泄露识别器120在分析计算机可读程序102和/或组件110时可以使用或者可以不使用敏感信息104。

在一些实施方式中,信息泄露识别器120可以被配置成将计算机可读程序102划分成组件110。在一些实施方式中,信息泄露识别器120可以被配置成递归地将组件110划分成越来越小的组件110,直到这些组件110处于每个单个组件的泄露可以由信息泄露识别器120识别的大小。信息泄露识别器120可以被配置成确定每个较小组件110的信息泄露。例如,组件110可以与具有已知信息泄漏的代码的另一示例部分进行比较。在这些或其他实施方式中,软件开发者可以确定较小组件中的一个或更多个的泄漏。

例如,某个组件110可能按某种顺序访问存储器的某些块,使得即使在数据被加密的情况下,访问地址块的顺序也可能暴露关于加密数据的信息。例如,如果组件被配置成进行密码的逐位比较并且针对每个失配位访问第一存储器位置且针对每个匹配位访问第二存储器位置,则密码可能被泄露,因为密码可能能够通过观察哪些存储器位置被访问来确定。作为另一示例,某个组件可能重复地访问存储器的特定块。对特定存储器块进行操作所花费的持续时间或者特定存储器块被访问的次数对于攻击者来说可能是可见的。例如,如果存储器的特定块被每个客户访问一次,则这可能暴露数据库中的客户的数目。

在这些和其他实施方式中,信息泄露识别器120可以被配置成总计每个较小组件110的信息泄露以确定整个计算机可读程序102的信息泄露。附加地或替选地,信息泄露识别器120可以被配置成确定较小组件110中的一个或更多个的信息泄露,以确定小于整个程序102的组件110的泄露。

组件110的信息泄漏如何总计以形成更大组件或整个计算机可读程序102的信息泄漏可以基于各组件110之间的关系。信息泄漏识别器120可以被配置成确定各组件110之间的各种关系,并且基于各种关系来总计信息泄漏。下面将参照图2a至图2d给出四个关系的示例。在一些实施方式中,可以通过将组件110与公共编码模式进行比较来确定各组件110之间的关系。附加地或替选地,可以针对某些关键字等来解析计算机可读程序。例如,关键字“for”或“while”可以指示原始递归关系。

在一些实施方式中,信息泄露识别器120可以被配置成在不涉及任何特定信息的情况下确定计算机可读程序102和/或一个或更多个组件110的信息泄露。在一些实施方式中,信息泄露识别器120可以被配置成相对于敏感信息104确定计算机可读程序102和/或一个或更多个组件110的信息泄露。例如,信息泄露识别器120可以被配置成使用敏感信息104确定在计算机可读程序102的执行期间敏感信息104中的哪些(如果有的话)将被暴露。附加地或替选地,信息泄露识别器120可以被配置成确定敏感信息104或者敏感信息104的特定信息是否在已经发生的计算机可读程序102的执行期间已被暴露。

在一些实施方式中,信息泄露识别器120可以被配置成确定由计算机可读程序102和/或一个或更多个组件110暴露的信息是否满足安全阈值。例如,安全阈值可以基于信息是否在不涉及任何特定信息的情况下被暴露。又例如,安全阈值可以基于所暴露的敏感信息104的量(例如,暴露了敏感信息104的30%)以及/或者敏感信息104的特定信息是否已被暴露(例如,暴露了敏感信息104的元素一和元素五)。基于在计算机可读程序102和/或一个或更多个组件110的执行期间暴露的信息是否满足安全阈值,信息泄露识别器120可以被配置成将计算机可读程序102和/或一个或更多个组件110标记成被许可或不被许可使用敏感信息来执行。例如,基于在实际或假设操作期间特定组件110暴露敏感信息104的一定量的信息或者暴露敏感信息104的特定信息,该特定组件110可以被标记成不被许可使用敏感信息来执行。又例如,计算机可读程序102可以作为整体被标记成被许可用于处理与任何特定信息有关或无关的敏感信息。

在一些实施方式中,信息泄露简档130可以包括组件110和/或计算机可读程序102的信息泄露的指示。信息泄漏简档130可以包括在组件110和/或计算机可读程序102的执行期间组件110和/或计算机可读程序102的哪些内部变量易于泄漏的列表。附加地或替选地,信息泄露简档130可以包括在组件110和/或计算机可读程序102使用敏感信息104的执行期间敏感信息104的哪些信息易于泄露的列表。

附加地或替选地,信息泄露简档130可以包括计算机可读程序102和/或组件110中的一个或更多个使用敏感信息来执行的一个或更多个许可和/或不许可。例如,信息泄漏简档130可以包括指示特定组件110或计算机可读程序102作为整体被许可使用敏感信息来执行的信息。又例如,信息泄漏简档130可以包括指示特定组件110不被许可使用敏感信息来执行的信息。这样的不被许可可以是对软件开发者和/或自动化软件开发工具的警告,以修改下述中的一个或更多个:不被许可的组件、如何在计算机可读程序102中使用不被许可的组件、以及/或者允许哪些敏感信息104被不被许可的组件访问。

在一些实施方式中,信息泄露简档130可以包括用于确定计算机可读程序102或计算机可读程序102的一个或更多个组件110的信息泄露的功能。例如,信息泄露识别器120可以基于计算机可读程序102来生成包括在信息泄露简档130中的功能。该功能可以将敏感信息104作为输入,并且标识敏感信息104中可能易于由计算机可读程序102暴露的信息(“泄露敏感信息132”)。

在一些实施方式中,泄露敏感信息132可以是可能易于由计算机可读程序102泄露的信息。泄露敏感信息132可以是敏感信息104的子集。在一些实施方式中,泄露敏感信息132可以由信息泄漏简档130生成。例如,信息泄露简档130可以包括可以将敏感信息104作为输入并且识别可能由计算机可读程序102泄露的敏感信息104的部分的功能。在这些或其他实施方式中,泄露敏感信息132可以由信息泄露识别器120生成。

在一些实施方式中,经修改的计算机可读程序140可以包括对计算机可读程序102进行的一个或更多个修改。基于确定特定计算机可读程序102或特定组件110不被许可使用敏感信息来执行,可以修改特定计算机可读程序102或特定组件110。例如,基于确定计算机可读程序102泄漏信息,可以修改计算机可读程序102。又例如,基于特定的泄露敏感信息132,可以确定要修改计算机可读程序102。例如,特定组件110可能包括导致潜在泄漏的不安全代码行。不安全代码行可以用特定组件110中的消除或降低了泄漏的可能性的安全代码行来替换。又例如,可以修改包括特定组件的计算机可读程序102,使得改变特定组件访问数据的方式。例如,计算机可读程序102可以被修改成使得特定组件110不访问敏感信息104、被修改成使得访问数据的顺序被修改(例如,随机化)、被修改成使得存储数据的存储器地址被修改,等等。修改组件110的示例将在下面关于图2c给出。

在一些实施方式中,信息泄露识别器120可以被配置成基于对计算机可读程序102的分析来生成经修改的计算机可读程序140。例如,信息泄露识别器120可以被配置成基于信息泄露简档130来生成经修改的计算机可读程序140。在一些实施方式中,信息泄露识别器120可以被配置成基于泄露敏感信息132来生成经修改的计算机可读程序140。例如,信息泄露简档130可以包括可以生成泄露敏感信息132的功能,该泄露敏感信息132可以包括可能会在计算机可读程序102的操作期间暴露的敏感信息104的信息。信息泄露识别器120可以生成经修改的计算机可读程序140以减少或改变包括在泄露敏感信息132中的信息。

在一些实施方式中,信息泄露识别器120可以包括被配置成使得计算系统(诸如图4的计算系统400)能够执行与识别信息泄露相关的一个或更多个操作的代码和例程。附加地或替选地,信息泄露识别器120可以使用包括处理器、微处理器(例如,用于执行或者控制一个或更多个操作的执行)、现场可编程门阵列(fpga)和/或专用集成电路(asic)的硬件(诸如例如图4的处理器402)来实现。在一些其他情况下,信息泄露识别器120可以使用硬件和软件的组合来实现。在本公开内容中,被描述为由信息泄露识别器120执行的操作可以包括信息泄露识别器120可以指示系统执行的操作。

在不脱离本公开内容的范围的情况下,可以对系统100进行修改、添加或省略。例如,敏感信息104可以是计算机可读程序102的一部分或者与计算机可读程序102直接相关联。在这些或其他实施方式中,系统100可以在没有任何敏感信息104的情况下操作,并且可以被配置成在不参考任何敏感信息104的情况下生成信息泄露简档130和/或经修改的计算机可读程序140。作为另一个示例,信息泄露识别器120可以仅生成信息泄露简档130和经修改的计算机可读程序140中的一个或另一个。又例如,信息泄露识别器120可以直接生成泄露敏感信息132,或者将其生成作为信息泄露简档130的一部分。又例如,系统100可以完全不生成泄露敏感信息132。

图2a是根据本公开内容中描述的至少一个实施方式的包括并行组成的示例组件210的框图。图2a中所示的并行组成是计算机可读程序的组件210之间的关系的一个示例。

图2a中示出了三个组件:第一组件210a、第二组件210b和第三组件210c(统称为组件210)。第一组件210a可以包括第二组件210b和第三组件210c(例如,第一组件210a可以包括软件代码的超集,该超集包括第二组件210b的软件代码和第三组件210c的软件代码)。图2a中示出了两个输入:第一输入211a和第二输入211b(统称为输入211)。第一输入211a可以表示第二组件210b的输入。第二输入211b可以表示第三组件210c的输入。图2a中示出了三个信息泄漏:第一信息泄漏212a、第二信息泄漏212b和第三信息泄漏212c(统称为信息泄漏212)。第一信息泄漏212a可以表示由第一组件210a泄漏的总信息。第二信息泄漏212b可以表示由第二组件210b泄漏的信息。第三信息泄漏212c可以表示由第三组件210c泄漏的信息。图2a中示出了两个输出:第一输出213a和第二输出213b(统称为输出213)。第一输出213a可以表示第二组件210b的输出。第二输出213b可以表示第三组件210c的输出。组件210、输入211、信息泄漏212和/或输出213的数目可以根据不同的实现方式而变化。

图2a中所示的第二组件210b与第三组件210c之间的关系可以包括并行组成,使得第一输入211a独立于第二输出213b,并且第二输入211b独立于第一输出213a。在这种情况下,第一信息泄露212a可以包括第二信息泄露212b和第三信息泄露212c的独立组合。

换言之,如果第二信息泄漏212b被表达为并且第三信息泄漏212c被表达为则第一信息泄漏212a可以被表达为:

在不脱离本公开内容的范围的情况下,可以对组件210a、输入211、信息泄漏212和/或输出213进行修改、添加或省略。例如,第一组件210a可以包括并行布置的任何数目的组件210,并且第一信息泄漏212a因此将包括各个组件210的所有信息泄漏212的独立组合。

图2b是根据本公开内容中描述的至少一个实施方式的包括顺序组成的示例组件的框图。图2b中所示的顺序组成是计算机可读程序的组件210之间的关系的另一示例。

图2b的组件210、输入211、输出213和/或信息泄漏212中的一个或更多个可以与上面关于图2a分别描述的组件210、输入211、输出213和/或信息泄漏212相同或相似。然而,在图2b中,第三组件210c可以使用第一输出213a作为其输入。

如图2b所示的第二组件210b与第三组件210c之间的关系可以包括顺序组成,使得第一输出213a被第三组件210c用作其输入。在这种情况下,第一信息泄漏212a可以包括第二信息泄漏212b和基于使用第一输出213a作为对第三组件210c的输入的信息泄漏。换言之,如果第二信息泄漏212b被表达为第三信息泄漏212c被表达为并且第一输出213a被表达为f1(x1),则第一信息泄漏212a可以被表达为

在不脱离本公开内容的范围的情况下,可以对组件210a、输入211、信息泄漏212和/或输出213进行修改、添加或省略。例如,第一组件210a可以包括顺序布置的任意数目的组件210,并且信息泄漏212a因此将包括每个信息泄漏的依赖嵌套。然而,在这种情况下,第一组件210a可以被划分成更小的组件,使得每个组件仅包括一个顺序关系。

图2c是根据本公开内容中描述的至少一个实施方式的包括条件分支的示例组件的框图。图2c中所示的条件分支组成是计算机可读程序的组件210之间的关系的另一个示例。例如,可以基于与条件214相关联的布尔值b(例如,b为真或假)来选择一个组件而不是另一个组件。

图2c的组件210、输入211和/或信息泄漏212中的一个或更多个可以与上面关于图2a分别描述的组件210、输入211和/或信息泄漏212相同或相似。另外,图2c包括条件214。

如图2c所示的第一组件210a可以包括条件分支组成,使得第一组件210a可以被配置成使得响应于满足条件214而执行第二组件210b,并且响应于不满足条件214而执行第三组件210c(例如,如果b为假则执行第二组件210b,并且如果b为真则执行第三组件210c)。在这种情况下,第一信息泄漏212a可以包括是否满足条件214。例如,可以从外部观察到与第二组件210b相关联的存储器的某个块被访问,并且因此,可以由外部观察者确定条件b为假。附加地或替选地,第一信息泄漏212a可以包括第二信息泄漏212b或第三信息泄漏212c中之一。换言之,如果第二信息泄漏212b被表达为第三信息泄漏212c被表达为并且是否满足条件214被表达为“b”,则第一信息泄漏212a可以被表达为

作为修改组件以减少信息泄漏的示例,在第一组件210a包括条件分支的情况下,可以修改第一组件210a,使得第一组件210a避免或减少对满足条件214(b)的暴露。例如,可以用不会引起任何操作的指令填充第二组件210b和第三组件210c中的一个或更多个,使得第二组件210b和第三组件210c两者的大小相等,使得外部观察者仅基于大小不可区分第二组件210b和第三组件210c的检索或执行。又例如,可以在存储器中无感知地打乱第二组件210b和第三组件210c在存储器中的位置,例如将组件210b和/或210c定位在各种随机位置处。在这些和其他实施方式中,结果可能是,当第一组件210a被执行时,对于观察者来说,存储器访问模式可能无法区分是调用了第二组件210b还是第三组件210c。这样,不会暴露条件214的成立(例如,b是真还是假)。

在不脱离本公开内容的范围的情况下,可以对组件210a、输入211、信息泄漏212和/或条件214进行修改、添加或省略。例如,第一条件210a可以取决于多于一个的条件214。然而,在这种情况下,第一组件210a可以被划分成更小的组件,以使得每个子组件可以包括单个条件分支。

图2d是根据本公开内容中描述的至少一个实施方式的包括原始递归的示例组件的框图。图2d所示的原始递归组成是计算机可读程序的组件210之间的关系的另一示例,并且被示出为以特定次数(n)通过组件210b的循环。

图2d的组件210、输入211和/或信息泄漏212中的一个或更多个可以与上面关于图2a分别描述的组件210、输入211和/或信息泄漏212相同或相似。另外,图2d包括执行次数215和递减器216。第二组件210b和递减器216可以被配置成使得第二组件210b可以重复n次。

如图2d所示的第一组件210a可以包括原始递归,使得第二组件210b根据执行次数215来执行。在这样的实施方式中,第一信息泄漏212a可以包括为n的执行次数215。附加地或替选地,第一信息泄漏212a可以包括第二信息泄漏212b。附加地或替选地,第一信息泄漏212a可以包括针对第二组件210b的重复执行中的每一个的附加信息泄漏。换言之,如果第二信息泄漏212b被表达为leakagef1(x1),并且执行次数215被表达为“n”,则第一信息泄漏212a可以被表达为:

在不脱离本公开内容的范围的情况下,可以对组件210a、输入211、信息泄漏212和/或执行次数215进行修改、添加或省略。例如,第一组件210a可以取决于多于一个的执行次数215,以及/或者第一组件210a的多于一个的组件210可以取决于多于一个的执行次数215。然而,在这种情况下,可以将第一组件210a划分成更小的组件,使得每个组件仅包括取决于执行次数215的一个组件。在这些或其他实施方式中,第一组件210a可以仅包括一个组件,例如第二组件210b。

图3是根据本公开内容中描述的至少一个实施方式的用于确定计算机可读程序的信息泄漏的示例处理300的流程图。在一些实施方式中,与处理300相关联的操作中的一个或更多个操作可以由图1的系统100执行。处理300可以由任何合适的系统、装置或设备执行。例如,图4的计算系统400可以执行与处理300相关联的操作中的一个或更多个。尽管用独立的框示出,但是与处理300中的框中的一个或更多个相关联的步骤和操作可以取决于期望的实现而被划分成另外的框、组合成更少的框、或者被消除。

在框310处,可以获得计算机可读程序的第一组件。第一组件可以包括一个或更多个可执行指令、代码行等,以执行一组任务。第一组件可以具有可能未知的第一信息泄漏。第一组件可以包括第二组件和第三组件。图2a至图2d的第一组件210a可以是第一组件的示例。第一组件可以是计算机可读程序(例如图1的计算机可读程序102)的组件。

在框320处,可以获得第二组件的第二信息泄漏。第二信息泄漏可以是与在计算机可读程序的假设或实际执行期间可以使用的敏感信息(例如,图1的敏感信息104)有关的量、第二组件的变量、第二组件的存储器地址、第二组件被执行的次数等,或者其他信息。

在框330处,可以获得第三组件的第三信息泄漏。第三信息泄漏可以是与在计算机可读程序的假设或实际执行期间可以使用的敏感信息(例如,图1的敏感信息104)有关的量、第三组件的变量、第三组件的存储器地址、第三组件被执行的次数等,或者其他信息。

在框340处,可以确定第二组件与第三组件之间相对于第一组件的关系。图2a的并行组成、图2b的顺序组成、图2c的条件分支和/或图2d的原始递归可以是第二组件与第三组件之间相对于第一组件的关系的示例。在一些实施方式中,可以通过将相对于第一组件的第二组件和第三组件与一个或更多个公共代码模式进行比较来确定该关系。附加地或替选地,可以通过分析组件的代码来确定该关系。例如,“如果(if)”和“则(then)”可以指示分支关系。

在框350处,可以基于第二信息泄漏、第三信息泄漏和关系来确定第一信息泄漏。例如,在并行组成的情况下,第一信息泄露可以包括第二信息泄露和第三信息泄露的独立组合。又例如,对于顺序组成,第一信息泄露可以包括第二信息泄露以及基于使用第二组件的输出作为输入的第三组件的信息泄露。还例如,对于条件分支,第一信息泄漏212a可以包括是否满足分支条件。例如,在原始递归的情况下,第一信息泄漏可以包括执行组件之一的执行次数。

在一些实施方式中,处理300可以作为另一处理的一部分而被重复多次,或者可以包括未示出的其他步骤。例如,处理300可以包括获得计算机可读程序并且将计算机可读程序划分成多个组件。又例如,处理300可以尝试获得或确定每个组件的信息泄漏。如果处理300不能够获得或确定每个组件的信息泄漏,则处理300可以递归地将每个组件细分为子组件。在每个递归细分时,处理300可以尝试获得每个子组件的信息泄漏。如果处理300不能够获得或确定每个子组件的信息泄漏,则处理300可以进一步递归地细分每个子组件。如果处理300能够获得或确定每个子组件的信息泄漏,则该处理可以递归地使用与图3所示的处理300类似或相同的处理来总计每个子组件的泄漏,以确定计算机可读程序的信息泄漏。

例如,在处理300能够获得或确定每个子组件的信息泄漏的递归级别处,处理300可以使用如图3所示的处理300来确定子组件的总计信息泄漏。处理300然后可以上升递归的级别,并且再次使用如图3所示的处理300来确定下一递归级别处的总计信息泄漏。该处理可以被递归地重复,直到确定整个计算机可读程序的总计泄漏。

本领域技术人员将理解,对于系统100、处理300和本文公开的其他处理和方法,在处理和方法中执行的功能可以以不同的顺序实现。此外,所列出的操作和动作仅提供为示例,以及在不偏离所公开的实施方式的本质的情况下,操作和动作中的一些可以是可选的,可以被组合成更少的操作和动作,或者可以被扩展成另外的操作和动作。

图4是可以根据本公开内容中描述的至少一个实施方式的示例计算系统400的框图。如图4所示,计算系统400可以包括处理器402、存储器404、数据存储装置406和通信单元408。

图1的系统100的一个或更多个组件和/或图3的处理300可以在诸如图4的计算系统400的计算系统上实现。例如,计算机可读程序102、敏感信息104、组件110、信息泄漏简档130和/或经修改的计算机可读程序140可以被存储在存储器404和/或数据存储装置406中。处理器402可以执行与信息泄露识别器120相关的一个或更多个操作。附加地或替选地,计算机可读程序102、敏感信息104、组件110、信息泄漏简档130和/或经修改的计算机可读程序140可以由通信单元408接收或传送。

通常,处理器402可以包括任何合适的专用或通用计算机、计算实体或者包括各种计算机硬件或软件模块的处理设备,并且可以被配置成执行存储在任何适用的计算机可读存储介质上的指令。例如,处理器402可以包括微处理器、微控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者被配置成解释和/或执行程序指令和/或处理数据的任何其他数字或模拟电路。尽管在图4中被示出为单个处理器,但是应当理解,处理器402可以包括分布在任意数目的网络或物理位置上的任意数目的处理器,这些处理器被配置成单独地或共同地执行本文描述的任意数目的操作。在一些实施方式中,处理器402可以解释和/或执行存储在存储器404、数据存储装置406或者存储器404和数据存储装置406中的程序指令和/或处理数据。在一些实施方式中,处理器402可以从数据存储装置406获得程序指令,并且将程序指令加载到存储器404中。在程序指令被加载到存储器404中之后,处理器402可以执行程序指令,例如用于分别执行关于图1的系统100描述的一个或更多个操作的指令。

存储器404和数据存储装置406可以包括用于承载或具有存储在其上的计算机可执行指令或数据结构的计算机可读存储介质或者一个或更多个计算机可读存储介质。这样的计算机可读存储介质可以是可以由诸如处理器402的通用或专用计算机访问的任何可用介质。作为示例而非限制,这样的计算机可读存储介质可以包括非暂态计算机可读存储介质,该非暂态计算机可读存储介质包括随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、致密盘只读存储器(cd-rom)或其他光盘存储器、磁盘存储器或其他磁存储设备、闪速存储器设备(例如,固态存储器设备)、或可用于承载或存储计算机可执行指令或数据结构形式的程序代码并可由通用计算机或专用计算机访问的任何其他存储介质。上面的组合也可以包括在计算机可读存储介质的范围内。计算机可执行指令可以包括例如被配置成使处理器402执行某些操作或一组操作的指令和数据。在这些和其他实施方式中,本文中说明的术语“非暂态”应当被解释为仅排除被发现落在联邦巡回法院在inrenuijten(500f.3d1346)(fed.cir.4007)的裁决中的可取得专利的主题的范围之外的暂态介质类型。以上的组合也可以被包括在计算机可读介质的范围内。

通信单元408可以被配置成接收计算机可读程序102、敏感信息104、组件110、信息泄漏简档130和/或经修改的计算机可读程序140,并且将计算机可读程序102、敏感信息104、组件110、信息泄漏简档130和/或经修改的计算机可读程序140提供给数据存储装置406。通信单元408可以包括被配置成允许或利于计算系统400与网络之间的通信的任何设备、系统、部件或部件的集合。例如,通信单元408可以包括但不限于调制解调器、网卡(无线或有线)、红外通信设备、光通信设备、无线通信设备(诸如天线)、和/或芯片组(诸如蓝牙设备、802.6设备(例如城域网(man))、wi-fi设备、wimax设备、蜂窝通信设施等),等等。通信单元408可以允许与诸如蜂窝网络、wi-fi网络、man、光网络等(仅举几个示例)的任何设备和/或本公开内容中描述的任何其他设备(包括远程设备)交换数据。

在不脱离本公开内容的范围的情况下,可以对计算系统400进行修改、添加或省略。例如,数据存储装置406可以位于多个位置处,并且由处理器402通过网络访问。

如本文所使用的,术语“模块”或“组件”可以指代被配置成执行模块或组件的操作的特定硬件实现以及/或者可以存储在计算系统的通用硬件(例如,计算机可读介质、处理设备等)上和/或可以由计算系统的通用硬件来执行的软件对象或软件例程。在一些实施方式中,本文描述的不同组件、模块、引擎和服务可以被实现为在计算系统上执行的对象或过程(例如被实现为单独的线程)。

尽管本文所描述的系统和方法中的一些通常被描述为以(存储在通用硬件上和/或由通用硬件执行的)软件来实现,但特定硬件实现或软件和特定硬件实现的组合也是可能的和预期的。

本文中使用的术语,特别是在所附权利要求(例如,所附权利要求的正文)中使用的术语通常意指“开放式”的术语(例如,术语“包括”应该被解释为“包括但不限于”,术语“具有”应该被解释为“至少具有”,术语“包含”应该被解释为“包含但不限于”等)。

另外地,如果意在特定数目的所引入的权利要求列举,则这样的意图将在权利要求中明确记载,并且在没有这样的列举的情况下,不存在这样的意图。例如,为了帮助理解,所附权利要求可以包含介绍性短语“至少一个”和“一个或更多个”的使用以引入权利要求列举。然而,即使在同一权利要求包括介绍性短语“一个或更多个”或“至少一个”以及无量词限定的单数形式时,这样的短语的使用也不应该被解释为暗示:通过无量词限定的单数形式引入的权利要求列举将包含这样的引入的权利要求列举的任何特定权利要求限制于包含仅一个这样的列举的实施方式(例如,无量词限定的单数形式应被解释为意指“至少一个”或“一个或更多个”);对于用于引入权利要求列举的“所述或该”的使用也是如此。

此外,即使明确记载了特定数目的引入的权利要求列举,本领域技术人员也将认识到,这样的列举应该被解释为意指至少所记载的数目(例如,没有其他修饰成分的简单列举“两个列举”意指至少两个列举或两个或更多个列举)。此外,在使用类似于“a、b和c中的至少一个等”或“a、b和c中的一个或更多个等”的惯用语的情况下,通常这样的构造意在包括仅a、仅b、仅c、a和b一起、a和c一起、b和c一起或者a、b和c一起等。例如,术语“和/或”的使用旨在以这种方式来解释。

此外,呈现两个或更多个可替选术语的任何分隔词或短语,不论在说明书、权利要求还是附图中,都应当被理解为构思了包括所述术语中的一个、所述术语中的任何一个、或所述术语两者的可能性。另外,在某些位置使用术语“和/或”并不意味着术语“或”应该被理解为仅包括这些术语中的任一个,而不是包括这两个术语的可能性。

另外,术语“第一”、”第二”、“第三”等的使用在本文中不一定用于暗指元素的特定顺序或数目。通常,术语“第一”、“第二”、“第三”等用于作为通用标识符来在不同元素之间进行区分。在没有表明术语“第一”、“第二”、“第三”等暗指特定顺序的情况下,这些术语不应当被理解为暗指特定顺序。此外,在没有表明术语“第一”、“第二”、“第三”等暗指元素的特定数目的情况下,这些术语不应当被理解为暗指元素的特定数目。例如,第一小组件可以被描述为具有第一面并且第二小组件可以被描述为具有第二面。针对第二小组件使用术语“第二面”可以用于将第二小组件的这样的面与第一小组件的“第一面”区分开,而不暗指第二小组件具有两个面。

本文所述的所有示例和条件性语言旨在用于教导目的,以帮助读者理解发明人为促进本领域而贡献的发明和构思,并且应当被解释为不限于这些具体叙述的示例和条件。尽管已经详细描述了本公开内容的实施方式,但是应该理解的是,在不偏离本公开内容的精神和范围的情况下,可以对其进行各种变化、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1