对网络实时通信提供商的攻击保护的制作方法

文档序号:14843488发布日期:2018-06-30 14:29阅读:124来源:国知局
对网络实时通信提供商的攻击保护的制作方法

本文公开的主题一般涉及数据通信的安全性。具体地,本公开提出了透明和强力地保护网络实时通信(web real-time communication,WebRTC)提供商不受对其的攻击的系统和方法。



背景技术:

WebRTC使能网络浏览器之间通过点对点连接的实时通信。结果,在不需要使用中央服务器或者浏览器插件的情况下,WebRTC允许在终端用户之间在浏览器中的视频会议和其他直接通信。

WebRTC针对端点之间的安全实时传输协议(secure real-time transport protocol,SRTP)信息使用数据报传输层安全(datagram transport layer security,DTLS)协议。由网络服务器提供网络应用给端点用户。网络应用访问来自浏览器的WebRTC JavaScript API,并且经由信令服务器来处理与用户的交互和端点之间的元数据的交换。

每个浏览器收集关于它的各个端点的元数据(例如,用于DTLS连接的凭证指纹、本地互联网协议(Internet protocol,IP)地址的集合和端点的公共IP/端口对、或者网络中继的可用性)。元数据经由信令服务器而被交换。

元数据被交换之后,端点同意用于通信的媒体特性和传输地址(例如,IP/port对)。时使用所同意的设置来建立点对点DTLS-SRTP通信信道,并且WebRTC连接开始。



技术实现要素:

根据本发明的一方面,提供了一种系统,包括:存储器,其存储指令;一个或者多个处理器,其与网络通信,并由指令配置以进行操作,该操作包括:访问用于由网络浏览器执行的来自第一服务器的第一代码;访问用于由网络浏览器连同第一代码执行的第二代码;由网络浏览器执行第一代码的第一部分,第一代码的第一部分使得第一功能变得不可修改;由网络浏览器在第一代码的执行之后执行第二代码,第二代码尝试修改第一功能并且由于第一代码的第一部分的执行而失败;以及由网络浏览器在第二代码的执行之后执行第一代码的第二部分,第一代码的第二部分使用第一功能来通过网络经由网络实时通信WebRTC来通信。

根据本发明的一方面,提供了一种方法,包括:由客户端设备访问来自第一服务器的用于由在一个或者多个处理器上被运行的网络浏览器执行的第一代码;由客户端设备访问用于由网络浏览器连同第一代码执行的第二代码;通过一个或者多个处理器由网络浏览器执行第一代码的第一部分,第一代码的第一部分使得第一功能变得不可修改;通过一个或者多个处理器由网络浏览器在第一代码的执行之后执行第二代码,第二代码尝试修改第一功能并且由于第一代码的第一部分的执行而失败;以及通过一个或者多个处理器由网络浏览器在第二代码的执行之后执行第一代码的第二部分,第一代码的第二部分使用第一功能来通过网络经由网络实时通信WebRTC来通信。

根据本发明的一方面,提供了一种非暂时性机器存储可读存储介质,其包括在由机器的一个或多个处理器执行时使得机器进行操作的指令,该操作包括:访问用于由网络浏览器执行的来自第一服务器的第一代码;访问用于由网络浏览器连同第一代码执行的第二代码;由网络浏览器执行第一代码的第一部分,第一代码的第一部分使得第一功能变得不可修改;由网络浏览器在第一代码的执行之后执行第二代码,第二代码尝试修改第一功能并且由于第一代码的第一部分的执行而失败;以及由网络浏览器在第二代码的执行之后执行第一代码的第二部分,第一代码的第二部分使用第一功能来通过网络经由网络实时通信WebRTC来通信。

附图说明

在附图的图中以示例而非限制的方式示出一些实施例。

图1是示出根据一些实施例的适用于实现对WEBRTC提供商的攻击保护的网络环境的网络示图。

图2是根据一些实施例的适用于使用WebRTC的客户端设备的框图。

图3是示出根据一些实施例的对WebRTC用户的攻击的网络示图。

图4是示出根据一些实施例的对WebRTC用户的攻击的网络示图。

图5-6是示出根据一些实施例的适用于实现对WEBRTC提供商的攻击保护的操作的流程图。

图7是示出根据一些实施例的适用于实现对WEBRTC提供商的攻击保护的操作的流程图。

图8是示出根据一些实施例的机器的组件的框图。

具体实施方式

示例方法和系统意在为WebRTC提供商提供攻击保护。可以在网络浏览器、软件应用、操作系统、或者它们的任何合适的组合中实现攻击保护。示例仅仅代表可能的变化。除非另有明确地陈述,组件和功能是可选的并且可以被组合或者细分,并且操作可以在顺序上变化,或者被组合或细分。在下面的描述中,用于解释的目的,阐述了多个特定细节以提供对示例实施例的深入理解。然而,它对本领域技术人员来说很明显,可以在没有这些具体细节的情况下实施本主题。

对于由跨网站脚本攻击(cross-site scripting attack)、或者被破解(compromise)的或恶意的脚本提供商注入的恶意JavaScript来说,在网络应用中的WebRTC通信很脆弱。通过这些攻击,攻击者可以访问WebRTC连接并且泄露或者监控被发送的音频和视频数据。通过防止关键WebRTC功能的修改并防止流出和流入的流被使用超过一次,可以挫败这些攻击。

图1是示出根据一些实施例的适用于实现对WEBRTC提供商的攻击保护的网络环境100的网络示图。网络环境100包括服务器110、恶意服务器120、客户端设备140A和140B、恶意客户端设备160、和网络130。服务器110可以托管(host)WebRTC应用。客户端设备140A和140B可以从服务器110接收WebRTC应用并且在网络浏览器150A和150B中运行WebRTC应用。使用WebRTC应用,客户端设备140A和140B可以在不需要进一步进行服务器110的使用的情况下向彼此传递信息。恶意服务器120可以尝试将恶意JavaScript代码注入WebRTC应用中。恶意客户端设备160可能想要从客户端设备140A、客户端设备140B或者这两者中接收WebRTC流。恶意客户端设备160可以使用网络浏览器或者可编程接口来处理或者查看所接收的WebRTC流。如下面关于图8所描述的,可以在计算机系统中全部或部分实现服务器110、恶意服务器120、客户端设备140A和140B、和恶意客户端设备160的每一个。

图1中所示的机器、数据库或者设备中的任何一个可以在通用计算机中被实现,该通用计算机由软件修改(例如,被配置或者被编程)而成为专用计算机以进行用于该机器、数据库、或者设备的本文描述的功能。例如,关于图8在以下讨论了能够实现本文描述的方法中的一个或多个的计算机系统。如本文所使用的,“数据库”是数据存储资源并且可以存储被结构化为文本文件、表、电子表格、关系数据库(例如,对象-关系数据库)、三元组存储、分级数据存储、面向文档的NoSQL数据库、文件存储、或者它们的任何合适的组合的数据。数据可以是内存(in-memory)数据库。此外,在图1中示出的机器、数据库或者设备中的任何两个或多个可以被组合成单个机器,并且可以在多个机器、数据库、或者设备中细分本文描述的用于任何单个机器、数据库、或者设备的功能。

可以由网络130连接服务器110、恶意服务器120、客户端设备140A和140B、以及恶意客户端设备160。网络130可以是使能在机器、数据库、和设备之间或者之中的通信的任何网络。因此,网络130可以是有线网络、无线网络(例如,移动或者蜂窝网络)、或者它们的任何合适的组合。网络130可以包括组成私有网络、公用网络(例如,互联网),或者它们的任何合适的组合的一个或多个部分。

图2是根据一些实施例的适合于使用WebRTC的客户端设备140(例如,客户设备140A或者140B)的框图。客户端设备140被示出为包括通信模块210、显示模块220、WebRTC模块230、和存储模块240,所有模块被配置为(例如,经由总线、共享存储器、或者开关)与彼此通信。可以使用硬件(例如,机器的处理器)实现本文描述的模块中的一个或多个。例如,本文描述的任何模块可以由处理器实现,该处理器被配置为进行针对模块的、本文描述的操作。此外,这些模块的任何两个或多个可以被组合成单个模块,并且可以在多个模块中细分用于单个模块的、本文描述的功能。另外,根据各种示例实施例,可以跨多个机器、数据库、或者设备分布本文描述为在单个机器、数据库、或者设备内实现的模块。

通信模块210接收被发送至客户端设备140的数据并且发送来自客户端设备140的数据。例如,对于数据或者代码的请求可以从客户端设备140被发送至服务器110以检索JavaScript代码来实现两个客户端设备之间的基于WebRTC的通信信道。一旦建立基于WebRTC的通信信道,通信模块210可以将WebRTC数据发送至另一客户端设备和从另一客户端设备接收WebRTC数据。

显示模块220访问客户端设备140的显示器用于呈现信息给用户。例如,可以经由显示模块220将所接收的来自WebRTC连接的视频数据发送至显示器。作为另一示例,在客户端设备140上运行的网络浏览器150A可以呈现使用显示模块220的浏览器窗口、用户接口元素、或者这两者。

WebRTC模块经由WebRTC连接来访问、发送和接收数据。例如,WebRTC模块230可以访问来自相机的图像数据、来自麦克风的音频数据、或者这两者。WebRTC模块230可以以WebRTC格式来封装数据,并且使用通信模块210通过网络130将数据发送至另一客户端设备140。作为另一示例,WebRTC模块230可以经由通信模块210从另一客户端设备140接收数据并且经由显示模块220、经由扬声器或者这两者来处理所接收的数据以用于呈现给用户。

存储模块240存储被用来实现一个或多个WebRTC应用或者对WEBRTC提供商的攻击保护的数据。例如,用于WEBRTC模块230的JavaScript代码、用于传输的音频或者视频数据、用于呈现给用户的音频或者视频数据、或者它们的任何合适的组合可以由存储模块240存储。由存储模块240存储的代码可以由网络浏览器150A访问以用于执行。在一些示例实施例中,所接收的代码在它一被接收时就被执行。在其他示例实施例中,所接收的代码在稍后的时间被执行。

图3是示出根据一些实施例的对WebRTC用户的攻击的网络示图300。在网络示图300中,恶意服务器120已经将恶意WebRTC代码提供给客户设备140A和140B。例如,恶意服务器120可以是故意由客户端设备140A和140B访问的服务器,该恶意服务器想要在用户不知道的情况下暗中监控客户端设备140A和140B之间的WebRTC通信量。作为另一示例,恶意服务器120可以已经将恶意代码注入至由服务器110(图1示出的)服务的网页,其中服务器110故意由客户端设备140A和140B的用户访问并且服务器120没有被故意访问。例如,当第三方广告在网页上托管时,可能发生恶意代码的注入。

作为在客户端设备140A和140B上执行恶意代码的结果,所有WebRTC通信量实际上被发送到恶意客户端设备160。然后恶意客户端设备160将WebRTC通信量转发至它的适当的目的地。结果,客户端设备140A和140B在没有被必要地警告由恶意客户端设备160拦截数据的情况下能够继续进行它们的WebRTC通信。因此,在客户端设备140A和140B之间示出虚线连接来指示它们相信它们具有的连接。

图4是示出根据一些实施例的对WebRTC用户的攻击的网络示图400。在网络示图400中,恶意服务器120已经将恶意WebRTC代码提供给客户端设备140A,并且服务器110已经将非恶意WebRTC代码提供给客户端设备140A和140B。使用非恶意WebRTC代码,客户端设备140A和140B建立WebRTC连接。使用恶意WebRTC代码,客户端设备140A也与恶意客户端设备160建立WebRTC连接。恶意WebRTC代码可以(例如,经由被附接在客户端设备140A上的相机)发送在客户端设备140A处生成的数据和在客户端设备140A处接收的来自客户端设备140B的数据(例如,从客户端设备140B流到客户端设备140A的音频/视频数据)这两者。结果,尽管只有一个客户端设备140A运行恶意代码,恶意客户端设备160可以监控在两个客户端设备140A-140B之间的所有通信量。

图5-图6是示出根据一些实施例的适用于实现对WEBRTC提供商的攻击保护的方法500的操作的流程图。方法500所示的是以下以示例而非限制的方式被描述为由图1-图2的设备和模块进行的操作510-690。

在操作510中,用户开始视频呼叫。例如,在客户端设备140A上运行的网络浏览器150A的用户可以使用WebRTC模块230来调用WebRTC应用以开始向客户端设备140B的视频呼叫。在操作520,WebRTC模块230实例化与客户端设备140B的RTCPeerConnection。

在操作530中,WebRTC模块230检查是否设置了点(peer)标识。这个检查被称为点的标识声明。如果没有设置点标识(例如,标识声明失败),在操作540中抛出安全例外,利用点标识防止视频呼叫继续。可以通过使用标识提供商(例如,服务器110)来检查点标识。例如,标识提供商可以验证服务器尝试连接的、客户端的IP地址。当客户端尝试打开与彼此的WebRTC连接时,它们发送与它们通信的另一客户端的诸如IP地址的标识信息。标识提供商可以验证目的地IP地址与标识提供商想要的目的地IP地址的相同。因此,通过标识声明和由标识服务器的认证将检测到对目的地IP地址的恶意改变。

在操作550,在确认点标识之后,WebRTC模块230将RTCPeerConnection实例注册到navigator.userMedia。通过将RTCPeerConnection实例注册到navigator.userMedia,WebRTC模块230将特定的输入设备与特定的点连接相关联。在操作560,navigator.userMedia JavaScript功能提示用户许可使用视频输入设备或者音频输入设备。

如果用户不同意用于视频呼叫的输入设备的使用(操作570),这是错误情况(操作580)并且终止视频呼叫。否则,如果已经存在用于输入设备的现有的连接(操作610),生成安全例外(操作620)。例如,如果已经为输入设备注册了不同的RTCPeerConnection实例,可以抛出安全例外,防止来自输入设备的数据被发送至如图4的两个不同的点。

在操作630,客户端设备140A和140B经由信令服务器(例如,服务器110)来交换元数据。元数据被用来设置点连接。可以经由会话描述协议(session description protocol,SDP)消息的交换和交互式连接建立(interactive connectivity establishment,ICE)候选来处理元数据的交换。在一些示例实施例中,客户端设备140A经由信令服务器将SDP提议(offer)发送至客户端设备140B。该SDP打包(bundle)元数据,该元数据指定参数偏好(例如,支持的和偏好的多媒体类型和编解码器)、初始化参数、或者网络信息(例如,凭证指纹、互联网协议(Internet protocol,IP)地址、端口、或者它们的任何合适的组合)。客户端设备140B经由信令服务器利用SDP应答响应SDP提议。SDP应答包括远程方的元数据。

在操作640中,WebRTC模块230调用RTCPeerConnection.addStream来访问作为音频或者视频的本地源的经授权的输入设备。在调用RTCPeerConnection.onRemoteStream来连接到由另一客户端设备生成的流(操作670)之前和之后,WebRTC模块230确认没有进行远程流的其他使用(操作650和680)。如果进行尝试来两次使用流,在操作660中抛出安全例外。在操作690中,在保证为本地流和远程流两者只创建了一个流的情况下,成功连接了视频呼叫。

图7是示出根据一些实施例的适用于实现对WEBRTC提供商的攻击保护的方法700的操作的流程图。方法700包括是以下以示例而非限制的方式被描述为由图1-图2的设备和模块进行的操作710-750。

在操作710,客户端设备(例如,客户端设备140A)从第一服务器(例如,服务器110)接收用于由网络浏览器(例如,网络浏览器150A)执行的第一代码。例如,具有嵌入JavaScript的网页可以由客户设备140A的网络浏览器150A下载以用于呈现在客户端设备140A的显示器上。

在操作720,客户端设备(例如,从服务器110或者从恶意服务器120)接收用于由网络浏览器连同第一代码执行的第二代码。例如,广告可以被嵌入在网页中,其中该广告包括附加JavaScript代码。广告可以由服务器110服务,或者通过引用被合并到网页中并且由恶意服务器120服务。

客户端设备执行使得第一功能变得不可修改(操作730)的第一代码的第一部分。例如,因为服务器110是网页的主服务器,由服务器110服务的JavaScript的部分可以在被嵌入网页的任何其他代码之前被强制运行。在JavaScript的标准实现方式中,程序以它在页面上呈现的顺序运行。因此,在不可信任的代码之前被嵌入至页面的代码(例如,由第三方提供或者服务的页面的部分)将在不可信任的代码之前运行。代码的第一部分可以对一个或多个对象执行JavaScript冻结方法(freeze method),一个或多个对象包括提供WebRTC功能的对象。例如,代码的第一部分可以封装(wrap)RTCPeerConnection.addStream()和navigator.getUserMedia()来提供保证输入设备可以被链接到不多于一个流的功能,并且保证流不被使用多于一次。经封装的代码也可以包括对标识服务器的呼叫来认证流的目的地。一旦代码被打包,RTCPeerConnection和导航器对象经由Object.freeze()方法被冻结,其防止稍后运行的代码取消保护性封装。

在操作740,执行导致对修改第一功能的尝试的第二代码,该尝试失败。例如,第二代码可以以自动使用任何所生成的流来将数据发送至恶意客户端或者服务器的方式来尝试修改RTCPeerConnection.addStream()功能。然而,因为在操作730中RTCPeerConnection对象被冻结,在操作740中对修改addStream()功能的尝试失败并且攻击被挫败。

在操作750中,执行包括使用第一功能以经由WebRTC通信的、第一代码的第二部分。例如,在被嵌入恶意广告的JavaScript代码之后开始执行的网页的部分可以经由WebRTC建立视频呼叫。因此,通过方法700的使用,网页可以包括由不可信任的第三方服务的部分,并且在没有冒WebRTC自身将被用于破解用户通信的危险的情况下向用户提供WebRTC功能。

根据各种示例实施例,本文描述的方法中的一个或多个可以便于对WEBRTC提供商的攻击保护。当与攻击保护的其他方法或者由客户端设备在支持成功的攻击中所消耗的资源相比时,可以减少由一个或多个机器、数据库、或者设备(例如在网络环境100之内)使用的计算资源。这样的计算资源的示例包括处理器循环、网络通信量、存储器使用、数据存储容量、功耗、以及冷却容量。

图8是示出根据一些实施例的全部或部分能够从机器可读介质(例如,机器可读存储介质、计算机可读存储介质、或者它们的任何合适的组合)读取指令并且进行本文描述的一个或多个方法的机器800的组件的框图。如本文所使用的,从术语“机器可读存储介质”排除暂时信号而言,机器可读存储介质是非暂时性的。

图8以计算机系统的示例形式示出机器800的图表表示,并且在该机器内可以全部或部分执行用于使得机器800来进行本文描述的方法中的任何一个或者多个的指令824(例如,软件程序、应用、小型程式、或者其他可执行代码)。在可替换的实施例中,机器800作为独立的设备操作或者可以被连接(例如网络)到其他机器。在网络部署中,机器800可以在服务器-客户端网络环境中以服务器机器或者客户端机器的身份操作,或者在分布式(例如,点对点)网络环境中作为点机器操作。机器800可以是服务器计算机、客户端计算机、个人计算机(personal computer,PC)、平板电脑、膝上型电脑、上网本、机顶盒(set-top box,STB)、个人数字助理(personal digital assistant,PDA)、蜂窝电话、智能电话、网络电器、网络路由器、网络开关、网络桥、或者能够顺序地或者另外地执行指定将由那个机器采取的动作的指令824的任何机器。进一步,虽然只示出了单个机器,采用术语“机器”也应该被用来包括独立地或者联合地执行指令824以进行本文所述的方法中的一个或多个的全部或者部分的机器的集合。

机器800包括处理器802(例如,中央处理单元(central processing unit,CPU)、图形处理单元(graphics processing unit,GPU)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、无线电频率集成电路(radio-frequency integrated circuit,RFIC)、或者他们的任何合适的组合)、主存储器804、和静态存储器806,这些设备被配置为经由总线808彼此通信。机器800可以进一步包括图形显示器810(例如,等离子显示面板(plasma display panel,PDP)、发光二极管(light emitting diode,LED)显示器、液晶显示器(liquid crystal display,LCD)、投影仪、或者阴极射线管(cathode ray tube,CRT))。机器800也可以包括字母数字输入设备812(例如,键盘)、光标控制设备814(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器、或者其他指向仪器)、存储单元816、信号发生设备818(例如,扬声器)、网络接口设备820、以及流捕获设备(例如,捕获视频数据的相机、捕获音频数据的麦克风、或者这两者)。

存储单元816包括在其上被存储体现本文描述的方法或者功能中的任意一个或多个的指令824的机器可读介质822。指令824也可以在由机器800执行它的期间,完全或者至少部分地属于主存储器804内、在处理器802(例如,在处理器的高速缓冲存储器内)内、或者这两者内。因此,主存储器804和处理器802可以被认为是机器可读介质。可以经由网络接口设备820通过网络826发送或者接收指令824。可以由WebRTC连接将由流捕获设备828捕获的视频或者音频数据发送至另一机器800。经由网络接口设备820、经由信号发生设备818、或经由这两者接收的视频或者音频数据可以被呈现在图形显示器810上。

如本文所使用的,术语“存储器”是指能够暂时或者永久存储数据的机器可读介质,并且可以被用来包括,但不限于,随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、缓存存储器、快闪存储器、以及高速缓冲存储器。在将机器可读介质822在示例实施例中示出为单个介质的同时,术语“机器可读介质”应该被用来包括能够存储指令的单个介质或者多个介质(例如,集中式或者分布式数据库、或者相关联的高速缓存和服务器)。术语“机器可读介质”也应被用来包括能够存储用于由机器(例如,机器800)执行的指令(例如,指令824)的任何介质、或者多个介质的组合,使得指令在由机器(例如处理器802)的处理器中的一个或多个执行时使得机器来进行本文描述的方法中的任意一个或多个。因此,“机器可读介质”是指单个存储装置或者设备,以及包括多个存储装置或者设备的“基于云”的存储系统或者存储网络。术语“机器可读介质”应该相应的被用来包括,但是不限于,以固体存储器、光学介质、磁介质、或者它们的任何合适的组合的形式的一个或多个数据存储库。

贯穿该说明书,多个实例可以实现被描述为单个实例的组件、操作、或者结构。虽然将一个或多个方法的单个操作示出和描述为单独的操作,可以并行地进行一个或多个单个操作,并且不要求以示出的顺序进行操作。在示例配置中被呈现为单独组件的结构和功能可以被实现为组合的结构或者组件。类似地,可以将呈现为单个组件的结构和功能实现为单独的组件。这些和其他变化、修改、添加、和改进落入本文主题的范围之内。

一些实施例在本文中被描述为包括组件、模块、或者机构的逻辑或者数量。模块可以组成软件模块(例如,在机器可读介质或者传输信号中具体实现的代码)或者硬件模块。“硬件模块”是能够进行特定操作的有形单元并且可以以特定的物理方式被配置或者被安排。各种示例实施例,可以由软件(例如,应用或者应用部分)将一个或多个计算机系统(例如,单机系统、客户端计算机系统、或者服务器计算机)或者一个或多个计算机系统的硬件模块(例如,处理器或者处理器组)配置为进行如本文描述的特定操作的硬件模块。

在一些实施例中,可以机械地、电子地、或者它们的任何合适的组合地来实现硬件模块。例如,硬件模块可以包括永久地被配置为进行特定操作的专用电路或者逻辑。例如,硬件模块可以是专用处理器,诸如现场可编程门阵列(field programmable gate array,FPGA)或者ASIC。硬件模块也可以包括可编程逻辑或者暂时由软件配置为进行特定操作的电路。例如,硬件模块可以包括在通用处理器或者其他可编程处理器之内包含的软件。应当理解,机械地、以专用和永久配置的电路地、或者以临时配置的电路(例如,由软件配置)来实现硬件模块的决定可以由成本和时间的考虑来驱动。

因此,术语“硬件模块”应该被理解为包含有形实体,其为一种物理构建地、永久配置地(例如,硬连接地)、或者暂时配置地(例如,被编程地)来以某个方式操作或者进行本文所描述的某些操作的实体。如本文所使用的,“硬件实现的模块”是指硬件模块。考虑到在其中硬件模块被暂时配置(例如,被编程地)的实施例,硬件模块中的每一个都不需要在任何一时刻被配置或者被实例化。例如,其中硬件模块包含由软件配置以变为专用处理器的通用处理器,通用处理器可以在不同的时刻分别被配置为不同的专用处理器(例如,包含不同的硬件模块)。例如,软件可以适应性的配置处理器以在同一时刻组成特定硬件模块并且在不同时刻组成不同的硬件模块。

硬件模块可以将信息提供给其他硬件模块,并且从其他硬件模块中接收信息。因此,所描述的硬件模块可以被认为是可通信地耦合。其中同时存在多个硬件模块,可以通过在硬件模块中的两个之间或者多个当中的(例如,通过合适的电路和总线)信号传输可以完成通信。在其中多个硬件模块在不同的时刻被配置或者被实例化的实施例中,例如,通过在其中多个硬件模块访问的存储器结构中的信息的存储和检索,可以完成在这样的硬件模块之间的通信。例如,一个硬件模块可以在它可通信地耦合的存储器设备上进行操作并且存储操作的输出。然后进一步的硬件模块可以,在稍后的时刻里,访问存储器设备来检索和处理存储的输出。硬件模块也可以发起与输入或者输出设备的通信,并且可以在资源(例如,信息的集合)上操作。

至少部分地通过(例如,由软件)被暂时地配置为或者永久地配置为进行相关操作的处理器来进行在本文中描述的示例方法的各种操作。不论是暂时地还是永久地配置,这样的处理器可以组成操作进行本文描述的一个或者多个操作或者功能的处理器-实现(processor-implemented)的模块。如本文所使用的,“处理器-实现的模块”是指使用一个或者多个处理器来实现的硬件模块。

相似的,以处理器作为硬件的示例,本文描述的方法可以至少部分地处理器-实现的。例如,方法的至少一些操作可以由一个或者多个处理器或者处理器-实现的模块进行。此外,一个或者多个处理器也可以操作以在“云计算”环境中支持相关操作的进行或者作为“软件即服务”(software as a service,SaaS)而操作。例如,可以由一组计算机利用经由网络(例如,互联网)和经由一个或者多个合适的接口(例如,应用程序接口(application program interface,API))可访问的这些操作来进行(作为包括处理器的机器的示例)至少一些操作。

某些操作的进行可以分布在一个或者多个处理器当中,该一个或者多个处理器不仅属于在单个机器之中,而是被部署在多个机器之中。在一些示例实施例中,一个或者多个处理器或者处理器-实现的模块可以位于单个地理位置(例如,在家庭环境、办公室环境、或者服务器农场中)。在其他示例实施例中,一个或多个处理器或者处理器-实现的模块可以分布在多个地理位置中。

本文描述的主题的一些部分可以依据对在机器存储器(例如,计算机存储器)之中被存储为比特或者二进制数字信号的数据的操作的算法或者符号表示来呈现。这样的算法或者符号表示是由数据处理领域的普通技术人员使用来将他们工作的实质传达给其他本领域技术人员的技术的示例。如本文所使用的,“算法”是自身一致的操作的序列或者导致所期待结果的相似处理。在上下文中,算法和操作涉及物理量的物理操纵。典型的,但不是必要的,这样的量可以采用能够由机器访问、传递、结合、比较或者其他操纵的电子的、电磁的、或者光学的信号的形式。有时,主要是出于广泛使用的原因,方便使用诸如“数据”、“内容”、“比特”、“值”、“元素”、“符号”、“字符”“术语”、“编号”、“数字”等等。然而,这些词语仅仅是方便的标签并且与合适的物理量相关联。

除非另有说明,本文使用诸如“处理”、“计算”、“估算”、“确定”、“呈现”、“显示”等等的讨论可以是指操纵或变换被表示为在一个或者多个存储器(例如、易失性存储器、非易失性存储器、或者他们的任何合适的组合)、寄存器、或者接收、存储、发送、或者显示信息的其它机器组件内的物理(例如,电子的、磁的、或者光学的)量的机器(例如,计算机)的动作或者处理。另外,除非另有说明,本文中使用如专利文件所常见的术语“一”来包括一个或者多于一个实例。最后,如本文所使用的,除非另有说明,连接词“或者”是指非排他性的“或者”。

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