应用递增多项式代码增强抵抗反向工程的计算机实现方法与流程

文档序号:15307486发布日期:2018-08-31 21:14阅读:168来源:国知局

本申请要求于2015年12月31日提交的标题为“增强抵抗的自发多项式演化代码技术”的申请号为62/273,499的美国临时专利的优先权,在此合并作为参考并不引起否定。

本公开总体上设计信息安全技术领域,尤其是对软件资源的增强抵抗反向工程的保护。

技术背景

计算机化的设备和系统控制着我们日常生活的许多方面,从撰写文本文档到控制交通信号灯。然而,计算机也是被破坏、利用和其他恶意活动的目标,无论是以自行执行代码的形式破坏计算机的正常运行还是存储在其中的损坏恶意数据,例如:病毒,蠕虫等,或者是数据盗窃或伪造的工具,例如:特洛伊木马和后门程序,或者威胁正常功能或信息完整性的类似程序。

近年来,随着计算机网络和数字通信(例如通过因特网或万维网)的出现,计算机和其他网络设备更容易受到安全威胁的影响,并且存在即将和持续存在的危险攻击或成为入侵的对象,也俗称为“黑客攻击”。这样的攻击可以针对计算机程序或应用中的任何一个、安全协议等。在某些情况下,攻击可能由这些项目中的任何一个进行逆向工程组成。为了入侵安全网络或在安全程序中创建虚假报告,黑客研究这些程序及其工作方式。他们映射他们的过程,提取他们的代码和算法,并将其用于他们自己的目的。在某些情况下,通过对软件进行反向工程,黑客可能会以允许他们在某种程度上操纵原始程序或协议,以利用或替换它们的方式实施反向工程程序。

在某些情况下,程序员可能会试图通过使代码难以解密和分析来使黑客更难以对程序进行逆向工程。

另一种解决方案是尝试并保持领先于黑客-每当代码被黑客攻击时-安全更新就会被持续安装和发送以解决问题。



技术实现要素:

所公开的主题的一个示例性实施例是由执行计算机程序的处理器执行的计算机实现的方法,所述计算机程序包括在所述计算机程序执行的处理中利用的并且能够接纳内容的对象,所述方法包括:接收递增内容,其中所述增量内容修改由所述服务器分发给能够执行所述计算机程序的多个计算机化装置,其中所述增量内容修改包括对所述对象的当前内容的修改,由此所述服务器的更新内容在多个计算机化设备中的计算机程序的每个实例中的对象可以以同步的方式获得,并且不通过通信信道传输更新的内容;基于增量内容修改更新对象的当前内容,由此内容从当前内容更新到更新内容;以及基于所述对象的更新内容执行所述处理,由此所述计算机程序的操作与所述更新之前的操作相比被改变;其中在所述更新之前获得所述计算机程序的实例并且不具有所述增量内容修改,或者获得所述增量内容修改而不具有所述对象的至少当前内容,导致所述计算机程序的无效实例在不同于计算机程序在多个计算机化设备中的实例的方式;由此对计算机程序的逆向工程增加了难度。

所公开的主题的另一示例性实施例是由执行计算机程序的处理器执行的计算机实现的方法,所述计算机程序包括多个代码段,所述方法包括:从服务器接收增量代码修改,其中所述增量代码修改由所述服务器分配给能够执行所述计算机程序的多个计算机化装置,其中所述增量代码修改包括对所述多个代码部分的当前组成的修改,由此所述多个代码部分的更新组合被包括在每个在多个计算机化设备中的计算机程序的实例可以以同步的方式获得,并且不通过通信信道发送更新的组合;基于增量代码修改来更新多个代码部分的当前组成,由此将多个代码部分从当前合成更新为更新合成;以及基于所述多个代码段的更新后的组成来执行所述处理,由此所述计算机程序的操作与所述更新之前的操作相比被改变;其中在所述更新之前获得所述计算机程序的实例并且不具有所述增量代码修改,或者获得所述增量代码修改而不具有所述多个代码部分的当前组成,导致所述计算机程序的无效实例运行以与所述多个计算机化装置中的所述计算机程序的实例不同的方式;由此对计算机程序的逆向工程增加了难度。

所公开的主题的又一个示例性实施例是由执行计算机程序的处理器执行的计算机实现的方法,该计算机程序包括在由计算机程序执行的处理中利用的功能,该功能被配置用于允许输入并从其生成输出所述方法包括:从服务器接收增量算法修改,其中所述增量算法修改由所述服务器分发给能够执行所述计算机程序的多个计算机化装置,其中所述增量算法修改包括对当前实现的由此可以以同步方式获得包括在多个计算机化装置中的计算机程序的每个实例中的功能的更新实现的功能,并且不通过通信传输更新的实现通道;基于所述增量算法修改来更新所述函数的当前实现,由此所述函数从当前实现更新到所述更新实现;以及基于所述函数的更新实现来执行所述处理,由此由所述函数从给定输入与在所述更新之前从给定输入由此产生的输出相比被改变;其中在所述更新之前获得计算机程序的实例并且不具有增量算法修改,或者获得增量算法修改而不具有最小功能的当前实现导致以与多个计算机化装置中的计算机程序的实例不同的方式操作的计算机程序的无效实例;由此施加计算机程序的逆向工程中的额外困难。

附图说明

根据下面结合附图进行的详细描述,本公开的主题将被更全面地理解和认识,在附图中相应或相似的数字或字符表示相应或相似的部件。除非另外指出,否则附图提供了本公开的示例性实施例或方面,并且不限制本公开的范围。在图纸中

图1a示出了根据所公开的主题的一些示例性实施例的方法的流程图;

图1b示出了根据所公开的主题的一些示例性实施例的方法的流程图;

图1c示出了根据所公开的主题的一些示例性实施例的方法的流程图;

图2示出了包括在计算机化的设备中的设备的框图,根据所公开主题的一些示例性实施例;

图3示出了根据所公开的主题的一些示例性实施例的示意性示出,利用所公开的主题阻止黑客攻击的操作模式和原理的流程图。

具体实施方式

由所公开的主题处理的是提供针对计算平台,计算机程序,网络通信协议,算法或类似计算资源的逆向工程的增强保护的技术问题,其逆向工程可能为了恶意目而被执行。

一种技术解决方案是使用增量修改技术来更新计算机程序代码或其他类似的计算资源以用于处理,由此允许代码的特定部分变形和演变,以阻止反向代码工程有效地工作。在一些示例性实施例中,程序的实例可以以安全方式彼此通信,诸如通过在通信期间使用加密通信等执行端口加扰。这种安全通信可以依赖于利用共享算法的实例(例如,用于加扰/解扰,加密/解密等)。中央服务器可能会周期性地发送随机更改到共享算法,这些更改可能表示对算法进行了修改(而不是替换版本)。修改可能不仅仅是语义上的或与控制流相关的,而是可能提供不同的计算输出。例如,如果该算法需要计算公式,则可以通过添加常数值、减去常数值、将该值乘以常数、将该值幂乘以常数、除以常数取公式的模量等。在一些示例性实施例中,该改变可以是随机改变,从而不被预见。有可能系统的不同实例可以考虑到随机变化而创建算法的不同版本。在一些进一步的示例性实施例中,可以在被认为在太短的时间段内周期性地执行改变,以使得黑客在其期间,例如每小时、每四小时、每天对软件进行逆向工程或类似逆向工程的操作。

利用所公开的主题的一个技术效果是防止黑客版本的算法被有效地使用,使得在应用逆向工程并且提取算法的情况下,它不会在受保护的系统上工作-因为它可能已经改变。如果攻击者试图侦听并捕获算法中的更改,则此类攻击者将仅接收发送该算法的增量,并且由于攻击者采用的原始算法不是共享(修改)算法-攻击者仍将保留错误的算法与系统中的其他实例不兼容。

所公开的主题处理的另一个技术问题是保护数据库免受逆向工程侵害。可以理解的是,为了从数据库中注入错误数据或接收数据,攻击者需要事先知道攻击之前数据库的结构。

根据所公开的主题的另一技术解决方案是中央服务器周期性地发送对订单,结构和/或名称的改变数据库表中的字段。在某些情况下,某些更改可能会创建或销毁数据库表中的虚拟域,更改这些域的排序,这些域的名称等。根据对数据库的修改,应用程序中的访问命令也可根据所做的更改进行修改。

利用所公开的主题的另一技术效果与上面类似,是如果应用逆向工程过程并且提取数据库结构-它将不在受保护系统上工作-因为在此期间被改变。如果攻击者试图侦听并捕获数据库中的更改,他将只收到当前结构中的增量,而不是正确的结构-并且他仍然保留错误的数据库访问字符串。

在一些示例性实施例中,数据库可以基于如地理位置、组织关联、场所信息、执行实例的设备的ip或信息和用户的人口统计信息等仅周期性地更新至软件的一些实例。或者,实例可以被分类为组,并且每个组可以被一起更新并且独立于其他组而被更新。在一些示例性实施例中,可以基于实例的随机或伪随机表征来确定组,例如id。因此,对群组中的一个实例进行成功的黑客攻击可能无益于利用或定位另一个群组的实例。

在一些示例性实施例中,可以基于实例本身的确定并且不依赖来自服务器的指令来更新数据库。如果实例独立更新,则可能不需要中央机制来同步更新指令。

所公开的主题所处理的另一个技术问题是提供一种对抗措施来防止任何现有的任意软件实体的逆向工程,例如,一个应用程序。

根据所公开的主题的又一技术解决方案是中央服务器周期性地将变化发送到应用程序中的各种代码块的给定结构。在一些示例性实施例中,可以将一个或多个密钥引入程序代码内的不同位置,优选随机选择。基于从服务器给出的随机增量,一个或多个密钥可以改变它们的位置。可选地,可以使用从服务器接收的变化量来改变密钥本身。应用程序可以被配置为检查以上述方式嵌入其中的密钥是否是有效密钥,例如,通过计算校验和,散列或类似的函数,并且将结果与服务器可以提供的值进行比较,优选以在线方式,例如在质询-响应测试中。该检查可以连续进行,也可以在预定部分之前进行。读/写操作,可获得机密数据的部分,执行网络通信的部分等。在一些示例性实施例中,用于执行检查的密钥检查器函数可以采用公式,该公式本身可以使用由服务器提供的增量变化进行周期性更新。应该理解的是,在一些示例性实施例中,为了利用,应用程序可能必须经历预处理步骤,诸如重新设计,代码包装或装饰,或者任何类似的代码功能增强机制,并且受益于所公开的主题和由此提供的附加安全层。

与上面类似地,利用所公开的主题的另一技术效果在于,如果进行反向工程或黑客攻击并且由此危及应用程序,则应用程序的黑客实例将停止工作-因为应用程序已被改变,因此被黑客入侵的实例不再匹配它。如果攻击者试图侦听并捕获这些更改,则攻击者将只接收当前结构中的增量,而不是正确的结构-因此不会正确验证应用程序是否正确运行。

现在参考图1a,其示出了根据所公开的主题的一些实施例的方法的流程图。

在步骤110中,可以从服务器接收增量内容修改。增量内容修改可以在与服务器通信并被配置用于执行计算机程序的计算机化装置处接收。计算机程序可以保存在与计算机化设备耦合或包含的存储设备中。计算机程序可以被配置用于在由此执行的处理中使用能够允许内容的对象。增量内容修改可以包括对对象的当前内容的修改,由此可以获得其更新的内容。

在一些示例性实施例中,计算机化装置可以被包括在服务器分配增量内容修改的多个计算机化设备的网络环境中。服务器可以被配置为周期性地发送增量内容修改,例如每月、每周、每日、每小时等等。在一些示例性实施例中,可以对发送的每两个连续增量内容修改之间的周期,从而进行配给,以便在该时间期间对计算机程序进行逆向工程,实际上对计算资源是不可行的或禁止访问的。增量内容修改可以由服务器使用随机过程来确定。在一些示例性实施例中,可以在向计算机化装置的第一次分发或随后从服务器向计算机化设备中保存的计算机程序的实例提供初始内容分配的情况下初始化对象。

在步骤120中,步骤110所接收到的增量内容修改可用于将计算机程序中的对象的内容从其当前内容更新为增量内容修改的更新内容,由此更新内容以同步的方式获得对象并且不通过通信信道传输。可以理解的是,通过仅发送增量内容修改,即当前内容和更新内容之间的增量变化,而不是发送更新内容本身,避免了更新内容被风险评估人员拦截的风险,避免了在中间传输信道被窃听的风险。所以,更新的内容被用于反向工程程序以用于恶意目的或者被利用损坏的可能性显着降低。

在步骤130中,可以由计算机程序基于在步骤120获得的对象的更新内容来执行处理。在一些示例性实施例中,基于更新内容的计算机程序的操作与其先前操作相比可以被改变到在步骤120上执行更新。所以,在执行步骤120之前由未授权实体获得的计算机程序的任何实例,诸如通过对计算机化设备的黑客攻击,执行计算机的逆向工程程序在计算机化设备上执行期间可能会变得无效,并且可能对其之后的预期目的无效,除非增量内容修改以及其之前的每个增量内容修改也由该实体获得。类似地,如果未经授权的实体设法拦截增量内容修改,而没有获得具有该对象的当前内容的计算机程序,则在应用增量内容修改之后,未经授权的实体仍然保持该计算机程序的无效实例在其拥有的计算机程序的黑客拷贝上。

在一些示例性实施例中,该对象可以是数据库。数据库可以包括一个或多个表格,每个表格具有多个字段。增量内容修改可以包括对数据库的模式的改变,诸如例如字段名称,字段或表格的排序,虚拟字段的添加或删除等。对数据库模式的改变可以自行设计以便以增量方式应用,例如,名称的改变可以通过将字符串作为前缀,后缀等连接到预先存在的字段名称来实现,即“用户id”可以被“用户id1234”等替代。增量内容修改中指示改变的方式可以优选地被设计为不公开数据库模式的细节或其当前配置。例如,可以通过仅指定整个集合字段(包括所有固定点)(如果有的话)的排列,而不通过名称,内容或类似特权信息引用特定字段来指示排序变化的字段。在一些示例性实施例中,可以防止sql注入攻击,因为这种攻击可能需要知道数据库模式。即使攻击者知道该模式,攻击者也可能不会使用这些信息,例如攻击者尝试使用该信息时,模式可能已经发生了变化。另外地或替代地,虚拟字段可以是被定义为需要设置值的字段,由此防止sql注入攻击,其由不知道所有虚拟字段的攻击者插入新记录。

然而,应该理解的是,所公开的主题并不意味着以这种方式进行限制,并且可以在可递增地修改的其他软件资源的情况下使用,诸如例如计算机程序代码,算法,协议或如下文详细描述的那样。

现在参考图1b,其示出了根据所公开的主题的一些实施例的方法的流程图。

在步骤110'中,可以从服务器接收增量代码修改。类似于图1a的步骤110,增量代码修改可以在与服务器通信并被配置用于执行计算机程序的计算机化设备处接收。计算机程序可以体现为形式的多个连续的代码行段,在本公开的上下文中被称为“代码段”。增量代码修改可以包括对多个代码段的当前组成的修改,由此可以获得其更新的组合。

在一些示例性实施例中,计算机化装置可以被包括在多个计算机化装置的网络环境中,服务器向其分配增量代码修改。服务器可以被配置为周期性地传送增量代码修改,例如每月、每周、每日、每小时等等。在一些示例性实施例中,可以对发送的每两个连续的增量代码修改之间的周期进行配给,以便在计算机程序实际上对计算资源实际上不可行或禁止的过程中对计算机程序进行逆向工程。增量代码修改可以由服务器使用随机化或伪随机化过程来确定。

在一些示例性实施例中,多个代码段可以被配置用于接收和维护其中不同位置处的多个密钥。在将计算机程序第一次分发到计算机化装置或随后从服务器中将密钥初始提供给保存在计算机化装置中的计算机程序的实例。在一些示例性实施例中,服务器可以进一步提供适配计算机程序以在其中并入多个代码段中的多个密钥的占位符的包装或装饰软件。用于容纳多个密钥的多个代码部分可以是由包装器软件注入的虚拟代码部分,使得计算机程序的功能不受影响。可以以数值形式提供密钥,例如,用于密码计算等的大整数。密钥可以由服务器从给定的允许值组中随机选择,或者使用随机或伪随机生成器函数等来制作。

在步骤120'中,在步骤110'接收到的增量代码修改可用于更新计算机程序中的多个代码段的组成,从其当前的组成到每增量代码修改所需修改的更新组合,由此以同步的方式获得多个代码段的更新的组合,并且没有经由通信信道传输更新的组合,类似于在图1a的步骤120中完成的。可以理解的是,通过仅发送增量代码修改,即在当前和更新的组成之间的增量变化,而不是发送代码本身的更新组合,更新代码被风险人物拦截的风险避免了对传输信道的中间窃听。结果,更新代码被用于恶意目的的可能性显着降低。

在步骤130'中,类似于图1a的步骤130,处理可以由计算机程序基于如在步骤120'上获得的多个代码段的更新的构成来执行。在一些示例性实施例中,与其在步骤120'上执行更新之前的操作相比,可以改变基于更新后的组成的计算机程序。因此,在执行步骤120'之前由未授权实体获得的计算机程序的任何实例,例如,通过对计算机化设备的黑客攻击,在计算机化设备上执行计算机程序期间执行计算机程序的逆向工程等,可能变得无效,并且之后可能对其预期目的无效,除非还获得了增量代码修改由该实体。类似地,如果未经授权的实体设法拦截增量代码修改,而没有获得具有代码的当前组成的计算机程序,则在应用增量代码修改之后,未经授权的实体仍将保留在计算机程序的无效实例中在其拥有的计算机程序的黑客拷贝上。

在一些示例性实施例中,在步骤130'上执行的处理可以包括在步骤140'执行通过检查正在执行或保留在计算机程序的实例中的多个代码段的有效性来验证计算机程序的动作的计算机化装置,由此验证计算机程序保持其真实性和完整性,即它源于合法来源并且没有被篡改或以其他方式被破坏。验证计算机程序的代码的积极结果可以设置为计算机程序的执行的前提条件或其预定部分在步骤150'上启动或恢复。在一些示例性实施例中,在步骤140'中执行的验证操作可以包括验证嵌入在多个代码段中的多个密钥的有效性。在一些进一步的示例性实施例中,用于执行所述验证的检查器功能也可以与多个代码段内的集成组件类似的方式来提供。或者,检查器功能可以仅驻留在服务器端,并且可以根据需要以在线动态方式调

在一些示例性实施例中,增量代码修改可以包括对多个代码部分的结构的改变,例如其重新排序,对虚拟代码部分的添加,删除或修改等。另外地或可选地,增量代码修改可以包括在适用的情况下对多个密钥的改变,例如代码内的密钥的位置改变,密钥值的改变等。在一些示例性实施例中,增量代码修改可进一步包括在适用的情况下对用于验证多个密钥的检查器功能的改变。应该认识到,其中的每一个都改变为代码结构、键、位置、检查器功能等等,可以在增量代码修改中以增量方式指示,使得只有当前和由此规定了代码的更新组成,而不是整个组成(当前或更新)的整体。例如,结构改变可以被规定为用于在开始位置复制虚拟码部分并将复制置于结束位置的指令。类似地,关键位置改变可以被描述为向上或向下移动指定数量的代码行或完全移位到另一个代码段的指令。对键值的改变可被指示为对当前值执行的算术运算,例如:加、减、乘或除指定值等。任何和所有的这些变化也可以被馈送到检查器功能中,因此它被相应地更新。

现在参考图1c,其示出了根据所公开的主题的一些实施例的方法的流程图。

在步骤110”中,类似于图1a-1b的步骤110和110',可以从服务器接收增量算法修改。增量算法修改可以在与服务器通信并被配置用于执行计算机程序的计算机化设备处被接收。计算机程序可以保存在与计算机化设备耦合或包含的存储设备中。计算机程序可以被配置用于在由此执行的处理中使用被配置为允许输入并从其生成输出的功能。增量算法修改可以包括对函数的当前实现的修改,由此可以获得其更新的实现。

在一些示例性实施例中,计算机化装置可以被包括在多个计算机化设备的网络环境中,服务器向其分配增量算法修改。服务器可以被配置为周期性地发送增量算法修改,例如每月、每周、每日、每小时等。在一些示例性实施例中,可以对发送的每两个连续的增量算法修改之间的周期进行配给,以便在计算机程序实际上对计算资源实际上不可行或者禁止的情况下对计算机程序进行逆向工程。增量算法修改可以由服务器使用随机过程来确定。

在步骤120”,在步骤110”接收到的增量算法修改可以用于更新计算机程序中的函数的实现,从其当前实现到更新实现,每次修改由增量算法修改引起,其中更新该功能的实现是以同步的方式获得的,没有类似于图1a-1b的步骤120和120',经由通信信道发送更新的实现。可以理解的是,通过仅发送增量算法修改,即当前实现和更新实现之间的增量变化,而不是发送更新实现本身,更新实现的风险被中间人拦截避免窃听传输信道。因此,用于对恶意目的进行逆向工程的更新实现的可能性显着降低。

在步骤130”中,类似于图1a-1b的步骤130和130',可以由计算机程序基于在步骤120”获得的功能的更新实现来执行处理。在一些示例性实施例中,与在步骤120”上执行更新之前的操作相比,基于更新的实现的计算机程序的操作可以被改变。因此,在执行步骤120”之前由未授权实体获得的计算机程序的任何实例,例如通过对计算机化设备的黑客攻击,在计算机程序执行期间执行计算机程序的逆向工程装置等可能变得无效,并且可能对其之后的预期访问无效,除非增量算法修改也由该实体获得。类似地,如果未经授权的实体设法拦截增量算法修改,而没有获得具有当前函数实现的计算机程序,则在应用增量算法修改之后,未经授权的实体仍然保持计算机程序的无效实例在其拥有的计算机程序的黑客拷贝上。

在一些示例性实施例中,在步骤110”接收到的增量算法修改可以包括第二功能的指示,类似地配置为允许输入并从其生成输出。第二功能可以被配置用于允许一种或多种类型的输入,第一种类型的输入类型符合由该函数生成的输出,并且零个或多个附加的输入参数作为第二类型的输入,该输入参数或其值可以也表示在增量算法修改中。相应地,可以通过在功能上组合第二功能以及零或多个输入参数值来获得更新的实施。在一些进一步的示例性实施例中,该函数可以是适于允许一个或多个变量的序列的算术公式并由此生成单个值。第二函数可以是在一个或多个操作数上的算术运算符,其中第一个是该函数的输出,并且其余的零个或多个操作数是一些任意值,这可以在增量算法修改中规定或以其他方式确定集中的方式。例如,运算符可以是函数输出的加、乘、除、幂等等的常数值,例如,“+5”,“*2”,“-3”等。在一些示例性实施例中,运营商的附加的零个或更多个操作数的值可以由服务器随机地选择或者使用随机或伪随机数生成算法(诸如在密码计算等中使用的)来获得。

现在参考图2,其示出了根据所公开的主题的一些示例性实施例的包括在示意性示出的计算机化环境中的设备的框图。根据所公开的主题,装置200可以被配置为提供对在其上执行的计算机程序或其他软件资源的逆向工程的增强的阻力。

在一些示例性实施例中,装置200可以包括一个或多个处理器202.处理器202可以是中央处理单元(cpu),微处理器,电子电路,集成电路(ic)等。处理器202可用于执行装置200或其任何子组件所需的计算。

在所公开的主题的一些示例性实施例中,装置200可以包括输入/输出i/o模块205.可以使用i/o模块205来向用户或处于其中的另一装置提供输出并从其接收输入与其通信,例如服务器201与装置200类似,服务器201可以包括处理器,i/o模块和存储器(未示出)。装置200可以通过任何可用的通信信道(例如因特网)与服务器201通信。

在一些示例性实施例中,装置200可以包括存储器207。存储器207可以是硬盘驱动器,闪存盘,随机存取存储器(ram),存储器芯片等。在一些示例性实施例中,存储器207可保留可操作以使处理器202执行与装置200的任何子组件相关联的动作的程序代码。

装置200可以被配置为执行保存在存储器207中的程序210,其可以包括将由处理器202执行的指令序列。程序210可以包括在由程序210在装置200上执行期间由程序210执行的处理中使用的对象210'可以是任何计算资源,例如数据库、算法、库、代码块等。在一些示例性实施例中,对象210'可以被配置为接收和维护内容210”。例如,内容210”可以是由具有预定名称,结构和排序的数据字段的表组成的数据库模式,其中对象210'是数据库。作为另一个例子,内容210”可以是程序210的代码段的组合,其包括结构、排序、密钥的值或位置等。应该注意的是,程序210可以由许多不同的装置200执行,每个装置200都与服务器201通信。

存储器207可以包括增量更新器220,其被配置用于基于从服务器201接收到的对其的增量修改来更新程序210中的对象210”的内容210”,类似于图1a-1c的步骤120,120'和120”。在一些示例性实施例中,存储器207可以进一步包括内容验证器250,其被配置用于验证内容210“的有效性,类似于图1b的步骤150'。内容验证器250可以或者由程序210整体包括或者作为能够与之连接的独立单元。在一些示例性实施例中,增量更新器220还可以被配置为使用从服务器201接收的适当增量修改来更新内容验证器250,无论是作为对内容210”的修改的一部分或者是另外的增量。

在一些示例性实施例中,服务器201可以包括对象初始化器215,其被配置为提供分配给装置200的初始内容分配,由此对象210'被初始化为初始内容210”。在一些另外的示例性实施例中,对象初始化器215可以被进一步配置为提供根据所公开的主题,用程序代码中的特定位置处的密钥,例如接收、维护和验证密钥来增强程序210的包装函数。

服务器201可以包括增量提供器225,其被配置为向装置200提供对内容210”的增量修改在一些示例性实施例中,增量修改可以是随机的。增量提供程序225可以包括随机数发生器(rng)引擎230,以协助随着增量提供程序225提供增量修改可能需要的随机计算功能。服务器201可以周期性地提供增量修改。在一些示例性实施例中,服务器201可以包括计时器260,该计时器260被配置用于计时由服务器201发出一次增量修改和直到其递送的下一次递增修改之间的时间段。

现在参考图3,示出了根据所公开的主题的一些示例性实施例的示意性地示出利用所公开的主题阻止黑客攻击的操作模式和原理的流程图。

在步骤303中可以从服务器提取当前的算法版本,在步骤305中在授权装置处接收并且在步骤307中首先安装在其上。然后,在步骤307'中,未授权实体可以通过在步骤307中执行第一安装的逆向工程。算法改变可以由服务器在步骤310中启动,并且可以在步骤315中相应地创建算法的增量。算法的增量可以在授权装置处在步骤320并用于在步骤325中相应地改变算法。根据由服务器发起的算法改变,可以重复步骤320至325一次或多次。基于对其的累积改变,可以在步骤330中创建新算法并且在步骤335中由程序使用。在步骤320'中,未授权实体可以尝试模仿该过程并使用来自被黑客安装的算法,该算法可以那么在步骤325'中也可以使用增量来改变,类似于步骤325,并且在一个或多个这样的改变之后,可以在步骤330'中基于此创建新的算法。然而,由于未授权可能无法访问该算法的第一次安装,而是仅仅是被黑客入侵的安装,或者它可能无法访问一个或多个增量,则所创建的步骤330'的算法可能在步骤335'中结束与步骤335中的程序所使用的算法不匹配。

所公开的主题可以是系统,方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行所公开的主题的各方面的计算机可读程序指令或者可读存储介质(或多个介质)。

计算机可读存储介质可以是可以保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备,半导体存储设备或前述的任何适当组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram),只读存储器(rom)、可擦除可编程只读存储器存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码装置,例如在其上记录有指令的凹槽中的穿孔卡或凸起结构,以及前述的任何适当组合。这里使用的计算机可读存储介质不应被解释为暂时信号本身,诸如无线电波或其他自由传播的电磁波,通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆)或通过导线传输的电信号。

这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络例如因特网、局域网、广域网和网络从计算机可读存储介质下载到外部计算机或外部存储设备和无线网络。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行所公开的主题的操作的计算机可读程序指令可以是汇编指令,指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或源代码或以一种或多种程序设计语言的任意组合编写的目标代码,包括诸如smalltalk,c++等的面向对象的程序设计语言,以及诸如“c”程序设计语言或类似程序设计语言的常规过程程序设计语言。计算机可读程序指令可以完全在用户的计算机上,部分在用户的计算机上,作为独立的软件包,部分在用户的计算机上,部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(用于例如,通过互联网使用互联网服务提供商)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以制定个性化电子电路,或以执行所公开的主题的各方面。

在此参照根据所公开的主题的实施例的方法,装置(系统)和计算机程序产品的流程图和/或框图来描述所公开的主题的各方面。应当理解的,流程图和/或框图中的每个框以及流程图和/或框图中的框的组合可以通过计算机可读程序指令来实现。

这些计算机可读程序指令可以被提供给通用计算机,专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机的处理器执行的指令或其他可编程数据处理装置创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,该计算机可读存储介质可以指导计算机,可编程数据处理设备和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包括制造物品,其包括实现在流程图和/或框图的一个或多个方框中指定的功能/动作的各方面的指令。

计算机可读程序指令还可以被加载到计算机,其他可编程数据处理装置或其他设备上以使得在计算机,其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,例如在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。

附图中的流程图和框图图示了根据所公开的主题的各种实施例的系统,方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,方框中提到的功能可以不按照附图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的顺序执行。还将注意到,框图和/或流程图的每个框以及框图和/或流程图中的框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,或者执行特殊用途硬件和计算机指令的组合。

这里使用的术语仅用于描述特定实施例的目的,而不是限制性的所公开的主题。如本文所用,除非上下文另有明确指示,否则单数形式“一”、“一个”和“该”也旨在包括复数形式。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合的添加。

下面的权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与具体要求保护的其他要求保护的元件组合执行功能的任何结构,材料或动作。已经出于说明和描述的目的呈现了所公开的主题的描述,但并不意图是穷尽的或者限于所公开的形式的所公开的主题。在不脱离所公开的主题的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员而言将是显而易见的。选择和描述实施例是为了最好地解释所公开的主题和实际应用的原理,并且使本领域的其他普通技术人员能够理解具有各种修改的各种实施例的公开的主题,适合于预期的特定用途。

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