专利名称:用于安全数据储存的加速器系统的制作方法
技术领域:
一个或多个实施例一般涉及数据处理,并且更具体地,涉及用于安全数据剖析器的加速器系统,以远程存储数据。本文描述的系统和方法可以与2005年10月25日提交的共同拥有的(commonly-owned)美国专利N0.7, 391, 865和共同拥有的美国专利申请Nos.11/258,839、2006年11月20日提交的11/602,667、2007年11月7日提交的11/983,355,2007 年 12 月 5 日提交的 11/999,575,2008 年 4 月 18 日提交的 12/148,365、2008年9月12日提交的12/209,703,2009年I月7日提交的12/349,897,2009年2月23日提交的12/391,025,2010年5月19日提交的12/783,276,2010年11月24日提交的12/953,877,2011 年 3 月 31 日提交的 13/077,770,2011 年 3 月 31 日提交的 13/077,802 中描述的其他系统和方法相结合使用,以此方式,所有这些专利的全部内容都通过引用并入本文。
背景技术:
标准微处理器可以不包括用于执行一些算法的电路。通过使用例如用于提供加速器系统的现场可编程门阵列(“FPGA”),可以将算法编程到硬件中以建立用于算法的电路,在执行这种算法的过程中导致显著加速。然而,即使具有加速器系统,与这种算法相关的数据事务(datatransaction)也经常由诸如系统存储器(memory)、中央处理单元(“CPU”)、南桥、或北桥(全部或单独的“母板系统资源”)的系统资源操纵。
此外,可以使用可通过网络与这种母板系统耦接的计算和储存资源、离开这种母板系统资源而远程存储数据。这种资源可以被称为“云计算”资源,并且数据的这种远程储存有时被称为“云储存”。然而,经由与母板系统资源耦接的网络接口的数据处理可能会增加主机系统的操作负担。从而,提供一种从这种母板系统资源卸下至少一些这种数据事务、以便于远程数据储存和/或联网的加速器系统是令人期望和有用的。
发明内容
—个或多个实施例一般涉及数据处理,更具体地是,涉及一种使用安全数据剖析器来处理数据的加速器系统,用于远程数据储存或其他联网应用。实施例一般涉及数据处理系统。在这种实施例中,总线和加速器相互耦接。加速器具有应用功能块。应用功能块用于提供安全数据剖析器功能,并用于提供被处理的数据去储存。网络接口被耦接以从储存器获得被处理的数据以便传输。还一个实施例一般涉及计算机系统。在这种实施例中,通用处理器用于在应用程序模式中执行用户应用程序和在内核模式中执行内核模式驱动器。加速器系统经由第一总线与通用处理器耦接,其中内核模式驱动器包括类驱动器和过滤驱动器(filter driver) 0类驱动器与用户应用程序通信以接收请求包,以便响应于请求包而提供请求块。过滤驱动器与类驱动器通信以接收请求块。请求块包括系统载荷指针和写命令或读命令。对于写命令,加速器系统的可编程逻辑器件对系统存储器中存储的数据集提供安全数据剖析器功能,以将数据存储在加速器的本地存储器中。又一个实施例一般涉及用于处理数据的方法。在这种实施例中,由主机系统给加速器系统提供数据和系统载荷指针(payload pointer)。加速器系统提供安全数据剖析器功能以处理数据。被处理的数据被存储在加速器系统的存储器中。系统载荷指针被转换成至少一个本地载荷指针以便存储。至少一个本地载荷指针被传递给接口。由接口使用至少一个本地载荷指针从存储器访问(access)被处理的数据。由接口访问的被处理数据被传输。再一个实施例一般涉及用于处理数据的另一种方法。在这种实施例中,命令和载荷指针被提供给加速 器系统。加速器系统响应于载荷指针而获得数据。加速器系统提供安全数据剖析器功能,以响应于命令而处理数据,以便提供被处理的数据。被处理的数据被本地存储在加速器系统的存储器中。由加速器系统的网络接口启动存储器访问。由网络接口响应于存储器访问而从存储器获得被处理的数据,并将其传输到云计算储存网络。
下面结合附图更详细地描述本发明,附图意味着用于示例而非限制本发明,并且其中:图1示出根据本发明的一个实施例的多个方面的密码系统的框图;图2示出根据本发明的一个实施例的多个方面的图1的信任引擎的框图;图3示出根据本发明的一个实施例的多个方面的图2的事务引擎的框图;图4示出根据本发明的一个实施例的多个方面的图2的存储库(depository)的框图;图5示出根据本发明的一个实施例的多个方面的图2的认证引擎的框图;图6示出根据本发明的一个实施例的多个方面的图2的密码引擎的框图;图7示出根据本发明的另一个实施例的多个方面的存储库系统的框图;图8示出根据本发明的一个实施例的多个方面的数据分割(split)过程的流程图;图9面板(panel)A示出根据本发明的一个实施例的多个方面的注册过程的数据流;图9面板B示出根据本发明的一个实施例的多个方面的互用性(interoperability)过程的数据流;图10示出根据本发明的一个实施例的多个方面的认证过程的数据流;图11示出根据本发明的一个实施例的多个方面的签署过程的数据流;图12示出根据本发明的多个方面和还一个实施例的数据流和加密/解密过程;图13示出根据本发明的另一个实施例的多个方面的信任引擎系统的简化框图14示出根据本发明的另一个实施例的多个方面的信任引擎系统的简化框图;图15示出根据本发明的一个实施例的多个方面的图14的冗余模块的框图;图16示出根据本发明的一个方面用于评估认证的过程;图17示出根据如本发明的图16所示的一方面、用于分派一个值来认证的过程;图18示出在如图17所示的本发明的一个方面中,用于执行信任仲裁(arbitrage)的过程;和图19示出根据本发明的一个实施例的多个方面,在用户与卖方之间的样本事务,其中最初基于网络(initial web based)的接触导致由双方签署的销售确认书。图20示出具有加密服务提供程序模块的样本用户系统,加密服务提供程序模块为用户系统提供安全功能。图21示出用于剖析、分割和/或分离数据的过程,加密主人密钥(encryptionmaster key)与数据一起加密和储存。图22示出用于剖析、分割和/或分离数据的过程,与数据分开地加密和存储加密主人密钥。图23示出用于剖析、分割和/或分离数据的中间密钥过程,加密主人密钥与数据一起加密和储存。图24示出用于剖析、分割和/或分离加密数据的中间密钥过程,与数据分开地加密和存储加密主人密钥。图25示出由小型工作组利用本发明的密码方法和系统。图26是依据本发明的一个实施例、采用安全数据剖析器的示例性物理标记物(token)安全系统的框图。图27是依据本发明的一个实施例、安全数据剖析器被集成到一个系统中的示例性装置的框图。图28是依据本发明的一个实施例、示例性运动数据(data inmotion)系统的框图。图29是依据本发明的一个实施例、另一个示例性运动数据系统的框图。图30-32是依据本发明的一个实施例、具有集成的安全数据剖析器的示例性系统的框图。图33是依据本发明的一个实施例、用于剖析和分割数据的示例性过程的过程流程图。图34是依据本发明的一个实施例、用于将数据部分恢复成原始数据的示例性过程的过程流程图。图35是依据本发明的一个实施例、用于在位级分割数据的示例性过程的过程流程图。图36是依据本发明的一个实施例的示例性步骤和特征的过程流程图。图37是依据本发明的一个实施例的示例性步骤和特征的过程流程图。图38是依据本发明的一个实施例、在份(share)内储存密钥和数据成分的简化框图。图 39是依据本发明的一个实施例、使用工作组密钥在份内储存密钥和数据成分的简化框图。图40A和40B是依据本发明的一个实施例、用于头部(header)产生和对运动数据进行数据分割的简化和示例性的过程流程图。图41是依据本发明的一个实施例的示例性份格式的简化框图。图42是依据本发明的一个实施例、安全数据剖析器被集成到与云计算资源相连的系统中的示例性装置的框图。图43是依据本发明的一个实施例、安全数据剖析器被集成到用于通过云发送数据的系统中的示例性装置的框图。图44是依据本发明的一个实施例、安全数据剖析器用于保护云中的数据服务的示例性装置的框图。图45是依据本发明的一个实施例、安全数据剖析器用于保护云中的数据储存的示例性装置的框图。图46是依据本发明的一个实施例、安全数据剖析器用于保护网络访问控制的示例性装置的框图。图47是依据本发明的一个实施例、安全数据剖析器用于保护高性能计算资源的示例性装置的框图。图48是依据本发明的一个实施例、安全数据剖析器用于保护使用虚拟机的访问的示例性装置的框图。图49和50显示依据本发明的一个实施例、用于保护使用虚拟机的访问的可选的示例性装置的框图。图51是依据本发明的一个实施例、安全数据剖析器用于保护正交频分复用(OFDM)网络的示例性装置的框图。图52是依据本发明的一个实施例、安全数据剖析器用于保护电力网的示例性装置的框图。图53是描绘主机系统的一个示例性实施例的框图。图54是描绘主机系统的另一个示例性实施例的框图。图55是描绘加速器系统的一个示例性实施例的框图。图56是描绘用于图3的加速器系统的控制流的一个示例性实施例的框图。图57是描绘用于图3的加速器系统的在写方向上的数据流的一个示例性实施例的框图。图58是描绘用于图3的加速器系统的在读方向上的数据流的一个示例性实施例的框图。图59是描绘传统储存驱动器架构的一个示例性实施例的流程图。图60是描绘传统设备对象流(device objects flow)的一个示例性实施例的流程图。图61是描绘传统包格式的一个示例性实施例的框图。图62是描绘传统超-V (Hyper-V)架构的框图。图63是描绘用于储存模式的传统超-V架构的框图。
图64是描绘传统虚拟机服务器架构的一个示例性实施例的框图。
图65是描绘用于图3的加速器系统的内核模式流的一个示例性实施例的框图/流程图。图66是描绘用于图13的内核模式和图3的加速器系统的驱动器堆栈的一个示例性实施例的框图/流程图。图67是描绘用于图14的驱动器堆栈、用于图3的加速器系统的软件流的一个示例性实施例的框图/流程图。图16是描绘储存本地网络("SAN")的一个示例性实施例的框图。图68-70是描绘用于基于管理程序器(hypervisor)的虚拟化的网络输入/输出系统的各示例性实施例的框图。图71是描绘虚拟机制品(“VMware”)储存和网络接口堆栈的一个示例性实施例的框图。图72是描绘通过过滤驱动器流写入的一个示例性实施例的流程图。图73是描绘通过过滤驱动器流读取的一个示例性实施例的流程图。图74是描绘通过设备驱动器流剖析数据的一个示例性实施例的流程图。图75是描绘通过设备驱动器流恢复数据的一个示例性实施例的流程图。图76是描绘设备驱动器中断服务例程(〃ISR〃)和延迟过程调用(〃DPC〃)流的一个示例性实施例的流程图。图77是描绘计算 机系统的一个示例性实施例的框图。图78是描绘计算机系统的一个示例性实施例的框图。
具体实施例方式本发明的一方面是提供一种密码系统,在该系统中一个或多个安全服务器、或信任引擎,存储密码密钥和用户认证数据。用户通过网络访问信任引擎来访问传统密码系统的功能,然而,信任引擎不释放真实的密钥和其他认证数据,因此密钥和数据保持安全。密钥和认证数据的这个服务器集中储存提供与用户无关的安全性、便携性、可用性和简单明了性。因为用户可能不确信、或信任密码系统执行用户和文档认证和其他密码功能,所以可以将多种功能并入到系统中。例如,信任引擎提供商能够通过例如,认证协议参与方、为了参与方的利益或为了参与方而数字签署协定、并且存储由每个参与方数字签署的协议的记录,来确保防止否认协议。另外,密码系统可以监视协议并基于例如价格、用户、卖方、地理位置、使用地点等来确定应用程度变化的认证。为了促进对本发明的透彻理解,剩下的详细描述参考附图描述本发明,其中相同的元素自始至终由相同的附图标记来标注。图1示出根据本发明的一个实施例的多个方面的密码系统100的框图。如图1所示,密码系统100包括通过通信链路125通信的用户系统105、信任引擎110、证书机构115和卖方系统120。根据本发明的一个实施例,用户系统105包含传统通用计算机,其具有一个或多个微处理器,诸如基于英特尔的处理器。此外,用户系统105包括适当的操作系统,诸如能够包括图形或窗口的操作系统,诸如Windows、Unix、Linux等。如图1所示,用户系统105可以包括生物计量(biometric)设备107。生物计量设备107可以有利地捕捉用户的生物计量并将捕捉的生物计量传送给信任引擎110。根据本发明的一个实施例,生物计量设备可以有利地包含具有类似于在以下专利申请中公开的那些属性和特征:1997年9月5日提交的标题为〃RELIEFOBJECT IMAGE GENERA T0R(浮雕对象图像产生器)〃的美国专利申请 N0.08/926, 277,2000 年 4 月 26 日提交的标题为"IMAGING DEVICEFORARELIEFOBJECT AND SYSTEM AND METHOD OF USINGTHE IMAGE DEVICE (用于浮雕对象的成像设备和使用这种成像设备的系统和方法)〃的美国专利申请N0.09/558,634、1999年11月5日提交的标题为〃RELIEF OBJECT SENSOR ADAPTOR (浮雕对象传感器转接器)〃的美国专利申请 N0.09/435, 011 和 2000 年 I 月 5 日提交的标题为"PLANAR OPTICAL IMA GE SENSORAND SYSTEM FORGENERA TING AN ELECTRONIC IMA GE OFARELIEF OBJECTFOR FINGERPRINTREADING(平面光学成像传感器和用于产生用于指纹读取的浮雕对象的电子图像的系统)"的美国专利申请N0.09/477, 943,所有这些申请的全部内容都通过弓I用并入本文。另外,用户系统105可以通过诸如拨号、数字用户线路(DSL)、线缆调制解调器、光纤连接等传统服务提供商被连接至通信链路125。根据另一个实施例,用户系统105通过诸如局域或广域网的网络连接而连接通信链路125。根据一个实施例,操作系统包括TCP/IP堆栈,TCP/IP堆栈对通过通信链路125传递的所有进入和外出的消息流量进行操纵。虽然用户系统105参考上述实施例被公开,但是本发明不旨在由此受到限制。而是,本领域技术人员将由本文公开的内容意识到,用户系统105的大量可选实施例几乎包括能够从另一个计算机系统发送或接收信息的任何计算设备。例如,用户系统105可以包括、但不限于:计算机工作站,交互式电视,交互式问讯处,诸如数字助理、移动电话、便携式电脑等的个人移动计算设备,能够与通信链路125交互的诸如家庭路由器、网络储存设备("NAS")、个人热点等,或无线通信设备、智能卡、嵌入式计算设备等的个人联网设备。在这种可选系统中,操作系统将可能是不同的并且为特殊设备而改变。然而,根据一个实施例,操作系统有利地连续提供与通信链路125建立通信所需的适当的通信协议。图1示出信任引擎110。根据一个实施例,信任引擎110包含用于访问和存储敏感信息的一个或多个安全服·务器,敏感信息可以是任何类型或形式的数据,诸如、但不限于文本、音频、视频、用户认证数据以及公共和私人的密码密钥。根据一个实施例,认证数据包括被设计成唯一识别密码系统100的用户的数据。例如,认证数据可以包括用户识别号、一个或多个生物计量和由信任引擎110或用户产生的一系列问题和回答,但是在用户最初注册时回答过。上述问题可以包括诸如出生地、地址、结婚纪念日等人口数据,诸如妈妈的娘家姓、喜爱的冰激凌等个人数据,或被设计成唯一识别用户的其他数据。信任引擎110对与当前事务相关的用户的认证数据与诸如在注册期间的更早时间提供的认证数据进行比较。信任引擎110可以有利地要求用户在每次事务时产生认证数据,或者,信任引擎110可以诸如在事务字符串开始时或登录到特殊的卖方网站上时,有利地允许用户定期产生认证数据。根据用户产生生物计量数据的实施例,用户给生物计量设备107提供一种物理特性,诸如、但不限于面部扫描、手扫描、耳朵扫描、虹膜扫描、视网膜扫描、血管图案、DNA、指纹、笔迹或语音。生物计量设备有利地产生物理特性的电子图案或生物计量。电子图案通过用户系统105被传送给信任引擎110用于注册或认证目的。—旦用户产生了适当的认证数据并且信任引擎110确定了认证数据(当前认证数据)与注册时提供的认证数据(注册认证数据)之间的肯定匹配,则信任引擎110给用户提供完整的密码功能。例如,被正确认证的用户可以有利地采用信任引擎110来执行哈希(hashing)、数字签署、加密和解密(经常合在一起仅被称为加密)、产生或分发数字证书等。然而,密码功能中使用的私人密码密钥在信任引擎110之外将不可用,由此确保密码密钥的完整性(integrity)。根据一个实施例,信任引擎110产生和存储密码密钥。根据另一个实施例,至少一个密码密钥与每个用户相关。此外,当密码密钥包括公共密钥技术时,与用户相关的每个私人密钥都在信任引擎110内产生、并且不从信任引擎110被释放。因此,只要用户有权访问信任引擎110,用户就可以使用他或她的私人或公共密钥执行密码功能。这种远程访问有利地允许用户通过诸如蜂窝和卫星电话、公共电话、便携式电脑、旅馆房间等事实上任何因特网连接而保持完全的移动和访问密码功能。根据另一个实施例,信任引擎110使用为信任引擎110产生的密钥对执行密码功能。根据这个实施例,信任引擎110首先认证用户,并且在用户具有与注册认证数据匹配的正确产生的认证数据之后,信任引擎110为了被认证用户的利益而使用它自己的密码密钥对执行密码功能。本领域技 术人员将从本文公开的内容认识到,密码密钥可以有利地包括对称密钥、公共密钥和私人密钥的一部分或全部。另外,本领域技术人员将从本文公开的内容认识至|J,可以用诸如RSA、ELGAMAL等从商业技术可买到的大量算法实施上述密钥。图1还示出证书机构115。根据一个实施例,证书机构115可以有利地包含发出诸如VeriSign、Baltimore、Entrust等数字证书的被信任的第三方组织或公司。信任引擎110可以有利地通过诸如PKCSlO的一个或多个传统数字证书协议将对数字证书的请求传输给证书机构115。作为响应,证书机构115将按照诸如PKCS7的多个不同的协议中的一个或多个协议发出数字证书。根据本发明的一个实施例,信任引擎110从几个或全部的著名证书机构115请求数字证书,使得证书机构115有权访问相当于任何请求方的证书标准的数字证书。根据另一个实施例,信任引擎110在内部执行证书发布。在这个实施例中,信任引擎110可以访问证书系统以便产生证书,和/或当它们被请求时(诸如在密钥产生时)可以在内部产生证书,或可以按照请求时请求的证书标准在内部产生证书。下面将更详细地公开信任引擎110。图1还示出卖方系统120。根据一个实施例,卖方系统120有利地包含网络服务器。典型的网络服务器一般使用诸如超文本链接标示语言(HTML)或可扩展标志语言(XML)的几种因特网标注语言或文档格式标准之一、通过因特网为内容服务(serve content)。网络服务器接受来自比如Netscape和Internet Explorer的浏览器的请求,然后返回适当的电子文档。许多服务器或客户端技术都能够用于使网络服务器的能力增大到超过它的能力,以交付标准电子文档。例如,这些技术包括公共网关接口(CGI)脚本、加密套接字协议层(SSL)安全性和动态服务器主页(ASPs)。卖方系统120可以有利地提供与商业、个人、教育、或其他事务有关的电子内容。虽然参考上述实施例公开了卖方系统120,但是本发明不旨在由此受到限制。而是,本领域技术人员将从本文公开的内容认识到,卖方系统120可以有利地包含参考用户系统105描述的任何设备或其组合。图1还示出连接用户系统105、信任引擎110、证书机构115和卖方系统120的通信链路125。根据一个实施例,通信链路125优选包含因特网。贯穿本公开使用的因特网是计算机的全球网络。本领域普通技术人员熟知的因特网的结构包括网络主干线(backbone),网络主干线具有从网络主干线开始的网络分支。这些分支继而具有从它们开始的网络分支,诸如此类。路由器在网络级之间移动信息包,于是从一个网络到另一个网络,直到包到达它的目标的邻居。目标网络的主机从目标引导信息包到适当的终端,或节点。在一个有利的实施例中,因特网路由集线器包含使用本领域中众所周知的传输控制协议/因特网协议(TCP/IP)的域名系统(DNS)服务器。路由集线器经由高速通信链路连接至一个或多个其他的路由集线器。因特网的一个 大众化部分是万维网。万维网含有不同的计算机,这些计算机存储能够显示图形和文本信息的文档。在万维网上提供信息的计算机通常被称为“网站”。通过具有相关的电子页的因特网地址定义网站。电子页能够通过统一资源定位符(URL)来识另IJ。一般而言,电子页是对文本、图形化图像、音频、视频等的呈现进行组织的文档。虽然通信链路125就其优选实施例被公开,但是本领域的一名普通技术人员将从本文公开的内容认识到,通信链路125可以包括范围宽广的交互式通信链路。例如,通信链路125可以包括交互式电视网络、电话网络、无线数据传输系统、双向电缆系统、定制的私人或公共计算机网络、交互式公共电话网络、自动出纳机网络、直接链路、卫星或蜂窝网络等。
图2示出根据本发明一个实施例的多个方面的图1的信任引擎110的框图。如图2所示,信任引擎110包括事务引擎205、存储库210、认证引擎215和密码引擎220。根据本发明的一个实施例,信任引擎110还包括海量储存器(mass storage) 225。如图2进一步所示,事务引擎205与存储库210、认证引擎215和密码引擎220、以及海量储存器225通信。另外,存储库210与认证引擎215、密码引擎220和海量储存器225通信。此外,认证引擎215与密码引擎220通信。根据本发明的一个实施例,上述通信的一部分或全部可以有利地包含将XML文档传输到相应于接收设备的IP地址。如上所述,XML文档有利地允许设计者产生他们自己定制的文档标签,在应用程序之间和组织之间允许数据的定义、传输、确认和判读。此外,上述通信的一部分或全部可以包括传统的SSL技术。根据一个实施例,事务引擎205包含数据路由设备,诸如从Netscape、Microsoft、Apache等可买到的传统网络服务器。例如,网络服务器可以有利地接收来自通信链路125的进入数据。根据本发明的一个实施例,进入数据被寻址到用于信任引擎110的前段安全系统。例如,前端安全系统可以有利地包括防火墙、搜索已知攻击剖面(attackprofile)的入侵检测系统和/或病毒扫描器。清理完前端安全系统后,数据被事务引擎205接收并且路由至存储库210、认证引擎215、密码引擎220和海量储存器225之一。另外,事务引擎205监视来自认证引擎215和密码引擎220的进入数据,并且通过通信链路125将数据路由至特殊系统。例如,事务引擎205可以有利地将数据路由至用户系统105、证书机构115、或卖方系统120。根据一个实施例,使用传统的HTTP路由技术路由数据,传统的HTTP路由技术诸如采用URL或统一资源标识符(URI)。URI类似于URL,然而,URI通常指出诸如可执行文件、脚本等的文件或动作的资源。因此,根据一个实施例,用户系统105、证书机构115、卖方系统120和信任引擎210的组件,有利地包括用于事务引擎205贯穿密码系统正确地路由数据的通信URL或URI内的足够的数据。虽然参考数据路由的优选实施例公开了数据路由,但是本领域技术人员将认识到大量可行的数据路由方案或策略。例如,XML或其他数据包可以有利地被还原并通过它们的格式、内容等被认出,使得事务引擎205可以通过信任引擎110正确地路由数据。此外,本领域技术人员将认识到数据路由可以有利地适于符合特殊网络系统的数据传送协议,诸如当通信链路125包含本地网络时。根据本发明的还一个实施例,事务引擎205包括传统的SSL加密技术,使得上述系统可以在特殊通信期间利用事务引擎205认证它们自己,反之亦然。正如贯穿本公开将使用的那样,术语“1/2SSL”指的是服务器被SSL认证而客户不必被SSL认证的通信,并且术语“完全SSL”指的是客户和服务器都被SSL认证的通信。在当前公开使用术语“SSL”时,通信可以包含1/2或完全SSL。随着事务引擎205将数据路由至密码系统100的不同组件,事务引擎205可以有利地产生检查索引(audit trail)。根据一个实施例,检查索引包括通过事务引擎205在密码系统100中路由的数据的至少类型和格式的记录。这种检查数据可以有利地被存储在海量储存器225中。图2还示出存储库210。根据一个实施例,存储库210包含一个或多个数据储存设施,诸如目录服务器、数据库服务器等。如图2所示,存储库210存储密码密钥和注册认证数据。密码密钥可以有利地相应于信任引擎110或相应于密码系统100的用户,诸如用户或卖方。注册认证数据可以有利地包括被设计成唯一识别用户的数据,诸如用户ID、密码、对问题的回答、生物计量数据等。在用户注册时或另一个可选的稍后时间可以有利地获得这个注册认证数据。例如,信任引擎110可以包括定期的或其他更新的或重新发出的注册认证数据。根据一个实施例,来自`事务引擎205和来往认证引擎215及密码引擎220的通信包含诸如传统SSL技术的安全通信。另外,如上所述,来往存储库210的通信数据可以使用URLs、URIs、HTTP或XML文档、利用任何上述被有利地具有的数据请求和嵌入于其中的格式被传送。如上所述,存储库210可以有利地包含多个安全数据储存设施。在这种实施例中,安全数据储存设施可以被构造成使得对一个个别的数据储存设施的安全性的损害(compromise)将不损害存储于其中的密码密钥或认证数据。例如,根据这个实施例,密码密钥和认证数据被数学操作以便对存储在每个数据储存设施中的数据进行统计学上和基本上地随机化。根据一个实施例,各别的数据存储设施的数据的随机化使数据不可破译。因此,个别的数据存储设施的损害只产生随机的不可破译的数并不损害作为一个整体的任何密码密钥或认证数据的安全性。图2还示出包括认证引擎215的信任引擎110。根据一个实施例,认证引擎215包含被配置成对来自事务引擎205的比较数据与来自存储库210的数据进行比较的数据比较器。例如,在认证期间,用户给信任引擎110供应当前认证数据,使得事务引擎205接收当前认证数据。如上所述,事务引擎205优选在URL或URI中认出数据请求,并将认证数据路由至认证引擎215。此外,在请求后,存储库210将相应于用户的注册认证数据转送给认证引擎215。因此,认证引擎215既有当前认证数据、又有注册认证数据用于比较。根据一个实施例,至认证引擎的通信包含诸如SSL技术的安全通信。此外,能够使用公共密钥技术在诸如超级加密的信任引擎110组件内提供安全性。例如,根据一个实施例,用户利用认证引擎215的公共密钥加密当前认证数据。另外,存储库210还利用认证引擎215的公共密钥加密注册认证数据。这样,只有认证引擎的私人密钥能够被用于对传输进行解密。如图2所示,信任引擎110还包括密码引擎220。根据一个实施例,密码引擎包含密码处理模块,密码处理模块被配置成有利地提诸如公共密钥基础设施(PKI)功能的传统密码功能。例如,密码引擎220可以有利地发出用于密码系统100的用户的公共密钥和私人密钥。密码密钥以这种方式在密码引擎220处被产生并且被转送到存储库210,使得至少私人密码密钥在信任引擎110外是不可用的。根据另一个实施例,密码引擎220使至少私人密码密钥数据被随机化和被分割,由此只存储被随机化的被分割数据。与注册认证数据的分割类似,分割过程确保被存储的密钥在密码引擎220外不可用。根据另一个实施例,密码引擎的功能能够与认证引擎215组合并且由认证引擎215执行。根据一个实施例,来往密码引擎的通信包括诸如SSL技术的安全通信。另外,可以有利地采用XML文档来传送数据和/或进行密码功能请求。图2还示出具有海量储存器225的信任引擎110。如上所述,事务引擎205保存相应于检查索引的数据并将这种数据存储在海量储存器225中。同样,根据本发明的一个实施例,存储库210保存相应于检查索引的数据并将这种数据存储在海量储存器设备225中。存储库检查索引数据类似于事务引擎205的数据,因为检查索引数据包含对存储库210所接收请求的记录和对其的响应。另外,海量储存器225可以用于存储数字证书,数字证书中含有用户的公共密钥。虽然参考信任引擎110的优选实施例和可选实施例公开了信任引擎110,但是本发明不旨在由此受到限制。而是,本领域技术人员将从本文公开的内容认识到,对信任引擎110有众多可选项。例如,信任引擎110可以有利地只执行认证,或可选地,只执行密码功能的一部分或全部,诸如数据加密和解密。根据这种实施例,可以有利地去除认证引擎215和密码引擎220之一,由此产生对信任引擎110更简洁的设计。另外,密码引擎220还可以与证书机构通信,使得证书机构在信任引擎110内被具体化。根据还一个实施例,信任引擎110可以有利地执行认证和一个或多个密码功能,诸如数字签署。图3示出根据本发明一个实施例的多个方面的图2的事务引擎205的框图。根据这个实施例,事务引擎205包含具有处理线程和收听线程的操作系统305。操作系统305可以有利地类似于在传统高容量服务器中找到的那些服务器,诸如从Apache可买到的网络服务器。收听线程监视来自通信链路125、认证引擎215和密码引擎220之一的进入通信,用于进入数据流。处理线程认出诸如之前数据结构的进入数据流的特殊数据结构,由此将进入数据路由至通信链路125、存储库210、认证引擎215、密码引擎220、或海量储存器225之一。如图3所示,进入和外出数据可以有利地通过例如SSL技术得到保护。图4示出根据本发明一个实施例的多个方面的图2的存储库210的框图。根据这个实施例,存储库210包含一个或多个 轻量级目录访问协议(LDAP)服务器。LDAP目录服务器从诸如Netscape、ISO等的众多厂商可买到。图4还显示目录服务器优选存储相应于密码密钥的数据405和相应于注册认证数据的数据410。根据一个实施例,存储库210包含对唯一用户ID索引认证数据和密码密钥数据的单个本地存储器结构。单个本地存储器结构优选包括用于确保在其中存储的数据的高度信任或安全性的机制。例如,存储库210的物理位置可以有利地包括众多传统的安全措施,诸如受限的员工访问、现代监视系统等。除了物理安全之外,或代替物理安全,计算机系统或服务器可以有利地包括软件解决方案来保护被存储的数据。例如,存储库210可以有利地产生和存储相应于所采取动作的检查索引的数据415。另外,进入或外出通信可以有利地用与传统SSL技术相联系的公共密钥加密进行加密。根据另一个实施例,存储库210可以包含不同的和物理分离的数据储存设施,正如参考图7进一步公开的那样。图5示出根据本发明一个实施例的多个方面的图2的认证引擎215的框图。类似于图3的事务引擎205,认证引擎215包含操作系统505,操作系统505具有诸如从Apache可买到的网络服务器的传统网络服务器的更改版本的收听和处理线程。如图5所示,认证引擎215包括对至少一个私人密钥510的访问。私人密钥510可以有利地用于例如从事务引擎205或存储库210解密数据,该数据是用认证引擎215的相应的公共密钥加密的。图5还示出包含比较器515、数据分割模块520和数据组装模块525的认证引擎215。根据本发明的优选实施例,比较器515包括能够比较与之前的生物计量认证数据有关的可能复杂的图案的 技术。该技术可以包括硬件、软件、或组合的解决方案,用于诸如那些代表指纹图案或语音图案的图案比较。另外,根据一个实施例,认证引擎215的比较器515可以有利地比较传统的文档哈希,以便给出比较结果。根据本发明的一个实施例,比较器515包括将探试应用(heuristics) 530应用于比较。探试应用530可以有利地解决与认证尝试密切相关的情形,诸如时刻、IP地址或子网模(subnet mask)、购买剖面、电子邮件地址、处理器序列号或ID等。此外,生物计量数据比较的本质可能导致由于当前的生物计量认证数据与注册数据的匹配产生的不同程度的置信度。例如,不同于可能只返回肯定或否定匹配的传统密码,指纹可以被确定为部分匹配,例如90%匹配、75%匹配、或10%匹配,而非简单地是正确的或错误的。诸如语音印记分析或面部识别的其他生物计量标识符可以共享这个概率认证的属性,而非绝对认证。当用这种概率认证工作时或在认证被视为小于绝对可靠的其他情况下,应用探试应用530来确定在所提供的认证中的置信级别是否高到足以认证正在进行的事务是令人期待的。有时将会是这种情况,S卩,发出的事务是相对低的值事务,这种情况下被认证为较低的置信级别是可接受的。这能够包括与它相关的低美元值(例如10美元购买)的事务或者具有低风险的事务(例如只许可成员的网站)。反之,对于认证其他事务,在允许事务进行之前在认证中要求高置信度可能是令人期待的。这种事务可以包括大美元值的事务(例如签署数百万美元供应契约)或如果错误认证发生则具有高风险的事务(例如远程记录到政府计算机上)。正如下面要描述的那样,与置信级别和事务值相结合的探试应用530的使用可以用于允许比较器提供动态背景敏感的认证系统。根据本发明的另一个实施例,比较器515可以有利地跟踪用于特殊事务的认证尝试。例如,当事务失败时,信任引擎110可以请求用户重新输入他或她的当前认证数据。认证引擎215的比较器515可以有利地采用尝试限制器535来限制认证尝试的次数,由此禁止用于模仿用户的认证数据的粗暴尝试。根据一个实施例,尝试限制器535包含监视事务的软件模块,用于重复认证尝试和例如对于给定事务将认证尝试限制到三次。因此,尝试限制器535将用于模仿个人的认证数据的自动尝试限制到例如简单的三次“猜测”。三次失败后,尝试限制器535可以有利地拒绝额外的认证尝试。可以有利地通过例如比较器515与被传输的当前认证数据无关地返回否定结果而实施这种拒绝。另一方面,事务引擎205可以有利地阻挡从属于三次尝试之前已经失败的事务的任何额外的认证尝试。认证引擎215还包括数据分割模块520和数据组装模块525。数据分割模块520有利地包含软件、硬件、或组合模块,其具有对不同数据进行数学操作从而基本上使数据随机化并把数据分割成几部分的能力。根据一个实施例,原始数据不可从个别的部分重建。数据组装模块525有利地包含软件、硬件、或组合模块,其被配置成对之前基本被随机化的部分进行数学操作,使得其组合提供原始被破译的数据。根据一个实施例,认证引擎215采用数据分割模块520来随机化注册认证数据并将其分割成几部分,并采用数据组装模块525来将这几部分重组成可用的注册认证数据。
·
图6示出根据本发明一个实施例的多个方面的图2的信任引擎200的密码引擎220的框图。类似于图3的事务引擎205,密码引擎220包含操作系统605,操作系统605至少具有诸如从Apache可买到的网络服务器的传统网络服务器的更改版本的收听和处理线程。如图6所示,密码引擎220包含功能类似于图5的数据分割模块610和数据组装模块620。然而,根据一个实施例,数据分割模块610和数据组装模块620处理密码密钥数据,就象相对于之前的注册认证数据那样。尽管这样,本领域技术人员将从本文公开的内容认识至IJ,数据分割模块610和数据组装模块620可以与认证引擎215的那些组合。密码引擎220还包含被配置成执行众多密码功能的一个、一部分或全部的密码处理模块625。根据一个实施例,密码处理模块625可以包含软件模块或程序、硬件、或两者。根据另一个实施例,密码处理模块625可以执行数据比较、数据剖析、数据分割、数据分离、数据哈希、数据加密或解密、数字签名验证或产生、数字证书产生、储存或请求、密码密钥产生等。此外,本领域技术人员将从本文公开的内容认识到,密码处理模块625可以有利地包含公共密钥基础设施,诸如完美隐私(PGP)、基于RSA的公共密钥系统、或众多可选的密钥管理系统。另外,密码处理模块625可以执行公共密钥加密、对称密钥加密、或两者。除了上述之外,密码处理模块625还可以包括一个或多个计算机程序或模块、硬件、或两者,以便实施无缝、透明、互用性功能。本领域技术人员将从本文公开的内容认识到,密码功能可以包括一般与密码密钥管理系统有关的众多或各种的功能。图7示出根据本发明一个实施例的多个方面的存储库系统700的简化框图。如图7所示,存储库系统700有利地包含多个数据储存设施,例如数据储存设施D1、D2、D3和D4。然而,本领域普通技术人员易于理解的是,存储库系统可以只有一个数据储存设施。根据本发明的一个实施例,每个数据储存设施Dl至D4可以有利地包含参考图4的存储库210公开的元素的一部分或全部。类似于存储库210,数据储存设施Dl至D4优选通过传统SSL与事务引擎205、认证引擎215和密码引擎220通信。通信链路传送例如XML文档。来自事务引擎205的通信可以有利地包括对数据的请求,其中该请求被有利地向每个数据储存设施Dl至D4的IP地址广播。另一方面,事务引擎205可以基于诸如响应时间、服务器负载、维护计划等众多标准而广播对特殊数据储存设施的请求。响应于对来自事务引擎205的对数据的请求,存储库系统700将存储的数据有利地转送到认证引擎215和密码引擎220。各数据组装模块接收转送的数据并将数据组装成有用的格式。另一方面,从认证引擎215和密码引擎220到数据储存设施Dl至D4的通信可以包括对要存储的敏感数据的传输。例如,根据一个实施例,认证引擎215和密码引擎220可以有利地采用它们各自的数据分割模块将敏感数据划分成不可破译的部分,然后将敏感数据的一个或多个不可破译部分传输给特殊的数据储存设施。根据一个实施例,每个数据储存设施Dl至D4都包含诸如目录服务器的单独且独立的储存系统。根据本发明的另一个实施例,存储库系统700包含多个地理分离的独立的数据储存系统。通过将敏感数据分配到不同且独立的储存设施Dl至D4中,储存设施Dl至D4的一部分或全部可以被有利地地理分离,存储库系统700提供冗余性和额外的安全措施。例如,根据一个实施例,只有来自多个数据储存设施Dl至D4中的两个的数据需要被破译并且重组敏感数据。因此,多如四个数据储存设施Dl至D4中的两个可以由于维护、系统故障、电力故障等缘故而不起作用,但不影响信任引擎110的功能。另外,根据一个实施例,因为每个数据储存设施中存储的数据是随机化且不可破译的,所以任何单独的数据储存设施的损害都不必然损害敏感数据。此外,在具有地理分离的数据储存设施的实施例中,多个地理上远程的设施的损害变得愈加困难。事实上,为了颠覆必须的多个独立的地理上远程的数据储存设施,即使调皮捣蛋的员工也将得到极大的挑战。虽然参考存储库系统700的优选和可选的实施例公开了存储库系统700,但是本发明不旨在由此受到限制。而是,本领域技术人员将从本文公开的内容认识到用于存储库系统700的众多可选项。例如,存储库系统700可以包含一个、两个或更多个数据储存设施。另外,敏感数据可以被数学操作,使得重组和破译敏感数据需要来自两个或更多个数据储存设施的几部分。如上所述,认证引擎215和密码引擎220每个都分别包括数据分割模块520和610,用于分割任何类型或形式的敏感数据,诸如文本、音频、视频、认证数据和密码密钥数据。图8示出根据本发明一个实施例的多个方面通过数据分割模块执行的数据分割过程800的流程图。如图8所示,数据分割过程800在敏感数据〃S〃被认证引擎215或密码引擎220的数据分割模块接收时开始于步骤805。优选地是,在步骤810中,数据分割模块接着产生基本上随机的数、值、或位的字符串或组,〃A〃。例如,可以用一个本领域普通技术人员可用的众多不同的传统技术来产生随机数A,以便产生适于在密码应用程序中使用的高品质随机数。另外,根据一个实施例,随机数A包含位长度,位长度可以是任何适当的长度,诸如比敏感数据S的位长度更短、更长或与其相等。另外,在步骤820中,数据分割过程800产生另一个统计上的随机数"C〃。根据优选实施例,统计上的随机数A和C的产生可以有利地并行进行。数据分割模块随后将数A和C与敏感数据S组合,使 得新数"B 〃和"D 〃被产生。例如,数B可以包含A异或(XOR)S的二进制组合并且数D可以包含C XOR S的二进制组合。XOR功能、或者〃或非(exclusive-or) 〃,是本领域普通技术人员熟知的。上述组合优选分别发生在步骤825和830中,并且根据一个实施例,上述组合还可并行发生。数据分割过程800之后前进到步骤835,在步骤835中随机数A和C以及数B和D被配对,使得没有一个配对会通过它们自己含有足够的数据,来重组和破译原始敏感数据S。例如,这些数可以如下进行配对:AC、AD、BC和BD。根据一个实施例,每个上述配对都被分配给图7的存储库Dl至D4之一。根据另一个实施例,每个上述配对都被随机分配给存储库Dl至D4之一。例如,在第一数据分割过程800期间,配对AC可以通过例如随机选择的D2的IP地址被发送给存储库D2。然后,在第二数据分割过程800期间,配对AC可以通过例如随机选择的D4的IP地址被发送给存储库D4。另外,配对可以全部被存储在一个存储库上,并且可以被存储在所述存储库上的单独的位置中。基于上述,数据分割过程800将敏感数据的几部分有利地放在四个数据储存设施Dl至D4的每个之中,使得没有单个的数据储存设施Dl至D4包括用于重建原始敏感数据S的足够的被加密数据。如上所述,这种将数据随机化成个别的不能使用的被加密部分增大了安全性,并且即使数据储存设施Dl至D4之一被损害也能提供对数据被维持的信任。虽然参考数据分割过程800的优选实施例公开了数据分割过程800,但是本发明不旨在由此受到限制。而是,本领域技术人员将从本文公开的内容认识到对于数据分割过程800的众多可选项。例如,数据分割过程可以将数据有利地分开成两个数,例如,随机数A和数B,以及,通过两个数据储存设施随机分配A和B。此外,数据分割过程800可以通过产生额外的随机数在众多数据储存设施当中有利地分割数据。数据可以被分割成任何期望的、选择的、预定的、或随机分配的大小的单元,包括但不限于位、多位、多字节、千字节、兆字节或更大,或大小序列的任何组合。另外,由分割过程引起的对数据单元大小的改变可能给出更加难以恢复成可用形式的数据,由此增大了敏感数据的安全性。本领域普通技术人员易于理解地是,分割数据单元大小可以是多种多样的数据单元大小或大小的图案或大小的组合。例如,数据单元大小可以被选择或预定为所有都是相同的大小、固定设置的不同大小、大小的组合、或随机产生的大小。同样,根据固定或预定的数据单元大小、数据单元大小的图案或组合、或随机产生的数据 单元大小或每份的大小,数据单元可以被分配成一份或多份。如上所述,为了重建敏感数据S,数据部分需要被去随机化并重组。这个过程可以有利地分别发生在认证引擎215和密码引擎220的数据组装模块525和620中。例如数据组装模块525的数据组装模块接收来自数据储存设施Dl至D4的数据部分,并且将数据重组成可用形式。例如,根据图8的数据分割过程800采用数据分割模块520的一个实施例,数据组装模块525使用来自数据储存设施Dl至D4中的至少两个的数据部分重建敏感数据S。例如,AC、AD、BC和BD的配对被分配成使得任何两个都提供A和B、或C和D之一。注意到S=A XOR B或S=CXOR D指出数据组装模块何时接收A和B、或C和D之一,数据组装模块525能够有利地重组敏感数据S。因此,数据组装模块525响应于信任引擎110的组装请求,可以在例如它接收来自数据储存设施Dl至D4的至少头两个的数据部分时,组装敏感数据S。基于上述数据分割和组装过程,敏感数据S只在信任引擎110的有限区域中以可用格式存在。例如,当敏感数据S包括注册认证数据时,可用的、非随机化的注册认证数据只在认证引擎215中可用。同样,当敏感数据S包括私人密码密钥数据时,可用的、非随机化的私人密码密钥数据只在密码引擎220中可用。虽然参考数据分割和组装过程的优选实施例公开了数据分割和组装过程,但是本发明不旨在由此受到限制。而是,本领域技术人员将从本文公开的内容认识到用于分割和重组敏感数据S的众多可选项。例如,公共密钥加密可以用于在数据储存设施Dl至D4处进一步保护数据。另外,本领域普通技术人员易于理解地是,本文描述的数据分割模块也是本发明的单独且不同的实施例,这些实施例可以被并入到任何现有的计算机系统、软件套件(software suite)、数据库、或它们的组合,或诸如本文公开和描述的信任引擎、认证引擎和事务引擎的本发明的其他实施例之中,或与它们组合,或做成它们的一部分。图9A示出根据本发明一个实施例的多个方面的注册过程900的数据流。如图9A所示,注册过程900在用户期望用密码系统100的信任引擎110注册时在步骤905处开始。根据这个实施例,用户系统105有利地包括客户端支程序,诸如基于Java的,支程序询问用户以输入诸如入口数据和注册认证数据的注册数据。根据一个实施例,注册认证数据包括用户ID、密码(多个密码)、生物计量(多个生物计量)等。根据一个实施例,在询问过程期间,客户端支程序优选与信任引擎110通信以确保选定的用户ID是唯一的。当用户ID不唯一时,信任引擎110可以有利地建议唯一的用户ID。客户端支程序收集注册数据并例如通过XML文档将注册数据传输给信任引擎110,并且尤其是,传输给事务引擎205。根据一个实施例,传输利用认证引擎215的公共密钥进行编码。根据一个实施例,用户在注册过程900的步骤905期间执行一次注册。例如,用户将他自己或她自己注册为诸如Joe User的特殊人物。当Joe User期望注册为Mega公司的CEO, Joe User时,于是根据这个实施例,Joe User第二次注册,接收第二个唯一的用户ID并且信任引擎110不使两个身份相关。根据本发明的另一个实施例,注册过程900为单个用户ID提供多个用户身份。因此,在上述示例中,信任引擎110将有利地使Joe User的两个身份相关。正如本领域技术人员从本文公开的内容将认识到的那样,用户可以具有许多身份,例如,户主JoeUser,慈善基金会成员Joe User等。即使用户可以具有多个身份,根据这个实施例,信任引擎110也优选只存储一个注册数据集。此外,用户可以按照他们的需要有利地增加、编辑/更新、或删除身份。虽然参考注册过程900的优选实施例公开了注册过程900,但是本发明不旨在由此受到限制。而是,本领域技术人员将从本文公开的内容认识到用于收集注册数据的众多可选项,并且尤其是,注册认证数据。例如,支程序可以是基于公共对象模式(COM)的支程序等。另一方面,注册过程可以包括分级注册。例如,最低级注册时,用户可以通过通信链路125注册而不产生关于他或她的身份的参考资料。根据升级的注册,用户使用诸如数字公证员的被信任的第三方注册。例如,并且用户可以给被信任的第三方现出真身,提供诸如出生证、驾照、军人ID等证件,并且被信任的第三方在注册提交过程中可以有利地包括例如他们的数字签名。被信任的第三方可以包括真正的公证员、诸如邮局或机动车辆部门的政府机构、注册为员工的大公司里的人力资源人员等。本领域技术人员将从本文公开的内容认识到,注册的众多变化级别可以在注册过程900期间发生。在步骤915 处接收到注册认证数据后,事务引擎205使用传统的完全SSL(FULLSSL)技术将注册认证数据转送到认证引擎215。在步骤920处,认证引擎215使用认证引擎215的私人密钥解密注册认证数据。另外,认证引擎215采用数据分割模块对注册认证数据进行数学操作,从而将数据分割成至少两个独立的不可破译的被随机化的数。如上所述,至少两个数可以包含统计上的随机数和二进制被异或的数。在步骤925中,认证引擎215将被随机化的数的每个部分转送到数据储存设施Dl至D4之一。如上所述,认证引擎215还可以有利地使哪几部分被传送给哪几个存储库随机化。经常在注册过程900期间,用户还将期望具有被发出的数字证书,从而使他或她可以从密码系统100之外的其他来源接收被加密的文档。如上所述,证书机构115 —般根据几个传统标准的一个或多个发出数字证书。一般而言,数字证书包括每个人都知道的用户或系统的公共密钥。如果用户在注册时或在另一个时间请求数字证书,则请求通过信任引擎110被传送给认证引擎215。根据一个实施例,请求包括具有例如用户的真名的XML文档。根据步骤935,认证引擎215将请求传送给密码引擎220,命令密码引擎220产生密码密钥或密钥对。请求后,在步骤935处,密码引擎220产生至少一个密码密钥。根据一个实施例,密码处理模块625产生密钥对,其中一个密钥被用作私人密钥,而另一个被用作公共密钥。密码引擎220存储私人密钥,和根据一个实施例,公共密钥的副本。在步骤945处,密码引擎220将对数字证书的请求传输给事务引擎205。根据一个实施例,该请求有利的包括被标准化的请求,诸如被嵌入在例如XML文档中的PKCSlO。对数字证书的请求可以有利地相应于一个或多个证书机构,并且一个或多个标准编排证书机构请求的格式。在步骤950中事务引擎205将这个请求转送给证书机构115,证书机构115在步骤955中返回数字证书。返回数字证书可以有利地具有诸如PKCS7的被标准化的格式,或者具有一个或多个证书机构115的专有格式。在步骤960中,数字证书被事务引擎205接收至IJ,并且副本被转送给用户并且副本用信任引擎110存储。信任引擎110存储证书的副本从而使信任引擎110将不 需要依赖证书机构115的可用性。例如,当用户期望发送数字证书,或第三方请求用户的数字证书时,对数字证书的请求通常被发送给证书机构115。然而,如果证书机构115正在引导维护或已经是故障或安全性损害的受害者,则数字证书可能不可用。发出密码密钥之后的任何时间,密码引擎220都可以有利地采用上述的数据分割过程800,使得密码密钥被分割成独立的不可破译的被随机化的数。类似于认证数据,在步骤965处密码引擎220将被随机化的数传送给数据储存设施Dl至D4。本领域技术人员将从本文公开的内容认识到,用户可以在注册后的任何时间请求数字证书。此外,系统之间的通信可以有利地包括FULL SSL或公共密钥加密技术。此外,注册过程可以从包括信任引擎110内部或外部的一个或多个专门的证书机构在内的多个证书机构发出多个数字证书。如在步骤935至960中公开的那样,本发明的一个实施例包括对被最终存储在信任引擎110上的证书的请求。因为根据一个实施例,密码处理模块625发出由信任引擎110使用的密钥,每个证书相应于私人密钥。因此,信任引擎110可以有利地提供互用性,监视用户拥有、或与用户相关的证书。例如,当密码引擎220接收对密码功能的请求时,密码处理模块625可以审查请求用户拥有的证书以确定用户是否拥有与请求的属性匹配的私人密钥。当这种证书存在时,密码处理模块625可以使用证书或与其相关的公共或私人密钥,以执行被请求的功能。当这种证书不存在时,密码处理模块625可以有利地且透明地执行许多动作以尝试补救适当密钥的缺乏。例如,图9B示出互用性过程970的流程图,根据本发明一个实施例的多个方面,互用性过程970公开了上述步骤以确保密码处理模块625使用适当密钥执行密码功能。如图9B所示,互用性过程970开始于步骤972,在步骤972中密码处理模块925确定期望证书的类型。根据本发明的一个实施例,证书类型可以有利地在对密码功能的请求、或由请求者提供的其他数据中被规定。根据另一个实施例,证书类型可以由请求的数据格式确定。例如,密码处理模块925可以有利地认出该请求相应于特殊类型。根据一个实施例,证书类型可以包括例如RSA、ELGAMAL等一个或多个算法标准。另外,证书类型可以包括诸如对称密钥、公共密钥、诸如256位密钥的强加密密钥、较不安全密钥等一个或多个密钥类型。此外,证书类型可以包括一个或多个上述算法标准或密钥、一个或多个消息或数据格式、诸如Base32或Base64的一个或多个数据封装或编码体系的升级或替换。证书类型还可以包括与一个或多个第三方密码应用程序或接口、一个或多个通信协议、或一个或多个证书标准或协议的兼容性。本领域技术人员将从本文公开的内容认识到,在证书类型中可 以存在其他差别,并且可以如本文公开的那样实施对这些差别的翻译和由这些差别翻译。一旦密码处理模块625确定了证书类型,互用性过程970就可以前进到步骤974,并且确定用户是否拥有与步骤974中确定的类型匹配的证书。当用户拥有匹配的证书时,例如,信任引擎110有权访问匹配的证书,通过例如其之前的储存,密码处理模块625知道匹配的私人密钥也被存储在信任引擎110内。例如,匹配的私人密钥可以被存储在存储库210或存储库系统700内。密码处理模块625可以有利地请求匹配的私人密钥从例如存储库210进行组装,然后在步骤976中,使用匹配的私人密钥执行密码动作或功能。例如,如上所述,密码处理模块625可以有利地执行哈希、哈希比较、数据加密或解密、数字签名验证或产生等。当用户不拥有匹配的证书时,互用性过程970前进到步骤978,在步骤978中密码处理模块625确定用户是否拥有被交叉证明的证书。根据一个实施例,当第一证书机构确定信任来自第二证书机构的证书时,证书机构之间的交叉证明发生。换言之,第一证书机构确定来自第二证书机构的证书满足一定的质量标准,因此可以被〃认证为〃为等价于第一证书机构自己的证书。在证书机构发出例如具有信任级别的证书时交叉证明变得更加复杂。例如,第一证书机构通常基于注册过程中的可靠度,可以为特殊的证书提供三个信任级另IJ,而第二证书机构可以提供七个信任级别。交叉证明可以有利地跟踪来自第二证书机构的哪几个级别和哪几个证书可以用来自第一证书机构的哪几个级别和哪几个证书代替。当在两个证书机构之间官方和公开地进行上述交叉证明时,相互之间证书和级别的映射经常被称为“链接(chaining) ”。根据本发明的另一个实施例,密码处理模块625可以有利地发展在由证书机构商定的那些交叉证明之外的交叉证明。例如,密码处理模块625可以访问第一证书机构的认证事务说明(CPS)、或其他公布的政策声明,并使用例如被特殊的信任级别要求的认证标记物使第一证书机构的证书与另一个证书机构的证书匹配。
在步骤978中,当密码处理模块625确定用户拥有被交叉证明的证书时,互用性过程970前进到步骤976,并使用被交叉证明的公共密钥、私人密钥、或两者来执行密码动作或功能。可选地,当密码处理模块625确定用户不拥有被交叉证明的证书时,互用性过程970前进到步骤980,在步骤980中密码处理模块625选择发出被请求的证书类型、或去它们那里交叉证明的证书的证书机构。在步骤982处,密码处理模块625确定前面讨论的用户注册认证数据是否满足选定证书机构的认证要求。例如,如果用户通过例如回答人口统计问题和其他问题通过网络进行注册,则所提供的认证数据可以建立比提供生物计量数据并在诸如公证员的第三方前露脸的用户更低级别的信任。根据一个实施例,上述认证要求可以在选定证书机构的CPS中被有利地提供。当用户已经给信任引擎110提供了满足选定证书机构的要求的注册认证数据时,互用性过程970前进到步骤984,在步骤984中密码处理模块625获得来自选定证书机构的证书。根据一个实施例,密码处理模块625通过注册过程900后面的步骤945至960获得证书。例如,密码处理模块625可以有利地采用来自密码引擎220中早就可用的一个或多个密钥对的一个或多个公共密钥,以请求来自证书机构的证书。根据另一个实施例,密码处理模块625可以有利地产生一个或多个新密钥对,并使用与其相应的公共密钥,以请求来自证书机构的证书。根据另一个实施例,信任引擎110可以有利地包括能够发出一个或多个证书类型的一个或多个证书发出模块。根据这个实施例,证书发出模块可以提供上述证书。当密码处理模块625获得证书时,互用性过程970前进到步骤976,并使用相应于所获得证书的公共密钥、私人密钥、或两者执行密码动作或功能。在步骤982中,当用户尚未给信任引擎110提供满足选定证书机构的要求的注册认证数据时,密码处理模块625在步骤986中确定是否存在具有不同认证要求的其他证书机构。例如,密码处理模块625可以寻找具有较低认证要求的证书机构,但是仍发出其选定证书、或交叉证明。当具有较低要求 的上述证书机构存在时,互用性过程970前进到步骤980并选择证书机构。可选地,当不存在这种证书机构时,在步骤988中,信任引擎110可以请求来自用户的附加的认证标记物。例如,信任引擎110可以请求包含例如生物计量数据的新注册认证数据。同样,信任引擎110可以请求用户在被信任的第三方前露脸并提供适当的认证证件,诸如在公证员前呈现驾照、社保卡、银行卡、出生证、军人ID等。当信任引擎110接收被更新的认证数据时,互用性过程970前进到步骤984并且获得上述选定证书。密码处理模块625通过上述互用性过程970在不同密码系统之间有利地提供无缝、透明的翻译和转换。本领域技术人员将从本文公开的内容认识到上述可互操作的系统的众多优点和实施方式。例如,互用性过程970的上述步骤986可以有利地包括如下详述的信任仲裁的多个方面,在信任仲裁中证书机构可以在特定情形下接收较低级别的交叉证明。另外,互用性过程970可以包括在诸如采用证书撤销列表(CRL)的标准证书撤销的采用、在线证书状态协议(OCSP)等之间确保互用性。图10示出根据本发明一个实施例的多个方面的认证过程1000的数据流。根据一个实施例,认证过程1000包括收集来自用户的当前认证数据并将其与用户的注册认证数据进行比较。例如,认证过程1000开始于步骤1005,在步骤1005中用户期望与例如卖方执行事务。这种事务可以包括例如选择购买选项、请求访问卖方系统120的受限区域或设备等。在步骤1010处,卖方给用户提供事务ID和认证请求。事务ID可以有利地包括192位量,具有与128位随机量联系在一起的32位时间戳,或“临时的”,具有与32位卖方规定常数联系在一起的32位时间戮。这种事务ID唯一识别该事务,使得模仿者事务能够被信任引擎110拒绝。认证请求可以有利地包括对于特殊事务需要哪个级别的认证。例如,卖方可以规定对于发出事务所需的特殊置信级别。如果不能对这个置信级别做出认证,正如下面将讨论的那样,则没有通过用户升高置信级别的进一步认证、或在卖方与服务器之间的认证方面的改变,事务就将不发生。这些 问题在下面被更加彻底地讨论。根据一个实施例,事务ID和认证请求可以通过卖方端支程序或其他软件程序有利地产生。另外,事务ID和认证数据的传输可以包括使用诸如1/2SSL、或换言之卖方端被认证的SSL的传统SSL技术加密的一个或多个XML文档。用户系统105接收到事务ID和认证请求后,用户系统105收集当前认证数据,可能包括来自用户的当前的生物计量信息。在步骤1015处,用户系统105用认证引擎215的公共密钥对至少当前认证数据"B"和事务ID进行加密,并将该数据传送给信任引擎110。传输优选包含用至少传统的1/2SSL技术加密的XML文档。在步骤1020中,事务引擎205接收传输,优选认出URL或URI中的数据格式或请求,并将传输转送给认证引擎215。在步骤1015和1020期间,卖方系统120在步骤1025处使用优选的FULL SSL技术将事务ID和认证请求转送到信任引擎110。这个通信还可以包括卖方ID,虽然卖方识别还可以通过事务ID的非随机部分被通信。在步骤1030和1035处,事务引擎205接收通信,在检查索引中产生记录,并且产生对待从数据储存设施Dl至D4组装的用户的注册认证数据的请求。在步骤1040处,存储库系统700将相应于用户的注册认证数据的多个部分传送给认证引擎215。在步骤1045处,认证引擎215使用它的私人密钥对传输进行解密并对注册认证数据与用户提供的当前认证数据进行比较。步骤1045处的比较可以有利地供应启发式背景敏感认证,正如之前提到的那样,如在下面更详细讨论的那样。例如,如果接收的生物计量信息不能理想地匹配,则较低的信任匹配产生。在特殊的实施例中,认证的置信级别要权衡事务的本质和用户及卖方两者的期望。这也在下面更详细地讨论。在步骤1050处,认证引擎215用步骤1045的比较结果填写认证请求。根据本发明的一个实施例,用认证过程1000的是/否或真/假结果填写认证请求。在步骤1055中,被填入的认证请求被返回到卖方便于卖方照办,例如,允许用户完成启动认证请求的事务。根据一个实施例,确认消息被传递给用户。基于上述,认证过程1000有利地保持敏感数据安全并产生结果,结果被配置成维持敏感数据的完整性。例如,敏感数据仅在认证引擎215内部被组装。例如,注册认证数据是不可破译的,直到它被数据组装模块在认证引擎215内组装,并且当前认证数据是不可破译的,直到它被传统的SSL技术和认证引擎215的私人密钥解开。此外,传输给卖方的认证结果不包括敏感数据,并且用户可能甚至不知道他或她是否产生了有效的认证数据。虽然参考认证过程1000的优选和可选实施例公开了认证过程1000,但是本发明不旨在由此受到限制。而是,本领域技术人员将从本文公开的内容认识到用于认证过程1000的众多可选项。例如,卖方可以有利地被几乎任何请求的应用程序、甚至是驻留在用户系统105内的应用程序代替。例如,诸如Microsoft Word的客户应用程序可以使用应用程序接口(API)或密码API (CAPI)在解锁文档之前请求认证。可选地,邮件服务器、网络、蜂窝电话、个人或移动计算设备、工作站等,都可以做出可以通过认证过程1000填写的认证请求。事实上,在提供上述可信的认证过程1000后,请求应用程序或设备可以提供对众多电子或计算机设备或系统的访问或使用。此外,认证过程1000可以在万一认证失败时采用众多可选的过程(procedure)。例如,认证失败可以维持同一个事务ID并请求用户重新登入他或她的当前认证数据。如上所述,使用同一个事务ID允许认证引擎215的比较器监视和限制对特殊事务的认证尝试的次数,由此产生更安全的密码系统100。另外,可以有利地采用认证过程1000发展简洁的单一登陆解决方案,诸如解锁敏感数据仓库(vault)。例如,成功的或肯定的认证可以给被认证用户提供自动访问用于几乎无限量的系统或应用程序的任何次数的密码的能力。例如,对用户的认证可以给用户提供对与多个在线卖方、局域网、不同的个人计算设备、因特网服务提供商、拍卖提供商、投资经纪人等相关的密码、注册、财经证件等的访问。通过采用敏感数据仓库,用户可以选择真正大而随机的密码,因为他们不再需要通过联想记住它们。而是,认证过程1000提供对它们的访问。例如,用户可以选择长度超过二十个数的随机文字数字字符串,而非与难忘的数据、姓名等相关的什么东西。根据一个实施例,与给定用户相关的敏感数据仓库可以被有利地存储在存储库210的数据储存设施中,或被分割并存储在存储库系统700中。根据这个实施例,在肯定的用户认证后,信任引擎110将诸如用于适当的密码的被请求的敏感数据供应给请求的应用程序。根据另一个实施例,信任引擎110可以包括用于存储敏感数据仓库的单独的系统。例如,信任引擎110可以包括独立的软件引擎,该软件引擎实施数据仓库功能并且形象地驻留在信任引擎110的上述前端安全系统“后面”。根据这个实施例,软件引擎在其从信任引擎110接收到指出肯定的用户认证的信号之后供应被请求的敏感信号。
在又一个实施例中,可以通过第三方系统实施数据仓库。类似于软件引擎实施例,第三方系统可以在其从信任引擎110接收到指出肯定的用户认证的信号后有利地供应被请求的敏感数据。根据还一个实施例,可以在用户系统105上实施数据仓库。用户端软件引擎可以在接收到来自信任引擎110的指出肯定的用户认证的信号后供给上述数据。虽然参考数据可选实施例公开了上述数据仓库,但是本领域技术人员将从本文公开的内容认识到其众多的其他实施方式。例如,特殊数据仓库可以包括来自上述实施例的一些或全部的多个方面。另外,任何上述数据仓库都可以在不同时间采用一个或多个认证请求。例如,任何数据仓库都可以在每隔一个或多个事务时、定期地、每隔一个或多个会话(session)时、每次访问一个或多个网页或网站时、以一个或多个其他规定的时间间隔等,要求认证。图11示出根据本发明一个实施例的多个方面的签署过程1100的数据流。如图11所示,签署过程1100包括类似于之前参考图10描述的认证过程1000的那些步骤。根据本发明的一个实施例,签署过程1100首先认证用户,然后执行将如下详述的几种数字签名功能之中的一个或多个。根据另一个实施例,签署过程1100可以有利地存储与其有关的数据,诸如消息或文档的哈希等。这个数据可以有利地用在检查或任何其他事件中,诸如当参与方尝试拒绝接受事务时。如图11所示,在认证步骤期间,用户和卖方可以有利地商定诸如合同的消息。在签署期间,签署过程1100有利地确保由用户签署的合同等同于由卖方供应的合同。因此,根据一个实施例,在认证期间,在被传输到认证引擎215的数据中,买方和用户包括他们各自的消息或合同的副本的哈希。通过只采用消息或合同的哈希,信任引擎110可以有利地存储显著减少的数据量,提供一种更加有效和低成本高效益的密码系统。另外,被存储的哈希可以被有利地与考虑之中的文档的哈希进行比较,以确定考虑之中的文档是否与被任何一方签署的文档匹配。确定该文档是否等同于与事务有关的文档的能力提供额外的证据,该证据能够用于反对由一方对事务的拒绝的要求。在步骤1103处,认证引擎215组装注册认证数据并将其与用户提供的当前认证数据进行比较。当认证引擎215的比较器指出注册认证数据与当前认证数据匹配时,认证引擎215的比较器还对卖方供应的消息的哈希与用户供应的消息的哈希进行比较。因此,认证引擎215有利地确保用户同意的消息等同于卖方同意的消息。在步骤1105中,认证引擎215将数字签名请求传输给密码引擎220。根据本发明的一个实施例,该请求包括消息或合同的哈希。然而,本领域技术人员将从本文公开的内容认识到,密码引擎220事实上可以加密任何类型的数据,包括、但不限于视频、音频、生物计量、图像或文本,以形成所需的数字签名。返回到步骤1105,数字签名请求优选包含通过传统的SSL技术通信的XML文档。在步骤1110处,认证引擎215将请求传输到每个数据储存设施Dl至D4,使得每个数据储存设施Dl至D4都传输相应于签署方的密码密钥或多个密码密钥中他们各自的部分。根据另一个实施例,密码引擎220采用之前讨论的互用性过程970的一些或全部步骤,使得密码引擎220首先确定要为签署方从存储库210或存储库系统700请求的适当密钥或多个适当密钥,并且采取动作来提供适当的匹配密钥。根据又一个实施例,认证引擎215或密码引擎220可以有利地请求与`签署方相关、且存储在存储库210或存储库系统700中的一个或多个密钥。根据一个实施例,签署方包括用户和卖方之一或两者。在这种情况下,认证引擎215有利地请求相应于用户和/或卖方的密码密钥。根据另一个实施例,签署方包括信任引擎110。在这个实施例中,信任引擎110正在证实认证过程1000正确地认证了用户、卖方、或两者。因此,认证引擎215请求信任引擎110的密码密钥,诸如属于密码引擎220的密钥,以执行数字签名。根据另一个实施例,信任引擎110执行类似数字公证员的功能。在这个实施例中,签署方包括用户、卖方、或两者,以及信任引擎110。因此,信任引擎110提供用户和/或卖方的数字签名,然后用它自己的数字签名指出用户和/或卖方被正确认证。在这个实施例中,认证引擎215可以有利地请求对相应于用户、卖方、或两者的密码密钥的组装。根据另一个实施例,认证引擎215可以有利地请求对相应于信任引擎110的密码密钥的组装。根据另一个实施例,信任引擎110执行类似代理人职能的功能。例如,信任引擎110可以代表第三方的利益数字签署消息。在这种情况下,认证引擎215请求与第三方相关的密码密钥。根据这个实施例,签署过程1100可以在允许类似代理人职能的功能之前,有利地包括第三方的认证。另外,认证过程1000可以包括对第三方约束的检查,诸如指出何时和在什么情形下可以使用特殊的第三方的签名的商业逻辑等。基于上述,在步骤1110中,认证引擎从相应于签署方的数据储存设施Dl至D4请求密码密钥。在步骤1115中,数据储存设施Dl至D4将相应于签署方的密码密钥中它们各自的部分传输给密码引擎220。根据一个实施例,上述传输包括SSL技术。根据另一个实施例,上述传输可以有利地用密码引擎220的公共密钥进行超级加密。在步骤1120中,密码引擎220组装签署方的上述密码密钥,并且用其加密消息,由此形成数字签名(多个数字签名)。在签署过程1100的步骤1125中,密码引擎220将数字签名(多个数字签名)传输给认证引擎215。在步骤1130中,认证引擎215将填入的认证请求连同被哈希的消息和数字签名(多个数字签名)的副本一起传输给事务引擎205。在步骤1135中,事务引擎205将包含事务ID、认证是否成功的指示和数字签名(多个数字签名)的发票(receipt)传输给卖方。根据一个实施例,上述传输可以有利地包括信任引擎110的数字签名。例如,信任引擎110可以用它的私人密钥加密发票的哈希,由此形成要附于给卖方的传输的数字签名。根据一个实施例,事务引擎205还将确认消息传输给用户。虽然参考签署过程1100的优选和可选实施例公开了签署过程1100,但是本发明不旨在由此受到限制。而是,本领域技术人员将从本文公开的内容认识到用于签署过程1100的众多可选项。例如,卖方可以被诸如电子邮件应用程序的用户应用程序代替。例如,用户可能希望用他或她的数字签名数字签署特殊的电子邮件。在这种实施例中,贯穿签署过程1100的传输可以有利地只包括消息的哈希的一个副本。此外,本领域技术人员将从本文公开的内容认识到,众多的客户应用程序都可以请求数字签名。例如,客户应用程序可以包含文字处理器、电子制表软件、电子邮件、语音邮件、访问受限的系统区域等。另外,本领域技术人员将从本文公开的内容认识到,签署过程1100的步骤1105至1120可以有利地采用图9B的互用性过程970的一些或全部步骤,由此在可能例如需要处理具有不同的签名类型的数字签名的不同的密码系统之间提供互用性。图12示出根据本发明一个实施例的多个方面的加密/解密过程1200的数据流。如图12所示,解密过程1200开始于使用认证过程1000认证用户。根据一个实施例,认证过程1000在认证请求中包括同步的会话密钥。例如,在传统的PKI技术中,本领域技术人员理解使用公共和私人密钥加密或解密数据是数学密集的并且可能需要可观的系统资源。然而,在对称密钥密码系统中,或在消息的发送者和接收者共享被用于加密和解密消息的单个公共密钥的系统中,数学操作明显更简单和更快速。因此,在传统的PKI技术中,消息的发送者将产生同步会话密钥,并使用更简单、更快速的对称密钥系统加密消息。然后,发送者将用接收者的公共密钥加密会话密钥。被加密的会话密钥将被附于被同步加密的消息,并且两个数据都被发送给接收者。接收者使用他或她的私人密钥解密会话密钥,然后使用会话密钥来解密消息。基于上述,更简单和更快速的对称密钥系统被用于大多数的加密/解密处理。因此,在解密处理1200中,解密有利地假设同步密钥已经被用户的公共密钥加密。因此,如上所述,被加密的会话密钥被包括在认证请求中。返回到解密过程1200,在用户已经在步骤1205中得到认证后,认证引擎215将被加密的会话密钥转送到 密码引擎220。在步骤1210中,认证引擎215将请求转送到每个数据储存设施Dl至D4,请求用户的密码密钥数据。在步骤1215中,每个数据储存设施Dl至D4都将密码密钥中它们各自的部分传输给密码引擎220。根据一个实施例,上述传输用密码引擎220的公共密钥加密。在解密过程1200的步骤1220中,密码引擎220组装密码密钥并用其解密会话密钥。在步骤1225中,密码引擎将会话密钥转送给认证引擎215。在步骤1227中,认证引擎215填写包括被解密的会话密钥的认证请求,并将填写的认证请求传输给事务引擎205。在步骤1230中,事务引擎205将认证请求连同会话密钥一起转送给请求应用程序或卖方。然后,根据一个实施例,请求应用程序或卖方使用会话密钥解密被加密的消息。虽然参考解密过程1200的优选和可选实施例公开了解密过程1200,但是本领域技术人员将从本文公开的内容认识到用于解密过程1200的众多可选项。例如,解密过程1200可以走在同步密钥加密之前并且依赖完全的公共密钥技术。在这种实施例中,请求应用程序可以将全部消息传输给密码引擎220,或者可以采用某些类型的压缩或可逆的哈希,以便将消息传输给密码引擎220。本领域技术人员还将从本文公开的内容认识到,上述通信可以有利地包括用SSL技术包装的(wrapped) XML文档。
加密/解密过程1200还提供对文档或其他数据的加密。因此,在步骤1235中,请求应用程序或卖方可以有利地将对用户的公共密钥的请求传输给信任引擎110的事务引擎205。请求应用程序或卖方做出这个请求,因为请求应用程序或卖方使用用户的公共密钥,例如,用于加密会话密钥,会话密钥将被用于加密文档或消息。如在注册过程900中提到的那样,事务引擎205将用户的数字证书的副本存储在例如海量储存器225中。因此,在加密过程1200的步骤1240中,事务引擎205从海量储存器225请求用户的数字证书。在步骤1245中,海量储存器225将相应于用户的数字证书传输给事务引擎205。在步骤1250中,事务引擎205将数字证书传输给请求应用程序或卖方。根据一个实施例,加密过程1200的加密部分不包括用户的认证。这是因为请求卖方只需要用户的公共密钥,不请求任何敏感数据。本领域技术人员将从本文公开的内容认识到,如果特殊用户不具有数字证书,则信任引擎110可以采用注册过程900的一部分或全部来为该特殊用户产生数字证书。然后,信任引擎110可以启动加密/解密过程1200并由此提供适当的数字证书。另外,本领域技术人员将从本文公开的内容认识到,加密/解密过程1200的步骤1220和1235至1250可以有利地采用图9B的互用性过程的一部分或全部步骤,由此提供可能例如需要处理加密的不同密码系统之间的互用性。图13示出根据本发明的还一个实施例的多个方面的信任引擎系统1300的简化框图。如图13所示,信任引擎系统1300分别包含多个不同的信任引擎1305、1310、1315和1320。为了便于更加透彻地理解本发明,图13将每个信任引擎1305、1310、1315和1320示出为具有事务引擎、存储库和认证引擎。然而,本领域技术人员将认识到,每个事务引擎都可以有利地包含参考图1-8公开的元素和通信信道的一部分、组合、或全部。例如,一个实施例可以有利地包括具有一个或多个事务引擎、存储库和密码服务器或其任何组合的信任引擎。根据本发明的一个实施例,每个信任引擎1305、1310、1315和1320都是地理上分离的,使得例如信任引擎1305可以驻留在第一位置中,信任引擎1310可以驻留在第二位置中,信任引擎1315可以驻留在第三位置中,以及信任引擎1320可以驻留在第四位置中。上述地理分离有利地减少了系统响应时间,同时增加了整个信任引擎系统1300的安全性。例如,当用户登录到密码系统100上时,用户可能离第一位置最近并且可能期望被认证。正如参考图10描述的那样,为了被认证,用户提供诸如生物计量等的当前认证数据,并且当前认证数据被与用户的注册认证数据比较。因此,根据一个示例,用户有利地将当前认证数据提供给地理上最近的信任引擎1305。信任引擎1305的事务引擎1321接着将当前认证数据转送给同样驻留在第一位置处的认证引擎1322。根据另一个实施例,事务引擎1321将当前认证数据转送给信任引擎1310、1315、或1320的一个或多个认证引擎。事务引擎1321还请求组装来自例如每个信任引擎1305至1320的存储库的注册认证数据。根据这个实施例,每个存储库都将注册认证数据中它的部分提供给信任引擎1305的认证引擎1322。认证引擎1322接着采用来自例如前两个存储库的被加密数据部分以响应,并将注册认证数据组装成被破译的形式。认证引擎1322将注册认证数据与当前认证数据进行比较并且将认证结果返回给信任引擎1305的事务引擎1321。基于上述,信任引擎系统1300采用多个地理上分离的信任引擎1305至1320中最近的一个,来执行认证过程。根据本发明的一个实施例,将信息路由至最近的事务引擎可以有利地在客户端支程序处被执行,客户端支程序在一个或多个用户系统105、卖方系统120、或证书机构115上执行。根据可选实施例,可以采用更加精密的决策过程来从信任引擎1305至1320进行选择。例如,决策可以基于给定信任引擎的可用性、操作性、连接速度、负载、性能、地理接近度、或其组合。这样,信任引擎系统1300使它的响应时间更低同时维持与地理上远程的数据储存设施相关的安全优点,诸如参考图7讨论的那些,在图7中每个数据存储设施都存储敏感数据被随机化的部分。例如,在例如信任引擎1315的存储库1325处的安全损害不一定损害信任引擎系统1300的敏感数据。这是因为存储库1325只含有不可破译的被随机化的数据,这种数据完全没用。根据另一个实施·例,信任引擎系统1300可以有利地包括布置得类似于认证引擎的多个密码引擎。密码引擎可以有利地执行诸如参考图1-8公开的那些密码功能。根据还一个实施例,信任引擎系统1300可以用多个密码引擎有利地代替多个认证引擎,由此执行诸如参考图1-8公开的那些密码功能。根据本发明的还一个实施例,信任引擎系统1300可以用具有上述公开的认证引擎、密码引擎、或两者的功能的一部分或全部的引擎代替多个认证引擎的每个。虽然参考信任引擎系统1300的优选和可选实施例公开了信任引擎系统1300,但是本领域技术人员将认识到,信任引擎系统1300可以包含信任引擎1305至1320的几部分。例如,信任引擎系统1300可以包括一个或多个事务引擎,一个或多个存储库,一个或多个认证弓I擎,或一个或多个密码引擎或其组合。图14示出根据本发明的还一个实施例的多个方面的信任引擎系统1400的简化框图。如图14所示,信任引擎系统1400包括多个信任引擎1405、1410、1415和1420。根据一个实施例,每个信任引擎1405、1410、1415和1420都包含参考图1_8公开的信任引擎110的一部分或全部元素。根据这个实施例,当用户系统105、卖方系统120、或证书机构115的客户端支程序与信任引擎系统1400通信时,那些通信被发送给每个信任引擎1405至1420的IP地址。此外,每个信任引擎1405、1410、1415和1420的每个事务引擎,行为都类似于参考图13公开的信任引擎1305的事务引擎1321。例如,在认证过程期间,每个信任引擎1405、1410、1415和1420的每个事务引擎都将当前认证数据传输给它们各自的认证引擎,并传输请求,以组装存储在每个信任引擎1405至1420的每个存储库中的被随机化的数据。图14未示出这些通信的全部;不然示例会变得过度复杂。继续认证过程,每个存储库接着将它的被随机化数据部分通信给每个信任引擎1405至1420的每个认证引擎。每个信任引擎的每个认证引擎都采用它的比较器来确定当前认证数据与通过每个信任引擎1405至1420的存储库提供的注册认证数据是否匹配。根据这个实施例,每个认证引擎的比较结果接着被传输给其他三个信任引擎的冗余模块。例如,来自信任引擎1405的认证引擎的结果被传输给信任引擎1410、1415和1420的冗余模块。因此,信任引擎1405的冗余模块也接收来自信任引擎1410、1415和1420的认证引擎的结果。图15示出图14的冗余模块的框图。冗余模块包含比较器,比较器被配置成从三个认证引擎接收认证结果并将该结果传输给四个信任引擎的事务引擎。比较器比较来自三个认证引擎的认证结果,并且如果两个结果一致,则比较器断定认证结果应该与两个一致的认证引擎的认证结果匹配。然后这个结果被传输回到事务引擎,该事务引擎相应于与三个认证引擎无关的信 任引擎。基于上述,冗余模块由从认证引擎接收到的数据确定认证结果,该认证引擎优选在地理上远离该冗余模块的信任引擎。通过提供这种冗余功能,信任引擎系统1400确保信任引擎1405至1420之一的认证引擎的损害,不足以损害该特殊的信任引擎的冗余模块的认证结果。本领域技术人员将认识到,信任引擎系统1400的冗余模块功能还可以被应用于每个信任引擎1405至1420的密码引擎。然而,这种密码引擎通信未在图14中显示以免复杂。此外,本领域技术人员将认识到,对于图15的比较器的众多可选认证结果冲突消解算法都适于在本发明中使用。根据本发明的还一个实施例,信任引擎系统1400在密码比较步骤期间可以有利地采用冗余模块。例如,可以在通过一方或多方在特殊事务阶段提供的文档的哈希比较期间有利地实施参考图14和15公开的上述冗余模块的一部分或全部。虽然已经就某些优选和可选实施例描述了上述发明,但是由本文公开的内容,其他实施例对本领域普通技术人员也将是清楚的。例如,信任引擎110可以发出短期证书,在短期证书中私人密码密钥被释放给用户预定时间段。例如,当前证书标准包括有效性域,有效性域可以被设置成预定量时间之后过期。因此,信任引擎110可以将私人密钥释放给用户,而私人密钥会是例如24小时有效。根据这种实施例,信任引擎110可以有利地发出与特殊用户相关的新密码密钥对,然后释放新密码密钥对的私人密钥。随后,一旦私人密码密钥被释放,信任引擎110就立即终止这种私人密钥的任何内部有效使用,因为它不再能够被信任引擎110保护。另外,本领域技术人员将认识到密码系统100或信任引擎110可以包括认出任何类型设备的能力,诸如、但不限于便携式电脑、蜂窝电话、网络、生物计量设备等。根据一个实施例,这种认出可以来自在对特殊设备的请求中供应的数据,诸如对导致访问或使用的认证的请求、对密码功能的请求等。根据一个实施例,上述请求可以包括诸如处理器ID的唯一的设备标识符。可选地,请求可以包括具有特殊可认出的数据格式的数据。例如,移动电话和卫星电话经常不包括对完全X509.v3重加密证书的处理职能,因此不能请求它们。根据这个实施例,信任引擎110可以认出所提供的数据格式的类型,并只用这个类型响应(respond only in kind)。在上述的系统的其他方面中,能够使用将如下所述的不同技术提供背景敏感的认证。例如图16所示的背景敏感的认证提供评估的潜力(possibility),不仅评估当尝试认证用户自己时由用户发送的实际数据,而且评估围绕该数据的产生和交付的情形。这种技术还可以支持用户与信任引擎110之间或卖方与信任引擎110之间的事务专用信任仲裁(transaction specific trust arbitrage),正如将在下面描述的那样。如上所述,认证是证明一个用户就是他说的那个人的过程。一般而言,认证需要给证书机构展示一些事实。本发明的信任引擎110代表用户必须向它认证他自己的机构。用户必须通过以下向信任引擎110展示他就是他说的那个人:知道只有用户应该知道的一些事情(基于知识的认证)、具有只有用户应该具有的一些事情(基于标记物的认证)、或通过是只有用户应该是的一些事情(基于生物计量的认证)。基于知识的认证的示例包括、但不限于密码、PIN数、或锁定组合(lockcombination)。基于标记物的认证的示例包括、但不限于家庭密钥、物理信用卡、司机的驾照、或特殊的电话号码。基于生物计量的认证的示例包括、但不限于指纹、手写分析、面部扫描、手扫描、耳朵扫描、虹膜扫描、血管扫描、DNA、语音分析、或视网膜扫描。每种类型的认证都具有特殊的优点和缺点,并且每种都提供不同的安全级别。例如,产生错误的指纹(该指纹与某人匹配)比偶然听到某人的密码并重复它一般更难。每种类型的认证还要求不同类型的数据被证书机构知道,以便使用该形式的认证验证某人。正如本文使用的那样,“认证”将广泛地指为验证某人的身份就是他说的那个人的全过程。“认证技术”将指的是基于特殊的一块知识、物理标记物、或生物计量读数的特殊的认证类型。“认证数据”指的是被发送给或展示给证书机构以便建立身份的信息。“注册数据”将指的是最初被提交给证书机构以便建立用于与认证数据比较的基线的数据。“认证实例”将指的是与尝试通过认证技术进行认证有关的数据。上面参考图10描述了在认证用户的过程中涉及的内部协议和通信。该过程中背景敏感认证发生的那部分在如图10的步骤1045所示的比较步骤内发生。这个步骤发生在认证引擎215内并涉及组装从存储库210取回的注册数据410并对用户提供的认证数据与它进行比较。这个过程的一个特殊实施例在图16中被显示并且在下面被描述。在图16的步骤1600中通过认证引擎215接收用户提供的当前认证数据和从存储库210取回的注册数据。这两个数据集都可以含有与各自的认证技术有关的数据。认证引擎215在步骤1605中分离与每个个别的认证实例相关的认证数据。这是必要的,以使得认证数据与用于用户的注册数据的适当的子集(例如指纹认证数据应该与指纹注册数据、而非密码注册数据比较)比较。一般而言,依据哪个认证技术对用户可用,认证一个用户涉及一个或多个个别的认证实例。这些方法受限于用户在他的注册过程期间提供的注册数据(如果用户在注册时不提供视网膜扫描,他将不能使用视网膜扫描认证他自己),以及当前对用户可用的手段(例如,如果用户在他 的当前位置不具有指纹读出器,则将不能实践指纹认证)。在一些情况下,单个认证实例可能足以认证用户;然而,在某些情形下,可以使用多个认证实例的组合,以便为了特殊事务更肯定地认证用户。每个认证实例都由与特殊认证技术有关的数据(例如指纹、密码、智能卡等)和围绕用于该特殊技术的数据的捕获和交付的情形组成。例如,尝试经由密码进行认证的特殊实例将不仅产生与密码本身有关的数据,而且产生与密码尝试有关的、被称为“元数据”的旁证数据(circumstantial data)。这个旁证数据包括诸如下列信息:特殊认证实例发生的时间,认证信息从哪里被交付的网络地址,以及本领域技术人员知道的可以关于认证数据的来源进行确定的任何其它信息(连接类型,处理器序列号等)。在许多情况下,只有少量的旁证元数据将是可用的。例如,如果用户位于网络上,该网络使用代理或网络地址翻译或屏蔽原计算机的地址的其他技术,则只有代理或路由器的地址可以被确定。同样,在许多情况下,诸如处理器序列号的信息将不可用,因为要么是所使用的硬件或操作系统的限制、系统的操作者禁止这种特征,要么是用户的系统与信任引擎110之间连接的其他限制。如图16所示,一旦在步骤1605中在认证数据内提供的各个认证实例被提取和分离,认证引擎215就对每个实例的可靠性进行评估,指出该用户就是他所宣称的那个人。一般将基于几个因素确定用于单个认证实例的可靠性。这些因素可以被分组为:与认证技术相关的可靠性的各因素,这些因素在步骤1610中被评估,和与所提供的特殊认证数据的可靠性有关的各因素,这些因素在步骤1815中被评估。第一组包括、但不限于所使用的认证技术的固有可靠性,和该方法所使用的注册数据的可靠性。第二组包括、但不限于注册数据与认证实例提供的数据之间的匹配度,和与该认证实例相关的元数据。这些因素的每一个都可能独立于其他因素而变化。认证技术的固有可靠性是基于对于一个骗子而言提供其他人的正确数据有多困难,以及认证技术的总体误差率。对基于密码和知识的认证方法而言,这个可靠性经常相当低,因为不能避免有人将他们的密码暴露给另一个人以及这个第二人使用该密码。即使基于更复杂知识的系统也可能只有中等程度的可靠性,因为知识可以很容易从一个人传送给另一个人。诸如具有正确的智能 卡或使用特殊终端来执行认证的基于标记物的认证,在由它自己使用时同样为低可靠性,因为不能保证对的人占有对的标记物。然而,生物计量技术是更加固有可靠的,因为它一般难以给某人提供以便利方式、甚至是故意地使用你的指纹的能力。因为破坏生物计量认证技术更困难,所以生物计量方法的固有可靠性一般高于纯粹基于知识或标记物的认证技术。然而,即使生物计量技术也可能具有一些产生错误接受或错误拒绝的时候。这些事件可以通过用于同一种生物计量技术的不同实施方式的不同可靠性反映出来。例如,一个公司提供的指纹匹配系统可以比另一个公司提供的指纹匹配系统提供更高的可靠性,因为这个公司使用更高质量的光学设备或更好的扫描分辨率或减少错误接受或错误拒绝发生的一些其他改进。注意到这个可靠性可以用不同方式表达。期望将可靠性表达成某种量度,这种量度能够被启发法530和认证引擎215的算法用来计算每个认证的置信度。表达这些可靠性的一个优选模式是作为一个百分数或分数。例如,指纹可以被分配97%的固有可靠性,而密码可以只被分配为50%的固有可靠性。本领域技术人员将认识到这些特殊值只是示例性的并且可以在具体实施方式
之间发生变化。必须对其可靠性进行评估的第二因素是注册的可靠性。这是上面提到的“分级注册”的一部分。这个可靠性因素反映出在最初的注册过程期间提供的认证的可靠性。例如,如果个人最初以他们给公证员或其他公职人员物理产生他们的身份的证据的方式注册,并且注册数据当时被记录和公正,则该数据将比在注册期间通过网络提供的和仅由并非真正绑定个人的数字签名或其他信息担保的数据更加可靠。可靠性级别变化的其他注册技术包括但不限于:在信任引擎110操作者的实体办公室注册;在用户的就业场所注册;在邮局或护照办公室注册;通过信任引擎110操作者的附属方或信任方注册;所注册的身份尚未被识别为等同于特殊的真人的匿名或笔名注册,以及本领域已知的这种其他手段。这些因素反映出信任引擎110与注册过程期间提供的识别来源之间的信任。例如,如果在提供身份证据的最初过程期间与雇主相关地执行注册,则这个信息就可以被视为对于公司内部目的是极其可靠的,但是对于政府机构、或竞争对手而言可能是较低的信任度。因此,由这些其他组织的每个操作的信任引擎可以将不同的可靠性级别分配给这个注册。同样,通过网络提交、并且通过之前用同一个信任引擎110注册期间提供的其他被信任数据认证的附加数据可以被视为与原始注册数据一样可靠,即使后者的数据是通过开放式网络提交的。在这种情况下,随后的公正将有效增加与原始注册数据相关的可靠性的级别。这样,例如,通过给一些注册官方展示与注册数据匹配的个人的身份,匿名或笔名的注册随后可以被升至完全注册。上面讨论的可靠性因素一般是可以在任何特殊的认证实例之前被确定的值。这是因为它们是基于注册和技术,而非实际认证。在一个实施例中,在这些因素的基础上产生可靠性的步骤涉及为这个特殊的认证技术和用户的注册数据查找之前被确定的值。在本发明一个有利的实施例的其·他方面中,这种可靠性可以被注册数据本身包括。这样,这些因素连同由存储库210发送的注册数据一起被自动交付给认证引擎215。虽然这些因素一般可以在任何个人认证实例之前被确定,但是它们对使用用于该用户的认证的该特殊技术的每个认证实例都有影响。此外,虽然这些值可以随时间改变(例如,如果用户以更加可靠的方式重新注册),但是它们不依赖于认证数据本身。对照而言,与单个具体实例的数据相关的可靠性因素可以针对每个理由而变化。必须为每个新认证而对这些因素进行评估,以便在步骤1815中产生可靠性分数,如下所述。认证数据的可靠性反映出用户在特殊认证实例中提供的数据与在认证注册期间提供的数据之间的匹配。对于用户宣称他就是的那个个人而言,认证数据与注册数据是否匹配是最基本的问题。通常,当数据不匹配时,用户被视为未被成功认证,并且认证失败。对此进行评估的方式可以依据所使用的认证技术而改变。通过如图5所示的认证引擎215的比较器515的功能执行对这种数据的比较。例如,一般以二进制方式评估密码的匹配。换言之,密码要么完美匹配,要么不匹配。接受即使是部分匹配的密码通常也是不令人期待的,部分匹配的密码接近于正确的密码,如果它不是十分正确。因此,当对密码认证进行评估时,由比较器515返回的认证的可靠性通常要么是100%(正确)要么是0%(错误),没有中间值的可能性。对于密码的类似原则通常被应用于基于标记物的认证方法,诸如智能卡。这是因为有一张具有类似标识符或类似于正确智能卡的智能卡,只不过被作为具有任何其他错误标记物一样。因此,标记物也倾向于是二进制认证器:用户要么有正确的标记物,要么他没有。然而,诸如问卷和生物测定的某些类型的认证数据一般不是二进制认证器。例如,指纹可以与参考指纹匹配至变化的程度。在某种程度上,这可能是由于在最初注册期间或在后续认证中所捕捉的数据在质量方面的变化。(指纹可能被弄脏或人员可能具有仍在康复中的伤疤或特殊的手指上有烧伤)。在其他实例中,数据可能不太完美地匹配,因为信息本身也会有些可变并且基于模式匹配。(语音分析可以好似接近但是不完全正确,因为记录语音时的背景噪声、或环境声响,或因为人员感冒了)。最后,在大量数据被比较的情形下,可能只不过是这种情况:大部分数据匹配良好,但是一些数据匹配不良好。(十个问题的问卷可能导致对人员问题的八个正确回答,以及两个错误回答)。对于这些原因中的任何原因,注册数据与用于特殊认证实例的数据之间的匹配可能期望被比较器515分配一个部分匹配值。这样,例如,指纹可能被报为85%匹配,语音印记65%匹配,而问卷80%匹配。由比较器515产生的这个测量(匹配度)是代表认证是正确还是错误的基本问题的因素。然而,如上所述,这仅是可以在确定给定认证实例的可靠性中使用的因素之一。还注意到,即使最终匹配到某部分程度可以被确定,基于部分匹配而提供二进制结果可能还是令人期待的。在操作的可选模式中,基于匹配度是否过了特殊的匹配阀值水平,还可以将部分匹配看待为二进制的,即,要么完美匹配(100%),要么不匹配(0%)。这种过程可以被用于为否则会产生部分匹配的系统提供简单的匹配过关/失败级别。在评估中要考虑的另一个因素-给定认证实例的可靠性涉及提供用于这个特殊实例的认证数据所处的情形。如上所述,该情形指的是与特殊认证实例相关的元数据。这可以包括、但不限于这种信息:认证者的网络地址,能够被确定到的程度;认证的时间,认证数据传输的模式(电话线、蜂窝、网络等);和认证者的系统的序列号。这些因素可以用于产生通常 被用户请求的认证类型的剖面。于是,该信息能够被用于以至少两种方式访问可靠性。一种方式是考虑用户是否正在以一种方式请求认证,这种方式与通过该用户认证的标准剖面一致。如果用户通常在工作日期间(当她在工作)从一个网络地址和在晚上或周末期间(当她在家)从一个不同的网络地址做出认证请求,则在工作日期间从家庭地址发生的认证是不太可靠的,因为它是在正常的认证剖面之外。同样,如果用户通常使用指纹生物并且在晚上认证,则日间只使用密码发起的认证是不太可靠的。旁证元数据能够用于评估认证实例的可靠性的其他方式是确定环境提供了多少认证者就是他宣称的那个个人的进一步的证据。例如,如果认证来自具有已知与该用户相关的序列号的系统,则这是用户就是他宣称的那个人的良好的旁证指示器。反之,如果认证是来自已知是洛杉矶的网络地址而用户已知是住在伦敦的,则基于其环境,这是该认证不太可靠的的指示。当用户与卖方系统或与信任引擎110交互时,网络跟踪器(cookie)或其他电子数据可以被放在用户使用的系统上是可能的。这个数据被写至用户的系统的储存器并且可以含有可以被用户系统上的网络浏览器或其他软件读取的识别。如果该数据被允许驻留在会话之间的用户系统上(持久的网络跟踪器),则在特殊用户认证期间它可以与认证数据一起被发送,作为过去使用这个系统的进一步的证据。事实上,给定实例的元数据,尤其是持久的网络跟踪器,可以形成一种基于标记物的认证器本身。—旦如上所述分别在步骤1610和1615中基于认证实例的技术和数据产生了适当的可靠性因素,则它们被用于为在步骤1620中提供的认证实例产生总可靠性。做到此事的一种手段是将每个可靠性简单地表达为百分数然后使它们相加。例如,假设认证数据由完全依据用户过去的认证剖面(100%)已知是用户的家庭计算机的网络地址被发送来,并且所使用的技术是指纹识别(97%),并且最初的指纹数据是通过具有认证引擎110的用户的雇主摆出(IOistered)的(90%),而且认证数据与注册数据中最初的指纹模板之间的匹配非常好(99%)。该认证实例的总可靠性能够被计算为这些可靠性的乘积:100%*97%*90%*99%-86.4%可靠性。这个计算出的可靠性代表一个单认证实例的可靠性。还可以使用一些技术计算单个认证实例的总可靠性,这些技术例如通过使用一些公式对不同的可靠性因素进行不同处置,在这些公式中将不同的权重分配给每个可靠性因素。此外,本领域技术人员将认识到,所使用的实际值可以代表并非百分数的值并且可以使用非算术系统。一个实施例可以包括被认证请求者为每个因素设置权重所使用的模块和在建立认证实例的总可靠性中使用的算法。认证引擎215可以使用上述技术及其变体来确定单个认证实例的可靠性,如步骤1620所指出的那样。然而,在用于同时提供的多个认证实例的许多认证情形中它可能是有用的。例如,当尝试使用本发明的系统认证他自己时,用户可以提供用户识别、指纹认证数据、智能卡和密码。在这种情况下,三个独立的认证实例被提供给信任引擎110用于评估。进行到步骤1625,如果认证引擎215确定用户提供的数据包括多于一个认证实例,则每个实例如步骤1630所示按顺序被选择,并且在步骤1610、1615和1620中如上所述被评估。注意到所讨论的许多可靠性因素都可以从这些实例中的一个到另一个发生变化。例如,这些技术的固有可靠性,以及认证数据与注册数据之间提供的匹配度,都有可能不同。此外,用户可能在不同的时间和不同的情形下已经为这些技术的每个都提供了注册数据,还为这些实例的每个提供了不同的注册可靠性。最后,即使被提交的用于每个这些实例的数据所处的情形相同,这些技术的使 用也可以每个都不同地适合用户的剖面,因此可以被分配不同地旁证可靠性。(例如,用户通常可以使用他们的密码和指纹,而不是他们的智能卡。) 因此,用于这些认证实例的每个的最终可靠性可以各不相同。然而,通过一起使用多个实例,用于认证的总置信级别将趋向于增大。一旦认证引擎已经为认证数据中提供的所有认证实例执行了步骤1610至1620,就在步骤1635中使用每个实例的可靠性,以评估总认证置信级别。将各认证实例可靠性结合到认证置信级别中的这个过程可以通过与所产生的各可靠性有关的不同方法进行模拟,并且还可以解决这些认证技术的一些之间的特殊交互。(例如,多个基于知识(诸如多个密码)的系统可以产生比单个密码、甚至是诸如基本语音分析的相当弱的生物计量更少的信任。)其中认证引擎215可以结合多个并发认证实例的可靠性来产生最终置信级别的一种手段是使每个实例的不可靠性相乘以获得总不可靠性。不可靠性一般是可靠性的互补百分数。例如,84%可靠的技术就是16%不可靠的。产生的可靠性为86%、75%和72%的上述三个认证实例(指纹、智能卡、密码)具有的相应不可靠性分别为(100-86)%、(100-75)%和(100-72)%,或14%、25%和28%。通过使这些不可靠性相乘,我们得到14%*25%*28%_0.98%不可靠性的累计不可靠性,其相应于99.02%的可靠性。在其他操作模式中,可以在认证引擎215内应用其他因素和探试应用530,以负责不同认证技术的互相依赖性。例如,如果某人尚未被认证有权访问特殊的家庭计算机,则他们还可能有权访问该地址处的电话线。因此,基于源电话号码以及基于认证系统的序列号的认证不会在认证过程中给总信任增加更多。然而,基于知识的认证在很大程度上不依赖于基于标记物的认证(即,如果某人偷了你的蜂窝电话或密码,则他们不比没做此事更有可能知道你的PIN或密码)。此外,不同卖方或其他认证请求者可能希望给认证的不同方面施以不同的权重。这可以包括使用单独的权重因素或在计算各实例的可靠性过程中使用的算法,以及使用不同手段评估具有多个实例的认证事件。例如,对于某种类型事务的卖方,例如法人电子邮件系统,可能期望首先基于启发法和默认的其他旁证数据进行认证。因此,他们可以将高的权重施加给与元数据和其他剖面有关的因素,其他剖面涉及与围绕认证事件的情形相关的信息。这个安排能够通过不比用户在工作日期间登录到正确的机器上对用户要求更多,而用于在正常操作时间期间减轻用户的负担。然而,另一个卖方可能给来自特殊技术的认证施加更重的权重,例如指纹匹配,这是因为这种技术最适于用于特殊卖方的目的的认证的方针决策。这种变化的权重可以由认证请求者在产生认证请求的过程中进行定义并在一种操作模式中利用认证请求发送给信任引擎110。这种选项在用于认证请求者的最初注册过程期间被设置为偏好并在另一种操作模式中存储在认证引擎内。一旦认证引擎215为所提供的认证数据产生了认证置信级别,这个认证级别在步骤1640中就被用于完成认证请求,并且该信息从认证引擎215被转送给事务引擎205,以便包括在给认证请求者的消息中。上述过程只是示例性的,但是本领域技术人员将认识到这些步骤不需要按照所示的顺序执行或只期望某些步骤被执行,或者这些步骤的各种组合可能是令人期待的。此外,诸如对所提供的每个认证实例的可靠性的评估的某些步骤可以与另一个步骤并行执行,如果情形允许。在本发明的另一个方面中,提供一种适应这种条件的方法:当上述过程产生的认证置信级别不满足要求认证的卖方或其他方要求的信任级别时。在诸如所提供的置信级别与期望的信任级别之间存在差距(gap)的情形下,信任引擎110的操作者要给一方或两方提供机会来提供替代数据或要求,以便消除这个真实的差距。在本文中这个过程将被称为“fe任仲裁”。信任仲裁可以在如上述参考图10和11描述的密码认证框架内发生。如本文所示,卖方或其他方将请求与特殊事务相关的特殊用户的认证。在一种情形下,卖方简单地请求认证,要么肯定要么否定,并且在接收到来自用户的适当数据后,信任引擎110将提供这种二进制认证。在诸如这些的情形下,为了保护肯定认证所需的置信度基于信任引擎110内的偏好设置被确定。然而,卖方可能 请求特殊的信任级别、以便完成特殊事务也是可能的。这个所需级别可以被包括在认证请求内(例如认证该用户98%可信)或可以由信任引擎110基于与事务相关的其他因素确定(即将该用户认证为对于该事务是适当的)。一个这种因素可能是事务的经济价值。对于具有更大经济价值的事务,可能要求更高的信任度。同样,对于具有高度风险的事务可以要求高信任度。反之,对于低风险或低价值的事务,卖方或其他认证请求者可以要求较低的信任级别。信任仲裁过程发生在信任引擎110在图10的步骤1050中接收认证数据与在图10的步骤1055中将认证结果返回给卖方的步骤之间。在这些步骤之间,导致对信任级别和可能的信任仲裁的评估过程发生,如图17所示。在执行简单地二进制认证的情形下,图17所示的过程缩小到使事务引擎205将所提供的认证数据与用于被识别用户的注册数据直接比较,正如上面参考图10讨论的那样,将任何差别都标志为否定的认证。如图17所示,对于事务引擎205而言在步骤1050中接收到数据后的第一步是确定对用于步骤1710中的这个特殊事务的肯定认证要求的信任级别。这个步骤可以通过几种不同方法之一执行。在做出认证请求时可以由认证请求者给信任引擎110规定要求的信任级别。认证请求者还可以事先设置偏好,该偏好被存储在可通过事务引擎205访问的存储库210或其他储存器内。然后这个偏好被读取并在每次由这个认证请求者做出认证请求时使用。偏好还可以与特殊用户相关作为一种安全措施,使得特殊的信任级别总是被要求以便认证该用户,用户偏好被存储在可通过事务引擎205访问的存储库210或其他储存器中。还可以由事务引擎205或认证引擎215基于在认证请求中提供的信息,诸如待认证事务的价值和风险级别,获得要求的级别。在一种操作模式中,产生认证请求时使用的策略管理模块或其他软件用于规定事务认证要求的信任度。当基于策略管 理模块内规定的策略分配要求的信任度时,这可以用于提供一系列要遵守的规则。一种有利的操作模式是用于使这种模块与卖方的网络服务器合并,以便适当地确定用于以卖方的网络服务器启动的事务所要求的信任级别。这样,来自用户的事务请求可以依据卖方的策略被分配一个要求的信任级别,并且这种信息连同认证请求可以一起被转送给信任引擎110。这个被要求的信任级别与卖方想要使认证的个人事实上就是他将他自己识别成的那个人的确信度相关。例如,如果事务是卖方想要中等确信度、因为货物是转手的那种事务,则卖方可能需要85%的信任级别。对于卖方只是认证用户、以允许他只查看成员的内容或练习聊天室的权利的状况,负面风险可能小到足以使卖方只要求60%的信任级别。然而,为了进入价值为好几万美元的产品合同,卖方可能需要信任级别为99%或更高。这个被要求的信任级别代表用户必须认证他自己以便完成事务的量度。如果例如被要求的信任级别为85%,则用户必须给信任引擎110提供认证,该认证足以使信任引擎110说出该用户是他们说他们是的那个人具有85%的信心。在这个被要求的信任级别与产生肯定认证(为了卖方满意)或信任仲裁的可能性的认证置信级别之间存在一种平衡。如图17所示,事务引擎205接收到被要求的信任级别后,它在步骤1720中对被要求的信任级别与认证引擎215为当前认证计算的认证置信级别进行比较(如参考图16讨论的那样)。如果在步骤1730中认证置信级别高于对事务要求的信任级别,则过程移动到步骤1740,在步骤1740中由事务引擎205产生用于该事务的肯定认证。然后,带有这个意思的消息被插入到认证结果中并通过事务引擎205被返回给卖方,如步骤1055所示(参见图 10)。然而,在步骤1730中如果认证置信级别不满足所要求的信任级别,则当前的认证存在置信差距(confidence gap),并且在步骤1750中引导信任仲裁。下面参考图18更完整地描述信任仲裁。如下所述的这个过程发生在信任引擎110的事务引擎205内。因为不需要认证或其它密码操作来执行信任仲裁(不同于在事务引擎205与其他组件之间的SSL通信要求的那些),所以可以在认证引擎215外执行该过程。然而,正如将在下面讨论的那样,认证数据或其他密码或认证事件的任何重估都将要求事务引擎205将适当数据重新提交给认证引擎215。本领域技术人员将认识到,信任仲裁过程能够可选地被构建成在认证引擎215自身中部分或全部地发生。如上所述,信任仲裁是一种在适当之处尝试保护肯定认证中,信任引擎110在卖方和用户之间对协商进行调解的过程。如步骤1805所示,事务引擎205首先确定当前的状况是否适于信任仲裁。这可以基于认证的情形,例如该认证是否已经通过多轮仲裁,以及基于卖方或用户的偏好,进行确定,正如下面将进一步讨论的那样。在仲裁不可行这种情形下,过程前进到步骤1810,在步骤1810中事务引擎205产生否定认证然后将它插入到在步骤1055(参见图10)中被发送给卖方的认证结果中。可以被有利地用于防止认证无限期等待的一个限制是从最初的认证请求开始、设置中止(time-out)时间段。这样,在时间限制内未被肯定认证的任何事务都被拒绝进一步仲裁并被否定认证。本领域技术人员将认识到,这种时间限制可以依据事务的情形以及用户和卖方的期望而变化。还可以针对提供成功的认证时做出尝试的次数进行限制。这种限制可以由尝试限制器535操纵,如图5所示。如果在步骤1805中未禁止仲裁,则事务引擎205接着将参与到与事务方之一或二者的协商中。事务引擎 205可以给用户发送消息,该用户请求某些形式的附加认证,以便提高如步骤1820所示产生的认证置信级别。在最简单的形式中,这可以简单地指出认证是不充分的。还可以发送对产生一个或多个附加认证实例的请求,以提高认证的总置信级别。如果用户在步骤1825中提供一些附加的认证实例,则事务引擎205将这些认证实例添加到用于事务的认证数据中并将它转送给认证引擎215,如步骤1015所示(参见图10),并且认证基于为这个事务预存的认证实例和新提供的认证实例两者而被重新评估。附加类型的认证可以是从信任引擎110来的一个请求,用于例如通过电话呼叫在信任引擎110操作者(或被信任的伙伴)与用户之间进行某种形式的人与人的接触。这个电话呼叫或其他非计算机认证可以用于提供与个人的私人接触,并且还用于引导基于认证的某种形式的问卷。当用户呼入时,这还可以给出验证来源电话号码和对用户的可能的语音分析的机会。即使不能提供附加的认证数据,与用户的电话号码相关的附加背景也可以提高认证背景的可靠性。基于这个电话号码的任何已修改的数据或情形都被馈至信任引擎110中,以便在考虑认证请求时使用。此外,在步骤1820中,信任引擎110可以给用户提供购买保险(insurance)的机会,有效地购买更多的可信认证。信任引擎110的操作者可能有时只想要使这种选项可用,如果认证的置信级别高于起初的某个阀值。实际上,这个用户端的保险是一种在认证满足信任引擎110对认证的正常要求的信任级别、但不满足卖方对这个事务要求的信任级别时,信任引擎110担保用户的方式。这样,用户仍旧可以成功地认证到非常高的级别,正如卖方可能要求的那样,即使他只具有产生对信任引擎110而言足够的信心的认证实例。信任引擎110的这个功能使信任引擎110能够担保某人,这个人被认证为信任引擎110满意,但是卖方不满意。这类似于公证员在给文档添加他的签名、以便向以后阅读该文档的某人指出其签名出现在文档上的人员事实上就是签署文档的人员的过程中执行的功能。公证员的签名证明了被用户签署的行为。信任引擎按照同样的方式提供一个指示,即,正在进行事务的人员就是他们说他们就是的那个人。然而,因为信任引擎110人为地提高用户提供的置信级别,所以对于信任引擎110操作者而言存在较大的风险,因为用户事实上不满足卖方要求的信任级别。将保险的成本设计成对信任引擎110(其可以是对用户的认证进行有效公正的信任引擎110)错误的肯定认证的风险进行补偿。用户对信任引擎110操作者承担认证到比已经实际提供的置信级别更高的级别的风险进行支付。因为这种保险系统允许某人从信任引擎110有效地购买更高的置信率,所以卖方和用户都可能希望在某些事务中防止用户端保险的使用。卖方可能希望将肯定认证限制到这种情形,即,他们知道实际的认证数据支持他们要求的置信度,因此可以向信任引擎110指出用户端保险不被允许。同样,为了保护他的在线身份,用户可能希望避免在他的账户上使用用户端保险,或者可能希望将其使用限制到无保险的认证置信级别高于某个限制的情形。这可以被用作一种安全措施,以防止某人偶然听到密码或偷了智能卡并使用它们错误地认证到低置信级别,然后购买保险来产生非常高的(错误)置信级别。可以在确定用户端保险是否被允许的过程中评估这些因素。如果用户在步骤1840中购买了保险,则在步骤1845中基于购买的保险调整认证置信级别,并且在步骤1730 (参见图17)中对认证置信级别与要求的信任级别再次比较。过程从这里继续,并且可以在步骤1740(参见图17)中导致肯定认证,或者回到步骤1750中的信任仲裁过程中以便进一步仲裁(如果允许),或者步骤1810中的否定认证,如果进一步的仲裁被禁止。除了在步骤1820中将消息发送给用户之外,事务引擎205还可以在步骤1830中将消息发送给卖方,所述消息指出未决的认证当前正处于要求的信任级别之下。该消息还可以提供关于怎样去往(proceed to)卖方的不同选项。这些选项之一是简单地告知卖方当前的认证置信级别是什么并且询问卖方是否希望维持他们当前尚不满足要求的信任级另O。这可能是有利的,因为在某些情况下,卖方可能具有对于认证事务而言独立的手段或者可能曾经使用了默认设置的要求,默认设置的要求一般会导致最初规定比对手头的特殊事务实际上需要的级别更高要求的级别。例如,期望所有进入的与卖方的订购单事务都满足98%信任级别可以是标准惯例。然而,如果一个订购最近通过电话在卖方与长期消费者之间被讨论过,并且事务在其后被立即认证,但是只有93%置信级别,则卖方可能希望简单地降低用于该事务的认可阀值,因为电话呼叫给卖方有效地提供了附加认证。在某些情况下,卖方可能愿意降低他们要求的信任级别,并非总是当前的认证置信级别。例如,上述示例中的卖方可以认为订购之前的电话呼叫可以获得在所需信任度方面4%的较少;然而,这仍旧比用户产生的93%的信心更大。在步骤1 835中如果卖方不调整他们要求的信任级别,则在步骤1730 (参见图17)中对认证产生的认证置信级别与要求的信任级别进行比较。如果现在置信级别超过了要求的信任级别,则在步骤1740(参见图17)中可以在事务引擎205中产生肯定认证。如果否,则可以如上所述尝试进一步的仲裁,如果它被允许。除了请求调整要求的信任级别之外,事务引擎205还可以给请求认证的卖方提供卖方端保险。这个保险服务于与上述用于用户端的保险类似的目的。不过,在本文中,保险的成本相应于卖方在认证中接受较低信任级别的过程中承担的风险,而非相应于信任引擎110在高于所产生的实际认证置信级别的认证中所承担风险的成本。卖方具有购买保险的选项以保护它自己避免与用户认证过程中的较低信任级别相关的附加风险,而非只是降低他们实际要求的信任级别。如上所述,对于只考虑购买这种保险以克服在现有认证已经超过某阀值的条件下的信任差距的卖方而言,它可能是有利的。这种卖方端保险的可用性允许卖方有下列选项:在对他自己无附加成本时将他的信任要求直接降低,担负错误认证他自己的风险(基于要求的较低信任级别);或,购买用于认证置信级别与他的要求之间的信任差距的保险,由信任引擎110操作者担负已经提供的较低置信级别的风险。通过购买保险,卖方可有效保持他的高信任级别要求;因为错误认证的风险被转移给信任引擎110操作者。
如果卖方在步骤1840中购买了保险,则在步骤1730(参见图17)中对认证置信级别与要求的信任级别进行比较,并且过程如上所述继续。注意到还有可能用户和卖方双方都响应于来自信任引擎110的消息。本领域技术人员将认识到存在能够操纵这种状况的多种方式。操纵可能的多个响应的一种有利的模式是简单地按照先进、先服务的方式处置响应。例如,如果卖方以降低要求的信任级别响应,并且用户还可以紧随其后购买保险来升高他的认证级别,则基于来自卖方的被降低的信任要求首先重新评估认证。如果现在认证是肯定的,则用户的保险购买被忽略。在另一种有利的操作模式中,用户可以只对满足卖方新的、被降低的信任要求所要求的保险级别进行充值(如果即使有被降低的卖方信任要求,信任差距依旧)。如果在为认证设置的时间限制内在步骤1850的信任仲裁过程期间,没接收到来自任一方的响应,则在步骤1805中对仲裁进行重新评估。这会有效地再次开始仲裁过程。如果在步骤1805中时间限制是决定性的或者其他情形防止进一步仲裁,则在步骤1810中否定认证被事务引擎205产生并且在步骤1055(参见图10)中被返回给卖方。如果否,则新消息可以被发送给用户和卖方,并且过程可以按需重复。注意到对于某些类型的事务,例如,并非事务的一部分的数字签署文档,可能不必有一个卖方或其他第三方;因此事务首先是在用户与信任引擎110之间。在诸如这些的情形下,信任引擎110将具有它自己要求的信任级别,该信任级别必须被满足以便产生肯定认证。然而,在这种情形下,将经常不期望信任引擎110给用户提供保险以便于他升高对他自己拥有的签名的信任。可以使用参考信任引擎110如上所述的不同通信模式执行上面图16-18描述和显示的过程。例如,消息可以是基于网络的并使用信任引擎Iio与支程序之间的SSL连接发送,其中支程序被实时下载到运行在用户或卖方系统上的浏览器中。在一种可选的操作模式中,某些专用程序可以被促进这种仲裁和保险事务的用户和卖方使用。在另一种可选的操作模式中,安全电子邮件操作可以用于居间促成上述仲裁,由此允许认证的延期评估和成批处理。本领域技术人员将认识到,可以使用适于卖方的情形和认证要求的不同通信模式。参考图19的下列描写描述了如上所述融入了本发明的不同方面的样本事务。该示例示出由信任引擎110居间促成的用户与卖方之间的整个过程。虽然如上详述的不同步骤和组件可以用于执行下面的事务,但是所示过程关注信任引擎110、用户与卖方之间的交互。在步骤1900中当用户正在在线查看网页、在卖方的网站上填写订货单时,事务开始。用户希望将用他的数字签名签署的这个订货单提交给买方。为了做到此事,用户利用他在步骤1905中为了签名向信任引擎110的请求来提交订货单。用户还将提供将被如上所述用于认证他的身份的认证数据。在步骤1910中,如上所述由信任引擎110对认证数据与注册数据进行比较,并且如果肯定认证被产生,则用用户的私人密钥签署的订货单的哈希连同订货单自身被转送给卖方。卖方在步骤1915中接收到被签署的订货单,然后卖方将在步骤1920中产生与待做出的购买有关的发票或其他合同。在步骤1925中,这个带有对签名的请求的合同被发送回到用户。在步骤1930中,卖方还将对这个合同事务的认证请求发送给信任引擎110,包括将由双方签署的合同的哈希。为了允许双方数字签署合同,卖方还包括用于自身的认证数据,使得卖方对合同的签名以后能够在需要时被验证。如上所述,信任引擎110接着验证卖方提供的认证数据以确认卖方的身份,并且如果在步骤1935中数据 产生了肯定认证,则在接收到来自用户的数据时以步骤1955继续。如果卖方的认证数据不能与卖方的注册数据匹配到期望的程度,则消息被返回到卖方,请求进一步认证。如果需要,可以在这里执行信任仲裁,如上所述,为了卖方向信任引擎110成功地认证它自己。在步骤1940中,当用户接收合同时,他重新查看它,如果它在步骤1945中是可接受的,则产生认证数据来签署它,然后在步骤1950中将合同的哈希及他的认证数据发送给信任引擎110。在步骤1955中,信任引擎110验证认证数据,并且如果认证良好,则前进到处理合同,如下所述。如上所述参考图17和18,适当时可以执行信任仲裁,以消除存在认证置信级别与事务要求的认证级别之间的任何信任差距。信任引擎110用用户的私人密钥签署合同的哈希,并且在步骤1960中将这个签署的哈希发送给卖方,为了它自己的利益签署完整的消息,即,包括用信任引擎110的私人密钥510加密的完整消息的哈希(包括用户的签名)。在步骤1965中,这个消息被卖方接收至IJ。该消息代表被签署的合同(使用用户的私人密钥加密的合同的哈希)和来自信任引擎110的发票(消息的哈希包括使用信任引擎110的私人密钥加密的被签署的合同)。在步骤1970中,信任引擎110同样用卖方的私人密钥准备合同的哈希,并将这个转送给用户,合同由信任引擎110签署。这样,用户也接收由卖方签署的合同的副本、以及由信任引擎110签署的发票,以便在步骤1975中交付签署的合同。除了上述之外,本发明的另一方面提供一种加密服务提供程序模块(SPM),该模块可提供给客户端应用程序,作为一种访问由上述信任引擎110提供的功能的手段。对于密码SPM而言,提供这种服务的一种有利的方式是居间促成第三方应用编程接口(API)与信任引擎110之间的通信,其中经由网络或其他远程连接可访问信任引擎110。下面参考图20描述样本密码SPM。例如,在一个典型的系统上,许多API被提供给编程者。每个API都提供一组函数调用,函数调用可以由运行在系统上的应用程序2000做出。提供适于密码功能、认证功能和其他安全功能的编程接口的API的示例包括Microsoft用它的Windows操作系统提供的密码API (CAPI) 2010,和由IBM、Intel和Open Group的其他成员发起的通用数据安全架构(CDSA)。下面的讨论中CAPI将被用作示例性安全API。然而,所描述的密码SPM能够用于⑶SA或现有技术中已知的其他安全性API。当为了密码功能做出呼叫时,这个API被用户系统105和卖方系统120使用。被包括在这些功能当中,可以与执行不同的密码操作相关地被请求,这些密码操作诸如:用特殊的密钥加密文档、签署文档、请求数字证书、对被签署文件上的签名进行验证,并且这种其他密码功能如本文所描述或被本领域技术人员所知。这种密码功能通常在CAPI2010所位于的系统上被本地执行。这是因为一般被调用的函数要求使用诸如指纹读出器的本地用户系统105的资源、或使用在本地机器上执行的数据库编程的软件函数。通常通过之前被称为一个或多个服务提供商模块(SPM) 2015、2020提供对这些本地资源的访问,SPM2015、2020提供执行密码函数所用的资源。这种SPM可以包括用于执行加密或解密操作的软件数据库2015,或者能够访问诸如生物计量扫描设备的专用硬件2025的驱动器和应用程序2020。在CAPI2010提供可被系统105的应用程序2000使用的函数的许多方式中,SPM2015、2020给CAPI提供对较低级别函数和与系统上可用的服务相关的资源的访问。依据本发明,提供一种能够访问由信任引擎110提供的密码功能并且使这些功能通过CAPI2010提供给应用程序2000的密码SPM2030是可行的。与CAPI2010仅能访问通过SPM2015、2020本地提供的资源的实施例不同,如本文所描述的密码SPM2030将能够将对密码操作的请求提交给远·程定位的、网络可访问的信任引擎110,以便执行期望的操作。例如,如果应用程序2000具有对诸如签署文档的密码操作的需要,则应用程序2000对适当的CAPI2010函数做出函数调用。CAPI2010随后将执行这个函数,使用通过SPM2015.2020和密码SPM2030提供给它的资源。在数字签名功能的情况下,密码SPM2030将产生适当的请求,该请求将通过通信链路125被发送给信任引擎110。在密码SPM2030和信任引擎110之间发生的操作是相同的操作,该操作在任何其他系统与信任引擎110之间都是可行的。然而,这些功能通过CAPI2010有效地提供给用户系统105,使得它们显得象是在用户系统105上自身是本地可用的。然而,与普通的SPM2015、2020不同,该功能响应于通过通信链路125的适当的请求,在远程信任弓丨擎110上执行并且结果被中继到密码SPM2030。这个密码SPM2030进行用户系统105和卖方系统120可用的许多操作,在其他情形下这些操作可能不可用。这些功能包括、但不限于:文档的加密和解密;发出数字证书;数字签署文档;验证数字签名;和这种对本领域技术人员而言将是清楚的其他操作。在个别的实施例中,本发明包含用于对任何数据集执行本发明的数据保护方法的一个完整系统。该实施例的计算机系统包含数据分割模块,其包含图8所示且在本文中描述的功能。在本发明的一个实施例中,在本文中有时被称为安全数据剖析器的数据分割模块包含剖析器程序或软件套件,其包含数据分割、加密和解密、重构或重组功能。这个实施例还可以进一步包含数据储存设施或多个数据储存设施。数据分割模块、或安全数据剖析器,包含跨平台软件模块套件,其集成在电子基础设施内,或作为添加物集成到要求其数据元素最终安全的任何应用程序中。这个剖析过程对任何类型的数据集和对任何和所有的文件类型、或在数据库中(对该数据库中的任何行、列或单元数据)进行操作。在一个实施例中,本发明的剖析过程可以被设计成模块式层叠方式(modulartiered fashion),并且任何加密过程都适于在本发明的过程中使用。本发明的剖析和分割过程的模块式层叠可以包括、但不限于,I)密码分割、分散和安全存储在多个位置中;2)加密、密码分割、分散和安全存储在多个位置中;3)加密、密码分割、对每份加密、然后分散和安全存储在多个位置中;和4)加密、密码分割、用不同于在第一步中使用的加密类型对每份加密,然后分散和安全存储在多个位置中。在一个实施例中,该过程包含根据所产生随机数、或密钥的内容分割数据,并对在分割数据的加密过程中使用的密钥执行相同的密码分割,所述数据是要被保护成两个或更多个部分、或份的被剖析和被分割的数据,并且在一个实施例中,优选被保护成四部分或更多部分的被剖析和被分割的数据;对所有部分进行加密;然后将这些部分散开并存回数据库中,或依据请求者对隐私和安全的需要将它们迁移到任何固定或移动的指定设备中。可选地,在另一个实施例中,加密可以在通过分割模块或安全数据剖析器分割数据集之前发生。如在这个实施例中描述的那样,被处理的原始数据被加密和(obfuscate)混乱并得到保护。如果需要,被加密元素的分散在任何地方都能够是真实的,包括、但不限于单个服务器或数据储存设备,或在单独的 数据储存设施或设备中。加密密钥管理在一个实施例中可以被包括在软件套件内,或者在另一个实施例中可以被集成在现有基础设施或任何其他期望的位置中。密码分割(密码分割)将数据分开成N份。分开能够针对任何大小的数据单元,包括各个位、多位、多字节、千字节、兆字节、或更大的单元,以及不管是预定还是随机产生的数据单元大小的任何模式或组合。单元还能够基于随机或预订的值集的具有不同大小。这意味着数据可以被视为一系列这些单元。以这种方式,数据单元自身的大小可以例如通过使用一个或多个预订或随机产生的模式、序列或数据单元大小的组合,使数据更安全。然后这些单元被分配成N份(随机地或通过预订的值集)。本领域普通技术人员清楚的是,可以根据多种可行的选择,包括、但不限于固定大小、预定大小、或一个或多个组合、预订或随机产生的数据单元大小的模式或序列,执行将数据单元分配成多份。在这个密码分割过程的一些实施例中,数据可以是任何适当数量的字节,大小为诸如一个、两个、三个、五个、二十个、五十个、一百个、多于一百个,或N个字节大小。这个密码分割过程、或密码分割过程的一个特殊示例将被考虑为数据是23个字节大小,数据单元大小被选择为一个字节,并且份数(number of shares)被选择为4份。每个字节都将被分配到4份之一中。假设一种随机分配,密钥将被获得以产生一系列23个随机数(rl,r2,r3至r23),每个都具有相应于四份的I和4之间的值。每个数据单元(在这个示例中是数据的各字节)都与相应于四份之一的23个随机数之一相关。通过将数据的第一字节放入份数rl中,字节2放入份r2中,字节三放入份r3中,直至数据的第23字节放入份r23中,将数据的字节分配到四份中将发生。对本领域普通技术人员而言清楚的是,多种其他可行的步骤或一系列步骤的组合,包括数据单元的大小,都可以在本发明的密码分割过程中被使用,并且上述示例是对密码分割数据的一个过程的非限制性描述。在本发明的密码分割过程的另一个实施例中,对密码分割过程的一个选项是在多份中提供足够的冗余,以使得只需要多份的一个子集将数据重组或恢复成其原始或可用的形式。作为一个非限制性示例,密码分割可以被做成“4中之3”密码分割,使得只有4份中的三份必须用来将数据重组或恢复到其原始或可用的形式。这也被称为“N个密码分割中之M个”,其中N是总份数,而M至少比N小一。对本领域普通技术人员而言清楚的是,在本发明的密码分割过程中存在用于产生这个冗余的许多可能性。在本发明的密码分割过程的一个实施例中,每个数据单元被存储在两份,主要份和备份份中。使用上述的“4中之3”密码分割过程,任何一份都能够丢失,而这足以在利用未丢失数据单元的的情况下重组或恢复原始数据,因为只要求总的四份中的三份。如本文所描述的那样,相应于多份之一的随机数被产生。随机数与数据单元相关,并基于密钥被存储在相应的份中。在这个实施例中使用一个密钥,来产生主要和备份份随机数。如本文中对本发明的密码分割 过程所描述的那样,等于数据单元数量的从O到3的一个随机数集(也被称为主要份数(primary share numbers))被产生。然后等于数据单元数量的从I到3的另一个随机数集被产生(也被称为备份份数(backup sharenumbers))。接着使每个数据单元都与主要份数和备份份数相关。可选地,少于数据单元数量的一个随机数集可以被产生,并且可以重复随机数集,但是这可能降低敏感数据的安全性。主要份数用于确定数据单元被存储到哪份中。备份份数与主要份数结合以产生O和3之间的第三份数(third sharenumber),并且这个数量用于确定数据单元被存储到哪份中。在这个示例中,用于确定第三份数的方程为:(主要份数+备份份数)模4=第三份数在主要份数是在O和3之间、并且备份份数是在I和3之间的上述实施例中,要确保第三份数不同于主要份数。这导致数据单元被存储在两个不同的份中。对本领域普通技术人员而言清楚的是,除了本文公开的实施例之外,还存在执行冗余密码分割和非冗余密码分割的许多方式。例如,每份中的数据单元都能够利用不同的算法弄混。随着原始数据被分割成多个数据单元,或在数据单元被放入多份中之后,或在份满了之后,可以执行这个数据单元弄混。可以对任何大小的数据单元,包括但不限于:小到各位、多位、多字节、兆字节或更大,执行本文描述的不同的密码分割过程和数据弄混过程,以及本发明的密码分割和数据弄混方法的所有其他实施例。将执行本文描述的密码分割过程的源代码的一个实施例的示例为:DATA [1:24]-待分割数据的字节数组SHARES
_2_维数组,每行代表多份之一RAND0M[1:24]_范围为0..3的数组随机数Sl=I;S2=l;S3=l;
S4=l;For J=lto24doBeginIF RANDOM [J [==0thenBeginSHARES [I, SI] =DATA [J];S1=S1+1;EndELSE IF RANDOM[J[==1thenBeginSHARES [2, S2] =DATA [J];S2=S2+1;ENDELSE IF RANDOM[J[==2thenBeginShares [3, S3]=data[J];S3=S3+1;EndElse beginShares [4, S4]=data[J];S4=S4+1;End;END;将执行本文中描述的密码分割RAID过程的源代码的一个实施例的示例为:产生两个数集:主要份为O至3,备份份为I至3。然后利用与上述密码分割相同的过程,将每个数据单元放入份[主要份[I]]和份[(主要份[I] +备份份[I])模4中。这个方法将可被升级到任何大小的N,但只需要N-1份来恢复数据。`被加密数据元素的取回、重组、重组或重构可以利用任何数量的认证技术,包括、但不限于生物计量,诸如指纹识别、面部扫描`、手扫描、虹膜扫描、视网膜扫描、耳朵扫描、血管模式识别或DNA分析。本发明的数据分割和/或剖析器模块可以按需被集成到众多基础设施产品或应用程序中。本领域中已知的传统加密技术依赖用于加密数据并使它没有密钥就无用的一个或多个密钥。然而,数据仍旧是整体和完整无缺的并易于遭受攻击。在一个实施例中,本发明的安全数据剖析器通过执行下列步骤解决这个问题:对被加密文档执行密码剖析、并将被加密文档分割成两个或更多个部分或份,并且在另一个实施例中,优选为四份或更多份,给每份数据添加另一层加密,然后将这些份存储在不同的物理和/或逻辑位置中。当通过使用诸如数据储存设备的可拆卸设备、或通过将份置于另一方的控制之下而从系统物理移走一份或多份数据时,损害被保护数据的任何可能性都被有效排除。本发明的安全数据剖析器的一个实施例的示例和可以怎样利用它的一个示例在图21中示出并在下面描述。然而,对本领域技术人员而言清楚的是,除了下面的非限制性示例之外,本发明的安全数据剖析可以用多种方式加以利用。在一个实施例中,作为一个部署选项,可以用外部会话密钥管理或会话密钥的安全的内部储存器实施安全数据剖析器。实施之后,将用于保护应用程序和用于加密目的的剖析器主人密钥(Parser Master Key)将被产生。应该注意到,将剖析器主人密钥结合到所得的被保护数据中允许在工作组、企业或扩充的听众内由个人共享被保护数据的灵活性。如图21所示,本发明的这个实施例显示由安全数据剖析器对数据执行的过程的步骤,以将会话主人密钥与被剖析数据存储在一起:1.产生会话主人密钥并使用RSl流密码加密数据。2.根据会话主人密钥的模式将所得的被加密数据分离成四份或四部分的被剖析数据。3.在该方法的这个实施例中,会话主人密钥将与被保护数据份一起被存储在数据存储库中。根据剖析器主人密钥的模式分离会话主人密钥,并将密钥数据附于被加密的被剖析数据。4.所得的四份数据将含有原始数据被加密的部分和部分会话主人密钥。为四份数据的每份产生流密码密钥。5.加密每份,然后将加密密钥存储在与被加密的数据部分或份不同的位置中:份I得到密钥4,份2得到密钥1,份3得到密钥2,份4得到密钥3。为了恢复原始数据格式,步骤被反向。对本领域技术人员而言清楚的是,可以按需按照不同的顺序、或重复多次而执行本文描述的方法的某些步骤。对本领域技术人员而言还清楚的是,可以相互不同地处理数据的各部分。例如,可以只对被剖析数据的一部分执行多个剖析步骤。被剖析数据的每个部分都可以用任何期望的方式唯一地加以保护,只要该数据可以被重组、重构、重新形成、解密或恢复成其原始形式或其他可用的形式。如图22所示和本文所描述的那样,本发明的另一个实施例包含由安全数据剖析器对数据执行的过程的多个步骤,以将会话主人密钥数据存储在一个或多个单独的密钥管
理表中。1.产生会话主人密钥并使用RSl流密码加密数据。2.根据会话主人密钥的模式将所得的被加密数据分离成四份或四部分的被剖析数据。3.在本发明的方法的这个实施例中,会话主人密钥将被存储在数据存储库中单独的密钥管理表中。产生用于这个事务的唯一的事务ID。将事务ID和会话主人密钥存储在单独的密钥管理表中。根据剖析器主人密钥的模式分离事务ID,并将数据附于被加密的被剖析或被分离的数据。4.所得的四份数据将含有原始数据被加密的部分和部分事务ID。5.产生用于四份数据的每份的流密码密钥。6.加密每份,然后将加密密钥存储在与被加密的数据部分或份不同的位置中:份I得到密钥4,份2得到密钥1,份3得到密钥2,份4得到密钥3。
为了恢复原始数据格式,步骤被反向。
对本领域技术人员而言清楚的是,可以按需按照不同的顺序、或重复多次而执行本文描述的方法的某些步骤。对本领域技术人员而言还清楚的是,可以相互不同地处理数据的各部分。例如,可以只对被剖析数据的一部分执行多个分离或剖析步骤。被剖析数据的每个部分都可以用任何期望的方式唯一地加以保护,只要该数据可以被重组、重构、重新形成、解密或恢复成其原始形式或其他可用的形式。如图23所示,本发明的这个实施例显示由安全数据剖析器对数据执行的过程的步骤,以将会话主人密钥与被剖析数据存储在一起:1.访问与被认证用户相关的剖析器主人密钥。2.产生唯一的会话主人密钥。3.由剖析器主人密钥与会话主人密钥的异或函数获得中间密钥。4.使用用中间密钥作为密钥(key)的现有的或新的加密算法可选地加密数据。5.根据中间密钥的模式将所得的被可选加密的数据分离成四份或四部分的被剖析数据。6.在该方法的这个实施例中,会话主人密钥将与被保护数据份一起被存储在数据存储库中。根 据剖析器主人密钥的模式分离会话主人密钥,并将密钥数据附于被可选加密的被剖析数据份。7.所得的多份数据将含有原始数据被可选加密的部分和部分会话主人密钥。8.可选地产生用于四份数据的每份的加密密钥。9.用现有或新的加密算法可选地加密每份,然后将加密密钥存储在与被加密的数据部分或份不同的位置中:份I得到密钥4,份2得到密钥1,份3得到密钥2,份4得到密钥3。为了恢复原始数据格式,步骤被反向。对本领域普通技术人员而言清楚的是,可以按需按照不同的顺序、或重复多次而执行本文描述的方法的某些步骤。对本领域技术人员而言还清楚的是,可以相互不同地处理数据的各部分。例如,可以只对被剖析数据的一部分执行多个剖析步骤。被剖析数据的每个部分都可以用任何期望的方式唯一地加以保护,只要该数据可以被重组、重构、重新形成、解密或恢复成其原始形式或其他可用的形式。如图24所示和本文描述的那样,本发明的另一个实施例包含由安全数据剖析器对数据执行的过程的步骤,以将会话主人密钥数据存储在一个或多个单独的密钥管理表中:1.访问与被认证用户相关的剖析器主人密钥。2.产生唯一的会话主人密钥。3.由剖析器主人密钥与会话主人密钥的异或函数获得中间密钥。4.使用以中间密钥作为密钥的现有的或新的加密算法可选地加密数据。5.根据中间密钥的模式将所得的被可选加密的数据分离成四份或四部分的被剖析数据。6.在本发明的方法的这个实施例中,会话主人密钥将被存储在数据存储库中单独的密钥管理表中。产生用于这个事务的唯一的事务ID。将事务ID和会话主人密钥存储在单独的密钥管理表中,或将会话主人密钥和事务ID传递回到用于外部管理的调用程序。根据剖析器主人密钥的模式分离事务ID,并将数据附于被可选加密的被剖析或被分离的数据。7.所得的四份数据将含有原始数据被可选加密的部分和部分事务ID。8.可选地产生用于四份数据的每份的加密密钥。9.可选地加密每份,然后将加密密钥存储在与被加密的数据部分或份不同的位置中。例如:份I得到密钥4,份2得到密钥1,份3得到密钥2,份4得到密钥3。为了恢复原始数据格式,步骤被反向。对本领域普通技术人员而言清楚的是,可以按需按照不同的顺序、或重复多次而执行本文描述的方法的某些步骤。对本领域技术人员而言还清楚的是,可以相互不同地处理数据的各部分。例如,可以只对被剖析数据的一部分执行多个分离或剖析步骤。被剖析数据的每个部分都可以用任何期望的方式唯一地加以保护,只要该数据可以被重组、重构、重新形成、解密或恢复成其原始形式或其他可用的形式。众多加密方法 都适于在本发明的方法中使用,正如对本领域技术人员清楚的那样。一次填充算法经常被视为大多数安全加密方法之一,并适用于本发明的方法。使用一次填充算法要求将密钥产生为象待保护的数据一样长。在某些情形下可能不太期望使用这个方法,诸如由于待保护数据集的大小而导致非常长的密钥的产生和管理的情形。在一次填充(OTP)算法中,使用简单的异或函数,XOR0对于相同长度的两个二进制流X与y,X XORI意味着X与y的位异或。在位级产生:O XOR 0=0O XOR 1=1I XOR 0=1I XOR 1=0本文中描述的这个过程的一个示例是用于待分割的η字节秘密,s (或数据集)。该过程将产生η字节随机值,a,然后设置:b=a XOR s.
注意到能够经由该方程获得〃s〃:s=a XOR b.
值a和b被称为份或部分并被放在单独的存储库中。一旦秘密s被分割成两份或更多份,它就会以安全的方式被放到一边(discarded)。本发明的安全数据剖析器可以利用这个函数,结合多个不同的秘密密钥值K1、K2、Κ3、Κη、Κ5而执行多个异或函数。在操作开始时,使待保护的数据通过第一加密操作,安全数据=数据XOR秘密密钥5:S=D XOR Κ5为了将所得的被加密数据安全存储在例如四份S1、S2、S3、Sn中,根据Κ5的值将数据剖析和分割成“η”段、或份。这个操作导致原始的被加密数据的“η”个伪随机份。随后利用其余的安全密钥值,可以对每份接着执行XOR函数,例如:安全数据段1=被加密数据份IXOR密码密钥1:SDl=Sl XOR KlSD2=S2 XOR K2
SD3=S3 XOR K3SDn=Sn XOR Κη.
在一个实施例中,可能期望使任何一个存储库都含有足够对其中保存的信息进行解密的信息,从而对份进行解密所需的密钥就被存储在不同的数据存储库中。存储库1:SDl, Kn存储库2:SD2,K1存储库3:SD3,K2存储库n: SDn, Κ3.
此外,被附于每份的可以是取回原始会话加密密钥Κ5所需的信息。因此,在本文描述的密钥管理示例中,原始会话主人密钥被事务ID引用,根据从属的剖析器主人密钥(TIDl、TID2、TID3、TIDn)的安 装内容(contents of the installation)将事务 ID 分割成“n,,份:存储库l:SDl,Kn,TIDl存储库2:SD2,K1,TID2存储库3:SD3,K2,TID3存储库n: SDn, Κ3, TIDn.
在本文描述的所结合的会话密钥示例中,根据从属的剖析器主人密钥(SK1、SK2、SK3、SKn)的安装内容将会话主人密钥分割成“η”份。存储库1: SDl, Kn, SKl存储库2: SD2, Kl, SK2存储库3: SD3, Κ2, SK3存储库n: SDn, Κ3, SKn.
除非全部四份都被取回,否则不能根据这个示例重组数据。即使全部四份都被捕获,也不存在不访问会话主人密钥和剖析器主人密钥而重组或恢复原始信息的可能性。这个示例已经描述了本发明的方法的一个实施例,并且还在另一个实施例中描述了用于将多份放入存储库、从而使来自所有存储库的多份能够被组合以形成秘密认证材料的算法。所需的计算是非常简单而快速的。然而,利用一次填充(OTP)算法,可能存在使它不太令人期待的情形,诸如待保护的是大数据集,因为密码大小与待存储的数据大小相同。因此,将存在对存储和传输大约两倍的原始数据量的需要,在某些情形下这可能是不令人期待的。流密码RSl流密码RSl分割技术非常类似于本文描述的OTP分割技术。n’ =min (η, 16)-字节随机值,而非η-字节随机值被产生和用于作为RSl流密码算法的密钥。RSl流密码算法的优点在于伪随机密钥是由更小的种子数产生的。在不损害安全性RSl的前提下,流密码加密的执行速度被估计是现有技术中已知的Triple DES加密的速度的10倍。RSl流密码算法在本领域中是众所周知的,并且可以用于产生在XOR函数中的密钥。RSl流密码算法与诸如RSA安全公司的RC4 流密码算法的其他可以买到的流密码算法是可互操作的,并适于在本发明的方法中使用。使用上面的密码记号,现在Kl至K5是η字节随机值并且我们设置:
SDl=Sl XOR E(Kl)SD2=S2 XOR E(K2)SD3=S3 XOR E(K3)SDn=Sn XOR E(Kn)这里E (Kl)至E (Kn)是从用Kl至Kn作为密钥的RSl流密码算法输出的前n字节。现在各份被放在各数据存储库中,如本文所描述。在这个流密码RSl算法中,所要求的计算差不多象OTP算法一样简单和快速。在这个示例中使用RSl流密码的益处在于系统对每份需要存储和传输比待保护的原始数据的大小平均只大大约16字节。当原始数据的大小大于16字节时,这个RSl算法比OTP算法更有效,因为简单地说它更短。对本领域普通技术人员而言清楚的是,多种加密方法或算法都适于在本发明中使用,包括、但不限于RS1、OTP、RC4 、Triple DES和AES。本发明的数据安全方法和计算机系统比传统加密方法提供重要的优点。一个优点是由于将多份数据移动到一个或多个数据存储库或储存设备上的不同位置,因此它们可以在不同的逻辑、物理或地理位置中,有此获得的安全性。当多份数据被物理分割并在不同人员的控制下时,例如,损害数据的可能性被大大降低。本发明的方法·和系统提供的另一个优点是用于保护数据的本发明的方法的步骤的组合,用于提供维持敏感数据安全性的综合过程。数据用安全密钥加密并被分割成一份或多份,并且在一个实施例中,根据安全密钥,是四份。安全密钥与参考指针一起被安全地存储,参考指针根据安全密钥被保护成四份。多份数据接着被各自加密并且密钥用不同的被加密的份被安全地存储。当被组合时,用于根据本文公开的方法保护数据的整个过程变成用于数据安全的综合包。根据本发明的方法保护的数据易于被取回和恢复、重构、重组、解密或返回到其原始形式或其他适当的形式以便于使用。为了恢复原始数据,可以利用下列项:1.数据集的所有份或部分。2.用于重现用于保护数据的方法的过程流的知识和能力。3.访问会话主人密钥。4.访问剖析器主人密钥。因此,计划一种安全的安装(secure installation)可能是令人期待的,在一种安全的安装中至少一个上面的元件可以与系统的其余组件物理分离(在例如不同的系统管理员的控制下)。防止调用数据保护方法的流氓应用程序的保护策略可以通过使用剖析器主人密钥而被加强。系统的安全性指出不存在用于重建原始数据的“后门”方法。对于数据恢复问题可能出现的安装,可以增强安全数据剖析器以提供四份和会话主人密钥存储库的镜像(miiror)。诸如RAID(便宜盘的冗余数组,用于在几个盘上分散信息)的硬件选项和诸如复制的软件选项也可以帮助数据恢复计划。密钥管理在本发明的一个实施例中,数据保护方法使用三个密钥集用于加密操作。每个密钥集都可以基于安装具有各自的密钥储存、取回、安全性和恢复选项。
剖析器主人密钥这个密钥是与安全数据剖析器的安装相关的各自的密钥。它被安装在安全数据剖析器已经部署于其上的服务器上。存在适于保护这个密钥的多种选项,包括、但不限于例如智能卡、单独的硬件密钥存储、标准密钥存储、订制密钥存储或在被保护的数据库表内。会话主人密钥可以在每次数据被保护时产生会话主人密钥。会话主人密钥用于在剖析和分割操作之前加密数据。它还可以被并入(如果会话主人密钥未被集成到被剖析数据中),作为剖析被加密数据的一种手段。会话主人密钥可以用多种方式进行保护,包括、但不限于例如例如标准密钥存储、订制密钥存储、单独的数据库表、或被保护在被加密的份内。份加密密钥对于被产生的数据集的每份或部分,可以产生各自的份加密密钥以进一步加密各份。份加密密钥可以被存储在与被加密的份不同的份中。对本领域普通技术人员而言清楚的是,本发明的数据保护方法和计算机系统可广泛应用于任何场景或环境中的任何类型的数据。除了通过因特网或在消费者和卖方之间被引导的商业应用之外,本发明的数据保护方法和计算机系统非常能应用于非商业或私人的场景或环境。期望阻止任何未认证用户而保持安全的任何数据集都可以使用本文描述的方法和系统加以保护。例如,可以通过采用本发明的用于保护数据的方法和系统,访问公司或组织内的特殊数据库可以被有 利地限制到只是选定用户。另一个示例是产生、更改或访问文档,其中期望限制访问或防止未认证或偶然的访问或公开到一组被选定个人、计算机或工作站之外。本发明的数据保护的方法和系统可应用于任何非商业或商业环境或用于任何设置的场景(setting for any setting)的方式的这些和其他示例包括、但不限于任何组织、政府机构或公司。在本发明的另一个实施例中,数据保护方法使用三个密钥集用于加密操作。每个密钥集都可以基于安装具有各自的密码储存、取回、安全性和恢复选项。可以使用的密钥包括、但不限于:1.剖析器主人密钥这个密钥是与安全数据剖析器的安装相关的各自的密钥。它被安装在安全数据剖析器已经部署于其上的服务器上。存在多种选项适于保护这个密钥,包括、但不限于例如智能卡、单独的硬件密钥存储、标准密钥存储、订制密钥存储或在被保护的数据库表内。2.会话主人密钥可以在每次数据被保护时产生会话主人密钥。会话主人密钥与剖析器主人密钥相结合使用以获得中间密钥。会话主人密钥可以用多种方式进行保护,包括、但不限于例如标准密钥存储、订制密钥存储、单独的数据库表、或被保护在被加密的份内。3.中间密钥可以在每次数据被保护时产生中间密钥。中间密钥用于在剖析和分割操作之前加密数据。它还可以被结合作为剖析被加密数据的一种手段。份加密密钥对于被产生的数据集的每份或每部分,可以产生各自的份加密密钥以进一步加密各份。份加密密钥可以被存储在与被加密的份不同的份中。
对本领域普通技术人员而言清楚的是,本发明的数据保护方法和计算机系统可广泛应用于任何场景或环境中的任何类型的数据。除了通过因特网或在消费者和卖方之间被引导的商业应用之外,本发明的数据保护方法和计算机系统非常能应用于非商业或私人的场景或环境。期望阻止任何未认证用户而保持安全的任何数据集都可以使用本文描述的方法和系统加以保护。例如,可以通过采用本发明的用于保护数据的方法和系统,访问公司或组织内的特殊数据库可以被有利地限制到只是选定用户。另一个示例是产生、更改或访问文档,其中期望限制访问或防止未认证或偶然的访问或公开到一组被选定个人、计算机或工作站之外。本发明的数据保护的方法和系统可应用于任何非商业或商业环境或用于任何设置的场景的这些和其他方式的示例包括、但不限于任何组织、政府机构或公司。工作组、项目、个人PC/便携式电脑或交叉平台数据安全本发明的数据保护方法和计算机系统在由工作组、项目、个人PC/便携式电脑和在例如商业、办公室、政府机构中使用的任何其他平台保护数据中,或敏感数据被产生、操纵或存储于其中的任何设置中,也是有用的。本发明提供用于保护数据的方法和计算机系统,已知是诸如美国政府的组织在寻找的,用于在整个政府组织中或在州或联邦级的政府之间实施。本发明的数据保护方法和计算机系统不仅提供剖析和分割平面文件的能力,而且提供剖析和分割任何类型的数据域、集和或表的能力。此外,所有的数据形式都能够在这个过程下被保护,包括、但不限于文本、视频、图像、生物计量和语音数据。本发明的保护数据的方法的可量测性、速度和数据吞吐量仅限于用户在他们的处置(disposal)处拥有的硬件。在本发明的一个实施例中,数据保护方法在工作组环境中被如下利用。在一个实施例中,如图23所示和如下描述的那样,本发明的工作组规模数据(Workgroup Scaledata)保护方法使用信任引擎的私人密钥管理功能来存储一组用户共享安全数据所必须的用户/组关系和相关的私人密钥(剖析器组主人密钥)。本发明的方法依据剖析器主人密钥怎样被部署,具有为企业、工作组、或个人用户保护数据的能力。
在一个实施例中,可以提供附加密钥管理和用户/组管理程序,利用单点的行政(administration)和密钥管理使大规模的工作组实施方式变得可能。由单个维护程序操纵密钥产生、管理和废止,随着用户数量增加这全都变得特别重要。在另一个实施例中,还可以跨过一个或几个不同的系统管理员建立密钥管理,这可以不允许任何一个人或组按需控制数据。这允许通过如由组织定义的作用、责任、成员资格、权利等获得对被保护数据的管理,并且对被保护数据的访问能够被限制到只是被允许或要求有权访问仅仅是他们正在工作的那部分的那些人,而诸如经理或行政领导的其他人可以有权访问所有被保护的数据。这个实施例允许被保护数据在公司或组织内的不同组当中的共享,但同时,只允许诸如具有被认证和预定作用和责任的某些选定个人,看到全部数据。另外,本发明的方法和系统的这个实施例还允许在例如单独的公司、或公司中单独的部门或单位、或任何单独的组织部门、组、机构、或办公室等当中,共享数据,其中一些共享是被要求的,但并非任何一方都可以被允许有权访问所有数据。对于本发明的这种方法和系统的需要和功用的清楚的尤其明显的示例是在政府区域、机构和办公室之间,和大型公司或任何其他组织的不同单位、部门或办公室之间允许共享,但维持安全性。
本发明的方法在更小规模上的适用性的一个示例如下。剖析器主人密钥被用作对于一个组织的序列化或品牌化的安全数据剖析器。由于剖析器主人密钥的使用规模由整个企业减小到更小的工作组,因此本文描述的数据保护方法被用作用户组内的共享文件。在图25所示和下面描述的示例中,存在连同他们在组织内的头衔和作用一起被定义的六个用户。边条代表用户根据他们的作用能够属于的五个可能的组。箭头代表用户在一个或多个组中的成员资格。当配置安全数据剖析器以便在这个示例中使用时,系统管理员通过维护程序从操作系统访问用户和组信息。这个维护程序产生剖析器组主人密钥并基于用户在组中的成员资格将剖析器组主人密钥分配给用户。在这个示例中,在资深职员组中有三个成员。对于这个组,动作将是:1.访问用于资深职员组的剖析器组主人密钥(如果不可用则产生一个密钥);2.产生使CEO与资深职员组相关的数字证书;3.产生使CFO与资深职员组相关的数字证书;4.产生使销售副总裁(Vice President, Marketing)与资深职员组相关的数字证书。将对每组和每组内的每个成员做相同的动作集。当维护程序完成时,剖析器组主人密钥成为用于组的每个成员的共享证件。当通过维护程序从组中去除一个用户时,可以自动做出对被分配数字证书的废止,而不影响组中其余的成员。一旦已经定义了共享证件,剖析和分割过程就保持相同。当文件、文档或数据元素被保护时,用户被提示在保护数据时要使用的目标组。所得的被保护数据只可被目标组的其他成员访问。本发明的方法和系统的这个功能可以用于任何其他计算机系统或软件平台,并且可以例如被集成到现有的应用程序中或为了文件安全而被独立使用。对本领域普通技术人员而言清楚的是,加密算法的任何一个或组合都适于在本发明的方法和系统中使用。例如,在一个实施例中,加密步骤可以被重复以产生多层的加密方案。另外,不同的加密算法、或加密算法的组合,可以在重复加密步骤中使用,使得不同的加密算法被应用于多层加密方案的不同层。这样,加密方案本身可以变成本发明用于防止未认证的使用或访问而保护敏感数据的方法的一个组件。安全数据剖析器可以包括作为内部组件、作为外部组件、或者作为两者的错误校验组件。例如,在一种适当的方法中,当依据本发明使用安全数据剖析器产生多个数据部分时,为了确保数据在一个部分内的完整性,哈希值在该部分内以预设的间隔被取得并被附于间隔的末尾。哈希值是数据的可预测和可重现的数字表示。如果数据内的任何位改变,哈希值将会不同。扫描模块(作为安全数据剖析器外部的独立组件或作为内部组件)接着可以扫描由安全数据剖析器产生的多个数据部分。每个数据部分(或可选地,根据某间隔或通过随机或伪随机采样小于全部的数据部分)被与所附的哈希值或多个哈希值进行比较,并且可以采取动作。这个动作可以包括对匹配和不匹配的值的报告、对不匹配的值的警告、或调用一些外部或内部程序以触发数据的恢复。例如,依据本发明,基于可能需要比全部部分少的较少部分来产生原始数据的概念,能够通过调用恢复模块而执行对数据的恢复。可以使用被附 于全部数据部分或数据部分的一个子集中任何地方的任何适当的完整性信息来实施任何其他适当的完整性校验。完整性信息可以包括能够用于确定数据部分的完整性的任何适当的信息。完整性信息的示例可以包括基于任何适当的参数(例如基于各数据部分)、数字签名信息、消息认证代码(MAC)信息、任何其他适当的信息、或其任何组合而计算的哈希值。可以在任何适当的应用中使用本发明的安全数据剖析器。即,本文描述的安全数据剖析器在不同的计算领域和技术中具有多种应用。下面讨论几个这种领域。将理解地是,这些本质上都只是示例性的并且任何其他适当的应用都可以使用安全数据剖析器。将进一步理解地是,所描述的示例只是示例性实施例,其可以按照任何适当的方式更改以便满足任何适当的需要。例如,剖析和分割可以是基于任何适当的单位,诸如位、字节、千字节、兆字节、其任何组合、或任何其他适当的单位。本发明的安全数据剖析器可以用于实施安全物理标记物,由此可能要求存储在物理标记物中的数据,以便访问存储在另一个储存区域中的其他数据。在一种适当的方法中,诸如小型USB闪存(flash)驱动器、软盘、光盘、智能卡的物理标记物或任何其他适当的物理标记物都可以依据本发明用于存储至少两个被剖析数据部分之一。为了访问原始数据,将需要访问USB闪存驱动器。因此,保存一个被剖析数据部分的个人计算机将需要使USB闪存驱动器具有在能够访问原始数据之前被附于的另一个被剖析数据部分。图26示出这个应用,储存区2500包括被剖析数据部分2502。具有被剖析数据部分2506的物理标记物2504将需要使用任何适当的通信接口 2508 (例如USB,串行接口,并行接口,蓝牙,红外,IEEE1394,以太网,或任何其他适当的通信接口)与储存区2500耦接,以便访问原始数据。这在例如计算机上的敏感数据被单独留下并遭受未认证的访问尝试的状况下是有用的。通过去除物理标记物(例如USB闪存驱动器),敏感数据不可访问。将理解地是,可以使用任何其他适当的方法来使用物理标记物。本发明的安全数据剖析器可以用于实施安全认证系统,由此使用安全数据剖析器剖析和分割用户注册数据(例如密码、私人加密密钥、指纹模板、生物计量数据或任何其他适当的用户注册数据)。用户注册数据可以被剖析和分割,由此一个或多个部分被存储在智能卡、政府公共访问卡、任何适当的物理储存 设备(例如磁盘或光盘、USB密钥驱动器等)、或任何其他适当的设备。一个或多个被剖析的用户注册数据的其他部分可以被存储在执行认证的系统中。这给认证过程提供了增加的安全级别(例如,除了从生物计量源获得的生物计量认证信息之外,还必须经由适当的被剖析和分割的数据部分获得用户注册数据)。本发明的安全数据剖析器可以被集成在任何适当的现有系统中,以便在每个系统各自的环境中提供对其功能的使用。图27显示示例性系统2600的框图,示例性系统2600可以包括软件、硬件、或两者,以便实施任何适当的应用。示例性系统2600可以是现有的系统,在该系统中安全数据剖析器2602可以被改型为集成式组件。可选地,安全数据剖析器2602可以例如从其最早的设计阶段就被集成到任何适当的系统2600中。安全数据剖析器2602可以被集成在系统2600中任何适当的级。例如,安全数据剖析器2602可以被集成在系统2600中足够后端的级,使得安全数据剖析器2602的存在对于系统2600的末端用户而言可以是基本透明的。依据本发明,安全数据剖析器2602可以用于对一个或多个储存设备2604当中的数据进行剖析和分割。系统的一些示例性示例具有如下所述集成于其中的安全数据剖析器。本发明的安全数据剖析器可以被集成在操作系统内核(例如Linux、Unix、或任何其他适当的商业或专有的操作系统)中。这个集成可以用于在设备级保护数据,由此例如,平常会被存储在一个或多个设备中的数据通过集成在操作系统中的安全数据剖析器被分离成一定数量的部分、并被存储在一个或多个设备当中。当尝试访问原始数据时,同样集成在操作系统中的适当的软件可以按照对于末端用户可以是透明的方式将被剖析数据部分重组成原始数据。本发明的安全数据剖析器可以被集成在卷管理器(voIumemanager)或储存系统中任何其他适当的组件中,以保护跨越任何或所有支持平台的本地和联网数据储存。例如,利用被集成的安全数据剖析器,储存系统可以使用由安全数据剖析器提供的冗余(即,其用于实施比所有被分离的数据部分需求更少的特征,以便重构原始数据),以保护数据防止丢失。安全数据剖析器还允许被写入储存设备的所有数据,无论是否使用冗余,都具有根据本发明的剖析产生的多个部分的形式。当尝试访问原始数据时,同样被集成在储存系统的卷管理器或其他适当组件中的适当的软件可以按照对于末端用户可以是透明的方式将被剖析数据部分重组成原始数据。在一种适当的方法中,本发明的安全数据剖析器可以被集成在RAID控制器中(作为硬件或软件)。这允许将数据安全储存到多个驱动器中,同时在驱动器故障的情形下维持容错性(fault tolerance)。本发明的安全数据剖析器可以被集成在数据库中,以便例如保护敏感表信息。例如,在一种适当的方法中,与数据库表的特殊单元(例如,各单元、一个或多个特殊的列、一个或多个特殊的行、其任何组合、或整个数据库表)相关的数据可以根据本发明被剖析和分离(例如,不同部分被存储在一个或多个储存设备的一个或多个位置处,或者单个储存设备上)。访问、以重组多部分从而查看原始数据可以被传统认证方法(例如用户名和密码询问)准许。本发明的安全数据剖析器可以被集成在涉及运动数据(data inmotion)(即,从一个位置到另一个位置传送的数据)的任何适当的系统中。这种系统包括例如电子邮件、流数据广播和无线(例如基于IEEE802.1lb标准的无线局域网(WiFi))通信。在一种适当的方法中,关于电子邮件,·安全数据剖析器可以用于剖析外出消息(即,含有文本、二进制数据、或两者(例如附于电子邮件消息的文件))并沿着不同路径发送被剖析数据的不同部分因此产生多个数据流。如果这些数据流的任何一个被损害,原始数据仍保持安全,因为根据本发明,系统可以要求多于一个部分被组合,以便产生原始数据。在另一种适当的方法中,不同的数据部分可以沿着一条路径陆续被通信,从而如果一部分被获得,它可能不足以产生原始数据。依据本发明,不同的部分到达预期接收者的位置并可以被组合以产生原始数据。图28和29是这种电子邮件系统的示例性框图。图28显示发送者系统2700,发送者系统2700可以包括任何适当的硬件,诸如计算机终端、个人计算机、手持设备(例如PDA、蓝莓)、蜂窝电话、计算机网络、任何其他适当的硬件、或其任何组合。发送者系统2700用于产生和/或存储消息2704,消息2704可以例如是电子邮件消息、二进制数据文件(例如图形、语音、视频等)、或两者。依据本发明,消息2704通过安全数据剖析器2702被剖析和分害I]。所得的数据部分可以通过网络2708(例如因特网、内联网、LAN、WiF1、蓝牙、任何其他适当的硬连线或无线的通信装置、或其任何组合)跨越一个或多个分离的通信路径2706被通信到接收者系统2710。数据部分可以在时间上并行、或可选地,根据不同数据部分的通信之间的任何适当的时间延迟进行通信。接收者系统2710可以是关于发送者系统2700如上所述的任何适当的硬件。依据本发明,沿着通信路径2706输送的单独的数据部分在接收者系统2710处被重组以产生原始消息或数据。图29显示发送者系统2800,发送者系统2800可以包括任何适当的硬件,诸如计算机终端、个人计算机、手持设备(例如PDA)、蜂窝电话、计算机网络、任何其他适当的硬件、或其任何组合。发送者系统2800用于产生和/或存储消息2804,消息2804可以例如是电子邮件消息、二进制数据文件(例如图形、语音、视频等)、或两者。依据本发明,消息2804通过安全数据剖析器2802被剖析和分割。所得的数据部分可以通过网络2808(例如因特网、内联网、LAN、WiF1、蓝牙、任何其他适当的通信手段、或其任何组合)跨越单条通信路径2806被通信给接收者系统2810。数据部分可以相对于彼此跨过通信路径2806被串行通信。接收者系统2810可以是关于发送者系统2800如上所述的任何适当的硬件。依据本发明,沿着通信路径2806输送的单独的数据部分在接收者系统2810处被重组以产生原始消息或数据。将理解的是,图28和29的装置只是示例性的。任何其他适当的装置都可以使用。例如,在另一种适当的方法中,图28和29的系统的特征可以被组合,由此图28的多路径方法被使用并且其中一条或多条通信路径2706用于输送多于一部分数据,正如通信路径2806在图29的背景中做的那样。安全数据剖析器可以被集成在运动数据系统的任何适当的级。例如,在电子邮件系统的背景中,安全数据剖析器可以被集成在用户接口级(例如,在Microsoft Outlook中),在这种情形下当使用电子邮件时,用户可以对安全数据剖析器特征的使用进行控制。可选地,安全数据剖析器可以被实施在诸如交换服务器的后端组件中,在这种情形下,依据本发明,消息可以被自动剖析、分割、并沿着不同路径通信,无任何用户干预。同样,在数据的流广播(例如音频、视频)的情形下,外出数据可以被剖析并分离成多个流,每个流都含 有一部分被剖析数据。依据本发明,多个流可以沿着一条或多条路径被传输并在接收者的位置被重组。这个方法的益处之一在于避免与随后通过单个通信信道传输被加密数据的传统数据解密相关的相对大的管理费用。本发明的安全数据剖析器允许运动数据在多个并行的流中被发送,增大速度和效率。将理解的是,安全数据剖析器可以被集成,用于对通过任何运输介质(包括例如有线、无线、或物理的运输介质)的任何类型的运动数据的保护和容错性。例如,网络电话(VoIP)应用程序可以使用本发明的安全数据剖析器。来往诸如蓝莓和智能电话的任何适当的个人数字助理(PDA)设备进行输送的无线或有线的数据可以使用本发明的安全数据剖析器进行保护。依据本发明,使用用于对等和基于集线器的无线网络的无线802.11协议的通信、卫星通信、点对点无线通信、因特网客户/服务器通信、或任何其他适当的通信可以涉及安全数据剖析器的运动数据能力。计算机外设(例如打印机、扫描仪、监视器、键盘、网络路由器、生物计量认证设备(例如指纹扫描仪)、或任何其他适当的外设)之间、计算机与计算机外设之间、计算机外设与任何其他适当的设备之间、或其任何组合的数据通信可以使用本发明的运动数据特征。本发明的运动数据特征还可以应用于使用例如单独的路由、交通工具、多种方法、任何其他适当的物理运输、或其任何组合来物理运输安全份。例如,数据的物理运输可以发生在数字/磁带、软盘、光盘、物理标记物、USB驱动、可拆卸硬盘驱动器、具有闪存(例如AppleIPOD或其他MP3播放器)的消费者电子设备、闪存、用于运输数据的任何其他适当的媒介、或其任何组合上。本发明的安全数据剖析器可以提供安全性,具有用于灾难恢复的能力。根据本发明,为了取回原始数据,比由安全数据剖析器产生的被分离数据的所有部分少的部分可能是有必须的。即,在被存储的m个部分中,η可以是取回原始数据必须的这些m个部分中最小的数量,这里n〈=m。例如,如果四个部分的每个都被存储在相对于其他三个部分不同的物理位置中,则,如果在这个示例中n=2,两个位置就可能被损害,由此数据被毁坏或不可访问,但是原始数据仍旧可以从另外两个位置中的部分被取回。用于η或m的任何适当的值都被可以使用。另外,本发明的m个特征中的η个可以用于产生“两个人原则”,由此避免委托可完全访问可能是敏感数据的单个个人或任何其他实体,两个或更多个不同的实体,每个实体都具有通过本发明的安全数据剖析器剖析的被分离的数据的一部分,可能需要同意将他们的部分放到一起以便取回原始数据。本发明的安全数据剖析器可以用于给一组实体提供全组密钥,全组密钥允许组成员访问被认证为通过该特殊组访问的特殊信息。组密钥可以是数据部分之一,这个数据部分由安全数据剖析器依据本发明产生的、可以被要求与集中存储的另一个部分组合,例如为了取回所寻找的信息。这个特征允许例如保护在一组当中的合作。它可以被应用在例如专用网络、虚拟私人网络、内联网、或任何其他适当的网络中。安全数据剖析器的这个使用的具体应用包括例如联合信息共享,其中例如多国友好的政府部队被给予通过单个网络或双网络(即,当与涉及当前使用的相对而言基本上是人工过程的许多网络相比)在被认证的安全级别上将可操作和敏感的数据通信给每个分别的国家的能力。这个能力还能够用于公司或其他组织,在这些公司或其他组织中一个或多个具体的个人(组织内或 组织外的)需要知道的信息可以通过单个网络被通信,不需要担心未认证的个人查看信息。另一个具体应用包括用于政府系统的多层安全体系。即,本发明的安全数据剖析器可以使用单个网络提供以不同级别的分类信息(例如未分类、分类、秘密、顶级秘密)操作政府系统的能力。如果需要,则可以使用更多的网络(例如,用于顶级秘密的单独的网络),但是本发明允许比单独的网络被用于每个级别的分类的当前装置大致上更少的装置。将理解的是,可以使用本发明的安全数据剖析器的上述应用的任何组合。例如,组密钥应用能够与运动数据安全应用一起使用(即,由此通过网络被通信的数据只能够被各组的成员访问,并且其中,当数据在运动时,依据本发明,它在多条路径当中被分割(或按顺序的部分进行发送))。本发明的安全数据剖析器可以被集成在任何中间件(middleware)应用中,以使应用能够将数据安全地存储在不同的数据库产品或不同的设备中,不更改该应用或该数据库。例如,在一种适当的方法中,具有集成的安全数据剖析器的中间件可以用于允许为特殊数据库书写的程序在无订制编码(custom coding)的情况下与其他数据库通信。本发明的安全数据剖析器可以被实施为具有诸如本文讨论的任何适当的能力的任何组合。在本发明的一些实施例中,例如,安全数据剖析器可以被实施为只具有某些能力,而其他能力可以通过使用外部软件、硬件获得,或外部软件和硬件两者都直接或间接与安全数据剖析器接口。例如,图30显示一种作为安全数据剖析器3000的安全数据剖析器的示例性实施方式。安全数据剖析器3000可以利用非常少的内置能力进行实施。如图所示,依据本发明,安全数据剖析器3000可以包括内置能力,用于使用模块3002将数据剖析和分割成多个数据部分(在本文中也被称为份)。安全数据剖析器3000还可以包括用于执行冗余的内置能力,以便能够使用模块3004实施例如上述的η个特征中的m个(即,使用比被剖析和分割的数据的所有份少的份来重建原始数据)。依据本发明,安全数据剖析器3000还可以包括使用模块3006的份分配能力,用于将数据份放入缓冲器,数据份从缓冲器被发送以便通信到远程位置,便于储存等。将理解的是,可以在安全数据剖析器3000内建立任何其他适当的能力。组装数据缓冲器3008可以是用于存储原始数据(虽然不必以其原始形式)的任何适当的存储器,原始数据将通过安全数据剖析器3000进行剖析和分割。在分割操作中,组装数据缓冲器3008将输入提供给安全数据剖析器3000。在恢复操作中,组装数据缓冲器3008可以用于存储安全数据剖析器3000的输出。分割份缓冲器3010可以是可用于存储从原始数据的剖析和分割中得到的多份数据的一个或多个存储器模块。在分割操作中,分割份缓冲器3010保存安全数据剖析器的输出。在恢复操作中,分割份缓冲器保存对安全数据剖析器3000的输入。将理解的是,任何其他适当能力的装置都可以为安全数据剖析器3000而内置。任何附加的特征都可以被内置并且所示的任何特征都可以被去除,做得更鲁棒,做得不太鲁棒,或者可以用任何适当的方式进行更改。缓冲器3008和3010同样都只是示例性的并且可以用任何适当的方式更改、去除或增加。用软件、硬件或两者实施的任何适当的模块都可以被称为或可以叫做安全数据剖析器3000。如果需要,甚至建立在安全数 据剖析器3000内的能力也可以被一个或多个外部模块代替。如图所示,一些外部模块包括随机数产生器3012、密码反馈密钥产生器3014、哈希算法3016、任何一种或多种类型的加密3018和密钥管理3020。将理解的是,这些只是示例性的外部模块。除了所示出的那些之外还可以使用任何其他适当的模块,或者可以使用任何其他适当的模块替代所示出的那些。在安全数据剖析器3000外部的密码反馈密钥产生器3014可以为每个安全数据剖析器操作产生唯一的密钥、或随机数(使用例如随机数产生器3012),以用作种子值,用于将原始会话密钥大小(例如值为128、256、512或1024位)延伸到等于待剖析和分割的数据的长度的值的操作。任何适当的算法都可以用于密码反馈密钥产生,包括例如AES密码反馈密钥产生算法。为了促进将安全数据剖析器3000及其外部模块(S卩,安全数据剖析器层3026)集成到应用程序层3024(例如电子邮件应用程序、数据库应用程序等)中,可以使用包装层(wrapping layer),包装层可以使用例如API函数调用。可以使用用于促进将安全数据剖析器层3026集成到应用程序层3024中的任何其他适当的安排。图31示例性显示当写(例如至储存设备)、插入(例如数据库域中)、或传输(例如通过网络)命令在应用程序层3024中被发出时,可以怎样使用图30的装置。在步骤3100处,待保护的数据被识别并且对安全数据剖析器进行调用。调用被传递通过包装器层3022,在步骤3102处,包装器层3022将在步骤3100处识别出的输入数据分流(stream)到组装数据缓冲器3008中。同样在步骤3102处,任何适当的份信息、文件名、任何其他适当的信息、或其任何组合都可以被存储(例如就象包装器层3022处的信息3106)。依据本发明,安全数据剖析器3000随后剖析和分割它获得为来自组装数据缓冲器3008的输入的数据。它将数据份输出到分割份缓冲器3010中。在步骤3104处,包装器层3022从被存储的信息3106获得任何适当的份信息(即在步骤3012处被包装器3022存储的)和份位置(多个份位置)(例如从一个或多个配置文件)。包装器层3022接着适当地书写输出份(从分割份缓冲器3010获得的)(例如写入在网络上通信的一个或多个储存设备等)。图32示例性显示当读(例如从储存设备)、选择(例如从数据库域)、或接收(例如从网络)发生时可以怎样使用图30的装置。在步骤3200处,待恢复的数据被识别出并且对安全数据剖析器3000的调用由应用程序层3024做出。在步骤3202处,来自包装器层3022的任何适当的份信息被获得并且份位置被确定。包装器层3022将在步骤3200处识别出的数据部分载入到分割份缓冲器3010中。安全数据剖析器3000接着依据本发明处理这些份(例如如果四份中只有三份可用,则安全数据剖析器3000的冗余能力可以用于只使用三份来恢复原始数据) 。然后被恢复的数据被存储在组装数据缓冲器3008中。在步骤3204处,应用程序层3024将存储在组装数据缓冲器3008中的数据转换成其原始数据格式(如果需要)并且将具有其原始格式的原始数据提供给应用程序层3024。将理解的是,图31中示出的原始数据的剖析和分割和图32中示出的将数据部分恢复成原始数据只是示例性的。除了所示出的那些之外还可以使用任何其他适当的过程、组件、或两者,或者用任何其他适当的过程、组件、或两者替代所示出的那些。图33是依据本发明的一个实施例、用于将原始数据剖析和分割成两个或更多个数据部分的示例性过程流的框图。如图所示,期望要被剖析和分割的原始数据是平面文本(plain text) 3306(即,单词“提交”被用作一个示例)。将理解的是,任何类型的数据都可以依据本发明被剖析和分割。会话密钥3300被产生。如果会话密钥3300的长度与原始数据3306的长度不兼容,则可以产生密码反馈会话密钥3304。在一种适当的方法中,原始数据3306可以在被剖析、分割或既剖析又分割之前被加密。例如,如图33所示,原始数据3306可以与任何适当的值XOR(例如,与密码反馈会话密钥3304,或者与任何其他适当的值)。将理解的是,任何其他适当的加密技术都可以用来替代所示的XOR技术,或除了所示的XOR技术而之外还可以使用任何其他适当的加密技术。将进一步理解的是,虽然图33按照逐字节操作的方式被示出,但是该操作可以在位级或任何其他适当的级别处发生。将进一步理解的是,如果需要,可能不需要对原始数据3306的任何加密,无论什么情形。所得的被加密数据(或如果加密不发生则是原始数据)然后被哈希,以确定在输出的大量数据(例如在所示的示例中有四个)当中怎样分割被加密的(或原始的)数据。在所示的示例中,哈希以字节发生并且是密码反馈会话密钥3304的函数。将理解的是,这只是示例性的。如果需要,可以在位级执行哈希。哈希可以是除了密码反馈会话密钥3304之外的任何其他适当的值的函数。在另一种适当的方法中,不需要使用哈希。而是,可以采用任何其他适当的技术来分割数据。图34是依据本发明的一个实施例用于从原始数据3306的两个或更多个被剖析和被分割的部分恢复原始数据3306的示例性过程流的框图。该过程涉及作为密码反馈会话密钥3304的函数对部分反向哈希(即对图33的过程),以恢复被加密的原始数据(或如果在剖析和分割之前没加密则是原始数据)。然后加密密钥可以用于恢复原始数据(即,在所示的示例中,密码反馈会话密钥3304用于通过使它与被加密数据XOR而对XOR加密进行解密)。这可恢复原始数据3306。图35显示可以怎样在图33和34的示例中实施位分割。可以使用哈希(例如作为密码反馈会话密钥的函数,作为任何其他适当值的函数)来确定分割数据的每个字节所在的位值。将理解的是,这只是在位级实施分割的一种示例性方式。可以使用任何其他适当的技术。将理解的是,本文中对哈希功能所做的任何参考都可以关于任何适当的哈希算法做出。这些包括 例如MD5和SHA-1。不同的哈希算法可以在不同的时间使用并且可以被本发明的不同组件使用。在依据上述示例性过程或通过任何其他过程或算法已经确定了分割点之后,可以关于哪个数据部分附于左和右段的每段做出确定。任何适当的算法都可以用于做出这个确定。例如,在一种适当的方法中,可以产生一张所有可能分配的表(例如具有为左段和为右段配对的目标的形式),由此可以通过对在会话密钥、密码反馈会话密钥、或可以被产生或延伸到原始数据大小的任何其他适当的随机或伪随机值中的相应数据使用任何适当的哈希函数来确定用于左段和右段的每个的目标份值。例如,可以获得具有随机或伪随机值形式的相应字节的哈希函数。哈希函数的输出用于确定从全部目标组合的表中选择哪对目标(即,一个用于左段而另一个用于右段)。基于这个结果,被分割数据单元的每段都被附于由被选择为哈希函数的结果的表值指出的各自的两份。可以依据本发明将冗余信息附于数据部分,以允许使用比全部数据部分少的数据部分恢复原始数据。例如,如果期望四个部分中的两个足以用于恢复数据,则来自多份的其他数据可以因而以例如时间轮转(round-robin)方式被附于每份(例如原始数据的大小是4MB,则份I得到它自己的份以及份2和3的份;份2得到它自己的份以及份3和4的份;份3得到它自己的份以及份4和I的份;并且份4得到它自己的份以及份I和2的份)。可以依据本发明而使用任何这种适当的冗余。将理解的是,依据本发明,任何其他适当的剖析和分割方法都可以用于由原始数据集产生多个数据部分。例如,可以在逐位的基础上随机或伪随机地处理剖析和分割。可以使用随机或伪随机值(例如会话密钥、密码反馈会话密钥等),由此对于原始数据中的每位,哈希函数对具有随机或伪随机值形式的相应数据的结果可以指出哪份附于各个位。在一种适当的方法中,随机或伪随机值可以被产生为、或延伸到,原始数据大小的8倍,使得哈希函数可以关于原始数据的每位在随机或伪随机值的相应字节上被执行。依据本发明,可以使用对在逐位级上剖析和分割数据的任何其他适当的算法。依据本发明,将进一步意识到,冗余数据可以诸如用刚刚描述过的方式被附于数据份。在一种适当的方法中,剖析和分割不需要是随机或非随机的。而是,可以使用用于剖析和分割数据的任何适当的确定性算法。例如,可以采用将原始数据分解成按顺序的份作为剖析和分割算法。另一个示例是逐位剖析和分割原始数据,将每个各位按照时间轮转的方式按顺序附于多个数据份。依据本发明,将进一步意识到,冗余数据可以诸如用上述方式被附于数据份。在本发明的一个实施例中,在安全数据剖析器产生原始数据的许多部分之后,为了恢复原始数据,某一个或多个被产生的部分可以是强制的。例如,如果一个部分被用作认证份(例如存在物理标记物设备上),并且如果安全数据剖析器的容错性特征正被使用(即,需要比全部部分少的部分来恢复原始数据),则即使安全数据剖析器可以有权访问原始数据的足够数量的部分,以便恢复原始数据,在它恢复原始数据之前它也可能需要存储在物理标记物设备上的认证份。将理解的是,基于例如应用程序、数据类型、任何其他适当的因素、或其任何组合,可能要求任何数量和类型的特殊份。在一种适当的方法中,安全数据剖析器或安全数据剖析器的一些外部组件可以加密原始数据的一个或多个部分。为了恢复原始数据,可能要求提供被加密部分并对其解密。不同的被加密部分可以用不同的加密密钥进行加密。例如,这个特征可以用于实施更安全的“两个人规则”,由此第一用户将需要使用第一加密来加密特殊份,而第二用户将需要使用第二加密来加密特殊份。为了访问原始数据,两个用户都将需要具有他们各自的加密密钥并且提供原始数据中他们各自的部分。在一种适当的方法中,公共密钥可以用于加密可以是被要求用于恢复原始数据的强制份的一个或多个数据部分。然后私人密钥可以用于对份进行解密,以便用于恢复成原始数据。使用强制份的任何这种适当的范例都可以被使用,在这种范例中需要比全部份更少的份来恢复原始数据。在本发明的一个适当的实施例中,将数据分配成有限数量的数据份可以被随机或伪随机地处理,使得从统计学的观点上看,任何特殊的数据份接收特殊的数据单元的概率等于任何一个其余的份将接收数据单元的概率。因此,每份数据都将具有近似相等量的数据位。根据本发明的另 一个实施例,有限数量的数据份的每个都不需要具有从剖析和分割的原始数据接收数据单元的相等概率。而是某一份或几份可以具有比其余份更高或更低的概率。因此,某些份相对于其他份就位大小而言可以更大或更小。例如,在两份的局面中,一份可以具有1%接收单元数据的概率而第二份具有99%的概率。因此应该注意的是,一旦已经通过安全数据剖析器在两份当中分配了数据单元,第一份就应该具有大约1%的数据而第二份具有大约99%的数据。可以依据本发明使用任何适当的概率。将理解的是,安全数据剖析器可以被编程以根据严格的(或接近严格的)百分比将数据分配给多份。例如,安全数据剖析器可以被编程以将80%的数据分配给第一份而其余20%的数据分配给第二份。根据本发明的另一个实施例,安全数据剖析器可以产生数据份,一份或多份数据具有预定的大小。例如,安全数据剖析器可以将原始数据分割成多个数据部分,这些部分之一准确地是256位。在一种适当的方法中,如果不可能产生具有必要大小的数据部分,则安全数据剖析器可以填塞该部分以使它具有正确的大小。可以使用任何适当的大小。在一种适当的方法中,数据部分的大小可以是加密密钥、分割密钥、任何其他适当的密钥、或任何其他适当的数据元素的大小。
如上所述,安全数据剖析器可以在剖析和分割的数据中使用密钥。出于清晰和简洁的目的,这些密钥在本文中应该被称为“分割密钥”。例如,之前介绍的会话主人密钥就是一种分割密钥。同样,如上所述,在通过安全数据剖析器产生的数据份内可以保护分割密钥。用于保护分割密钥的任何适当的算法都可以用于在数据份当中保护它们。例如,Shamir算法可以用于保护分割密钥,由此可以用于重构分割密钥的信息被产生并被附于数据份。依据本发明,可以使用任何其他这种适当的算法。同样,根据诸如骗子(Shamir)算法的任何适当的算法,在一份或多份数据内可以保护任何适当的加密密钥。例如,加密密钥用于在剖析和分割之前加密数据集,加密密钥用于在剖析和分割之后加密数据部分,或两个都使用例如Shamir算法或任何其他适当的算法加以保护。根据本发明的一个实施例,诸如完全包变换(Full PackageTransform)的全部变换或不变换(All or Nothing Transform) (AoNT)可以用于通过变换分割密钥、加密密钥、任何其他适当的数据元素、或其任何组合来进一步保护数据。例如,依据本发明,用于在剖析和分割之前加密数据集的加密密钥可以通过AoNT算法进行变换。然后,被变换的加密密钥可以根据例如Shamir算法或任何其他适当的算法在数据份当中被分配。为了重构加密密钥,被加密的数据集必须被恢复(如果依据本发明冗余被使用,则例如不必使用所有数据份),以便依据AoNT而访问关于变换的必要信息,正如本领域技术人员熟知的那样。当原始加密密钥被取回时,它可以用于对被加密的数据集进行解密以取回原始数据集。将理解的是,本发明的容错性特征可以与AoNT特征相结合使用。即,冗余数据可以被包括在数据部分中,使得需要比全部数据部分更少的数据部分来恢复被加密数据集。将理解的是,AoNT可以被应用于加密密钥,加密密钥用于在剖析和分割之后加密数据部分,替代加密或除了加密之外还可以应用AoNT,并且各个加密密钥的AoNT相应于剖析和分割之前的数据集。同样,AoNT可以被应用于分割密钥。在本发明的一个实施例中,正如依据本发明使用的加密密钥、分割密钥或两者可以使用例如工作组密钥被进一步加密,以便给被保护数据集提供额外的安全级别。在本发明的一个实施例中,可以提供检查模块,检查模块对安全数据剖析器何时被调用来分割数据进行跟踪。图36示出依据本发明用于使用安全数据剖析器的组件的可能选项3600。选项的每个组合都在下面被标出并且用图36的适当的步骤数标记。安全数据剖析器本质上可以是模块化的,允许任何已知的算法在图36所示的每个功能块中使用。例如,诸如布莱克(Blakely)的其他密钥分割(例如秘密共享)算法可以代替Shamir而被使用,或者AES加密能够被诸如三重DES (Triple DES)的其他已知的加密算法代替。在图36的示例中显示的表只描绘用于在本发明的一个实施例中使用的算法的一个可能的组合。应该理解,任何适当的算法或算法的组合都可以替代被标记的算法而被使用。I) 3610,3612,3614,3615,3616,3617,3618,3619在步骤3610处,使用之前被加密的数据,数据可以最终被分割成预订数量的份。如果分割算法需要密钥,则可以在步骤3612处使用密码安全伪随机数产生器产生分割加密密钥。在步骤3614处,分割加密密钥可以使用 全部变换或不变换(AoNT)被可选地变换成变换分离密钥,之后在步骤3615处,密钥被分割成预订数量的份,具有容错性。然后在步骤3616处,数据可以被分割成预订数量的份。在步骤3617处可以使用容错性方案以允许从少于总份数的份重生数据。一旦多份被产生,就可以在步骤3618处将认证/完整性信息嵌入到多份中。在步骤3619处每份都可以被可选地后加密。2)3111,3612,3614,3615,3616,3617,3618,3619在一些实施例中,可以使用由用户或外部系统提供的加密密钥对输入数据进行加密。外部密钥在步骤3611处被提供。例如,密钥可以从外部密钥存储器被提供。如果分割算法需要密钥,则在步骤3612处,可以使用密码安全伪随机数产生器产生分割加密密钥。在步骤3614处,可以使用全部变换或不变换(AoNT)将分割密钥可选地变换成变换分割加密密钥,之后在步骤3615处,密钥被分割成预订数量的份,具有容错性。然后在步骤3616处,数据被分割成预订数量的份。在步骤3617处可以使用容错性方案,以允许从少于总份数的份重生数据。一旦多份被产生,就可以在步骤3618处将认证/完整性信息嵌入到多份中。在步骤3619处每份都可以被可选地后加密。3) 3612, 3613, 3614, 3615, 3612, 3614, 3615, 3616, 3617, 3618, 3619在一些实施例中,在步骤3612处可以使用密码安全伪随机数产生器产生加密密钥以变换数据。在步骤3613处使用被产生的加密密钥来加密数据可以发生。在步骤3614处,可以使用全部变 换或不变换(AoNT)将加密密钥可选地变换成变换加密密钥。之后在步骤3615处,变换加密密钥和/或被产生的加密密钥可以被分割成预订数量的份,具有容错性。如果分割算法需要密钥,则在步骤3612处使用密码安全伪随机数产生器产生分割加密密钥可以发生。在步骤3614处,可以使用全部变换或不变换(AoNT)将分割密钥可选地变换成变换分割加密密钥,之后在步骤3615处,密钥被分割成预订数量的份,具有容错性。然后在步骤3616处,数据可以被分割成预订数量的份。在步骤3617处可以使用容错性方案,以允许从少于总份数的份重生数据。一旦多份被产生,就可以在步骤3618处将认证/完整性信息嵌入到多份中。然后在步骤3619处每份都可以被可选地后加密。4) 3612,3614,3615,3616,3617,3618,3619在一些实施例中,数据可以被分割成预订数量的份。如果分割算法需要密钥,则在步骤3612处,使用密码安全伪随机数产生器产生分割加密密钥可以发生。在步骤3614处,可以使用全部变换或不变换(AoNT)将分割密钥可选地变换成被变换的分割密钥,之后在步骤3615处,密钥被分割成预订数量的份,具有容错性。然后在步骤3616处,数据可以被分割。在步骤3617处可以使用容错性方案,以允许从少于总份数的份重生数据。一旦多份被产生,就可以在步骤3618处将认证/完整性信息嵌入到多份中。在步骤3619处每份都可以被可选地后加密。虽然上述四个选项组合优选在本发明的一些实施例中被使用,但是特征、步骤、或选项的任何其他适当的组合都可以在其他实施例中用于安全数据剖析器。安全数据剖析器可以通过促进物理分离而提供灵活的数据保护。数据可以首先被加密,然后被分割成多份,具有“η中的m”容错性。这允许在少于总份数的份可用时重生原始信息。例如,一些份可能丢失或在传输中被损坏。丢失或被损坏的份可以由附于份的容错性或完整性信息重建,如下面详述的那样。为了产生多份,由安全数据剖析器可选地利用许多密钥。这些密钥可以包括下列中的一个或多个:
预加密密钥:当份的预加密被选择时,外部密钥可以被传递给安全数据剖析器。这个密钥可以被产生且外部存储在密钥存储器(或其他位置)中并可以用于在数据分割之前可选地加密数据。分割加密密钥:这个密钥可以在内部产生并被安全数据剖析器用于在分割之前加密数据。然后可以使用密钥分割算法将这个密钥安全地存储在多份内。分割会话密钥:这个密钥不用于加密算法;而是,当随机分割被选择时它可以用于作为数据划分算法的密钥。当使用随机分割时,分割会话密钥可以在内部产生并被安全数据剖析器用于将数据划分成多份。可以使用密钥分割算法将这个密钥安全地存储在多份内。后加密密钥:当份的后加密被选择时,外部密钥可以被传递给安全数据剖析器并用于对各份进行后加密。这个密钥可以被产生并外部存储在密钥存储器或其他适当的位置中。
在一些实施例中,当使用安全数据剖析器这样来保护数据时,只有在所有要求的份和外部加密密钥都存在时,信息才可以被重组。图37显示用于在一些实施例中使用本发明的安全数据剖析器的示例性总体过程3700。如上所述,用于安全数据剖析器3706的两个便利的功能可以包括加密3702和备份3704。这样,在一些实施例中,安全数据剖析器3706可以与RAID或备份系统或硬件或软件加密引擎集成。与安全数据剖析器3706相关的主要密钥过程可以包括预加密过程3708、加密/变换过程3710、密钥安全过程3712、剖析/分配过程3714、容错性过程3716、份认证过程3716和后加密过程3720中的一个或多个。可以按照几个适当的顺序或组合执行这些过程,如图36详示。所使用过程的组合和顺序可以取决于特殊的应用或使用,期望的安全性级别,是否期望可选的预加密、后加密、或两者,期望的冗余,基本系统或集成系统的能力或性能,或任何其他适当的因素或因素的组合。示例性过程3700的输出可以是两份或更多份3722。如上所述,在一些实施例中数据可以被随机(或伪随机)地分配给这些份的每份。在其他实施例中,可以使用确定性算法(或随机、伪随机和确定性算法的一些适当的组合)。除了对信息资产的个别保护之外,有时也存在在感兴趣的不同用户或团体的组当中对份信息的要求。于是控制对用户组内各份的访问或在那些用户当中共享证书可能是必须的,证书将只允许组的成员对份进行重组。为此,在本发明的一些实施例中可以给组成员部署工作组密钥。工作组密钥应该得到保护并且保持为秘密的,因为工作组密钥的损害有可能允许组外的人访问信息。用于工作组密钥部署和保护的一些系统和方法如下所述。工作组密钥概念允许通过对份内存储的密钥信息进行加密而增强对信息资产的保护。一旦这个操作被执行,则即使所有要求的份和外部密钥都被发现,攻击者也没有希望不访问工作组密钥的情况下重建信息。图38显示用于将密钥和数据组件存储在份内的示例性框图3800。在图3800的示例中,可选的预加密和后加密步骤被省略,虽然这些步骤可以被包括在其他实施例中。用于分割数据的简化过程包括在加密阶段3802使用加密密钥3804加密数据。然后部分加密密钥3804可以依据本发明被分割并存储在份3810中。部分分割加密密钥3806也可以被存储在份3810中。使用分割加密密钥,于是数据3808被分割并存储在份3810中。为了恢复数据,分割加密密钥3806可以依据本发明被取回并恢复。然后分割过程可以被反向以恢复密文。加密密钥3804也可以被取回并恢复,然后可以使用加密密钥对密文解密。当利用工作组密钥时,可以稍微改变上述过程以用工作组密钥来保护加密密钥。然后加密密钥可以在被存储到多份中之前用工作组密钥进行加密。被更改的步骤在图39的示例性框图3900中被显示。使用工作组密钥分割数据的简化过程包括在阶段3902使用加密密钥首先加密数据。然后在阶段3904可以利用工作组密钥对加密密钥进行加密。被工作组密钥加密的加密密钥随后被分割成多个部分并用多份3912存储。分割密钥3908也可以被分割并存储在多份3912中。最后,部分数据3910使用分割密钥3908进行分割并存储在多份3912中。为了恢复数据,可以依据本发明取回分割密钥并恢复。然后依据本发明分割操作可以被反向以恢复密文。加密密钥(其是用工作组密钥加密的)可以被取回并恢复。接着可以使用工作组密钥对加密密钥解密。最后,可以使用加密密钥对密文解密。存在用于部署和保护工作组密钥的几种安全方法。对选择哪种方法用于特殊应用取决于因素的数量。这些因素可以包括要求的安全级别、成本、方便性和工作组中用户的数量。在一些实施例中使用的一些常用技术提供如下:基于硬件的密钥储存器基于硬件的解决方案一般提供在加密系统中用于加密/解密密钥的安全性的最强保证。基于硬件的储存解决方案的示例包括在便携式设备(例如智能卡/软件狗)、或非便携式密钥储存外设中存储密钥的防改动(tamper-resistant)密钥标记物设备。这些设备被设计成防止未认证方轻易复制密钥材料。密钥可以由被信任机构产生并被分配给用户,或在硬件内产生。此外,许多密钥储存系统提供多因素认证,其中密钥的使用需要访问物理对象(标记物)以及口令短语(passphrase)或生物计量两者。基于软件的密钥储存器虽然专用的基于硬件的储存器可能期望用于高度秘密的部署或应用,但是其他部署可以选择将密钥直接存储在本地硬件(例如盘、随机存取存储器(RAM)或诸如USB驱动器的非易失性RAM)上。这提供了对内部攻击较低级别的保护,或在攻击者能够直接访问加密机器的情形下提供较低级别的保护。为了保护盘上的密钥,基于软件的密钥管理经常通过以加密形式存储密钥来保护密钥,该加密是在一个密钥下进行的,该密钥得自其他认证量度的组合,包括:密码和口令短语、提供的其他密钥(例如来自基于硬件的解决方案)、生物计量、或上述项的任何适当的组合。由这种技术提供的安全级别的范围可以从由一些操作系统(例如MS Windows和Linux)提供的相对弱的密钥保护机制,到使用多因素认证实施的更鲁棒的解决方案。本发明的安全数据剖析器可以被有利地用在许多应用和技术中。例如,电子邮件系统、RAID系统、视频广播系统、数据库系统、磁带备份系统、或任何其他适当的系统都可以具有以任何适当级别集成的安全数据剖析器。如上所述,将理解的是,安全数据剖析器还可以被集成以便通过任何运输媒体,包括例如有线、无线、或物理运输媒体,保护任何类型的运动数据并具有容错 性。作为一个示例,网络电话(VoIP)应用程序可以使用本发明的安全数据剖析器,以解决与在VoIP中常见的回声和延迟有关的问题。对被漏掉的包进行网络重输的需要可以通过使用容错性来消除,即使丢掉预订数量的份,容错性也保证包交付。数据包(例如网络包)还可以被有效分割并以最小延迟和缓冲被“飞快地”恢复,产生对不同类型运动数据的综合解决方案。安全数据剖析器可以对网络数据包、网络语音包、文件系统数据块、或任何其他适当的信息单元起作用。除了与VoIP应用程序集成之外,安全数据剖析器还可以与下列应用程序集成:文件共享应用程序(例如对等文件共享应用程序)、视频广播应用程序、电子选举或投票应用程序(其可以实施电子选举协议和盲签名,诸如感觉(Sensus)协议)、电子邮件应用程序、或可能要求或期望安全通信的任何其他网络应用程序。在一些实施例中,可以由本发明的安全数据剖析器在两个不同阶段中提供对网络运动数据的支持,两个阶段是头部(header)产生阶段和数据划分阶段。简化的头部产生过程4000和简化的数据划分过程4010分别在图40A和40B中被显示。这些过程中的一个或两个可以对网络包、文件系统块、或任何其他适当的信息执行。在一些实施例中,头部产生过程4000可以在网络包流开始时被执行一次。在步骤4002处,随机(或非随机)分割密码密钥K可以被产生。然后在AES密钥包装步骤4004处,分割加密密钥K可以被可选地加密(例如使用上述的工作组密钥)。虽然可以在一些实施例中使用AES密钥包装,但是在其他实施例中可以使用任何适当的密钥加密或密钥包装算法。AES密钥包装步骤4004可以对整个分割加密密钥K进行操作,或分割加密密钥可以被剖析成几块(例如64位块)。AES密钥包装步骤4004随后可以对分割加密密钥的块进行操作,如果需要。在步骤4006处,秘密共享算法(例如Shamir)可以用于将分割加密密钥K分割成多个密钥份。然后每个密钥份都可以被嵌入到输出份之一中(例如在份头部中)。最后,份完整性块和(可选地)后认证标签(例如MAC)可以被附于每份的头部块。每个头部块都可以被设计成装在单个数据包内。
头部产生被完成(例如使用简化的头部产生过程4000)后,安全数据剖析器可以使用简化的数据划分过程4010进入数据划分阶段。在步骤4012中,每个进入的数据包或流中的数据块都使用分割加密密钥K进行加密。在步骤4014处,可以对从步骤4012得到的密文计算份完整性信息(例如哈希H)。例如,可以计算SHA-256哈希。在步骤4106处,依据本发明可以使用上述的数据分割算法之一将数据包或数据块划分成两个或更多个数据份。在一些实施例中,数据包或数据块可以被分割,使得每个数据份都含有大致随机分配的被加密的数据包或数据块。然后完整性信息(例如哈希H)可以被附于每个数据份。在一些实施例中,可选的后认证标签(例如MAC)也可以被计算出并附于每个数据份。每个数据份都可以包括元数据,元数据对于允许正确重构数据块或数据包可能是必须的。这个信息可以被包括在份头部中。元数据可以包括如密码密钥份、密钥身份(keyidentities)、临时份(share nonce)、签名/MAC值和完整性块的这种信息。为了使带宽效率最大,元数据可以用紧凑型二进制格式进行存储。例如,在一些实施例中,份头部包括明文头部大块(chunk),其可以是不加密的并且可以包括如Shamir密钥份、每次临时的会话(per-share nonce)、每个临时份(per-share nonce)、密钥标识符(例如工作组密钥标识符和后认证密钥标识符)的这种元素。份头部还可以包括被加密的头部大块,其用分割加密密钥进行加密。可以包括对任何数量的之前块(例如前面的两个块)的完整性校验的完整性头部大块还可以被包括在头部中。任何其他适当的值或信息也可以被包括在份头部中。如图41的示例性份格式4100所示,头部块4102可以与两个或更多个输出块4104相关。诸如头部块4102的每个头部块都可以被设计成装在单个网络数据包内。在一些实施例中,在头部块4102从第一位置被传输到第二位置后,输出块可以接着被传输。可选地,头部块4102和输出块4104可以同时被并行传输。传输可以在一个或多个类似或不同的通信路径上发生。每个输出块都可以包括数据部分4106和完整性/真实性部分4108。如上所述,每个数据份都可以使用份完整性部分加以保护,份完整性部分包括被加密的、预划分的数据的份完整性信息(例如SHA-256哈希)。为了在恢复时验证输出块的完整性,安全数据剖析器可以比较每份的份完整性块然后使分割算法反过来。之后可以针对份哈希对被恢复数据的哈希进行验证。如上所述,在本发明的一些实施例中,安全数据剖析器可以与磁带备份系统相结合使用。例如,依据本发明,各磁带可以被用作节点(即部分/份)。可以使用任何其他适当的安排,例如,由两个或更多个磁带组成的磁带库或子系统可以被看待为单个节点。依据本发明,冗余也可以被用于磁带。例如,如果数据集在四个磁带(即部分/份)当中被分摊,则四个磁带中的两个对于恢复原始数据可能是必须的。将理解的是,依据本发明的冗余特征,可能需要任何适当数量的节点(即少于总节点数量)来恢复原始数据。这大大增加了当一个或多个磁带过期时用于恢复的可能性。每个磁带还可以用SHA-256、HMAC哈希值、任何其他适当的值、或其任何组合进行数字保护,以保护其免受篡改。如果磁带或哈希值上的任何数据改变,则该磁带将不是用于恢复的候选对象,并且其余磁带中任何最少要求数量的磁带都将用于恢复数据。
在传统的磁带备份系统中,当用户要求数据被写入磁带或从磁带读取数据时,磁带管理系统(TMS)提供相应于物理磁带框(mount)的一个数。这个磁带框指出数据将被安装的物理驱动器。由磁带操作者或由磁带仓(tape silo)中的磁带机器人装载磁带。在本发明的情况下,物理磁带框可以被视为指出物理磁带的数量的逻辑框点。这不仅增加了数据容量,而且因为并行的缘故提高了性能。对于被增加的性能,磁带节点可以是或可以包括用于储存磁带图像的盘的RAID数组。这允许高速恢复,因为数据在被保护的RAID中总是可用的。在上述实施例中的任何实施例中,使用确定性、概率性、或既是确定性又是概率性的数据分配技术,待保护的数据可以被分配到多个份中。为了防止攻击者在任何密文块上开始秘密者攻击,来自密文块的位可以被确定性地分配给多份。例如,可以使用位段(BitSegment)例程执行分配,或可以修改块段(BlockSegment)例程以允许将块的多个部分分配给多份。这个策略可以防御已经累计了少于“M”份的攻击者。在一些实施例中,可以使用具有密钥的(keyed)信息分散(例如,通过使用具有密钥的信息分散算法或“IDA”)而采用具有密钥的秘密共享例程。还可以通过一个或多个外部工作组密钥、一个或多个共享的密钥、或工作组密钥和共享密钥的任何组合来保护用于具有密钥的IDA的密钥。这样,可以采用多因素秘密共享方案。为了重构数据,在一些实施例中可能需要至少“Μ”份加上工作组密钥(多个工作组密钥)(和/或共享密钥(多个共享密钥))。IDA(或用于IDA的密钥)还可以用于(driven)加密过程。例如,变换可以用于明码电文(例如在加密之前的预处理层期间)并且可以在明码电文被加密之前进一步保护明码电文。例如,在一些实施例中,具有密钥的信息分散用于将来自数据集的数据的唯一部分分配到两份或更多份中。具有密钥的信息分散可以使用会话密钥,以首先加密数据集,以便将来自数据集的被加密数据的唯一部分分配到两个或更多个被加密的数据集份中,或者既加密数据集、又将来自数据集的被加密数据的唯一部分分配到两个或更多个被加密的数据集份中。例如,为了分配数据集或被加密数据集的唯一部分,可以使用秘密共享(或上述的方法,诸如位段或块段)。然后,会话密钥可以被可选地变换(例如使用完全包变化或AoNT)并使用例如秘密共享(或具有密钥的信息分散和会话密钥)进行共享。在一些实施例中,在密钥的唯一部分被分配或共享到两个或更多个会话密钥份之前,可以使用共享密钥(例如工作组密钥)给会话密钥加密。然后,可以通过将至少一个被加密的数据集份和至少一个会话密钥份组合起来而形成两个或更多个用户份。在形成用户份的过程中,在一些实施例中,至少一个会话密钥份可以被插进到被加密的数据集份中。在其他实施例中,至少一个会话密钥份可以被插入到被加密的数据集份中的至少部分基于被共享工作组密钥的位置处。例如,具有密钥的信息分散可以用于将每个会话密钥份分配到唯一的被加密数据集份中以形成用户份。在面临密码攻击时,将会话密钥份插进或插入到被加密的数据集份中的至少部分基于共享工作组的位置处可以提供增加的安全性。在其他实施例中,一个或多个会话密钥份可以被附于被加密数据集份的开始或末尾以形成用户份。然后可以在至少一个数据存储库分离地存储收集的用户份。数据存储库或多个数据存储库可以位于相同的物理位置(例如,在相同的磁性储存设备或磁带储存设备上)中或在地理上被分离(例如,在不同地理位置处的物理分离的服务器上)。为了重构原始数据集,可能需要被认证的用户·份集和共享工作组密钥。即使面对密钥取回数据库(oracle),具有密钥的信息分散也可以是安全的。例如,取得块密码E和用于E的密码取回数据库,用于E的密码取回数据库给块密码带去输入/输出对的列表(X1, Y1),..., (Xc, Y。),并且返回与输入/输出示例(例如对于所有的i,Yi=Eli(Xi)) —致的密钥K。如果不存在一致的密钥则数据库可以返回有区别的值丄。这个数据库可以模拟可以从输入/输出示例的列表恢复密钥的密码攻击。当存在密钥取回数据库时标准的基于块密码的方案可能失败。例如,当存在密钥取回数据库时CBC加密或CBC MAC可能变得完全不安全。如果ΠΙΜ是IDA方案并且ΠΕΜ是通过一些块密码E的操作模式给出的加密方案,则如果当与任意优选的秘密共享方案(PSS)组合成每HKl或ΗΚ2的两个方案,获得鲁棒的计算秘密共享(RCSS)目标,但是在对手具有密钥取回数据库的模式中,则(nIDA,nEnc)就会提供面临密钥取回攻击时的安全性,如果这里存在IDA方案ΠΙΜ和加密方案ΠΕη%使得这对方案在面临密钥取回攻击时提供安全性,则获得这对的一种方式可以是具有“聪明的” IDA和“哑巴”解密方案。获得这对方案的另一种方式可以是具有“哑巴” IDA和“聪明的”解密方案。为了示出聪明的IDA和哑巴加密方案的使用,在一些实施例中,加密方案可以是CBC而IDA可以具有“若隐私”性质。弱隐私性质意味着例如,如果对IDA的输入是块的随机序列M=M1...M1并且对手从未认证的收集获得多份,则存在一些块系数i,使得对手计算吣是不可行的。这种弱隐私IDA可以通过下列步骤被创建:首先给M施加诸如斯汀逊(Stinson)的AoNT的理论信息(information-theoretic) AoNT,然后施加诸如块段的简单IDA,或类似拉宾(Rabin)的方案(例如里德-所罗门(Reed-Solomon)编码)的位有效的(bit-efficient)IDA。为了示出哑巴IDA和聪明的加密方案的使用,在一些实施例中,某人可以使用CBC模式,用双加密而非单加密。现在可以使用任何IDA,即使是复制。对于对手而言,具有用于块密码的密码取回数据库将是无用的,因为对手将被拒绝任何单加密的输入/输出示例。虽然聪明的IDA具有值,但是在某些背景下它也可能是无关紧要的,在某种意义下,当面临密钥取回攻击时提供安全性所需的“聪明”能够被“推送到”别处。例如,在一些实施例中,无论IDA多聪明,并且正在努力用IDA在HK1/HK2的背景下获得无论什么目标,聪明都可以被推送到IDA外并推送到加密方案中,剩下固定和哑巴的IDA。基于上述,在一些实施例中,可以使用“万能声音”聪明的IDAnIM。例如,将IDA提供成使得对于所有加密方案ΠΕη%对(nIDA,nEnc)在面临密钥取回攻击时可万能地提供安全性。在一些实施例中,加密方案被提供成在面临密钥取回数据库时是RCSS安全的。该方案可以与HK1/HK2、与任何IDA集成,以便在面临密钥取回时获得安全性。使用新方案可能特别有用,例如,做出对称加密方案对于反对密钥取回攻击更安全。如上所述,经典的秘密共享观念通常是非密钥的(unkey)。因此,以既不需要重构秘密的商人又不需要重构秘密的某方来保存任何类型的对称或不对称的密钥的方式,将秘密分成多份,或由多份重构秘密。然而,本文描述的安全数据剖析器是可选地具有密钥的。商人可以提供对称密钥,如果用于数据共享,则对于数据恢复而言可能是要求的。安全数据剖析器可以使用对称密钥来将待保护消息的唯一部分分散或分配成两份或更多份的。共享密钥可以使多因素或两因素秘密共享(2FSS)成为可能。于是对手可能需要被引导通过两种基本的不同类型的安全性,以便打破安全机制。例如,为了冒犯秘密共享目标,对手(I)可能需要获得被认证的参与者集(set of player)的份,和(2)可能需要获得应该不能够获得的秘密密钥(或打破由该密钥作为密钥的密码机制)。在一些实施例中,附加要求的新组被添加到RCSS目标。附加要求可以包括“第二因素密钥拥有。这些附加要求可以被添加而不减少原始的要求集。一个要求集可以与对手不能打破方案有关,如果它知道秘密密钥但未获得足够的份(例如经典的或第一因素要求),而其他的要求集可以与对手不能打破方案有关,如果它确实具有密钥但又设法找到所有的份(例如,新的或第二因素要求)。在一些实施例中,可以存在两个第二因素要求:隐私要求和真实性要求。在隐私要求中,可能涉及一个游戏,其中通过环境选择秘密密钥K和位b。现在对手在秘密共享方案的域中提供一对等长度的消息和M/。该环境计算M113的份以得到份的向量SiMSjl],...,SJn]),并且它把份S1 (它们的全部)给予对手。使用相同的密钥K和隐藏位b,对手现在可以选择另一对消息(M2c^M21)并且每件事如前进行。对手的工作是输出被认为是b的位b’。对手隐 私优点是一小于b=b’的概率的两倍。这个游戏捕捉这个观念,即,即使知道了所有的份,如果对手缺乏秘密密钥,则对手仍旧不能知道关于共享秘密的任何事。在真实性要求中,可能涉及一个游戏,其中环境选择秘密密钥K并在随后对份(Share)和恢复(Recover)的调用中使用它。在一些实施例中,份和恢复可以使它们的句法规则被修改,以反映出这个密钥的存在。然后对手在秘密共享方案的域中对它选择的无论什么消息M1,...,Mq做出份请求。响应于每个份请求,它得到相应的份的η-矢量S1,..., Sq0对手的目标是仿造新的明码文本;如果它输出一个份矢量S’,使得当被供给恢复算法时,导致某事不在中,则它赢了。这是“明码文本的完整性”观念。存在获得多因素秘密共享的两种方法。第一种方法是一般的方法一感觉以黑箱方式使用基本(R)CSS方案是一般的。被认证的加密方案用于对是CSS共享的消息进行加密,然后可以例如使用诸如Blakely或Shamir的秘密共享算法使所得的密文被分享出去。一种可能更有效的方法是允许共享密钥是工作组密钥。即(I)可以使用共享密钥加密随机产生的(R)CSS方案的会话密钥,和(2)应用于消息(例如文件)的加密方案可以由被认证的加密方案代替。这个方法可以只需要性能上的最小下降。虽然上面描述了安全数据剖析器的一些应用,但是应该清楚知道的是,本发明可以与任何网络应用集成,以便增加安全性、容错性、匿名、或上述的任何适当的组合。图42是云计算安全解决方案的示例性框图。包括安全数据剖析器4210的系统4200被耦接至包括云资源4260的云4250。系统4200可以包括任何适当的硬件,诸如计算机终端、个人计算机、手持设备(例如PDA、黑莓、智 能电话、便携式设备)、蜂窝电话、计算机网络、任何其他适当的硬件、或其任何组合。安全数据剖析器4210可以被集成在系统4200的任何适当的级。例如,安全数据剖析器4210可以被集成到系统4200的硬件和/或软件中的足够后端级,使得提供的安全数据剖析器4210对系统4200的末端用户基本上是透明的。上面关于例如图27和28和下面关于例如图57和58,详细描述了安全数据剖析器在适当系统内的集成。云4250包括多个示例性云资源4260,云资源4260包括数据储存资源4260a和4260e、数据服务资源4260b和4260g、网络访问控制资源4260c和4260h,和高性能(performing)计算资源4260d和4260f。这些资源的每个都将在下面关于图43-47被详细描述。这些云计算资源只是示例性的。应该理解,任何适当数量和类型的云计算资源都可以从系统4200访问。云计算的一个优点在于系统4200的用户可能能够访问多个云计算资源而不必在专用计算机硬件上投资。用户具有动态控制能访问系统4200的云计算资源的数量和类型的能力。例如,可以在云中给系统4200提供即刻要求(on-demand)储存资源,该资源具有基于当前需要能够动态调整的能力。在一些实施例中,在系统4200上执行的一个或多个软件应用程序可以将系统4200耦接至云资源4260。例如,因特网网络浏览器可以用于通过因特网将系统4200耦接至一个或多个云资源4260。在一些实施例中,与系统4200集成或与系统4200连接的硬件可以将系统4200耦接至云资源4260。在两种实施例中,安全数据剖析器4210都可以与云资源4260和/或存储在云资源4260内的数据安全通信。云资源4260与系统4200的耦接对于系统4200或系统4200的用户可以是透明的,使得云资源4260对于系统4200显得象是本地硬件资源。被进一步共享的云资源4260对于系统4200可以显得象是专用硬件资源。
安全数据剖析器4210可以加密和分割数据,使得不可辨认的数据将穿越(traverse)云或将被存储在云内。云的下层硬件组件(例如服务器、储存设备、网络)可以在地理上进行分配,以确保万一电力网故障、天气事件或其他人为的或自然的事件时云资源的连续性。因此,即使云内的一些硬件组件遭受灾难性故障,云资源仍旧是可访问的。云资源4260可以被设计有冗余,以在尽管一个或多个硬件故障时仍可提供不间断的服务。图43是用于通过云保护运动数据(即,在从一个位置到另一个位置传送数据期间)的云计算安全解决方案的示例性框图。图43显示发送者系统4300,发送者系统4300可以包括任何适当的硬件,诸如计算机终端、个人计算机、手持设备(例如PDA、蓝莓)、蜂窝电话、计算机网络、任何其他适当的硬件、或其任何组合。发送者系统4300用于产生和/或存储数据,数据可以例如是电子邮件消息、二进制数据文件(例如图形、语音、视频等)、或两者。由安全数据剖析器4310依据本发明剖析和分割数据。所得的数据部分可以通过云4350被通信到接收者系统4370。接收者系统4370可以是关于发送者系统4300如上所述的任何适当的硬件。依据本发明,单独的数据部分可以在接收者系统4370处被重组以产生原始数据。当行进通过云4350时,数据部分可以通过一条或多条通信路径被通信,通信路径包括因特网和/或一个或多个内联网、LAN、WiF1、蓝牙、任何其他适当的硬连线或无线通信网络、或其任何组合。如上面关于图28和29所述的那样,即使一些数据部分被损害,原始数据也受到安全数据剖析器保护。图44是用于在云中保护数据服务的云计算安全解决方案的示例性框图。在这个实施例中,用户4400可以通过云4430给末端用户4440提供数据服务4420。安全剖析器4410可以依据所公开的实施例保护数据服务。数据服务4420可以是通过云4430可访问的任何适当的应用程序或软件服务。例如,数据服务4420可以是被实施为服务导向架构(SOA)系统的一部分的基于网络的应用程序。数据服务4420可以被存储在云4430内的一个或多个系统上并被执行。如果不考虑下层硬件资源,通过这个云计算实施方式提供的抽象过程(abstraction)允许数据服务4420显得象是对于末端用户4440的虚拟化资源。安全剖析器4410可以在数据服务4420与 末端用户4440之间保护运动数据。安全剖析器4410还可以保护与数据服务4420相关的被存储数据。与数据服务4420相关的被存储数据可以在实施数据服务4420的系统或多个系统内和/或在下面将被详细描述的单独的安全云数据储存设备内得到保护。虽然数据服务4420和图44的其他部分被显示在云443之外,但是应该理解,这些元素的任何一个都可以被结合在云4430内。图45是用于保护云中的数据储存资源的云计算安全解决方案的示例性框图。包括安全数据剖析器4510的系统4500被耦接至包括数据储存资源4560的云4550。安全数据剖析器4510可以用于在一个或多个数据储存资源4560当中剖析和分割数据。每个数据储存资源4560都可以代表一个或多个联网的储存设备。这些储存设备可以被分配给单个用户/系统,或可以被多个用户/系统共享。安全数据剖析器4510提供的安全性可以允许来自多个用户/系统的数据在同一个储存设备上安全地共存。如果不考虑下层数据储存资源的数量和位置,由这个云计算实施方式提供的抽象过程允许数据储存资源4560显得象是对于系统4500的单个虚拟化储存资源。当数据被写入数据储存资源4560或从数据储存资源4560读取时,安全数据剖析器4510可以用对末端用户透明的方式分割和重组数据。照这样,末端用户可能能够一经要求就访问可动态升级的储存器。
在云中使用安全数据剖析器4510的数据储存是安全、适应性强、持续和私人的。安全数据剖析器4510通过确保不可辨认的数据穿越云或被存储在单个储存设备中而保护数据。云储存系统适应性强,因为安全数据剖析器提供的冗余的缘故(即,需要比全部被分离的数据部分少的数据部分来重构原始数据)。即使一个或多个储存设备故障或不可访问,在多个储存设备内和/或在多个数据储存资源4560内存储被分离的部分也可确保数据可以被重构。云储存系统持久,因为在数据储存资源4560内丢失储存设备对末端用户无影响。如果一个储存设备故障,被存储在该储存设备内的数据部分可以在另一个储存设备处被重建,而不必暴露该数据。此外,数据储存资源4560(或甚至是构成数据储存资源4560的多个联网的储存设备)可以是地理上分散的,以限制多个故障的风险。最后,可以使用一个或多个密钥将存储在云中的数据保存为私人的。如上所述,数据可以通过唯一的密钥被分配给感兴趣的用户或团体,使得该用户或团体将有权访问数据。使用安全数据剖析器在云中的数据储存还可以在传统的本地或联网的储存器上提供性能提升。可以通过将单独的数据部分并行读写至多个储存设备而提高系统的吞吐量。在吞吐量方面的增加可以允许使用较慢、较便宜的储存设备,基本上不影响储存系统的总体速度。图46是依据所公开的实施例使用安全数据剖析器保护网络访问的示例性框图。安全数据剖析器4610可以与网络访问控制块4620 —起用于控制对网络资源的访问。如图46所示,网络访问控制块4620可以用于在用户4600和末端用户4640之间提供安全的网络通信。在一些实施例中,网络访问控制块4620可以为云(例如云4250,图42)中的一个或多个网络资源提供安全的网络访问。可以给被认证用户(例如用户4600和末端用户4640)提供全组密钥,全组密钥给用户提供在网络上安全通信和/或访问安全的网络资源的能力。被保护网络资源将不响应,除非正确的证书(例如组密钥)被提供。这可以防止常见的联网攻击,诸如服务拒绝攻击、端口扫描攻击、中间人攻击和重放攻击。除了为静止存储在通信网络内的数据提供安全性和为通过网络的运动数据提供安全性之外,网络访问控制块4620可以与安全数据剖析器4610 —起用于在感兴趣的用户或团体的不同组当中共享信息。可以建立合作组以在安全的虚拟网络上参与为感兴趣的安全团体。可以给组成员部署工作组密钥以给组的成员提供对网络和联网的资源的访问。上面已经讨论过用于工作组密钥部署的系统和方法。图47是依据所公开的实施例,使用安全数据剖析器保护对高性能计算资源的访问的示例性框图。安全数据剖析器4710可以用于提供对高性能计算资源4720的安全访问。如图47所示,末端用户4740可以访问高性能计算资源4720。在一些实施例中,安全数据剖析器4710可以提供对云(例如云4250,图42)中的高性能资源的安全访问。高性能计算资源可以是大型计算机服务器或服务器农场(serverfarm)。这些高性能计算资源可以给用户提供灵活、可升级和可配置的数据服务以及数据储存服务。依据另一个实施例,安全数据剖析器可以用于使用虚拟机保护数据访问。也被称为虚拟机监视器(VMM)的管理程序器(hypervisor)是允许多个虚拟机运行在单个主机上的计算机系统。图48显示包括管理程序器4800和运行在管理程序器4800上的一系列虚拟机4810的示例性框图。管理程序器4800运行基本操作系统(例如Microsoft WilldOWS 和Linux)。虚拟机4810可能从基 本操作系统上被防火墙挡住,使得对基本操作系统的攻击(例如病毒、蠕虫、非法入侵等)不影响虚拟机4810。一个或多个安全数据剖析器可以与管理程序器4800集成,以保护虚拟机4810。尤其是,使用安全数据剖析器,虚拟机4810可以与一个或多个服务器或末端用户安全地通信。依据这个实施例,可以通过给用户提供安全的虚拟机图像而给用户部署安全的数据访问。这个实施例可以允许即刻要求的信息共享,同时保证数据的机密性和完整性。图49和50显示用于使安全数据剖析器与管理程序器集成的可选实施例。在图49中,安全数据剖析器4930在管理程序器4920之上被实施。例如,安全数据剖析器4930可以被实施为在管理程序器4920上操作的软件应用程序或模块。在一些实施例中,安全数据剖析器4930可以通过在管理程序器4920上运行的虚拟机而实施。运行在管理程序器4920上的虚拟机可以使用安全数据剖析器4930安全地耦接至服务器4940和末端用户4940。在图50中,安全数据剖析器5030在管理程序器5020之下被实施。例如,安全数据剖析器5030可以在管理程序器5020的硬件内被实施。管理程序器5020上运行的虚拟机可以使用安全数据剖析器5030与服务器5040和末端用户5050安全地通信。依据另一个实施例,安全数据剖析器可以用于保护正交频分复用(OFDM)通信信道。OFDM是用于宽带数字通信的复用方案。宽带无线标准(例如WiMAX和LTE)和宽带电力线通信(BPL)使用OFDM。OFDM是唯一的,因为所有相邻信道都是真正正交的。这消除了串音、消隐(cancellation)和感应的噪声。当前,在这些OFDM标准中,数据通过单个OFDM通信信道被传输。安全数据剖析器可以通过在多个OFDM通信信道当中分割数据来保护OFDM通信。如上所述,使用安全数据剖析器在多个数据信道当中分割数据可保护数据,因为只有一部分数据通过每个信道被传输。作为一个额外的益处,安全数据剖析器可以在多个数据信道上同时传输多个数据部分。这些同时的传输可以增加数据传输的有效带宽。另外或可选地,安全数据剖析器可以在多个数据信道上传输相同的数据部分。这个冗余传输技术可以增加传输可靠性。图51是用于保护OFDM通信网络的示例性框图。如图51所示,末端用户5150可以使用安全数据剖析器5120通过OFDM网络5140将数据发送给末端用户5150。OFDM网络5140可以是在无线网络上的宽带、在电力线网络上的带宽、或任何其他适当的OFDM网络。 依据一些其他的实施例,安全数据剖析器可以用于保护关键的基础设施控制,包括例如电力网。因特网协议版本6(IPv6)是下一代因特网协议。IPv6具有比当前的因特网协议更大的地址空间。在被实施时,IPv6将允许通过因特网直接访问更多的设备。重要的是,对关键基础设施的控制被限制成被认证个人的有限访问。如上所述,安全数据剖析器可以限制被认证用户和组对网络资源的访问。可以使用“两个人原则”保护关键系统,由此至少两个用户将需要提供他们各自的密钥来访问关键系统。图52是用于保护电力网的示例性框图。如图52所示,用户5210可以使用安全数据剖析器5220为末端用户5250提供对电力网5240的安全访问。在一些实施例中,可以在电力线网络上使用宽带将电力网系统耦接至因特网,以消除网络电缆和典型通信网络的相关设备。将电力网系统耦接至因特网可以使智能网(smart grid)技术成为可能,智能网技术允许通过实时报告使用而更有效地使用电力。作为另一个益处,高功率(high powered)的计算资源和/或数据储存设施可以被安装在因特网连接的电力监视设施上。这些资源可以为保护云中的数据提供可靠的储存器和处理节点。图53描绘了主机系统5300的一个示例性实施例的框图。主机系统5300包括具有子卡(daughter card) 5301的母板5310。子卡5301可以具有用于经由插座5303耦接至母板5310的接口连接器5302。这样即使子卡5301未被示例性描绘为被插入插座,也应该理解,对于子卡5301的操作而言,接口连接器5302可以被放入插座5303中。母板5310可以具有中央处理单元(“CPU”)5315,CPU5315可以包括一个或多个处理器核心。此外,应该理解,母板可以具有多于一个CPU,以及出于清晰和不限制的目的未示例性描绘其他组件当中的芯片集芯片。此外,母板5310可以具有插座5317,存储器模块5316可以被插入插座5317中。出于清晰的目的,通过示例而非限制,将假设存储器模块5316是通过一条或多条总线被耦接至CPU5315的系统存储器,一条或多条总线包括出于清晰和不限制的目的未示例性显示的系统总线。在其他实施例中,系统存储器可以被直接附连于母板5310。子卡5301可以包括可重新配置的处理器单元(“RPU”)5320,以便与用软件处理数据相比,提供对处理数据的加速。在美国专利7,856,545和7,856,546中另外详细描述了 RPU,每个专利都通过引用被全部并入本文。数据可以被提供为输入,就象一般从母板5310用箭头指出的那样。更具体地是,数据可以从用作系统存储器的存储器模块5316被读出,以便输入到RPU5320。在通过RPU5320处理过这种数据后,这种被处理的数据可以被提供为从子卡5301输出到系统存储器5316,正如一般由输出箭头5305指出的那样。然而,这可能给母板5310的资源强加负担,这个负担不强加给在图54中示例性描绘的主机系统5400。图54描绘了主机系统5400的另一个不例性实施例的框图。主机系统5400包括具有子卡5401的母板5310。由于母板5310在两个图53和54中都是相同的,因此出于清晰的目的,不重复对母板5310的上述描述。
·
子卡5401同样具有RPU5320和接口连接器5302。然而,来往子卡5401的流量可以是双向的,如由一般箭头5304指出的那样,而非如图53中分别用箭头5304和5305示例性描绘的单向输入和输出流量,因为在母板5310与子卡5401之间在主机系统5400中比在主机系统5300中有更小的流量。然而,应该理解,在主机系统5400中可以使用如本文描述的双向或单向的流量。此外,子卡5401包括开关5402、网络接口 5410和收发器模块5420。即使示例性描绘了四个收发器模块5420,也应该理解,可以使用更少或更多的收发器。收发器模块5420是用于如一般用箭头5315指出的双向流量。此外,即使描述了收发器,也应该理解可以使用单独的接收器和发射器。出于由下面的描述将变得更加清楚的原因,下面就子卡5401而描述加速器系统。为了联网和/或储存应用而采用下面描述的加速器系统。出于清晰的目的,通过示例而非限制,描述一种安全数据储存应用。然而,将意识到的是,可以采用子卡5401的其他使用。例如,除了安全数据储存之外或与安全数据储存分开,还可以利用子卡5401实施安全网络、诸如数据压缩的功能和/或病毒检查。在一个实施例中,子卡5401通过网络为应用提供安全数据剖析器有效的通信。在这种实施例中,子卡5401可以被包括在密码系统100(图1)中。例如,子卡5401可以被安装在用户系统105、卖方系统120、或其任何适当的组合中,以使用户系统105与卖方系统120之间的安全通信成为可能。在另一个实施例中,子卡5401提供安全数据剖析器有效的云储存。在这种实施例中,子卡5401可以被包括在下列系统中:系统4200(图42)、系统4300(图43)、系统4500(图45)、在图44中示出的云计算安全性解决方案、用于使用图46中示出的安全数据剖析器保护网络访问的系统、用于保护对图47中示出的高性能计算资源的访问的系统、使安全数据剖析器与图49和图50中示出的管理程序器集成的系统、用于保护图51中示出的OFDM通信信道的系统和用于保护在图52中示出的电力网的系统。例如,子卡5401可以提供下列功能:安全数据剖析器4210、安全数据剖析器4310、安全数据剖析器4410、安全数据剖析器4510、安全数据剖析器4610、安全数据剖析器4710、安全数据剖析器4930、安全数据剖析器5030、安全数据剖析器5120、安全数据剖析器5220、管理程序器4920、管理程序器5020、或如本文描述的任何适当的功能。从下面的描述,其他使用应该是清楚的。如下详述,对于安全数据储存,无论是网络链路和/或储存链路,都可以在通过链路传送之前对相对大量的数据进行处理。这种处理可以包括多种功能,诸如加密、解密、认证、错误校验、增加的错误编码、数据剖析和/或增加的冗余,以及其他类型的数据处理。在一个实施例中,这些功能可以包括一种或多种类型的加密3018,加密3018可以在图30的安全数据剖析器层3026处提供对数据的加密。在一个实施例中,这些功能可以包括与如图37所示的安全数据剖析器3706相关的一个或多个过程。例如,这些功能可以包括与安全数据剖析器3706相关的预加密过程3708、加密/变换过程3710、密钥安全过程3712、或剖析器/分配过程3714中的一个或多个。在一个实施例中,这些功能可以包括与关于图42-52描述的云计算相关的一个或多个过程。例如,这些功能可以包括与安全数据剖析器4210、安全数据剖析器4310、安全数据剖析器4410、安全数据剖析器4510、安全数据剖析器4610、安全数据剖析器4710、安全数据剖析器4930、安全数据剖析器5030、安全数据剖析器5120、安全数据剖析器5220、管理程序器4920、管理程序器5020或其任何适当的组合相关的一个或多个过程。这种数据处理可以是计算型的或母板资源密集的,因此将这种处理卸下(offload)给诸如RPU5320的其他硬件可以使诸如主机系统5400的主机系统操作更快。例如,应该意识到的是,通过尝试 完全用软件去做这种数据处理,通过不使通用计算机CPU5315处于停顿状态(tying up),使用RPU5320不仅可以加速这种数据处理,而且可以使母板资源空闲以用于其他任务。如下详述,提供加速器系统的实施例以增强吞吐量,同时给一个或多个母板资源减小负担。同样,出于清晰的目的,通过示例而非限制,将假设为了安全数据储存应用而执行数据处理操作。这种安全数据储存应用可以包括加密、解密、数据剖析和数据联系。然而,应该理解,所描述的加速器系统的实施例可以用于不同于安全数据储存的应用、以及其他形式的安全数据储存。在一个实施例中,子卡5401可以是快速外围组件互连(“PCIe”)卡,该卡经由PCIe总线与母板5310的CPU5315、或更具体的母板5310的主CPU接口。在一个实施例中,使用16-通道PCIe总线;不过,也可以使用其他大小和类型的总线。母板5310可以是具有与PCIe总线互连的南桥芯片(“南桥”)的服务器或工作站母板。这种南桥可以与北桥芯片(“北桥”)互连,其中这种北桥与主CPU和系统存储器互连。在其他服务器或工作站母板中,北桥可以被消除,并且南桥可以与主CPU直接通信。此夕卜,母板可以包括多于一个北桥和/或南桥,以及多于一个CPU。应该意识到,在任何这些系统架构中,在北桥和/或南桥中都只有有限量的带宽。此外,使例如主CPU与北桥和/或南桥互连的包括系统总线在内的一条或多条总线具有有限的带宽。使子卡5401与CPU5315接口的PCIe总线的带宽也是受限的资源。如下详述,子卡5401的使用可以保持对于这种卡是本地的大量高带宽数据流量,从而减少例如对主CPU、南桥、北桥和/或其他母板系统资源的负担。此外,应该意识到,子卡5401可以使用诸如PCIe的容易提供的接口或任何其他容易提供的接口,从而用于容易提供的服务器或工作站母板。图55描绘了加速器系统5500的一个不例性实施例的框图。加速器系统5500是一种数据处理系统。同时参考图54和55,进一步描述加速器系统5500。加速器系统5500可以位于子卡5401上,如上所述。加速器系统5500包括RPU5320、开关5402、网络接口 5410和收发器模块5420。出于清晰的目的,通过示例而非限制,下面描述加速器系统5500的这些组件的每个的示例性实施例。然而,将意识到,可以依据下面的描述使用这些和/或其他组件。即使子卡540 1被描述为具有RPU5320、开关5402、网络接口 5410和收发器模块5420,但是应该理解,在其他实施例中还可以使用片上系统(“SoC”),因为例如一片FPGA可以包括子卡5401的许多或全部资源。因此,子卡5401上的芯片数量可以大大减少。此夕卜,在又一个实施例中,子卡5401可以被插到CPU插座或总线插座而非诸如PCIe插座的外设插座中,或者加速器系统5500可以被直接安装在母板5310上。然而,出于清晰和非限制的目的,下面描述子卡5401实施例,即使还可以使用其他实施例。开关5402可以是具有多个端口的PCIe开关。这些端口可以被配置有多种不同数据宽度的任何一种并且可以用于将数据从任何一个端口移动到任何另一个端口,而不受母板5310的主CPU5315干预。这种PCIe开关的这种端口之一可以与诸如插座5303的连接器互连,当子卡5401被插入时其附连至母板5310上的PCIe总线。这种端口可以被称为总线体系(bus hierarchy)中的上游端口,因为这种端口是用于耦接至控制这种PCIe总线的主CPU5315,即,与其相关的这种端口或总线是在主机系统端上的。在图55中,标记为5511的块不例性描绘了这种上游端口。在一个实施例中,上游端口 5511可以是16通道端口的PCIe2代(“2代”)。开关5402的其他PCIe端口 5512可以被称为下游端口,因为这种其他端口 5512互连至总线体系中比这种上游端口 5511更加远离这种主CPU5315的设备。在一个实施例中,这种下游端口 5512每个都可以是8通道端口的PCIe2代。在这个示例性实施例中,示例性描绘了四个PCIe端口的开关5402 ;然而应该理解,在另一个实施例中可以使用最小限度的三个端口,其中只有一个PCIe下游端口 5512用于与PLD5501通信。PLD5501可以包括被耦接至开关5402的下游PCIe端口 5512的PCIe接口端口的硬宏或软核。应该理解,即使在本文中使用术语“上游”端口和“下游”端口,但是应该理解,两个类型的这种端口都是双向的。术语“硬宏” 一般指的是专用电路,而术语“软核” 一般指的是通过使用配置位流(configuration bitstream)在可编程逻辑中实例化的电路。母板5310的诸如CPU5315的主CPU可以枚举PCIe总线,即确定所有设备被连接至这种PCIe总线及其一些特性。在CPU5315已经获得这种信息后,包括命令和/或数据的其他信息可以被传送给被连接至这种PCIe总线的任何这种设备,或来自被连接至这种PCIe总线的任何这种设备。此外,开关5402可以包括对等路由,例如将数据通过开关5402从一个下游设备路由至另一个下游设备,而不必去通过CPU5315。在一个实施例中,来自加利福尼亚的金山湾的PLX技术公司的PEX8648开关设备被用作PCIe开关5402 ;然而,应该意识至IJ,这个或另一个类似的设备都可以同样被使用。诸如RPU5320的加速器可以包括可编程逻辑器件5501,诸如现场可编程门阵列(“FPGA”)或具有现场可编程逻辑的其他集成电路,用于通过用配置位流编程而实例化电路。这种配置位流可以是例如基于包的或基于帧的。然而,在其他实施例中,可以使用特殊应用综合处理器(“ASSP”)、专用集成电路(“ASIC”)、或具有可编程逻辑的任何其他集成电路(“1C”)来提供一个加速器。出于清晰的目的,通过示例而非限制,将假设可编程逻辑器件5501是一个FPGA ;然而,在其他实施例中,可以使用其他集成电路,如指出的那样。PLD5501的使用允许一个或多个算法,诸如加密算法、解密算法、数据剖析算法和/或诸如用于安全数 据储存应用的数据关联算法,被实例化为经由现场可编程逻辑的硬件电路,作为一个应用功能块。使这些任务的任何一个或全部都在硬件而非软件中被执行的能力使数据处理加速(即使速度增加),诸如用于例如安全数据储存。然而,应该意识到,例如,在其他实施例中,诸如用于其他应用,这些或其他算法都可以被实例化在诸如FPGA的可编程逻辑构造的PLD5501中的全部或一部分中。在一个实施例中,这些算法可以包括一种或多种类型的加密3018,加密3018可以在图30的安全数据剖析层3026提供数据的安全加密。在一个实施例中,这些算法可以包括与如图37所示的安全数据剖析器3706相关的一个或多个过程。例如,这些算法可以包括与安全数据剖析器3706相关的预加密过程3708、加密/变换过程3710、密钥安全过程3712、或剖析器/分配过程3714中的一个或多个。在一个实施例中,这些算法可以包括与关于图42-52描述的云计算相关的一个或多个过程。例如,这些算法可以包括与安全数据剖析器4210、安全数据剖析器4310、安全数据剖析器4410、安全数据剖析器4510、安全数据剖析器4610、安全数据剖析器4710、安全数据剖析器4930、安全数据剖析器5030、安全数据剖析器5120、安全数据剖析器5220、管理程序器4920、管理程序器5020、或其任何适当的组合相关的一个或多个过程。此外,PLD5501可以具有扩展端口 5502。在一个实施例中,每个扩展端口 5502都具有四个通道。扩展端口 5502可以用于允许RPU5320连接到一个或多个其他的RPU5320,从而使它们能够共享大型处理任务。此外或可选地,扩展端口 5502可以被用作给RPU5320增加附加功能的一种方式。RPU5320可以进一步包括储存存储器5503、非易失性储存存储器5504、代码可执行存储器5505和控制器5506。控制器5506可以是复杂可编程逻辑器件(“CPLD”)。非易失性储存存储器5504可以例如是闪存存储器的形式或EPROM的形式。代码可执行存储器5505可以例如是NOR闪存或SRAM。储存存储器5503可以例如是SRAM、DRAM或NAND闪存。关于RPU5320的其他细节可以在美国专利7,856,545和7,856,546中找到。出于清晰和非限制的目的,将假设储存存储器5503是DRAM,DRAM被外部耦接至在PLD5501中以可编程逻辑的形式实施的存储器接口。用于安全数据储存应用的DRAM的使用允许其中的任何数据一般被擦除一次电力就从这种DRAM被去除,因为DRAM是易失形式的存储器。
DRAM5503可以是多种类型DRAM中的任何一种,包括但不限于DDR、DDR2或DDR3DRAM。在一个实施例中,RPU5320具有用于DRAM5503的DDR3DRAM ;然而,也可以使用其他类型的DDR DRAM,以及其他类型的DRAM。在一个实施例中,来自加利福尼亚的圣何塞的Altera公司的Stratus IVEP4SGX230FPGA用于PLD5501。然而,应该理解,还可以使用诸如来自加利福尼亚的圣何塞的Xilinx公司的FPGA的其他FPGA。此外,应该理解,PCIe子卡5401包括具有DRAM的RPU5320, DRAM经由这种PLD5501的存储器控制器/接口( “存储器接口 ”)与FPGA互连。因此,DRAM5503是子卡5401或PLD5501的“本地”或“子系统”存储器。术语“本地”或“子系统”存储器用于在子卡5401上的存储器之间进行区分或被直接耦接至PLD5501,与包括但不限于系统存储器5316的主机系统中的存储器相对照。加速器系统5500的网络接口 5310被耦接至开关5402的另一个下游PCIe端口5512。网络接口 5310可以是网络接口芯片,其可以被称为“NIC”,然而不与网络接口卡相混淆。然而,在其他实施例中,可以使用网络接口卡而非网络接口芯片。网络接口 5310可以包括端口 5516。出于清晰和非限制的目的,将假设端口 5516是双向高速串行I/O端口。串行I/O端口 5516允许将数据传送到经由网络被耦接至子卡5401的设备或系统,或允许数据来自这些设备或系统。这种其他设备或系统可以远离与子卡5401相关的主机系统5400而定位。网络接口 5310可以包括一个或多个物理设备。尤其是,网络接口 5410的媒体访问控制(“MAC”)和物理层(“PHY”)功能可以驻留在单独的物理设备中。可选地,可以使用PLD5501的可编程逻辑实施网络接口 5410。然而,网络接口 5410的这种可编程逻辑实施方式使用PLD5501的可编程资源的可观的部分。网络接口 5310可以用于从主机系统的主CPU5315卸下与网络协议相关的处理,这些协议诸如传输控制协议/因特网协议(“TCP/IP”)、因特网小型计算机系统接口(“iSCSI”)、或以太网光纤信道(“FCoE”)。在一个实施例中,从加利福尼亚的金山湾的Chelsio获得的终止器4ASIC(Terminator4ASIC)被用于网络接口芯片。然而,在其他实施例中,还可以使用其他类似的网络接口芯片。例如可以从Broadcom公司获得其他网络接口
-H-* I I
心/T O收发器模块5420被耦接至网络接口 5410的串行I/O端口 5516。在这个示例性实施例中,有四个收发器模块5420;然而,在其他实施例中还可以使用比四个收发器模块5420更少或更多的收发器模块。在其他实施例中,关于与一个或多个最接近设备的通信,可以省略收发器模块5420,因为网络接口 5410可以与经由网络被耦接的一个或多个最接近设备直接通信;尤其是如果经由网络被耦接的这种一个或多个最接近设备相对靠近子卡5401时。在这个实施例中,使用增强的小型可插拔式(“SFP+”)收发器。SFP+收发器可用于许多不同的速度、协议和物理连接类型。在这个实施例中,收发器模块5420的端口 5515是lOGb/s端口,其可以用于10吉比特以太网或8Gb/s光纤信道连接;然而,在其他实施例中可以使用具有其他带宽的其他类型的收发器。收发器模块5420和网络接口 5410可以支持用于经由高速串行端口 5515的互连性的金属线或光缆。出于清晰的目的,在本文中未描述诸如电源、连接器、电容器和电阻器的子 卡5401的许多其他组件。图56描绘了用于图55的加速器系统5500的控制流的不例性实施例的框图。在图56中,主机系统5600包括经由PCIe总线5611被耦接至子卡5401的母板5310。箭头5601和5602示例性描绘了控制流的方向,控制流用于建立如下详述的设备间的通信。母板5310可以包括系统存储器5316、主CPU5315和诸如CPU或母板芯片集的南桥(“SB”)5605。PCIe总线5611使开关5402与南桥5605互连。PCIe总线5612使开关5402与PLD5501互连。PCIe总线5613使开关5402与网络接口 5410互连。因此,PLD5501和网络接口 5410、以及开关5402能够被CPU5315发现。开关5402、PLD5501和网络接口 5410显得象是对于CPU5315的三个单独的PCI设备。更具体地是,响应于CPU5315枚举PCIe总线5611至5613,CPU5315发现PCIe开关5402和显得象是三个下游设备的东西。这些三个下游设备中的两个与PLD5501中的两个PCIe端口相关,而这些三个下游设备中的另一个与网络接口 5410的PCIe端口相关。通过发现这种下游设备,CPU5315可以启动将数据传送至PLD5501和/或网络接口 5410,或传送来自PLD5501和/或网络接口 5410的数据。更具体地是,通过发现开关5402、PLD5501和网络接口 5410的PCIe端口,CPU5315可以配置这种设备并分配地址空间,诸如例如分别用于每个这种设备的物理地址空间。这种地址空间的分配允许CPU5315与开关5402、PLD5501和网络接口 5410通信,并且可以额外允许开关5402、PLD5501和网络接口5410相互之间通信,不由CPU5315或其他母板系统资源干涉。图57描绘了用于图55的加速器系统5500的“写”方向上的数据流的示例性实施例的框图。在图57中,CPU5315可以使存储在系统存储器5316中的任何大小的数据单元经由PCIe总线5611流动,以便被开关5402接收,然后这种数据单元可以从开关5402被传递以便经由PCIe总线5612被PLD5501接收,如一般由箭头5701指出的那样。应该意识到,数据不必一开始就被访问或从系统存储器5316读取,但是依据本文的描述,数据可以从主机系统5600的其他存储器或储存 器读取或可被主机系统5600访问。然而,出于清晰的目的,通过示例而非限制,将假设从系统存储器5316读取最初的数据单元。此外,出于清晰的目的而非限制,可以假设这种数据单元可以作为数据块被访问,即使还可以使用其他大小。这种数据单元可以通过PLD5501的计算功能进行处理。在用于安全数据储存的这个示例性实施例中,安全剖析器5700可以被用于这种计算功能。更具体地是,这种安全剖析器5700可以包括剖析块5710和恢复块5715。剖析块5710可以加密、剖析和/或分割数据,例如用于提供运出(outbound)流量。应该理解,在本文中被描述为提供剖析和分割功能的本发明的组件可以模块化地提供剖析功能、分割功能、或剖析和分割功能的任何适当的组合。可以使用根据关于图33、图35和图36描述的任何技术的安全数据剖析器的分散功能产生多份信息。在一个实施例中,剖析块5710可以计算与关于PLD5501讨论的算法相关的任何功能。类似于安全剖析器4210 (图42),剖析块5710可以加密和分割数据,使得不可辨认的数据将穿越主机系统5600的存储器或储存器,或被存储于其中,或可被主机系统5600访问。可被主机系统5600访问的下层硬件组件(例如服务器、储存设备、网络)可以在地理上被分配,以确保万一电力网故障、天气事件、或任何其他人为或自然事件时硬件资源的连续性。因此,即使可被主机系统5600访问的一些硬件组件遭受灾难性故障,被剖析块5710处理的数据仍旧可以被访问。恢复块5715可以恢复运入(inbound)流量,诸如使用安全剖析器5700的恢复功能恢复数据,例如以其原始形式来提供数据。在一个实施例中,可以根据关于图34描述的任何技术恢复原始数据的两个或更多个被剖析和分割的部分。
可以使用PLD5501的现场可编程逻辑全部或部分实例化安全剖析器5700。由安全剖析器5700执行的算法操作可以包括一个或多个算数操作或其他数据处理操作。因此例如,这种数据单元或其他信息可以被密码分割成任何大小的数据单元。这种密码分割的数据单元例如可以接着被存储在DRAM5503、或被耦接至PLD5501的其他子系统或本地存储器中,如一般由箭头5702指出的那样。应该理解,PLD5501可以具有硬宏或软核的存储器接口,以便从DRAM5503读写数据,其中这种存储器接口可被安全剖析器5700访问。然而PLD5501可以具有可以使用的内部存储器而非DRAM5503,只要这种内部存储器的数量对于诸如安全数据储存的应用是足够的。对用于传输DRAM5503内存储的被加密数据单元的网络接口 5410而言,可以由网络接口 5410使用其DMA控制器5750来启动直接存储器存取(“DMA”)操作。换言之,网络接口 5410的DMA控制器5750可以提供一个或多个指针或地址,以从DRAM5503读出被加密的数据单元,如下详述。应该理解,DMA控制器5750通过PCIe总线连接(bussing)和开关5402的对等路由、经由PLD5501的存储器接口被有效耦接至DRAM5503。为了经由PLD5501的存储器接口获得对DRAM5503的访问,这种DMA访问可以使用例如如上所述由CPU5315分配的地址,以提供一个读请求,这个读请求使用PCIe总线连接5613和5612以及PCIe开关5402的对等路由将开关5402打到(passes through) PLD5501。这种包括其存储器接口的读请求被PLD5501处理,以从DRAM5503读出被加密的数据单元。使用反向的上述路径将这种读取的被加密数据单元传回网络接口 5410,如一般由箭头503指出的那样。然后可以经由一个或多个收发器模块5420传输这种读取的数据单元。从而,应该意 识到,一旦最初的数据单元从母板5310被传递到子卡5401,来自这种数据单元的被处理数据就不需要通过诸如PCIe总线5611的主机系统总线被路由回去。因此,这种被处理数据不必拖累CPU5315或其他母板系统资源。换言之,这种数据单元的数据处理从CPU5315被卸下,并且这种被处理数据单元的后续移动不必通过系统总线传递、或拖累母板5310上其他操作的性能。尤其是,这避免了给系统PCIe总线5611、南桥5605、北桥和/或主CPU5315增加负担。在一个实施例中,RPU5320可以将冗余添加为剖析功能、即剖析块5710的一部分。在这种实施例中,RPU5320与网络接口 5410之间传递的数据量可以相当大,这是由于给起初从系统存储器5316传递到RPU5320的数据量(以便由剖析块5710进行这种处理)添加了冗余数据的缘故。应该意识到,在这种实施例中,母板资源未被必须处理这种添加的冗余数据、以及与其相关用于这种冗余的任何信息所煎熬。图58描绘了用于图55的加速器系统5500的在“读”方向上的数据流的一个示例性实施例的框图。在图58中,数据一般从网络接口 5410通过开关5402向PLD5501流动,以便被PLD5501的应用功能块处理。更具体地是,数据块可以经由一个或多个收发器模块5420被网络接口 5410接收,诸如用于例如反向处理。安全剖析器5700在图57和58中是相同的块。然而,在图58中,当在恢复模式中时,安全剖析器5700可以被视为一个安全的“恢复器”。恢复可以从一个应用到另一个应用而变化。因而,上述的安全数据储存恢复一般可以被视为提供分别代表原始数据单元或多个原始数据单元的数据单元或多个数据单元。
响应于由网络接口 5410的DMA控制器5750的DMA启动的写入,这种数据块可以被写入DRAM5503。这种DMA启动的写命令以及所接收的数据块沿着如一般由箭头5801指出的方向。例如,数据块可以从网络接口 5410经由PCIe总线5613至开关5402,并且这种数据块可以从开关5402经由PCIe总线5612被路由至PLD5501,用于DRAM5503。同样,可以使用如上所述的寻址的和对等路由,虽然在相反的数据流方向上。这种数据块可以被写ADRAM5503,并且这种数据块可以从DRAM5503被读出至诸如恢复块5715的恢复功能块,如一般由箭头5802指出的那样。恢复块5715可以完全或部分在PLD5501的现场可编程逻辑中被实例化。在一个实施例中,假设由网络接口获得的数据块被加密,则从存储器5503读入恢复块5715中的数据可以通过恢复块5715解密,如本文中别处描述的那样。例如,根据关于图34描述的任何技术,原始数据的两个或更多个被剖析和分割的部分可以从存储器5503被读入恢复块5715中并被恢复。所得的数据单元或多个数据单元可以在如一般由箭头5803指出的数据流方向上被提供给系统存储器5316。更具体地是,这种数据单元或多个数据单元可以从PLD5501经由PCIe总线5612被提供给开关5402,然后从开关5402经由PCIe总线5611被提供给南桥5605。这种数据单元或多个数据单元可以从南桥5605被提供给系统存储器5316。应该理解,经由PCIe总线5611传送的这种数据块或多个数据块可能已经关于安全数据储存应用被全部处理过。从而,母板5310资源当中的这种PCIe总线5611以及CPU5315在处理被网络接口 5410接收的这种数据单元或多个数据单元时不会增加负担。此外,应该意识到,每个这种数据单元都可以是最初从系统存储器5316发送的数据单元的精确副本,如上面参考图57描述的那样。图59描绘了传统储存驱动器架构5900的一个示例性实施例的流程图。出于清晰的目的,通过示例而非限制,下面的描述基于的是基于NT的操作系统,即MicrosoftWindows操作系统;然而,应该意识到,还可以使用其他类型的操作系统。此外,出于清晰的目的,通过示例而非限制,将假设驱动器 架构5900是用于储存驱动器堆栈,虽然也可以使用其他类型的驱动器堆栈。I/O请求包(“IRPs”)5901被一个或多个上层过滤驱动器(upper-filterdrivers) 5912获得。这种IRP可以由用户应用程序或在储存驱动器堆栈中更高的另一个驱动器提供。因此,用户应用程序或更高级别的驱动器可以将IRP提供给一个或多个上层过滤驱动器5912。这种IRP5901可以在被传递给如IRP5902的下一个较低级别驱动器之前,被一个或多个上层过滤驱动器5912更改。这种下一个较低级别驱动器可以是另一个储存过滤驱动器或可以是储存类驱动器,诸如储存类驱动器5913。应该理解,过滤驱动器可以监视下层设备的性能。储存类驱动器5913可以被配置成响应于这种一个或多个IRP5901而建立一个或多个SCSI请求块(“SRB”)5903。储存类驱动器5913可以将这种一个或多个SRB5903提供给一个或多个较低层的过滤驱动器5914。这种一个或多个较低层的过滤驱动器5914可以更改SRB5903以给储存端口驱动器5915提供SRB5904。储存端口驱动器5915可以响应于这种一个或多个SRB5904而提供总线专用命令、或可以进一步更改SRB5904以提供一个或多个其他的SRB。因此,储存端口驱动器5915可以输出总线专用命令或SRB705。
应该理解,不同于较低层的过滤驱动器5914,这种一个或多个上层过滤驱动器5912能够拦截被发送给诸如储存类驱动器5913的类驱动器的IRP5901,并且能够在将它们转送给下一个较低级别设备对象之前,改变这种IRP5901。这样,上层过滤驱动器5912能够拦截读写IRP并且变换这种读或写IRP的数据,以及定义附加的I/O控制代码(“IOCTL”),例如用于使用户应用程序供应密码或其他有关的信息。图60描绘了传统的设备对象(“D0”)产生流6000的一个示例性实施例的流程图。DO产生流6000是用于Windows驱动器系统;然而,也可以使用其他驱动器系统。可选地,在6001处,诸如由盘加密过滤驱动器可以产生盘加密过滤设备对象(“D0”)。分别在6002-1至6002-3处,盘分区设备对象(“TOO”)可以被产生为各个分区,即分区1、分区2和分区3。这种盘PDO可以由盘类驱动器产生。在6003处,这种盘类驱动器可以产生用于分区O的功能D0( “FD0”)。换言之,盘类驱动器为作为一个整体的盘产生FD0,为这种盘上的每个分区产生roo。在6004处,通过SCSI端口 /微型端口驱动器产生盘H)0,并且在808处,通过这种SCSI端口 /微型端口驱动器产生SCSI适配器FD0。可以产生的其他DO的示例包括在6005至6007处的那些D0。 更具体地是,在6005处,可以通过⑶ROM驱动器产生⑶R0MFD0 ;在6006处,可以通过⑶音频过滤驱动器产生⑶音频过滤DO ;并且在6007处,可以通过在6004和6008处产生DO的这种SCSI端口 /微型端口驱动器产生CD-ROM PDO0在6009处,可以通过PCI总线驱动器产生SCSI适配器roo。可选地在6010处,可以通过IEEE1394控制器驱动器产生用于IEEE1394控制器的D0。在6011处,可以通过在6009处采用的PCI总线驱动器产生1394适配器TOO,并且在6012处,这种PCI总线驱动器可以产生PCI总线FDO。图61描绘了传统包格式6100的一个不例性实施例的框图。包格式6100包括以太网头部 6101、IP 头部 6102、TCP 头部 6103、iSCSI 头部 6104、iSCSI 载荷(payload)或数据6105、循环冗余校验(“CRC”)位6106。从而,包格式6100是iSCSI包格式。应该意识到,图59至61提供了用于描述图65_77 —般背景。参考图62_64可以获得用于描述图65-77的一些图而附加的一般背景。更具体地是,图62描绘了传统超-V架构6200的框图,而图63描绘了用于储存模式的传统超-V架构6300的框图。同时参考图62和63,在Microsoft的超-V基于管理程序器的虚拟化架构6200和6300中,管理程序器或虚拟机监视器(“VMM”)6201 —般是允许多个操作系统或虚拟机同时在主机上运行的硬件虚拟化。这种硬件虚拟化用于支持母分区6202和子分区6203的隔离。应该理解,物理设备可以受控于现有的设备驱动器而不必通过使用这种管理程序器产生新的设备驱动器。虚拟化堆栈一般运行在母分区中并且有权直接访问硬件设备。这种母分区6202产生可以是一个或多个客人操作系统的主机的一个或多个子分区6203。子分区6203无权直接访问诸如盘储存器6204的硬件资源6205,但是可以从虚拟设备的角度虚拟查看这种资源。可以经由虚拟机总线(“VMBus”)6206间接请求虚拟设备。母分区6202表演(execute)虚拟化服务提供商(“VSP”)620,其连接至VMBus6206并且处理来自一个或多个子分区6203的设备访问请求。一般而言,VSP6207运行在母分区6202或拥有诸如盘储存器6204的硬件设备的其他分区内。VSP6207可以与设备驱动器通信,并担当用于提供硬件服务的多路复用器。子分区6203虚拟设备表演虚拟化服务客户(“VSC”)6208,其经由VMBus6206间接请求母分区6202中的一个或多个VSP6207。一般而言,VSC6208对服务进
行消费。每种设备类型都可以存在一个VSP/VSC对。可以给一种设备类型规定设备协议,但是一般操作系统不知道。Microsoft提供的VSP/VSC对包括用于储存、网络、视频输入和通用串行总线(“USB”)使用的对。如下详述,使用用于储存和联网的VSP/VSC对。由于图62和63的这种超-V架构和VSP/VSC对是众所周知的,因此出于清晰的目的在本文中不必详细描述它们。在一个实施例中,图62和63的超-V架构可以与安全数据剖析器集成。例如,图62和63的超-V架构可以与如关于图48-50描述的安全数据剖析器集成。图64描绘了传统VM服务器架构6400的一个示例性实施例的框图。更具体地是,VM服务器架构6400是用于从加利福尼亚的PaloAlto的VMware公司可以买到的Vmware服务器,其将物理服务器分区成多个虚拟机6401。—般而言,Vmware服务器6402是存在于操作系统(“OS”) 6403和虚拟机6401之间的一层。诸如Windows或Linux的OS运行在诸如服务器母板的硬件平台6404上。因此,Vmware服务器安装和运行成主机Windows或Linux操作系统之上的一种应用程序。薄的虚拟化层对物理服务器进行分区以允许多个虚拟机6401同时运行在这种单个物理服务器上。这种物理服务器的计算资源可以被看待为统一的资源池,其可以受控的方式被分配给这种虚拟机6401。Vmware服务器6402使每个虚拟机6401与它的主机和其他虚拟机6401隔离,如果组中的 另一个虚拟机6401碰到或经历如关于虚拟机4810(图48)描述的攻击,这会使每次操作虚拟机6401都不受影响。此外,数据不穿过虚拟机6401泄露,并且这种虚拟机6401的应用程序6405可以通过所配置的网络连接进行通信。Vmware服务器6402将虚拟机环境打包为一个文件集,其可以被复制、移动和/或拷贝。在一个实施例中,使用安全数据剖析器,虚拟机6401可以与一个或多个服务器或末端用户安全地通信。依据这个实施例,可以通过给用户提供对虚拟机图像的安全访问而给用户部署安全数据访问。这个实施例可以允许即刻要求的信息共享,同时确保数据的机密性和完整性。将这个背景铭记在心,其中的内核模式、驱动器堆栈和软件流的实施例的下列描述应该被更清楚地理解。图65描绘了用于图55的加速器系统5500的内核模式流6500的不例性实施例的框图/流程图。虚线6520指出硬件/软件分区。虚线6520可以指出诸如参考图56如上所述的PCIe总线5611的总线。上面的虚线6520是内核模式流6500。下面的虚线6520是代表图55的加速器系统5500的框图。应该理解,这种加速器系统5500的这个代表被简化,以便更清楚地理解内核模式流6500。IRP6511被类驱动器6501接收。诸如参考图54如上所述的CPU5315的通用处理器可以在应用程序模式中执行用户应用程序,使这种用户应用程序将诸如IRP6511的一个或多个IRP提供给内核模式中的类驱动器6501。
在内核模式流6500中,除了类驱动器6501之外,还有过滤驱动器6503、网络软件堆栈6505、网络微型端口驱动器6507和设备驱动器6509。设备驱动器6509可以遵守用于已知为Windows驱动器模式(“WDM”)的由Microsoft引入的设备驱动器的框架。在这种WDM框架内,存在包括类驱动器和微型端口驱动器的设备功能驱动器。另外在这种WDM框架内,存在总线驱动器和可选的过滤驱动器。上层级别过滤驱动器位于诸如类驱动器的用于设备的主要驱动器之上,而较低级别过滤驱动器位于这种类驱动器之下和总线驱动器之上。因此,过滤驱动器6503是较低级别过滤驱动器。应该理解,Microsoft不提供过滤驱动器6503和设备驱动器6509 ;然而,过滤驱动器6503和设备驱动器6509被写入以在Microsoft的WDM框架内工作。过滤驱动器6503和设备驱动器6509被写入以支持加速器系统5500。对照而言,Microsoft提供类驱动器6501和网络软件堆栈6505。此外,网络接口5410的独立硬件卖方(“IHV”)可以提供网络微型驱动器6507。从而出于清晰和非限制的目的,一般只如下详述过滤驱动器6503和设备驱动器6509的互工作即使出于清晰和非限制的目的,下面的描述是就WDM框架而言的,但是应该理解,其他驱动器模式也可以用于利用并非基于Windows的操作系统的操作系统进行操作。沿着那些思路,应该理解诸如Linux的操作系统可以具有与本文描述的WDM框架类似的软件组件。因此,过滤驱动器6503和设备驱动器6509可应用于不同于Windows的操作系统。此夕卜,可以将驱动器6503和6509实施为诸如在虚拟驱动器模式中的虚拟驱动器,因此可应用于虚拟操作系统。·同样,应该理解,出于清晰和非限制的目的,描述了安全数据储存应用,但是还可以使用涉及被加速数据处理的其他应用。所以即使描述了网络软件堆栈6505和网络微型端口驱动器6507,也应该理解,可以在其他应用中使用另一种类型的堆栈驱动器和/或另一种类型的微型驱动器。例如,如果储存设备被本地耦接,即不通过网络接口 5410耦接,则网络软件堆栈6505将是储存软件堆栈6505,而网络微型端口驱动器6507将是储存微型端口驱动器6507。然而,对于图65而言,出于清晰和非限制的目的,将假设网络接口用于与诸如云储存器的多个储存设备通信。对于这个安全数据储存应用,数据被加密并被冗余存储在多个位置中,从而它只可以由被认证用户恢复,但是如果一个或多个储存设备是不可操作的或变得不可操作,则这种数据仍旧可以被恢复。例如,在一些实施例中,安全数据储存应用可以类似于关于图42-45描述的云计算安全性解决方案进行操作。在这种实施例中,安全数据储存应用可以是能复原的,因为由安全数据剖析器提供的冗余(即需要比全部被分离的数据部分少的数据部分来重构原始数据)的缘故。关于这种安全数据储存应用的其他细节可以在上面引用的临时专利申请中找到。对于这个安全数据储存应用,当用户应用程序发出写或读命令时,诸如用于读写一个信息文件,它发出这种命令,就象这种数据文件被本地存储在储存设备上,储存设备诸如是作为这种用户应用程序的主机的主机系统的硬盘驱动器。因此,这种文件数据被加密、剖析、分割、存储在诸如多个硬盘驱动器的多个储存设备内和/或由诸如多个硬盘驱动器的多个储存设备重组,并且这种多个储存设备可以处于相对于执行这种用户应用程序的计算机系统远程的位置。即使使用的是硬盘驱动器的示例,也应该理解可以使用多种储存设备中的任何一种,它们中的许多都在本文中的别处被列出。对于数据文件的写命令,IRP1311可以包括载荷数据1360。类驱动器1301将响应于IRP1311的SRB1313传递给过滤驱动器1303。这种SRB可以包括用于这种写命令的命令和载荷指针。过滤驱动器1303将响应于IRP1311、或更具体地SRB1313而将命令1361提供给设备驱动器1309。可以是应用程序接口( “API”)命令的命令1361可以包括指向诸如系统存储器中的载荷数据的载荷数据1360的“系统”载荷指针。这种系统载荷指针指出主机系统相信这种数据文件、即载荷数据1360所位于的地址。过滤驱动器1303可以将这种API命令1361传递给设备驱动器1309,其中这种API命令1361包括指向载荷数据1360的系统载荷指针。与PLD301通信的设备驱动器1309响应于这种API命令1361而调用API,以响应于命令1361而获得和处理载荷数据1360。通过PLD301使用如一般由虚线1377和1378指出的这种系统载荷指针来获得这种载荷数据1360。可以通过PLD5501将这种载荷数据1360剖析、分割和/或分离成两个或更多个部或部分,并且这种部或部分可以被PLD5501加密,以便在本地DRAM5503中被存储为被剖析的载荷数据6510。一旦被剖析的载荷数据6510被写入本地DRAM5503,PLD5501就将完成信号的通知提供给设备驱动器6509,并且设备驱动器6509将这种完成信号6517提供给过滤驱动器6503。为了总结,IRP6511可以代表单个写或读命令。类驱动器6501可以将IRP6511传递给过滤驱动器6503作为SRB6513。可选地,IRP6511可以被过滤驱动器6503拦截。这种SRB6513包括这种单个的读或写命令,并且这种单个的读或写命令包括系统载荷指针。这种系统载荷指针指向或指出主机系统相信这种载荷被本地存储在哪里。继续代表单个写命令的IRP6511的示例,过滤驱动器6503利用载荷指针对大于一的正整数N产生多个写命令,即命令6515-1至6515-N(全的和单个的“命令6515”)。一般而言,这种多个命令6515从过滤驱动器6503被传递到网络软件堆栈6505,而网络软件堆栈6505将这种命令6515传递到网络微型端口驱动器6507。网络微型端口驱动器6507将这种命令6515提供给网络接口 5410。应该理解,在产生与命令6515相关的载荷指针过程中,过滤驱动器6503用本地载荷指针有效代替系统载荷指针,本地载荷指针用于指向本地DRAM5503,如一般由虚线6599指出的那样。这种本地载荷指针是在用于读取本地DRAM5503的读命令6515中。在这个示例应用中,网络接口 5410使用这种本地载荷指针来读出被剖析的载荷数据6510,即读出被加密的数据块。应该理解,对于这个安全盘储存应用,冗余信息可以被附于载荷数据6560,因此被剖析的载荷数据6510可以显著大于载荷数据6560。依据本发明,这种冗余信息可以被附于载荷数据6560,以允许使用比载荷数据6560的所有部分少的部分来恢复载荷数据6560,并且这种冗余数据可以被存储在被不同地远程定位的储存设备中。此外,如上所述,这种载荷数据6560,以及它的这种冗余数据,可以被剖析、分割和/或分离成较小的部或部分。当产生用于命令6515的本地载荷指针时,过滤驱动器6503负责(account for)每个命令中的载荷大小信息,因为这种指针必须在PLD5501处理之后负责载荷大小。应该进一步理解,在产生命令6515过程中,过滤驱动器6503负责使用由用户应用程序提供的地址信息将被剖析的载荷数据6510存储在多个储存设备中,一个或多个储存设备可以用于冗余。更具体地是,参考图535,在一个实施例中这种用户应用程序是RPU行政配置应用程序1504,并且这种用户应用程序为读和写都提供寻址信息。这种地址或指针可以在如下详述的一个或多个所产生的SRB中。网络接口 5310可以被耦接至网络1363,正如一般指出的那样,以便与这种多个储存设备通信。网络接口 5310可以是主机总线适配器/通信(“HBA/C0M”)芯片。因为网络接口 5410接收与命令6515相关的每个储存命令,命令6515已经使软件堆栈向下行进至到微型端口驱动器中,所以网络接口 5410执行DMA操作以使用命令6515中的本地载荷指针读取被剖析的载荷数据6510。这种取回的被剖析的载荷数据6510可以与这种储存命令中的命令信息组合,以提供诸如上述和下述的SRB的包,并且这种被组装的包可以通过网络被传送到多个储存设备。如果IRP6511是用于读操作,即读命令,则这种IRP6511将不包括载荷数据。用户应用程序可以发出这种读命令,即单个读命令,就象诸如数据文件的待读取数据位于诸如本地盘驱动器的本地储存设备上那样。IRP6511被提供给类驱动器6501,并且类驱动器6501将IRP6511传递给过滤驱动器6503作为SRB6513。可选地,IRP6511可以被过滤驱动器6503拦截,正如一般用虚线6573指出的那样。过滤驱动器6503响应于IRP6511或SRB6513产生多个读命令6515。这种读命令6515包括地址信息,用于取回在网络云中多个储存设备上存储的数据。这种命令6515通过网络软件堆栈6505被下传到网络微型端口驱动器6507。网络接口 5410从这种多个储存设备获得数据块,并且网络接口 5410宣布一个DMA命令,以便将这种数据块传递到DRAM5503,以便向其写入作为被剖析的载荷数据6510。在被剖析的载荷数据6510经由网络接口 5410被写回到本地DRAM5503中之后,PLD5501将完成信号的通知提供给设备驱动器6509,并且这种完成信号6517的通知被提供给过滤驱动器6503。过滤驱动器6503响应于IRP6511或SRB6513将读命令6561提供给设备驱动器6509。设备驱动器6509将读命令6561提供给PLD5501。响应于读命令6561,PLD5501反向处理被剖析的载荷数据6510,诸如解密数据然后使用安全剖析器5700的恢复功能来恢复数据,以将载荷数据6560提供为诸如起初被接收的单个数据文件或单个数据块。例如,可以根据关于图34描述的任何技术恢复数据。PLD5501响应于来自用户应用程序的这种IRP6511,将这种单个数据块作为载荷数据6560传送。在一个实施例中,PLD5501使用DMA传送到系统存储器5316中,以将载荷数据6560写入其中。PLD5501为过滤驱动器6503将完成信号6517的通知宣布给设备驱动器6509,以向系统存储器5316指出这种载荷数据6560的写入。响应于完成信号6517的通知,过滤驱动器6503给用户应用程序指出这种读请求已经被完成。从而,应该理解,所描述的这种安全数据储存应用可以关于用户应用程序透明地操作。换言之,用户应用程序可以发出读和写请求,就象请求操作在本地储存设备上被执行而不知道这种上述操作被执行用于提供例如被剖析的载荷数据6510。应该进一步意识到,因为剖析和/或冗余,被剖析的载荷数据6510可以显著大于载荷数据6560,因此通过网络接口 5410传送的数 据可以比载荷数据6560(即被用户应用程序看到的数据)容量显然更大。
此外,可以由PLD5501通过实例化在可编程逻辑中的一个或多个数据处理算法,以加速的方式处理本地临时存储或维持的数据,其中这种算法在电路中被有效复制。沿着那些思路,只有用于写操作或处理数据以恢复这种原始载荷数据6560以便于读操作的原始载荷数据6560通过系统PCIe总线5611被传送,诸如用于进出系统存储器5316。因此,在本文中如上所述的一个或多个母板系统资源上的数据操纵和/或数据处理负担被大大减少。这种负担减少可以增强主机系统的总操作效率。图66描绘了用于图65的内核模式流6500和图55的加速器系统5500的驱动器堆栈6600的一个不例性实施例的框图/流程图。在图66中,用户模式6610由内核模式6620勾画轮廓,内核模式6620由如PCIe总线5611指出的硬件环节勾画轮廓。从而,应该意识到,内核模式6620相应于图65的内核模式流6500。应用程序6601与类驱动器6501通信,而类驱动器6501与过滤驱动器6503通信。同样出于清晰和非限制的目的,使用安全数据储存应用的示例,从而过滤驱动器6503被指出为安全剖析器。这个安全剖析器可以提供基本类似于图57的安全剖析器5700的功能。过滤驱动器6503与设备驱动器6509和端口驱动器6605通信。端口驱动器6605与微型端口驱动器6607通信。端口驱动器6605和微型端口驱动器6607分别相应于软件堆栈6505和微型端口驱动器6507。微型端口驱动器6607与网络接口 5310通信,而设备驱动器6509与RPU5320通信。作为用户应用程序的应用程序6601与类驱动器6501通信。类驱动器6501与过滤驱动器6503通信。类驱动器6501可以将可以被称为“明码文本”的东西传递给过滤驱动器6503。过滤驱动器6503使控制路径与数据路径分离,如下详述。PCIe总线5611处在软件组件转变到硬件块的相应位置处。图55的加速器系统5500 一般由被耦接至开关5402的网络接口 5310代表,而开关5402被耦接至RPU5320。从而,RPU5320包括DRAM5503。开关 5402可以被视为点对点总线(“?2 总线”)。网络接口5310与RPU5320之间通过开关5402的通信一般可被视为只有数据的路径(data_only path)6663。过滤驱动器6503经由命令和数据路径6671与设备驱动器6509通信。设备驱动器6509经由命令和数据路径6672与RPU5320通信。命令和数据路径6671和6672可以被称为“明文”路径。对照而言,只有数据的路径6663是只有被加密数据的路径,即“明码文本”路径。RPU5320经由只有命令的路径(command-only path) 6682进一步与设备驱动器6509通信。设备驱动器6509经由只有命令的路径6681进一步与过滤驱动器6503通信。换言之,只有命令经由路径6681和6682被传递。只有命令的路径6681和6682是明文路径。此外,经由只有命令的路径6681和6682提供的命令被从单个命令剖析成多个命令,正如参考图65之前描述的那样。换言之,经由只有命令的路径6681和6682提供的命令可以被视为相应于存储在DRAM5503中的N个部或部分的“N份”。因此,过滤驱动器6503可以经由只有命令的路径6681为设备驱动器6509提供N份命令,并且设备驱动器6509可以将这种N份命令经由只有命令的路径6682传递给RPU5320。N份命令可以从过滤驱动器6503被传递到端口驱动器6605,如之前参考图65描述的那样。图67描绘了用于图66的驱动器堆栈6600和用于图55的加速器系统5500的软件流的一个示例性实施例的框图/流程图。在图67中,用户模式6610的应用程序6601被打破成四个单独的软件组件或应用程序6701至6704。网络应用程序6701允许用户应用程序使用加速器系统5500的设施通过网络传送数据。用户对文件I/O的请求6702允许用户应用程序使用加速器系统5500的设施将数据传送到一种储存媒体中。iSCSI启动器配置应用程序6703可对指派正确的储存媒体指派以使用、以及使用iSCSI储存协议启动数据传送负责。RPU管理者配置应用程序6704对建立和初始化过滤驱动器6503、设备驱动器6509和加速器系统5500的硬件负责。在内核模式6620中,类驱动器6501被打破成通过Microsoft提供的四部,即运输驱动器接口 /winsock内核(“TDI/WSK”)模块6711和将请求转送给文件系统的I/O管理器模块6712、处理和转送被更改的请求的文件系统驱动器模块6713和I/O管理器6714。一般而言,命令和数据通过网络被传送通过模块6711,而来往储存媒体的命令和数据通过模块6712和6713。用于配置和初始化iSCSI启动器的命令通过管理器6714。出于清晰和非限制的目的,不提供关于类驱动器6501的其他已知细节。来自类驱动器6501的命令和数据作为明文被提供给一个或多个过滤驱动器6503。分别经由路径6771和6772提供用于建立和初始化过滤驱动器6503和设备驱动器6509的命令。用于建立和初始化RPU5320的命令经由路径6772被提供给设备驱动器6509,以便于RPU5320经由PCIe总线5611使用命令和数据路径6672。一个或多个过滤驱动器6503用于使命令信息与数据分离,从而这种单独的信息类型可以通过软件和硬件采取单独路径,如上所述。一个或多个过滤驱动器6503经由只有命令的路径6681与端口驱动器6605通信。端口驱动器6605 —般可以被分离成Microsoft软件组件的两个软件堆栈,即,一个用于网络命令而另一个用于储存设备命令。用于网络命令的堆栈遵守TCP/IP协议,而用于储存设备命令的堆栈遵守SCSI协议。用于网络命令的端口驱动器6605包括TCP/IP模块6721、TCP卸下引擎总线6723和网络驱动器接口规范(“NDIS”)模块6725。用于储存命令的端口驱动器6605包括卷管理器6722、分区管理器6724和盘管理器6726。出于清晰和非限制的目的,不提供关于端口驱动器6605的其他已知细节。可以根据这种微型端口驱动器是否是用于网络接口还是储存设备接口、通过通信设备或储存设备的卖方供应的微型端口驱动器6607,同样可以象端口驱动器6605那样被分开。用于端口驱动器6605的网络命令的软件堆栈与微型端口驱动器6607的NDIS微型端口驱动器6731通信。更具体地是,NDIS微型端口驱动器6731与NDIS模块6725通信。NDIS微型端口驱动器6731用于管理诸如NIC的网络接口,包括通过这种NIC发送和接收数据。用于端口驱动器6605的储存设备命令的软件堆栈与微型端口驱动器6607的SCSI微型端口驱动器6732通信。SCSI微型端口驱动器或HBA驱动器6732管理用于SCSI命令、数据和处理的HBA。SCSI微型端口驱动器6732与盘管理器6726和1/0管理器6714通信。NDIS微型端口驱动器6731和SCSI微型端口驱动器6732都可以被用作由诸如NIC的网络接口的IHV供应。应该理解,微型端口驱动器6731和6732都与硬件网络接口设备通信。出于清晰和非限制的目的,不提供关于微型端口驱动器6607的其他已知细节。在图67中, 这种硬件网络接口设备依据命令是用于网络流量的还是用于储存流量的而被显示为单独的框。对于网络流量,NDIS微型端口驱动器6731与一个或多个COM设备6741通信。多种COM设备6741的任何一个都可以被NDIS微型端口驱动器6731管理。这种COM设备6741的示例包括但不限于以太网NIC、WiFi设备、WiMax设备、iWARP设备、WSD设备、RNDIS设备和TOE设备。对于储存流量,SCSI微型端口驱动器6732与一个或多个储存接口设备6740通信。多种储存接口设备6740的任何一个都可以被SCSI微型端口驱动器6732管理。储存接口设备6740的示例包括但不限于iSCSI设备、SCSI设备和FcoE设备。应该理解,单个IC可以用于提供网络接口和储存设备接口两者,它们覆盖每个这种接口的一个或多个协议。因此即使为一个或多个COM设备6741和一个或多个储存接口设备6740示例性描绘了两个单独的框,也可以在单个IC6773中实施这种两个单独的框。这种单个IC6773可以具有网络I/O接口 6772和储存I/O接口 6763。RPU5320的PLD5501可以包括用于与DRAM5503通信的DMA模块6750。同样,PLD5501与IC6773之间关于数据的通信是经由只有数据的路径6663。此外,如前面指出的那样,可能存在一些地址翻译或利用数据缓冲器重新映射SRB以指向DRAM5503,如一般由线6727指出的那样,其中线6727横跨端口驱动器6605和微型端口驱动器6607、并指向开关5402与DRAM5503之间的接口。此外,6727处的这种重新映射可以涉及明文逻辑单元数(“LUN”)和逻辑块寻址(“LBA”)SCSI参数的重新映射。
图68描绘了用于图55的加速器系统5500的储存区网络(〃SAN〃)6800的一个示例性实施例的框图。然而,在这个实施例中,DRAM5503被用作RAM盘。用户应用程序6801可以与文件系统6803和盘驱动器6804通信。出于清晰的目的,通过示例而非限制,将假设SCSI协议被使用;然而,也可以使用其他类型的储存协议。从而,盘驱动器6804可以是SCSI类驱动器。文件系统6803与盘驱动器6804通信。应该理解,文件系统6803和盘驱动器6804可以由Microsoft提供,而用户应用程序6801可以是任何兼容的用户应用程序。从而,出于清晰和非限制的目的,不描述用户应用程序6801、文件系统6803和盘驱动器6804。较低层的过滤驱动器6805与RAM盘设备驱动器6808、盘驱动器6804、SCSI设备驱动器6806和iSCSI设备驱动器6807通信。RAM盘设备驱动器6808另外与安全剖析器6809、iSCSI设备驱动器6807和安全性应用程序6802通信。安全剖析器6809与安全性应用程序6802和RPU5320通信。安全性应用程序6802可以是如参考图14和15之前描述的应用程序6601。安全剖析器6809可以提供基本类似于图57的安全剖析器5700的功能。较低层的过滤驱动器6805可以接收来自盘驱动器6804的SRB,如上所述。较低层的过滤驱动器6805可以监视驱动器6806至6808。SCSI设备驱动器6806可以使用SCSI协议与诸如一个或多个储存设备的本地硬件储存器6841通信。iSCSI设备驱动器6806可以与一个或多个储存接口设备6740通信,如参考图67之前描述的那样。一个或多个储存接口设备6740可以用于与诸如网络云中的一个或多个储存设备的一个或多个远程定位的硬件储存器6842通信。应该理解,设备驱动器6806和6807可以从储存设备的制造商处获得。通信中的安全剖析器6809、RAM盘设备驱动器6808和较低层的过滤驱动器6805可以被操作为参考过滤驱动器6503和设备驱动器6509之前面描述的那样,但是另外的DRAM5503的RAM盘操作一般象在RAM盘设备驱动器6808与DRAM5503之间延伸的虚线6871指出的那样。此外,RAM盘设备驱动器6808可以经由M-至-1/1-至-M( “M: 1/1:M”)SCSI命令总线6872与iSCSI设备驱动器6807通信。事实上,RAM盘设备驱动器6808被安全性应用程序6802配置为象本地RAM盘驱动器那样看待DRAM5503。因此,来自用户应用程序6801的读或写请求可以被提供给RAM盘设备驱动器6808以便写入DRAM5503。如上所述,这种读或写请求可以涉及加密、剖析、分害I]、解密、重组或恢复数据之中的一个或多个。因此例如,DRAM5503中的被剖析的载荷数据6510可以被提供给硬件储存器6841和/或硬件储存器6842,或这些数据可以从硬件储存器6841和/或硬件储存器6842获得,如一般由虚线6843和6844分别指出的那样。关于SAN6800的操作的其他细节在本文中之前被描述过,因此出于清晰和非限制的目的不再重复。图69-71描绘了用于基于管理程序器的虚拟化的网络I/O系统的各个示例性实施例的框图。在图69中,网络I/O系统6900是用于虚拟操作系统(“OS”)。管理OS层6901可以具有运行于其上的VM开关6902、过滤驱动器6904、微型端口驱动器6906和设备驱动器6905。管理0S6901代表母分区,如参考管理程序器虚拟化之前描述的那样。诸如来自Microsof的VM开关6902可以包括路由虚拟LAN(〃VLAN〃)过滤数据副本模块6903和诸如端口 1( “Pl〃)和端口 2( “P2〃)的多个端口。模块6903与诸如来自Microsof的VM总线模块6940的VM总线6942和6941通信。VM总线模块6940可以被VM开关6902使用,以便使用由模块6903提供的VLAN标签(tagging)在诸如网络虚拟机6965的不同VM网络块之间切换。多个网络虚拟机6965,即在这个示例性实施例中的128个网络虚拟机VMl至VM128,被耦接至VM总线模块6940的VM总线连接。诸如VMl的每个网络虚拟机都包括各自的TCP/IP模块6913和各自的VM网络接口 (例如“NIC1”用于VMl而“NIC128”用于VM128)。VM开关6902 、VM总线模块6940和网络虚拟机是已知的,因此在本文中不必详细描述。应该理解,128个网络虚拟机已经切换成访问两条VM总线,即VM总线6941和6942,以便分别访问端口 Pl和P2。过滤驱动器6904是虚拟化的图65的过滤驱动器6503,而设备驱动器6905是虚拟化的图65的设备驱动器6509。微型端口驱动器6906是虚拟化的诸如图66的微型端口驱动器6607的网络微型端口驱动器。如一般由线6950指出的那样,过滤驱动器6904与模块6903通信,而过滤驱动器与设备驱动器6905通信。此外,如一般由线6950指出的那样,设备驱动器6905与RPU5320的队列6922通信。因此,命令和数据可以被传递给模块6903、或从队列6922传递给模块6903。RPU5320中可以具有一个或多个加密和解密(“密码”)引擎6921,包括但不限于例示于其中的被耦接至队列6922的可编程逻辑。密码引擎6921可以有利地执行诸如关于图1-8公开的那些密码功能。如一般由线6951指出的那样,RPU5320的队列6922与设备驱动器6905通信,设备驱动器6905与过滤驱动器6904通信。此外,如一般由线6951指出的那样,过滤驱动器6904与微型端口驱动器6906通信,而微型端口驱动器6906与网络接口 5310的队列6924通信。因此,命令和数据可以被传递到队列6922和6924,和来自队列6922 和 6924。
除了队列6924之外,网络接口 5310还包括信道开关6923和多个媒体访问控制器6925。出于清晰的目的,术语“媒体访问控制”和“媒介访问控制器”在本文中可交换使用,并且任一个或两个都可以被称为“MAC”。信道开关6923用于将队列6924耦接至MAC6925的选定MAC以便经由以太网1730通信。即使四个MAC6925被示例性描绘出,也可以使用更少或更多的MAC6925。对于安全数据储存应用而言,来往VM开关6902和队列6922的数据可以是不加密的;然而,从队列6922到队列6924的数据一般将被用于传输方向的一个或多个密码引擎6921加密。在接收方向上,从队列6924提供给队列6922的被加密数据将被一个或多个密码引擎6921解密以便提供给VM开关6902。在图70中,网络I/O系统7000类似于图69的网络I/O系统6900,因此出于清晰和非限制的目的,一般只描述两个系统之间的差别。在网络I/o系统7000中,模块6903被省略。VM开关6902具有与RPU5320的队列7022的Ql至Q128队列通信的端口 7055的Pl至P128端口。因此,端口 7055相应于网络虚拟机6965,并且端口 7055相应于队列7022。此外,队列7022相应于队列7024。端口 7055通过过滤驱动器6904和设备驱动器6905与队列7022通信。换言之,端口 7055通过128条路径与过滤驱动器6904通信,过滤驱动器6904通过128条路径与设备驱动器6905通信,而设备驱动器6905通过128条路径与队列7022通信。RPU5320包括多路复用电路7021,以便有选择地将一个或多个密码引擎6921耦接至队列7022的选定队列。队列7022通过设备驱动器6905和微型端口驱动器6906分别与网络接口 5310的队列7024通信。更具体地是,队列7022的Ql至Q128通过128条路径与设备驱动器6905通信;设备驱动器6905通过128条路径与微型端口驱动器6906通信;而微型端口驱动器6906通过128条路径与队列7024通信。网络接口 5310包括队列7024的Ql至Q128队列。队列7024之中的一个或多个经由信道开关6923被有选择地耦接至MAC6925的MAC。在图71中,网络I/O系统7100类似于图70的网络I/O系统7000,因此出于清晰和非限制的目的,一般只描述两个系统之间的差别。在网络I/o系统7100中,VM开关6902被具有端口 PO的VM监视器7102代替。此外,VM监视器6902被省略,并且端口 7055直接运行在管理0S6901上,并且不通过经由VM开关的开关访问。从而,VM总线模块7140可以具有用于分别将每个端口 7055虚拟地耦接至每个虚拟机6965的各信道。VM监视器7102经由端口 PO与过滤驱动器6904通信,以便监视这种驱动器。应该理解,在系统6900至7100的每个中,密码引擎6921对来往联网VM6965的、或更具体地是来往目标联网VM6965的所有数据流量进行加密和解密。此外,即使128个VM的示例被使用,也应该理解还可以使用更少或更多的联网VM6965。图72描绘了虚拟机制品(“VMWare”)储存器和网络接口堆栈7200的示例性实施例的框图。堆栈 7200 包括 VM7201-1 至 7201-4,VMWare VM 监视器 7210、VM7202 和 VM7203。堆栈7200使用单根I/O虚拟化。每个VM7201-1至 7201-4分别包括RPU NIC过滤驱动器7211、RPU储存过滤驱动器7212、NIC开关驱动器7213和SCSI开关驱动器7214。SCSI开关驱动器7214与VMWareVM监视器7210通信。VM7201-3的NIC开关驱动器7213与VMWare VM监视器7210通信。VM7202 包括 PCIe RPU SR 安全剖析器 7221 和 PCIe SR NIC7222。VM7203 包括无SR 的 PCIe RPU 安全剖析器 7223 和无 SR 的 PCIe SCSI HBA7224。VM7202 和 7203 与 VMWareVM监视器7210通信。VM7201-2和7201-4的NIC开关驱动器7213与SCSI HBA7224通信。VM7201-2和7201-4的RPU NIC过滤驱动器7211与安全剖析器2023通信。在一个实施例中,PCIe RPU SR安全剖析器7221和PCIeRPU安全剖析器7223可以提供与图49的安全数据剖析器4930基本相同的功能。VM7201-1 和 7201-3 的 NIC 开关驱动器 7213 与 NIC7222 通信。VM7201-1 和 7201-3的RPU NIC过滤驱动器7211与安全剖析器7223通信。
RPU NIC过滤驱动器7211和RPU储存过滤驱动器7212被添加给VM7201-1至7201-4,其中与这种驱动器7211和7212分开的这种VM7201-1至7201-4从VMWare公司可获得。安全剖析器7221和7223分别被添加给VM7202和7203,其中与这种剖析器7221和7223分开的这种VM7202和7203从VMWare公司可获得。VMWare VM监视器7210从VMWare公司可获得。驱动器7213和7214、以及NIC7222和SCSI HBA7224,从相关的NIC和/或SCSI接口的卖方或制造商可获得。驱动器7211和7212、以及安全剖析器7221和7223可以是在VMware服务器环境中使用的图65的虚拟化的过滤驱动器6503和设备驱动器6509。图73描绘了通过过滤驱动器流7300写入的一个示例性实施例的流程图。过滤驱动器流7300可以用于图65的过滤驱动器6503。由于过滤驱动器6503与类驱动器6501和设备驱动器6509通信,因此那些驱动器在下面对过滤驱动器流7300的描述中被提及。出于清晰和非限制的目的,同时参考图57、65和73进一步描述过滤驱动器流7300。在7301处,一个或多个SRB由诸如储存类驱动器6501的储存类驱动器提供。出于清晰的目的,通过示例而非限制,将假设单个SRB被处理,虽然多个SRB可以被逐一处理。在7302处,这种SRB被询问,以确定它是否用于一个写命令。出于清晰的目的,通过示例而非限制,将假设SCSI协议被使用,即使在其他实施例中可以使用其他协议。因此,例如,在7302处,SRB被询问,以确定它是否是一个SCSI写命令。如果在7302处确定这种SRB不是一个SCSI写命令,则在7303处确定这种SRB是否是一个SCSI读命令。如果在7303确定这种SRB是用于一个SCSI读命令,则对这种SCSI读命令的处理参考通过图22的过滤驱动器流7400的读取进行描述。然而,如果在7303处确定这种SRB不是一个SCSI读命令,则在7328处这种SRB被提供给一个或多个较低阶的过滤(“较低的过滤器”)驱动器。然而,如果在7302处确定这种SRB是用于一个SCSI写命令,则在7304处封套结构(envelope structure)被分配用于这种SRB。在7305处,这种封套被链接至由存储器映射的适配器DRAM分配的这种SCSI写SRB。在7306处,这种写SRB被入列,即被添加到队列。在7307处,为每个SRB初始化输出缓冲器指针,并且从类驱动器6501获得的这种SRB的数据指针被传递为数据缓冲器指针。在7308处,从诸如DRAM5503的存储器映射的DRAM分配输出缓冲器。在7309处,MAC/摘要(digest)缓冲器被分配,并且MAC/摘要指针被初始化。在7310处,份步幅(share stride)被初始化。在这个示例实施例中,使用八份的步幅;然而,在其他实施例中,可以使用比八份更少或更多的份。
在7311处,加密密钥("encKey")、加密初始化向量("encIV")、信息分散算法密钥(“idaKey”) ,MAC模式和MAC密钥、以及MAC初始化向量被初始化。在7312处,对RPU5320的剖析数据调用由在7304处初始化或分配的封套结构或封套解决。在7313处,通过设备驱动器6509对RPU5320进行设备驱动器功能调用,以对这种数据执行数据加密和安全剖析操作。如之前本文中别处描述的那样,这种安全剖析操作可以包括将这种数据剖析和分割成任何大小的数据单元。同样,要理解,本发明的组件可以模块化地提供剖析功能、分割功能、或剖析和分割功能的任何适当的组合。例如,本发明的剖析和分割操作可以包括、但不限于,I)将数据份密码分割、分散并安全存储在多个位置中;2)将数据份加密、密码分割、分散和安全存储在多个位置中;3)加密、密码分割、加密每份,然后将数据份分散和安全存储在多个位置中; 和4)用与在第一步中使用的不同类型的加密来加密、密码分割、加密每份,然后将数据份分散并安全存储在多个位置中。在7315处,设备驱动器6509调用在7314处的应用编程接口(“API ”),以便为了这种安全剖析操作而与RPU5320通信。在7316处,这种安全剖析操作已经被RPU5320完成,设备驱动器6509将控制返回给过滤驱动器6503。在7317处,过滤驱动器6503接收RPU5320作为被完成的安全剖析操作的指示并且对来自这种安全剖析操作的结果进行更新,这种封套结构在7304处被分配。在7319处,确定MAC认证是否成功。如果在7319处确定MAC认证不成功,则过滤驱动器流7300在7318处提供错误状态(“出现错误”)。然而,如果在7319处确定MAC认证成功,则在7320处为了与在7317处更新的这种封套匹配的封套而搜素SRB队列。在7321处,确定从7320处的这种搜索获得的封套是否与在7317处更新的这种封套匹配。如果这种封套不匹配,如在7321处确定的那样,则在7320处的这种搜索重新开始,直到匹配的封套被定位。然而,如果匹配的封套如在7321处确定的那样被定位,则在7322处含有SRB的匹配封套从在7320处搜索到的这种SRB队列被出列。在7323处,为被安全剖析的数据份的每份分别解决许多新SRB的命令被宣称。出于清晰的目的,通过示例而非限制,将假设存在八份。然而,在其他实施例中,可以使用比八份更少或更多的份。在7324处,为每份构造一个新SRB。对为每份的SRB的构造而言,当前的SRB路径标识符,即从由储存类驱动器6501提供的这种SRB获得的路径标识符,被设置成等于一份(“新”)SRB路径标识符(“DrcSrb->PathId=SRB->PathId”),并且当前的SRB目标标识符被设置成等于新SRB目标标识符。此外,对于这个构造,当前的SRB LUN被设置成等于新SRB LUN。这种新构造的SRB的数据缓冲器指针被设置成等于由份数(例如份数8中之I)索引的这种封套结构的输出数据缓冲器指针。在7325处,确定份数值或份数索引已经达到8,即少于八。如果在7325处确定份数少于八,则在7323处合成的另一份SRB开始在7324处另一份SRB的后续构成。然而,如果在7325处确定份数索引至少为八,则在7326处8个新构造的份SRB,被发送给一个或多个较低层的过滤驱动器,以便在7328处接收。在另一个实施例中,在7326处可以发送比八个新SCSI写命令更少或更多的命令,因为可以构造更少或更多份SRB。此外,在7326处,当这种写命令已经完成时,DRAM存储器5503可以被清除或做成可用的。换言之,具有这种被分别存储的八个SRB的这种输出缓冲器可以被指出为可用于重新使用。
图74描绘了通过过滤驱动器流7400读取的一个示例性实施例的流程图。过滤驱动器流7400可以用于图65的过滤驱动器6503。因为过滤驱动器6503与类驱动器6501和设备驱动器6509通信,所以在过滤驱动器流7400下面的描述中提及到那些驱动器。出于清晰和非限制的目的,同时参考图58、65和73进一步描述过滤驱动器流7400。在7401处,一个或多个SRB由诸如类驱动器6501的储存类驱动器提供。出于清晰的目的,通过示例而非限制,将假设单个SRB被处理,即使可以逐一处理多个SRB。在7402处,这种SRB被询问以确定它是否用于SCSI读命令。出于清晰的目的,通过示例而非限制,将假设SCSI协议被使用,即使在其他实施例中可以使用其他协议。因此,例如,在7402处SRB被询问以确定它是否用于SCSI写命令。如果这种SRB是用于SCSI写命令,如在7402处确定的那样,则这种命令如之前参考过滤驱动器流7300描述的那样被处理。然而,如果在7402处确定这种SRB并非用于SCSI写命令,则在7403处确定这种SRB是否用于SCSI写命令。如果在7403处确定这种SRB并非用于SCSI读命令,则在7410处这种SRB被下传到下一个较低层的过滤驱动器。然而,如果在7403处确定这种SRB是用于SCSI读命令,则份数被初始化, 诸如在7404处等于零。在7406处,确定这种份数是否小于八。同样,应该理解在其他实施例中,这种份数可以小于或大于八。如果这种份数至少为八,如在7406处确定的那样,则在7405处八个新SCSI读命令被发送给下一个较低层的过滤驱动器,以便在7410处被接收。在其他实施例中,在7405处发送的新SCSI读命令的数量可以比相应于份数的八个更少或更多。应该理解,每份都可以与任何大小的数据单元相关,并且多份可以与任何大小的数据单元相关,其中这种数据单元以及从单个数据集被剖析和分割成两个或更多个数据部分或份,如之前在本文中别处描述的那样。然而,如果在7406处确定份数小于八,则在7407处存储器映射的DRAM5503被分配给通过份数索引的份。在7408处,用于这种被索引份的SRB被构造。对用于份的SRB的构造而言,当前的SRB路径标识符,即从储存类驱动器6501提供的这种SRB获得的路径标识符,被设置成等于一份(“新”)SRB路径标识符(“DrcSrb->PathId=SRB->PathId”),并且当前的SRB目标标识符被设置成等于新SRB目标标识符。此外,对于这个构造,当前的SRBLUN被设置成等于新SRB LUN。这种新构造的SRB被传递给数据缓冲器,其中这种数据缓冲器是作为在7407处分配的地址空间或DRAM5503的一部分。换言之,份具有它自己的数据缓冲器或缓冲器地址空间,以便存储它的SRB,如由它的份数(例如份数8中之I)索引的那样。在7409处,为份解决新SCSI读命令。在这种合成之后,在7406处再次确定份数索引是否小于八。这个循环继续直到在7406处确定份数至少为八。在这个示例实施例中,这个循环继续直到八份SRB都已经被构造。换言之,在这个循环完成之后,存在分别被分配数据缓冲器、由I至8分别索引的八份SRB,并且每份SRB都具有相关的SCSI读命令。如果在7406处确定份数至少为八,则在7405处如上所述解决的这种SCSI读命令在7210处被发送到下一个较低层的过滤驱动器。在7411处,对这种份的SCSI读的控制从这种一个或多个较低层的过滤驱动器被返回到过滤驱动器6503。应该意识到,这种一个或多个较低层的过滤驱动器7410可以用于一个或多个储存设备,如上所述。在7412处,对份数进行SCSI读完成索引通过使用一个或多个较低层的过滤驱动器7410读取用于每份的份数而进行更新。在7413处,确定这种SCSI读完成索引是否小于八。如果在7413处,确定这种SCSI读完成索引小于八,则在7414处不做任何事,宁愿过滤驱动器流7400处于等待状态,等待最后一个这种SCSI读的完成。然而,如果在7413处确定份数至少为八,则在7415处用于这种读份(readshares)的封套结构被分配。在7416处,在7415处分配的这种封套结构被链接至用于这种份的每份的这种读SRB。在7417处,这种读SRB被出列。在7418处,为每份SRB初始化输出缓冲器指针,以便被传递为数据缓冲器指针。在7419处,为在7407处分配的存储器映射的DRAM5503分配的每份而初始化用于输入缓冲器的指针。在7420处,MAC/摘要缓冲器被分配,并且MAC/摘要指针被初始化。在7421处,份步幅被初始化。在7422处,加密密钥、加密IV、信息分散算法(ida)密钥、MAC模式、MAC密钥和MAC IV都被初始化。在7423处,利用这种对被分配的和份SRB链接的封套的初始化解决对RPU5320的被恢复数据调用。在7424处,为了利用封套结构指针的参数来恢复RPU5320的恢复数据功能,通过过滤驱动器6503进行对设备驱动器6509的功能调用。在7426处,设备驱动器6509调用7425处的API,以便与DRAM5503的恢复器(restorer)通信,用于将被加密数据恢复到单个不加密的数据集,诸如通过首先重组、然后对其中获得这种数据解密,来还原份SRB。在7427处,在7315处调用的这种恢复应用程序通过RPU5320完成,并且RPU5320完成的通知提供给设备驱动器6509。在一个实施例中,通过RPU5320的恢复器恢复的数据可以是不加密的。被剖析数据的每部分都可以按照任何令人期待的方式被唯一保护,只要数据可以被重组、重构、重新形成、解密到其原始形式或其他可用的形式。从而,恢复数据可以涉及使用于依据本文描述保护数据的任何数量的步骤反向。在7428处,从 设备驱动器6509到过滤驱动器6503的控制返回被提供为单个数据块,这个数据块被恢复。在7429处,通过对这种封套结构中的结果进行更新来记录由RPU5320完成的这种恢复,封套结构在7416处链接到读份SRB。在7430处,确定MAC认证是否成功。如果MAC认证在7430处不成功,则过滤驱动器流7400在7431处报错。然而,如果MAC认证在7430处成功,则在7432处SRB队列搜索与在7429处更新的这种封套匹配的封套。在7433处,确定从在7432处的这种SRB队列获得的封套是否与7429处的这种封套匹配。如果在7433处确定在这种封套之间不存在匹配,则搜索在7432处继续。这个循环继续,直到匹配被找到。然而,如果在7433处确定这种封套匹配,则从在7432处的这种SRB队列获得的匹配封套从在7435处的这种SRB队列被出列。在7436处,SCSI读控制从过滤驱动器6503被返回到在7401处的类驱动器6501。图75描绘了通过过滤驱动器流7500剖析数据的一个示例性实施例的流程图。出于清晰和非限制的目的,同时参考图57、65和73进一步描述过滤驱动器流7400。在7314处,用于RPU5320的API如上所述被调用。在7502处,获得自旋锁(spinlock)。在7503处序列标识符被增加,诸如增加一。这种序列标识符可以为过滤驱动器流7500的每次调用而被增加,因此这种序列标识符可以被用作标签,以便于后续参考。在7504处,封套为了如在7503处被增加的序列标识符而被出列。
在7505处,加密命令被建立。这种建立包括下列每个的初始化:份数、加密模式、ida模式、MAC模式、加密密钥、加密IV、ida密钥和MAC密钥。在7506处,确定返回状态是否成功。如果返回状态失败,如在7506处确定的那样,则设备驱动器流在7507处报错,并且这种错误状态在7527处被指示为流水线(pipeline)状态。在7528处,确定包队列是否已经溢出。如果在7528处确定包队列已经溢出,则在7529处宣布出错。如果在7529处宣布出错或在7528处确定包队列尚未溢出之后,则在7530处确定这种流水线是否是满的。如果在7530处确定这种流水线是满的,则在7531处宣布出错。在7531处宣布出错或在7530处确定流水线未满之后,在7502处获得的自旋锁在7532处被释放。在7316处,控制被返回给过滤驱动器6503,如上所述。然而,如果在7506处确定返回状态成功,则在7505处建立的这种加密命令在7508处被发送。在7509处,确定返回状态是否成功。如果在7509处确定返回状态不成功,则在7510处宣布出错并且处理继续,如上所述从7527开始。然而,如果在7509处确定返回状态成功,则在7511处使DMA状态无效。此外,在7511处,使中断无效。在7512处,确定数据长度是否大于被允许的最大长度或等于零。如果在7512处确定数据长度大于被允许的最大长度或等于零,则在7513处宣布出错并且处理继续,如上所述从7527开始。然而,如果在7512处确定数据长度既不大于被允许的最大长度又不等于零,则在7514处确定份数是否不 等于八。同样,份数,诸如数据部分的数量,在其他实施例中可以小于或大于八。如果在7514处确定份数不等于八,则在7515处宣布出错状态并且处理继续,如上所述从7527开始。 然而,如果在7514处确定份数不等于八,则在7516处发送一个命令,用于建立RPU5320,以在这种数据已经被剖析后读取机密或加密的数据。在7517处,确定返回状态是否成功。如果在7517处确定返回状态不成功,则在7520处宣布出错并且处理继续,如上所述从7527开始。然而,如果在7517处确定返回状态成功,则在7518处一个命令被发送给RPU5320,以通过RPU5320将读取份SRB的数据写为明文。在7520处,确定返回状态是否成功。如果在7520处确定返回状态不成功,则在7521处宣布出错并且处理继续,如上所述从7527开始。然而,如果在7520处确定返回状态成功,则在7522处DMA状态指示被激活,并且中断产生被激活。在7523处,一个命令被发送,以读取RPU5320的消息摘要,以便写入摘要存储器缓冲器。这种摘要存储器缓冲器可以在系统存储器中,诸如系统存储器5316,其可以与消息信号中断("MSI")相关。在7524处,确定返回状态是否成功,如果在7524处确定返回状态不成功,则在7525处宣布出错并且处理继续,如上所述从7527开始。然而,如果在7524处确定返回状态成功,则在7505处建立的加密和MAC密钥在7526处被删除。这种删除之后,处理继续,如上所述从7527开始。图76描绘了通过设备驱动器流7600恢复数据的一个示例性实施例的流程图。出于清晰和非限制的目的,同时参考图58、65和73进一步描述过滤驱动器流7400。在7425处,设备驱动器6509调用如上所述用于RPU5320的数据恢复API。操作7602至7611分别相应于图75的操作7502至7511,除了并非在7508处发送加密命令,在7608处发送解密命令。从而,出于清晰的目的,不重复操作7602至7611的其余描述。在7611处使DMA状态失效和使中断失效之后,在7612处一个命令被发送给RPU5320以读取数据,其中这种数据是明文,因为在7608处已经被解密。在7613处,确定返回状态是否成功。如果在7613处确定返回状态不成功,则在7614处宣布出错,并且在7627处提供对流水线状态的指示。由于在7627至2432处的操作分别相应于图23的操作7527至7532,因此出于清晰的目的不重复对那些操作的描述。然而,如果在7613处,确定返回状态成功,则在7615处确定数据长度是否大于允许的最大份长度或等于零。如之前参考图75描述的那样,最大数据长度用于被剖析的单个数据集。最大份程度用于每份,诸如这种单个数据块的子集的最大长度。如果在7615处确定数据长度大于允许的最大份长度或等于零,则在7616处宣布出错并且处理继续从7627开始。然而,如果在7615处确定数据长度既不大于允许的最大份长度又不等于零,则在7617处确定份数是否不等于八。在7617和7618处的操作分别相应于图23的7514和7515处的操作,因此出于清晰的目的不重复对这些操作的描述。如果在7617处确定份数不等于八,则在7619处一个命令被发送给RPU5320,以将被分割和剖析的份写为单个数据块。在7620处确定返回状态是否成功。操作7620至7626分别相应于图75的操作7520至7526,除了在7622处激活DMA状态指示和激活中断产生是用于DMA写操作,以便写入单个数据块。对照而言,在图75的7522处激活DMA状态指示和激活中断产生是用于DMA读操作,以便输出要写入储存设备的被剖析的被加密份,如在本文中别处所描述的那样。此外,应该理解,在7626处删除的密钥在7605处为设备驱动器流7600建立。出于清晰的目的不重复对操作7620至7626的其余描述。图77描绘了设备驱动器中断服务例程(〃ISR〃)和延迟过程调用(〃DPC〃)流7700的一个示例性实施例的流程图。同时参考图57、58、65和77描述图77。
·
在7701处,用于RPU5320的MSI中断服务例程(“RpuMsilsr”)被启动。在7702处,MSI中断被要求。在7703处,中断DPC被安排用于RPU5320。虚线2551 —般指出在7705处这种被安排的RPM3PC的开始。在7704处,对流7700的MS1-1SR部分7750的控制被返回给OS。应该理解,MS1-1SR部分7750处在比流7700的其余部分,即DPC部分更高的优先级。通过分离MS1-1SR和DPC部分,对这种MS1-1SR部分的控制能够被尽快返回给主机系统OS,同时允许DPC部分继续限制对这种主机系统的性能影响。在7705处,用于RPU5320的DPC被启动。在7706处,获得自旋锁。在7707处,为了数据的安全剖析而对数据进行处理,并且这种被处理的数据被写入,如在本文中别处描述的那样。在7708处,确定DMA状态是否具有有效的识别和序列号。换言之,虽然在这个实施例中DMA过程只是在某一时间的一笔事务,但是它能够使多个DMA命令排队。这样DMA能够无缝地处理DMA事务以减少经费。然而,排队的多个DMA命令的数量被限到最大数,并且在7708处确定这种最大数是否已经被达到。如果在7708处确定DMA状态有效,则在7709处确定是否存在排队的任何DMA中断。如果在7709处确定存在排队的任何DMA中断,则在7710处用于每个DMA中断序列标识符的每个封套都出列。在7711处,利用在7710处出列的每个封套、利用回调(callback)进行对安全剖析数据完成的功能调用。从7711,在7708处再次确定DMA状态是否有效。如果确定了在7708处DMA状态无效或在7709处排队中不存在DMA中断,则在7712处确定DMA命令条目是否少于或等于命令的最大数(例如“高水标”)。如果在7712处确定DMA命令条目少于或等于这种高水标,则在7713处流水线的满标志(full flag)被清除或留在清除状态中。然而,如果在7712处确定DMA命令条目大于这种高水标,则在7714处这种流水线满标志被设置或留在设置状态中。在如上所述分别在7714和7713处设置或清除了这种流水线满标志之后,在7715处,在7706处获得的自旋锁被释放。在7716处,获得另一个自旋锁。应该理解,在7706处获得的自旋锁用于数据剖析和加密部分;然而,在7716处获得的自旋锁用于数据解密恢复部分。在7717处,用于读取和恢复被安全剖析的数据的命令被启动。7718至7720处的操作相应于7708至7710处的操作,因此出于清晰的目的避免重复这种描述。在7720处出列之后,在7721处份数索引被初始化,诸如设置为零。在7722处,确定这种份数索引是否小于八。同样,应该理解在其他实施例中可以使用小于或大于八的份数。在7723处,来自RPU5320的恢复引擎的摘要被复制到封套摘要缓冲器,以便在其中将信息存储在份上。在7723处复制之后,在7722处再次确定份数索引是否小于八。从而,这个循环继续,直到来自RPU的恢复引擎的摘要被复制到封套摘要缓冲器,以便在其中将信息存储在读取的每份上。如果在7722处, 确定份数索引至少为八,则在7724处进行功能调用,以指出读数据已经被恢复的完成。这种功能调用可以包括利用出列的封套的回调。从7724,再次确定在7718处DMA状态是否有效。如果确定了在7718处DMA状态无效或在7719处排队中无DMA中断,则在7725处确定DMA命令条目是否少于或等于高水标。操作7725至7728分别相应于操作7712至7715,因此出于清晰的目的不重复对操作7725至7728的描述。在7726处获得的自旋锁在7728处被释放之后,流7700可以在7729处返回,诸如返回到调用它的主机系统OS。图78描绘了计算机系统7800的一个示例性实施例的框图。计算机系统7800可以包括编程计算机7810,编程计算机7810被耦接至诸如阴极射线管(“CRT”)显示器、等离子体显示器、液晶显示器(“LCD”)、投影仪的一个或多个显示设备7801,和诸如键盘和光标指点设备的一个或多个输入设备7806。还可以使用计算机系统其他已知的配置。编程计算机7810可以用已知的操作系统编程,已知的操作系统可以是Mac OS、Java虚拟机、Linux、Solaris、Unix或Windows操作系统,以及其他已知的平台。编程计算机7810包括中央处理单元(“CPU”) 7804、存储器7805和输入/输出(“I/O”)接口 7802。CPU7804可以是现有技术中已知的一类微处理器,诸如从例如IBM、Intel、ARM和AdvancedMicro Devices可以买到的那些。支持电路(未示出)可以包括快速缓冲存储、电源、时钟电路、数据寄存器等。存储器7805可以被直接耦接至CPU7804或通过I/O接口 7802耦接。操作系统的至少一部分可以被布置在存储器7805中。存储器7805可以包括下列的一个或多个:随机存取存储器、只读存储器、磁阻(magneto-resistive)读/写存储器、光学读/写存储器、快速缓冲存储器、磁性读/写存储器等,以及如下所述的非瞬时信号承载媒体。I/O接口 7802可以包括芯片集芯片、图形处理器和子卡,以及其他已知的电路。子卡的示例可以包括网络接口卡、显示器接口卡、调制解调器卡和/或通用串行总线(“USB”)接口卡。此外,I/O接口 7802可以包括如本文所述的子卡5301和67401。I/O接口 7802可以被耦接至传统键盘、网络、鼠标、显示打印机和适于接收和传输诸如数据文件等的数据的接口电路。编程计算机7810可以是服务器计算机或工作站计算机。因此,计算机7810可以经由诸如公司的内联网和/或因特网的传统网络基础设施被耦接至许多客户计算机、服务器计算机、或其任何组合,其中传统网络基础设施允许用于接口产生的分布式使用。存储器7805可以存储一个或多个程序或数据的全部或部分,以依据本文的一个或多个实施例在非瞬时机器可读媒介中实施过程,将过滤驱动器6503、设备驱动器6509、较低层的过滤驱动器6805、RAM盘设备驱动器6808、安全剖析器6809、过滤驱动器6904、设备驱动器6905、NIC过滤驱动器674011、储存过滤驱动器674012、安全剖析器7221、安全剖析器7223、过滤驱动器流7300、过滤驱动器流7400、设备驱动器流7500、设备驱动器流7600和/或ISR-DPC流7700提供为程序产品7820。此外,本领域技术人员将意识到,本文的一个或多个实施例可以被实施在硬件、软件、或硬件和软件的组合中。这种实施可以包括独立执行不同程序的许多处理器或处理器核、以及专用硬件或可编程硬件。程序产品7820的一个或多个程序、及其文档,可以定义本文的实施例的功能,并能够被含在多种非瞬时信号承载媒体上,诸如具有代码的计算机可读媒体,其包括、但不限于:(i)永久存储在不可写的储存媒体(例如在计算机内的只读存储器设备,诸如可由CD-ROM驱动器或DV D驱动器读取的CD-ROM或DVD-ROM盘)上的信息;或(ii)存储在可写的储存媒体(例如软盘驱动器内的软盘或硬盘驱动器或可读/写CD或可读/写DVD)上的可变信息。上述实施例具体包括从因特网和其他网络下载的信息。这种非瞬时信号承载媒体,当承载引导本文的功能的计算机可读指令时,代表本文的实施例。虽然上面描述了安全数据剖析器的一些应用,但是应该清楚地理解,本发明可以与任何网络应用集成,以便增加安全性、容错性、匿名、或上述的任何适当的组合。此外,鉴于本文的公开内容,其他组合、添加、替代和更改对本领域技术人员而言将是清楚的。
权利要求
1.一种安全数据储存系统,包含 总线; 加速器,其被耦接至所述总线,具有可编程逻辑器件(PLD),使应用功能块全部或部分实例化在所述PLD的可编程逻辑资源中;和 网络接口,其被耦接至储存网络,其中所述应用功能块操作成 由数据集产生至少两个数据部分; 将所述至少两个数据部分通过所述网络接口通信到所述储存网络;和将所述至少两个数据部分存储在所述储存网络内,其中通过从多个所述至少两个数据部分重组数据,所述数据集从至少多个所述至少两个数据部分能恢复。
2.根据权利要求I所述的系统,其中所述储存网络是云计算储存网络,其包括至少两个各自远程的储存设备。
3.根据权利要求2所述的系统,其中所述应用功能块进一步操作成产生虚拟机图像,其中所述虚拟机图像操作成访问所述云计算储存网络内的所述数据集。
4.根据权利要求3所述的系统,其中所述应用功能块进一步操作成将所述虚拟机图像传输到第二系统,其中所述第二系统操作成访问所述云计算储存网络内的所述数据集。
5.根据权利要求2所述的系统,其中所述云计算储存网络进一步包含至少一个能恢复的联网储存设备。
6.根据权利要求5所述的系统,其中所述第一系统进一步操作成由其他联网储存设备使存储在所述至少一个能恢复的联网储存设备上的数据部分重生。
7.根据权利要求I所述的系统,进一步包含 开关,其被耦接在所述总线与所述加速器之间以及所述加速器与所述网络接口之间; 存储器,其能被所述应用功能块经由所述加速器访问; 其中所述总线是主机系统端外围互连总线; 其中所述开关将所述数据集提供给所述外围互连总线和所述加速器,以及由所述外围互连总线和所述加速器提供所述数据集;和 其中所述开关将所述至少两个数据部分提供给所述存储器和所述网络接口,以及由所述存储器和所述网络接口提供所述至少两个数据部分。
8.根据权利要求7所述的系统,其中 所述开关被配置成控制所述加速器与所述网络接口之间的对等路由,以便通过所述网络接口从所述存储器取回所述至少两个数据部分;和 所述开关被进一步配置成控制所述网络接口与所述加速器之间的对等路由,以便通过所述网络接口将所述至少两个数据部分储存在所述存储器中。
9.根据权利要求7所述的系统,进一步包含至少一个发射器或收发器,其被耦接至所述网络接口,以便传输所述至少两个数据部分。
10.一种主机系统,其被耦接至根据权利要求9所述的数据处理系统,以便经由所述外围互连总线将命令和所述数据提供给所述开关。
11.根据权利要求10所述的主机系统,其中所述至少两个数据部分不经由所述外围互连总线传递到所述网络接口。
12.根据权利要求10所述的主机系统,其中所述网络接口包括直接存储器访问控制器,以从所述存储器读取所述至少两个数据部分和将所述至少两个数据部分写入所述存储器。
13.一种计算机系统,包含 通用处理器,用于在应用程序模式中执行用户应用程序和在内核模式中执行内核模式驱动器,其中所述内核模式驱动器包括类驱动器和过滤驱动器; 加速器系统,其经由第一总线被耦接至所述通用处理器; 其中所述类驱动器与所述用户应用程序通信以接收请求包,以便响应于所述请求包而提供请求块; 其中所述过滤驱动器与所述类驱动器通信以接收所述请求块; 其中所述请求块包括系统载荷指针和写命令或读命令之一,其中所述系统载荷指针指向存储在系统存储器中的数据集的第一位置;和 其中对于所述写命令,所述加速器系统的配置的可编程逻辑器件是用于 使用所述系统载荷指针从所述系统存储器取回所述数据集; 从所述数据集产生至少两个数据部分;和 将所述至少两个数据部分存储在所述加速器的本地存储器中,其中通过由所述多个所述至少两个数据部分重组数据,所述数据集从至少多个所述至少两个数据部分能恢复。
14.根据权利要求13所述的系统,其中 内核模式驱动器包括设备驱动器、堆栈驱动器和端口驱动器;和过滤驱动器响应于所述命令产生第一命令和第二命令,每个所述第一命令和所述第二命令都包括由所述过滤驱动器产生的本地载荷指针的相同集; 所述设备驱动器与所述过滤驱动器通信以接收所述系统载荷指针和所述第一命令;和所述设备驱动器与所述加速器系统通信以将所述第一命令和所述载荷指针提供给所述加速器系统。
15.根据权利要求14所述的系统,其中所述至少两个部分被存储在由所述第一命令的所述本地载荷指针指向的所述加速器的所述本地存储器中的位置。
16.根据权利要求14所述的系统,其中 所述堆栈驱动器与所述过滤驱动器通信以接收所述第二命令; 所述端口驱动器与所述堆栈驱动器通信以接收所述第二命令;和 所述加速器系统与所述端口驱动器通信以接收所述第二命令。
17.根据权利要求14所述的系统,其中 所述端口驱动器与所述加速器系统的网络接口通信; 所述网络接口使用所述第二命令的所述本地载荷指针被耦接至所述本地存储器,以传输所述至少两个数据部分,以便储存在被耦接至网络的储存设备中。
18.根据权利要求17所述的系统,其中所述网络是云计算储存网络,其包括至少两个各自远程的储存设备。
19.根据权利要求17所述的系统,其中对于读命令 所述网络接口响应于所述第二命令 从所述储存设备取回所述至少两个数据部分;和将所取回的至少两个数据部分存储在本地存储器中由所述第二命令的所述本地载荷指针指向的位置;和 所述可编程逻辑器件被配置成 从所述本地存储器中由所述第一命令的所述本地载荷指针指向的位置处取回所述至少两个数据部分; 响应于所述第一命令恢复所取回的至少两个数据部分以提供所述数据集。
20.一种用于处理数据的方法,包含 从主机系统将数据集和系统载荷指针提供给加速器系统; 在所述加速器系统中产生至少两个数据部分; 将所述至少两个数据部分存储在所述加速器系统的存储器中; 将所述系统载荷指针转换成用于存储的至少一个本地载荷指针; 将所述至少一个本地载荷指针传递给接口; 使用所述至少一个本地载荷指针通过所述接口从所述存储器访问所述至少两个数据部分;和 传输通过所述接口访问的所述至少两个数据部分,其中通过从所述多个所述至少两个数据部分重组数据,所述数据集从至少多个所述至少两个数据部分能恢复。
21.根据权利要求20所述的方法,其中 所述至少一个本地载荷指针被传递给驱动器堆栈; 所述驱动器堆栈将所述至少一个本地载荷指针传递给所述接口 ;和 所述接口产生包,用于所述至少两个数据部分的传输。
22.根据权利要求21所述的方法,其中 所述驱动器堆栈是小型计算机系统接口(SCSI)驱动器堆栈;和 所述包是SCSI包。
23.根据权利要求22所述的方法,其中 所述包是因特网SCSI包(iSCSI),用于将所述至少两个数据部分远程存储在云计算储存网络中;和 所述接口是网络接口,其有权访问本地存储在所述加速器系统的所述存储器中的所述至少两个数据部分,不必给所述接口提供所述系统载荷指针。
24.一种用于处理数据的方法,包含 将命令和载荷指针提供给加速器系统; 响应于所述载荷指针,通过所述加速器系统获得数据集; 响应于所述载荷指针,由所述加速器系统从所述数据集产生至少两个数据部分; 将所述至少两个数据部分本地存储在所述加速器系统的存储器中; 通过所述加速器系统的网络接口启动存储器访问; 响应于所述存储器访问,从所述存储器获得所述至少两个数据部分;和将通过所述网络接口获得的所述至少两个数据部分传输给云计算储存网络,其中所述云计算储存网络包括至少两个各自的远程储存设备,并且其中通过从多个所述至少两个数据部分重组数据,所述数据集从至少多个所述至少两个数据部分能恢复。
25.根据权利要求24所述的方法,其中 所述存储器访问是直接存储器访问;所述直接存储器访问和响应于其获得的所述至少两个数据部分通过开关被对等地路由,所述开关使所述网络接口与可编程逻辑器件(PLD)相互耦接;和所述存储器被耦接至所述PLD。
26.根据权利要求25所述的方法,进一步包含 使用所述网络接口,从所述云计算储存网络取回所述至少两个数据部分;和 将所取回的至少两个数据部分存储在所述存储器中,以便后续由所述PLD处理。
27.根据权利要求24所述的方法,其中产生所述至少两个数据部分和将所述至少两个数据部分传输到所述云计算储存网络对所述加速器系统是基本透明的。
全文摘要
本公开涉及用于安全数据储存的加速器系统。本文描述了数据处理和加速器系统。一个实施例一般涉及一种数据处理系统。在这种实施例中,总线和加速器相互耦接。加速器具有应用功能块。应用功能块用于处理数据以将被处理的数据提供给储存器。耦接网络接口以从储存器获得被处理的数据以便传输。
文档编号H04L29/08GK103238305SQ201180035985
公开日2013年8月7日 申请日期2011年5月27日 优先权日2010年5月28日
发明者L·A·劳里奇, S·P·桑普勒, M·H·王, B·R·坎蒂马拉, R·L·奥西尼, M·S·欧哈里, D·马丁, S·M·卡塞曼 申请人:安全第一公司