用于提供隔离的熵元素和熵元素生成器的方法
技术领域
本发明一般地涉及用于为虚拟机提供隔离的熵元素的方法。本发明进一步涉及熵元素生成器、计算系统、数据处理程序和计算机程序产品。
背景技术
在虚拟化的计算环境中,仅有若干个熵源(即,随机数)是可用的,因为通常没有实际的时钟中断、没有实际装置、隔离的网络不显示出虚拟机中的任何业务。即使有的话,也可能是存在若干个其他的熵源。这可能导致软件安装问题,例如,在安装虚拟机的期间不得不生成安全密钥,因为系统可能缺少足够的熵,或多个虚拟化操作系统映像之间的熵可能太相似而无法满足安全标准的需要。有时,即使在虚拟机中安装操作系统由于没有足够的熵可用而不成功,并且必要的主机安全密钥不能被生成。一个典型的例子是计划的Linux操作系统安装,其需要在安装期间生成随机安全密钥,以与ssh后台程序(安全外壳后台程序)一起使用,以用于SSL通信协议(SSL=安全套接层)。此类的协议可以用于登入进新安装的Linux操作系统。因为基于一个或多个随机数的安全密钥不能被生成,因此可以简单地停止安全过程。
存在各种方法来缓解该问题,这些方法可以按照虚拟化效率的顺序:
(1)在虚拟机中添加伪熵源,像媒体接入控制号或可用的序列号。然而,通常这可能不会产生足够量的熵,并且可能仅提供具有有限质量的熵。此外,该方法目标针对于嵌入式装置并且可以仅部分地应用于虚拟化的环境。
(2)从主机计算机向虚拟服务器转发熵源:这将使用在主机计算机上产生的熵。
(3)使用硬件随机数生成器:这可能是一个好的解决方案。然而,这可能是昂贵的并且可能取决于相应硬件的可用性。
如上所述,可能的解决方案(1)和(3)具有缺陷。第二方案(2)可能引入附加的缺陷:在多租户环境中-例如,由基础设施即服务(IaaS)提供商所提供的云计算环境中,攻击者可能影响在管理程序(“hypervisor”)中可获得的熵的质量,例如通过规律地发送小的消息分组以影响对已知时间模式的中断,或类似的攻击。即使依赖于输入/输出中断的定时的密钥生成过程可能不是100%可预测的,对使用基于此类的熵元素的安全密钥的虚拟机的强力安全攻击可能降低其所需的努力来闯入进受攻击的虚拟机。
熵的问题已经通过各种文献来解决了。这些文献中的之一可以是US 2001/0047545A1,其解决了用于虚拟机的熵池。在计算装置的主机操作系统中,至少部分地基于计算装置的一个或多个硬件组件的每个硬件组件来收集熵数据。至少部分地基于收集的熵数据来更新熵池,并且向运行为计算装置的虚拟机的客户操作系统提供来自于熵池的数据。
然而,该技术方案也留有缺陷,因为攻击者对于一系列已经安装的虚拟机的I/O攻击可能导致针对于另一用户的另外虚拟机的安装的随机数生成。
因此,存在对于在虚拟计算环境中特别是多租户云计算环境中更好的熵元素,即具有更高的随机性的数据元素的需求。
发明内容
该需求可以通过根据独立权利要求的用于提供隔离的熵元素的方法、熵元素生成器、计算系统、数据处理程序和计算机程序产品来解决。
根据一个方面,可以提供一种用于为虚拟机提供隔离的熵元素的方法。该方法可以包括可选地提供管理程序并且在该管理程序上部署至少一个虚拟机。另外,该方法可以包括由管理程序基于触发生成熵元素,以及向每个熵元素分配标识符,其中对于选择的虚拟机,基于触发的熵元素可以分配有相同的标识符。进一步,该方法可以包括对于选择的虚拟机,限制使用具有相同标识符的熵元素。
根据另一方面,可以提供一种用于为虚拟机提供隔离的熵元素的熵元素生成器,其可以包括部署单元,该部署单元适于在管理程序上部署至少一个虚拟机。进一步,熵元素生成器可以包括生成器模块,该生成器模块适于由管理程序基于触发来生成熵元素。分配单元可以适于向每个熵元素分配标识符。对于选择的虚拟机,基于触发的熵元素可以分配有相同的标识符。其可以包括可选地管理程序单元,其适于提供管理程序,具体地在主机计算机上。
另外,限制单元可以进一步适于对于选择的虚拟机,限制使用具有相同标识符的熵元素。
根据另一方面,可以提供一种计算机系统,其包括中央处理单元和存储器,以及熵元素生成器。
也可以注意到熵元素也可以被视为伪随机数。此外,标识符可以有助于将熵元素限制到恰一个,即,选择的虚拟机。具有分配的不同标识符的不同熵元素可以用于不同的虚拟机。
在本说明书的上下文中,可以使用下面的约定、术语和/或表达:
术语“熵”可以表示并且在这可以是随机性的同义词。数据元素的熵越高或越好,则各个数据元素的随机性可以越好。
在上述熵定义的意义下,术语“熵元素”可以表示伪随机数。如所知的,在计算机系统中需要随机数来用于生成例如用于加密目的的安全密钥。
术语“熵元素池”可以表示多个熵元素,即随机数。熵元素池可以是空的,即,可以不包括任意的随机数。熵元素池可以包括具有共同特性(例如,相同的分配的标识符)的熵元素。
术语“隔离的熵元素”可以表示可以专用于特定的虚拟机的熵元素。可以说用于一个特定虚拟机的熵元素可以与用于另一虚拟机的其他熵元素隔离。用于区分专用于不同熵元素池的熵元素的一个特征是向熵元素分配标识符。
“管理程序”可以表示一块计算机程序或固件、其允许包括用于虚拟机的运行时环境的创建。管理程序可以表示为虚拟机监视器。管理程序可以运行在物理主机计算机上并且虚拟机可以表示为完全以软件实施的客户机器。因此,管理程序可以表示具有虚拟计算平台的客户操作系统,并且可以管理客户操作系统的执行,包括到物理主机计算机的物理世界的所有信息交换。各种操作系统的多个实例可以共享对于物理资源的虚拟化主控。也提到大型机环境可以允许嵌套的虚拟化,即,管理程序可以运行在大型机环境的LPAR(逻辑分区)中。可以使用也可以被视为管理程序的处理器资源/系统管理器来实现大型机计算机的资源的分离。
术语“触发”可以表示一种外部发起的事件,像例如键盘上的击键的效果、进入的网络业务、来自于指向装置的点击事件、或类似等。触发可以基于硬件或软件源,或其组合。
建议的用于提供隔离的熵元素的方法可以提供以下的几个优势:
所建议的用于向虚拟机提供隔离的熵元素的方法可以允许将通过使用管理程序生成的熵元素专用于特定的或选择的虚拟机。这可以限制由运行在相同的管理程序上的其他虚拟机对虚拟机的熵元素生成的影响。因此,用于为一个或多个专用虚拟机的熵元素的生成的输入/输出业务可以不影响用于不属于一个或多个专用虚拟机的虚拟机的熵元素。因此,对于在相同管理程序上的不同虚拟机的熵元素生成和专用可以彼此分开和隔离。因此,相比较于其中熵元素的联合池用于所有虚拟机的情形,基于源自于管理程序的熵元素的虚拟机的安全密钥生成可以具有更高的随机性。
用于提供隔离的熵元素的建议的方法和相关生成器可以(作为结果)对于新近安装的虚拟机实现更高程度的安全性。攻击者可能无法通过检测管理程序上的一系列虚拟机来预测或限制新近生成的熵元素的范围。熵元素可以用于向虚拟机生成用于安全的通信协议的安全密钥。
根据该方法的一个实施例,触发可以基于包括下面的组中的一个:对于选择的虚拟机的输入信号的时间戳、选择的虚拟机的输出信号的时间戳以及专用于选择的虚拟机的其他中断。这可以包括硬件或软件定时器。可以注意的是这里的“专用”可以意味着例如中断由于目标针对于选择的虚拟机的数据而提出。这可以源自于进入的网络分组中,其内容可以专用于特定的虚拟机。此类的触发对于熵元素的随机性可能或多或少是个好的源。另外,可以使用基于硬件的熵元素生成器。它们可以例如基于白噪声生成二极管。
根据该方法的进一步实施例,具有相同的标识符的熵元素可以构建具体在管理程序内的熵元素池。通过这种方式,生成的选择的熵元素可以仅分配给单个的虚拟机。具体地,基于涉及第一虚拟机的触发的熵元素的使用可以不用于第二虚拟机。然而,第二虚拟机可以具有分配的它自己的熵元素池。因此,运行在管理程序上的每个虚拟机可以具有它们自己的熵元素池。
根据该方法的一个高级实施例,该方法可以包括构建被分配给管理程序和/或由管理程序管理的熵元素池。这可以是通用熵元素池,其可以不专用于特定的虚拟机。此类的通用熵元素池的熵元素也可以在特定条件下用于所有的虚拟机。然而,此类的熵元素可以具有相对低的随机性,特别是如果它们可以基于输入/输出触发。它们的随机性可以受入侵者的影响,如下所解释的。
该方法的一个实施例可以包括混合不同虚拟机的熵元素池的熵元素。例如,可以混合两个或多个熵元素。这可以通过保持原始的熵元素池或通过构建新的更大的组合的熵元素池来选择性地完成。此类的混合目的在于当相比较于单个的熵元素池时,具有这样的熵元素的熵元素池,该熵元素具有更大的随机性。选择用于混合的熵元素池可以涉及虚拟机由基于虚拟化的云的环境中的相同运营商或租户所操作。如果两个虚拟机属于不同的运营商,则可以阻止混合虚拟机的不同运营商或租户的熵元素。通过这种方式,可以阻止关于跨虚拟机运营商的随机数生成的影响。
根据一个实施例,混合可以包括从第一熵元素池选择至少一个熵元素并且将其包括在分配给另一虚拟机的第二熵元素池中。该包括可以包括从一个熵元素池到另一个熵元素池的传输,以及将相关的熵元素从一个熵元素池向另一个熵元素池复制。这可以进一步增强不同熵元素池内的熵元素的随机性。熵元素的选择可以例如基于轮询或其他函数。
替代地,混合可以包括组合两个不同熵元素池的熵元素,由此构建联合熵元素池。联合熵元素池可以确保比熵元素的单个池更高的随机性。可以进一步确保如果多于一个的运营商可以操作相同管理程序上的不同虚拟机,则相同运营商具体地租户运营商的熵元素池可以被联合,这与如在虚拟化云计算中心中的情形一样。
多于两个的熵元素池也可以被合并或组合,并且可以被视为与单个虚拟机有关的常规熵元素池,像在两个熵元素池的组合的情形中用于进一步的处理。联合熵元素池可以专用于一个单个的虚拟机或多个虚拟机。也可以合并驻留在相同或不同的主机计算机上的不同管理程序上的熵元素池。
根据该方法的一个增强型实施例,熵元素可以从管理程序具体地从相关的熵元素池使用接口向虚拟机传输。此类的接口可以是虚拟化或并行虚拟化的接口。已知功能“virtio-rng”可以有助于实现此类的传输。然而,可以使用管理程序来存储和管理熵元素池。仅在其中在虚拟机内需要熵元素的情形中,可以从相关的熵元素池选择熵元素并且经由接口向虚拟机传输。
根据一个实施例,在联合熵元素池的情形中,在已经向第一例如选择的虚拟机传输预定数目的熵元素后,可以向第二虚拟机传输熵元素。此类的机制可以确保需要更高数目的熵元素(例如在被安装和部署的过程期间)的选择的虚拟机可以在熵元素在向另一例如已经运行的虚拟机传输前,可以首先被服务。这可以确保快的和更为安全的安装新的虚拟机,这些新的虚拟机需要部署,因为它们可能需要一定数目的熵元素或熵元素字节,以便生成安全密钥或安全密钥对。
根据该方法的进一步增强的实施例,可以在向与熵元素池相关的选择的虚拟机已经传输了预定数目的熵元素后,执行从第一熵元素池选择至少一个熵元素。这种来自不同熵元素池的混合元素可以确保虚拟机可以在例如安装虚拟机以便生成安全密钥的期间接收足够的熵元素。对于初始化像SSL加密以便由用户安全登录到虚拟机来说,可能例如需要安全密钥。由于丢失用于生成安全密钥的随机数(其对于完成安装可能是需要的),也可能造成停止或阻止虚拟机的安装的完成。
根据一个特定实施例,选择可以包括将分配给管理程序的熵元素池的、用于与分配给虚拟机的熵元素池混合的熵元素的数目限制到分配给虚拟机的熵元素池的熵元素数目的预定百分比。此类的技术可以确保不会有太多的来自于与管理程序相关的池的通用熵元素与专用于单个虚拟机的熵元素相混和。专用于虚拟机的熵元素池可以受到通用熵元素池的元素的削减。这可能减小可以专用于单个虚拟机的熵元素池的熵元素的随机性。相关的百分比可以由预定的值来预设。
进一步,实施例可以采取可以由计算机可用或计算机可读介质访问的计算机程序产品的形式,其提供计算机代码以便由计算机或任意指令执行系统来使用或结合计算机或任意指令执行系统来使用。为了描述的目的,计算机可用或计算机可读介质可以是任意的设备,其可以包含用于存储、传送、传播或传输程序的装置,该程序由指令执行系统、设备或装置使用或结合指令执行系统、设备或装置来使用。
介质可以是用于传播介质的电的、磁的、光的、电磁的、红外或半导体系统。计算机可读介质的例子可以包括半导体或固态存储器、磁带、可移动计算机盘、随机随取存储器(RAM)、只读存储器(ROM)、硬性磁盘和光盘。光盘的当前例子包括致密盘只读存储器(CD-ROM)、致密盘-读/写(CD-R/W)、DVD和蓝光盘。
也应该注意的是已经参考不同的主题描述了本发明的实施例。具体地,已经参考方法类型的权利要求描述了一些实施例,而已经参考设备型权利要求描述了其他的实施例。然而,本领域技术人员将从上述以及下面的描述获悉除非以其他方式通知,除了属于一种类型的主题的特征的任意组合以外,涉及不同主题的特定之间的任意组合,具体地,方法类型权利要求的特征之间以及设备类型权利要求的特征之间,也被考虑为在本文档内公开。
上面定义的方面以及本发明的进一步方面从将在下面描述的实施例的例子变得明显,并且将参考实施例的例子来解释,但本发明并不限于此。
附图说明
现在将仅通过例子并且参考下面的附图来描述本发明的优选实施例:
图1示出用于提供隔离的熵元素的本发明方法的框图;
图2示出根据现有技术的连同虚拟机和熵元素池的管理程序;
图3示出对于每个虚拟机的连同虚拟机和专用、隔离的熵池的管理程序的框图;
图4示出选择性的联合熵元素池的框图;
图5示出根据本发明概念的熵元素生成器的框图;
图6示出包括熵元素生成器的计算机系统的框图。
具体实施方式
在下文中,将给出附图的详细描述。附图中的所有指令是示意性的。首先,给出用于提供隔离的熵元素的本发明方法的一个实施例的框图。之后,将描述方法和熵元素生成器的进一步实施例。
图1示出用于为虚拟机提供隔离的熵元素的方法100的一个实施例的框图。该方法100可以包括可选地提供102管理程序,特别地是在主机计算机系统上提供管理程序。该方法100可以进一步包括在管理程序上部署104至少一个虚拟机。
此外,该方法可以进一步包括产生106熵元素,以及向每个熵元素分配108标识符。熵元素可以由管理程序202基于触发来生成,该触发可以基于例如输入/输出中断,其中相关的通信分组内容可以向某个虚拟机指示关系。对于选择的虚拟机,可以基于触发的那些熵元素可以分配有相同的标识符。因此,多组熵元素可以被构建为具有相同的标识符。此类的多组熵元素可以构建熵元素池。
替代于使用基于来自于其他虚拟机的触发的熵元素,通过对于选择的虚拟机,限制110使用具有相同标识符的熵元素,可以产生隔离的熵元素。隔离可以被理解为仅对一个虚拟机管理一组熵元素。如果需要,可以仅向相关的虚拟机传输该熵元素。
图2示出根据现有技术的连同虚拟机VM1204、VM2206、VM3208、VM4210和熵元素池212的管理程序202的框图200。熵元素池212可以包括可以用于所有四个虚拟机VM1204、VM2206、VM3208和VM4210的熵元素。
可以这样来演示典型的攻击者场景:在云提供商的虚拟化云计算环境中,例如,基础设施即服务,虚拟机VM1204、VM2206、VM3208可以由攻击者来操作。可以使用输入/输出事件或中断来生成熵元素或随机数。这些中断可以到达管理程序202。这里,可以使得熵元素的联合池212可用。攻击者可以规律地产生并且在可预测的时间向虚拟机VM1204、VM2206、VM3208发送消息,并且因此影响在熵元素池212中可获得的熵元素池。尽管攻击者可能无法准确地预测专用的熵元素,对于熵元素的可用选项的数目可以在联合熵元素池212中受到限制。这可能由于用于为熵元素池212生成熵元素的时间戳机制。因此,随着更多例如由潜在的攻击者操作在管理程序上的虚拟非受信服务器,安全危险可能增长。
尝试安装虚拟机VM 210的IaaS环境的另一租户可以取决于来自于熵元素池212的熵元素。在虚拟机VM4210中可能需要熵元素来生成用于安全登录到新近安装的虚拟机VM4210的安全密钥。然而,由于上述的由管理程序202为虚拟机VM1204、VM2206、VM3208所处理的输入/输出信号,熵元素池202中的熵元素的随机化可能是低的。因此,对于基于安全密钥来登录进虚拟机VM4210,攻击者可能仅不得不尝试有限数目的熵元素,因为安全密钥可能由于有限的随机性而现在仅确保有限的安全性。
图3示出连同虚拟机VM1204、VM2206、VM3208、VM4210的管理程序202以及对于每个虚拟机的专用隔离的熵池214、216、218、220的框图300。
可以对作为熵元素的传统源的中断加时间戳。然而,此类的时间戳熵元素可能不能立即通过中断处理程序(“handler”)而给入到熵池中。替代地,可以首先确定中断的目标或源。例如,虚拟服务器VM1204、VM2206、VM3208、VM4210的键盘录入发生,或者通信分组由虚拟服务器VM1204、VM2206、VM3208、VM4210成功发送或接收。在确定相关联的或选择的虚拟服务器后,加时间戳的数据可以用于仅生成针对该特定的、选择的、虚拟机的熵元素。一旦虚拟机已知,熵元素可以被立即传送到虚拟机。然而,在优选的实施例中,想法是将熵元素形成池,并且使得其可由虚拟机通过接口来访问,该接口可以是虚拟化的或并行虚拟化的接口。在优选的实施例中,这可以通过使用本领域技术人员所知的“virtio-rng”函数来实现。这可以例如通过主机计算机中的Linux装置驱动器来控制。从而,虚拟机的装置,例如携带来自于该客户和到该客户的业务的虚拟网络装置,可以关联到“virtio-rng”可以从其读取熵元素的虚拟装置。
总之,可以存在单独的或隔离的熵元素池214用于虚拟机VM1204、单独的或隔离的熵元素池216用于虚拟机VM1206,并且以此类推(参见参考编号218、220)。此外,也可能存在仅专用于管理程序的熵元素池222。因此,其他的虚拟机不能影响到针对于选择的虚拟机的任何熵元素生成。因此,虚拟化效率可以被扩展到熵元素的生成和管理。对于隔离的熵元素池214、216、218、220以及222的熵元素可以与例如虚拟NIC(网络接口控制器,未示出)关联或与虚拟盘的控制信号(未示出)关联,“virtio-rng”可以从虚拟NIC或虚拟盘读取熵元素。
图4示出选择性的联合熵元素池224的框图400。如上所解释的,两个熵元素池例如216中的熵元素池214(比较图3)可以被合并或加入到新的熵元素池224。熵元素池224中的可用熵元素可以仅专用于虚拟机VM1204和/或虚拟机VM2206。虚拟机VM1204和VM2206可以被视为受信的虚拟机。这里,受信的虚拟机可以表示具有相对高的熵元素随机性的那些虚拟机。它们可以属于相同的租户或运营商。因此,由这些虚拟机所生成的安全密钥可以是安全的。
图5示出根据本发明概念的熵元素生成器500的框图,具体地,用于为虚拟机204、206、208和210提供隔离的熵元素的熵元素生成器500。熵元素生成器500可以包括适于在管理程序(202)上部署至少一个虚拟机204、206、208、210的部署单元504,以及适于通过管理程序202基于触发来生成熵元素的生成器模块506。其可以可选地包括适于提供管理程序202的管理程序提供单元502。另外,熵元素生成器500可以包括分配单元508,其适于向每个熵元素分配标识符,其中对于选择的虚拟机,基于触发的熵元素可以分配有相同的标识符。因此,基于输入/输出触发的熵元素被分配到相同的熵元素池。进一步,熵元素生成器500可以包括限制单元510,其适于对于选择的虚拟机,限制具有相同的标识符的熵元素的使用。
本发明的实施例可以事实上连同任意类型的计算机来一起实现,而无论适于存储和/或执行程序代码的平台。例如,如图6中所示,计算系统600可以包括一个或多个处理器602,每个处理器具有一个或多个核,相关联的存储器单元604、内部存储装置606(例如,硬盘、例如致密盘驱动器或数字视频盘(DVD)驱动器的光驱动器、闪存棒、固态盘等),以及各种其他单元和功能性,典型的为今天的计算机(未示出)。存储器单元604可以包括主存储器,例如随机存取存储器(RAM),其在程序代码的实际执行期间使用,以及高速缓冲存储器,其可以提供至少一些程序代码和/或数据的临时存储以便减小代码和/或数据必须从长期存储介质或外部大容量存储器616取回以便执行的次数。计算机600内的单元可以通过具有相应适配器的总线系统618链接在一起。另外,熵元素生成器500可以被附接到总线系统518。
计算系统600也可以包括输入装置,例如键盘608、例如鼠标610的指向装置或麦克风(未示出)。替代地,计算系统可以配备有作为主输入装置的触敏显示器。进一步,计算机600可以包括输出装置,例如监视器或显示屏612[例如,液晶显示器(LCD)、等离子显示器、发光二极管显示器(LED)或阴极射线管(CRT)监视器]。计算机系统600可以经由网络接口连接164连接到网络(例如,局域网(LAN)、广域网(WAN)、例如因特网或任意其他类似类型的网络),包括无线网络。这可以允许耦合到其他计算机系统或存储器网络或带驱动器。本领域技术人员将理解存在许多不同类型的计算机系统,并且上述的输入和输出装置可以采取其他的形式。一般来说,计算机系统600可以包括对于实践本发明的实施例所必须的至少最小处理、输入和/或输出装置。
尽管已经关于有限数目的实施例描述了本发明,但那些具有本公开益处的本领域技术人员将理解其他的实施例可以被导出,而这些实施例并不偏离本发明的范围,如这里所公开的。相应地,本发明的范围应该仅受到所附权利要求的限制。另外,可以组合与不同的实施例关联描述的元素。还应该注意的是权利要求中的参考编号不应该被理解为限制性元素。
正如本领域技术人员将理解的,本公开的多个方面可以体现为系统、方法或计算机程序产品。相应地,本公开的多个方面可以采取整个硬件实施例、整个软件实施例(包括固件、驻留软件、微码等)或组合软件和硬件方面的实施例的形式,其所有通常都可以在这里称为“电路”、“模块”或“系统”。进一步,本公开的多个方面可以采取包括在一个或多个计算机可读介质中的计算机程序产品的形式,该一个或多个计算机可读介质具有包括在其上的计算机可读程序代码。
可以使用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如但不限于电的、磁的、光的、电磁的、红外的或者半导体系统、设备或装置,或前述的任意合适组合。计算机可读存储介质的更多具体例子(非穷举性列出)将包括下面的:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式致密盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或前述的任意合适组合。在本文档的上下文中,计算机可读存储介质可以是任意有形的介质,其可以包含或存储由指令执行系统、设备或装置使用或结合指令执行系统、设备或装置来使用的程序。
计算机可读信号介质可包括在基带中或者作为载波一部分传播的、其中体现计算机可读的程序码的传播的数据信号。这种传播的信号可以采用多种形式,包括但不限于电磁信号、光信号或任何以上合适的组合。计算机可读的信号介质可以是并非为计算机可读存储介质、但是能发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序的任何计算机可读介质。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者任何合适的上述组合。
用于执行本发明多个方面的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言—诸如“C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
参照按照本公开的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的多个方面。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令的制造品。
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
这里所使用的术语仅用于为了描述特定的实施例的目的并且不旨在限制本发明。如这里所使用的,单数形式“一个(“a”)”、“一种(“an”)”和“该(“the”)”旨在也包括复数的形式,除非上下文以其他方式明确地指出。将进一步理解到术语“包含(comprises)”和/或“包含(comprising)”当在本说明书中使用时,指定所述的特征、整数、步骤、操作、单元和/或组件的存在,但不排除一个或多个其他的特征、整数、步骤、操作、单元和/或组件的存在或增加和/或其一组的存在或增加。
下面的权利要求中的所有装置或步骤加功能元素的相应结构、材料、动作和等同物旨在用于包括用于执行结合其他所要求保护的元素的功能的任意结构、材料或动作,如权利要求所具体描述的。已经为了说明和描述的目的而呈现了本发明,但不旨在是穷举性的或限于所公开形式的本发明。对于本领域技术人员来说,许多修改和变形将是明显的而不偏离本发明的范围和精神。选择和描述实施例是为了最佳地解释本发明的原理和实际应用,并且使得本领域技术人员能够理解对于具有各种修改的各种实施例的本发明,如适用于所预想到的特定使用。