启用软件分布
背景技术:1.本发明总体上涉及分发和执行软件的领域,并且更具体地涉及隐蔽软件分发和执行的领域。
2.恶意软件可以感染文件、防病毒(av)或操作系统(os)级别的设备。系统内av可能能够有效地解决文件和一些os级的感染,但是对于核心os或av本身中的感染是无效的。
3.在设备上实现的诊断软件可以用于确定在设备上操作的恶意软件的存在和本质。这样的软件可操作以检测并随后移除或以其他方式隔离设备上的恶意代码。
4.恶意软件可以包括通过监测设备性能测量并选择性地阻止与下载诊断编程相关联的网络通信信道,或者通过与反恶意软件或诊断编程的活动相关联地适配恶意软件的攻击模式,来识别和规避反恶意软件诊断努力的能力。
技术实现要素:5.本发明的一个方面包括用于在设备上分发和执行软件的方法、计算机可读指令和系统,包括:提供计算机程序;将所述计算机程序分成一组碎片;提高所述碎片的通信容错性;对所述碎条进行加密;以及将各个碎条分发给设备。
附图说明
6.现在将参考附图仅通过举例来描述本发明的实施例,在附图中:
7.图1提供了本发明的实施例的系统的示意图;
8.图2提供根据本发明的实施例的联网设备的功能框图;
9.图3提供了根据本发明的实施例的步骤的示意图;
10.图4提供了根据本发明的实施例的步骤的示意图;
11.图5提供了描述本发明的实施例的流程图;
12.图6提供了描述本发明的实施例的流程图;
13.图7描绘了根据本发明的实施例的云计算环境;并且
14.图8描绘了根据本发明的实施例的抽象模型层。
具体实施方式
15.在操作系统级或在设备反病毒软件本身中受到恶意软件危害的设备可能不受用于恶意软件检测的标准方法的影响。当前恶意软件可以监视设备cpu的活动和存储活动,以确定何时以及如何执行诊断努力。恶意软件还可以监视任何诊断程序的内容,使得恶意软件能够适应于由诊断软件的规避控制。恶意软件可以控制设备的网络访问,防止下载诊断软件或通过网络连接远程诊断设备状况的任何努力。在实施例中,系统和方法使得诊断软件能够被传递到网络中的目标设备,同时还使得能够在当前恶意软件的视角之外的软件的隐蔽执行。在该实施例中,将有效载荷诊断软件或恶意软件诊断程序(mdp)分成碎片,然后使用非常规途径将所述碎片传递至目标。碎片由设备影子处理器(sp)检测,由sp从任何驻
留的恶意软件的视角之外重新组装和执行。
16.在实施例中,一种系统包括服务器和与该服务器通信并且彼此进行点对点通信的多个联网设备。这些设备广播它们的标识,使得网络中的其他设备能够确定哪些对等设备在附近。在实施例中,设备还广播附近设备的身份,使得网络设备交互能够被监视和分析。在该实施例中,对等设备包括智能电话、iot设备、联网计算机、服务器和其他网络设备。设备包括可由设备的主处理器执行的应用代码。设备可具有显示器和用户界面以及一组传感器。除了主设备处理器之外,每个设备还包括sp(影子处理器)。sp可以是单独的微处理器或者可以是作为设备的单个cpu的分区部分操作的虚拟机。sp被配置为主处理器的监视器和诸如设备存储元件的其他设备组件。该设备被配置成使sp能够监视主处理器和设备主存储器,但是防止主处理器看到sp的活动。诸如英特尔管理引擎、amd平台安全处理器或类似系统的系统架构可以用于本发明的方法。(注意:术语“英特尔(intel)”和/或“amd”可以在世界各地的不同管辖区域中尊从商标权,并且在此仅用于参考由标记适当地命名到这种商标权可能存在的程度的产品或服务。)
17.在本实施例中,sp被配置为实现数据的诸如双密钥加解密、纠删编码和反转纠删编码等密码功能。sp被预配置有与识别代码碎片以及破译和解密接收到的碎片相关联的指令和代码密钥。
18.每个网络设备可以根据其与所有其他设备的网络关系来定义,包括:特定设备与网络中的每个其他设备之间的接触频率和持续时间(设备到设备(d2d)接触模式),每个联网设备随时间推移可能影响特定目标设备占用的环境的可能性(孵化器配置文件),以及驻留在每个设备上的软件应用集合,包括关于相应应用(设备应用配置文件)的使用频率的元数据。系统管理员监视对等活动和软件更新,以维护每个系统设备的d2d接触模式、孵化器配置文件和设备应用配置文件。
19.在实施例中,一种用于分发软件的计算机实现的方法包括提供计算机代码。在此实施例中,所提供的代码可被视为用于递送至整个系统的目标元件的有效负载。有效载荷可包括水印元素、签名元素、诊断软件或旨在作为设备代码的功能方面但一旦就位或在执行期间就隐藏而不容易发现的其他元素。可以使用任何软件语言来编码有效载荷。在一个实施例中,该有效载荷包括恶意软件检测程序(mdp)代码,该恶意软件检测程序代码旨在针对恶意软件扫描系统资源并且在检测到时移除、隔离或报告该恶意软件。
20.该有效载荷软件经受撕碎过程,其中,该软件被细分为一组代码片段或碎片。每个碎片包括整个有效载荷的一部分,并且完整的一组碎片包括整个有效载荷软件的整体。撕碎过程可以采用d2d模式和设备应用配置文件和孵化器配置文件作为确定每个碎片应当有多大并且因此将需要多少碎片的潜在输入。该组碎片可被转换成二进制以便传输至目标设备。
21.可使用无线或有线通道将碎片传送到目标装置。为了减少任何传输相关错误对所传送的有效载荷的影响,可以增强容错性,即使所传输的数据的一部分被破坏或丢失,恢复碎片所包含的信息的能力。在实施例中,可以对碎片纠删编码以增加其容错性。在该实施例中,使用喷泉码、reed
‑
solomon码或其他纠删编码方法对碎片进行纠删编码。
22.在一个实施例中,可以对这些碎片进行加密。使用对称密钥或公
‑
私非对称密钥组合的加密方法可用于对碎片进行加密,以便在碎片的传输被截获并且碎片的内容被检查的
情况下使碎片的内容模糊。非对称密钥的使用为由sp解密的碎片提供认证的额外益处,因为仅可信的碎片将使用sp的非对称密钥部分适当地解密。
23.在实施例中,每个设备可以包括唯一私钥,并且服务器可以存储每个唯一设备的公钥。在该实施例中,服务器可以创建针对每个设备定制的并使用特定设备的公钥加密的碎片。经裁剪的碎片随后可作为应用更新中的补丁分发或从对等联系人分发。所述目标使用所述私钥解密所述碎片。
24.在一实施例中,服务器可包括用于加密所有碎片而不管目标设备的私钥。在该实施例中,每个设备包括保持在设备的软件或固件中的服务器的公钥。每个设备可以解密每个碎片。在该实施例中,系统管理员可以创建单个集合的碎片,这些碎片可以被传输到所有联网设备。然后,每个设备可以解密并使用该一般化的一组碎片来组装和执行mdp。
25.在实施例中,可以使用app smear编码将碎片分发至(多个)目标设备的sp。app smear编码涂抹跨多个分发设备或跨多个设备应用程序的碎片。细分原始碎片集合,然后分发碎片的子集,以降低在分发期间检测的可能性。可以使用在此描述的app smear技术单独地注入碎片。
26.在一个实施例中,使用网络中的目标设备与对等设备之间的交互来将该组碎片分发给目标设备。使用d2d模式和孵化器配置文件信息(包括联系频率和持续时间)以及每个对等设备相对于目标设备可用的注入源,在目标的网络对等端上分发或涂抹该组碎片。更多的碎片可被分配到与目标具有更大接触频率、或与目标具有更长接触持续时间、或具有更多注入通道的装置。作为示例,第一对等设备可以具有指示每月一次联系的d2d模式,而且还指示超过一小时的接触持续时间以及若干注入通道,第二对等设备的d2d模式可以指示每15分钟的短持续时间联系,并且第三设备的d2d模式可以指示每天一次的短持续时间联系。在该示例中,所有期望的碎片可被分配到第一设备用于注入,并且所述碎片组的一部分可被分配到第二和第三设备中的每一个用于注入。单独的碎片可被分发到多个对等设备以加速有效载荷到目标设备的递送。
27.在实施例中,注入源利用非常规途径(如周围环境被动感测)来避免集中于监测设备api的检测测量。在该实施例中,注入源可以是对等设备或系统处理器或服务器资源。在该实施例中,对等设备可以通过改变目标设备的环境来与目标设备进行交互,从而使得目标设备被动传感器向数据寄存器写入。系统处理器或服务器资源还可通过经由对建造的环境系统和资源的改变而改变目标的环境来与目标装置交互。写入的数据可以触发读取传感器数据寄存器的算法中的运行时间异常。被触发的异常由监控设备的主处理器的sp感测。环境传感器对于驻留的恶意软件而言难以或不可能阻塞或禁用。在此实施例中,算法可读取设备传感器的寄存器,包含光、加速度、温度、压力、磁场和声音传感器。
28.在本实施例中,sp预先配置有数据模型,使得sp能够将被触发的异常序列识别为碎片代码。sp组装异常数据并重新创建个体碎片。对组装的碎片进行解密,从而反转加密过程和纠删编码过程并且产生原始代码碎片。然后,使用序列信息将原始碎片分解成原始有效载荷软件,该序列信息将从原始程序转移到碎片中,并执行以完成原始程序的任务。
29.可替代地,随着对等设备改变目标的环境,从而改变目标的传感器的数据寄存器中的值,sp遵循预配置的指令可以直接读取设备传感器寄存器以恢复碎片,从而绕过对主处理器的触发异常进行监测的需要。
30.在一实施例中,可通过应用更新将碎片部署到目标。在该实施例中,设备应用的数据库由管理员维护,以跟踪在任何特定设备上存在哪些应用,以及设备上的应用的使用频率、设备应用配置文件(dap)。
31.一旦设备被识别为目标,dap就可以用于识别应用,以供进一步分析,从而识别用于代码注入的合适位置。可分析应用程序以识别用于先前转换成可执行但非功能的代码串的插入碎片的位置。应用程序控制流分析可用于识别代码中包含热点的部分应用程序代码(这些代码在应用程序的正常使用或常见使用期间会频繁执行),以及具有稳定流程执行且几乎没有分支指令的部分。具有稳定流程的热点位置表示用于代码插入的良好位置。
32.在本实施例中,碎片可被转换成不会影响包含该碎片的主机应用程序的主代码的代码指令。作为示例,碎片的序列10010000011可以被注入为另外的非功能代码序列:
33.add r1,r2,tmp_register
34.add r2,r1,tmp_register
35.noop
36.noop
37.noop
38.br j1;j1:next_instruction,其以不影响主代码的方式使用。散布在主代码中的此类指令的序列促进代码隐藏。在本实施例中,add r1、r2、tmp_register代表10,add r2、r1、tmp_register代表01,noop代表00,并且br代表11。
39.每个碎片可被转换成可执行但非功能代码的类似串,并且作为补丁被插入在应用程序中所识别位置处以增加目标设备将执行打补丁的应用程序代码的可能性。
40.可以将主机应用的适当打补丁版本(现在包含有效载荷的嵌入碎片)作为看起来是例行应用更新的事物提供给设备。跨多个设备应用程序平滑原始程序的碎片降低了被监视设备活动的恶意软件发现的可能性。
41.在本实施例中,sp可以针对非功能代码扫描所下载的应用的更新、或由主处理器的应用执行,并且将代码组装到注入的碎片中。sp可以预先配置有解密密钥以将非功能代码串转换成碎片的二进制序列。sp然后对碎片进行解密和去纠删编码,以获得如上所述的原始代码部分。sp使用包含在原始有效载荷源代码中的序列信息来组装累积的碎片。
42.在实施例中,目标设备的sp可以进一步充当碎扩散设备的网络的一部分。在该实施例中,目标设备sp纠删编码并加密已被接收和解密的碎片,并且当目标和其他设备彼此接近时,继续使用非常规通道向其他网络设备发送经加密的碎片。在本实施例中,管理员可以将所有设备作为目标设备。服务器可以试图使用本发明的方法跨所有网络设备散布有效载荷反恶意软件的软件。可以使用应用程序更新以及为每个设备量身定制的对等方法来分发或一般化加密的有效负载碎片,以涵盖向所有设备的传递。
43.在实施例中,目标设备的sp执行已经被累积、解密和组装的代码。累积代码的执行可指示在设备系统上操作的恶意软件的存在。恶意软件可由mdp移除或隔离。代码还可以创建活动日志并传送其活动。在检测到的恶意软件已经被移除或隔离的实施例中,通信可以处于高级别,诸如提供到日志文件或在目标设备的显示器上呈现的其他信息的链接的弹出窗口,或者一旦已经减轻恶意软件对网络信道的任何控制,则通过网络上的直接通信。在已经检测到但未缓解恶意软件(潜在地使常规通信通道经受恶意软件的控制或观察)的实施
例中,这些通信可以是mdp分布的反转。在实施例中,消息被划分成碎片,被纠删编码、被加密并且被使用对等设备感测到的光、声音、磁场或振动跨对等网络分布。在该实施例中,由系统接收消息触发进一步的活动,诸如记录恶意软件的成功移除,或者在恶意软件存在的成功识别但未能缓解恶意软件影响的情况下需要额外的步骤。
44.在图1所示的实施例中,通常标记为100的系统包括服务器子系统102和多个联网的客户端设备104、106、108、110和112。联网设备104、106、108、110和112通过网络114与服务器和彼此无线地通信。联网设备104、106、108、110和112还可以使用其他非常规信道(未示出)彼此交互,诸如对目标设备t(未示出)的环境的光、声音、温度、磁场和压力改变,以将数据写入设备的数据寄存器。每个客户端设备104、106、108、110和112包括客户端程序115,该客户端程序在被执行时执行本文描述的目标设备的操作任务。
45.如图1所示,服务器子系统102包括服务器计算机150。图1示出根据本发明的实施例的图1的分布式数据处理环境100内的服务器计算机150的组件的框图。应当理解,图1仅提供了一个实现方式的图示并且不暗示关于其中可以实现不同实施例的环境的任何限制。可以对所描绘的环境进行许多修改。
46.服务器计算机150可以包括(多个)处理器154、包括随机存取存储器(ram)160和高速缓冲存储器162的存储器158、持久存储器170、通信单元152、(多个)输入/输出(i/o)接口156和通信结构140。通信结构140在高速缓存器162、存储器158、持久存储器170、通信单元152和输入/输出(i/o)接口156之间提供通信。通信结构140可利用被设计用于在处理器(诸如微处理器、通信和网络处理器等)、系统存储器、外围设备和系统内的任何其他硬件组件之间传递数据和/或控制信息的任何架构来实现。例如,通信结构140可利用一条或多条总线来实现。
47.存储器158和持久存储器170是计算机可读存储介质。在该实施例中,存储器158包括随机存取存储器(ram)。通常,存储器158可包括任何合适的易失性或非易失性计算机可读存储介质。高速缓存器162是快速存储器,其通过保持来自存储器158的最近访问的数据以及最近访问的数据附近的数据来增强处理器154的性能。
48.用于实践本发明的实施例的程序指令和数据(例如,软件分发程序175)被存储在持久存储器170中以由服务器计算机150的相应处理器154中的一个或多个经由高速缓存器162执行和/或访问。在该实施例中,持久存储器170包括磁性硬盘驱动器。可替代地,或除了磁性硬盘驱动器之外,持久存储器170可包括固态硬盘驱动器、半导体存储设备、只读存储器(rom)、可擦除可编程只读存储器(eprom)、闪存或能够存储程序指令或数字信息的任何其他计算机可读存储介质。
49.持久存储器170所使用的介质也可以是可移除的。例如,可移动硬盘驱动器可以用于持久存储器170。其他示例包括光盘和磁盘、拇指驱动器和智能卡,其被插入到驱动器中以便转移到也是持久存储器170的一部分的另一计算机可读存储介质上。
50.在这些示例中,通信单元152提供与其他数据处理系统或设备(包括客户端计算设备104、106、108、110和112的资源)的通信。在这些实例中,通信单元152包括一个或多个网络接口卡。通信单元152可以通过使用物理和无线通信链路之一或两者来提供通信。软件分发程序,以及用于实现本发明的其他程序和数据,可以通过通信单元152下载到服务器计算机150的持久存储器170中。
51.(一个或多个)i/o接口156允许与可以连接到服务器计算机150的其他设备的数据输入和输出。例如,(一个或多个)i/o接口156可以提供到(一个或多个)外部设备190(诸如键盘、小键盘、触摸屏、麦克风、数码相机、和/或一些其他合适的输入设备)的连接。(一个或多个)外部设备190还可包括便携式计算机可读存储介质,诸如例如拇指驱动器、便携式光盘或磁盘、以及存储卡。用于实施本发明的实施例的软件和数据(例如,服务器计算机150上的软件分发程序175)可存储在这种便携式计算机可读存储介质上,并且可经由i/o接口156加载到持久存储器170上。i/o接口156还连接到显示器180。
52.显示器180提供用于向用户显示数据的机制,并且可以是例如计算机监视器。显示器180还可充当触摸屏,例如平板计算机的显示器。
53.如图2所示,代表性联网客户机设备104包括主处理器1041、sp 1042、网络通信层1043、设备存储器1044和感测层1045。感测层1045包括一个或多个设备传感器、相机、话筒、加速度计、温度计、气压计、风速计和本领域已知的其他传感器。传感器(未示出)向主处理器1041和sp1042中的每一个可访问的寄存器(未示出)输出数据。主处理器1041和装置存储装置1044的活动对于sp1042是可见的。sp1042的活动对于主处理器1041是不可见的。主处理器1041和sp1042中的每一个可通过联网层1043与环境交互。
54.在图3所示的实施例中,在步骤1中,附图标记300,在310,mdp由图1的服务器子系统计算机150转换成碎片,从而执行图1的软件分发程序175。在320,碎片被计算机150纠删编码。在330,由计算机150加密纠删编码碎片。如图所示,加密的碎片由计算机150传递到步骤2,附图标记350。在步骤2中,将加密的碎片分发到目标设备t。经加密的碎片330可以分布在一组对等联网设备104、106、108、110和112之间,以便传输到其他设备和目标设备t。然后,通过将服务器子系统102和联网设备104、106、108、110和112组合,通过改变设备的环境,使用非传统信道和设备t的感测层数据寄存器将加密碎片注入到其他设备和目标设备t中。
55.在此实施例中,联网设备104、106、108、110和112中的任何一个可以是代码碎片插入的目标。在一个实施例中,系统的每个设备104、106、108、110和112是目标设备t。在该实施例中,系统管理员(图1的服务器计算机150)可以确定需要向所有网络设备200分发mdp。加密的碎片330可以作为可执行的非功能代码340由服务器计算机150插入到驻留在目标设备t上的应用的副本中。然后,服务器计算机150可以使用常规网络信道将可执行的非功能代码340作为驻留应用程序的打补丁版本直接传输到目标设备t。非功能代码可随后被转换成二进制、被解密并由目标设备t的sp组装成mdp。
56.图4和图6中所示的活动由执行图1的软件分发程序115的目标设备的sp执行。在图4所示的实施例中,在410,sp使用预先配置的密钥(诸如非对称密钥对的私钥或公钥)解密一组累积的碎片,从而产生一组纠删编码的碎片。在420处,然后由sp对纠删编码的碎片进行反向删编编码,从而产生原始碎片。在430处,原始碎片416然后由sp使用碎片中携带的排序信息组装成原始mdp 440。原始碎片也由sp在450处纠删编码,并且由sp在460处加密,以便由sp传输到其他设备。
57.图5的流程图500展示了本发明的实施例的操作步骤。在程序开始之后,在步骤510,由服务器子系统计算机150将mdp撕碎成一组代码碎片。步骤510的碎片随后在步骤520使用喷泉码、reed
‑
solomon技术或其他纠删编码方法由计算机150进行纠删编码。然后,在
步骤530,计算机150使用非对称密钥对中的一个密钥对纠删编码碎片进行加密。然后,在步骤540,使用上述分发方法,由计算机150和联网设备104、106、108、110和112将经加密的碎片分发到设备。
58.在图6的流程图600所示的实施例中,在步骤610,sp累积程序碎片。碎片从注入部位(例如传感级数据寄存器、主处理器算法触发的异常、以及来自打补丁的应用更新的非功能代码)累积。在步骤620,sp使用预先配置的密码密钥来解密和认证碎片。然后,在步骤630,由sp对解密的碎片进行反向纠删编码,以产生原始碎片。在步骤640处,sp使用包含在原始代码中的排序信息将原始碎片组装到原始可执行程序中。在步骤650,由sp然后执行原始程序代码。在步骤660,也由sp对原始碎片纠删编码。在步骤670,由sp对纠删编码的碎片加密。在步骤680,由sp将加密的碎片传输到其他设备。
59.在实施例中,系统管理服务器接收更新的mdp。更新的mdp被撕碎、纠删编码和加密。然后,将得到的碎片作为非功能代码插入驻留在系统中的多个联网设备的一部分上的一个或多个应用程序中。将打补丁后的应用程序作为更新推送到网络设备。设备执行打补丁的应用程序,使得设备的sp能够识别和提取来自非功能指令的加密的代码碎片。使用公钥解密所述碎片。然后对碎片进行反向纠删编码以提取原始程序碎片,然后将其组装到更新的mdp中并执行。随后,利用多个装置直接注入网络的其余部分,将碎片散布在网络上。注入由多个设备发生,所述多个设备通过发射光、磁场和声音等来改变剩余设备的环境,以在剩余设备与多个设备接近时改变剩余设备的数据寄存器。
60.在实施例中,一种计算机实现的方法包括:由设备的sp累积计算机代码的碎片;从所述累积的碎片组装可执行程序;以及执行所述组装的计算机程序。
61.本实施例还可以包括通过监控设备的处理器来提取碎片的步骤,其中,通过监控设备的处理器来提取碎片的步骤包括:sp监控设备代码中触发的异常,或者转换已执行设备代码中的指令。
62.实施例还可以包括:读取设备传感器数据寄存器,对碎片进行解密包括对碎片进行认证,以及对碎片进行反纠删编码。
63.在本实施例中,执行组装计算机程序的步骤包括:生成输出;将所述输出划分为碎片;以及传输所述碎片并且可选地包括对碎片进行纠删编码;以及传输所述纠删编码的碎片,以及对所述碎片进行加密,以及传输所述加密的碎片。
64.本实施例还可以包括:获取原始软件碎片;对所述软件碎片进行解密;对所述软件碎片纠删编码和加密;以及传输所述加密的碎片。
65.在一个实施例中,一种用于分发软件的计算机程序产品包括一个或多个计算机可读存储设备和存储在所述一个或多个计算机可读存储设备上的程序指令,所存储的程序指令包括:用于累积计算机代码碎片的程序指令;响应于碎片的所述累积,从所述累积的碎片组装可执行程序的程序指令;以及响应于来自所述碎片的可执行程序的组装,用于执行所述组装的程序的程序指令。
66.本实施例可以进一步包括用于通过监测主设备处理器,由sp提取碎片的程序代码以及用于直接读取设备环境传感器数据寄存器的程序代码。
67.实施例可以进一步包括用于以下各项的程序代码:检索原始代码碎片;响应于检索原始代码碎片,用于对原始代码碎片进行纠删编码的程序代码;响应于原始代码碎片的
所述纠删编码,用于加密所述纠删编码碎片的程序代码;以及响应于所述纠删编码的碎片的所述加密,用于传输所述加密的碎片的程序代码。
68.在一个实施例中,一种用于分发软件的计算机系统包括:一个或多个计算机处理器;一个或多个计算机可读存储设备;存储在所述一个或多个计算机可读存储设备上的用于由所述至少一个计算机处理器执行的程序指令,所存储的程序指令包括:用于累积计算机代码碎片的程序指令;响应于碎片的所述累积,从所述累积的碎片组装可执行程序的程序指令;以及响应于来自所述碎片的可执行程序的组装,用于执行所述组装的程序的程序指令。执行所组装的计算机程序。
69.本实施例还可以包括用于通过sp监控主设备处理器提取碎片的程序代码和用于直接读取设备环境传感器数据寄存器的程序代码、以及用于以下各项的程序代码:检索原始代码碎片;响应于原始代码碎片的所述检索,对所述原始代码碎片进行纠删编码;加密所述纠删编码的碎片;以及传输所述加密碎片。
70.本公开可以被实现为转向密钥系统,其中,所有系统部件被提供给客户端,该客户端然后安装并管理这些公开的内容的使用。在实施例中,本公开可以实现为服务,其中服务提供商提供所有必需的实现并且还提供使用和维护系统和方法所必需的管理方面。其中由客户端承担一些方面而其他方面由服务提供者承担的混合实现也是可能的。可以利用典型的联网资源来实现本公开的系统和方法。所述系统和方法还可使用云计算资源来实现。
71.首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
72.云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
73.特征包括:
74.按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
75.广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理pda)对云的使用。
76.资源池:提供者的计算资源被归入资源池并通过多租户(multi
‑
tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
77.迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
78.可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资
源使用情况,为服务提供者和消费者双方提供透明度。
79.服务模型如下:
80.软件即服务(saas):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
81.平台即服务(paas):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
82.基础架构即服务(iaas):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
83.部署模型如下:
84.私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
85.共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
86.公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
87.混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
88.云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
89.现在参考图7,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(pda)或移动电话54a,台式电脑54b、笔记本电脑54c和/或汽车计算机系统54n。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(iaas)、平台即服务(paas)和/或软件即服务(saas)。应当理解,图7显示的各类计算设备54a
‑
n仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。
90.现在参考图8,其中显示了云计算环境50(图7)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图8所示,提供下列层和对应功能:
91.硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机61;基于risc(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。软件组件的例子包括:网络应用服务器软件67以及数据库软件68。
92.虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。
93.在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(sla)计划和履行功能85:为根据sla预测的对云计算资源未来需求提供预先安排和供应。
94.工作负载层90提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航91;软件开发及生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;以及软件分发程序175。
95.在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
96.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd
‑
rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
97.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
98.用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一
个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
99.这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
100.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
101.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
102.图中的流程图和框图说明了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就此而言,流程图或框图中的每个块可以表示指令的模块、段或部分,其中包括用于实现指定逻辑功能的一个或多个可执行指令。在一些替代实现中,块中所述的功能可能出现在图中所示的顺序之外。例如,实际上,连续显示的两个块可以基本上同时执行,或者根据所涉及的功能,有时可以以相反的顺序执行这些块。还应注意的是,框图和/或流程图图解的每个块,以及框图和/或流程图图解中的块的组合,可由基于专用硬件的系统实现,该系统执行指定的功能或动作,或执行专用硬件和计算机指令的组合。