匿名加密数据的制作方法

文档序号:20065903发布日期:2020-03-06 08:29阅读:169来源:国知局
匿名加密数据的制作方法



背景技术:

本发明涉及使加密数据匿名,并且更具体地,涉及经由云环境使加密数据匿名。



技术实现要素:

以下提供了概述以提供对本发明的一个或多个实施例的基本理解。本概述不旨在标识关键或重要元素,或描绘特定实施例的任何范围或权利要求的任何范围。其唯一目的是以简化形式呈现概念,作为稍后呈现的更详细描述的序言。在本文描述的一个或多个实施例中,描述了可以经由一个或多个云环境使加密数据匿名的系统、计算机实现的方法、装置和/或计算机程序产品。

根据本发明的实施例,提供了一种计算机实现的方法。该计算机实现的方法可以包括由可操作地耦合到处理器的系统使用机器学习算法从加密数据集生成多个加密数据集群(cluster)。该计算机实现的方法还可以包括由系统基于便于加密数据的匿名性的定义的标准修改多个集群。

根据本发明的另一实施例,提供了一种系统。该系统可以包括可以存储计算机可执行组件的存储器。该系统还可以包括处理器,该处理器可以可操作地耦合到存储器,并且可以执行存储在存储器中的计算机可执行组件。计算机可执行组件可以包括聚类(clustering)组件,该聚类组件可以使用机器学习算法从加密数据集生成多个加密数据集群。此外,计算机可执行组件可以包括修改组件,其可以基于便于加密数据的匿名性的定义的标准修改多个集群。

根据本发明的另一实施例,提供了一种计算机程序产品。计算机程序产品可以使加密数据集匿名。计算机程序产品可以包括计算机可读存储介质,计算机可读存储介质具有体现在其上的程序指令。程序指令可由处理器执行以使处理器使用机器学习算法从加密数据集生成多个加密数据集群。而且,程序指令还可以使处理器基于便于加密数据的匿名性的定义的标准修改多个集群。

附图说明

图1描绘了根据本发明的一个或多个实施例的云计算环境;

图2描绘了根据本发明的一个或多个实施例的抽象模型层;

图3是根据本发明的一个或多个实施例的可便于在不可信环境中使加密数据匿名的示例非限制性系统的框图;

图4是根据本发明的一个或多个实施例的可便于在不可信环境中使加密数据匿名的示例系统的框图;

图5是根据本发明的一个或多个实施例的可便于在不可信环境中使加密数据匿名的示例系统的另一框图;

图6是根据本发明的一个或多个实施例的可便于在不可信环境中使加密数据匿名的示例系统的另一框图;

图7a是根据本发明的一个或多个实施例的使用机器学习算法的加密数据聚类的图;

图7b是根据本发明的一个或多个实施例的根据一个或多个安全要求以便于使加密数据匿名的修改的数据聚类的图;

图7c是根据本发明的一个或多个实施例的使用机器学习算法的加密数据聚类的另一个图;

图7d是根据本发明的一个或多个实施例的基于一个或多个安全要求以便于使加密数据匿名的修改的数据聚类的另一个图;

图8是根据本发明的一个或多个实施例的可便于在不可信环境中使加密数据匿名的示例计算机实现的方法的流程图;

图9是根据本发明的一个或多个实施例的可便于在不可信环境中使加密数据匿名的示例计算机实现的方法的另一流程图;以及,

图10是其中可便于本发明的一个或多个实施例的示例操作环境的框图。

具体实施方式

以下详细描述仅是说明性的,而不是要限制本发明的实施例和/或这些实施例的应用或使用。此外,并不意图受前面的背景技术或发明内容部分或具体实施方式部分中呈现的任何明示或暗示的信息的约束。

现在参考附图描述本发明的一个或多个实施例,其中相同的参考标号始终用于指示相同的元素。在以下描述中,为了解释的目的,阐述了许多具体细节以便提供对本发明的更透彻理解。然而,在各种情况下,显然可以在没有这些具体细节的情况下实践本发明的一个或多个实施例。

首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。

云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。

特征包括:

按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。

广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理pda)对云的使用。

资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。

迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。

可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。

服务模型如下:

软件即服务(saas):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。

平台即服务(paas):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。

基础架构即服务(iaas):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。

部署模型如下:

私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。

共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。

公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。

混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。

云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。云计算的核心是包括互连节点的网络的基础设施。

现在参考图1,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(pda)或移动电话54a,台式电脑54b、笔记本电脑54c和/或汽车计算机系统54n。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(iaas)、平台即服务(paas)和/或软件即服务(saas)。应当理解,图1显示的各类计算设备54a-n仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。

现在参考图2,示出了由云计算环境50(图1)提供的功能抽象层集合。为了简洁,省略了在这里描述的本发明的其它实施例中采用的类似元件的重复描述。应当预先理解,图2中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描述的,提供了下面的层和相应的功能。为了简洁,省略了在这里描述的本发明的其它实施例中采用的类似元件的重复描述。

硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于risc(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储装置65;以及网络和网络组件66。在本发明的一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。

虚拟层70提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器71、虚拟存储72、虚拟网络73(包括虚拟私有网络)、虚拟应用和操作系统74,以及虚拟客户端75。

在一个示例中,管理层80可以提供下述功能:资源供应功能81:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能82:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户功能83:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(sla)计划和履行功能85:为根据sla预测的对云计算资源未来需求提供预先安排和供应。

工作负载层90提供了云计算环境可以被利用的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及使数据匿名96。本发明的各种实施例可以利用参照图1和2描述的云计算环境,以便于在不可信环境(例如,公共云环境)上使加密数据匿名。

数据保护算法对于支持现代商业需要以便于数据共享和数据货币化正变得越来越重要。在共享数据之前,使数据匿名是重要的步骤,并且云服务作为存储和管理数据的有效解决方案越来越受欢迎。然而,第三方通常不被信任来存储明文个人和/或敏感数据。因此,数据加密已经被采用来防止有意和无意地试图读取个人和/或敏感数据。因此,存在在不需要存储明文数据的情况下在不可信环境中使加密数据匿名的需要。

本发明的各种实施例可以涉及便于高效、有效和自主(例如,没有直接的人类指导)的计算机处理系统、计算机实现的方法、装置和/或计算机程序产品,以在不可信环境中使加密数据匿名。例如,本文描述的本发明的一个或多个实施例可以使用聚类技术来在不可信环境上使加密数据匿名。如本文所使用的,术语"不可信环境"可以指由不是存储在环境中的数据的所有者的第三方维护和操作的环境。示例性非可信环境包括但不限于公共云服务提供商。此外,本文描述的本发明的一个或多个实施例可以对加密数据的类似记录进行聚类,并且修改集群以满足一个或多个安全要求。此外,本文描述的本发明的各种实施例可以抑制和/或重新分配加密数据的集群,以便生成包括最少量成员的集群,以便获得期望的匿名水平。

计算机处理系统、计算机实现的方法、装置和/或计算机程序产品采用硬件和/或软件来解决本质上高度技术性的问题(例如,加密明文数据、将加密数据传送到不可信环境、以及在不可信环境中使加密数据匿名),这些问题不是抽象的并且不能由人类作为一组精神行为来执行。例如,一个人或多个人不能有效地分析加密数据以生成多个集群,从而使加密数据匿名。相反,采用本文描述的硬件和/或软件的计算机处理系统、计算机实现的方法、装置和/或计算机程序产品的各种实施例可高效地分析大量加密数据并执行基于集群的匿名。此外,甚至不希望使用一个或多个人来尝试这种努力,因为本文描述的本发明的实施例的优点之一是所处理的数据是匿名的。使用人来执行这里描述的本发明的实施例的尝试与使数据匿名的目的相反,因为它将导致至少一个人具有对要匿名的数据的复杂知识。

本发明的一个或多个实施例可以是处于任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在本发明的一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所标注的功能可不按图中所标注的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由基于专用硬件的系统来实现,该系统执行指定的功能或动作或执行专用硬件和计算机指令的组合。

图3是可便于在不可信环境中使加密数据匿名的示例系统300的框图。为了简洁,省略了在这里描述的本发明的其它实施例中采用的类似元件的重复描述。本发明的各种实施例中的系统(例如,系统300等)、装置或过程的各方面可以构成一个或多个机器可执行组件,其包含在一个或多个机器内,例如,包含在与一个或多个机器相关联的一个或多个计算机可读介质(或媒介)中。当由一个或多个机器(例如,计算机、计算设备、虚拟机等)执行时,这样的组件可以使机器执行所描述的操作。

如图3所示,系统300可以包括一个或多个第一服务器302、一个或多个网络304、一个或多个第二服务器306以及一个或多个客户端设备308。第一服务器302可以包括处理组件310。处理组件310还可包括第一接收组件312、加密组件314、解密组件316和安全组件317。而且,第一服务器302可以包括至少一个第一存储器318或以其他方式与其相关联。第一服务器302还可以包括第一系统总线320,其可以耦合到各种组件,例如但不限于处理组件310和相关联的组件、第一存储器318和/或第一处理器322。虽然图3中示出了第一服务器302,但是在其他实施例中,各种类型的多个设备可以与图3中所示的特征相关联或包括这些特征,此外,第一服务器302可以经由一个或多个网络304与图1和图2中所示的云环境通信。在本发明的各种实施例中,"第一服务器"和/或"第二服务器"可以包括处理器和/或本发明的各种实施例中的一个或多个硬件和/或软件。

一个或多个网络304可以包括有线和无线网络,包括但不限于蜂窝网络、广域网(wan)(例如,因特网)或局域网(lan)。例如,第一服务器302可以使用实际上任何期望的有线或无线技术与第二服务器306通信(反之亦然),所述技术包括例如但不限于:蜂窝、wan、无线保真(wi-fi)、wi-max、wlan、蓝牙技术、其组合等。此外,尽管在所示的本发明的实施例中,处理组件310可以被提供在一个或多个第一服务器302上,但是应当理解,系统300的体系结构不限于此。例如,处理组件310或处理组件310的一个或多个组件可位于另一计算机设备处,诸如另一服务器设备、客户机设备等。

第二服务器306可以包括分类组件324。分类组件324还可以包括第二接收组件326、聚类组件328和修改组件330。而且,第二服务器306可以包括至少一个第二存储器332或者以其他方式与其相关联。第二服务器306还可以包括第二系统总线334,其可以耦合到各种组件,例如但不限于分类组件324和相关联的组件、第二存储器332和/或第二处理器336。虽然图3中示出了第二服务器306,但是在本发明的其他实施例中,各种类型的多个设备可以与图3中所示的特征相关联或包括这些特征,此外,第二服务器306可以经由一个或多个网络304与图1和图2中所示的云环境通信。

一个或多个客户端设备308可以是由希望分析、存储和/或以其他方式使用由管理第一服务器302的一个或多个实体拥有的数据的实体操作的计算机和/或计算机化设备。一个或多个客户端设备308可以经由一个或多个网络304(例如,经由因特网、本地网络和/或直接电连接)可操作地耦合到第一服务器302和第二服务器306。此外,一个或多个客户端设备308可以使用第一装置可操作地耦合到第一服务器302,并且使用第二装置可操作地耦合到第二服务器306,其中第一和第二装置可以经由一个或多个网络304可用。例如,一个或多个客户端设备308可以与第一服务器302直接电连接,同时经由因特网可操作地耦合到第二服务器306。

第一接收组件312可以经由第一系统总线320可操作地耦合到加密组件314、解密组件316、第一存储器318和/或第一处理器322。此外,在本发明的一个或多个实施例中,第一接收组件312可以经由一个或多个网络304(例如,局域网)可操作地耦合到加密组件314、解密组件316、第一存储器318和/或第一处理器322。类似地,第二接收组件326可以经由第二系统总线334可操作地耦合到聚类组件328、修改组件330、第二存储器332和/或第二处理器336。此外,在本发明的一个或多个实施例中,第二接收组件326可以经由一个或多个网络304(例如,局域网)可操作地耦合到聚类组件328、修改组件330、第二存储器332和/或第二处理器336。

安全组件317可以从第一服务器302的操作者接收一个或多个安全要求。由一个或多个安全要求规定的参数可以包括但不限于:要由第二服务器306输出的匿名集群的期望数量和/或每个集群的成员的期望数量(例如,每个集群至少k个成员,其中k是大于零的整数)。

聚类组件328可以使用机器学习算法来对加密数据进行聚类。机器学习算法可以是基于距离的算法,例如k均值聚类算法。机器学习算法(例如,k均值聚类算法)可以基于诸如位置标识符(例如,全球定位坐标)之类的一个或多个参数将加密数据划分成多个集群。然而,每个集群的成员数量是数据相关的,并且机器学习算法不支持生成每个集群的最少数量的成员。换言之,聚类组件328可以使用机器学习算法基于一个或多个参数来生成多个集群,其中每个集群的成员是相似的,但是每个集群中的成员数目可能不被保证。

在本发明的各种实施例中,修改组件330可基于定义的准则(例如,一个或多个安全要求)修改多个集群,以便于使加密数据匿名。在本发明的一个或多个实施例中,修改组件330可修改多个集群以实现k个-匿名,其中k是构成每个集群的成员的数目并且是大于零的整数。例如,修改组件330可以修改多个集群以实现2个-匿名,其中一个或多个安全要求规定每个集群包括至少两个成员。

例如,聚类组件328可以使用机器学习算法来从十个加密数据记录中生成集群a、b和c。在该示例中:集群a可以包含四个成员;集群b可以包含五个成员,而集群c可以包含一个成员。此外,一个或多个安全要求可以规定每个集群期望具有至少两个成员。修改组件330可修改集群a、b和/或c,使得经修改的集群集合各自包括至少两个成员以便实现两个-匿名。

在本发明的各种实施例中,修改组件330可以通过执行抑制操作和/或重新分配操作来修改多个集群。在执行抑制操作时,修改组件330可以移除定义量的加密数据和/或集群,以便从多个集群中消除离群值。在执行重新分配操作时,修改组件330可以将一个或多个加密数据记录和/或一个或多个集群重新分配给另一集群。

在本发明的一个或多个实施例中,修改组件330可以基于抑制阈值来抑制定义量的加密数据。抑制阈值可以是定义可以丢弃的加密数据量(例如,记录的百分比)的输入参数。对于未能满足一个或多个安全要求(例如,未能具有最小数量的成员)的集群的每个成员,修改组件330可以计算相应成员与其余集群的质心之间的距离,并且仅保存这些距离中的最小值。则修改组件330可按降序对所保存的最小距离进行排序并将抑制阈值量标识为远离群值。因此,与其余集群具有最高最小距离的那些成员将被标识为远离群值。此外,修改组件330可以移除和/或指示移除远离群值。在一个或多个实施例中,修改组件330可利用抑制来丢弃一个或多个完整的集群。在本发明的一个或多个实施例中,修改组件330可以利用抑制来生成新的加密数据集,聚类组件328可以根据该新的加密数据集来生成新的多个集群。

在本发明的一个或多个实施例中,修改组件330可以将一个或多个加密数据记录从一个集群重新分配给另一个集群和/或合并现有集群。例如,如果集群未能满足安全性要求(例如,未能具有最小数目的成员),则修改组件330可将具有超额成员的集群的最近成员(例如,具有多于最小数目的成员的集群)重新指派给非遵从集群。在另一示例中,如果集群未能满足安全性要求(例如,未能具有最小数目的成员),则修改组件330可将非遵从集群的成员重新指派到相对于该成员最近的集群。在另一示例中,如果集群未能满足安全要求(例如,未能具有最小数目的成员),则修改组件330可将非遵从集群与最近集群合并。

在本发明的各种实施例中,当执行重新分配操作时,修改组件330可以按大小(例如,从具有最少成员的集群到具有最多成员的集群)对未能满足安全性要求(例如,未能具有最小数量的成员)的集群进行排序。从最小的集群(例如,具有最少成员的非遵从集群)开始,修改组件330可将最小集群的每一相应成员重新指派给最接近的集群。一旦重新分配了最小集群的成员,修改组件330就可以从多个集群中移除所述集群,并且针对非遵从集群重新分析多个集群。此外,修改组件330可重复重新分配过程,直到所有剩余的集群符合一个或多个安全要求。

图4是可以在第一服务器302和第二服务器306之间执行的示例过程的框图。为了简洁,省略了在这里描述的本发明的其它实施例中采用的类似元件的重复描述。第一存储器318可存储一个或多个明文数据库402,其可包括一个或多个未加密的数据记录。第一存储器318可以经由第一系统总线320可操作地耦合到处理组件310。加密组件314可以检索一个或多个明文数据库402(例如,从第一存储器318),并使明文数据库402经受一个或多个加密方案404以生成一个或多个加密数据集406。加密方案404可以使用加密算法和/或加密密钥来加密明文数据库402。示例加密方案404可以包括但不限于:高级加密标准(aes);boneh、goh和nissim(bgn)的密码系统;三重数据加密标准(三重des);rivest、shamir和adelman(rsa)加密算法;河豚鱼(blowfish)加密;和/或双鱼(twofish)加密。在本发明的一个或多个实施例中,加密组件314可以使明文数据库402经受多个不同的加密方案404,以基于同一明文数据库402生成多个加密数据集406。例如,加密部件314可以使明文数据库402经受aes加密和bgn加密以创建两个加密数据集406。

第一服务器302(例如,经由加密组件314)可以经由一个或多个网络304将一个或多个加密数据集406传输到第二服务器306。此外,第一服务器302(例如,经由安全组件317)可以将一个或多个安全要求传输到第二服务器306。安全要求可以包括第二服务器306在使一个或多个加密数据库匿名时必须满足的一个或多个参数。示例安全要求可以包括但不限于指示在一个或多个生成的集群中允许的成员的最小量的数目。

第二服务器306可以是不可信环境。此外,第二服务器306可以包括联合云环境。例如,如图4所示,第二服务器306可以包括第一云408和第二云410。在本发明的各种实施例中,第二服务器306可以包括多于两个云(例如,3、4、5或更多云)。第二接收组件326可以位于第一云408上,并且可以接收一个或多个加密数据集406和一个或多个安全要求。

聚类组件328可以位于第一云408或第二云410上。而且,修改组件316可以位于第一云408或第二云410上。第一云408和第二云410可以经由一个或多个网络304可操作地耦合,以便于聚类通信412。对第一云408和第二云410之间的聚类通信412可以便于将加密数据集406匿名化。在本发明的各种实施例中,第二服务器306(例如,不可信联合云环境)可以根据一个或多个安全要求从加密数据集406产生匿名加密数据集414。因此,第二服务器306可以保持加密数据集406的实际有用性(例如,从加密匿名数据得到的任何洞察可以类似于从非匿名加密数据得到的洞察),同时提供不能识别受数据支配的实体的保证。

第二服务器306可以经由一个或多个网络304向第一服务器302发送一个或多个匿名加密数据集414。第一接收组件312可接收匿名加密数据,并将匿名加密数据发送给解密组件316。解密组件316可以使用解密方案416来解密匿名加密数据集414,以产生匿名明文数据库418。

图5是可以由系统300执行的通信和过程的示例的框图。为了简洁,省略了在这里描述的本发明的其它实施例中采用的类似元件的重复描述。在502处,第一服务器302可以将一个或多个加密数据集406和/或一个或多个安全要求传输至第二服务器306的第一云408。例如,第一服务器302可以将aes加密数据集406和bgn加密数据集406发送到第一云408。而且,aes加密数据组406和bgn加密数据组406可以基于相同的明文数据库402。在本发明的各种实施例中,由第一服务器302(例如,经由安全组件317)发送到第一云408的一个或多个安全要求可以包括便于一个或多个加密数据集406的匿名性的定义的标准,诸如由聚类组件328生成并且由修改组件316修改的每个集群的成员的最小数量。第二存储器332可以位于第一云408中并且存储一个或多个加密数据集406和一个或多个安全要求。

在504处,第一服务器302可以经由一个或多个网络304将关于一个或多个加密数据集406的秘密加密密钥传送到第二服务器306的第二云410。例如,第一服务器302可将aes加密数据集406和bgn加密数据集406传送到第一云408,并且还将关于bgn加密数据集406的bgn秘密密钥传送到第二云410。

在506,第一云408(例如,经由聚类组件328)可以从加密数据集406中随机选择多个加密数据记录以充当多个集群的初始中心。初始中心的数量可以由一个或多个安全要求指定。在本发明的各种实施例中,可以基于加密数据记录的参数选择一个或多个加密数据记录作为多个集群的初始中心。例如,可以基于与加密数据记录相关联的一个或多个位置标识符来选择一个或多个加密数据记录,其中位置标识符可以指定关于主题加密数据记录的源的一个或多个地理坐标。

在510,第一云408(例如,经由聚类组件328)可以向第二云410(例如,修改组件330)发送加密的集群总和与数量。在各种实施例中,第一云408(例如,聚类组件328)可以基于与一个或多个加密数据集406中的加密数据记录相关联的位置标识符来生成集群。例如,聚类组件328可以确定每个加密数据记录与随机选择的初始集群中心之间的距离。第一云408可以向第二云410发送:主题加密数据集406中的加密数据记录的总数、确定的距离(例如,由聚类组件328确定)、期望集群的数量(例如,由一个或多个安全要求指定)、初始集群中心(例如,由聚类组件328选择)、和/或期望集群成员的数量(例如,由一个或多个安全要求指定)。

在512,第二云410(例如,经由修改组件330)可以基于从第一云408接收的输入计算用于聚类主题加密数据集406的加密数据记录的新的手段,在本发明的一个或多个实施例中,第二云410(例如,经由修改组件330)可以通过将集群和除以它们各自的集群数目来确定用于聚类的新的手段。

在514,第二云410(例如,经由修改组件330)可以将新的计算的聚类均值返回到第一云408的聚类组件328,其中聚类组件328可以基于新的聚类均值调整生成的一个或多个集群。第一云408和第二云410之间的通信(例如,在508、510和514)可以包括聚类通信412。在各种实施例中,第二服务器306可以重复聚类通信412多次,以便至少基于一个或多个安全要求来生成期望的收敛。因此,第一云408可以利用第二云410来划分一个或多个加密数据集406的加密数据记录,同时基于期望的参数揭示关于加密数据集406的最小量的信息,诸如一个或多个加密数据记录与初始集群中心的相似性。

图6是可以由系统300执行的关于客户端设备308的查询的通信和过程的另一示例的框图。为了简洁,省略了在这里描述的本发明的其它实施例中采用的类似元件的重复描述。在602处,第一服务器302可以将关于一个或多个加密数据集406的公共加密密钥传送(例如,经由加密组件314和一个或多个网络304)到一个或多个客户端设备308。例如,第一服务器302可以将aes加密数据集406和bgn加密数据集406传送到第一云408,并且还将bgn公共密钥传送到关于bgn加密数据集406的一个或多个客户端装置308。在604处,一个或多个客户端设备308可以使用公共加密密钥向第一云408发送加密的查询(例如,经由一个或多个网络304)。

在606处,第一云408(例如,经由聚类组件328)可以计算一个或多个加密数据记录与加密查询之间的距离(例如,平方欧几里得距离)。在608,第一云408(例如,经由聚类组件328)可以将加密距离连同一个或多个标识符(例如,匿名标识符)一起发送到第二云410。标识符可以考虑与距离相关联的相应加密数据记录。例如,标识符可以包括但不限于指示加密数据记录在加密数据集406中的位置的行标识符(例如,匿名行标识符)。

在本发明的各种实施例中,其中第一云408接收关于相同明文数据库402的多个加密数据集406,第一云408仅发送加密数据集406之一的加密距离,优选地,加密数据集406具有与在504处发送至第二云410的秘密加密密钥相关的加密方案。例如,其中第一云408接收aes加密数据集406和bgn加密数据集406,并且第二云410接收bgn加密密钥,第一云408可仅向第二云410发送bgn加密距离。因此,第二云410可以利用加密的秘密密钥来解密所计算的加密距离。

在610,第二云410(例如,经由修改组件330)可以解密一个或多个距离(例如,平方欧几里得距离)并且找到与至少预定值的距离相关联的标识符。例如,第二云410(例如,经由修改组件330)可以识别具有距加密查询的最小计算距离的距离。此外,第二云410(例如,经由修改组件330)可以标识基于一个或多个安全要求标识的最小数量的距离。

在本发明的一个或多个实施例中,第二云410(例如,经由修改组件330)可以基于多个安全要求来选择标识符。例如,多个安全要求可以规定将一个或多个加密数据集406划分成的集群的最小数量以及每个集群的成员的最小数量。

在612,第二云410(例如,经由修改组件330)可以将所选择的标识符发送到第一云408。基于所选择的标识符,第一云408(例如,经由聚类组件328)可以从加密数据集406中的一个或多个加密数据集识别一个或多个加密数据记录。此外,第一云408(例如,经由聚类组件328)可生成代表与一个或多个标识符相关联的每个集群的集群,以生成匿名加密数据集414。因此,第一云408可以在不解密加密数据集406的情况下对加密数据进行聚类,并且第二云可以在不知道加密数据集406的情况下修改多个集群,除了计算的距离之外。

在614,第一云408(例如,经由聚类组件328)可将匿名加密数据集414发送到第一服务器302。第一服务器302可以(例如,经由第一接收组件312)接收匿名加密数据集414,并使用解密方案416(例如,经由解密组件316)对匿名加密数据集414进行解密,以生成匿名明文数据库418。在616,第一服务器302可以将匿名明文数据库418发送到在604发送加密查询的一个或多个客户端设备308。

图7a、7b、7c和7d是可以由系统300执行的集群修改的各种图。为了简洁,省略了在这里描述的本发明的其它实施例中采用的类似元件的重复描述。图7a是其中十五个加密数据记录可以表示为圆圈的图700,其中加密数据记录可以被划分为三个集群:由虚线圆表示的第一集群702、由对角条纹圆表示的第二集群704、以及由空心圆表示的第三集群706。图700示出了可以由聚类组件328在不进行修改的情况下生成的三个示例集群。

图7b是相同的十五个加密数据记录的另一个图708;然而,第一集群702和第三集群706已经基于一个或多个安全要求被修改(例如,经由修改组件330)。关于图708所示的修改,安全要求可规定每个集群具有至少三个成员。如图7a所示,第三集群706仅包括两个成员,这小于三个成员的安全性要求。为了满足安全性要求,修改组件330可以修改第一集群702和第三集群706,使得先前包括在第三集群706中的两个加密数据记录被重新分配给第一集群702。因此,修改组件330可以基于一个或多个安全要求将一个或多个加密数据记录和/或一个或多个完整集群重新分配给不同的集群。

图7c是被划分为第一集群702、第二集群704、第三集群706和由水平条纹圆指定的第四集群712的十六个加密数据记录的另一示图710。图710示出了可以由聚类组件328在不进行修改的情况下生成的四个示例集群。

图7d是相同的十六个加密数据记录的另一个图714;然而,第三集群706和第四集群712已经基于一个或多个安全要求被修改(例如,经由修改组件330)。关于图714所示的修改,安全要求可规定每个集群具有至少三个成员。如图7c所示,第三集群706(具有两个成员)和第四集群712(具有一个成员)每个具有少于由安全要求规定的三个成员。修改组件330可基于每个集群中的成员数量对集群排序,并以从具有最少成员数量的集群(例如,第四集群712)开始的顺序修改集群。如图7d所示,修改组件330可以将一个集群(例如,第四集群712)的加密数据记录重新分配给另一个集群(例如,第三集群706),以便满足一个或多个安全要求(例如,至少三个成员的最小数量)。因此,在聚类组件328生成未能满足一个或多个安全要求的多个集群的实例中,修改组件330可将多个非遵从集群合并在一起以便形成确实满足一个或多个安全要求的集群。

图8是可便于在不可信环境中使加密数据匿名的计算机实现的方法800的流程图。在802,方法800可以包括由操作地耦合到处理器(例如,第一处理器322)的系统300使用机器学习算法从加密数据集406生成加密数据的多个集群(例如,经由聚类组件328)。在804处,方法800还可以包括由系统300基于可以便于加密数据的匿名性的定义的标准来修改多个集群(例如,经由修改组件330)。

图9是可便于在不可信环境中使加密数据匿名的计算机实现的方法900的流程图。在902,方法900可以包括由可操作地耦合到处理器(例如,第一处理器322)的系统300使用机器学习算法从加密数据集406生成加密数据的多个集群(例如,经由聚类组件328),其中机器学习算法可以是基于距离的算法。此外,生成多个集群可以基于与加密数据相关联的一个或多个位置标识符。

在904处,方法900还可以包括由系统300基于可以便于加密数据的匿名性的定义的标准来修改多个集群(例如,经由修改组件330)。例如,所定义的标准可以设置多个集群中每个集群的最小成员数目。在906,方法900还可以包括生成多个集群中的每个集群的集群代表(例如,经由聚类组件328)。可以在修改多个集群之前或之后生成集群代表。

在本发明的各种实施例中,修改多个集群可以包括基于抑制阈值来抑制多个集群中的一个集群,该抑制阈值可以指定要被移除的来自加密数据集406的加密数据的量。此外,抑制集群可以包括:由系统300基于与加密数据相关联的位置标识符来识别集群内的要移除的加密数据(例如,经由修改组件330);由系统300从加密数据集406中移除所识别的加密数据以生成第二加密数据集(例如,经由修改组件330);以及由系统300使用机器学习算法(例如,经由聚类组件328)从第二加密数据集生成第二多个加密数据集群。

在本发明的一个或多个实施例中,修改多个集群可以包括基于参数(例如,位置标识符)将来自多个集群中的一个集群(例如,第三集群706)的加密数据重新分配给来自多个集群中的另一个集群(例如,第一集群702)。在本发明的各种实施例中,修改组件330可以对加密数据执行抑制操作和重新分配操作两者。在本发明的一个或多个实施例中,修改组件330可以仅对加密数据执行抑制操作。在本发明的一个或多个实施例中,修改组件330可以仅对加密数据执行重新分配操作。

为了提供本发明的各个方面的上下文,图10以及以下讨论旨在提供对其中可实现本发明的各个方面的合适环境的一般描述。图10示出了其中可便于本发明的一个或多个实施例的示例非限制性操作环境的框图。为了简洁,省略了在这里描述的本发明的其它实施例中采用的类似元件的重复描述。参考图10,用于实现本发明的各方面的合适的操作环境1000可包括计算机1012。计算机1012还可包括处理单元1014、系统存储器1016和系统总线1018。系统总线1018可以可操作地将包括但不限于系统存储器1016的系统组件耦合到处理单元1014。处理单元1014可以是各种可用处理器中的任何一种。双微处理器和其它多处理器体系结构也可用作处理单元1014。系统总线1018可以是若干种总线结构中的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各类可用总线体系结构中的任一种的局部总线,这些总线体系结构包括但不限于工业标准体系结构(isa)、微通道体系结构(msa)、扩展isa(eisa)、智能驱动电子设备(ide)、vesa局部总线(vlb)、外围部件互连(pci)、卡总线、通用串行总线(usb)、高级图形端口(agp)、火线、和小型计算机系统接口(scsi)。系统存储器1016还可以包括易失性存储器1020和非易失性存储器1022。基本输入/输出系统(bios)可以存储在非易失性存储器1022中,该系统包含诸如在启动期间在计算机1012内的元件之间传输信息的基本例程。作为说明而非限制,非易失性存储器1022可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)、闪存或非易失性随机存取存储器(ram)(例如,铁电ram(feram),易失性存储器1020还可以包括随机存取存储器(ram),其充当外部高速缓存存储器,作为说明而非限制,ram可以以许多形式获得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链接dram(sldram)、直接存储器总线ram(drram)、直接存储器总线动态ram(drdram)和存储器总线动态ram。

计算机1012还可包括可移动/不可移动、易失性/非易失性计算机存储介质。例如,图10示出了盘存储1024。盘存储1024还可包括但不限于,诸如磁盘驱动器、软盘驱动器、磁带驱动器、jaz驱动器、zip驱动器、ls-100驱动器、闪存卡、或记忆棒等设备。盘存储1024还可包括单独的存储介质或与其它存储介质组合的存储介质,其它存储介质包括但不限于,诸如紧致盘rom设备(cd-rom)、cd可记录驱动器(cd-r驱动器)、cd可重写驱动器(cd-rw驱动器)或数字多功能盘rom驱动器(dvd-rom)等光盘驱动器。为了便于将盘存储1024连接到系统总线1018,可使用诸如接口1026等可移动或不可移动接口。图10还描绘了可以充当用户和在合适的操作环境1000中描述的基本计算机资源之间的中介的软件。这样的软件还可以包括例如操作系统1028。可存储在盘存储1024上的操作系统1028用于控制和分配计算机1012的资源。系统应用1030可利用操作系统1028通过例如存储在系统存储器1016或盘存储1024上的程序模块1032和程序数据1034对资源的管理。可以理解,本发明可以用各种操作系统或操作系统的组合来实现。用户通过一个或多个输入设备1036将命令或信息输入到计算机1012中。输入设备1036可包括但不限于诸如鼠标、跟踪球、指示笔、触摸垫等定点设备、键盘、话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、tv调谐卡、数码相机、数码摄像机、web摄像头等等。这些和其它输入设备可经由一个或多个接口端口1038通过系统总线1018连接到处理单元1014。一个或多个接口端口1038可以包括例如串行端口、并行端口、游戏端口和通用串行总线(usb)。一个或多个输出设备1040可以使用与输入设备1036相同类型的端口中的一些。因此,例如,usb端口可以用于向计算机1012提供输入,以及从计算机1012向输出设备1040输出信息。可以提供输出适配器1042来说明存在一些输出设备1040,如监视器、扬声器和打印机,以及其它输出设备1040,它们需要特殊的适配器。作为说明而非限制,输出适配器1042可包括提供输出设备1040和系统总线1018之间的连接手段的显卡和声卡。应当注意,其它设备和/或设备系统提供输入和输出能力,诸如一个或多个远程计算机1044。

计算机1012可以使用到一个或多个远程计算机,如远程计算机1044的逻辑连接在网络化环境中操作。远程计算机1044可以是计算机、服务器、路由器、网络pc、工作站、基于微处理器的设备、对等设备或其它常见的网络节点等,且通常还可包括相对于计算机1012所描述的许多或所有元件。为了简洁起见,仅对远程计算机1044示出了存储器存储设备1046。远程计算机1044可以通过网络接口1048逻辑地连接到计算机1012,然后经由通信连接1050物理地连接。此外,操作可以分布在多个(本地和远程)系统上。网络接口1048可以包括有线和/或无线通信网络,例如局域网(lan)、广域网(wan)、蜂窝网络等。lan技术包括光纤分布式数据接口(fddi)、铜线分布式数据接口(cddi)、以太网、令牌环等。wan技术包括,但不限于,点对点链路、像综合业务数字网(isdn)及其变体那样的电路交换网络、分组交换网络、以及数字用户线(dsl)。一个或多个通信连接1050指的是用于将网络接口1048连接到系统总线1018的硬件/软件。虽然为了清楚地说明,通信连接1050被示为在计算机1012内部,但是它也可以在计算机1012外部。仅出于示例性目的,用于连接到网络接口1048的硬件/软件还可以包括内部和外部技术,诸如包括常规电话级调制解调器、电缆调制解调器和dsl调制解调器的调制解调器、isdn适配器和以太网卡。

本发明的实施例可以是处于任何可能的技术细节集成水平的系统、方法、装置和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表还可以包括以下:便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。

本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光学传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。用于执行本发明的各方面的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,例如smalltalk、c++等,以及过程编程语言,例如"c"编程语言或类似的编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来定制电子电路,从而执行计算机可读程序指令。

在此参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作动作,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。

附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所标注的功能可不按图中所标注的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。

尽管以上在运行在一个和/或多个计算机上的计算机程序产品的计算机可执行指令的一般上下文中描述了本发明的实施例,但是本领域的技术人员将认识到,本公开也可以结合其它程序模块或可以结合其它程序模块来实现。通常,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域的技术人员可以理解,本发明的计算机实现的方法可以用其它计算机系统配置来实践,包括单处理器或多处理器计算机系统、小型计算设备、大型计算机、以及计算机、手持式计算设备(例如,pda、电话)、基于微处理器的或可编程的消费或工业电子产品等。所示的各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。然而,本发明的一些方面,如果不是所有方面,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。

如本文所使用的,术语"组件"、"系统"、"平台"、"接口"等可以指代和/或可以包括计算机相关的实体或与具有一个或多个特定功能的操作机器相关的实体。这里公开的实体可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是,但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,并且组件可以位于一个计算机上和/或分布在两个或多个计算机之间。在另一示例中,相应组件可从其上存储有各种数据结构的各种计算机可读介质执行。这些组件可以经由本地和/或远程进程进行通信,例如根据具有一个或多个数据分组的信号(例如,来自一个组件的数据,该组件经由该信号与本地系统、分布式系统中的另一个组件进行交互,和/或经由诸如因特网之类的网络与其它系统进行交互)。作为另一示例,组件可以是具有由电气或电子电路操作的机械部件提供的特定功能的装置,该电气或电子电路由处理器执行的软件或固件应用程序操作。在这种情况下,处理器可以在装置的内部或外部,并且可以执行软件或固件应用的至少一部分。作为又一示例,组件可以是通过电子组件而不是机械部件来提供特定功能的装置,其中电子组件可以包括处理器或其他装置以执行至少部分地赋予电子组件的功能的软件或固件。在一方面,组件可经由例如云计算系统内的虚拟机来仿真电子组件。

此外,术语"或"旨在表示包含性的"或"而不是排他性的"或"。也就是说,除非另外指定,或者从上下文中清楚,"x采用a或b"意在表示任何自然的包含性排列。也就是说,如果x使用a;x为b;或者x采用a和b两者,则在任何前述实例下都满足"x采用a或b"。此外,除非另外指定或从上下文清楚涉及单数形式,否则如在本说明书和附图中使用的冠词"一"和"一个"一般应当被解释为表示"一个或多个"。如本文所使用的,术语"示例"和/或"示例性"用于表示用作示例、实例或说明。为了避免疑惑,本文公开的主题不受这些示例限制。此外,本文中描述为"示例"和/或"示例性"的任何方面或设计不一定被解释为比其它方面或设计优选或有利,也不意味着排除本领域普通技术人员已知的等效示例性结构和技术。

如在本说明书中所采用的,术语"处理器"可以指基本上任何计算处理单元或设备,包括但不限于单核处理器;具有软件多线程执行能力的单处理器;多核处理器;具有软件多线程执行能力的多核处理器;具有硬件多线程技术的多核处理器;平行平台;以及具有分布式共享存储器的并行平台。另外,处理器可以指被设计为执行本文描述的功能的集成电路、专用集成电路(asic)、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑控制器(plc)、复杂可编程逻辑器件(cpld)、分立门或晶体管逻辑、分立硬件组件或其任意组合。此外,处理器可以利用纳米级架构,诸如但不限于基于分子和量子点的晶体管、开关和门,以便优化空间使用或增强用户设备的性能。处理器也可以实现为计算处理单元的组合。在此,诸如"存储"、"存储器"、"数据存储器"、"数据库"以及与组件的操作和功能相关的基本上任何其他信息存储组件之类的术语被用来指代"存储器组件"、在"存储器"中体现的实体、或包括存储器的组件。应当理解,本文描述的存储器和/或存储器组件可以是易失性存储器或非易失性存储器,或者可以包括易失性和非易失性存储器两者。作为说明而非限制,非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除rom(eeprom)、闪存或非易失性随机存取存储器(ram)(例如,铁电ram(feram)易失性存储器可包括ram,ram可充当外部高速缓存存储器,例如,作为说明而非限制,ram可以许多形式获得,诸如同步ram(sram)、动态ram(dram)、同步dram(sdram)、双倍数据速率(ddrsdram)、增强型sdram(esdram)、同步链路dram(sldram)、直接rambusram(drram)、直接rambus动态ram(drdram)和rambus动态ram(rdram)。另外,本文公开的系统或计算机实现的方法的存储器组件旨在包括但不限于包括这些和任何其他合适类型的存储器。

以上描述的内容仅包括系统、计算机程序产品和计算机实现的方法的示例。当然,不可能为了描述本发明而描述组件、产品和/或计算机实现的方法的每个可想到的组合,但是本领域的普通技术人员可以认识到,本发明的许多进一步的组合和置换是可能的。此外,在详细说明书、权利要求书、附录和附图中使用术语“包括”、“具有”、“拥有”等的范围内,这样的术语旨在以类似于术语“包含”的方式为包含性的,因为当在权利要求中被用作过渡词时解释为“包含”。已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离本发明范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择这里使用的术语是为了最好地解释本发明的原理、实际应用或对市场上存在的技术改进,或者使本领域的其他普通技术人员能够理解本发明。

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