安全调用约定系统和方法
1.相关申请的交叉引用
2.本申请要求于2018年9月10日提交的标题为“secure calling convention system and method”的美国临时专利申请no.62/729,334的权益和优先权,其通过参考将其引入以实现所有目的。
背景技术:
3.现有的用于保护软件的密码系统和方法存在许多缺点。一个主要的缺点是现有的密码系统和方法使软件容易受到攻击。最常见的攻击之一涉及修改软件,以获得对软件应用的未许可版本的访问。黑客可以使用应用的未加密部分来确定软件的加密部分如何行为。应用的未加密部分通常是应用编程接口(api)的调用约定的一部分。传递给api或从api返回的未受保护的值为黑客提供了使用从这些值中收集的信息来迫使软件应用如所期望地行为的机会。
4.黑客试图修改软件,使其行为与原始作者的意图不同,无论是出于个人利益、黑客社区的声誉、利润和/或恶意目的。黑客在软件应用或系统上使用的工具之一是反向工程,它是用于描述对系统进行解构以了解它如何实现其预期功能的处理的术语。当黑客试图修改软件的行为时,他们通常需要对软件逻辑进行反向工程,以便在他们可以设计攻击之前了解软件的工作方式。黑客至少会对软件功能进行反向工程,以至于他们能够以自己期望的方式修改行为。
5.理解一个软件的工作方式的最直观的方法是详细地查看其所有逻辑。这种方法可能非常耗时,特别是在逻辑正在执行繁重或复杂的任务的情况下,因为会有非常大量的复杂逻辑。除非有黑客团队合作,否则通常认为这种方法是不可行的。一种更节省时间的方法是识别软件内的api,这将提供软件如何工作的高层概览。因此,反向工程软件处理的主要目标是识别api入口点并对其功能进行后续分析。
6.有许多可免费获得的软件工具协助进行反向工程任务,并且黑客通常依靠这些工具来实现其目标。黑客使用的两种最常用的工具是:
7.(i)调试器:它们允许黑客在软件逻辑运行时对其详细观察的行为,并且还与正在运行的软件进行交互和试验。
8.(ii)反编译器:它们自动分析软件逻辑并报告api的位置和细节以及其它信息。
9.通常,了解一个软件如何运行的更简单且更快速的方法是使用上述工具来建立以下部分或全部信息:
10.(a)识别可能表示api入口点的软件逻辑的部分。
11.(b)确定其中从软件中的其它地方调用api的上下文。
12.(c)确定传递给api的参数的性质。
13.(d)确定api返回的结果的性质或api完成之后对数据所做的更改。
14.例如,考虑上面的(c)和(d),如果看到api接受任何两个数字作为参数并一致地返回这两个数字的和,那么观察者可以快速且合理地推断出该api将两个数字一起相加,无需
对该api逻辑进行反向工程即可实现这一点。这个示例强调了能够观察在api及其调用者之间传递的信息的有用性。
15.一旦黑客确信已经获得足够的信息来对软件进行攻击,就可以设计出具有两种主要类型的攻击:
16.(i)修改软件逻辑本身。
17.(ii)修改操作环境以利用软件逻辑中的缺陷。
18.黑客经常关注产品中需要用户付费购买许可才能使用该产品的许可功能。如果不使用软件保护工具,那么无法保护产品中的许可api。保护工具通常使用以下两种保护技术之一:
19.(i)全程序保护:保护整个应用。
20.a.优点:提供优异的全方位保护;api是隐藏的;api逻辑受到保护。
21.b.缺点:无法控制对性能的影响,这意味着使用此类工具来保护性能关键的产品是不可行的。
22.(ii)选择性保护:允许保护应用的特定部分。
23.a.优点:性能关键的部分可以不受保护,因此可以控制性能影响;api逻辑受到保护。
24.b.缺点:api不被隐藏,这在保护许可api时是重要问题,因为它们必须被隐藏。
25.基于通常需要控制性能影响,对于许多产品而言,选择性保护是非常期望的。但是,选择性保护不适合保护许可api,因为该api处于暴露状态,允许黑客用简单的存根(stub)替换那些api,该存根始终向应用返回指示它是被许可的(实际上它不是)的值。下面的示例演示了这种场景:
26.步骤1:假设应用包含称为“islicensed”的许可api,当应用被许可时,该api始终返回0,并且当应用未被许可时则返回非零值。
27.步骤2:假设应用逻辑执行了islicensed api并进行了编码,使得当islicensed api返回除0外的任何其它值时,应用将终止。
28.步骤3:当应用使用选择性保护进行保护时,攻击者将不能“看到”islicensed api内部并确定其内部包含的逻辑,但是攻击者无需这样做。只要攻击者看到每当api返回0时应用将不终止就足够。
29.步骤4:在步骤3中发现所需的返回值之后,攻击者将知道,为了禁用许可,只需产生简单的存根以使用始终返回0的逻辑来覆盖islicensed api以禁用许可功能即可。
30.如从以上示例中可以看到,选择性保护虽然确实保护了许可api内部的实际实现逻辑和任何知识产权,但无助于保护许可功能。
31.因此,需要提供一种克服现有技术的缺点的用于api值的密码系统。
技术实现要素:
32.本公开涉及用于安全调用约定(scc)以保护在api的调用者与该api内包含的逻辑之间传递的信息的系统和方法。
33.在一些实施例中,应用编程接口(“api”)包括但不限于执行特定功能(例如,将两个数字加在一起)的计算机逻辑。根据一些实施例,api包括但不限于存储在暂态和/或非暂
态计算机可读介质上的一组计算机可执行指令,其在被执行时允许访问程序,诸如但不限于操作系统、应用或服务,并且还促进这些程序之间的交互。在各个实施例中,值和/或api的“属性”包括但不限于与其相关联的任何特征,包括但不限于参数值、返回值、blob、存储器位置、存储器大小、逻辑等。位置也可以被称为“入口点”。如果api要求api调用者提供参数,那么可以以预定义格式在api和api调用者都知道的计算机存储器中的位处提供那些参数。此外,如果api需要将信息传递回api调用者,那么该信息可以以api调用者已知的格式和位置存储在计算机存储器中(例如,将两个数字加在一起的结果)。如在一些实施例中使用的,“api调用者”可以包括但不限于引起api逻辑的执行的计算机可执行指令。如本文所使用的,“api逻辑”是实现由api通告的功能的逻辑。
34.如果本文公开的scc的一个或多个实施例应用于islicensed api,并且重复以上示例,那么步骤4的攻击将不再成功。原因是在步骤3处,攻击者将无法确定产生存根所需的返回值,因为使用加密意味着每次返回的值将会不同。为了成功产生存根,攻击者将必须对受保护的代码进行反向工程,这将是极其困难且耗时的。
35.当与选择性保护结合使用时,scc使攻击者极其难以破坏许可api或实际上任何api。这是因为用于加密api自变量(例如,参数、返回值等)的随机性使攻击者无法使用向产品始终返回相同值的简单“存根”来覆盖受保护的许可api。
36.一些实施例包括通过在api调用者调用api之前对参数值进行加密的处理来防止当应用逻辑正在被执行时被黑客随意观察到由api调用者传递到api逻辑中的api参数。
37.一些实施例包括通过在由api将数据返回到api调用者之前对该数据进行加密的处理来防止当应用逻辑正在被执行时被随意观察到由api返回到api调用者的数据。
38.一些实施例包括在由api调用者将参数传递给api逻辑之前,使用从一个或多个熵源导出的加密密钥对api参数进行加密,使得当api逻辑查询该一个或多个熵源时,api逻辑可以导出解密密钥,该解密密钥可以用于解密先前加密的参数。
39.一些实施例包括在由api调用者将参数传递给api逻辑之前,使用从一个或多个熵源导出的加密密钥对由api返回到api调用者的数据进行加密,使得当api调用者查询该一个或多个熵源时,api调用者可以导出解密密钥,该解密密钥可以用于解密先前加密的参数。
40.一些实施例包括通过使用api参数的加密来防止随意篡改接受输入参数但不将数据返回到其调用者的api的功能,使得与不使用该系统时所需的时间相比,必须花费更多的时间对api逻辑进行反向工程。
41.一些实施例包括通过使用api参数和返回的数据的加密来防止随意篡改接受输入参数并且还向其调用者返回数据的api的功能,使得与不使用该系统时所需的时间相比,必须花费更多的时间对api逻辑进行反向工程。
42.一些实施例包括通过使用返回的数据的加密来防止随意篡改不接受输入参数但确实向其调用者返回数据的api的功能,使得与不使用该系统时所需的时间相比,必须花费更多的时间对api逻辑进行反向工程。
43.一些实施例包括通过对api的输入参数(如果它接受任何参数的话)和其返回的数据(如果它返回任何数据的话)进行加密来防止随意替换api,使得与不使用该系统时所需的时间相比,必须花费更多的时间对api逻辑进行反向工程。
44.一些实施例包括一种方法,该方法由api调用者从熵源中导出熵,使得api逻辑在被api调用者调用时可以独立地获得熵,以至于它可以创建可以用来解密由api调用者传递给它的加密参数的解密密钥。
附图说明
45.现在将参考附图通过示例的方式描述本发明的某些实施例,其中:
46.图1是根据本发明的一些实施例的api调用者在将加密的参数传递给api逻辑时进行的处理的示意性框图。
47.图2是根据本发明的一些实施例的api逻辑在解密由api调用者传递给它的加密参数时进行的处理的示意性框图。
48.图3是根据本发明的一些实施例的api调用者逻辑在将blob中的加密参数传递给api时进行的处理的示意性框图。
49.图4是根据本发明的一些实施例的api逻辑在解密由api调用者传递给它的加密blob时进行的处理的示意性框图。
50.图5是根据本发明的一些实施例的api逻辑在加密其返回到api调用者的一个或多个值时进行的处理的示意性框图。
51.图6是根据本发明的一些实施例的api调用者逻辑在解密由api返回的一个或多个加密值时进行的处理的示意性框图。
52.图7是根据本发明的一些实施例的api逻辑在加密包含要返回到api调用者的数据的blob时进行的处理的示意性框图。
53.图8是根据本发明的一些实施例的api调用者逻辑在解密由api返回的加密blob时进行的处理的示意性框图。
54.图9图示了根据系统的一些实施例的启用或包括系统和方法的计算机系统的系统体系架构。
具体实施方式
55.本公开的实施例涉及使用scc保护在api的调用者与api内包含的逻辑之间传递的信息的系统和方法。
56.为此,在各个实施例中,保护信息包括经历加密操作的信息。根据一些实施例,“加密操作”包括但不限于存储在暂态和/或非暂态计算机可读介质上的一组指令,该指令在被执行时导致对信息或其一个或多个部分的加密或解密。
57.如本文所使用的,根据一些实施例,“加密”是将信息从其原始形式变换成不再能够观察到原始形式的形式的处理。在一些实施例中,加密需要使用用于管理变换的加密密钥。如本文所使用的,在各个实施例中,“加密密钥”是当将信息变换成加密形式时由加密处理使用的值。
58.如本文所使用,在一些实施例中,“解密”包括但不限于将先前加密的信息变换成其原始形式的处理。根据一些实施例,解密需要使用解密密钥。如本文所使用的,在一些实施例中,“解密密钥”包括但不限于将先前加密的信息变换成其原始形式所需的值。
59.在一些实施例中,加密密钥可以具有匹配的解密密钥,该解密密钥允许对加密的
信息进行解密。
60.如本文所使用,在各个实施例中,“熵”包括但不限于不能容易地预测的数据,并且因此对于其将被用于的目的可以被认为是随机的。如本文所使用的,在一些实施例中,“熵源”包括但不限于产生熵值的可识别源。
61.参数密码操作
62.图1是一些scc实施例的示意性框图100,其中api调用者将加密参数105传递(即,发送)到api。
63.包括图1中所示的scc处理的实施例包括在步骤1处的熵收集和聚合121。在各个实施例中,从各个源收集熵,诸如环境熵101、静态熵102和参数熵103(各在后面的部分中进一步定义)。在一些实施例中,然后在步骤2处将经聚合的熵104用于加密密钥生成122。在各个实施例中,在步骤3处,在步骤2处生成的加密密钥107用于对未加密的api参数值106进行加密,从而得到加密的api参数值105。然后在一些实施例中,执行api调用操作123,其中加密的api参数105被传递给api。
64.因此,使用图1中所示的scc的一些实施例防止被黑客随意观察到在执行应用时的一个或多个未加密的api参数106。
65.图2是在一些scc实施例中用于解密已经由api调用者传递的加密参数205使得api的逻辑可以使用解密的参数209的示意性框图200。
66.包括图2中所示的scc处理的实施例包括在步骤1处的熵收集和聚合221。在各个实施例中,从各个源收集熵,诸如环境熵201、静态熵202和参数熵203。然后在一些实施例中,在步骤2处,将经聚合的熵204用于解密密钥生成223。在步骤3处,在各个实施例中,在步骤2处生成的解密密钥208用于解密加密的api参数值205。然后在一些实施例中,在步骤4处,解密的api参数值209被api逻辑使用225。
67.blob参数密码操作
68.图3是一些scc实施例的示意性框图300,其中api调用者将加密的二进制大对象(blob)308传递给api。
69.包括图3中所示的scc处理的实施例包括在步骤1处的未加密blob 309的blob创建320。在一些实施例中,在步骤2处,从各个源收集熵,诸如环境熵301、静态熵302和参数熵303。在各个实施例中,参数熵303包括与未加密的blob相关联的一个或多个属性。在一些实施例中,在步骤2处生成的聚合熵304用于加密密钥生成322以在步骤3处创建加密密钥307。在步骤4处,根据一些实施例,未加密的blob 309用未加密的参数值304填充。在一些实施例中,在步骤5处,具有未加密的参数值304的未加密的blob 309使用加密密钥307进行加密324。根据一些实施例,然后执行api调用操作325,其中加密的blob 308被传递给api。
70.因此,使用图3中所示的scc的一些实施例防止在软件应用正在被执行时被黑客随意观察到一个或多个未加密的blob 309和/或未加密的参数值304。
71.图4是在一些scc实施例中用于解密已经由api调用者传递的加密blob 409使得api的逻辑可以访问425解密的blob 410内的参数值的示意性框图400。
72.包括图4中所示的scc处理的实施例在步骤1处以熵收集和聚合421开始。在各个实施例中,从各个源收集熵,诸如环境熵401、静态熵402和参数熵403。在各个实施例中,参数熵403包括与加密的blob 409相关联的一个或多个属性。然后在一些实施例中,在步骤2处,
经聚合的熵404用于解密密钥生成423。在步骤3处,在各个实施例中,在步骤2处生成的解密密钥408用于解密加密的blob 409。然后根据一些实施例,在步骤4处,api逻辑访问425解密的blob 410内的参数值。
73.返回密码操作
74.图5是一些scc实施例的示意性框图500,其中api将加密的返回值508返回到api调用者。
75.包括图5中所示的scc处理的实施例包括在步骤1处的熵收集和聚合521。在各个实施例中,从各个源收集熵,诸如环境熵501、静态熵502和参数熵503。在一些实施例中,然后在步骤2处经聚合的熵504用于加密密钥生成522。在各个实施例中,在步骤3处,在步骤2处生成的加密密钥507用于对未加密的api返回值509进行加密,获得加密的api返回值508。然后,根据一些实施例,执行api返回操作524,其中加密的api返回值508被返回到api调用者。
76.因此,使用图5中所示的scc的一些实施例防止了在应用正在被执行时被黑客随意观察到未加密的api返回值509。
77.图6是在一些scc实施例中用于解密加密的api返回值605使得api的调用者可以使用解密的返回值609的示意性框图600。
78.包括图6中所示的scc处理的实施例在步骤1处以熵收集和聚合621开始。在各个实施例中,从各个源收集熵,诸如环境熵601、静态熵602和参数熵603。然后在一些实施例中,在步骤2处,经聚合的熵604用于解密密钥生成623。在各个实施例中,在步骤3处,在步骤2处生成的解密密钥608用于解密加密的api返回值605。然后在一些实施例中,在步骤4处,api调用者逻辑使用625解密的api返回值609。
79.blob返回密码操作
80.图7是一些scc实施例的示意性框图700,其中api将加密的blob 710返回到api调用者。
81.包括图7中所示的scc的实施例包括未加密的blob 709的blob创建(未示出)。在步骤1处,在一些实施例中,从各个源收集熵,诸如环境熵701、静态熵702和参数熵703。在各个实施例中,参数熵703包括与未加密的blob 709相关联的一个或多个属性。在一些实施例中,在步骤2处使用在步骤1处生成的聚合熵704用于加密密钥生成722,以创建加密密钥707。在步骤3处,根据一些实施例,未加密的blob 709中用未加密的返回值708填充。在步骤4处,在各个实施例中,具有未加密的返回值708的未加密的blob 709使用加密密钥707进行加密724。根据一些实施例,然后执行api返回操作725,其中加密的blob 710被返回到api调用者。
82.因此,使用图7中所示的scc的一些实施例防止了当应用正在被执行时被黑客随意观察到返回到api调用者的未加密的blob 709中的未加密的响应数据708。
83.图8是在一些scc实施例中用于对已经返回到api调用者的加密blob 805进行解密,使得api调用者逻辑可以访问825解密的blob 806内的返回值的示意性框图800。
84.包括图7中所示的scc处理的实施例包括加密的blob 805的blob创建(未示出)。在一些实施例中,熵收集和聚合821在步骤1处发生。在各个实施例中,从各个源收集熵,诸如环境熵801、静态熵802和参数熵803。在各个实施例中,参数熵803包括与加密的blob 805相关联的一个或多个属性。然后在一些实施例中,在步骤2处经聚合的熵804用于解密密钥生
成823。在步骤3处,在各个实施例中,在步骤2处生成的解密密钥808用于对加密的blob 805进行解密。然后根据一些实施例,在步骤4处,api调用者逻辑访问825解密的blob 806内的参数值。
85.在一些实施例中,如果参数熵不用于密钥生成,那么scc要求在参数值加密之前而不是在用于密钥生成的熵生成之前识别参数值。
86.在一些实施例中,如果参数熵用于密钥生成,那么系统要求在参数值加密之前以及在用于密钥生成的熵生成之前识别参数值。
87.在一些实施例中,当在api逻辑和api调用者之间存在对这种效果的理解契约时,系统允许用于加密返回的数据的熵可选地从加密的参数数据中导出。在一些实施例中,这种熵可以从一个或多个解密的参数值中导出,该一个或多个解密的参数值或者已为此目的而明确提供,或者从其它参数中导出,这些其它参数具有与系统无关的替代目的。
88.在一些实施例中,当被api调用者使用时,系统需要熵源来再现相同的值,以及当api被api调用者在调用序列中调用时需要api。在一些实施例中,熵源在随后的调用序列上不产生重复的值。
89.在一些实施例中,系统要求实现遵循图1
‑
9的处理流程中所示的顺序。
90.在一些实施例中,当在图1
‑
9的处理流程中的任何连续处理步骤之间存在与系统无关的逻辑时,系统将正确工作。
91.在一些实施例中,当在任何连续处理步骤之间存在的与系统无关的逻辑不干扰系统所依赖的数据或熵源时,系统将正确工作。
92.在一些实施例中,当api接受多于一个参数时,系统允许将参数值加密应用于多个参数。
93.应用系统体系架构
94.图9图示了启用或包括根据系统的一些实施例的系统和方法的计算机系统910的系统体系架构900。在一些实施例中,计算机系统910可以操作和/或处理上述系统和方法的一个或多个软件模块的计算机可执行代码。此外,在一些实施例中,计算机系统910可以在与该系统集成或耦合的一个或多个图形用户界面(例如,hmi)内操作和/或显示信息。
95.在一些实施例中,系统910可以包括至少一个计算设备,该至少一个计算设备包括至少一个处理器932。在一些实施例中,至少一个处理器932可以驻留在或耦合到一个或多个服务器平台(未示出)。在一些实施例中,系统910可以包括耦合到能够处理至少一个操作系统934的至少一个处理器932的网络接口935a和应用接口935b。此外,在一些实施例中,耦合到至少一个处理器932的接口935a、935b可以被配置为处理软件模块中的一个或多个(例如,诸如企业应用938)。在一些实施例中,软件模块可以包括基于服务器的软件,并且可以操作以托管至少一个用户账户和/或至少一个客户端账户,并且可以使用至少一个处理器932操作以在这些账户中的一个或多个之间传送数据。
96.考虑以上实施例,应该理解的是,本系统可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。而且,通篇描述的上述数据库和模型可以将分析模型和其它数据存储在系统910内的计算机可读存储介质上以及耦合到系统910的计算机可读存储介质上。另外,系统的上述应用可以存储在系统910内的计算机可读存储介质上以及耦合到系统910的计算机可读存储介质上。这些操作是要求对物理量进行物理操纵的操作。通常,虽
然不是必需,这些量采取电、电磁或磁信号的形式,或能够被存储、传输、组合、比较和以其它方式操纵的光学或磁光形式。在一些实施例中,系统910可以包括耦合到至少一个数据源937a和/或至少一个数据存储设备937b和/或至少一个输入/输出设备937c的至少一个计算机可读介质936。在一些实施例中,本系统可以被实施为计算机可读介质936上的计算机可读代码。在一些实施例中,计算机可读介质936可以是可以存储数据的任何数据存储设备,该数据随后可以由计算机系统(诸如系统910)读取。在一些实施例中,计算机可读介质936可以是可以用于有形地存储期望的信息或数据或指令并且可以由计算机或处理器932访问的任何物理或材料介质。在一些实施例中,计算机可读介质936可以包括硬盘驱动器、网络附加存储(nas)、只读存储器、随机存取存储器、基于flash的存储器、cd
‑
rom、cd
‑
r、cd
‑
rw、dvd、磁带、其它光学和非光学数据存储设备。在一些实施例中,各种其它形式的计算机可读介质936可以将指令传输或携带到计算机940和/或至少一个用户931,包括路由器、专用或公共网络,或有线和无线的其它传输设备或信道。在一些实施例中,软件模块938可以被配置为从数据库(例如,从包括数据源937a和可以包括数据库的数据存储装置937b的计算机可读介质936)发送和接收数据,并且数据可以被来自至少一个其它源的软件模块938接收。在一些实施例中,软件模块中的至少一个可以被配置在系统内以经由在至少一个数字显示器上渲染的至少一个图形用户界面将数据输出给至少一个用户931a、931b。
97.在该系统的一些实施例中,计算机可读介质936可以经由网络接口935a分布在常规计算机网络上,其中可以以分布式方式存储和执行由计算机可读代码实施的系统。例如,在一些实施例中,系统910的一个或多个组件可以被耦合以通过局域网(“lan”)939a和/或互联网耦合网络939b(例如,诸如无线互联网)发送和/或接收数据。在一些另外的实施例中,网络939a、939b可以包括广域网(“wan”)、直接连接(例如,通过通用串行总线端口)或其它形式的计算机可读介质936,或其任何组合。
98.在一些实施例中,网络939a、939b的组件可以包括任何数量的用户设备,诸如个人计算机,包括例如台式计算机和/或膝上型计算机,或者通过lan 939a耦合的任何固定的、一般非移动的互联网设备。例如,一些实施例包括通过lan 939a耦合的个人计算机940、数据库941和/或服务器942中的一个或多个,其可以被配置用于包括管理员在内的任何类型的用户。其它实施例可以包括通过网络939b耦合的个人计算机。在一些另外的实施例中,系统210的一个或多个组件可以被耦合以通过互联网网络(例如,诸如网络939b)发送或接收数据。例如,一些实施例包括至少一个用户931a、931b,无线耦合并且经由输入和输出(“i/o”)设备937c访问包括至少一个企业应用938的系统的一个或多个软件模块。在一些其它实施例中,系统210可以使至少一个用户931a、931b能够通过lan 939a经由i/o设备937c被耦合以访问企业应用938。在一些实施例中,至少一个用户931a、931b可以包括使用台式计算机940和/或膝上型计算机或通过互联网239b耦合的任何固定的、一般非移动的互联网电器耦合到系统910的用户931a。在一些另外的实施例中,用户可以包括耦合到系统910的移动用户931b。在一些实施例中,用户931b可以使用任何移动计算设备931c来无线耦合到系统910,包括但不限于个人数字助理和/或蜂窝电话、移动电话或智能电话和/或寻呼机,和/或数字平板电脑和/或固定或移动互联网设备。
99.本文描述的构成该系统的一部分的任何操作都是有用的机器操作。本系统还涉及用于执行这些操作的设备或装置。可以针对所需目的对装置进行特殊构造,诸如专用计算
机。当被定义为专用计算机时,计算机还可以执行不属于专用目的的其它处理、程序执行或例程,同时仍然能够针对该专用目的进行操作。可替代地,可以通过由存储在计算机存储器、高速缓存中或通过网络获得的一个或多个计算机程序选择性地激活或配置的通用计算机来处理操作。当通过网络获取数据时,数据可以被网络上的其它计算机(例如,计算资源的云)处理。
100.该系统的实施例还可以被定义为一种将数据从一种状态变换成另一种状态的机器。数据可以表示物品,该物品可以被表示为电子信号并以电子方式处理数据。在一些情况下,可以将变换后的数据可视化地描绘在显示器上,从而表示由数据的变换产生的物理对象。可以将变换后的数据一般地或以使得能够构造或描绘物理和有形对象的特定格式保存到存储装置中。在一些实施例中,该操纵可以由处理器执行。在这样的示例中,处理器因此将数据从一件事变换成另一件事。更进一步,一些实施例包括可以由可以通过网络连接的一个或多个机器或处理器来处理的方法。每个机器可以将数据从一种状态或事物变换成另一种状态或事物,并且还可以处理数据、将数据保存到存储装置、通过网络传输数据、显示结果或将结果传送到另一个机器。如本文所使用的,计算机可读存储介质是指物理或有形存储装置(与信号相反),并且包括但不限于以用于信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的有形存储的任何方法或技术中实现的易失性和非易失性、可移动和不可移动存储介质。
101.虽然可以按特定次序描述方法操作,但是应当理解的是,其它内部管理操作可以在操作之间执行,或者可以调整操作以使它们在稍微不同的时间发生,或者可以分布在系统中,只要以期望的方式执行覆盖操作的处理即可,这允许在与处理相关联的各种间隔处发生处理操作。
102.本文使用的措词和术语是出于描述的目的,并且不应被认为是限制性的。本文中“包括”、“包含”或“具有”及其变体的使用意在涵盖其后列出的项目及其等同物以及附加项目。除非另外指定或限制,否则术语“安装”、“连接”、“支撑”和“耦合”及其变化被广泛使用,并且包括直接和间接安装、连接、支撑和耦合。另外,“连接”和“耦合”不限于物理或机械连接或耦合。
103.应该理解的是,本系统在其应用中不限于在先前描述中阐述或在附图中示出的构造的细节和组件的布置。本系统能够具有其它实施例并且能够以各种方式被实践或执行。给出本公开以使本领域技术人员能够制造和使用本系统的实施例。对所示出的实施例的各种修改对于本领域技术人员而言将是显而易见的,并且本文的一般原理可以应用于其它实施例和应用,而不脱离本系统的实施例。另外,可以做出许多修改以适应特定情况、指示、物质的材料和组成、一个或多个处理步骤,而不脱离当前公开的实施例的精神和范围。所有这些修改旨在落入所附权利要求的范围内。
104.因此,本系统的实施例并不旨在限于所示出的实施例,而是应被赋予与本文所公开的原理和特征相一致的最广范围。具体实施方式要参考附图来阅读,其中不同附图中的相同元件具有相似的附图标记。附图不一定按比例绘制,其描绘了所选择的实施例,并且不旨在限制系统的实施例的范围。技术人员将认识到,本文提供的示例具有许多有用的替代方案,并且落入本系统的实施例的范围内。
技术特征:
1.一种存储指令的非暂态计算机可读介质,所述指令被配置和布置为对在应用编程接口(api)的调用者与该api内包含的逻辑之间传递的信息进行加密,所述指令包括:确定供api调用者使用的至少一个密码值,从至少一个熵源收集和聚合熵,执行密码操作,所述密码操作的结果包括至少一个密码参数,以及使用所述至少一个密码参数执行api操作。2.如权利要求1所述的非暂态计算机可读介质,其中所述至少一个密码值包括至少一个加密参数值、至少一个未加密参数值、至少一个加密返回值、至少一个未加密返回值、至少一个加密二进制大对象(blob)存储器分配值以及至少一个未加密blob存储器分配值中的一个或多个;其中所述至少一个熵源包括环境熵、静态熵和参数熵中的至少一个;其中所述密码操作包括加密操作和解密操作中的至少一个;其中执行所述密码操作包括:使用经聚合的熵生成密码密钥,以及对密码值进行密码变换以获得密码参数;其中执行api操作包括以下至少之一:将至少一个密码参数发送给api调用者,以及使用所述至少一个密码参数执行api逻辑。3.如权利要求2所述的非暂态计算机可读介质,其中所述参数熵包括与至少一个密码值相关联的至少一个属性。4.如权利要求2所述的非暂态计算机可读介质,其中从至少一个熵源收集和聚合熵包括生成具有足以存储密码值的blob存储器分配的二进制大对象(blob)。5.如权利要求4所述的非暂态计算机可读介质,其中所述参数熵包括从blob导出的blob熵。6.如权利要求4所述的非暂态计算机可读介质,其中所述blob包括加密blob和未加密blob中的至少一个。7.如权利要求4所述的非暂态计算机可读介质,其中执行所述密码操作还包括:用密码值填充blob存储器分配;对所述blob执行密码变换,以获得经变换的blob;其中所述至少一个密码参数包括经变换的blob。8.如权利要求7所述的非暂态计算机可读介质,其中将至少一个密码参数发送到api调用者包括将所述经变换的blob发送到api调用者。9.如权利要求7所述的非暂态计算机可读介质,其中使用所述至少一个密码参数执行api逻辑包括使用存储在所述经变换的blob内的密码值执行api逻辑。10.一种包括指令的系统,所述指令被配置和布置为对在应用编程接口(api)的调用者
与该api内包含的逻辑之间传递的信息进行加密,所述指令包括:确定供api调用者使用的至少一个密码值,从至少一个熵源收集和聚合熵,执行密码操作,所述密码操作的结果包括至少一个密码参数,以及使用所述至少一个密码参数执行api操作。11.如权利要求10所述的系统,其中所述至少一个密码值包括至少一个加密参数值、至少一个未加密参数值、至少一个加密返回值、至少一个未加密返回值、至少一个加密二进制大对象(blob)存储器分配值以及至少一个未加密blob存储器分配值中的一个或多个;其中所述至少一个熵源包括环境熵、静态熵和参数熵中的至少一个;其中所述密码操作包括加密操作和解密操作中的至少一个;其中执行所述密码操作包括:使用经聚合的熵生成密码密钥,以及对密码值进行密码变换以获得密码参数;其中执行api操作包括以下至少之一:将至少一个密码参数发送给api调用者,以及使用所述至少一个密码参数执行api逻辑。12.如权利要求11所述的系统,其中所述参数熵包括与至少一个密码值相关联的至少一个属性。13.如权利要求11所述的系统,其中从至少一个熵源收集和聚合熵包括生成具有足以存储密码值的blob存储器分配的二进制大对象(blob)。14.如权利要求13所述的系统,其中所述参数熵包括从blob导出的blob熵。15.如权利要求4所述的系统,其中所述blob包括加密blob和未加密blob中的至少一个。16.如权利要求3所述的系统,其中执行所述密码操作还包括:用密码值填充blob存储器分配;对所述blob执行密码变换,以获得经变换的blob;其中所述至少一个密码参数包括经变换的blob。17.如权利要求6所述的系统,其中将至少一个密码参数发送到api调用者包括将所述经变换的blob发送到api调用者。18.如权利要求6所述的系统,其中使用所述至少一个密码参数执行api逻辑包括使用存储在所述经变换的blob内的密码值执行api逻辑。19.一种保护在单个操作系统处理的域内在api的调用者与该api内包含的逻辑之间传递的信息的方法,所述方法包括以下步骤:
确定供api调用者使用的至少一个密码值,从至少一个熵源收集和聚合熵,执行密码操作,所述密码操作的结果包括至少一个密码参数,以及使用所述至少一个密码参数执行api操作。20.如权利要求19所述的方法,其中所述至少一个密码值包括至少一个加密参数值、至少一个未加密参数值、至少一个加密返回值、至少一个未加密返回值、至少一个加密二进制大对象(blob)存储器分配值以及至少一个未加密blob存储器分配值中的一个或多个;其中所述至少一个熵源包括环境熵、静态熵和参数熵中的至少一个;其中所述密码操作包括加密操作和解密操作中的至少一个;其中执行所述密码操作包括:使用经聚合的熵生成密码密钥,以及对密码值进行密码变换以获得密码参数;其中执行api操作包括以下至少之一:将至少一个密码参数发送给api调用者,使用所述至少一个密码参数执行api逻辑,以及其中所述参数熵包括与至少一个密码值相关联的至少一个属性。
技术总结
本公开涉及用于通过使用安全调用约定(SCC)来保护在API的调用者与该API内包含的逻辑之间传递的软件应用信息的系统和方法。SCC涉及对信息执行密码操作,使得信息的真实性质难以理解。SCC防止黑客使用该信息对软件应用进行反向工程以使其表现出期望的行为。进行反向工程以使其表现出期望的行为。进行反向工程以使其表现出期望的行为。
技术研发人员:I
受保护的技术使用者:阿韦瓦软件有限责任公司
技术研发日:2019.09.10
技术公布日:2021/6/29
转载请注明原文地址:https://doc.8miu.com/read-42.html