首页> 中国专利> 基于提取的和访问的网络地址确定二进制软件代码中的安全风险

基于提取的和访问的网络地址确定二进制软件代码中的安全风险

摘要

系统、方法以及软件可以用于分析二进制软件代码集的安全风险。在一些方面中,一种计算机实现的方法包括:由至少一个硬件处理器扫描二进制软件代码集以标识由该二进制软件代码集访问的一个或多个网络地址;针对该一个或多个网络地址中的每个网络地址:由至少一个硬件处理器确定网络地址的安全级别信息;以及由至少一个硬件处理器基于针对一个或多个网络地址所确定的安全级别信息来生成安全通知,其中安全通知指示该二进制软件代码集的安全风险。

著录项

  • 公开/公告号CN112789615A

    专利类型发明专利

  • 公开/公告日2021-05-11

    原文格式PDF

  • 申请/专利权人 黑莓有限公司;

    申请/专利号CN201980064941.2

  • 发明设计人 A·J·博尔顿;

    申请日2019-09-27

  • 分类号G06F21/56(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人董莘

  • 地址 加拿大安大略省

  • 入库时间 2023-06-19 10:55:46

说明书

本申请要求于2018年10月1日提交的美国专利申请No.16/148,757的优先权,其全部内容通过引用并入本文。

技术领域

本公开涉及基于网络地址来确定二进制软件代码中的安全风险。

背景技术

在一些情况下,软件服务可以由可执行的二进制软件代码来提供。二进制软件代码是以二进制格式的计算机软件。计算机软件可以是应用软件、系统软件(例如,操作系统或设备驱动)或其组件。二进制软件代码还可以被称为二进制程序代码、可执行代码或目标代码。

发明内容

因此,存在如以下的权利要求书中详述的方法、服务器、计算机可读介质以及计算机程序。

附图说明

图1是示出根据实现的基于网络地址来确定二进制软件代码的安全风险的示例通信系统的示意图。

图2是示出根据实现的基于网络地址来确定二进制软件代码的安全风险的示例方法的流程图。

图3是根据实现的计算系统的高级别架构框图。

在各附图中相同的附图标记和标号指示相同的元素。

具体实施方式

在一些情况下,软件开发者可以将软件代码提交到由软件提供者操作的软件服务平台。软件代码可以在软件服务平台上运行以向用户设备提供软件服务。备选地或附加地,软件代码可以被下载到用户设备。软件服务平台可以被实现在一个或多个服务器中或云计算平台上。

在一些实现中,软件服务平台可以检查软件代码以访问软件代码的安全风险。安全风险可以包括将损害用户设备、暴露用户信息或其组合的恶意软件代码。安全风险还可以包括易受恶意攻击的代码。

如果二进制软件代码在没有源代码的情况下被提交,那么可能难以检查二进制软件代码以标识安全风险。二进制软件代码可以包括通过编译软件的源代码而生成的字节流。因此,二进制软件代码不是采用可读格式的并且不可以被容易地解析或分析。

不同的软件代码可以根据软件代码执行的功能而具有不同水平的脆弱性。例如,如果软件代码执行网络通信功能,那么软件代码的安全性可以取决于网络通信如何被执行。例如,如果软件代码访问的目标网络节点在建立网络通信中使用复杂的安全协议,那么可以存在与这样的网络通信相关联的低级别的安全风险。另一方面,如果目标网络节点不配置任何安全协议,或者配置对攻击脆弱的简单安全协议,那么可以存在与这样的网络通信相关联的高级别的安全风险。

在一些实现中,被包括于二进制软件代码集中的一个或多个网络地址可以被标识。二进制软件代码集可以是软件程序的二进制软件代码、软件程序的一部分或多个软件程序。这些网络地址可以指示网络实体,例如二进制软件代码集可以具有对二进制软件代码集何时被运行的访问的服务器。二进制软件代码集的安全风险可以基于这些网络地址来确定。在一个实现中,访问请求可以被发送到网络地址,并且访问响应可以被接收并分析以确定由网络地址处的网络实体配置用于建立网络连接的流程。针对网络地址的安全级别信息可以基于流程如何被配置以及使用的参数的类型或证书来确定。图1-图3和相关联的描述提供这些实现的附加细节。通过基于包括于二进制软件代码集中的网络地址来执行安全风险的动态评估,二进制软件代码集的安全风险可以在没有执行二进制软件代码集的情况下被确定和比较。

图1是示出根据实现的基于网络地址来确定二进制软件代码的安全风险的示例通信系统100的示意图。在高级别,示例通信系统100包括与网络110通信地耦合的客户端设备102、软件开发者设备160、服务器150以及软件服务平台120。

软件开发者设备160表示可以被配置为将二进制软件代码集提交到软件服务平台120的应用、应用集、软件、软件模块、硬件、或其任何组合。二进制软件代码集可以被下载到客户端设备102以在客户端设备102上被提取。二进制软件代码集还可以被运行在软件服务平台120上以将软件服务提供到客户端设备102。软件服务的示例可以包括软件即服务(SaaS)应用,诸如SALESFORCE、OFFICE 365或其他软件应用服务。

软件服务平台120包括软件安全分析器122和安全级别信息数据库124。软件安全分析器122表示可以被配置为基于包括于软件代码中的网络地址来针对安全风险分析软件代码的应用、应用集、软件、软件模块、硬件或其任何组合。在一些实现中,软件安全分析器122可以标识包括于软件代码中的一个或多个网络地址,确定针对每个网络地址的安全级别信息,以及基于安全级别信息来确定软件代码的安全风险。图2-图3和相关联的描述提供这些实现的附加细节。

安全级别信息数据库124表示可以被配置为存储对应于不同网络地址的安全级别信息的应用、应用集、软件、软件模块、硬件或其任何组合。在操作中,软件安全分析器122可以查询安全级别信息数据库124以取回对应于一个或多个特定网络地址的安全级别信息。软件安全分析器122还可以将网络地址的所确定的安全级别信息存储在安全级别信息数据库124中。图2-图3和相关联的描述提供这些实现的附加细节。在一些情况下,如所图示的,安全级别信息数据库124可以被实现在与软件安全分析器122相同的平台上。备选地或附加地,安全级别信息数据库124可以被实现在软件安全分析器122可访问的不同硬件平台上。

软件服务平台120可以使用一个或多个计算机、计算机服务器或云计算平台来实现。

服务器150表示当执行时可以由二进制软件代码集访问的应用、应用集、软件、软件模块、硬件或其任何组合。服务器150可以是可以在包括于二进制软件代码集中的网络地址处访问的应用服务器、服务提供者或任何其他网络实体。服务器150可以针对设备(例如,客户端设备102或软件服务平台120)配置一个或多个访问流程,以建立与服务器150的网络连接。服务器150可以使用一个或多个计算机、计算机服务器或云计算平台来实现。在一些实现中,软件服务平台120可以将访问请求发送给服务器150,以及接收来自服务器150的访问响应。软件服务平台120可以基于在服务器150处配置的网络连接流程来确定针对网络地址的安全级别信息。图2-图3和相关联的描述提供这些实现的附加细节。

客户端设备102表示可以使用二进制软件代码集的设备。在一些情况下,二进制软件代码集可以被安装在客户端设备102上,例如,通过在网络110上下载或者本地复制到客户端设备102上。备选地,客户端设备102可以访问由二进制软件代码集提供的软件服务。在一个示例中,浏览器或客户端应用可以在客户端设备102上运行以于软件服务平台102通信服务请求和服务响应来获得软件服务。

转向一般描述,客户端设备102可以包括但不限于以下中的任何项:端点、计算设备、移动设备、移动电子设备、用户设备、移动站、用户站、便携式电子设备、移动通信设备、无线调制解调器、无线终端或其他电子设备。端点的示例可以包括移动设备、IoT(物联网)设备、EoT(物联企业)设备、蜂窝电话、个人数字助理(PDA)、智能电话、膝上型计算机、平板计算机、个人计算机(PC)、寻呼机、便携式计算机、便携式游戏设备、可穿戴电子设备、健康/医学/健身设备、相机、交通工具、或具有用于经由无线通信网络通信语音或数据的组件的其他移动通信设备。交通工具可以包括机动车辆(例如,汽车、小汽车、卡车、公交车、摩托车等)、飞行器(例如,飞机、无人驾驶飞行器、无人飞行器系统、无人机、直升机等)、航天器(例如,航天飞机、太空飞船、太空舱、空间站、卫星等)、船只(例如,船、小船、气垫船、潜艇等)、轨道车辆(例如,火车、电车等)、以及其他类型的交通工具,包括前述中的任何交通工具的任何组合,无论是当前存在的还是之后出现的。无线通信网络可以包括通过经许可频谱和未许可频谱中的至少一种频谱的无线链接。术语“移动设备”还可以指代可以针对用户终止通信会话的任何硬件或软件组件。另外,术语“用户装备”、“UE”、“用户装备设备”、“用户代理”、“UA”、“用户设备”以及“移动设备”可以在本文中可互换地使用。

示例通信系统100包括网络110。网络110表示可以被配置为在系统100中的实体之间发送数据消息的应用、应用集、软件、软件模块、硬件或其组合。网络110可以包括无线网络、有线网络、互联网或其组合。例如,网络110可以包括一个或多个无线电接入网络(RAN)、核心网络(CN)以及互联网。RAN可以包括一个或多个无线电接入技术。在一些实现中,无线电接入技术可以是全球移动通信系统(GSM)、临时标准(IS-95)、通用移动电信系统(UMTS)、CDMA2000(码分多址)、演变的通用移动电信系统(E-UMTS)、长期演变(LTE)、高级LTE、第五代(5G)或任何其他无线电接入技术。在一些实例中,核心网络可以是演变的分组核心(EPC)。

RAN是无线电信系统的部分,其实现无线电接入技术,诸如UMTS、CDMA2000、3GPPLTE、3GPP LTE-A以及5G。在许多应用中,RAN包括至少一个基站。基站可以是可以控制系统的固定部分中的所有或至少一些无线电相关的功能的无线电基站。基站可以在它们的覆盖区域或蜂窝内针对移动设备提供无线电接口以进行通信。基站可以贯穿蜂窝网络分布以提供宽覆盖区域。基站直接向一个或多个移动设备、其他基站以及一个或多个核心网络节点通信。

尽管图1的元素被示出为包括实现各种特征和功能的各种组件部分、部分、或模块,但是这些元素可以在合适的情况下代替地包括许多子模块、第三方服务、组件、库等。另外,各种组件的特征和功能可以在合适的情况下被组合成更少的组件。

图2是示出根据实现的基于网络地址来确定二进制软件代码的安全风险的示例方法200的流程图。方法200可以由软件服务平台(例如,图1中示出的软件服务平台120)实现。所示出的方法200还可以使用附加的、更少的或不同的实体来实现。另外,方法200可以使用附加的、更少的或不同的操作来实现,其可以以所示出的顺序或以不同的顺序来执行。

示例方法200在202处开始,其中二进制软件代码集被扫描以标识由二进制软件代码集访问的一个或多个网络地址。在一些情况下,二进制软件代码集在软件服务平台处被接收。在一个示例中,二进制软件代码集可以由软件开发者在网络上提交给软件服务平台。二进制软件代码集可以表示应用软件、系统软件(例如,操作系统或设备驱动)或其组件。二进制软件代码集可以在没有软件的对应的源代码的情况下被接收。

在一些实现中,二进制软件代码集可以被扫描以标识使用一个或多个编码协议被编码于二进制软件代码集中的文本字符串。编码协议的示例包括美国信息交换标准码(ASCII)编码协议或Unicode协议。文本字符串包括一个或多个连续文本字符。文本字符的示例包括字母、数字、标点符号和符号。在一些情况下,文本字符还可以被称为字母数字字符。每个文本字符根据编码协议被编码成二进制数。二进制数的大小可以是8位(1字节)、16位(2字节)、32位(4字节)或64位(8字节)。例如,在ASCII协议中,小写字母“a”被编码为0x61或以二进制数被编码为“01100001”。在编码协议中,文本字符被限定在一定范围的二进制数内。因此,通过扫描二进制软件代码集的字节流以检查每个字节、两个字节、四个字节或八个字节(取决于编码协议的二进制数的大小)的值,不同的文本字符可以被标识。对于连续出现在二进制软件代码集中的文本字符,这些文本字符形成文本字符串。在一些情况下,扫描可以从二进制软件代码集的开头执行(正向扫描)、从二进制软件代码集的结尾执行(反向扫描)、或者从二进制软件代码集的开头和结尾两者执行(并行扫描)。

在一些情况下,被编码于二进制软件代码集中的所标识的文本字符串可以被用于确定二进制软件代码集可以向其执行网络通信的一个或多个网络地址。例如,文本字符串可以包括电子邮件地址或统一资源定位符(URL)。这些文本字符串可以基于特定字符或特定字符串来标识。例如,电子邮件地址可以通过文本字符串中的“@”字符来标识。URL可以通过文本字符串中的“HTTP”、“HTTPS”或“FTP”字符来标识。如果这样的特定字符或字符串在文本字符串中被找到,那么文本字符串可以被解析以确定网络地址。例如,文本字符串在特定字符“@”之后的部分可以表示电子邮件服务器的网络地址。文本字符串在特定字符“HTTPS”或“HTTP”之后的部分可以表示Web服务器的网络地址。在一个示例中,文本字符串的表示网络地址的部分可以以数字形式,例如互联网协议(IP)v4或v6地址。在另一示例中,文本字符串的表示网络地址的部分可以以字母形式,例如可以由域名系统(DNS)服务器转化为IP地址的DNS地址。

在一些实现中,附加于扫描或作为对扫描的备选,一个或多个网络地址还可以在与二进制软件代码集相关联的元数据中被标识。元数据可以被包括于与二进制软件代码集相同的文件中,例如头(header)中。元数据还可以被包括于单独的文件(例如,软件清单)中。元数据可以包括二进制软件代码集的信息,包括,例如,用于编程二进制软件代码集的软件语言、运行二进制软件代码集的计算架构、用于编译二进制软件代码集的源代码版本的编译器、二进制软件代码集执行的网络通信的类型、二进制软件代码集与之通信的目标网络地址、或其他信息。在一些情况下,二进制软件代码集的这样的信息可以由软件开发者通过在软件开发者设备处显示的用户接口输入,并且当二进制软件代码集被提交到软件服务平台时被发送给软件服务平台。

在一些实现中,附加于对二进制软件代码集的扫描或作为对二进制软件代码集的扫描的备选,二进制软件代码集可以被反汇编成汇编代码集。汇编代码集可以被解析成不同的汇编指令。与网络通信相关联的汇编指令可以被标识并且由这些汇编指令访问的网络地址还可以被标识。

在204处,软件服务平台确定针对二进制软件代码集所标识的网络地址中的每个网络地址的安全级别信息。在一些实现中,软件服务平台可以通过试图建立与网络地址的网络通信来确定针对网络地址的安全级别信息。在一个示例中,软件服务平台可以发送定向到网络地址的访问请求,例如通过将网络地址包括为访问请求中的目标地址字段。作为响应,软件服务平台可以接收访问响应。访问请求/响应可以是使用标准化通信协议格式的消息。例如,访问请求/响应可以根据互联网控制消息协议(ICMP)回应请求/应答(也称为PING)协议或跟踪路由协议来发送和接收。

在一些实现中,访问请求可以发起由网络实体在网络地址处配置的一个或多个安全流程。例如,网络地址可以是Web服务器的网络地址。Web服务器可以配置针对试图与Web服务器建立网络连接的任何设备的一个或多个安全流程。在一个示例中,安全流程可以包括对安全登录的网站的重定向。在该示例中,网络地址可以是互联网域地址(以IP地址或DNS地址的格式),并且软件服务平台可以将超文本传输协议(HTTP)消息(例如,HTTP get消息)作为访问请求进行发送。作为响应,Web服务器可以将重定向命令作为访问响应进行发送。重定向命令可以将发起对Web服务器的访问的实体重定向到安全登录网站,其中在访问被授予给实体之前,实体可以提供安全证书,例如登录名和密码。在一些情况下,安全登录网站可以具有HTTP安全(HTTPS)地址。在一些情况下,重定向命令可以是HTTP重定向命令,包括以3开始的状态码,例如,300、301、302、303、307或308命令。

对应于网络地址的安全级别信息可以基于由网络实体在网络地址处配置的安全流程的类型来确定。安全级别信息可以是指示安全级别的得分的数字值。安全级别信息还可以是若干类之一,例如,指示安全级别是否是低的、中等、或者高的。例如,如果软件服务平台确定在网络地址处访问Web服务器之前要求安全登录流程,那么软件服务平台可以将安全级别信息设置为高值。如先前所讨论的,软件服务平台可以通过检测访问响应包括重定向命令、HTTPS地址或其组合来检测这样的配置流程。另一方面,如果软件服务平台未能检测到这样的流程的存在,那么软件服务平台可以将安全级别信息设置为低值。

在一些情况下,在网络地址处的网络实体可以根据一个或多个标准化协议来配置安全通信建立流程。例如,Web服务器可以使用传输层安全(TLS)协议来建立安全通信。Web服务器可以使用TLS协议来与试图访问Web服务器的实体交换诸如证书、加密配置和认证配置的信息。在这些或其他情况下,软件服务平台可以基于访问响应来检测这样的流程的发起。在一个示例中,在握手流程中,第一设备可以将第一消息发送给第二设备以指示由第一设备支持的密码套件。第二设备可以将第二消息发送给第一设备以指示是否可以基于那些参数来建立连接。第一设备和第二设备可以分别是客户端设备和服务器,反之亦然。在这样的流程中,软件服务平台可以基于检测到与访问响应一起或在访问响应之后被发送的这些消息中的一个消息的接收而检测发起。软件服务平台可以继续与Web服务器的交换,或者在软件服务平台已经收集到关于安全通信建立流程的信息之后在任何点处停止。软件服务平台可以基于以下项来设置针对网络地址的安全级别信息:使用的协议的类型和版本、Web服务器的证书的类型以及发行证书的发行机构(例如,证书机构)、在安全通信建立流程中使用的加密和认证的级别、以及其任何组合。例如,如果没有加密被配置或者如果加密级别是低的(例如,128位密钥被使用),那么软件服务平台可以将安全级别信息设置为低值。另一方面,如果加密级别是高的(例如,256位密钥被使用),那么软件服务平台可以将安全级别信息设置为高值。

在一些情况下,一个或多个安全策略可以在软件服务平台处被配置。安全策略可以由操作软件服务平台的企业来配置。安全策略还可以由提交二进制软件代码集的软件开发者来配置。安全策略可以指示对应于安全网络连接的阈值或属性。例如,安全策略可以包括要在建立安全网络连接中使用的安全协议的类型或版本、最小加密级别、证书的类型和所要求的CA等。软件服务平台可以基于所检测到的由网络实体在网络地址处配置的通信建立流程是否满足安全策略来设置网络地址的安全级别信息。如果配置的流程满足安全策略,那么安全级别信息被设置为高(或通过);否则,安全级别信息被设置为低(或未通过)。

在一些情况下,软件服务平台可以将针对每个网络地址的所确定的安全级别信息存储在数据库中。安全级别信息数据库可以被实现在软件服务平台上或在由软件服务平台访问的不同的硬件平台上。在一些实现中,软件服务平台还可以存储指示安全级别信息被做出的时间的时间戳。在一些实现中,在获得由二进制软件代码集访问的网络地址的列表之后,软件服务平台可以在安全级别信息数据库中查找每个网络地址以确定安全级别信息在先前是否已经被确定。如果对应于该网络地址的安全级别信息被包括于数据库中,那么软件服务平台可以取回安全级别信息并且使用存储的安全级别信息而不是使用访问请求/响应来确定安全级别信息。在一些情况下,软件服务平台可以检查与存储的安全级别信息相关联的时间戳。如果时间戳指示从存储的安全级别信息被确定的时间到当前时间的持续时间超过持续时间阈值,那么软件服务平台可以丢弃存储的安全级别信息并且使用先前讨论的流程(例如,访问请求/响应)来确定针对该网络地址的安全级别信息。软件服务平台可以将更新的确定的安全级别信息和时间戳存储在数据库中。如果时间戳指示从存储的安全级别信息被确定的时间到当前时间的持续时间未超过持续时间阈值,那么软件服务平台可以使用存储的安全级别信息。在一些情况下,持续时间阈值可以由操作软件服务平台的企业或者由提交二进制软件代码集的软件开发者来配置。

在206处,安全通知基于所确定的安全级别信息来生成。安全通知指示二进制软件代码集的安全风险。安全风险基于针对包括于二进制软件代码集中的网络地址中的每个网络地址的安全级别信息来确定。在一些情况下,安全通知可以包括安全风险的总体评估,例如,基于针对不同网络地址的安全级别信息的统计函数(通过取平均或取最差的安全级别信息)。备选地或附加地,安全通知可以包括对应于包括于二进制软件代码集中的所有网络地址的安全级别信息,或者网络地址中的一些网络地址,例如,未能满足先前讨论的安全策略的那些。

在一些情况下,安全通知可以在软件服务平台处被输出,例如被显示在软件服务平台上的图形用户接口上。该方法使得操作软件服务平台的企业能够得到关于被提交到平台的软件的安全风险的通知。在一些情况下,操作软件服务平台的企业可以强制执行关于平台上的代码的软件安全的策略。例如,软件服务平台可以包括以下项或与以下项耦合:针对设备下载软件代码的应用商店、或使用软件代码提供软件服务的软件即服务(SaaS)服务器。如果安全通知指示二进制软件代码集相对不安全,那么软件服务平台可以防止二进制软件代码集对设备可用于使用或下载。

备选地或附加地,安全通知可以被发送给提交二进制软件代码集的软件开发者设备。该方法使得软件开发者能够相应地进行修改。

图3是根据实现的示出与网络350耦合的计算机302的高级别架构框图。所描述的图示仅仅是所描述的主题的一种可能的实现并且不旨在将本公开限制于单个所描述的实现。本领域普通技术人员将理解到以下事实:所描述的组件可以被连接、组合或以与本公开一致的备选方式来使用。

网络350支持计算机302与其他设备之间的通信。在一些情况下,用户(例如管理员)可以从远程网络访问计算机302。在这些或其他情况下,网络350可以是无线或有线网络。在一些情况下,用户可以本地访问计算机302。在这些或其他情况下,网络350还可以是存储器管道、硬件连接、或组件之间的任何内部或外部通信路径。

计算机302包括被配置为执行本公开中描述的算法的计算系统。例如,计算机302可以用于实现图1中示出的软件安全分析器122。计算机302还可以用于实现其他计算设备,例如图1中示出的软件开发者设备160或客户端设备102。在一些情况下,算法可以以可执行计算代码(例如,C/C++可执行代码)来实现。备选地或组合地,算法可以以应用程序(例如,EXCEL)来实现。在一些情况下,计算机302可以包括运行批(batch)应用的独立LINUX系统。在一些情况下,计算机302可以包括运行应用程序的移动电话或个人计算机。

计算机302可以包括输入设备(诸如小键盘、键盘、触摸屏、麦克风、语音识别设备、或者可以接受用户信息的另一设备)、和/或传达与计算机302的操作相关联的信息(包括数字数据、视觉和/或音频信息)的输出设备、或GUI。

计算机302可以用作客户端、网络组件、服务器、数据库或其他持久性等。在一些实现中,计算机302的一个或多个组件可以被配置为在基于云计算的环境内操作。

在高级别处,计算机302是可操作用于接收、发送、处理、存储或管理数据和信息的电子计算设备。根据一些实现,计算机302还可以包括以下项或与以下项通信地耦合:应用服务器、电子邮件服务器、Web服务器、高速缓存服务器、流传输数据服务器、商业智能(BI)服务器和/或其他服务器。

计算机302可以通过网络350从(例如,在用户设备上执行的)客户端应用接收请求并且通过在合适的软件应用中处理该请求而对所接收的请求做出响应。另外,请求还可以从内部用户(例如,从命令控制台或由另一合适的访问方法)、外部或第三方、其他自动化应用以及任何其他合适的实体、个体、系统或计算机被发送给计算机302。

计算机302的组件中的每个组件可以使用系统总线303进行通信。在一些实现中,计算机302的任何和/或所有组件(硬件和/或软件两者)可以与彼此进行接口,和/或使用应用编程接口(API)312和/或服务层313通过系统总线303与接口304进行接口。API 312可以包括针对例程、数据结构和对象类的规范。API 312可以是计算机语言无关的或相关的并且指代完整接口、单个功能、或者甚至API集。服务层313将软件服务提供给计算机302。计算机302的功能可以对使用该服务层的所有服务消费者可访问。软件服务(诸如由服务层313提供的那些)通过经限定的接口提供可重复使用的经限定的商业功能。例如,接口可以是以JAVA、C++或其他适当的语言编写的软件,提供以可扩展标记语言(XML)格式或其他适当的格式的数据。尽管被图示为计算机302的集成组件,但是备选实现可以将API 312和/或服务层313图示为与计算机302的其他组件有关的独立组件。此外,API 312和/或服务层313的任何或所有部分可以被实现为另一软件模块或硬件模块的子或子模块,而不偏离本公开的范围。

计算机302包括接口304。尽管在图3中被图示为单个接口304,但是根据计算机302的具体需要、配置或具体实现可以使用两个或更多个接口304。接口304由计算机302用于与连接到网络350的分布式环境中的其他系统(不管图示与否)进行通信。一般地,接口304包括以适当组合并且可操作用于与网络350进行通信的软件和/或硬件编码的逻辑。更具体地,接口304可以包括支持与通信相关联的一个或多个通信协议的软件,以使得网络350或接口的硬件可操作用于通信物理信号。

计算机302包括处理器305。尽管在图3中被图示为单个处理器305,但是根据计算机302的具体需要、配置或具体实现可以使用两个或更多个处理器。一般地,处理器305执行指令并且操纵数据来执行计算机302的操作。在一些情况下,处理器305可以包括数据处理装置。

计算机302还包括为计算机302保存数据的存储器306。尽管在图3中被图示为单个存储器306,但是根据计算机302的具体需要、配置或具体实现可以使用两个或更多个存储器。尽管存储器306被图示为计算机302的集成组件,但是在备选实现中,存储器306可以在计算机302外部。

应用307包括根据计算机302的具体需要、配置或具体实现来提供功能的算法软件引擎。尽管被图示为单个应用307,但是应用307可以在计算机302上被实现为多个应用307。另外,尽管被图示为集成到计算机302,但是在备选实现中,应用307可以在计算机302外部。

存在与系统300相关联或者在该系统300外部并且通过网络350进行通信的任何数目的计算机302。另外,术语“客户端”、“用户”以及其他合适的术语可以在合适的情况下可互换地使用而不偏离本公开的范围。此外,本公开预见到许多用户可以使用一个计算机302、或一个用户可以使用多个计算机302。

在本说明书中描述的主题和功能操作的实现可以以数字电子电路、以有形地体现的计算机软件或固件、以包括在本说明书中公开的结构以及其结构等价物的计算机硬件、或它们中的一个或多个的组合来实现。在此说明书中描述的主题的实现可以被实现为一个或多个计算机程序,即,被编码在有形的非瞬态计算机存储介质上的用于由数据处理装置运行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。备选地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电信号、光学信号或电磁信号,该信号被生成以编码用于传输到合适的接收器装置以用于由数据处理装置执行的信息。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行访问存储器设备或它们中的一个或多个的组合。

术语“数据处理装置”、“计算机”或“电子计算机设备”(或者如由本领域普通技术人员理解的等价物)指代数据处理硬件并且包含用于处理数据的所有种类的装置、设备以及机器,以示例的方式包括可编程处理器、计算机、或者多个处理器或计算机。装置还可以是或者还包括专用逻辑电路,例如中央处理单元(CPU)、FPGA(现场可编程门阵列)、ASIC(专用集成电路)。在一些实现中,数据处理装置和/或专用逻辑电路可以是基于硬件的和/或基于软件的。装置可以可选地包括创建针对计算机程序的执行环境的代码,例如构成处理器固件、协议栈、数据管理系统、操作系统或它们中的一个或多个的组合的代码。本公开预见到在具有或没有常规操作系统(例如,LINUX、UNIX、WINDOWS、MAC OS、ANDROID、IOS或任何其他合适的常规操作系统)的情况下对数据处理装置的使用。

计算机程序(其还可以被称为或被描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可以以任何形式来部署,包括被部署为独立程序或被部署为模块、组件、子例程或适合于在计算环境中使用的其他单元。计算机程序可以但是不需要对应于文件系统中的文件。程序可以被存储在保存其他程序或数据的文件(例如,被存储在标记语言文档中的一个或多个脚本)的部分中、专用于讨论中的程序的单个文件中、或多个协同文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。计算机程序可以被部署为在一个计算机上执行或者在位于一个站点处或跨多个站点分布并且由通信网络相互连接的多个计算机上执行。尽管各个附图中所图示的程序的部分被示出为通过各种对象、方法或其他过程实现各种特征和功能的单独的模块,但是程序可以在合适的情况下代替地包括许多子例程、第三方服务、组件、库等。相反,各种组件的特征和功能可以在合适的情况下被组合成单个组件。

本说明书中描述的过程和逻辑流可以由执行一个或多个计算机程序以通过对输入数据进行操作并且生成输出来执行功能的一个或多个可编程计算机执行。过程和逻辑流还可以由专用逻辑电路(例如,CPU、FPGA或ASIC)来执行,并且装置还可以被实现为专用逻辑电路(例如,CPU、FPGA或ASIC)。

适合于执行计算机程序的计算机可以基于通用微处理器或专用微处理器、两者或任何其他种类的CPU。一般地,CPU将从只读存储器(ROM)或随机访问存储器(RAM)或者两者接收指令和数据。计算机的基本元素是用于执行或运行指令的CPU和用于存储指令和数据的一个或多个存储器设备。一般地,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)、或者操作地耦合到、一个或多个大容量存储设备、从其接收数据、或向其传输数据、或者两者。然而,计算机不需要具有这样的设备。此外,计算机可以被嵌入在另一设备(仅举数例,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪速驱动))中。

用于存储计算机程序指令和数据的计算机可读介质(瞬态的或非瞬态的)包括所有形式的非易失性存储器、介质和存储器设备,通过示例的方式包括半导体存储器设备(例如,可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM))和闪速存储器设备、磁盘(例如,内部硬盘或可移除盘)、磁光盘、以及CD ROM、DVD+/-R、DVD-RAM和DVD-ROM盘。存储器可以存储各种对象或数据,包括高速缓存、类、框架、应用、备份数据、工件、网页、网页模板、数据库表、存储商业和/或动态信息的仓库、以及包括任何参数、变量、算法、指令、规则、约束或对其的引用的任何其他合适的信息。附加地,存储器可以包括任何其他合适的数据,诸如日志、策略、安全或访问数据、报告文件以及其他。处理器和存储器能够由专用逻辑电路来补充或被并入到专用逻辑电路中。

为了提供与用户的交互,本说明书中所描述的主题的实现可以被实现在计算机上,该计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)或等离子监视器)以及通过其用户可以将输入提供给计算机的键盘和指点设备(例如,鼠标、轨迹球或轨迹板)。输入还可以使用触摸屏被提供给计算机,触摸屏诸如具有压力敏感性的平板计算机表面、使用电容性或电性感测的多触摸屏或其他类型的触摸屏。其他种类的设备也能够用于提供与用户的交互;例如被提供给用户的反馈能够是任何形式的感觉反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且来自用户的输入能够以包括听觉输入、语音输入或触觉输入的任何形式来接收。另外,计算机可以通过将文档发送到由用户使用的设备和从由用户使用的设备接收文档来与用户交互;例如,通过响应于从Web浏览器接收到的请求而将网页发送到用户的客户端设备上的Web浏览器。

术语“图形用户接口”或“GUI”可以以单数或复数来使用以描述一个或多个图形用户接口以及具体图形用户接口的显示器中的每个显示器。因此,GUI可以表示任何图形用户接口,包括但不限于,Web浏览器、触摸屏、或处理信息并且有效地将信息结果呈现给用户的命令行接口(CLI)。一般地,GUI可以包括多个用户接口(UI)元素,一些或全部与Web浏览器相关联,诸如交互式字段、下拉列表以及由商业套件用户可操作的按钮。这些和其他UI元素可以与Web浏览器的功能相关或表示Web浏览器的功能。

尽管本公开包含许多特定实现细节,但是这些不应当被理解为对任何发明的范围或可能要求保护的范围的限制,而是相反作为可以特定于具体发明的具体实现的特征的描述。在分离的多个实现的上下文中,在本公开中所描述的某些特征还可以组合地被实现在单个实现中。相反,在单个实现的上下文中所描述的各种特征还可以分离地或以任何适当的子组合被实现在多个实现中。此外,尽管特征可以在以上被描述为以某些组合起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征可以在一些情况下从该组合删去,并且所要求保护的组合可以涉及子组合或子组合的变型。

主题的具体实现已经被描述。所描述的实现的其他实现、更改和排列在如本领域技术人员将显而易见的以下权利要求的范围内。尽管操作在附图或权利要求书中以具体顺序被描绘,但是这不应当被理解为要求这样的操作以所示出的具体顺序或以连续的顺序来执行,或者要求所有所图示的操作被执行以实现期望的结果(一些操作可以被认为是可选的)。在某些情况下,多任务或并行处理(或多任务和并行处理的组合)可以是有利的并且在认为合适的情况下被执行。

此外,以上所描述的实现中的各种系统模块和组件的分离或集成不应当被理解为要求所有实现中的这样的分离或集成,并且应当理解,所描述的程序组件和系统可以一般被一起集成在单个软件产品中或封装成多个软件产品。

因此,示例实现的以上描述不限定或约束本公开。在不偏离本公开的精神和范围的情况下,其他改变、替代以及更改也是可能的。

另外,以下的任何所要求保护的实现被认为可适用于至少一种计算机实现的方法;一种瞬态的或非瞬态的计算机可读介质,其存储执行该计算机实现的方法的计算机可读指令;以及一种计算机系统,其包括与硬件处理器可互操作地耦合的计算机存储器,该硬件处理器被配置为执行该计算机实现的方法或存储在该计算机可读介质上的指令。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号