本发明涉及用于保护网页或网络应用程序(或其他应用程序)的方法、用于提供网页或网络应用程序(或其他应用程序)的方法、以及用于实施这样的方法的系统和计算机程序。
背景技术:
向用户的计算机系统提供网页、网络应用程序或其他应用程序是众所周知的。可以使用在用户的计算机系统上运行的浏览器来处理或执行网页和网络应用程序。可以在浏览器环境之外执行其他应用程序,或者可以独立于浏览器环境来执行其他应用程序。用户的计算机系统和浏览器通常在网页、网络应用程序或应用程序的供应商的控制之外。这意味着计算机系统的用户可以尝试发起对网页、网络应用程序或应用程序的攻击或使用网页、网络应用程序或应用程序。这样的攻击可以用于多种目的,诸如用户的经济利益、敏感信息的盗用、访问用户没有资格的内容或服务等。用户可能能够配置或使用计算机系统和/或浏览器来使得发起这样的攻击更容易或试图增加攻击成功的可能性。
技术实现要素:
因此,将期望能够以更安全的方式来向用户的计算机系统提供网页、网络应用程序或其他应用程序,并且使得能够以安全方式处理或者执行网页、网络应用程序或其他应用程序。这将使发起攻击更加困难,或者将降低攻击成功的可能性。这继而有助于减少成功攻击的后果,例如减少或避免财务损失,避免敏感信息的盗用,拒绝攻击者访问攻击者没有资格或没有授权的内容或服务等。
根据本发明的第一方面,提供了一种用于保护由在客户端系统上执行的浏览器所处理的网页或网络应用程序的方法,该方法包括浏览器执行白盒保护的代码的实例,其中白盒保护的代码的实例的执行促使客户端系统:生成包括被控制系统用来执行一个或多个安全测试的消息数据的消息,该控制系统经由网络通信连接至客户端系统;向控制系统发送消息以使得控制系统能够使用消息数据来执行一个或多个安全测试;至少部分地基于该消息来从控制系统接收响应;以及处理该响应。
根据本发明的第二方面,提供了一种用于保护在客户端系统上执行的浏览器所处理的网页或网络应用程序的方法,该方法包括在经由网络通信连接至客户端系统的控制系统处:从客户端系统接收消息,该消息包括被控制系统用来执行一个或多个安全测试的消息数据,该消息由被浏览器执行的白盒保护的代码的实例生成;使用消息数据来执行一个或多个安全测试;至少部分基于该消息来生成响应;以及向客户端系统发送该响应以用于由客户端系统进行处理。
在第一和第二方面的一些实施例中,白盒保护的代码的实例是网页或网络应用程序的一部分。
在第一和第二方面的一些实施例中,该消息数据的至少一部分指示白盒保护的代码的实例的身份。
在第一和第二方面的一些实施例中,该一个或多个安全测试包括以下各项中的一个或多个:(a)用来验证白盒保护的代码的实例中的一些或所有的完整性的测试;(b)用来验证网页或网络应用程序中的一些或所有的完整性的测试;(c)用来标识是否正使用调试器来执行白盒保护的代码的实例的测试;(d)用来标识与网页或网络应用程序有关的或由网页或网络应用程序提供的数据是否正被拷贝或是否已被拷贝的测试;(e)用来标识网页或网络应用程序的数据字段的确认是打开还是关闭的测试;(f)用来标识广告的阻止是打开还是关闭的测试。用来验证网页或网络应用程序中的一些或所有的完整性的测试可以包括验证网页或网络应用程序的dom的一些或所有的完整性。
在第一和第二方面的一些实施例中,至少部分地基于一个或多个安全测试的结果来生成响应。
在第一和第二方面的一些实施例中,当由客户端系统来处理时该响应促使客户端系统执行以下各项中的一个或多个:(a)提供或继续提供网页或网络应用程序的功能;(b)阻止网页或网络应用程序的功能的供应或停止网页或网络应用程序的功能的供应;(c)提供作为网页或网络应用程序的功能的替代或补充的功能;(d)改变客户端系统和/或浏览器的一个或多个配置设置。
在第一和第二方面的一些实施例中,该响应包括响应数据,并且白盒保护的代码的实例被布置成基于响应数据来生成用于由控制系统用来执行一个或多个安全测试的后续消息的消息数据。该响应数据可以标识(i)白盒保护的代码的实例的一个或多个部分,和/或(ii)网页或网络应用程序的一个或多个部分,其中由控制系统基于所述一个或多个部分来执行完整性验证测试。
在第一和第二方面的一些实施例中,白盒保护的代码的实例被布置成以加密形式来生成消息以及该控制系统被布置成以加密形式来生成响应。
在第一和第二方面的一些实施例中,该网络包括因特网。
在第一和第二方面的一些实施例中,所述网页或网络应用程序被布置成经由网络与通信连接至客户端系统的服务系统交互,并且该消息包括要被发送至服务系统的请求。对于第二方面,该方法可以包括以下各项中的至少一个:(a)控制系统与服务系统交互;以及(b)基于一个或多个安全测试的结果来确定控制系统是否应该与服务系统交互,以及如果确定控制系统应该与服务系统交互,则控制系统与服务系统交互。可以至少部分地基于控制系统与服务系统的交互来生成该响应,并且然后该响应可以包括从服务系统对请求的回复。另外或替代地,该方法可以包括控制系统基于该消息将数据存储在用于由服务系统随后访问的存储库中。另外或替代地,该方法可以包括控制系统向服务系统提供一个或多个安全测试的结果的指示。
该服务系统可以提供财务服务并且网页或网络应用程序提供对财务服务的访问。该财务服务可以包括以下各项中的一个或多个:访问财务账户;和/或与商家在财务上交互。在第一和第二方面的一些实施例中,该网页或网络应用程序经由内容分发网络提供对内容的访问。
在这样的实施例中,白盒保护的代码的实例可以被布置成获得加密内容的已修改版本,加密内容的已修改版本包括具有应用于其的第一修改的加密内容;该响应可以包括指示应用于加密内容的已修改版本的第二修改的数据;处理该响应可以包括白盒保护的代码的实例将第二修改应用于加密内容的已修改版本以形成经处理的已修改加密内容;并且网页或网络应用程序可以被布置成基于经处理的已修改加密内容来输出内容。该第二修改然后可以被布置成使得只有一个或多个测试的结果指示客户端系统被授权访问内容,该经处理的已修改加密内容才等于加密内容。另外或替代地,(i)白盒保护的代码的实例可以被布置成接收加密内容并且将第一修改应用于接收到的加密内容以由此获得加密内容的已修改版本;或(ii)白盒保护的代码的实例可以被布置成经由网络接收加密内容的已修改版本。
在第一和第二方面的一些实施例中,该一个或多个安全测试中的至少一个至少部分地基于与白盒保护的代码的实例相关联的元数据,该元数据由控制系统可访问。
根据本发明的第三方面,提供了一种计算机程序,当被处理器执行时,该计算机程序促使处理器实施第二方面的方法(或第二方面的上述实施例中的任一个)。
根据本发明的第四方面,提供一种系统,其被布置成实施第二方面的方法(或第二方面的上述实施例中的任一个)。
根据本发明的第五方面,提供一种白盒保护的代码的实例,其中由客户端系统的浏览器对白盒保护的代码的实例的执行促使该客户端系统实施第一方面的方法(或第一方面的上述实施例中的任一个)。
根据本发明的第六方面,提供了一种向客户端系统提供网页或网络应用程序的方法,该方法包括提供包括根据上面第五方面的白盒保护的代码的实例的网页或网络应用程序,执行白盒保护的代码的实例由此保护网页或网络应用程序。
在第六方面的一些实施例中,该方法包括由根据上面第四方面的系统根据白盒保护的代码的多个实例来确定用来包括作为网页或网络应用程序的一部分的提供给客户端系统的特定实例。
根据本发明的第七方面,提供一种向客户端系统提供网页或网络应用程序的方法,该方法包括提供包括地址的网页或网络应用程序,从该地址可获得根据上面的第五方面的白盒保护的代码的实例,执行白盒保护的代码的实例由此保护网页或网络应用程序。
在第七方面的一些实施例中,该方法包括由根据上面的第四方面的系统根据白盒保护的代码的多个实例来确定用来响应于经由地址来自客户端系统的请求向客户端系统提供的特定实例。
根据本发明的第八方面,提供一种方法,其包括:根据上面的第五方面生成白盒保护的代码的多个实例;以及将白盒保护的代码的多个实例存储在由根据上面的第四方面的系统可访问的数据库中。
在第八方面的一些实施例中,该方法包括生成与白盒保护的代码的多个实例中的每一个相关联的相应元数据以及将该相应元数据存储在数据库中,该元数据用于被系统用来执行所述一个或多个安全测试,该元数据由系统可访问。
根据本发明的第九方面,提供一种系统,其被布置成实施根据第六、第七或第八方面(或其实施例)中的任一个的方法。
根据本发明的第十方面,提供一种计算机程序,当被一个或多个处理器执行时,该计算机程序促使一个或多个处理器实施根据第六、第七或第八方面中的任一个的方法(或其实施例)。
根据本发明的第十一方面,提供一种计算机可读介质,其存储根据上面的第三方面或上面的第十方面权利要求26或36的计算机程序,或存储根据上面的第五方面的白盒保护的代码的实例。
根据本发明的第十二方面,提供一种系统,其被布置成由系统的浏览器来执行白盒保护的代码的实例,其中浏览器对白盒保护的代码的实例的执行促使该系统实施第一方面(或第一方面的上述实施例中的任一个)的方法。
附图说明
现在将参考附图仅作为示例来描述本发明的实施例,在其中:
图1示意性地图示计算机系统的示例;
图2a、2b和2c示意性地图示根据本发明的一些实施例的示例系统;
图3是图示根据本发明的一些实施例的客户端系统和控制系统的交互的示例方法的流程图;
图4是图示根据本发明的一些实施例的操作保护系统的示例方法的流程图;
图5a和5b是图示根据本发明的一些实施例的操作系统的相应示例方法的流程图;
图6a是图示根据本发明的一些实施例的作为图3的方法的一部分的可以由控制器应用程序实施的示例方法的流程图;
图6b是图示根据本发明的一些实施例的作为图3的方法的一部分的可以在一些实施例中实施的示例处理的流程图;
图7a是图示根据本发明的一些实施例的方法的流程图,在该方法中受保护代码可以与控制器应用程序一起工作(以在图3的方法中阐述的方式)以便实施完整性/修改检查和强制执行;图7b示意性地图示根据本发明的一些实施例的可以作为受保护代码的一部分实施(以安全方式)的模块中的一些以便实现此完整性/修改检查和强制执行。
图7c和7d示意性地图示根据本发明的一些实施例的受保护的内容播放器的实现;
图8是图示根据本发明的一些实施例的另一方法的流程图,在该方法中受保护代码可以与控制器应用程序232一起工作(以在图3的方法中阐述的方式)以便实施完整性/修改检查和强制执行;
图9是图示根据本发明的一些实施例的用于最初配置或设置系统的方法的流程图;
图10a和10b示意性地图示根据本发明的一些实施例的针对受保护代码而生成的元数据的示例。
具体实施方式
在接下来的描述中并且在图中,描述本发明的某些实施例。然而,将会认识到,本发明不限于所描述的实施例并且一些实施例可能不包括下面描述的特征的全部。然而,将明显的是,可以在不偏离如所附权利要求中阐述的本发明的更宽精神和范围的情况下在本文中作出各种修改和改变。
—示例计算机系统。
图1示意性地图示计算机系统100的示例。该系统100包括计算机102。该计算机102包括:存储介质104、存储器106、处理器108、接口110、用户输出接口112、用户输入接口114和网络接口116,其全部通过一个或多个通信总线118链接在一起。
该存储介质104可以是任何形式的非易失性数据存储设备,诸如硬盘驱动器、磁盘、光盘、rom等等中的一个或多个。该存储介质104可以存储用于处理器108来执行的操作系统以便使计算机102起作用。该存储介质104还可以存储一个或多个计算机程序(或软件或指令或代码)。
该存储器106可以是适合于存储数据和/或计算机程序(或软件或指令或代码)的任何随机存取存储器(存储单元或易失性存储介质)。
该处理器108可以是适合于执行一个或多个计算机程序(诸如存储在存储介质104上和/或存储器106中的那些)的任何数据处理单元,该计算机程序中的一些可以是根据本发明的实施例的计算机程序或当被处理器108执行时促使处理器108实施根据本发明的一些实施例的方法且将系统100配置成根据本发明的一些实施例的系统的计算机程序。该处理器108可以包括单个数据处理单元或并行、分开地或彼此合作地操作的多个数据处理单元。在实施针对本发明的实施例的数据处理操作的过程中,处理器108可以将数据存储至存储介质104和/或存储器106和/或从存储介质104和/或存储器106读取数据。
该接口110可以是用于向计算机102外部的或从计算机102可移除的设备122提供接口的任何单元。该设备122可以是数据存储设备,例如光盘、磁盘、固态存储设备等等中的一个或多个。该设备122可以具有处理能力,例如该设备可以是智能卡。该接口110因此可以根据它从处理器108接收的一个或多个命令来从设备122访问数据或将数据提供给设备122或与设备122对接。
该用户输入接口114被布置成从系统100的用户或操作员接收输入。该用户可以经由连接至用户输入接口114或与用户输入接口114通信的系统100的一个或多个输入设备(诸如鼠标(或其他定点设备)126和/或键盘124)来提供这个输入。然而,将会认识到,用户可以经由一个或多个附加或替代输入设备(诸如触摸屏)向计算机102提供输入。该计算机102可以将经由用户输入接口114从输入设备接收的输入存储在存储器106中以用于处理器108随后访问和处理,或者可以将其直接传递至处理器108,以使得处理器108可以相应地对用户输入进行响应。
该用户输出接口112被布置成向系统100的用户或操作员提供图形/视觉和/或音频输出。照此,该处理器108可以被布置成命令用户输出接口112形成表示期望的图形输出的图像/视频信号,并且将此信号提供给连接至用户输出接口112的系统100的监视器(或屏幕或显示单元)120。另外或替代地,该处理器108可以被布置成命令用户输出接口112形成表示期望音频输出的音频信号,并且将此信号提供给连接至用户输出接口112的系统100的一个或多个扬声器121。
最后,该网络接口116为计算机102提供用来从一个或多个数据通信网络下载数据和/或将数据上传至一个或多个数据通信网络的功能。
将会认识到,图1中图示以及上面描述的系统100的架构仅仅是示例性的并且可以在本发明的实施例中使用具有不同架构(例如具有比图1中示出的更少的部件或具有除图1中示出的之外的附加和/或替代部件)的其他计算机系统100。作为示例,计算机系统100可以包括以下各项中的一个或多个:个人计算机;服务器计算机;移动电话;平板电脑;膝上型计算机;电视机;机顶盒;游戏控制台;其他移动设备或消费者电子设备;等等。
—系统架构和使用。
图2a示意性地图示根据本发明的一些实施例的示例系统200。该系统200包括客户端系统210、保护系统220、控制(或管理器)系统230、供应商系统280和网络270。该系统200还可以包括可选的服务系统250和可选的数据存储库260。
简言之,该客户端系统210被布置成执行或处理网页214(或网络应用程序214或应用程序214)。为了确保这以安全且信任的方式来执行,保护系统220负责生成受保护代码216,以形成网页214的一部分(或要从网页214访问)并且要由客户端系统210来执行。该控制系统230与客户端系统210(或在客户端系统210处执行的受保护代码216)交互以便实施诸如受保护代码216的认证、受保护代码216的完整性验证等等的操作,并且基于这些操作的结果,控制系统230实施对应的功能(诸如使得客户端系统210能够继续处理网页214或者拒绝客户端系统210访问网页214的内容或功能等等)。该客户端系统210最初从供应商系统280请求网页214(并且获得该网页214的至少一部分),例如供应商系统280可以是网站的主机(host)或可以是应用程序商店。服务系统250可以是网页214希望作为其处理的一部分与其交互的系统。该服务系统250可以是与供应商系统280不同的系统,尽管如后来讨论的,该服务系统250可以与供应商系统280相同或可以是供应商系统280的子系统。
如应该变得明显地,该系统200使得能够在不必信任在其中使用网页214的客户端系统210和/或环境的情况下(即可以使用非信任浏览器)实施并强制执行网页214(包括它们处理/处置的其功能和数据)的保护。
该客户端系统210、保护系统220、供应商系统280和控制系统230可以被布置成通过或经由网络270彼此通信。网络270可以是适合于将数据从客户端系统210、保护系统220、供应商系统280和控制系统230中的任一个传输或传达至客户端系统210、保护系统220、供应商系统280和控制系统230中的另一个的任何种类的网络。例如,该网络270可以包括局域网、广域网、城域网、因特网、无线通信网络、电缆网络、数字广播网络、卫星通信网络、电话网络等等中的一个或多个。该客户端系统210、保护系统220、供应商系统280和控制系统230可以通过网络270经由任何适当的通信机制/协议来通信以便与彼此传达数据。然而,将会认识到,其他通信场景是可能的。
尽管图2a图示单个客户端系统210、单个保护系统220、单个供应商系统280和单个控制系统230,将会认识到可以存在多个客户端系统210和/或多个保护系统220和/或多个供应商系统280和/或多个控制系统230,并且已经为了易于图示简化了图2a。
该客户端系统210、保护系统220、供应商系统280和控制系统230每个可以是或者每个可以包括如上面参考图1描述的一个或多个计算机系统100。例如,该客户端系统210可以是个人计算机、服务器计算机、膝上型计算机、移动电话、平板计算机、电视机等等。类似地,该保护系统220、供应商系统280和控制系统230可以例如每个包括一个或多个服务器计算机。
可以由分开的实体来操作该保护系统220和控制系统230或者可以由相同的实体来操作该保护系统220和控制系统230。该保护系统220和控制系统230可以彼此物理上分开,或者它们可以共享一个或多个计算机系统100(例如它们可以至少部分使用一个或多个共用服务器来实施)。该保护系统220和控制系统230可以因此一起被视为保护和控制系统240(在图2a中由点线来图示)。
如所提到的,本发明的一些实施例可以利用可选的服务系统250。该服务系统250可以被布置成通过网络270与控制系统230通信。该服务系统250和控制系统230可以通过网络270经由任何适当的通信机制/协议来通信以便与彼此传达数据。然而,将会认识到其他通信场景是可能的。尽管图2a图示单个服务系统250,但是将会认识到可以存在多个服务系统250并且已经为了易于图示简化了图2a。该服务系统250可以是或可以包括如上面参考图1描述的一个或多个计算机系统100。例如,该服务系统250可以包括一个或多个服务器计算机。
利用该服务系统250的本发明的实施例还可以利用被布置成存储各种数据262的可选的数据存储库(或数据仓库或数据库)260。该数据存储库260可以形成控制系统230的一部分。该数据存储库260可以形成服务系统250的一部分。该数据存储库260可以与控制系统230分开并且与服务系统250分开。该控制系统230和/或服务系统250可以被布置成经由网络270将数据262存储(或保存或上传)在数据存储库260中和/或从数据存储库260读取(或访问或获得或下载)数据262。然而,该控制系统230和/或服务系统250可以被布置成经由不同网络(诸如安全私用网络)将数据262存储(或保存或上传)在数据存储库260中和/或从数据存储库260读取(或访问或获得或下载)数据262。
该客户端系统210被布置成执行web浏览器212(诸如internetexplorer、mozillafirefox、safari、googlechrome等等)。web浏览器是公知的并且因此不应该在这里详细地描述。该浏览器212是由客户端系统210执行的软件应用程序。
该浏览器212被布置成获得或接收网页214(例如从网站服务器/主机,其可以例如是供应商系统280)。该网页214通常包括html代码(诸如html5代码)或处于一些其他标记语言(诸如xml)的代码(或者至少部分地使用其来编码/书写)。该浏览器212被布置成处理网页214并且可以例如输出或渲染网页214的显示(或视觉表示)(例如在客户端系统210的屏幕120上)。对于此,该网页214可以包括css(级联风格表单)代码,其描述要如何呈现或显示网页214的内容(如例如使用html来编码)。
该网页214可以包括可执行代码215(或一个或多个脚本)或者可以被布置成执行或使用可执行代码215(或一个或多个脚本)。该代码215可以例如被以javascript书写(尽管将会认识到可以使用其他编码/脚本语言,诸如webassembly)。该浏览器212因此可以支持一个或多个编码/脚本语言(例如浏览器212可以支持javascript)—这意味着浏览器212被布置或配置成执行或运行代码215。这使得要在客户端侧而不是服务器侧来执行(如由代码215表示的)计算机程序(即替代必须执行那个代码的网站主机/服务器,诸如供应商系统280)。
该客户端系统210的操作员可以是攻击者,因为操作员可能希望对(或基于或使用)代码215来发起攻击。例如:代码215可能包含攻击者希望获得的秘密信息;攻击者可能希望使用代码215来实现攻击者没有资格或没有授权的功能(诸如通过规避或阻挠安全检查);攻击者可能希望实现利用代码215没有最初预期的新的/替代功能;攻击者可能希望使用代码215来尝试获得对来自一个或多个服务器的功能或数据的未授权访问(例如,服务器托管与网页214、供应商系统280或服务系统250相关联的网站);等等。
该客户端系统210和浏览器212通常提供用于代码215的执行的所谓的“白盒”环境。在这里,“白盒”环境是针对软件或计算机程序的项目(在这种情况下代码215)的执行环境,在其中假设软件的项目的攻击者具有对正操作的数据(包括中间值)、存储器内容和软件的项目的执行/过程流具有完全访问以及可见性。此外,在白盒环境中,假定攻击者能够修改正操作的数据、存储器内容和软件的项目的执行/处理流程(例如通过使用调试器),—这样,攻击者可以对软件的项目进行试验并尝试操纵该软件的项目的操作,目的是规避最初打算的功能和/或标识秘密信息和/或用于其他目的。实际上,甚至可以假设攻击者知道由软件的项目正在执行的底层算法。然而,软件的项目可能需要使用或存储秘密信息(例如一个或多个密码密钥或标识符),在这种情况下此信息需要保持从攻击者隐藏或由攻击者不可用。该客户端系统210和浏览器212两者的设置、配置和能力不一定是网页214的供应商(或与网页214相关联的另一实体(诸如服务系统250))已知的(或完全已知的)和/或不受该供应商(或与网页214相关联的另一实体(诸如服务系统250))可控制(或完全可控制),并且所以可以假设将在白盒环境中执行网页214以及其代码215。当代码215是用脚本或解释语言(诸如javascript)书写时这尤其是正确的,这是因为脚本语言或解释语言的人类可读性质(如相对的,比方说编译的二进制可执行文件)—客户端系统210的用户可以查看、监视和修改代码215的执行(例如在解释期间或在浏览器212内的及时编译之后),这使得攻击者在发起对/使用代码215的攻击的尝试中容易拷贝并修改代码215。
考虑到这一点,该网页214的代码215中的一些或全部是受保护(或安全)代码216。稍后应该更详细地描述受保护代码216的性质和操作。
将会认识到,尽管已经参考网页214描述了上文,但是在一些实施例中该浏览器212被布置成执行网络应用程序214而不是网页214。网络应用程序的概念是公知的并且因此不应该在这里详细地描述它们(但是参见例如https://en.wikipedia.org/wiki/web_application,通过参考将其整个公开内容合并于此)。因此,虽然下面的描述对“网页”214作出参考,但是将会认识到这里阐述的描述和实施例同样适用于使用网络应用程序214而不是网页214,在这种情况下网络应用程序214包括代码215(其中的一些或全部是受保护代码216)。
此外,在一些实施例中,该客户端系统210不需要执行浏览器212,并且作为利用网页214或网络应用程序214的实施例的代替,客户端系统210可以执行浏览器的环境之外的应用程序。因此,将会认识到,本文中阐述的描述和实施例同样适用于使用应用程序214而不是网页214,在这种情况下应用程序214包括代码215(其中的一些或全部是受保护代码216)。图2b示意性地图示根据本发明的一些实施例的这样的示例系统200。图2b的系统200与图2a的系统200相同,除了客户端系统210不再使用用于处理网页214或网络应用程序214的浏览器212之外,作为代替,该客户端系统210被布置成执行应用程序的代码215(包括受保护代码216)。
图2c示意性地图示根据本发明的一些实施例的另外的示例系统200。图2c的系统200与图2a的系统200相同,除了客户端系统210另外被布置成执行除了网页214或网络应用程序214的代码之外的另外的代码(其包括另外的受保护代码)之外。因此,在图2c中,该受保护代码216被示出为包括受保护代码216a和受保护代码216b,在这种情况下受保护代码216a是网页214或网络应用程序214的代码215a的一部分,并且受保护代码216b是代码215b的不在浏览器环境内执行的一部分。该浏览器212可以是网络视图,而不是提供完全浏览器能力。代码215b和/或受保护代码216b的执行可能促使客户端系统210获得或加载网页214或网络应用程序214。
因此,在图2a的系统200中,当最初获得或加载网页214和/或可以动态加载或获得网页214时(例如响应于当被浏览器212显示时客户端系统210的用户点击由网页214提供的链路),可以获得代码215和受保护代码216。相反,在图2b的系统200中,该代码215和受保护代码216处于适合于客户端系统210的原始环境的字节码或二进制形式,并且在它们的执行之前在客户端系统210处获得或加载该代码215和受保护代码216(与如图2a中的可能被动态获得或加载相对),—例如用户将选择要被执行的应用程序,由此促使预安装的代码215的执行。最后,在图2c的系统200中,当最初获得或加载网页214和/或可以动态加载或获得网页214时(例如响应于当被浏览器212显示时客户端系统210的用户点击由网页214提供的链路),可以获得代码215a和受保护代码216a,而该代码215b和受保护代码216b处于适合于客户端系统210的原始环境的字节码或二进制形式,并且在它们的执行之前在客户端系统210处获得或加载该代码215b和受保护代码216b(与可能被动态获得或加载相对),—例如用户将选择要被执行的应用程序,由此促使预安装的代码215b的执行。因此,图2c的系统200可以被视为图2a和2b的系统200的混合。将会认识到,其他执行环境是可能的并且本发明的实施例适用于这些和其他这样的执行环境中。因此,虽然应该参考图2a的系统200来描述本发明的实施例,但是将会认识到本发明的实施例等同适用于图2b和2c的系统200并且等同适用于其他执行环境。
该控制系统230包括控制器应用程序232或者被布置成执行控制器应用程序232。该控制器应用程序232和受保护代码216被布置成经由网络270彼此通信。这通常以客户端-服务器方式来操作,因为受保护代码216向控制器应用程序232发送请求(或消息)并且控制器应用程序232将对应的响应(或回复消息)返回提供给受保护代码216。如稍后应该更详细描述的那样,该请求可以包括控制器应用程序232可以用来执行验证和/或认证和/或其他功能的各种信息。类似地,如稍后应该更详细地描述的那样,该回复可以包括受保护代码216(或代码215或网页214)可以使用的各种信息,其中的一些可以启用、禁用、修改、增强或以其它方式修改受保护代码216(或代码215或网页214)的功能、操作或内容。该回复可以包括当形成要被发送至控制系统230的后续请求时受保护代码216可以使用的信息(稍后提供这个的示例)。例如:
·返回提供给受保护代码216的响应可以使得代码215和/或网页214能够实施它们的预期/正常功能,即向客户端系统210的用户提供网页214的期望操作—如果验证和/或认证和/或它已执行的其他功能标识应该允许客户端系统210访问或者应该允许客户端系统210执行(或继续执行)由代码215和/或网页214提供的“正常”功能,则控制器应用程序232可以提供这样的响应。
·返回提供给受保护代码216的响应可以禁止或防止代码215和/或网页214实施它们的预期/正常功能(即不会向客户端系统210的用户提供网页214的期望“正常”操作)—如果验证和/或认证和/或它已执行的其他功能标识应该不允许客户端系统210访问或者应该不允许客户端系统210执行(或继续执行)由代码215和/或网页214提供的“正常”功能,则控制器应用程序232可以提供这样的响应。
·返回提供给受保护代码216的响应可以使得代码215和/或网页214能够实施它们的预期/正常功能,即向客户端系统210的用户提供网页214的期望操作,但是还可以促使代码215实施某些附加操作—如果验证和/或认证和/或它已执行的其他功能标识应该允许客户端系统210访问或者应该允许客户端系统210执行(或继续执行)由代码215和/或网页214提供的“正常”功能,但还需要执行某些附加操作(例如如果已经标识安全性弱或不正确/不适当的配置/设置并且因此需要实施用来解析/解决那些弱或配置/设置需要的操作),则控制器应用程序232可以提供这样的响应。
·返回提供给受保护代码216的响应可以使得代码215和/或网页214能够实施它们的预期/正常功能的已修改版本,即向客户端系统210的用户提供网页214的期望操作但是以已修改的方式—如果验证和/或认证和/或它已执行的其他功能标识应该允许客户端系统210访问或者应该允许客户端系统210执行(或继续执行)由代码215和/或网页214提供的“正常”功能的变体,则控制器应用程序232可以提供这样的响应。
·返回提供给受保护代码216的响应可以使得受保护代码216以不同方式来操作(例如在下一次它向控制系统230发送请求时实施不同的功能或供应不同的数据)。这可涉及到包括用于使受保护代码216使用的配置数据的响应和/或可涉及到包括用来替换或补充受保护代码216的一些或全部的更新代码的响应。
·返回提供给受保护代码216的响应可以包括使得受保护代码216能够或将受保护代码216配置成在下一次要发送请求时向控制器应用程序232发送适当的请求的信息。
·将会认识到,如根据稍后阐述的示例应该变得显然的,其他响应场景是可能的。
这样,该控制器应用程序232(以及因此控制器系统230)可以被视为充当以下各项中的一个或多个:(i)验证器,因为控制器应用程序232可以针对一个或多个安全或访问准则或准许和/或针对一个或多个其他条件验证从受保护代码216接收的请求中的数据以制定出客户端系统210是否应该具有对由代码215和/或网页214提供的功能的访问或是否应该允许客户端系统210执行由代码215和/或网页214提供的功能;(ii)这些准则、准许和条件的执行器,因为由控制器应用程序232提供的响应可防止客户端系统210具有对代码215和/或网页214的期望功能的访问或允许客户端系统210执行代码215和/或网页214的期望功能;以及(iii)使能器,因为由控制器应用程序232提供的响应可以使得客户端系统210能够具有对代码215和/或网页214的期望功能(或期望功能的已修改版本)或者实际上一些其他功能的访问或执行代码215和/或网页214的期望功能(或期望功能的已修改版本),或者实际上一些其他功能。
受保护代码216和控制器应用程序232如何交互的选择(例如受保护代码216应该何时向控制器应用程序232发送请求;信息要被包含在这些请求中;要由控制器应用程序232基于那些请求执行的测试/处理;被控制器应用程序232测试/处理的各种可能结果的期望后果以及因此要如何形成响应;等等)可以被视作安全/配置策略或者在安全/配置策略中指定,如稍后关于图9所讨论的。
众所周知,要使用网络通信保护技术(例如ssl(安全套接层)和/或tls(传输层安全))来保护通过网络270的通信。然而,为了帮助避免攻击者可能利用的ssl中和/或tls中的任何漏洞,控制器应用程序232和受保护代码216可被布置成对它们发送到彼此的数据中的一些或全部进行加密或变换,并且类似地该控制器应用程序232和受保护代码216可以被布置成对它们从彼此接收的已加密(或已变换)数据进行解密(或解变换)。这可以是除了使用由ssl和/或tls和/或其他网络通信保护技术提供的保护之外的或作为其的替代。加密(或变换)以及解密(或解变换)可以利用秘密数据(例如共享的秘密密码密钥、私用密码密钥、唯一标识符等等)—受保护代码216可以是“受保护的”,因为以安全方式将此秘密数据存储在网页214内(或者代码215或受保护代码216内)。稍后应该更详细地描述这个。
以与上面的加密/解密(或变换/解变换)类似的方式,该控制器应用程序232和受保护代码216可以被布置成对它们向彼此发送和/或从彼此接收的数据中的一些或全部执行附加或替代密码处理(诸如签名应用和验证、消息认证代码等等)以便防护/保护它们的通信。再次地,这可以利用秘密数据(例如共享的秘密密码密钥、私用密码密钥、唯一标识符等等)并且受保护代码216可以是“受保护的”,因为以安全方式将此秘密数据存储在网页214内(或者代码215或受保护代码216内)。
由控制器应用程序232执行的处理可以至少部分地基于对应于受保护代码216的元数据228。稍后应该描述所包括的元数据228和处理的性质。
图3是图示根据本发明的一些实施例的客户端系统210和控制系统230的交互的示例方法300的流程图。
在步骤302处,该受保护代码216生成请求。
在步骤304处,该受保护代码216向控制系统230发送请求。如上面描述的,这可包括受保护代码216对其他密码操作进行加密和/或将其他密码操作应用到该请求的数据中的一些或全部以便保护该请求。然后可以经由网络270将(安全的)请求传达至控制系统230。
在步骤306处,该控制系统230(并且特别地控制系统230的控制器应用程序232)接收由受保护代码216发送的请求。如上面描述的,这可包括控制器应用程序232对其他密码操作解密和/或将其他密码操作应用到所接收的请求的数据中的一些或全部。
在步骤308处,该控制器应用程序232处理所接收的请求并且生成响应。
在步骤310处,该控制器应用程序232向客户端系统210发送响应。如上面描述的,这可包括控制器应用程序232对其他密码操作加密和/或将其他密码操作应用到该响应的数据中的一些或全部以便保护该响应。然后可以经由网络270将(安全的)响应传达至客户端系统270。
在步骤312处,该客户端系统210(以及特别地被执行的受保护代码216)接收由控制器应用程序232发送的响应。如上面描述的,这可包括受保护代码216将其他密码操作解密和/或将其应用到接收到的响应的数据中的一些或全部。
在步骤314处,受保护代码216处理接收到的响应。
该受保护代码216可以被布置成在不同时间点或不同阶段与控制器应用程序232交互,例如:
·一次(例如当浏览器212开始处理网页214时)。
·在多个不同的时间,例如基于与控制器应用程序232反复交互的一些(潜在规则)时间调度。这帮助确保控制器应用程序232可以定期检查网页214的状态。
·在用户与网页214交互的多个不同阶段,例如每当实施或请求一些或全部功能时(诸如当客户端系统210的用户点击网页214的按钮,或者以其他方式与网页214的控制交互时)和/或每当网页214需要另外的信息(例如来自供应商系统280的信息或来自服务系统250的信息)时。
因此,将会认识到,该方法300可以被重复多次。因此,受保护代码216可以生成请求的序列(或系列)ri(i=1,2,……)并且控制器应用程序232可以生成响应的对应序列(或系列)si(i=1,2,……),在这里对于i=1,2,……,由控制器应用程序232在步骤308处响应于以及至少部分地基于由受保护代码216在步骤302处生成的第i个请求ri来生成第i个响应si。
在一些实施例(下面阐述其示例)中,使用或者至少部分地基于在一个或多个在前响应sk(对于一些k≤i)中包含的一些数据或信息来生成请求ri+1(i=1,2,……)中的一个或多个—优选地,在这样的实施例中,使用或至少部分地基于包含在紧接在前的响应si中的一些数据或信息来生成请求ri+1(i=1,2,……)。这帮助控制器应用程序232保持受保护代码216(或代码215或网页214)在客户端系统210处的操作的控制。在这样的实施例中,初始请求r1可以基于已经存储在受保护代码216(或代码215或网页214)内的或作为其一部分的默认数据或信息。
下面阐述根据方法300的受保护代码216和控制器应用程序232的交互的一些示例。这些示例可以彼此分开地使用或者它们中的两个或更多可以一起实施。
示例1。
网页214中的受保护代码216可以是该代码216的唯一实例,只要下面各项中的一项或两项可以应用:
(i)如果不同的客户端系统210获得网页214,则该不同客户端系统210将接收或获得受保护代码216的不同版本或实例。然而,将会认识到,可以向客户端系统210的群组提供受保护代码216的唯一/不同实例,即对于客户端系统210的总数(population),可能存在客户端系统210的子集,在这种情况下子集中的每个客户端系统210接收受保护代码216的相同特定实例,但是不同子集接收受保护代码216的不同实例。这些子集可以是预定的或者可以是动态建立的。换句话说,可以再使用(或提供)相同的实例或受保护代码216多次—受保护代码216的实例被再使用的次数可以是预定的或者可以逐个实例而变化(例如作为随机生成的值,可能被某个预定的最大阈值在上面被限制)。
(ii)如果相同的客户端系统210在随后时间获得网页214,则在该随后时间获得的网页214可包括或使用受保护代码216的不同版本或实例。然而,将会认识到,受保护代码216的不同版本或实例不一定需要在每次获得网页214时获得,—例如(a)客户端系统210可能仅在获得网页214的每个第w个时间获得受保护代码216的不同版本或实例(在这里w可以是预定的,可以是随机生成的,并且可以在客户端系统210已获得受保护代码216的不同版本或实例之后改变,或者可以以其他方式被控制系统230可控制);和/或(b)如果怀疑客户端系统210(或客户端系统的操作员)发起攻击或误用网页214,则关于客户端系统210是否应该获得受保护代码216的不同版本或实例的决定可基于要如何处置这样的被怀疑的攻击/误用(例如用来启用进一步调查、用来尝试阻止攻击/误用、或一些其他考虑/准则)—例如,如果攻击者的目前攻击没有取得很大进展,则可以向客户端系统210提供受保护代码216的相同版本,而如果攻击者的目前攻击进展很好或已经成功,则可以向客户端系统210提供受保护代码216的不同版本。
因此,对于获得网页214的每个时间(或某些时间)受保护代码216的实例可以是唯一的和/或对于特定客户端系统210(或客户端系统210的群组)来说受保护代码216的实例可以是唯一的和/或对于浏览器212的特定实例来说受保护代码216的实例可以是唯一的,等等。
优选地由控制系统230(或控制器应用程序232)来作出关于将受保护代码216的哪个实例提供给客户端系统210的决定。如下面阐述的,该客户端系统210可以从控制系统210获得受保护代码216;在其他实施例中,该客户端系统210可以从保护系统220或供应商系统280获得受保护代码216,在该情况下,保护系统220或供应商系统280(如果适用的话)可以与控制系统230通信,以使得控制系统230可以决定应该向客户端系统210提供受保护代码216的哪个实例并且相应地通知保护系统220或供应商系统280。
受保护代码216因此可以包括用来向控制器应用程序232标识(或帮助标识)自身的功能,即向控制器应用程序232通知(或至少帮助控制器应用程序232确定)目前在客户端系统210处使用受保护代码216的哪个特定实例的标识。
例如,可以以安全方式将针对受保护代码216的特定实例的标识符存储在受保护代码216内(或者代码215或网页214内)。因此,该步骤302可以包括访问或获得那个所存储的标识符并且提供或包括作为请求的一部分的所访问/获得的标识符,—即构成该请求的数据的至少一部分可以指示受保护代码216的特定实例的身份。然后,步骤308可以包括控制器应用程序232访问或获得针对网页214的受保护代码216的特定实例的标识符(被包括在该请求中)。
替代地,步骤302可以包括受保护代码216获得形成网页214和/或代码215和/或受保护代码216的一部分(或从网页214和/或代码215和/或受保护代码216导出)的信息或数据(例如网页214和/或代码215和/或受保护代码216的所选部分/位),可以从其导出受保护代码216的特定实例的标识符,并且其包括作为该请求的一部分的所访问/获得的信息或数据。然后步骤308可以包括控制器应用程序232使用在请求中接收的此信息或数据来导出针对网页214内的受保护代码216的特定实例的标识符。
这使得控制器应用程序232能够确切地知道(在一定程度上肯定)控制器应用程序232目前与哪些客户端系统210和/或用户和/或受保护代码216的实例交互。
在步骤308处执行的处理可能至少部分地基于受保护代码216的哪个特定实例发送请求(即基于针对特定实例的标识符),在该情况下在步骤308处执行的处理可以利用与受保护代码216的特定实例相关联(或对应于该特定实例)的元数据228。因此,该步骤308可包括控制器应用程序232获得或访问与由标识符标识的受保护代码216的特定实例相关联的元数据228。稍后应该阐述元数据228的使用的示例。
示例2。
该步骤302可包括受保护代码216执行一个或多个检查或测试,并且包括表示请求内的那些一个或多个检查或测试的结果的数据。例如:
·完整性验证:该步骤302可以包括受保护代码216标识或确定是否已经修改了受保护代码216、代码215和网页214中的一个或多个并且将指示是否已经发生这样的修改的修改数据包括在请求中。步骤308然后可以包括控制器应用程序232访问或获得包括在该请求中的修改数据。
·反调试操作:该步骤302可以包括受保护代码216标识或确定代码215和/或受保护代码216是否正在调试器内运行并且将指示代码215和/或受保护代码216正在(或是否正在)调试器内运行的反调试数据包括在该请求中。将会认识到,可以将受保护代码216布置成标识或确定代码215和/或受保护代码216是否作为持续的过程(例如经由一些背景线程)正在调试器内运行(即不仅仅当执行步骤302时),以便生成/保持表示代码215和/或受保护代码216是否正在调试器内运行的对应指示符。该步骤302因此可以包括生成包括此指示符(或基于此指示符)的请求;另外或替代地,可以响应于代码215和/或受保护代码216正在调试器内运行的标识或确定而由该持续的过程来激起步骤302。该步骤308然后可以包括控制器应用程序232访问或获得包括在该请求中的反调试数据。将会认识到,如在本文中使用的术语“调试器”可以指代浏览器212的开发模式或客户端系统210的用户可以通过其来监视和/或控制代码215中的一些或全部的执行的任何其他设施。
·观看标识:该步骤302可以包括受保护代码216标识或确定是否从视觉表示或者从网页214内拷贝网页的数据(例如如由网页214的视觉表示所表示的)并且将指示这样的拷贝正在(或是否正在)发生的观看数据包括在请求中。将会认识到,受保护代码216可以被布置成标识或确定是否将这样的拷贝作为持续的过程(例如经由一些背景线程)来执行(即不仅仅当执行步骤302时),以便生成/保持表示是否执行这样的拷贝的对应指示符。该步骤302因此可以包括生成包括此指示符(或基于此指示符)的请求;另外或替代地,可以响应于这样的拷贝正被执行的标识或确定而由该持续的过程来激起步骤302。该步骤308然后可以包括控制器应用程序232访问或获得包括在该请求中的观看数据。
·验证检查:该步骤302可以包括受保护代码216标识或确定被显示的网页214的数据字段的验证是否在浏览器212内被打开或关闭并且将指示被显示的网页214的数据字段的验证在浏览器212内被(或是否被)打开或关闭的验证检查数据包括在请求中。将认识到,受保护代码216可以被布置成识别或确定被显示的网页214的数据字段的验证是否作为持续的过程(例如经由一些背景线程)被打开或关闭(即不仅仅当执行步骤302时),以便生成/保持表示是否打开或关闭被显示的网页214的数据字段的验证的对应指示符。该步骤302因此可以包括生成包括此指示符(或基于此指示符)的请求;另外或替代地,可以响应于被显示的网页214的数据字段的验证被打开或关闭的标识或确定而由该持续的过程来激起步骤302。该步骤308然后可以包括控制器应用程序232访问或获得包括在该请求中的验证检查数据。
·广告阻止检查:该步骤302可以包括受保护代码216标识或确定广告(例如由网页214提供的广告)的阻止是否在浏览器212内被打开或关闭并且将指示广告(例如由网页214提供的广告)的阻止在浏览器212内被(或是否被)打开或关闭的广告阻止检查数据包括在请求中。将会认识到,受保护代码216可以被布置成识别或确定广告阻止是否作为持续的过程(例如经由一些背景线程)被执行(即不仅仅当执行步骤302时),以便生成/保持表示是否执行广告阻止的对应指示符。该步骤302因此可以包括生成包括此指示符(或基于此指示符)的请求;另外或替代地,可以响应于广告阻止被执行的标识或确定而由该持续的过程来激起步骤302。该步骤308然后可以包括控制器应用程序232访问或获得包括在该请求中的广告阻止检查数据。
替代地,对于上面的检查或测试中的一个或多个,步骤302可以包括从使得那个检查或测试能够实施的受保护代码216和/或代码215和/或网页214和/或浏览器212和/或浏览器212的执行环境获得(或访问或导出)信息或数据并且将那个获得的信息或数据包括在请求中的受保护代码216。步骤308然后可以包括控制器应用程序232自己执行那个检查或测试(而不是由受保护代码216来执行该检查或测试),例如以导出上面提到的修改数据、反调试数据、观看数据、验证检查数据和广告阻止检查数据中的一个或多个。
将会认识到,该步骤302可以包括执行附加或替代功能(或逻辑或处理)来由此生成要被发送至控制系统230的请求—这样的功能可取决于网页214和/或已经为网页214和/或其他准则/考虑建立的安全策略的性质/功能。
在步骤308处生成的响应取决于检查和测试的结果。还可以由网页214的供应商或创建者来配置该响应的生成(例如网页214的一些源可能想要严格的安全控制,而其他网页214的源可能是具有施加的较不严格的安全控制的内容)。这可以例如作为上面提到的安全/配置策略的一部分来指定。响应的示例可以包括:
·如果修改数据指示受保护代码216、代码215和网页214中的一个或多个已经被修改,则可以将该响应布置成防止客户端系统210访问代码215和/或网页214的内容或执行由代码215和/或网页214提供的“正常”功能。这可以由促使(在步骤314处)代码215或受保护代码216实施某些排除处置(例如关闭浏览器212、暂停网页214的视频内容的显示、停止浏览器212显示网页214等等)的响应来实现。替代地,这可以由包含代码215或受保护代码216处理并且导致网页214的输出对客户端系统210的用户成为毫无意义的或无法理解的虚假(例如随机)数据的响应来实现。
·如果反调试数据指示在调试器内运行代码215和/或受保护代码216,则该响应可以被布置成(a)防止客户端系统210访问代码215和/或网页214的内容或执行由代码215和/或网页214提供的“正常”功能(例如如上面讨论的)或者(b)促使(在步骤314处)该代码215和/或受保护代码216禁用调试器。
·如果观看数据指示从视觉表示或从网页214内拷贝网页的数据(例如如由网页214的视觉表示呈现的),则该响应可以被布置成(a)防止客户端系统210访问代码215和/或网页214的内容或执行由代码215和/或网页214提供的“正常”功能(例如如上面讨论的)或者(b)促使(在步骤314处)该代码215和/或受保护代码216实施导致防止这样的拷贝的操作或功能。
·如果验证检查数据指示被显示的网页214的数据字段的验证在浏览器212或网页214内被关闭或以某种方式禁用,则该响应可以被布置成(a)防止客户端系统210访问代码215和/或网页214的内容或执行由代码215和/或网页214提供的“正常”功能(例如如上面讨论的)或者(b)促使(在步骤314处)该代码215和/或受保护代码216配置浏览器212以使得被显示的网页214的数据字段的验证被打开。
·如果广告阻止检查数据指示广告(例如由网页214提供的广告)的阻止在浏览器212内被打开或关闭,则该响应可以被布置成(a)防止客户端系统210访问代码215和/或网页214的内容或执行由代码215和/或网页214提供的“正常”功能(例如如上面讨论的)或者(b)促使(在步骤314处)该代码215和/或受保护代码216将浏览器212配置成使广告阻止的当前设置反过来。
·否则,该响应可以被布置成允许客户端系统210访问代码215和/或网页214的内容或执行由代码215和/或网页214提供的“正常”功能(当然不存在基于可能已经被执行的任何其他测试而允许这发生的任何其他原因)。因此,响应在步骤314处的处理可以仅使受保护代码216允许客户端系统210访问代码215和/或网页214的内容或执行由代码215和/或网页214提供的“正常”功能。
稍后应该提供关于上面的示例的更多细节。
响应在步骤308处的处理可以包括控制器应用程序232将数据记录或存储在接收到的请求中(或者基于接收到的请求来记录或存储数据),该接收到的请求为诸如上面提到的修改数据、反调试数据、观看数据、验证检查数据、广告阻止检查数据等等中的一个或多个。稍后可以将这样的日志或存储的数据用于后续分析(例如以帮助标识是否和/或如何和/或何时和/或由谁来执行对网页214的攻击或误用)和/或用于保护的后续强制执行和/或作为后续法律进程的证据。
如上面提到的,受保护代码216和控制器应用程序232如何交互的选择(例如要在何时以及如何获得受保护代码216的身份;应该在何时以及如何实施并强制执行上面的测试中的一些或全部(诸如完整性验证)以及它们的对应响应;等等)可以被视为安全/配置策略或者在安全/配置策略中指定。
因此,如上面阐述的,该方法300(即由受保护代码216和控制器应用程序232执行的操作)保护由网页214(或网络应用程序214或应用程序214)提供的(正常/预期)功能。对于网页214或网络应用程序214,经由浏览器212(即经由处理该网页214或网络应用程序214的浏览器212)来提供此功能。换一种方式,该方法300(即由受保护代码216和控制器应用程序232执行的操作)保护由浏览器212处理的网页214(或网络应用程序214或应用程序214)。
该保护系统220被布置成基于初始代码222来产生受防护(或保护)代码227。该初始代码222和受保护代码227每个可以包括可被存储为一个或多个文件的一个或多个计算机程序(或软件或模块)。每个文件可以包含一个或多个功能。
该初始代码222可以包括以一种或多种语言书写的源代码,该语言中的一个或多个可以与用于受保护代码216的(多种)语言相同,然而这不是必要的。该初始代码222可以包括编译/可执行代码和/或源代码。
该保护系统220包括或被布置成执行保护应用程序223。该保护系统220还可以包括或实施数据库229(或仓库)。
该保护系统220还可以包括或可以被布置成执行库应用程序221,并且可以包括或实施库数据库225(或仓库)。
总的来说,该保护应用程序223接收初始代码222并且将一个或多个“保护”应用到初始代码222以由此生成并输出受保护代码227。因此,该保护应用程序223包括被布置成向初始代码222应用一个或多个“保护”的一个或多个保护器模块或部件224(如应该简短地更详细地描述的那样)。这些保护中的一个可以包括生成代码或软件的不同实例—这些不同实例提供与彼此相同的整体功能,但是在它们的相应软件指令中具有差异和/或在它们的数据中具有差异。这些差异可以被用来标识具体实例和/或控制具体实例的操作或功能。应该简短地更详细地描述不同实例的生成(也被称为“多样化”)。该保护应用程序223还包括元数据生成器226,其被布置成生成与保护应用程序223生成的受保护代码227相对应或相关联的元数据228—稍后应该更详细地描述元数据228的性质和使用。
如所提到的,该保护系统220可以包括数据库229(或仓库)。该保护系统220可以将由保护应用程序223生成的受保护代码227以及相关联的元数据228存储在数据库229中。这样,该保护系统220可以创建多个不同受保护代码227以及它们的相关联元数据228的存储库,例如存储相同初始代码222的多个不同(或唯一)受保护实例,其中这是针对初始代码222的一个或多个单独的量分别完成的。因此,当要求受保护代码227时,该保护系统220可能已经具有可以被使用/供应的可用受保护代码227的“储备”。然而,将会认识到,在替代实施例中,可以按照需要并且在需要时(即一经要求)生成受保护代码227以及其相关联的元数据228。
(多个)保护器模块224的目的是防护(或保护)初始代码222的功能或数据处理和/或防护(或保护)被初始代码222使用或处理或存储的数据。这可以通过应用多种软件保护技术(在这里被称为“保护”)来实现,诸如遮盖技术、同态数据变换、控制流变换、白盒密码、密钥隐藏、程序互锁和边界弯曲中的一个或多个。
特别地,该受保护代码227(即在被(多个)保护器模块224处理之后的初始代码222)将提供至少与初始代码222相同的功能或数据处理。然而,通常以使得执行受保护代码227的计算机系统100的操作员不能以非故意或不授权的方式访问或使用来自受保护代码227的此功能或数据处理的方式来在受保护代码227中实施此功能或数据处理,而如果作为代替该计算机系统100要执行初始代码222(即以不被保护的形式),则计算机系统100的操作员可能已经能够发起成功的攻击并因此以非故意或不授权的方式访问或使用功能或数据处理。类似地,归因于由(多个)保护器模块224的处理,受保护代码227可以受保护或混淆的方式来存储或能够访问秘密信息(诸如密码密钥或标识符)以由此使得攻击者更难以(如果不是不可能的话)推断或访问该秘密信息(而可能已经在不应用保护的情况下从初始代码222可推断或可访问这样的信息)。
例如:
·该初始代码222可以包括至少部分地基于要由初始代码222处理的一个或多个数据项的决定(或决定框或分支点)。如果以其未保护的形式执行初始代码222,则攻击者可能能够迫使初始代码222执行以使得在处理该决定之后遵循执行的路径,即使该执行的路径并不打算要被遵循。例如,该决定可以包括测试程序变量b是真还是假,并且初始代码222可以被布置成使得如果该决定标识b为真,则执行路径pt被遵循/执行,而如果该决定标识b为假,则执行路径pf被遵循/执行。在这种情况下,如果该决定标识b为真,则该攻击者可以(例如通过使用调试器或通过重写初始代码222)迫使初始代码222遵循路径pf,和/或如果该决定标识b为假,则该攻击者可以迫使初始代码222遵循路径pt。因此,在一些实施例中,该(多个)保护器模块224旨在通过将一个或多个软件保护技术应用到初始代码222内的决定来防止攻击者这样做(或至少使得其更难)。
·该初始代码222可以包括与安全有关的功能;访问控制功能;密码功能和权利管理功能中的一个或多个。这样的功能经常包括秘密数据的使用,诸如一个或多个密码密钥。该处理可包括使用和/或操作或利用一个或多个密码密钥。如果攻击者能够标识或确定秘密数据,则已出现安全漏洞并且可以规避受秘密数据保护的数据(诸如音频和/或视频内容)的控制或管理。因此,在一些实施例中,该(多个)保护器模块224旨在通过将一个或多个软件保护技术应用到初始代码222内的这样的功能来防止攻击者标识或确定一条或多条秘密数据(或至少使得其更难)。这可以包括将受保护代码227布置成使得它以混淆方式将秘密数据存储在受保护代码227自身内。另外或替代地,这可以包括将受保护代码227布置成具有能够以混淆或加密的形式向/从存储器动态地读取和写入秘密数据的功能。
·该受保护代码227可以包括附加功能(即最初不在初始代码222中的功能)。这个附加功能可以被包括到初始代码222中以帮助由(多个)保护器模块224形成受保护代码227。此附加功能可使得受保护代码227能够实施图3的方法300的步骤302、304、312和314。这样,可以将受保护代码227用作网页214内的受保护代码216。
如上面讨论的,该客户端系统210和浏览器212通常提供所谓的“白盒”执行环境。存在用于变换初始代码222以使得它抵抗白盒攻击(即尝试利用执行环境为白盒环境的事实的攻击)的许多技术(在本文中被称为“白盒混淆技术”)。可以在s.chow等人的“white-boxcryptographyandanaesimplementation”selectedareasincryptography,9thannualinternationalworkshop,sac2002,lecturenotesincomputerscience2595(2003),p250-270和s.chow等人的“awhite-boxdesimplementationfordrmapplications”,digitalrightsmanagement,acmccs-9workshop,drm2002,lecturenotesincomputerscience2696(2003),p1-15中找到这样的白盒混淆技术的示例,通过引用将其整个公开内容合并于此。可以在us61/055,694和wo2009/140774中找到附加示例,通过引用将其整个公开内容合并于此。一些白盒混淆技术(诸如上面描述的那些和下面阐述的其他的)实现秘密/敏感数据(诸如密码密钥)以被变换/安全方式的存储和/或使用以及可能的操纵,攻击者难以/不可能根据其来访问或导出底层的秘密/敏感数据。一些白盒混淆技术实施数据流混淆,参见例如us7,350,085、us7,397,916、us6,594,761和us6,842,862,通过引用将其整个公开内容合并于此。然而,将会认识到,存在其他白盒混淆技术并且本发明的实施例可以使用任何白盒混淆技术。
作为另一示例,可能的是可以预期将初始代码222提供(或分发)给特定客户端系统210(或客户端系统210的特定集合)并且由特定客户端系统210(或客户端系统210的特定集合)来使用,并且因此期望将初始代码222“锁定”至(多个)特定客户端系统210(即防止初始代码222(一旦被保护)在另一客户端系统210上执行)。因此,存在用于将初始代码222变换成使得受保护代码227可以在一个或多个预定/具体客户端系统210上执行(或由一个或多个预定/具体客户端系统210执行)但将不会在其他客户端系统210上执行的许多技术(在这里被称为“节点锁定”保护技术)。可以在wo2012/126077中找到这样的节点锁定技术的示例,通过引用将其整个公开内容合并于此。然而,将会认识到,存在其他节点锁定技术并且本发明的实施例可以使用任何节点锁定技术。
数字水印是公知的技术。特别地,数字水印包括修改初始数字对象以产生经水印的数字对象。进行该修改以便将特定数据(被称为有效载荷数据)嵌入或隐藏到初始数字对象中。该有效载荷数据可以例如包括标识所有权权利或针对数字对象的其他权利信息的数据。该有效载荷数据可以标识已水印的数字对象的(预期)接受者,在该情况下有效载荷数据被称为数字指纹—这样的数字水印可以被用来帮助跟踪数字对象的未授权拷贝的原点。可以将数字水印应用到软件项目。可以在us7,395,433中找到这样的软件水印技术的示例,通过引用将其整个公开内容合并于此。然而,将会认识到,存在其他软件水印技术并且本发明的实施例可以使用任何软件水印技术。
如上面提到的,可期望向不同的客户端系统210提供初始代码222的不同版本或实例。初始代码222的不同版本提供相同的功能,然而,初始代码222的不同版本被不同地编程或实施。这可以帮助限制攻击者成功攻击受保护代码227的影响。特别地,如果攻击者成功攻击他的受保护代码227的版本,则该攻击(或通过该攻击发现或访问的数据(诸如密码密钥))可能不适合供受保护代码227的不同版本使用。类似地,具有初始代码222的不同保护实例227帮助标识受保护代码227的具体用户(例如具体客户端系统210)。因此,存在用于将初始代码222变换成使得生成初始代码222的不同保护版本的许多技术(在这里被称为“多样性”技术)(即以便引入“多样性”)。可以在wo2011/120123中找到这样的多样性技术的示例,通过引用将其整个公开内容合并于此。然而,将会认识到,存在其他多样性技术并且本发明的实施例可以使用任何多样性技术。
上面提到的白盒混淆技术、节点锁定技术、软件水印技术和多样性技术是软件保护技术的示例。将会认识到,存在将保护应用到初始代码222的其他方法。因此,应该采用如本文中使用的术语“软件保护技术”或“保护”来意指将保护应用到初始代码222的任何方法(其中目的是阻止被攻击者攻击,或者至少使得攻击者更难以使其攻击成功),诸如上面提到的白盒混淆技术中的任何一个或多个和/或上面提到的节点锁定技术中的任何一个或多个和/或上面提到的软件水印技术中的任何一个或多个和/或上面提到的多样性技术中的任何一个或多个。因此,该(多个)保护器模块240可以被布置成将上面提到的软件保护技术或保护中的任何一个或多个应用到初始代码222以生成受保护代码227。因此,结果得到的受保护代码227可以被称为“白盒保护的代码”。
存在在其中(多个)保护器模块224可以在初始代码222内实施上面提到的软件保护技术的许多方式。例如,为了保护初始代码222,该(多个)保护器模块224可以修改初始代码222内的代码的一个或多个部分和/或可以将代码的一个或多个新的部分添加或引入到初始代码222中。作出这些修改的实际方式或书写代码的新部分的实际方式当然可以改变,毕竟存在书写软件以实现相同功能的许多方式。
可以例如在wo2015/150391和wo2015/150376中找到用于实施(多个)保护器模块224以便从初始代码222生成受保护代码227的许多示例和方法,通过引用将其整个公开内容合并于此。可以在wo2013/142981、wo2013/142979、wo2013/142983和wo2013/142980中找到可以将(多个)保护器模块224布置成应用的保护技术的另外的示例,通过引用将其整个公开内容合并于此。
如上面提到的,该保护系统220可以包括或实施库数据库225(或仓库)。该库数据库225可以包括一个或多个预生成的受保护软件模块(或功能或程序或代码片段),以及用于相同底层功能/代码的潜在多个不同实施/保护的实例。这些模块是“预生成的”,只要它们是独立于初始代码222生成的并且在初始代码222的接受之前潜在生成的。此库数据库225可以因此被视为对保护应用程序223可用的存储库,以使得保护应用程序223(或保护器模块或部件224中的一个或多个)可以使用存储在库数据库225内的模块中的一个或多个,或者将存储在库数据库225内的模块中的一个或多个包括在受保护代码227内。为此,该保护系统220可以被布置成执行库应用程序221—该库应用程序221可以生成存储在库数据库225中的软件模块。在wo2015/150376中描述用来生成受保护模块的这样的库应用程序221的示例,通过引用将其整个公开内容合并于此。该保护应用程序223可以被布置成直接从库数据库225获得软件模块或者可以被布置成经由库应用程序221从库数据库225获得软件模块。将会认识到,该库应用程序221可以是不同于保护系统220的实体的一部分并且可以由该实体来执行。类似地,将会认识到,该库数据库225可以是不同于保护系统220的实体的一部分并且可以由该实体来提供。该库数据库225可以形成数据库229的一部分。
图4是图示根据本发明的一些实施例的操作保护系统220的示例方法400的流程图。
在步骤402处,保护系统220获得初始代码222。这可以包括保护系统220从不同实体(例如从与网页214相关联的网站的供应商/主机,诸如供应商系统280)接收初始代码222,因此该初始代码222可以包括代码215和/或受保护代码216中的一些或全部(即使处于未受保护的形式中)。替代地,这可以包括保护系统220生成初始代码222(例如如果由生成并保护其自己的代码的实体来操作保护系统220)。
在步骤404处,该保护系统220使用保护应用程序223来根据所获得的初始代码222生成受保护代码227以及与受保护代码227相关联的元数据228。这可以包括:(a)将一个或多个模块或代码(例如来自库数据库221的代码)包括到初始代码222中以使得受保护代码227能够实施图3的步骤302、304、312和314和/或(b)应用上面提到的软件保护技术中的一个或多个。上面已经讨论了用于实现这个的方法。如所提到的,这可包括生成初始代码222的多个不同受保护实例或版本227(每个实例或版本具有相应的相关联的元数据228)。
在可选步骤406处,该保护系统220可以将受保护代码227和/或元数据228中的一些或全部存储在数据库229中。因此可以在预期存在对受保护代码227的一个或多个实例的需要情况下实施步骤404,以使得数据库229可以提前存储受保护代码227和元数据228,准备好按照需要且当需要时提供(由此降低供应受保护代码227的延迟)。然而,该数据库229是可选的,以使得该保护系统220可以在且当它被需要或请求时(即一经要求)生成受保护代码227以及元数据228。
在步骤408处,向请求实体(例如供应商系统280)提供该受保护代码227。该保护系统220可以接收对受保护代码227(或对受保护代码227的实例)的请求。如上面讨论的,如果保护系统220被布置成在且当它被需要或请求时(即一经要求)生成受保护代码227和元数据228,则该请求的接收可以引起保护系统220实施步骤404并且(在步骤408处)向请求实体提供响应于该请求在步骤404处生成的受保护代码227。另一方面,如果保护系统220被布置成将受保护代码227和元数据228的存储库(实例)保持在数据库229中,则该请求的接收可以引起保护系统220将存储在数据库229中的受保护代码227(的实例)提供给请求实体。然后,该保护系统220还可以被布置成响应于从数据库229供应受保护代码227(的实例)来生成一个或多个附加受保护代码227和元数据228(的实例)并将其存储在数据库229中,—这样,可以利用受保护代码227的实例的足够缓冲来保持数据库229。
在步骤410处,该保护系统220可以向控制系统230提供与受保护代码227(的实例)相关联的元数据228。特别地,该控制系统230可以向保护系统220发送请求,在这种情况下此请求标识特定的受保护代码227(或特定的受保护代码227的特定实例),并且响应于该请求,保护系统220可以向控制系统230发送包括与所标识的受保护代码227相关联的元数据228(或者包括使得控制系统230能够访问并获得该元数据228的数据(例如url))的回复。可以经由网络270来传达该请求和响应中的一个或两者。替代地,可以经由不同网络(诸如安全的私用网络)来传达该请求和响应中的一个或两者。
步骤410可以与步骤408同时地或作为步骤408的一部分来执行。例如,如果保护系统220将一些受保护代码227以及其相关联的元数据228存储(在步骤406处)在数据库229中,则步骤408和410可以包括从数据库229提供受保护代码227以及其相关联的元数据228。
除了接收作为输入的初始代码222之外,该保护应用程序223还可以接收(a)代码215(其没有被防护/保护)和/或不同于代码215的网页214中的一些或所有(例如css代码的各种html)中的一些或所有。这样,可以基于包含在代码215和/或网页214内的值/数据来生成受保护代码227和/或元数据228。例如,如果当生成受保护代码227和/或元数据228时网页214的和/或代码215的(或从其导出的)正确/预期的值/数据是已知的,则可以使完整性验证扩展超出仅仅检查受保护代码227的完整性。稍后提供这个的示例。
该供应商系统280可以是与网页214相关联的网站的主机。该供应商系统280可以是应用程序商店,可以由客户端系统210从其获得网络应用程序214或另一应用程序214。
在包括服务系统250的实施例中,可以由单独的实体来操作供应商系统280和服务系统250,或者可以由相同的实体来对其操作。该供应商系统280和服务系统250可以是物理上彼此分开的,或者它们可以共享一个或多个计算机系统100(例如它们可以至少部分地使用一个或多个共用服务器来实施)。实际上,该供应商系统280可以是与服务系统250相同的系统或者可以是服务系统250的子系统/部件。
另外或替代地,可以由单独的实体来操作供应商系统280和保护系统220,或者可以由相同的实体来对其操作。该供应商系统280和保护系统220可以是物理上彼此分开的,或者它们可以共享一个或多个计算机系统100(例如它们可以至少部分地使用一个或多个共用服务器来实施)。实际上,该供应商系统280可以是与保护系统220相同的系统或者可以是保护系统220的子系统/部件。
另外或替代地,可以由保护系统220来实施应用于初始代码222以由此生成受保护代码227的保护中的一些,其中由供应商系统280来实施应用于初始代码222以由此生成受保护代码227的保护的剩余部分(即可以跨保护系统220和供应商系统280以分布的形式来实施保护应用程序223)。特别地,在一些实施例中,在与供应商系统280分开的保护系统220处实施保护器模块224中的至少一些,而在供应商系统280处实施剩余的保护器模块224。此外,替代保护系统220,数据库229可以是供应商系统280的一部分(或由其来托管),以使得供应商系统280具有容易地可用的受保护代码227的存储库并且可以在必要时将受保护代码227的实例供应给客户端系统210。可以在保护系统220和/或供应商系统280处整体或部分地实施元数据生成器226和/或库应用程序221。这意味着例如供应商系统280可以最初将初始代码222中的一些或全部提供给保护系统220;然后该保护系统220可以将一个或多个保护(经由一个或多个保护器模块224)应用于所提供的初始代码222以由此生成中间受保护代码;该保护系统220可以将该中间受保护代码返回提供给供应商系统280;该供应商系统280然后可以将一个或多个保护(经由一个或多个保护器模块224)应用于中间受保护代码以由此生成最终受保护代码227(这可包括例如供应商系统280使中间受保护代码与另外的代码绑定或链接或以其他方式组合以便创建受保护代码227)。将会认识到,可存在在其中供应商系统280和保护器系统220可一起工作来从初始代码222形成受保护代码227的其他方式。例如,对于初始代码222的一个或多个部分pi(i=1,……,n),该部分pi可具有应用于其的保护的相应序列pri,j(j=1,……,ni),在这种情况下在保护系统220或供应商系统280处由保护器模块224来应用保护pri,j。每个部分pi可以具有其自己的相应序列pri,j。该供应商系统280然后可以使用将保护pri,j(i=1,……,n;j=1,……,ni)应用于部分pi的结果来创建最后受保护代码227,这可包括将这些结果与还没有提供给保护系统220的另外的代码组合/链接/绑定(这意味着供应商系统280保持在对受保护代码227的最终控制中,而不必最初使所有代码都提供给保护系统220)。
另外或替代地,可以由单独的实体来操作供应商系统280和控制系统230,或者可以由相同的实体来对其操作。该供应商系统280和控制系统230可以是物理上彼此分开的,或者它们可以共享一个或多个计算机系统100(例如它们可以至少部分使用一个或多个共用服务器来实施)。实际上,该供应商系统280可以是与控制系统230相同的系统或者可以是控制系统230的子系统/部件。
虽然图2a图示作为保护系统220的一部分的数据库229,但是在一些实施例中这不是必要的。例如,该数据库229可以改为形成控制系统230的一部分,或者该数据库229可以与控制系统230分开并且与保护系统220分开。因此,该控制系统230和/或保护系统220可以被布置成经由网络270和/或经由不同网络(诸如安全私用网络)将数据(例如受保护代码227和元数据228)存储(或保存或上传)在数据库229中和/或从数据库229读取(或访问或获得或下载)这样的数据。因此,该控制系统230可能够从与保护系统220无关的数据库229访问受保护代码227以及其相关联的元数据228—这意味着该保护系统220可以以“批处理模式”来工作以生成受保护代码227(以及它们的相关联的元数据228)的多个实例,并且控制系统230可以在按需的基础上访问并使用那些实例。
可以在元数据228已经被存储之后更新在步骤404处由保护应用程序223生成的元数据228,如稍后讨论的那样。最初存储的元数据228和/或随后更新的元数据228可以包括或表示多种不同类型的信息,稍后提供其示例(即元数据228可以被视为包括一个或多个元素、分量或表示不同量/属性/参数/等等的单独数据量)。然而,下面阐述针对元数据228(构成元数据228的或由元数据228表示的信息)的一些通用种类,但是将认识到可以使用对元数据228归类的其他方式。还将认识到,元数据228中的一些或全部可以落入到多个种类中,并且构成元数据228的不同元素可以落入到不同种类中。特别地:
(a)元数据228的一些元素可以与受保护代码227的一个或多个特定实例相关联—例如,与受保护代码227的一个实例相关联的元数据228可能不会与受保护代码227的另一实例一起工作,或者可能不会适用于受保护代码227的另一实例。这可在例如已经使用对其数据/代码的不同变换生成了受保护代码227的不同实例的情况下适用。这样的元数据的使用帮助例如确保控制器应用程序232知道在客户端系统210处执行受保护代码227的哪个特定实例,或者确保可以仅在特定客户端系统210处执行受保护代码216的正确/预期实例。
(b)该元数据228可以包括多个元数据集合,每个集合用于由受保护代码227的实例来使用。不同的元数据集合可以引起受保护代码227的实例提供不同的行为或实行不同的执行。这样的元数据的使用帮助例如提供动态多样性效果—例如,第一元数据集合可以被用来在第一时间点控制受保护代码214的实例,之后是在第二时间点使用第二元数据集合等等,这帮助使得攻击者更难以分析受保护代码214在客户端系统210处的操作,帮助针对重放攻击等进行保护。
(c)该元数据228的一些元素可以被用来帮助使控制器应用程序232和受保护代码216同步,例如以帮助在控制器应用程序232和受保护代码216之间建立共享的秘密。
图5a是图示根据本发明的一些实施例的操作系统200的示例方法500的流程图。
在步骤502处,客户端系统210向供应商系统280发出针对网页214的请求。该请求可以经由网络270来传达。因此,例如,供应商系统280可以包括托管网站(其可以包括一个或多个网页,包括网页214)的一个或多个服务器。该步骤502因此可以包括客户端系统210的操作员使用浏览器212来导航至网站并且由此请求网页214。
当然,在利用网络应用程序214或应用程序214而不是网页214的实施例中,该步骤502可以包括客户端系统210向供应商系统280发出请求以下载(或提供有或已安装)网络应用程序214或应用程序214。该请求可以经由网络270来传达。因此,例如,该供应商系统280可以包括被配置为应用程序商店的一个或多个服务器。该步骤502因此可以包括客户端系统210的操作员使用浏览器212来导航至网站(例如由供应商系统280提供/托管的应用程序商店的网站),并且通过与网站交互来请求网络应用程序214或应用程序214至客户端系统210的下载(或供应或安装)。下面的描述应该参考网页214,但是将会认识到它类似地且等同地适用于网络应用程序214和应用程序214。
在步骤504处,响应于该请求,供应商系统280向客户端系统210提供网页214。可以经由网络270来提供/传达该网页214。
如上面提到的,该网页214包括受保护代码216。因此,为了能够向客户端系统210提供网页214(其包括受保护代码216),该供应商系统280可以从保护系统220请求受保护代码227,以使得供应商系统280可以将那个受保护代码227用作网页214的受保护代码216。因此,如在图5a中示出的,在可选步骤506处,该供应商系统280可以从保护系统220请求受保护代码227,并且响应于该请求,保护系统220可以向供应商系统280提供受保护代码227。上面已经参考图4讨论了保护系统220可以通过其来接收对受保护代码227的请求并响应于这样的请求提供受保护代码227的方法。如上面讨论的,该保护系统220可以与控制系统230通信以使得控制系统230可以决定将受保护代码227的哪个实例提供给供应商系统280。
替代地,该供应商系统280可以从控制系统230请求受保护代码227,以使得供应商系统280可以将该受保护代码227用作网页214的受保护代码216。因此,如在图5a中示出的,在可选步骤506处,该供应商系统280可以从控制系统230请求受保护代码227,并且响应于该请求,该控制系统230可以向供应商系统280提供受保护代码227。上面已经参考图4讨论了控制系统220可以通过其来与保护系统220交互以获得受保护代码227的方法。如上面讨论的,该控制系统230可以决定将受保护代码227的哪个实例提供给供应商系统280。
替代地,可能以前已经由保护系统220向供应商系统280供应了受保护代码227的一个或多个实例,以使得供应商系统280可能已经存储受保护代码227的一个或多个实例(或可能具有对所述一个或多个实例的访问或可能已经获得了所述一个或多个实例)。类似地,在一些实施例中,供应商系统280可能够直接访问数据库229。因此,该供应商系统280可将供应商系统280具有对其访问的受保护代码227的这些实例中的一个用作网页214的受保护代码216。如上面讨论的,该供应商系统280可以与控制系统230通信以使得该控制系统230可以决定供应商系统280应该提供受保护代码227的哪个实例。
因此,该供应商系统214可以存储针对网页214的模板(包括例如html代码和/或ccs代码和/或不同于受保护代码216的代码215),并且在步骤504处,通过将受保护代码227作为针对网页214的受保护代码216而包括或合并到模板中来形成要被提供(或发送或传达)给客户端系统210的网页214(的具体版本)。
在受保护代码227是初始代码222的特定(唯一)受保护实例所处的实施例中,然后可以更新与受保护代码227的该特定实例相关联的元数据228,以存储或包括与受保护代码227的这个实例的供应有关的信息,诸如以下各项中的一个或多个:受保护代码227的供应的日期和/或时间;请求受保护代码227的实例的供应商系统280的细节(诸如名称或其他标识符、ip地址等等);要被提供受保护代码227的实例的客户端系统210的细节(诸如名称或其他标识符、ip地址、用户的身份等等);受保护代码227的特定实例的标识(例如id或版本号);等等。因此,该供应商系统280可以在数据库229自身中直接更新元数据228(如果它具有对数据库229的访问的话),或者可以将此信息供应给保护系统220(例如当请求受保护代码227时),以使得保护系统220可以将此信息作为元数据228的一部分存储在数据库229中。
在步骤508处,该客户端系统210(或客户端系统210的浏览器212)处理或执行网页214。如上面关于图3提到的,这包括客户端系统210形成一个或多个请求并将该一个或多个请求发送至控制系统230并且然后处理由客户端系统210从控制系统230接收的对应回复。上面已经关于图3讨论了这个的示例。
在步骤510处,该控制系统230处理从客户端系统210接收的请求(即归因于网页214的处理或执行而发送的请求)并且向客户端系统210发送对应的回复。上面已经关于图3讨论了这个的示例。
由控制系统230对从客户端系统210接收的请求的处理可以包括控制系统230与服务系统250交互,如由图5中的可选步骤512图示的。这在下面关于图6a更详细地描述。
图5b是图示根据本发明的一些实施例的操作系统200的另一示例方法550的流程图。图5b的方法500与图5a的方法500共同具有的步骤共享相同的参考数字并且因此应该不会在下面再次详细地被描述。
在步骤502处,该客户端系统210向供应商系统280发出对网页214(或网络应用程序214或应用程序214)的请求。
响应于该请求,在步骤552处,该供应商系统280向客户端系统210提供网页214的版本(或网络应用程序214的版本或应用程序214的版本)。所提供的版本不会包括受保护代码216,但是可以改为包含使得客户端系统210能够从保护系统220和/或从控制系统230请求或获得/访问受保护代码216的链路、地址(例如url)或信息。
在接收到网页214的版本之后,该客户端系统210可以在步骤554处使用上面提到的链路、地址或其他信息来向保护系统220和/或控制系统230发送对受保护代码216的请求。可以经由网络270来传达该请求。
响应于该请求,在步骤556处,保护系统220可以向客户端系统210提供受保护代码227。上面已经参考图4讨论了保护系统220可以通过其接收对受保护代码227的请求并响应于这样的请求提供受保护代码227的方法。如上面讨论的,该保护系统220可以与控制系统230通信以使得该控制系统230可以决定将受保护代码227的哪个实例提供给供应商系统280。替代地,该控制系统230可以向客户端系统210提供受保护代码227。该控制系统230可以从数据库229获得受保护代码227(如果控制系统230具有对数据库229的直接访问的话);替代地,该控制系统230可能从保护系统220请求受保护代码227。如上面讨论的,该控制系统230可以决定将受保护代码227的哪个实例提供给供应商系统280。可以经由网络270将受保护代码227传达给客户端系统210。
在受保护代码227是初始代码222的特定(唯一)受保护实例所处的实施例中,然后可以由保护系统220和/或由控制系统230来更新与受保护代码227的该特定实例相关联的元数据228,以存储或包括与受保护代码227的该实例的供应有关的信息,诸如以下各项中的一个或多个:受保护代码227的供应的日期和/或时间;要被向其提供受保护代码227的实例的客户端系统210的细节(诸如名称或其他标识符、ip地址、用户的身份等等)等等。在一些实施例中,该控制系统230和客户端系统210可以使用会话cookie(sessioncookie)以使得控制系统230可以标识客户端系统210当前正执行受保护代码227的哪个特定实例。
如上面针对图5a描述的设置,对方法550的处理然后可以以步骤508和510(以及可选地步骤512)来继续。
图6a是图示根据本发明的一些实施例可以由控制器应用程序232作为图3的步骤308的一部分来实施的示例方法600的流程图。该方法600可以包括控制系统230与服务系统250交互。
如上面讨论的,在步骤302处,该客户端系统210生成包括使得控制系统230能够实施验证和/或认证和/或其他功能的信息的请求。除了此信息之外,由客户端系统210生成的请求可以包括:
(a)标识客户端系统210希望从服务系统250(例如从与网页214相关联的网站)获得(或请求)的信息的数据;和/或
(b)客户端系统210希望向服务系统250提供的数据(例如以使得服务系统250能够基于该数据来执行后续处理)。
如上面讨论的,该步骤308可以包括控制系统230确定或获得受保护代码216的标识(特定实例)和/或执行一个或多个测试或检查。这在图6a中被图示为步骤602,并且将简短地参考图6b来更详细地描述。
在步骤602处,控制系统230可以确定可以或应该生成响应并且在控制系统230不必与服务系统250通信的情况下将其发送回到客户端系统210。例如:
-受保护代码216和/或代码215和/或网站214的验证或认证可能失败—例如,验证或认证的结果可能指示客户端系统210不充分地值得信任/安全和/或攻击者可能正在实施攻击。因此,该控制系统230可以被配置成使得如果此失败发生,则要发送回到客户端系统210的响应用来防止客户端系统210访问代码215和/或网页214的内容或执行由代码215和/或网页214提供的“正常”功能。这样的响应可以例如包括受保护代码216被布置成检测(在步骤312处)的标志(或其他数据)—该受保护代码216可以被配置成使得如果它检测到此标志,则受保护代码216停止提供“正常”功能;替代地,该响应可以例如包括受保护代码216和/或代码215和/或网页214要处理的数据,其中此数据导致被调用的受保护代码216和/或代码215和/或网页214的错误/异常功能或受保护代码216和/或代码215和/或网页214的终止(例如该数据可以是与根据预期格式格式化的数据相对的随机数据)。在这些情况中的任一个中,该控制系统230不需要与服务系统250通信。
-类似地,在步骤602处的处理可以确定浏览器212或客户端系统210的设置/配置不满足目标安全准则和或期望设置/配置。这可以被视为客户端系统210不充分地值得信任/安全和/或攻击者可能正在实施攻击的指示。因此,该控制系统230可以被配置成使得在此情况下要被发送回到客户端系统210的响应用来引起在客户端系统210处对这些设置/配置的调整,以便满足目标安全准则或期望的设置/配置。在此情况下,该控制系统230不需要与服务系统250通信。
-受保护代码216和/或代码215和/或网站214的验证或认证可能是成功的—例如,验证或认证的结果可指示客户端系统210充分值得信任/安全和/或还没有检测到攻击。该控制系统230可以被配置成使得在此情况下要被发送回到客户端系统210的响应用来确认来自客户端系统210的请求的接收。在此情况下,控制系统230可能不需要与服务系统250通信。
—将会认识到,可能存在在控制系统230不必与服务系统250通信的情况下可以生成要被发送回到客户端系统210的响应所处的其他场景。
在上面的情况下,其中归因于来自客户端系统210的请求的性质,可以或应该在控制系统230不必与服务系统250通信的情况下生成要发送回到客户端系统210的响应,然后控制系统230仍可向服务系统250发送信息,例如以报告控制系统230已经从客户端系统210接收到这样的请求的事实。
该控制器应用程序232然后可以相应地在步骤608处生成要被发送回到客户端系统210的响应。
然而,在步骤602处的处理的结果可以是控制系统230确定如果控制系统230与服务系统250交互(或与之通信),则可以仅生成响应并将该响应发送回到客户端系统210。在此情况下,该方法600包括步骤604以及可选地步骤606。在步骤604处,该控制系统230可以经由网络270向服务系统250传递或传达在步骤306处从客户端系统210接收的请求的(或与该请求有关的)数据(或者包含在该请求中的信息的至少一些,诸如上面提到的数据(a)和/或(b))。该控制器应用程序232然后可以生成相应地发送回到客户端系统210的响应。在一些实施例中,该服务系统250处理接收到的数据(例如在图5a和5b的步骤512处)并且将(基于该处理的)对应回复返回提供给控制系统230。因此,在步骤606处,该控制系统230可以从服务系统250接收回复。在这种情况下,该控制器应用程序232然后可以基于来自服务系统250的回复来生成要发送回到客户端系统210的响应。
例如:
-该受保护代码216和/或代码215和/或网站214的验证或认证可能是成功的—例如该验证或认证的结果可指示客户端系统210充分地值得信任/安全和/或还没有检测到攻击。从客户端210接收到的请求可以是或者可以包括从服务系统250对信息或数据的请求。因此,在步骤604处,该控制器应用程序将对信息的此请求转发至服务系统250,并且在步骤606处,该控制器应用程序232可以从服务系统250接收作为回复的所请求的信息(或另一响应,诸如指示所请求的信息不可用的响应)。该控制器应用程序232可以因此在步骤608处形成发送回到客户端系统210的响应,其中此响应包括或基于来自服务系统250的回复(例如该响应可以包括所请求的信息)。
-该受保护代码216和/或代码215和/或网站214的验证或认证可能是成功的—例如该验证或认证的结果可指示客户端系统210充分地值得信任/安全和/或还没有检测到攻击。从客户端210接收到的请求可以是或者可以包括需要向服务系统250发送的信息或数据(但是对于其而言不期望来自服务系统250的基于其对信息的处理的回复)。因此,在步骤604处,该控制器应用程序将此信息转发至服务系统250,并且在步骤608处形成返回至客户端系统210的指示已经将该信息发送给服务系统250的响应。
-该受保护代码216和/或代码215和/或网站214的验证或认证可能失败—例如该验证或认证的结果可指示客户端系统210不充分值得信任/安全和/或攻击者可能正在实施攻击。在一些实施例中,该控制器应用程序604向服务系统250提供数据来指示此失败的性质。该服务系统250然后可响应于该失败来执行某一处理(例如锁定与客户端系统210相关联的客户的账户)以及向服务系统250返回提供它已经采取的动作或处理和/或服务系统250希望客户端系统210来承担的任何动作的指示。因此,在步骤606处,该控制器应用程序232可以从服务系统250接收作为回复的此指示。该控制器应用程序232因此可以在步骤608处形成返回至客户端系统210的响应(诸如包括此指示的响应)。
-将会认识到,可存在在其中可以生成要被发送回到客户端系统210的响应的其他场景,其中首先已存在的是控制系统230和服务系统250之间的通信或交互。
这样,该控制系统230可有效地充当客户端系统210和服务系统250之间的代理。该客户端系统210可相信它直接与服务系统250通信,但是可以将该通信改向至控制系统230。因此,该控制系统230有效地提供客户端系统210和服务系统250之间的动态保护/安全检查和强制执行。如果客户端系统210具有足够的安全和配置并且不发起攻击(或至少没有检测到),则客户端系统210和服务系统250可以彼此无缝交互(以使得客户端系统210可以访问由服务系统250提供的服务)。然而,如果客户端系统210不具有足够的安全和配置并且发起攻击(或至少检测到),则控制系统230可以采取措施(如上面阐述的)来解决这些安全/配置/攻击问题。
归因于客户端系统210和控制系统230之间的安全通信的性质—对于由客户端系统210发送的请求和由控制系统230发送的响应两者—(如由受保护代码216和控制器应用程序232提供的),不存在对客户端系统210利用(或至少依赖于)通常cookies或否则将通常用来在客户端系统210和控制系统230之间建立安全会话的其他类型的api密钥的需要。这是因为客户端系统210和控制系统230之间的通信(如由保护代码216和控制器应用程序232提供的)是安全的,并且控制系统230能够在客户端系统210处确认客户端系统210的身份以及网页214(或代码215或受保护代码216)的真实性/完整性两者。作为代替,这样的cookies或其他类型的api密钥可以被用于控制系统230和服务系统250之间的通信,但是这些系统在攻击者(其仅具有对客户端系统210的访问)的控制之外。因此,改进了安全性。
该控制器应用程序232可以被布置成从从客户端系统210接收(在步骤306处)的请求提取数据,并且将该数据(或作为数据自身或作为数据的象征性版本)存储为存储库260内的数据262。作为与服务系统250交互的一部分(例如图5a和5b的步骤510和512或者图6a的步骤604),不是向服务系统250提供从客户端系统210接收的作为该请求的一部分的实际数据,而是该控制器应用程序232可以向服务系统250提供服务系统250可以在哪里和/或如何从存储库260获得或访问对应的数据262的指示。存储库260的使用可以以此方式来帮助增加安全性。另外,该控制器应用程序232可以以加密或变换的方式将数据(或象征性数据)存储在存储库262中—该服务系统250然后可以被布置成在不必首先对加密数据进行解密或撤销变换的情况下潜在地操作、使用(否则使用/访问)加密或已变换数据。该控制器应用程序232和服务系统250可以共享一个或多个密码密钥或其他密码信息,以使得这个发生。再次地,这帮助改进整个安全性。
如果在步骤602处该控制器应用程序232标识还没有经过的检查/测试中的一个或多个(例如受保护的代码216和/或代码215和/或网页214的验证或认证已失败),则该控制器应用程序232可以被布置成改变受保护代码216的实例至该特定客户端系统210的供应,例如通过执行以下各项中的一个或多个:(a)增加客户端系统210接收受保护代码216的不同实例所处的频率(例如降低上面提到的参数w),以由此使得客户端系统210的用户难以尝试学习受保护代码216的行为并发起成功攻击;(b)确保总是向该客户端系统210提供受保护代码216的相同实例(即有效地将上面提到的参数w设置成无穷大),以由此限制任何攻击对仅仅该一个特定实例的影响;(c)确保提供给该客户端系统210的受保护代码216的后续实例具有使得受保护代码216能够收集关于客户端系统210和/或通过客户端系统210的用户的活动的另外信息以由此收集与可能的攻击有关的证据的附加功能;(d)防止受保护的代码216的实例至该客户端系统216的任何进一步供应。
图6b是图示根据本发明的一些实施例的可以在一些实施例中在图3的步骤308处(或在图6a的步骤602处)实施的示例处理650的流程图。
在步骤652处,该控制器应用程序232基于在步骤306处由控制器应用程序232接收到的请求中的受保护代码216所提供的数据来获得(或导出)受保护代码216(或代码215或网页214)的标识符。
在步骤654处,该控制器应用程序232可以使用此标识符来获得与受保护代码216的(特定实例)相关联的元数据228。例如,该数据库229可以是根据标识符编索引的,以使得控制器应用程序232可以使用在步骤652处获得的标识符来对数据库229编索引并访问相关联的元数据228。
在步骤656处,该控制器应用程序232可以使用在步骤654处访问的元数据228中的至少一些连同在步骤306处由控制器应用程序232接收到的请求中的受保护代码216所提供的数据,以便执行完整性验证。例如,在步骤306处由控制器应用程序232接收到的请求中的受保护代码216所提供的数据的至少一部分可以包括在客户端系统210处从(或基于)当前受保护代码216(或当前代码215或当前网页214)导出的一个或多个值(例如上面提到的修改数据),并且在步骤654处获得的元数据228可以包括一个或多个预期完整性值—该控制器应用程序232因此可以将在请求中接收到的一个或多个值与一个或多个预期完整性值相比较—如果在请求中接收到的一个或多个值与一个或多个预期完整性值相匹配(或相等),则该控制器应用程序232可以确定受保护代码216(或代码215或网页214)还没有被篡改;否则,该控制器应用程序232可以确定正(或已经)执行攻击并且受保护代码216(或代码215或网页214)已经被篡改。将会认识到,该控制器应用程序232可以使用在请求中接收的一个或多个值和预期完整性值来执行其他处理,以便实施完整性验证。
因此,该步骤652、654和656的结果可以是或者(a)控制器应用程序232确切地知道(有信心)它与哪个受保护代码216(的实例)通信以及受保护代码216(或代码215或网页214)(的实例)还没有被篡改或修改或者(b)控制器应用程序232可能不能确切地查明(有信心)它与哪个受保护代码216(的实例)通信或者(c)控制器应用程序232确切地知道(有信心)它与哪个受保护代码216(的实例)通信以及受保护代码216(或代码215或网页214)(的实例)已经被篡改或修改。如果(b)或(c)发生,则控制器应用程序232可以采取适当的措施(如上面已经讨论的诸如防止网页214执行其正常/预期功能等等);如果(a)发生,则控制器应用程序232可以确定网页214以足够安全的方式合理地执行(经受在步骤658处的任何进一步处理的结果)。因为以被设计成抵抗白盒攻击的受保护方式来实施受保护代码216,所以控制器应用程序232可以对步骤652和656的结果具有信心,并且此外可以对控制器应用程序232希望受保护代码216来实施的任何措施具有信心以便强制执行实际上将进行的安全政策。
在步骤658处,该控制器应用程序232可以实施一个或多个另外的测试或检查或其他功能(诸如检查受保护代码216是否在客户端系统210处的调试环境中执行),如上面已经讨论的。
示例部署场景。
下面阐述的是针对系统200的一些示例部署场景。当然,将会认识到,针对系统200的许多其他部署场景和系统200的应用程序是可能的并且下面给出的示例仅仅为了图示的目的。
财务交易系统1。
该服务系统250可以是与供应商系统280相同的实体或供应商系统280的子系统。该供应商系统280可以托管用于银行(或某个其他财务机构)的网站。客户端系统210从供应商系统280获得的网页214因此可以是使得客户端系统210的操作员能够与银行账户(或其他财务账户或仪器)交互的网页214。替代地,该客户端系统210可以运行银行已经使得对其客户可用的应用程序214(或网络应用程序214)。
因此,该客户端系统210可以被布置成经由控制系统230与银行的服务系统250交互。因此,受保护代码216可以被布置成与控制器应用程序232一起工作(如上面参考图3讨论的)以便执行以下各项中的一个或多个:(1)检查尚未修改受保护代码216和/或代码215和/或网页214,以及如果检测到这样的修改,则防止客户端系统210与服务系统250交互和/或向服务系统250通知安全的可能违反;(2)检查没有在客户端系统210处的调试器内执行受保护代码216和/或代码215并且强制执行等等。
财务交易系统2。
该服务系统250可以与供应商系统280不同。该供应商系统280可以托管用于在线商家(即零售商)的网站。该服务系统250可以提供支付/财务服务,以使得商家的客户能够为由商家提供的货物或服务向商家进行支付,或以其他方式与商家财务交互。
因此,客户端系统210从供应商系统280获得的网页214可以是使得客户端系统210的操作员能够输入信用卡细节(或其他支付信息)以便对从商家购买的货物或服务进行支付的网页214。
因此,该受保护代码216可以被布置成与控制器应用程序232一起工作(如上面参考图3讨论的)以便执行以下各项中的一个或多个:(1)检查还没有修改受保护代码216和/或代码215和/或网页214,以及如果检测到这样的修改,则防止客户端系统210与服务系统250交互和/或向服务系统250(和/或供应商系统280)通知安全的可能违反;(2)检查没有在客户端系统210处的调试器内执行受保护代码216和/或代码215并且强制执行;(3)检查还没有禁用通过网页214的数据字段(诸如卡验证值(或cvv号码)或到期日期)的验证,并且如果它已经被禁用,则重新启用它;等等。
内容播放器系统。
在此示例中,该服务系统250可以是与供应商系统280相同的实体或供应商系统280的子系统,或者可以与供应商系统280不同。该服务系统250可以采用内容分发网络(cdn)(或cdn的至少一个或多个服务器)的形式。cdn是公知的并且因此不应该在这里更详细地被描述。该内容可以包括例如音频内容、视频内容和图像内容中的一个或多个。该供应商系统280可以托管用于从cdn访问数字内容的网站,以使得客户端系统210从供应商系统280获得的网页214可以包括实施内容/媒体播放器的至少一部分的受保护代码216。替代地,该客户端系统210可以操作供应商系统280已使得可用的内容/媒体播放器应用程序214(或网络应用程序214)。
因此,该受保护代码216可以被布置成与控制器应用程序232一起工作(如上面参考图3讨论的)以便执行以下各项中的一个或多个:(1)检查还没有修改受保护代码216和/或代码215和/或网页214,以及如果检测到这样的修改,则防止网页214播放另外的内容;(2)检查没有在客户端系统210处的调试器内执行受保护代码216和/或代码215并且强制执行等等。
图7a是图示根据本发明的一些实施例的其中受保护代码216可以与控制器应用程序232一起工作(以在图3的方法300中阐述的方式)以使得例如实施上面提到的完整性/修改检查和强制执行的方法700的流程图。图7b示意性地图示根据本发明的一些实施例的可以作为受保护代码216的一部分来实施(以如上面讨论的安全方式)的模块中的一些以便实现此完整性/修改检查和强制执行。
在步骤702处,该受保护代码216接收加密内容e(c,k),其中c是内容并且k是用于对该内容解密的密钥。(在这里,项e(x,y)应该被用来表示使用解密密钥k可解密的数据x的加密形式)。
在步骤704处,该受保护代码216的修改模块750将可逆修改函数m应用于加密内容e(c,k)。该修改函数m被播种或加密钥或以其它方式取决于数据d。因此,该修改函数m自己可能是加密操作,但是将会认识到,可以作为代替使用更简单的操作(诸如使加密内容e(c,k)与数据d(或基于数据d的值)异或)。因此,步骤704的输出是已修改的加密内容m(e(c,k),d)。
先前已经将该数据d从控制器应用程序232提供至受保护代码216(即数据d可以是动态值/数据)。替代地,该数据d可以是静态值。替代地,该数据d可以是受保护代码216被布置成生成(例如作为随机数/数据)并且提供给控制器应用程序232(例如作为在步骤706处的请求的一部分)的值。该受保护代码216被布置成存储数据d(或者在受保护代码216自身内或者作为客户端系统210处的存储器中的临时变量),即使以使用上面讨论的软件保护技术中的一个或多个的安全方式。
在步骤706处,该受保护代码216将请求发送至控制器应用程序232,其中该请求包括使得控制器应用程序232能够执行其完整性处理和/或认证处理和/或其他检查/测试的数据。这对应于图3的步骤302和304。
在步骤708处,该控制器应用程序232执行其完整性处理和/或认证处理和/或其他检查/测试。
在步骤710处,该控制器应用程序232基于在步骤708处的处理结果来确定是否准许客户端系统210查看/访问内容c。如果控制器应用程序232确定准许客户端系统210查看/访问内容c,则在步骤712处,控制器应用程序232生成包括数据d的响应。如果在另一方面,该控制器应用程序232确定不准许客户端系统210查看/访问内容c,则在步骤714处,控制器应用程序232生成包括数据g的响应,在这种情况下数据g不等于数据d。该数据g可以例如是由控制器应用程序232随机生成的。
该响应可以另外包含下次执行步骤704时要由受保护代码216使用的针对数据值d的下一/新的值。针对d的此新值可以例如是由控制器应用程序232随机生成的。
在步骤716处,该控制器应用程序232向客户端系统210发送响应(包含数据d或数据g)。
因此,在一起的步骤708-716对应于图3的在一起的步骤306-310。
在步骤718处,该受保护代码216的逆修改模块752将修改函数m的逆m-1应用于在步骤704处生成的已修改加密内容m(e(c,k),d)。该逆m-1被播种或加密钥或以其它方式取决于作为来自控制器应用程序232的响应的一部分而接收的数据(其是数据d或数据g)。因此:(a)如果该控制器应用程序232已确定准许客户端系统210查看/访问内容c,则步骤718的输出是
在步骤720处,该受保护代码216的解密模块754使用密钥k对步骤718的输出执行解密操作d(对应于加密操作e)。因此:(a)如果该控制器应用程序232已确定准许客户端系统210查看/访问内容c,则步骤720的输出是
在上面,解密密钥k至受保护代码216的供应可以经由用于向媒体播放器提供解密密钥的任何标准条件访问或数字版权管理过程。
尽管将有可能在步骤702和704之间移动要在步骤720处实施的解密操作d(以使得对解密内容c实施在步骤704处应用的修改m),但是将会认识到在解密操作d之前实施修改m和逆修改m-1会帮助确保当控制器应用程序232确定不准许客户端系统210查看/访问内容c时,在步骤718处对于逆修改m-1使用“不正确的”数据g而不是数据d意味着解密操作d的输出将有效地似乎是是随机数据(并且因此由客户端系统210或其操作员不可用)。
图7b图示可以用于代码215和/或受保护代码216的一部分的附加模块。例如,该受保护代码216可以包括用于与控制器应用程序232交互以使得控制器应用程序232能够执行其完整性处理和/或认证处理和/或其他检查/测试(例如实施图3的步骤302和304)的一个或多个模块770。该代码215和/或受保护代码216可以包括一个或多个另外的模块以便提供媒体播放器(在概念上由短划线780来图示)。例如,该代码215可以包括用来执行所需的任何数据解压缩的数据解压缩模块760(在解密模块754的输出上)和用来提供视觉和/或音频输出的渲染模块762(使用数据解压缩模块760的输出和/或解密模块754的输出)。
图8是图示根据本发明的一些实施例的另一方法800的流程图,其中受保护代码216可以与控制器应用程序232一起工作(以在图3的方法300中阐述的方式)以便例如实施上面提到的完整性/修改检查和强制执行。该方法800与方法700相同,除了已经用步骤802来替换方法700的步骤702和704之外。在步骤802处,受保护代码216接收已经修改的加密内容
因此,客户端系统210接收已修改的内容
图7c图示用于实施内容播放器的替代实施例。该受保护代码216可以被布置成实施上面提到的解密模块754、水印模块790和上面提到的附加模块770。该(多个)附加模块770与控制器应用程序232交互以使得控制器应用程序232能够执行其完整性处理和/或认证处理和/或其他检查/测试(例如实施图3的步骤302和304)。如果接收到的从控制器应用程序232返回的响应使得客户端系统210能够访问内容c,则由受保护代码执行的处理(在步骤314处)可以包括:(a)解密模块754对接收到的加密内容e(c,k)解密和(b)水印模块790将水印应用于解密内容。如上面已经描述的,水印是公知的。然后可以将经水印的内容传递至数据解压缩模块769以用于其执行所需的任何数据解压缩(在水印模块790的输出上),其中渲染模块762然后提供视觉和/或音频输出(使用数据解压缩模块760的输出和/或水印模块790的输出)。水印模块790可需要对解压缩内容操作是可能的,在该情况下该数据解压缩模块760可以形成受保护代码216的一部分—然后将从解密模块754输出的解密内容传递至数据解压缩模块760以用于解压缩,并且然后将由水印模块790来对被数据解压缩模块760输出的解压缩内容进行水印。
如在图7d中图示的,当然图7b和7c的实施例可以组合。
家庭网络或lan。
该系统200的至少一些可以形成家庭网络或局域网的一部分或者被实施为(或使用)家庭网络或局域网。例如,家庭或企业可以包括一个或多个客户端设备210和控制系统230,其经由局域网(网络270的一部分)彼此通信或者其形成家庭网络的一部分(包括网络270的至少一部分)。因此,该控制器应用程序232可以是在控制系统230上执行的保护/防护应用程序。该服务系统250和/或供应商系统280还可以连接至局域网或形成家庭网络的一部分。这样,家庭网络或局域网上的(多个)设备210可以在不必具有至远程服务器(即家庭网络外部或不在局域网上的服务器)的连接的情况下经由该相同网络上的控制系统230来使它们的安全和/或功能受控(或保持或监视)。如上面关于图5a和5b描述的,存在其中客户端设备210可以(例如从供应商系统280或从控制系统230)获得网页214、网络应用程序214或应用程序214的各种方式。在此示例的本实施例中,网页214、网络应用程序214或应用程序214的源优选地也是家庭网络或局域网的一部分(以使得家庭或企业是自立的)。
这类似地在其他部署场景中适用。例如,可能存在位于交通工具(例如汽车、机动卡车、机动车、火车、飞机等等)内或上的一个或多个客户端设备210,其能够经由建立在该交通工具上的局域网来通信。该交通工具还可以包括控制系统230,如上面阐述的,其可以控制(或保持或监视)那些客户端设备210的安全性和/或功能。这样,可以在没有至远程服务器的资源的情况下在交通工具内建立安全系统。如上文,该交通工具还可以包括供应商系统280和/或服务系统250。
系统配置/设置。
图9是图示根据本发明的一些实施例的用于最初配置或设置系统200的方法900的流程图。
在步骤902处,指定/决定用于受保护代码216的底层功能。这可以至少部分由供应商系统280的(多个)操作员和/或服务系统250的(多个)操作员来实施。这可以包括决定要实施什么种类的完整性检查、认证、安全性检查、配置检查等等以及基于完整性检查、认证、安全性检查、配置检查等等的结果要实施什么响应。这可以被视为建立安全性/配置策略。
基于安全性/配置策略,可以在步骤904处创建该初始代码222。这可以包括实施所要求的一个或多个模块以便使得网页214能够与控制器应用程序232交互(如上面参考图3描述的)。对于图7a和7b中图示的示例,该安全性/配置策略可以指定如果网页214的完整性检查失败,则应该拒绝对内容的访问—在这种情况下,步骤904可以包括决定初始代码222应该包括修改模块750、逆修改模块752、解密模块754和(多个)其他模块770中的一个或多个(按要求来与控制器应用程序232交互以实现策略中指定的完整性检查)。另外或替代地,这可以包括指定需要作为受保护代码227的一部分被存储的秘密数据(例如密码密钥)的一个或多个项。实质上,该步骤904可以包括决定需要将什么功能(模块/代码)和/或数据包括在初始代码222中以(a)能够与控制器应用程序232交互以便使得控制器应用程序232能够实施其完整性检查、认证、安全性检查、配置检查等等中的任一个,以及(b)能够强制执行或实施作为完整性检查、认证、安全性检查、配置检查等等的结果的由控制器应用程序232作出的决定。
在步骤906处,该保护系统可以生成受保护代码227,如上面参考图4描述的。
在步骤908处,该控制系统230的控制器应用程序232被配置成实施安全性/配置策略。如上面提到的,该策略响应于完整性检查、认证、安全性检查、配置检查等等的各种可能结果来指定期望的反应/处理。因此,该控制系统230被配置/编程为实施这些期望反应—例如,通过将控制器应用程序232的逻辑配置成在步骤308处生成适当的响应并且在必要时与服务系统250适当地交互。
将会认识到,该安全性/配置策略可以为客户端系统210的不同用户指定不同的响应对策(例如一些用户可能是可信的/付费的用户并且可能具有对应的响应对策,而其他用户可能是较不可信的并且可因此具有不同的对应响应对策)。因此,该安全性/配置策略可以指定控制器应用程序232应该被配置成基于例如在图6b的步骤652处获得的标识符来标识并使用特定响应对策。
示例技术。
在下面被描述为一些示例技术,通过所述技术受保护代码216和控制器应用程序232可以一起实施上面提到的完整性验证、认证/身份检查和其他测试/检查。
完整性验证。
对于由保护应用程序232生成的受保护代码227(的实例),该元数据生成器226可以被布置成生成代码部分标识符的一个或多个集合si(对于某一整数n,i=1,…,n)。每个集合si指定或包括代码部分标识符pi,j(i=1,…,n;j=1,…,di)的对应数目di(其中di是正整数)。每个代码部分标识符pi,j(i=1,…,n;j=1,…,di)标识或指定受保护代码227内的代码和/或数据的对应部分ai,j(或量)(在受保护代码227内其可能是或可能不是邻接的)。例如,每个部分标识符pi,j(i=1,…,n;j=1,…,di)可以由受保护代码227内的对应部分ai,j的开始位置或地址(例如从受保护代码227的开始或从受保护代码227内的某一其他点的偏移)和对应部分ai,j的长度来指定(或者可以包括或者被限定为对应部分ai,j的开始位置或地址和对应部分ai,j的长度)。可以由元数据生成器226来随机选择部分ai,j和/或它们的标识符pi,j(例如开始位置和长度)(例如随机开始位置和随机长度,尽管可以将最小长度强加于长度的选择)。另外或替代地,该元数据生成器226可以从(多个)保护器模块224接收输入以帮助生成或标识标识符pi,j(i=1,…,n;j=1,…,di)中的至少一些,诸如以确保每个集合si(i=1,…,n)中的标识符pi,j中的至少一个指定至少使受保护代码227的一个或多个目标(例如重要)部分(例如其完整性通常将很好来检查的部分,因为它们可包含敏感信息,或者它们可包含用来在受保护代码227的不同多样化实例之间进行区分的信息,或者它们可包含当发起攻击时攻击者要修改的可能候选部分)重叠的部分ai,j。对应于每个集合si的代码部分ai,j优选地与对于其他集合si的代码部分ai,j不同。对于受保护代码277的每个实例的代码部分标识符si的集合的收集优选地不同于对于该受保护代码277的其他实例的代码部分标识符si的集合的收集。
n的值可以是预定的。n的值可以从一个受保护代码227(的实例)到另一受保护代码227(的实例)而变化。优选地,n的值足够大(即生成足够的集合si(i=1,…,n)),以使得完整性验证可以继续执行,只要在客户端系统210处使用(或预期要使用)受保护代码227。对于i=1,…,n,di的值可以是预定的;替代地,di的值可以在各集合si之间改变(例如di可以是随机生成的,尽管可以强加对于di的预定最小值)。
该元数据生成器226可以包括校验值生成器模块或函数。该校验值生成器模块或函数可以被布置成接收代码部分标识符的集合si并且基于由该集合si的标识符
然后可以将(多个)保护器模块224配置成包括(以安全方式)作为受保护代码227的一部分的校验值生成器模块或函数—这可以例如被实施为图7b中示出的模块770中的一个。该校验值生成器模块或函数被配置成使用上面提到的对特别受保护代码227(的实例)所特定的秘密信息(如果有的话)。因此,该受保护代码227具有用来接收代码部分标识符的集合si并且基于在该受保护代码227内(即在自身内)的集合si所指定的部分ai,j生成校验值的功能。
图10a示意性地图示根据本发明的一些实施例的为受保护代码227生成的上面提到的元数据228的示例。如所示出的,该元数据228可以包括针对受保护代码227的特定实例的标识符(id)。该元数据228包括代码部分标识符的集合si以及对应的校验值vi。当然,该元数据228也可以包括其他数据1000。尽管图10a仅图示代码部分ai,j(j=1,…,di)并且不是其他代码部分ai,j(i=2,…,n;j=1,…,di),但是这仅仅是为了易于说明。
在一些实施例中,代码部分ai,j的一些或全部包括以下各项的代码和/或数据:(a)网页214(例如网页214的dom,诸如dom的节点和/或特性)和/或(b)作为对受保护代码216/227的代码和/或数据的代替或除此之外的代码215(不同于受保护代码216/227)。在图10b中示意性地图示这个,其中(i)代码部分a1,2包括来自网页214的代码/数据(不同于来自代码215的代码/数据);(ii)代码部分a1,1包括来自代码215的代码/数据(不同于来自受保护代码216/227的代码/数据);以及(iii)代码部分a1,3包括来自代码215(不同于受保护代码216/227)的代码/数据以及来自受保护代码216/227的代码/数据两者。
因此,在本发明的一些实施例中,可以如下来执行完整性验证:
·该受保护代码216可以使用其校验值生成器模块或函数来基于由代码部分标识符的特定集合si指定的代码部分ai,j生成校验值
·在图6b的步骤656处,该控制器应用程序232可以从对应于受保护代码216(例如如在步骤652和654处标识的)的元数据228获得与代码部分标识符si的此特定集合si相对应的正确/预期校验值vi。如果接收到的校验值
该受保护代码216最初可以被配置成使用代码部分标识符的特定集合,诸如集合s1。因此,在受保护代码216向控制器应用程序232首次发送请求时,该控制器应用程序232知道本应该使用代码部分标识符的哪个集合(例如在元数据228中为受保护代码216的此特定实例指定/列出的第一个)。当该控制器应用程序232生成要被发送回到受保护代码216的响应时,该控制器应用程序232可以标识要被使用的下一代码部分标识符的集合并且可以将代码部分标识符的此集合包括在响应中—这样,可以动态地向受保护代码216通知对于进行中的完整性验证它需要使用哪个代码部分标识符。该控制器应用程序232可以存储作为元数据216的一部分的其预期受保护代码216要使用的代码部分标识符的下一集合的索引/标识符。替代地,代替不得不将这样的“状态”信息存储在元数据228中,控制器应用程序232可以在使用用于完整性验证的代码部分标识符的集合si之后从元数据227删除该代码部分标识符集合si(以及对应的校验值vi)—因此,该控制器应用程序232可以被布置成仅使用元数据228中的代码部分标识符的当前列表中的代码部分标识符的第一集合si。
在用户会话期间,在客户端系统210处的受保护代码216以及控制系统230处的控制器应用程序232之间可以存在许多完整性验证交互。每次这样的交互时,该控制器应用程序232可以通过使用元数据228来协调并管理校验值与受保护代码216的动态性质、随机性和唯一性以便保持网页214(或代码215和/或受保护代码216)的完整性。由控制器应用程序232以这种方式进行的这样的控制使得攻击者针对网页214和/或受保护代码216/使用网页214和/或受保护代码216成功地发起攻击显著地更加具有挑战性。
将会认识到,可以使用用于执行完整性验证的其他方法。
使基于代码和/或数据的完整性验证不仅仅从受保护代码216得到而且潜在地从其他代码215和/或网页214得到意味着完整性验证的范围扩展到包括检查受保护代码216正作为代码215的预期量的一部分和/或在预期网页214内使用。例如,在上面的章节3.3中的内容播放器示例的情况下,如果完整性验证基于网页214自身的代码和/或数据(即不仅仅基于代码215),则标识是否已经将受保护代码216(或内容播放器)转移/拷贝至另一(未授权)网页214是可能的—如果控制器应用程序232检测到这个,则该控制器应用程序232将能够使内容播放器停止播放内容(如上面讨论的)。
标识。
如上面提到的,该保护应用程序232可以被布置成基于相同的初始代码222来生成多个不同受保护实例227。这可以包括将对具体实例227来说唯一的标识符明确地嵌入该实例内(使用用于安全地存储/使用受保护代码内的数据的上面提到的方法中的任一个)。另外或替代地,这可以包括将软件保护技术应用到初始代码222,但是基于不同的种子或密码密钥,以便产生不同的不同地保护的实例—在这种情况下,受保护代码227的实例可以被配置成从为该实例生成的特定代码/数据导出对该实例来说唯一的值。
当向客户端系统210提供受保护代码227的实例(要被用作作为网页214的一部分的受保护代码216)时,可以将与受保护代码227的该实例的供应有关的细节存储为与该实例相关联的元数据228的一部分,诸如以下各项中的一个或多个:受保护代码227的供应的日期和/或时间;请求受保护代码227的实例的供应商系统280的细节(诸如名称、ip地址等等);要被提供受保护代码227的实例的客户端系统210的细节(诸如名称或其他标识符、ip地址、用户的身份等等);等等。在一些实施例中,该控制系统230和客户端系统210可以使用会话cookie以使得控制系统230可以标识客户端系统210当前正执行受保护代码227的哪个特定实例。
由受保护代码216在步骤302处生成的请求可以包括特定实例的标识符(或者控制器应用程序232可以从其导出特定实例的标识符的数据)。该请求还可以包括关于客户端系统210的其他细节,诸如以下各项中的一个或多个:客户端系统210的名称、ip地址、用户的身份等等。因此,该控制器应用程序232可以在步骤308处执行以下各项:
·从接收到的请求获得(或导出)标识符(图6b的步骤652)。
·访问或获得与由此标识符标识的受保护代码216的实例相对应的元数据228(图6b的步骤654)。
·在图6b的步骤658处执行的测试/检查中的一个可以是用来确定如在请求中接收到的关于客户端系统210的细节是否与针对受保护代码216的实例存储在元数据228中的关于客户端系统210的细节匹配的身份检查。例如,该控制器应用程序232可以检查在请求中提供的名称、ip地址、用户名称等等中的一个或多个是否与存储在元数据228中的预期名称、ip地址、用户名称不同。如果存在差异,则此身份检查可能失败并且控制器应用程序232可以采取适当的措施;如果不存在差异(或者不是显著差异),则此身份检查可以通过。由控制器应用程序232强制执行的控制以这种方式帮助防止代码215和/或网页214的未授权分配。
将会认识到的是,可以使用用于基于在客户端系统210处运行的受保护代码216的身份来获得并且执行测试/检查的其他的方法,诸如使用单个登录(sign-on)协议(参见例如https://en.wikipedia.org/wiki/single_sign-on,通过参考将其整个公开内容合并于此)和/或使用ssl证书。
调试器检测。
该代码215和/或受保护代码216将固有地具有将要预期执行的函数/程序调用的一个或多个序列(假设还没有修改代码215和/或受保护代码216)和/或函数/程序或函数/程序的序列的调用或执行的预期计时(假设还没有修改代码215和/或受保护代码216)。当受保护代码216在步骤302处用来生成请求并将其发送至控制器应用程序232时,可以在一个或多个预期阶段发生这样的序列和/或计时。例如,如果因为客户端系统210的用户已以特定方式与网页214交互(例如已点击显示的网页214上的按钮或其他控制)而使受保护代码216生成请求并将其发送至控制器应用程序232,则可以存在如上面提到的序列和/或计时,如果用户已以合理的预期方式已与网页214交互,则将预期该序列和/或计时,如与达到该阶段或执行与比如调试器的该交互相对。
因此,该元数据生成器226可以被布置成查明关于预期将要执行的函数/程序调用的一个或多个序列的数据—例如,如果函数/程序的该序列以期望的方式调用以达到特定的功能阶段,则将预期调用堆栈看起来像什么样子。另外或替代地,该元数据生成器226可以被布置成查明关于函数/程序或函数/程序的序列的执行的计时的数据,诸如将预期在已经调用第一函数之后多久来调用第二函数。该元数据生成器226可以将这样的已查明数据存储为与受保护代码227(的实例)相关联的元数据228的一部分。
因此,该受保护代码227可以被布置成生成包括与函数/程序调用的序列有关的数据(例如关于在客户端系统210处的当前调用堆栈的数据)和/或与通过客户端系统210的某些函数/程序或函数/程序的某些序列的调用或执行的当前计时有关的数据的请求(在步骤302处)。在图6b的步骤658处执行的测试/检查中的一个可以是用来确定在请求中接收到的函数调用和/或计时数据是否与针对受保护代码216的实例存储在元数据228中的预期函数调用和/或计时数据相匹配的反调试检查。如果存在差异,则此反调试检查可能失败(因为这些差异可能指示攻击者使用调试器来修改通过代码215的控制流和/或因为使用调试器执行代码215而减慢或加速)并且控制器应用程序232可采取如上面讨论的适当措施;如果不存在差异(或者没有显著差异),则此反调试检查可以通过。通过控制器应用程序232以这种方式强制执行的控制有助于阻止攻击者经由调试器发起攻击。
将会认识到,可以使用用于获得指示调试器的使用的数据和基于这样的数据来执行反调试测试的其他方法。例如,由控制器应用程序232在步骤308处生成的响应可以包括随机数(或随机值)以使得控制器应用程序232可以与受保护代码216共享/初始化此秘密值;替代地,由受保护代码在步骤302处生成的请求可以包括随机数(或随机值)以使得受保护代码216可以与控制器应用程序232共享/初始化此秘密值。该控制器应用程序232可以将此共享值作为针对受保护代码216的特定实例的元数据228的一部分存储在客户端系统210处。该控制器应用程序232和受保护代码216可以被布置成定期修改/更新此共享值的它们自己的版本(例如对于某个预定值n,每n秒钟使其递增1)。由受保护代码216在步骤302处生成的后续请求可以包括其对此更新值的版本,并且在步骤308处,该控制器应用程序232可以将控制器应用程序232自己已经生成的更新值(即其自己的本地值)与在请求中接收的更新值进行比较—如果它们不相等(或相差多于预定阈值,以便迎合通信延迟、漂移等等),则该控制器应用程序232可以推断利用调试器来执行代码215和/或受保护代码216并且如上面讨论的采取适当措施。
观看标识。
如上面提到的,在步骤302处由受保护代码216生成的请求可以包括观看数据,其指示网页214的数据(例如如由网页214的视觉表示来呈现的)是(或者是否是)从视觉表示拷贝的还是从网页214内拷贝的。这可以例如通过受保护代码216监视网页214的dom以用于关于网页214的内容的侦听器来实现—“web侦听器”是公知的并且因此不应该在这里更详细地描述。该受保护代码216可以被配置有一个或多个预期或授权侦听器的指示/身份。如果受保护代码216标识非预期或未授权侦听器。则受保护代码216可以被配置成推断这样的拷贝正在发生。另外或替代地,受保护代码216可以被配置成针对克隆形式来检查网页214的dom—如果受保护代码216检测到克隆形式,则受保护代码216可以被配置成推断这样的拷贝正在发生。
如果该控制器应用程序232根据接收到的请求中的观看数据确定(例如如由网页214的视觉表示来呈现的)网页214的数据是从视觉表示拷贝的或从网页214内拷贝的,则该控制器应用程序232可以被配置成在步骤308处生成包括对应指令(或标志或指示符或其他数据)的响应。因此,该受保护代码216可以被布置成在步骤314处标识此指令在步骤312处接收到的响应中的存在,并且响应于在响应中检测到这样的指令而执行一个或多个对策。这样的对策可以包括使用或激起浏览器212的一个或多个安全性特征来实施浏览器的用户接口的安全性,例如以锁定形式(使用例如公知的iframe方法或w3cironframe方法)。可以在例如https://dvcs.w3.org/hg/user-interface-safety/raw-file/tip/user-interface-safety.html找到更多细节,通过引用将其整个公开内容合并于此。
验证强制执行。
如上面提到的,在步骤302处由受保护代码216生成的请求可以包括验证检查数据,其指示所显示的网页214的数据字段的验证在浏览器212或网页214内被(或是否被)关闭或以某种方式禁用。这可以例如通过使用如在上面的章节5.1中阐述的完整性验证来实现—特别地,在代码部分标识符的集合si(i=1,…,n)中,这些代码部分标识符pi,j(i=1,…,n;j=1,…,di)中的一个或多个可以标识受保护代码216内的代码和/或数据的对应部分ai,j(或量),其中代码的该部分ai,j提供用于数据字段验证的功能中的一些或全部。
如果该控制器应用程序232根据接收到的请求中的验证检查数据确定所显示的网页214的数据字段的验证在浏览器212或网页214内被关闭或以某种方式禁用,则该控制器应用程序232可以被配置成在步骤308处生成包括对应指令(或标志或指示符或其他数据)的响应。因此,该受保护代码216可以被布置成在步骤314处标识此指令在步骤312处接收到的响应中的存在,并且响应于在响应中检测到这样的指令而执行一个或多个对策。这样的对策可以包括(a)经由网页214停止当前正在进行或请求的事务或其他程序(或阻止其完成)(以使得这样的事务/程序不能基于未经验证的数据而发生)和/或(b)引起网页214继续事务/程序,但是以提醒服务系统250或供应商系统280正在基于未经验证的数据来请求/执行事务/程序的方式(例如通过在从网页214的要发送至服务系统250或供应商系统280的通信中设置标志)和/或(c)采取如上面设置的与失败的完整性验证有关的对策。
广告阻止检查。
如上面提到的,在步骤302处由受保护代码216生成的请求可以包括广告阻止检查数据,其指示在浏览器212内打开或关闭(或是否打开或关闭)广告(例如由网页214提供的广告)的阻止。这可以例如通过使用如在上面的章节5.1中阐述的完整性验证来实现—特别地,在代码部分标识符的集合si(i=1,…,n)中,这些代码部分标识符pi,j(i=1,…,n;j=1,…,di)中的一个或多个可以标识受保护代码216内的代码和/或数据的对应部分ai,j(或量),其中代码的该部分ai,j提供与广告的供应有关的功能中的一些或全部。另外或替代地,这可以通过检查网页214的dom来实现—例如:(a)如上面提到的,代码部分ai,j中的一些或全部可以包括dom的部分,在该情况下,代码部分ai,j可以包括与广告或用来确保数据还没有被破坏/修改/删除/等等的其他内容有关的dom的数据(例如图像、视频);(b)该受保护代码216可以检查dom来看是否将任何东西显示/渲染在广告的顶部上(由此有效地“阻止”广告);(c)该受保护代码216可以检查来看是否存在与例如视频数据的显示有关的预期心跳数据—这样的心跳数据的缺乏可以被视作视频广告的显示被阻止的指示;(d)等等。这样的检查可以基于元数据228(例如以指定要使用哪个代码部分ai,j;以指定预期的心跳数据;等等)。
如果该控制器应用程序232根据接收到的请求中的广告阻止检查数据确定在浏览器212或网页214内广告的阻止被关闭或以某种方式禁用,则该控制器应用程序232可以被配置成在步骤308处生成包括对应指令(或标志或指示符或其他数据)的响应。因此,该受保护代码216可以被布置成在步骤314处标识此指令在步骤312处接收到的响应中的存在,并且响应于在响应中检测到这样的指令而执行一个或多个对策。这样的对策可以包括(a)网页214的dom的操纵以停止内容的显示和/或通知浏览器212的用户网页214的继续使用需要他们查看广告和/或(b)采取上面阐述的与失败的完整性验证有关的对策。
将会认识到,所述的方法已经被示出为以具体顺序实施的各个步骤。然而,技术人员将会认识到可以在仍实现期望结果的同时组合这些步骤或者以不同的顺序来实施这些步骤。
将会认识到,可以使用多种不同的信息处理系统来实施本发明的实施例。特别地,虽然各图以及其讨论提供了示例性的计算系统和方法,但是呈现这些仅仅用来在讨论本发明的各种方面中提供有用的参考。可以在任何适当的数据处理设备(诸如个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视机、服务器计算机等等)上实施本发明的实施例。当然,已经为了讨论的目的简化了系统和方法的描述,并且它们仅仅是可以被用于本发明的实施例的许多不同类型的系统和方法中的一个。将会认识到,逻辑块之间的边界仅仅是说明性的并且替代实施例可以合并逻辑块或元件,或者可以将功能的替代分解施加于各种逻辑块或元件上。
将会认识到,上面提到的功能可以被实施为一个或多个对应模块,作为硬件和/或软件。例如,上面提到的功能可以被实施为用于由系统的处理器来执行的一个或多个软件部件。替代地,上面提到的功能可以被实施为硬件,诸如在一个或多个现场可编程门阵列(fpga)、和/或一个或多个专用集成电路(asic)、和/或一个或多个数字信号处理器(dsp)、和/或其他硬件布置上。在包含在本文中的流程图中实施或如上面描述的方法步骤每个可以由对应的相应模块来实施;在包含在本文中的流程图中实施或如上面描述的多个方法步骤可以由单个模块来一起实施。
将会认识到,只要由计算机程序实施本发明的实施例,则存储或承载计算机程序的一个或多个存储介质和/或一个或多个传输介质形成本发明的各方面。计算机程序可以具有一个或多个程序指令或程序代码,当其被一个或多个处理器(或一个或多个计算机)执行时,其实施本发明的实施例。如在本文中使用的术语“程序”可以是为在计算机系统上的执行而设计的指令序列,并且可以包括子例程、函数、程序、模块、目标方法、目标实现、可执行应用程序、小应用程序、小服务程序、源代码、目标代码、字节代码、共享库、动态链接库和/或为在计算机系统上执行而设计的指令的其他序列。存储介质可以是磁盘(诸如硬盘驱动器或软盘)、光盘(诸如cd-rom、dvd-rom或蓝光光盘)或存储器(诸如rom、ram、eeprom、eprom、闪速存储器或便携式/可移动存储器设备)等等。传输介质可以是通信信号、数据广播、两个或更多计算机之间的通信链路等等。