CN103959302A - 用于安全分布式存储的***与方法 - Google Patents
用于安全分布式存储的***与方法 Download PDFInfo
- Publication number
- CN103959302A CN103959302A CN201280034840.9A CN201280034840A CN103959302A CN 103959302 A CN103959302 A CN 103959302A CN 201280034840 A CN201280034840 A CN 201280034840A CN 103959302 A CN103959302 A CN 103959302A
- Authority
- CN
- China
- Prior art keywords
- data
- authentication
- data set
- engine
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2111—Location-sensitive, e.g. geographical location, GPS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
提供了用于将客户端计算设备引导至存储在多个存储位置上的数据部分的***和方法。注册/认证服务器接收来自客户端计算设备的对于取回存储在多个存储位置处的数据部分的请求。注册/认证服务器基于标准向客户端计算设备提供指向可用存储位置的指针,于是客户端计算设备可取回数据部分并重构期望的数据集。
Description
对相关申请的交叉引用
本申请要求2011年6月1日提交的61/492,296号美国临时申请的优先权,这里通过引用并入该美国临时申请的全部内容。
发明内容
本文描述了用于存储安全分布式数据并且将客户端计算设备引导至安全存储的分布式数据的***和方法。在一些方面中,提供了一种方法,该方法的步骤由编程的计算机***实现。从计算设备接收对于识别多个存储位置的请求。多个存储位置中的每一个存储由该请求标识的数据集的一部分,并且该数据集可以从该数据集的预定数目的部分恢复,所述预定数目的部分是该数据集的至少两个部分并且少于该数据集的所有部分。基于一个或多个标准选择来自多个存储位置的至少预定数目的可用存储位置。每个所选的存储位置存储该数据集的一部分,并且所选的存储位置比多个存储位置的全部更少的存储位置。标识所选存储位置的数据被发送到客户端计算设备。在一些实现方式中,在接收对于识别多个物理上分离的存储位置的请求之前,从不同于该客户端计算设备的计算设备接收该数据集的多个部分,并且将该数据的多个部分存储在多个物理上分离的存储位置之中。
在一些实现方式中,可访问性标准包括地理位置,并且多个存储位置中的至少一个的地理位置被确定。在一些实现方式中,可访问性标准包括负荷,并且多个存储位置中的至少一个上的负荷被确定。负荷可以是存储负荷和处理负荷中的至少一者。在一些实现方式中,基于与企业、产品、客户端、用户或请求相关联的规则来选择存储位置。
在一些实现方式中,数据集的每个部分包括头部和与该头部相关联的多个数据块。在一些实现方式中,数据集的每个部分的头部可通过指派给该头部和每个数据块的分部作业标识符来与该多个数据块相关联。
在这种实现方式中,可从多个存储位置中的至少一个获取头部。头部还可用于验证与头部相关联的数据块可用于恢复数据集。客户端计算设备可请求修改经加密的数据集的一部分的头部,并且经加密的数据集的该部分的头部可被修改。客户端计算设备还可请求利用新密钥对数据集的一部分的头部中的数据进行密钥更新。数据集的该部分的头部中的数据随后被拆包,并利用新密钥来重新包裹。
在一些实现方式中,如果确定在第一存储位置处数据集的一部分对于客户端计算设备是不可访问的,则从至少预定数目的可用部分将数据集的该部分恢复到第一存储位置。在一些实现方式中,至少一个存储位置是云计算存储位置。
附图说明
以下联系附图更具体地描述本发明,附图是要说明而不是限定本发明,而且其中:
图1根据本发明一种实施例的各方面说明了密码***的框图;
图2根据本发明一种实施例的各方面说明了图1信任引擎的框图;
图3根据本发明一种实施例的各方面说明了图2事务引擎的框图;
图4根据本发明一种实施例的各方面说明了图2存储库的框图;
图5根据本发明一种实施例的各方面说明了图2认证引擎的框图;
图6根据本发明一种实施例的各方面说明了图2密码引擎的框图;
图7根据本发明另一种实施例的各方面说明了存储库***的框图;
图8根据本发明一种实施例的各方面说明了数据分割过程的流程图;
图9的面板A根据本发明一种实施例的各方面说明了注册过程的数据流;
图9的面板B根据本发明一种实施例的各方面说明了互操作性过程的流程图;
图10根据本发明一种实施例的各方面说明了认证过程的数据流;
图11根据本发明一种实施例的各方面说明了签署过程的数据流;
图12根据本发明另一种实施例的各方面说明了数据流和加密/解密过程;
图13根据本发明另一种实施例的各方面说明了信任引擎***的简化框图;
图14根据本发明另一种实施例的各方面说明了信任引擎***的简化框图;
图15根据本发明一种实施例的各方面说明了图14冗余性模块的框图;
图16根据本发明的一方面说明了用于评估认证的过程;
图17根据本发明图16中所示的一方面说明了用于给认证分配一个值的过程;
图18说明了在图17所示本发明的一方面中用于执行信任仲裁的过程;及
图19根据本发明一种实施例的各方面说明了用户与卖方之间的样本事务,其中最初基于网络的联系导致双方签署的销售合同。
图20说明了具有密码服务提供者模块的样本用户***,其中密码服务提供者模块向用户***提供安全功能。
图21说明了用于解析、分割和/或分离数据的过程,加密主密钥与数据一起加密和储存。
图22说明了用于解析、分割和/或分离数据的过程,加密和存储加密主密钥与数据分开。
图23说明了用于解析、分割和/或分离数据的中间密钥过程,加密主密钥与数据一起加密和储存。
图24说明了用于解析、分割和/或分离数据的中间密钥过程,加密和存储加密主密钥与数据分开。
图25说明了由小型工作组利用本发明的密码方法和***。
图26是根据本发明的一种实施例、采用安全数据解析器的说明性物理标记安全***的框图。
图27是根据本发明的一种实施例、其中安全数据解析器集成到一个***中的说明性布置的框图。
图28是根据本发明一种实施例的说明性运动数据(data inmotion)***的框图。
图29是根据本发明一种实施例的另一种说明性运动数据***的框图。
图30-图32是根据本发明一种实施例、具有集成的安全数据解析器的说明性***的框图。
图33是根据本发明一种实施例、用于解析和分割数据的说明性过程的过程流程图。
图34是根据本发明一种实施例、用于将数据部分恢复成原始数据的说明性过程的过程流程图。
图35是根据本发明一种实施例、用于在位级分割数据的说明性过程的过程流程图。
图36是根据本发明一种实施例的说明性步骤与特征的过程流程图。
图37是根据本发明一种实施例的示例性步骤与特征的过程流程图。
图38是根据本发明一种实施例、在份内储存密钥和数据成分的简化框图。
图39是根据本发明一种实施例、使用工作组密钥在份内储存密钥和数据成分的简化框图。
图40A和图40B是根据本发明一种实施例、用于对运动数据进行头部生成和数据分割的简化和说明性过程流程图。
图41是根据本发明一种实施例的说明性份格式的简化框图。
图42A-图42E是根据本发明一种实施例、绘出说明性安全共享***的操作的框图。
图43说明了根据本发明一种实施例的一种实现,其中用户设备的密码共享客户端配置成执行组合的共享操作,以便与多个用户安全地共享一个数据集。
图44是根据本发明一种实施例、用于安全地共享数据的一种方法的说明性步骤的流程图。
图45是根据本发明一种实施例、在执行图44步骤4410的过程中处理器可以执行的说明性子步骤的流程图。
图46是根据本发明一种实施例、用于根据图44中说明的方法访问安全共享的数据集的一种方法的说明性步骤的流程图。
图47是根据本发明一种实施例、用于安全地共享数据的一种方法的说明性步骤的流程图。
图48是根据本发明一种实施例、用于存储分成部分的数据的说明性***的框图。
图49A-C是根据本发明一种实施例、绘出图48的***中的数据的安全存储的框图。
图50A-图50E是根据本发明一种实施例、绘出用于从图48的***请求和接收存储的数据的过程的框图。
图51根据本发明一种实施例说明了用于在图48的***中存储数据的示范性数据结构。
图52是根据本发明一种实施例、绘出图48的***的存储位置不可用的场景的框图。
图53A-图53C是根据本发明一种实施例、绘出用于在图48的***中将数据恢复到存储位置的过程的框图。
图54是根据本发明一种实施例、绘出用于在图48的***的存储位置中分布来自分部作业(portioning job)的头部和数据块的过程的框图。
图55是根据本发明一种实施例、绘出用于在图48的***的存储位置中分布来自两个解析分部作业的头部和数据块的过程的框图。
图56是根据本发明一种实施例、绘出数据头部中存储的数据的类型的框图。
图57A-图57D是根据本发明一种实施例、绘出用于从图48的***中的存储位置取回头部的过程的框图。
图58A-图58B是根据本发明一种实施例、绘出用于对如图57A-图57D中所示从存储位置取回的头部进行验证的过程的框图。
图59A-图59C是根据本发明一种实施例、绘出用于对如图57A-图57D中所示从存储位置取回的头部进行密钥更新(rekey)的过程的框图。
图60A-图60C是根据本发明一种实施例、绘出用于对如图57A-图57D中所示从存储位置取回的头部中的信息进行修改的过程的框图。
图61A-图61E是根据本发明一种实施例、绘出用于对图48的安全存储***中存储的数据进行搜索的过程的框图。
图62是根据本发明一种实施例、用于在图48的安全存储***中分配存储的方法的说明性步骤的流程图。
图63是根据本发明一种实施例,用于将存储位置返回给被解析数据存储***的用户的方法的说明性步骤的流程图。
图64A-B是根据本发明一种实施例,用于基于可访问性标准确定存储位置的集合以返回给图48的***的用户的方法的说明性步骤的流程图。
图65是根据本发明一种实施例,用于在图48的***中存储数据的方法的说明性步骤的流程图。
具体实施例
本文描述的***和方法可以与2005年10月25日提交的共同拥有的美国专利号7,391,865和共同拥有的美国专利申请号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年1月7日提交的12/349,897、2009年2月23日提交的12/391,028、2010年5月19日提交的12/783,276、2010年11月24日提交的12/953,877、及2011年1月27日提交的美国临时专利申请号61/436,991、2009年11月25日提交的61/264,464、2010年3月31日提交的61/319,658、2010年4月1日提交的61/320,242、2010年5月28日提交的61/349,560、2010年8月12日提交的61/373,187及2010年9月20日提交的61/384,583中描述的其它***和方法相结合使用。以上提到的早先提交的每个申请的公开内容都在此全部引入作为参考。
本发明的一方面是提供一种密码***,在该***中,一个或多个安全服务器,或者说信任引擎,存储密码密钥和用户认证数据。用户通过对信任引擎的网络访问来访问传统密码***的功能,但是,信任引擎不释放真实的密钥和其它认证数据,因此密钥和数据保持安全。密钥和认证数据的这种服务器集中储存提供了独立于用户的安全性、便携性、可用性和简单明了性。
因为用户可以确信,或者说信任,密码***执行用户和文档认证及其它密码功能,所以可以将多种功能结合到***中。例如,信任引擎提供商能够通过例如,认证协议参与方、为了参与方的利益或为了参与方而数字签署协定、并且存储由每个参与方数字签署的协议的记录,来确保防止否认协议。此外,密码***可以监视协议并基于例如价格、用户、卖方、地理位置、使用地点等来确定应用程度变化的认证。
为了便于对本发明的透彻理解,余下的具体描述参考附图来描述本发明,其中相同的元素自始至终由相同的标号来标注。
图1说明了根据本发明一种实施例的各方面的密码***100的框图。如图1所示,密码***100包括通过通信链路125通信的用户***105、信任引擎110、证书机构115和卖方***120。
根据本发明的一种实施例,用户***105包括传统的通用计算机,具有一个或多个微处理器,例如像基于英特尔的处理器。而且,用户***105包括适当的操作***,例如像能够包括图形或窗口的操作***,例如WINDOWS、UNIX、LINUX等。如图1所示,用户***105可以包括生物测定设备107。生物测定设备107可以有利地捕捉用户的生物测定并将捕捉到的生物测定传送给信任引擎110。根据本发明的一种实施例,生物测定设备可以有利地包括具有类似于在以下专利申请中公开的那些属性和特征的设备:1997年9月5日提交的标题为"RELIEF OBJECT IMAGE GENERATOR(浮雕对象图像产生器)"的美国专利申请号08/926,277、2000年4月26日提交的标题为"IMAGING DEVICE FOR A RELIEF OBJECT AND SYSTEM ANDMETHOD OF USING THE IMAGE DEVICE(用于浮雕对象的成像设备和使用这种成像设备的***和方法)"的美国专利申请号09/558,634、1999年11月5日提交的标题为"RELIEF OBJECTSENSOR ADAPTOR(浮雕对象传感器转接器)"的美国专利申请号09/435,011和2000年1月5日提交的标题为"PLANAR OPTICALIMAGE SENSOR AND SYSTEM FOR GENERATING ANELECTRONIC IMAGE OF A RELIEF OBJECT FORFINGERPRINT READING(平面光学成像传感器和用于产生用于指纹读取的浮雕对象的电子图像的***)"的美国专利申请号09/477,943,所有这些申请都由本申请的受让人拥有,而且其全部内容都在此引入作为参考。
此外,用户***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来执行哈希、数字签署、加密和解密(经常合在一起仅被称为加密)、产生或分发数字证书等。但是,密码功能中使用的私人密码密钥在信任引擎110之外将不可用,由此确保密码密钥的完整性。
根据一种实施例,信任引擎110生成并存储密码密钥。根据另一种实施例,至少有一个密码密钥与每个用户关联。而且,当密码密钥包括公共密钥技术时,与用户关联的每个私人密钥都在信任引擎110内产生、并且不从信任引擎110释放。因此,只要用户有权访问信任引擎110,用户就可以使用他或她的私人或公共密钥执行密码功能。这种远程访问有利地允许用户通过事实上任何互联网连接,例如蜂窝和卫星电话、公共电话亭、膝上型电脑、旅馆房间等,保持完全的移动和访问密码功能。
根据另一种实施例,信任引擎110利用为信任引擎110生成的密钥对执行密码功能。根据这种实施例,信任引擎110首先认证用户,并且在用户具有与注册认证数据匹配的正确产生的认证数据之后,信任引擎110为了被认证用户的利益而使用它自己的密码密钥对来执行密码功能。
本领域技术人员将从本文公开的内容认识到,密码密钥可以有利地包括对称密钥、公共密钥和私人密钥中的一些或全部。另外,本领域技术人员还将从本文公开的内容认识到,可以利用可以从商业技术获得的大量算法,例如像RSA、ELGAMAL等,实现上述密钥。
图1还说明性了证书机构115。根据一种实施例,证书机构115可以有利地包括颁发例如像VeriSign、Baltimore、Entrust等数字证书的被信任的第三方组织或公司。信任引擎110可以有利地通过例如PKCS10的一种或多种传统数字证书协议把对数字证书的请求传输到证书机构115。作为响应,证书机构115将按照例如PKCS7的多种不同协议中的一种或多种协议颁发数字证书。根据本发明的一种实施例,信任引擎110从几个或全部的著名证书机构115请求数字证书,使得证书机构115有权访问对应于任何请求方的证书标准的数字证书。
根据另一种实施例,信任引擎110在内部执行证书颁发。在这种实施例中,信任引擎110可以访问证书***以便生成证书和/或可以在它们被请求时,例如在生成密钥时,或者可以按照请求时请求的证书标准在内部生成证书。下面将更具体地***任引擎110。
图1还说明了卖方***120。根据一种实施例,卖方***120有利地包括网络服务器。典型的网络服务器通常使用例如超文本标记语言(HTML)或可扩展标记语言(XML)的几种互联网标记语言或文档格式标准之一经互联网提供内容。网络服务器接受来自像Netscape和Internet Explorer的浏览器的请求,然后返回适当的电子文档。许多服务器或客户侧技术都能够用于使网络服务器的能力增大到超过它的能力,以交付标准电子文档。例如,这些技术包括公共网关接口(CGI)脚本、加密套接字协议层(SSL)安全性和动态服务器主页(ASP)。卖方***120可以有利地提供与商业、个人、教育、或其它事务有关的电子内容。
尽管参考上述实施例公开了卖方***120,但是本发明不是要由此受到限制。相反,本领域技术人员将从本文公开的内容认识到,卖方***120可以有利地包括参考用户***105描述的任何设备或者其组合。
图1还说明了连接用户***105、信任引擎110、证书机构115和卖方***120的通信链路125。根据一种实施例,通信链路125优选地包括互联网。如贯穿本公开内容所使用的,互联网是计算机的全球网络。本领域普通技术人员众所周知的互联网的结构包括网络主干线,具有从网络主干线开始的网络分支。这些分支又具有从它们开始的网络分支,以此类推。路由器在网络级之间移动信息包,从一个网络到另一个网络,直到包到达其目的地的邻居。目的地网络的主机从该目的地引导信息包到达适当的终端,或节点。在一种有利的实施例中,互联网路由集线器包括使用本领域中众所周知的传输控制协议/因特网协议(TCP/IP)的域名***(DNS)服务器。路由集线器经高速通信链路连接到一个或多个其它路由集线器。
互联网的一个流行部分是万维网。万维网包含不同的计算机,这些计算机存储能够显示图形和文本信息的文档。在万维网上提供信息的计算机通常被称为“网站”。网站是通过具有相关联的电子页面的互联网地址来定义的。电子页面可以通过统一资源定位符(URL)来识别。通常,电子页面是对文本、图形化图像、音频、视频等的呈现进行组织的文档。
尽管通信链路125是就其优选实施例公开的,但是本领域普通技术人员将从本文公开的内容认识到,通信链路125可以包括广泛的交互式通信链路。例如,通信链路125可以包括交互式电视网络、电话网络、无线数据传输***、双向电缆***、定制的私人或公共计算机网络、交互式公共电话网络、自动出纳机网络、直接链路、卫星或蜂窝网络等。
图2说明了根据本发明一种实施例各方面的图1信任引擎110的框图。如图2所示,信任引擎110包括事务引擎205、存储库210、认证引擎215和密码引擎220。根据本发明的一种实施例,信任引擎110还包括海量储存器225。如图2进一步所示,事务引擎205与存储库210、认证引擎215和密码引擎220、以及海量储存器225通信。此外,存储库210与认证引擎215、密码引擎220和海量储存器225通信。而且,认证引擎215与密码引擎220通信。根据本发明的一种实施例,上述通信的一部分或全部可以有利地包括将XML文档传输到对应于接收设备的IP地址。如上所述,XML文档有利地允许设计者产生他们自己定制的文档标签,在应用程序之间和组织之间允许数据的定义、传输、确认和解释。此外,上述通信的一部分或全部可以包括传统的SSL技术。
根据一种实施例,事务引擎205包含数据路由设备,例如从Netscape、Microsoft、Apache等可买到的传统网络服务器。例如,网络服务器可以有利地接收从通信链路125进入的数据。根据本发明的一种实施例,进入的数据被寻址到用于信任引擎110的前端安全***。例如,前端安全***可以有利地包括防火墙、搜索已知攻击剖面的入侵检测***和/或病毒扫描器。清理完前端安全***后,数据被事务引擎205接收并且路由到存储库210、认证引擎215、密码引擎220和海量储存器225中的一个。此外,事务引擎205监视从认证引擎215和密码引擎220进入的数据,并且通过通信链路125将数据路由至特定的***。例如,事务引擎205可以有利地将数据路由到用户***105、证书机构115或卖方***120。
根据一种实施例,使用传统的HTTP路由技术路由数据,传统的HTTP路由技术例如采用URL或者统一资源标识符(URI)。URI类似于URL,但是,URI通常指出例如可执行文件、脚本等的文件或动作的源。因此,根据一种实施例,用户***105、证书机构115、卖方***120及信任引擎210的组件有利地在通信URL或URI内包括用于让事务引擎205贯穿密码***正确地路由数据的足够数据。
尽管参考其优选实施例公开了数据路由,但是本领域技术人员将认识到大量可能的数据路由方案或策略。例如,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的通信数据可以使用URL、URI、HTTP或XML文档来传送,把数据请求和格式有利地嵌入到上述任何文档中。
如上所述,存储库210可以有利地包括多个安全数据储存设施。在这样一种实施例中,安全数据储存设施可以配置成使得对一个个别的数据储存设施的安全性的损害将不会损害存储在其中的密码密钥或认证数据。例如,根据这种实施例,密码密钥和认证数据都经过数学运算,以便对存储在每个数据储存设施中的数据进行统计学上和充分地随机化。根据一种实施例,各别数据存储设施的数据的随机化使数据不可破译。因此,个别数据存储设施的损害只产生随机的不可破译的数而且不损害作为一个整体的任何密码密钥或认证数据的安全性。
图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可以有利地只执行认证,或者可选地,只执行密码功能的一部分或全部,例如数据加密和解密。根据此类实施例,可以有利地去除认证引擎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包括将试探法530对比较的应用。试探法530可以有利地解决与认证尝试密切相关的情形,例如时刻、IP地址或子网掩码、购买简档、电子邮件地址、处理器序列号或ID等。
而且,生物测定数据比较的本质可能导致由于当前的生物测定认证数据与注册数据的匹配产生的不同程度的置信度。例如,不像可能只返回肯定或否定匹配的传统密码,指纹可以被确定为部分匹配,例如90%匹配、75%匹配、或10%匹配,而非简单地正确或错误。例如声纹(voice print)分析或面部识别的其它生物测定标识符可以共享这个概率认证而非绝对认证的属性。
当用这种概率认证工作时或者在认证被视为不够绝对可靠的其它情况下,期望应用试探法530来确定所提供的认证中的置信级别是否高到足以认证正在进行的事务。
有时候情况将是所发布的事务是相对低价值的事务,在这种情况下,被认证为较低的置信级别是可以接受的。这可以包括具有与其相关的低美元价值的事务(例如10美元的购买)或者具有低风险的事务(例如只许可成员的网站)。
反之,对于认证其他事务,在允许事务进行之前在认证中要求高置信度可能是期望的。这种事务可以包括大美元价值的事务(例如签署数百万美元的供应契约)或者如果错误认证发生将具有高风险的事务(例如远程登录到政府计算机上)。
如下面要描述的那样,与置信级别和事务值相结合的试探法530的使用可以用于允许比较器提供动态背景敏感的认证***。
根据本发明的另一种实施例,比较器515可以有利地跟踪用于特定事务的认证尝试。例如,当事务失败时,信任引擎110可以请求用户重新输入他或她的当前认证数据。认证引擎215的比较器515可以有利地采用尝试限制器535来限制认证尝试的次数,由此禁止模仿用户的认证数据的粗暴(brute-force)尝试。根据一种实施例,尝试限制器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处理密码密钥数据。尽管这样,本领域技术人员将从本文公开的内容认识到,数据分割模块610和数据组装模块620可以与认证引擎215的那些模块组合。
密码引擎220还包括配置成执行众多密码功能的一个、一些或全部的密码处理模块625。根据一种实施例,密码处理模块625可以包括软件模块或程序、硬件或者两者都包括。根据另一种实施例,密码处理模块625可以执行数据比较、数据解析、数据分割、数据分离、数据哈希、数据加密或解密、数字签名验证或产生、数字证书产生、储存或请求、密码密钥产生等。而且,本领域技术人员将从本文公开的内容认识到,密码处理模块625可以有利地包含公共密钥基础设施,例如完美隐私(PGP)、基于RSA的公共密钥***或众多可选的密钥管理***。此外,密码处理模块625可以执行公共密钥加密、对称密钥加密或者两者都执行。除了上述之外,密码处理模块625还可以包括一个或多个计算机程序或模块、硬件或者两者都包括,以便实现无缝、透明的互操作性功能。
本领域技术人员还将从本文公开的内容认识到,密码功能可以包括通常与密码密钥管理***有关的众多或各种功能。
图7说明了根据本发明一种实施例各方面的存储库***700的简化框图。如图7所示,存储库***700有利地包括多个数据储存设施,例如数据储存设施D1、D2、D3和D4。但是,本领域普通技术人员很容易理解,存储库***可以只有一个数据储存设施。根据本发明的一种实施例,数据储存设施D1至D4中的每一个可以有利地包括参考图4的存储库210公开的一些或全部元素。类似于存储库210,数据储存设施D1至D4优选通过传统SSL与事务引擎205、认证引擎215和密码引擎220通信。通信链路传送例如XML文档。来自事务引擎205的通信可以有利地包括对数据的请求,其中该请求被有利地向每个数据储存设施D1至D4的IP地址广播。另一方面,事务引擎205可以基于例如响应时间、服务器负荷、维护计划等众多标准而向特定的数据储存设施广播请求。
响应来自事务引擎205的对数据的请求,存储库***700将存储的数据有利地转发到认证引擎215和密码引擎220。各自的数据组装模块接收转发的数据并将数据组装成有用的格式。另一方面,从认证引擎215和密码引擎220到数据储存设施D1至D4的通信可以包括对要存储的敏感数据的传输。例如,根据一种实施例,认证引擎215和密码引擎220可以有利地采用它们各自的数据分割模块将敏感数据划分成不可破译的部分,然后将敏感数据的一个或多个不可破译部分传输给特定的数据储存设施。
根据一种实施例,每个数据储存设施,D1至D4,都包括例如目录服务器的单独且独立的储存***。根据本发明的另一种实施例,存储库***700包括多个地理上分离的独立数据储存***。通过将敏感数据分配到不同且独立的储存设施D1至D4中,存储库***700提供冗余性和额外的安全措施,其中储存设施D1至D4中的一些或全部可以有利地在地理上分离。例如,根据一种实施例,只有来自多个数据储存设施D1至D4中的两个的数据需要被破译并且重组敏感数据。因此,多达四个数据储存设施D1至D4中的两个可以由于维护、***故障、电力故障等不起作用,但不影响信任引擎110的功能。此外,根据一种实施例,因为每个数据储存设施中存储的数据是随机化且不可破译的,所以任何单独的数据储存设施的损害都不一定损害到敏感数据。而且,在具有地理分离的数据储存设施的实施例中,多个地理上远离的设施的损害变得更加困难。事实上,为了颠覆必须的多个独立的地理上远程的数据储存设施,即使调皮捣蛋的员工也将得到极大的挑战。
尽管参考存储库***700的优选和可选的实施例公开了存储库***700,但是本发明不是要由此受到限制。相反,本领域技术人员将从本文公开的内容认识到用于存储库***700的众多可选方案。例如,存储库***700可以包括一个、两个或更多数据储存设施。此外,敏感数据可以进行数学运算,使得重组和破译敏感数据需要来自两个或更多数据储存设施的几部分。
如上所述,认证引擎215和密码引擎220每个都分别包括数据分割模块520和610,用于分割任何类型或形式的敏感数据,例如像文本、音频、视频、认证数据和密码密钥数据。图8说明了根据本发明一种实施例各方面通过数据分割模块执行的数据分割过程800的流程图。如图8所示,当敏感数据"S"被认证引擎215或密码引擎220的数据分割模块接收时,数据分割过程800在步骤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功能或者说"异或"功能,是本领域普通技术人员熟知的。上述组合优选地分别发生在步骤825和830中,并且,根据一种实施例,上述组合还可并行发生。然后,数据分割过程800前进到步骤835,在步骤835中随机数A和C以及数B和D被配对,使得没有一个配对会通过它们自己含有足够的数据,来重组和破译原始敏感数据S。例如,这些数可以如下进行配对:AC、AD、BC和BD。根据一种实施例,每个上述配对都分配给图7的存储库D1至D4之一。根据另一种实施例,每个上述配对都随机地分配给存储库D1至D4之一。例如,在第一数据分割过程800期间,配对AC可以通过例如随机选择的D2的IP地址发送到存储库D2。然后,在第二数据分割过程800期间,配对AC可以通过例如随机选择的D4的IP地址发送到存储库D4。此外,配对可以全部存储在一个存储库上,并且可以存储在所述存储库上的单独的位置中。
基于以上所述,数据分割过程800将敏感数据的几部分有利地放在四个数据储存设施D1至D4的每个当中,使得没有单个的数据储存设施D1至D4包括用于重建原始敏感数据S的足够多的被加密数据。如上所述,这种将数据随机化成个别的不能使用的被加密部分增加了安全性,并且即使数据储存设施D1至D4中的一个被损害也能提供对数据保持信任。
尽管参考其优选实施例公开了数据分割过程800,但是本发明不是要由此受到限制。相反,本领域技术人员将从本文公开的内容认识到对于数据分割过程800的众多可选项。例如,数据分割过程可以将数据有利地分成两个数,例如,随机数A和数B,以及,通过两个数据储存设施随机分配A和B。而且,数据分割过程800可以通过产生附加的随机数在众多数据储存设施当中有利地分割数据。数据可以被分割成任何期望的、选择的、预定的或者随机分配的大小的单元,包括但不限于一位、多位、多字节、千字节、兆字节或者更大,或大小的任何组合或序列。此外,由分割过程引起的对数据单元大小的改变可能使数据更难以恢复成可用的形式,由此增加了敏感数据的安全性。本领域普通技术人员很容易理解,分割后的数据单元大小可以是多种多样的数据单元大小或大小的模式或大小的组合。例如,数据单元大小可以被选择或预定为全都是相同的大小、固定设置的不同大小、大小的组合或者随机产生的大小。类似地,根据固定或预定的数据单元大小、数据单元大小的模式或组合或者随机产生的数据单元大小或每份的大小,数据单元可以分配到一份或多份中。
如上所述,为了重建敏感数据S,数据部分需要被去随机化并重组。这个过程可以有利地分别发生在认证引擎215和密码引擎220的数据组装模块525和620中。数据组装模块,例如数据组装模块525,接收来自数据储存设施D1至D4的数据部分,并且将数据重组成可以使用的形式。例如,根据图8数据分割过程800所采用的数据分割模块520的一种实施例,数据组装模块525使用来自数据储存设施D1至D4中至少两个的数据部分重建敏感数据S。例如,AC、AD、BC和BD的配对被分配成使得其中任何两个都提供A和B或者C和D之一。注意,S=A XOR B或S=C XOR D指出,当数据组装模块接收A和B或C和D中的一个时,数据组装模块525能够有利地重组敏感数据S。因此,响应信任引擎110的组装请求,当例如数据组装模块525从数据储存设施D1至D4中至少前两个接收到数据部分时,它可以组装敏感数据S。
基于上述数据分割和组装过程,敏感数据S只在信任引擎110的有限区域中以可用格式存在。例如,当敏感数据S包括注册认证数据时,可用的、非随机化的注册认证数据只在认证引擎215中可用。同样,当敏感数据S包括私有密码密钥数据时,可用的、非随机化的私有密码密钥数据只在密码引擎220中可用。
尽管参考其优选实施例公开了数据分割和组装过程,但是本发明不是要由此受到限制。相反,本领域技术人员将从本文公开的内容认识到用于分割和重组敏感数据S的众多可选方案。例如,公钥加密可以用于在数据储存设施D1至D4进一步保护数据。此外,本领域普通技术人员很容易理解,本文描述的数据分割模块也是本发明的单独且不同的实施例,这些实施例可以结合到任何现有的计算机***、软件套件、数据库、或者其组合,或者像本文公开和描述的信任引擎、认证引擎和事务引擎的本发明其它实施例当中,或者与它们组合或者成为它们的一部分。
图9A说明了根据本发明一种实施例各方面的注册过程900的数据流。如图9A所示,注册过程900在用户期望用密码***100的信任引擎110注册时在步骤905处开始。根据这种实施例,用户***105有利地包括客户端小程序,例如如基于Java的,该小程序询问用户以输入像人口数据和注册认证数据的注册数据。根据一种实施例,注册认证数据包括用户ID、密码(多个密码)、生物测定(多个生物测定)等。根据一种实施例,在询问过程期间,客户端小程序优选与信任引擎110通信以确保选定的用户ID是唯一的。当用户ID不唯一时,信任引擎110可以有利地建议一个唯一的用户ID。客户端小程序收集注册数据并且例如通过XML文档将注册数据传输到信任引擎110,而且尤其是传输到事务引擎205。根据一种实施例,传输是利用认证引擎215的公钥编码的。
根据一种实施例,用户在注册过程900的步骤905期间执行单次注册。例如,用户将他自己或她自己注册为一个特定的人,例如JoeUser。当Joe User期望注册为Mega公司的CEO,Joe User时,根据这种实施例,Joe User第二次注册,接收第二个唯一的用户ID并且信任引擎110不使两个身份相关。根据本发明的另一种实施例,注册过程900为单个用户ID提供多个用户身份。因此,在上述例子中,信任引擎110将有利地使Joe User的两个身份相关。如本领域技术人员从本文公开的内容将认识到的那样,一个用户可以具有许多身份,例如,户主Joe User,慈善基金会成员Joe User等。即使用户可以具有多个身份,但是,根据这种实施例,信任引擎110也优选地只存储一个注册数据集。而且,用户可以按照他们的需要有利地增加、编辑/更新或删除身份。
尽管参考其优选实施例公开了注册过程900,但是本发明不是要由此受到限制。相反,本领域技术人员将从本文公开的内容认识到用于收集注册数据并且尤其是注册认证数据的众多可选方案。例如,小程序可以是基于公共对象模式(COM)的小程序等。
另一方面,注册过程可以包括分级注册。例如,在最低级注册,用户可以通过通信链路125注册而不产生关于他或她的身份的文档资料(documentation)。根据升级的注册,用户使用例如数字公证员的被信任的第三方来注册。例如,而且用户可以向被信任的第三方现出真身,提供像出生证、驾照、军人ID等证件,并且被信任的第三方在注册提交过程中可以有利地包括例如他们的数字签名。被信任的第三方可以包括真正的公证员、例如邮局或机动车辆部门的政府机构、注册为员工的大公司里的人力资源人员等。本领域技术人员将从本文公开的内容认识到,注册的众多变化级别可以在注册过程900期间发生。
在步骤915接收到注册认证数据之后,事务引擎205使用传统的完全SSL(FULL SSL)技术将注册认证数据转发到认证引擎215。在步骤920,认证引擎215使用认证引擎215的私钥解密注册认证数据。此外,认证引擎215采用数据分割模块对注册认证数据进行数学运算,从而将数据分割成至少两个独立的不可破译的随机化的数。如上所述,至少两个数可以包含统计上随机的数和二进制异或的数。在步骤925,认证引擎215将随机化的数的每一部分都转发到数据储存设施D1至D4之一。如上所述,认证引擎215还可以有利地随机决定哪几部分传送给哪几个存储库。
在注册过程900期间,用户还将常常期望具有发布的数字证书,从而使他或她可以从密码***100之外的其它来源接收加密的文档。如上所述,证书机构115通常根据几种传统标准中的一种或多种发布数字证书。总的来说,数字证书包括每个人都知道的用户或***的公钥。
不管用户是在注册时还是在另一个时间请求数字证书,该请求都通过信任引擎110传送到认证引擎215。根据一种实施例,请求包括具有例如用户的真名的XML文档。根据步骤935,认证引擎215将请求传送到密码引擎220,命令密码引擎220产生密码密钥或密钥对。
在步骤935请求后,密码引擎220生成至少一个密码密钥。根据一种实施例,密码处理模块625生成密钥对,其中一个密钥被用作私钥,而另一个被用作公钥。密码引擎220存储私钥并且,根据一种实施例,还存储公钥的副本。在步骤945,密码引擎220将对数字证书的请求传输到事务引擎205。根据一种实施例,该请求有利地包括标准化的请求,例如嵌在像XML文档中的PKCS10。对数字证书的请求可以有利地对应于一个或多个证书机构和证书机构要求的一种或多种标准格式。
在步骤950中,事务引擎205将这个请求转发到证书机构115,证书机构115在步骤955中返回数字证书。返回的数字证书可以有利地具有例如PKCS7的标准化格式,或者具有一个或多个证书机构115的专有格式。在步骤960中,数字证书被事务引擎205接收,并且其一个副本被转发到用户并且一个副本用信任引擎110进行存储。信任引擎110存储证书的副本,从而使信任引擎110将不需要依赖证书机构115的可用性。例如,当用户期望发送数字证书或者第三方请求用户的数字证书时,对数字证书的请求一般发送到证书机构115。但是,如果证书机构115正在进行维护或已经是故障或安全性损害的受害者,则数字证书可能不可用。
在发布密码密钥之后的任何时间,密码引擎220都可以有利地采用上述的数据分割过程800,使得密码密钥被分割成独立的不可破译的随机化的数。类似于认证数据,在步骤965,密码引擎220把随机化的数传送到数据储存设施D1至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位密钥的强加密密钥、较不安全密钥等一种或多种密钥类型。而且,证书类型可以包括一种或多种上述算法标准或密钥、一种或多种消息或数据格式、例如Base 32或Base 64的一种或多种数据封装或编码体系的升级或替换。证书类型还可以包括与一种或多种第三方密码应用程序或接口、一种或多种通信协议或者一种或多种证书标准或协议的兼容性。本领域技术人员将从本文公开的内容认识到,在证书类型中可以存在其它差别,并且可以如本文所公开的那样实现对这些差别的翻译和由这些差别翻译。
一旦密码处理模块625确定了证书类型,互操作性过程970就可以前进到步骤974,并且确定用户是否拥有与步骤974中确定的类型匹配的证书。例如,当用户拥有匹配的证书时,信任引擎110有权访问匹配的证书,通过例如其之前的储存,密码处理模块625知道匹配的私钥也存储在信任引擎110内。例如,匹配的私钥可以存储在存储库210或存储库***700内。密码处理模块625可以有利地请求从例如存储库210组装匹配的私钥,然后,在步骤976中,使用匹配的私钥执行密码动作或功能。例如,如上所述,密码处理模块625可以有利地执行哈希、哈希比较、数据加密或解密、数字签名验证或产生等。
当用户不拥有匹配的证书时,互操作性过程970前进到步骤978,在步骤978中密码处理模块625确定用户是否拥有被交叉证明的证书。根据一种实施例,当第一证书机构确定信任来自第二证书机构的证书时,证书机构之间的交叉证明发生。换言之,第一证书机构确定来自第二证书机构的证书满足一定的质量标准,因此可以被"认证为"为等价于第一证书机构自己的证书。在证书机构发布例如具有信任级别的证书时,交叉证明变得更加复杂。例如,第一证书机构通常基于注册过程中的可靠度,可以为特定的证书提供三个信任级别,而第二证书机构可以提供七个信任级别。交叉证明可以有利地跟踪来自第二证书机构的哪几个级别和哪几个证书可以用来自第一证书机构的哪几个级别和哪几个证书代替。当在两个证书机构之间官方和公开地进行上述交叉证明时,相互之间证书和级别的映射经常被称为“链接(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并且获得上述选定的证书。
通过上述互操作性过程970,密码处理模块625在不同密码***之间有利地提供无缝、透明的翻译和转换。本领域技术人员将从本文公开的内容认识到上述可互操作的***的众多优点和实现。例如,互操作性过程970的上述步骤986可以有利地包括以下进一步具体讨论的信任仲裁的各个方面,在信任仲裁中证书机构可以特殊情形下接收较低级别的交叉证明。另外,互操作性过程970可以包括在例如采用证书撤销列表(CRL)的标准证书撤销、在线证书状态协议(OCSP)等的采用之间确保互操作性。
图10说明了根据本发明一种实施例各方面的认证过程1000的数据流。根据一种实施例,认证过程1000包括收集来自用户的当前认证数据并将其与用户的注册认证数据进行比较。例如,认证过程1000开始于步骤1005,在步骤1005中用户期望与例如卖方执行事务。这种事务可以包括例如选择购买选项、请求访问卖方***120的受限区域或设备等。在步骤1010,卖方向用户提供事务ID和认证请求。事务ID可以有利地包括192位的量,具有与128位随机量联系在一起的32位时间戳,或者与32位卖方规定常数联系在一起的“随机数(nonce)”。这种事务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接收通信,在检查跟踪中产生记录,并且生成对要从数据储存设施D1至D4组装的用户注册认证数据的请求。在步骤1040,存储库***700将对应于用户的注册认证数据的多个部分传送到认证引擎215。在步骤1045,认证引擎215使用它的私钥对传输进行解密并且比较注册认证数据与用户提供的当前认证数据。
步骤1045的比较可以有利地应用启发式背景敏感认证,如之前所提到的,并且在下面更具体地进行讨论。例如,如果接收到的生物测定信息不能理想地匹配,则较低的信任匹配产生。在特定的实施例中,认证的置信级别要权衡事务的本质和用户及卖方两者的期望。这也在下面更具体地讨论。
在步骤1050,认证引擎215用步骤1045的比较结果填写认证请求。根据本发明的一种实施例,用认证过程1000的是/否或真/假结果填写认证请求。在步骤1055中,填好的认证请求返回到卖方,便于卖方照办,例如,允许用户完成启动了该认证请求的事务。根据一种实施例,确认消息被传递到用户。
基于以上所述,认证过程1000有利地保持敏感数据安全并产生配置成维持敏感数据的完整性的结果。例如,敏感数据仅在认证引擎215内部被组装。例如,注册认证数据在它被数据组装模块在认证引擎215内组装之前是不可破译的,而且当前认证数据在它被传统的SSL技术和认证引擎215的私钥解开之前是不可破译的。而且,传输给卖方的认证结果不包括敏感数据,并且用户可能甚至不知道他或她是否产生了有效的认证数据。
尽管参考其优选和可选实施例公开了认证过程1000,但是本发明不是要由此受到限制。相反,本领域技术人员将从本文公开的内容认识到用于认证过程1000的众多可选方案。例如,卖方可以有利地被几乎任何发出请求的应用程序,甚至是驻留在用户***105内的应用程序,代替。例如,像Microsoft Word的客户应用程序可以使用应用程序接口(API)或密码API(CAPI)在解锁文档之前请求认证。可选地,邮件服务器、网络、蜂窝电话、个人或移动计算设备、工作站等都可以做出可以通过认证过程1000填写的认证请求。事实上,在提供上述可信的认证过程1000后,发出请求的应用程序或设备可以提供对众多电子或计算机设备或***的访问或使用。
而且,认证过程1000可以在认证失败的情况下采用众多可选的过程。例如,认证失败可以维持同一个事务ID并请求用户重新输入他或她的当前认证数据。如上所述,使用同一个事务ID允许认证引擎215的比较器监视并限制对特定事务的认证尝试的次数,由此产生更安全的密码***100。
另外,可以有利地采用认证过程1000开发简洁的单一签署(sign-on)解决方案,例如解锁敏感数据仓库(vault)。例如,成功或肯定的认证可以向通过认证的用户提供自动访问用于几乎无限量***或应用程序的任何次数的密码的能力。例如,对用户的认证可以向用户提供对与多个在线卖方、局域网、不同的个人计算设备、互联网服务提供商、拍卖提供商、投资经纪人等相关的密码、登录、财经证件等的访问。通过采用敏感数据仓库,用户可以选择真正大而随机的密码,因为他们不再需要通过联想记住它们。相反,认证过程1000提供对它们的访问。例如,用户可以选择长度超过二十位数的随机字母数字字符串,而不是与难忘的数据、姓名等相关的什么东西。
根据一种实施例,与给定用户相关联的敏感数据仓库可以有利地存储在存储库210的数据储存设施中,或者被分割并存储在存储库***700中。根据这种实施例,在肯定的用户认证之后,信任引擎110将例如用于适当的密码的被请求的敏感数据供应给发出请求的应用程序。根据另一种实施例,信任引擎110可以包括用于存储敏感数据仓库的单独的***。例如,信任引擎110可以包括独立的软件引擎,该软件引擎实施数据仓库功能并且形象地驻留在信任引擎110的上述前端安全***“后面”。根据这种实施例,软件引擎在其从信任引擎110接收到指出肯定的用户认证的信号之后供应被请求的敏感信号。
在还有另一种实施例中,可以由第三方***实现数据仓库。类似于软件引擎实施例,第三方***可以在其从信任引擎110接收到指出肯定的用户认证的信号之后有利地供应被请求的敏感数据。根据还有另一种实施例,可以在用户***105上实现数据仓库。用户端软件引擎可以在接收到来自信任引擎110的指出肯定的用户认证的信号之后供给上述数据。
虽然参考其可选实施例公开了上述数据仓库,但是本领域技术人员将从本文公开的内容认识到其众多的其他实现。例如,一种特定的数据仓库可以包括来自上述实施例的一些或全部的多个方面。另外,任何上述数据仓库都可以在不同时间采用一个或多个认证请求。例如,任何数据仓库都可以在每隔一个或多个事务时、定期地、每隔一个或多个会话时、每次访问一个或多个网页或网站时、以一个或多个其它规定的时间间隔等,要求认证。
图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将请求传输到每个数据储存设施D1至D4,使得每个数据储存设施D1至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中,认证引擎从对应于签署方的数据储存设施D1至D4请求密码密钥。在步骤1115中,数据储存设施D1至D4将对应于签署方的密码密钥中它们各自的部分传输到密码引擎220。根据一种实施例,上述传输包括SSL技术。根据另一种实施例,上述传输可以有利地用密码引擎220的公钥进行超级加密。
在步骤1120中,密码引擎220组装签署方的上述密码密钥,并且用其加密消息,由此形成一个或多个数字签名。在签署过程1100的步骤1125中,密码引擎220将这一个或多个数字签名传输给认证引擎215。在步骤1130中,认证引擎215将填好的认证请求连同被哈希的消息和一个或多个数字签名的副本一起传输到事务引擎205。在步骤1135中,事务引擎205将包括事务ID、认证是否成功的指示和一个或多个数字签名的收据传输到卖方。根据一种实施例,上述传输可以有利地包括信任引擎110的数字签名。例如,信任引擎110可以用它的私钥加密收据的哈希,由此形成要附到给卖方的传输的数字签名。
根据一种实施例,事务引擎205还将确认消息传输到用户。尽管参考其优选和可选实施例公开了签署过程1100,但是本发明不是要由此受到限制。相反,本领域技术人员将从本文公开的内容认识到用于签署过程1100的众多可选方案。例如,卖方可以被例如电子邮件应用程序的用户应用程序代替。例如,用户可能希望用他或她的数字签名数字签署特定的电子邮件。在这样一种实施例中,贯穿签署过程1100的传输可以有利地只包括消息的哈希的一个副本。此外,本领域技术人员将从本文公开的内容认识到,众多的客户应用程序都可以请求数字签名。例如,客户应用程序可以包含文字处理器、电子制表软件、电子邮件、语音邮件、对受限***区域的访问等。
此外,本领域技术人员将从本文公开的内容认识到,签署过程1100的步骤1105至1120可以有利地采用图9B的互操作性过程970的一些或全部步骤,由此在可能例如需要处理具有不同签名类型的数字签名的不同密码***之间提供互操作性。
图12说明了根据本发明一种实施例各方面的加密/解密过程1200的数据流。如图12所示,解密过程1200开始于使用认证过程1000认证用户。根据一种实施例,认证过程1000在认证请求中包括同步的会话密钥。例如,在传统的PKI技术中,本领域技术人员理解,使用公共和私有密钥加密或解密数据是数学密集的并且可能需要可观的***资源。但是,在对称密钥密码***中,或者在消息的发送者与接收者共享用于加密和解密消息的单个公钥的***中,数学运算明显地更简单更快。因此,在传统的PKI技术中,消息的发送者将产生同步会话密钥,并使用更简单更快的对称密钥***加密消息。然后,发送者将用接收者的公钥加密会话密钥。加密后的会话密钥将附到同步加密的消息,并且两个数据都发送到接收者。接收者使用他或她的私钥解密会话密钥,然后使用会话密钥来解密消息。基于以上所述,更简单更快的对称密钥***被用于大多数的加密/解密处理。因此,在解密过程1200中,解密有利地假设同步密钥已经利用用户的公钥加密了。因此,如上所述,加密后的会话密钥包括在认证请求中。
返回解密过程1200,在用户已经在步骤1205中得到认证之后,认证引擎215将加密的会话密钥转发到密码引擎220。在步骤1210中,认证引擎215将请求转发到每个数据储存设施D1至D4,请求用户的密码密钥数据。在步骤1215中,每个数据储存设施D1至D4都将密码密钥中它们各自的部分传输到密码引擎220。根据一种实施例,上述传输是用密码引擎220的公钥加密的。
在解密过程1200的步骤1220中,密码引擎220组装密码密钥并用其解密会话密钥。在步骤1225中,密码引擎将会话密钥转发到认证引擎215。在步骤1227中,认证引擎215填写包括解密后的会话密钥的认证请求,并将填好的认证请求传输到事务引擎205。在步骤1230中,事务引擎205将认证请求连同会话密钥一起转发到发出请求的应用程序或卖方。然后,根据一种实施例,发出请求的应用程序或卖方使用该会话密钥解密加密的消息。
尽管参考其优选和可选实施例公开了解密过程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可以包括信任引擎1305至1320的部分。例如,信任引擎***1300可以包括一个或多个事务引擎,一个或多个存储库,一个或多个认证引擎或者一个或多个密码引擎或者其组合。
图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可以认出所给出的数据格式的类型,并且只用这个类型响应。
在上述***的其它方面中,可以使用将如下所述的各种技术来提供背景敏感的认证。如图16所示,背景敏感的认证提供不仅评估当尝试认证用户自己时由用户发送的实际数据而且评估围绕该数据的产生和交付的情形的可能性。这种技术还可以支持用户与信任引擎110之间或卖方与信任引擎110之间的事务专用信任仲裁,如下面将要描述的。
如以上所讨论的,认证是证明一个用户就是他说的那个人的过程。总的来说,认证需要向证书机构证明一些事实。本发明的信任引擎110代表用户必须向它认证他自己的机构。用户必须通过以下任意一个来向信任引擎110展示他就是他说的那个人:知道只有该用户应该知道的一些事情(基于知识的认证)、具有只有该用户应该具有的一些东西(基于标记的认证)、或者通过是只有用户应该是的一些东西(基于生物测定的认证)。
基于知识的认证的例子包括但不限于密码、PIN号或锁定组合。基于标记的认证的例子包括但不限于房屋钥匙、物理***、司机的驾照或特定的电话号码。基于生物测定的认证的例子包括但不限于指纹、笔迹分析、面部扫描、手扫描、耳朵扫描、虹膜扫描、血管扫描、DNA、语音分析或视网膜扫描。
每种类型的认证都具有特定的优点和缺点,并且每种都提供不同的安全级别。例如,产生与某个其他人匹配的错误指纹比偶然听到某人的密码并重复它通常更难。每种类型的认证还要求不同类型的数据被证书机构知道,以便使用那种形式的认证来验证某人。
如在此所使用的,“认证”将广泛地指为验证某人的身份就是他说的那个人的全过程。“认证技术”将指基于特定的一块知识、物理标记或生物测定读数的特定认证类型。“认证数据”指发送到或者以别的方式证明给证书机构以便确立身份的信息。“注册数据”将指最初提交给证书机构以便建立用于与认证数据进行比较的基线的数据。“认证实例”将指与尝试通过认证技术进行认证有关的数据。
上面参考图10描述了在认证用户的过程中涉及到的内部协议和通信。该过程中背景敏感认证发生的那部分在如图10的步骤1045所示的比较步骤内发生。这个步骤发生在认证引擎215内并且涉及组装从存储库210取回(检索,retrieve)到的注册数据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或其它电子数据放在用户使用的***上。这种数据写到用户***的储存器并且可以包含可以被用户***上的网络浏览器或其它软件读取的识别。如果在会话之间允许这种数据驻留在用户***上(“持久的Cookie”),则在特定的用户认证期间它可以与认证数据一起发送,作为过去使用过这个***的进一步证据。事实上,给定实例的元数据,尤其是持久的Cookie,可以形成一种基于标记的认证器本身。
一旦如上所述分别在步骤1610和1615中基于认证实例的技术和数据产生了适当的可靠性因素,它们就被用于为在步骤1620中提供的认证实例产生总体可靠性。完成这个任务的一种手段是将每个可靠性简单地表达为百分比然后使它们相乘。
例如,假设认证数据是从完全根据用户过去的认证简档(100%)已知是用户的家庭计算机的网络地址发送来的,并且所使用的技术是指纹识别(97%),并且最初的指纹数据是通过具有认证引擎110的用户的雇主摆出的(roistered)(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,以便包括在给认证请求者的消息中。
上述过程只是示例性的,而且本领域技术人员将认识到,这些步骤不需要按照所示的顺序执行或者只期望执行某些步骤,或者可能期望这些步骤的各种组合。此外,如果情形允许的话,某些步骤,例如对所提供的每个认证实例的可靠性的评估,可以彼此并行地执行。
在本发明的另一方面中,提供了一种当上述过程产生的认证置信级别不满足要求认证的卖方或其他方要求的信任级别时适应这种条件的方法。在例如所提供的置信级别与期望的信任级别之间存在差距的情形下,信任引擎110的操作者要给一方或两方提供机会来提供替代数据或要求,以关闭这种信任差距。在本文中这个过程将被称为“信任仲裁”。
信任仲裁可以在如上参考图10和11所描述的密码认证框架内发生。如其中所示,卖方或其他方将请求与特定事务相关的特定用户的认证。在一种情形下,卖方简单地请求认证,要么肯定要么否定,并且在接收到来自用户的适当数据后,信任引擎110将提供这种二进制认证。在例如这些的情形下,为了保证肯定的认证,所需的置信度是基于信任引擎110内设置的偏好确定的。
但是,为了完成特定的事务,卖方还可能请求特定的信任级别。这个所需级别可以被包括在认证请求内(例如,认证该用户98%可信)或者可以由信任引擎110基于与事务相关的其它因素确定(即,将该用户认证为对于该事务是适当的)。一个这种因素可能是事务的经济价值。对于具有更大经济价值的事务,可能要求更高的信任度。同样,对于具有高度风险的事务可以要求高信任度。反之,对于低风险或低价值的事务,可以要求卖方或其他认证请求者较低的信任级别。
信任仲裁过程发生在信任引擎110在图10的步骤1050中接收认证数据与在图10的步骤1055中将认证结果返回给卖方的步骤之间。在这些步骤之间,导致对信任级别和可能的信任仲裁进行评估过程发生,如图17所示。在执行简单的二进制认证的情形下,图17所示的过程缩小成使事务引擎205将所提供的认证数据与用于被识别用户的注册数据直接进行比较,如上面参考图10所讨论的,从而将任何差别都标志为否定的认证。
如图17所示,在步骤1050中接收到数据后的第一步是让事务引擎205确定对用于步骤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中如果认证置信级别不满足所要求的信任级别,则当前的认证存在置信差距,并且在步骤1750中进行信任仲裁。下面参考图18更完整地描述信任仲裁。如下所述的这个过程发生在信任引擎110的事务引擎205内。因为(除了在事务引擎205与其它组件之间的SSL通信要求的那些之外)不需要认证或其它密码操作来执行信任仲裁,所以可以在认证引擎215外执行该过程。但是,如以下将讨论的,认证数据或其它密码或认证事件的任何重新评估都将要求事务引擎205将适当的数据重新提交给认证引擎215。本领域技术人员将认识到,信任仲裁过程能够可选地被构建成部分或全部地在认证引擎215自身当中发生。
如上所述,信任仲裁是一种在适当的时候尝试保护肯定认证中信任引擎110在卖方和用户之间对协商进行调解的过程。如步骤1805所示,事务引擎205首先确定当前的状况是否适于信任仲裁。这可以基于认证的情形,例如,该认证是否已经通过多轮仲裁,以及基于卖方或用户的偏好,进行确定,如以下将进一步讨论的。
在仲裁不可行这种情形下,过程前进到步骤1810,在步骤1810中事务引擎205产生否定认证并且随后将它插到在步骤1055(参见图10)中发送给卖方的认证结果中。可以有利地用于防止认证无限期等待的一个限制是从最初的认证请求开始设置超时时间段。以这种方式,在该时限内未被肯定认证的任何事务都被拒绝进一步仲裁并被否定认证。本领域技术人员将认识到,这种时限可以依据事务的情形以及用户和卖方的期望而变化。还可以对提供成功的认证时做出尝试的次数进行限制。这种限制可以由尝试限制器535操纵,如图5所示。
如果在步骤1805中未禁止仲裁,事务引擎205接着将参与到与事务方之一或二者的协商中。事务引擎205可以向用户发送请求某些形式的附加认证的消息,以便提高如步骤1820所示产生的认证置信级别。以最简单的形式,这可以简单地指出认证是不充分的。还可以发送产生一个或多个附加认证实例的请求,以提高认证的总体置信级别。
如果用户在步骤1825中提供一些附加的认证实例,则事务引擎205将这些认证实例添加到用于事务的认证数据中并将它转发到认证引擎215,如步骤1015所示(参见图10),并且基于为这个事务预存的认证实例和新提供的认证实例两者重新评估认证。
附加类型的认证可以是来自信任引擎110的一个请求,用于例如通过电话呼叫在信任引擎110操作者(或被信任的伙伴)与用户之间进行某种形式的人与人的接触。这种电话呼叫或其它非计算机认证可以用于提供与个人的私人接触,并且还用于进行基于认证的某种形式的问卷。当用户呼入时,这还可以给出验证来源电话号码和对用户的可能的语音分析的机会。即使不能提供附加的认证数据,与用户的电话号码相关的附加背景也可以提高认证背景的可靠性。基于这种电话号码的任何已修改的数据或情形都被馈送至信任引擎110中,以便在考虑认证请求时使用。
此外,在步骤1820中,信任引擎110可以向用户提供购买保险的机会,从而有效地购买更多的可信认证。有时候,如果认证的置信级别高于起初的某个阀值,信任引擎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中将消息发送给卖方,所述消息指出未决的认证当前处于要求的信任级别之下。该消息还可以提供关于怎样去往卖方的不同选项。这些选项之一是简单地告知卖方当前的认证置信级别是什么并且询问卖方是否希望维持他们当前尚不满足要求的信任级别。这可能是有利的,因为,在某些情况下,卖方可能具有对于认证事务而言独立的手段或者可能曾经使用了缺省设置的要求,该默认设置的要求一般会导致最初规定比对手头特定事务实际上需要的级别更高要求的级别。
例如,期望所有进入的与卖方的订购单事务都满足98%信任级别可以是标准惯例。但是,如果一个订单最近通过电话在卖方与长期消费者之间被讨论过,并且事务在其后被立即认证,但是只有93%置信级别,则卖方可能希望简单地降低用于该事务的认可阀值,因为电话呼叫给卖方有效地提供了附加认证。在某些情况下,卖方可能愿意降低他们要求的信任级别,并非总是当前的认证置信级别。例如,上述示例中的卖方可以认为订购之前的电话呼叫可以获得在所需信任度方面4%的较少;但是,这仍旧比用户产生的93%的信心大。
如果卖方在步骤1835中不调整他们要求的信任级别,就在步骤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中示出的过程。例如,消息可以是基于网络的并使用信任引擎110与小程序之间的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中,这个消息被卖方接收。该消息代表被签署的合同(使用用户的私钥加密的合同的哈希)和来自信任引擎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能够用于CDSA或现有技术中已知的其它安全性API。
当为了密码功能而进行呼叫时,这个API被用户***105或卖方***120使用。包括在这些功能当中的可以是与执行各种密码操作相关的请求,这些密码操作例如:用特定的密钥加密文档、签署文档、请求数字证书、对签署的文档上的签名进行验证,及在此所描述的或者本领域技术人员已知的此类其它密码功能。
这种密码功能通常在CAPI2010所位于的***上被本地执行。这是因为通常被调用的函数要求使用例如指纹阅读器的本地用户***105的资源,或者使用在本地机器上执行的库编程的软件函数。对这些本地资源的访问通常是由以上提到的一个或多个服务提供商模块(SPM)2015、2020提供的,这些模块提供执行密码功能所用的资源。这种SPM可以包括用于执行加密或解密操作的软件库2015,或者能够访问例如生物测定扫描设备的专用硬件2025的驱动器和应用程序2020。在CAPI 2010提供可被***105的应用程序2000使用的函数的许多方式中,SPM 2015、2020向CAPI提供对较低级别函数和与***上可用的服务相关的资源的访问。
根据本发明,有可能提供一种能够获取由信任引擎110提供的密码功能并且使这些功能通过CAPI 2010提供给应用程序2000的密码SPM 2030。与CAPI 2010仅能访问通过SPM 2015、2020本地提供的资源的实施例不同,本文所述的密码SPM 2030将能够把对密码操作的请求提交给远程定位的、网络可访问的信任引擎110,以便执行期望的操作。
例如,如果应用程序2000具有对例如签署文档的密码操作的需要,应用程序2000就对适当的CAPI 2010函数进行函数调用。CAPI2010随后将执行这个函数,使用通过SPM 2015、2020和密码SPM2030提供给它的资源。在数字签名功能的情况下,密码SPM 2030将产生适当的请求,该请求将通过通信链路125发送到信任引擎110。
在密码SPM 2030和信任引擎110之间发生的操作是相同的操作,该操作在任何其它***与信任引擎110之间都是可能的。但是,这些功能是通过CAPI 2010有效地提供给用户***105的,使得它们看起来就像是在用户***105上自身本地可用的。但是,与普通的SPM 2015、2020不同,该功能是响应跨信链路125的适当的请求而在远程信任引擎110上执行的并且结果被中继到密码SPM 2030。
这个密码SP M2030进行用户***105和卖方***120可用的许多操作,在其它情形下,这些操作可能不可用。这些功能包括但不限于:文档的加密和解密;数字证书的发布;文档的数字签署;数字签名的验证;及对本领域技术人员而言将显而易见的此类其它操作。
在一种独立的实施例中,本发明包含用于对任何数据集执行本发明的数据保护方法的一个完整***。该实施例的计算机***包括数据分割模块,该数据分割模块包括图8所示并且在本文进行了描述的功能。在本发明的一种实施例中,在本文中有时被称为安全数据解析器的数据分割模块包括解析器程序或软件套件,它包括数据分割、加密和解密、重构或重组功能。这种实施例还可以进一步包括一个数据储存设施或多个数据储存设施。数据分割模块,或者说安全数据解析器,包括跨平台软件模块套件,该套件集成在电子基础设施内,或者作为插件集成到要求其数据元素最终安全的任何应用程序中。这个解析过程对任何类型的数据集并且对任何和所有的文件类型、或者在数据库中对该数据库中的任何行、列或单元数据进行操作。
在一种实施例中,本发明的解析过程可以模块式层叠方式设计,并且任何加密过程都适于在本发明的过程中使用。本发明的解析和分割过程的模块式层叠可以包括但不限于:1)密码分割、分散并安全地存储在多个位置中;2)加密、密码分割、分散并安全地存储在多个位置中;3)加密、密码分割、对每份加密、然后分散并安全地存储在多个位置中;及4)加密、密码分割、用不同于在第一步中使用的加密类型对每份加密,然后分散并安全地存储在多个位置中。
在一种实施例中,该过程包阔根据所产生随机数或密钥的内容分割数据,并对在分割数据的加密过程中使用的密钥执行相同的密码分割,所述数据是要被保护成解析和分割后的数据的两个或更多个部分,或者说份,而且,在一种实施例中,优选被保护成解析和分割后的数据的四个或更多部分,对所有部分进行加密,然后将这些部分散开并存回数据库中,或者依赖请求者对隐私和安全的需要将它们重新定位到任何固定或移动的指定设备中。可选地,在另一种实施例中,加密可以在通过分割模块或安全数据解析器分割数据集之前发生。如在这种实施例中所描述的那样,被处理的原始数据被加密并混乱(obfuscate),从而得到保护。如果期望的话,被加密元素的分散几乎可以在任何地方,包括但不限于单个服务器或数据储存设备,或在独立的数据储存设施或设备之间。在一种实施例中,加密密钥管理可以包括在软件套件内,或者,在另一种实施例中,可以集成在现有基础设施或任何其它期望的位置中。
密码分割(cryptosplit)将数据分成N份。这种分块可以针对任何大小的数据单元,包括各个位、多位、多字节、千字节、兆字节、或更大的单元,以及不管是预定还是随机产生的数据单元大小的任何模式或组合。基于随机或预订的值集,单元还可以具有不同大小。这意味着数据可以被视为一系列这些单元。以这种方式,数据单元自身的大小可以例如通过使用一个或多个预订或随机产生的模式、序列或数据单元大小的组合使数据更安全。然后这些单元被分配成N份(随机地或通过预订的值集)。这种分配还涉及份内单元次序的洗牌。对本领域普通技术人员来说很显然的是,可以根据多种可能的选择,包括但不限于固定大小、预定大小或一个或多个组合、预订或随机产生的数据单元大小的模式或序列,来执行将数据单元分配成多份。
在这个密码分割过程的一些实施例中,数据的大小可以是任何合适的字节数,例如一、两、三、五、二十、五十、一百、多于一百或者N字节大小。这种密码分割过程或者说cryptosplit的一个特定例子将是考虑数据是23字节大小,数据单元大小选择成一个字节,并且份数选择成4。每个字节都将被分配到4份当中的一份。假设一种随机分配,将获得密钥来产生一系列23个随机数(r1,r2,r3至r23),每个数都具有对应于四份的1和4之间的值。每个数据单元(在这个例子中是数据的各字节)都与对应于四份之一的23个随机数之一相关。通过将数据的第一字节放入份r1中,字节2放入份r2中,字节三放入份r3中,直至数据的第23字节放入份r23中,将发生把数据的字节分配到四份中。对本领域普通技术人员来说很显然,很多种其它可能的步骤或一系列步骤的组合,包括数据单元的大小,都可以在本发明的密码分割过程中使用,并且上述例子是对密码分割数据的一个过程的非限制性描述。为了重建原始数据,将执行倒过来的操作。
在本发明的密码分割过程的另一种实施例中,对密码分割过程的一个选项是在多份中提供足够的冗余,使得只需要多份的一个子集就可以将数据重组或恢复成其原始或可用的形式。作为一个非限制性例子,密码分割可以作为“4分之3”密码分割来进行,使得只有4份中的三份必须用来将数据重组或恢复到其原始或可用的形式。这也被称为“N分之M密码分割”,其中N是总份数,而M至少比N小一。对本领域普通技术人员来说很显然,在本发明的密码分割过程中存在用于产生这种冗余性的许多可能性。
在本发明的密码分割过程的一种实施例中,每个数据单元被存储在两份,主要份和备份份,当中。使用上述“4分之3”密码分割过程,任何一份都可以丢失,而这足以在没有丢失的数据单元的的情况下重组或恢复原始数据,因为只要求总共四份当中的三份。如本文所描述的,生成对应于多份之一的随机数。随机数与数据单元相关,并基于密钥存储在对应的份中。在这种实施例中,使用一个密钥来产生主要和备份份随机数。如本文中对本发明的密码分割过程所描述的,生成等于数据单元数量的、从0到3的一个随机数集(也被称为主要份数)。然后,生成等于数据单元数量的、从1到3的另一个随机数集(也被称为备份份数)。然后,使每个数据单元都与一个主要份数和一个备份份数关联。可选地,可以生成少于数据单元数量的一个随机数集,并且可以重复该随机数集,但是这可能降低敏感数据的安全性。主要份数用于确定数据单元被存储到哪份中。备份份数与主要份数结合,产生0和3之间的第三份数,并且这个数字用于确定数据单元被存储到哪份中。在这个例子中,用于确定第三份数的方程为:
(主要份数+备份份数)MOD4=第三份数
在主要份数在0和3之间并且备份份数在1和3之间的上述实施例中,要确保第三份数不同于主要份数。这导致数据单元被存储在两个不同的份中。对本领域普通技术人员来说很显然,除了本文公开的实施例之外,还存在执行冗余密码分割和非冗余密码分割的许多方式。例如,每份中的数据单元都可以利用不同的算法洗牌。当原始数据被分割成多个数据单元时,或者在数据单元被放入份中之后,或者在份满了之后,可以执行这种数据单元洗牌。
可以对任何大小的数据单元,包括但不限于:小到一个个别位、多位、多字节、兆字节或更大,执行本文描述的各种密码分割过程和数据洗牌过程,及本发明的密码分割和数据洗牌方法的所有其它实施例。
将执行本文所述密码分割过程的源代码的一种实施例的例子是:
将执行本文所述密码分割RAID过程的源代码的一种实施例的例子是:
生成两个数集:主要份为0至3,备份份为1至3。然后利用与上述密码分割相同的过程将每个数据单元放入份[主要份[1]]和份[(主要份[1]+备份份[1])mod4中。这种方法将可被升级到任何大小的N,其中只需要N-1份来恢复数据。
加密数据元素的取回、重新组合、重新组装或重构可以利用任何数量的认证技术,包括但不限于生物测定,例如指纹识别、面部扫描、手扫描、虹膜扫描、视网膜扫描、耳朵扫描、血管模式识别或DNA分析。本发明的数据分割和/或解析器模块可以根据期望被集成到众多基础设施产品或应用程序中。
本领域中已知的传统加密技术依赖用于加密数据的一个或多个密钥并使它没有密钥就无用。但是,数据仍旧是整体和完整无缺的并易于遭受攻击。在一种实施例中,本发明的安全数据解析器通过执行下列步骤解决这个问题:对加密文件执行密码解析并将加密文件分割成两个或更多个部分或份,而且,在另一种实施例中,优选地是四份或多份,给每份数据添加另一层加密,然后将这些份存储在不同的物理和/或逻辑位置中。当通过使用例如数据储存设备的可拆卸设备、或通过将份置于另一方的控制之下而从***物理移走一份或多份数据时,损害被保护数据的任何可能性都被有效排除了。
本发明的安全数据解析器的一种实施例的例子和如何利用它的一个例子在图21中示出并在下面描述。但是,对本领域技术人员来说很显然,除了下面的非限制性例子之外,本发明的安全数据解析可以用多种方式加以利用。在一种实施例中,作为一个部署选项,可以用外部会话密钥管理或会话密钥的安全内部储存器实现安全数据解析器。实现之后,将生成用于保护应用程序和用于加密目的的解析器主密钥。还应该注意,在结果产生的被保护数据中结合解析器主密钥允许在工作组、企业或扩充的听众内由个人共享被保护数据的灵活性。
如图21所示,本发明的这种实施例示出了由安全数据解析器对数据执行的过程的步骤,以便存储会话主密钥与被解析数据:
1.生成会话主密钥并使用RS1流密码加密数据。
2.根据会话主人密钥的模式将结果产生的加密数据分成四份或四部分的被解析数据。
3.在该方法的这种实施例中,会话主密钥将与被保护数据份一起存储在数据存储库中。根据解析器主密钥的模式分离会话主人密钥,并将密钥数据附到加密的被解析数据。
4.结果产生的四份数据将含有原始数据被加密的部分和部分会话主密钥。为四份数据的每份产生流密码密钥。
5.加密每份,然后将加密密钥存储在与被加密的数据部分或份不同的位置:份1得到密钥4,份2得到密钥1,份3得到密钥2,份4得到密钥3。
为了恢复原始数据格式,把步骤倒过来。
对本领域技术人员来说很显然,可以根据期望按照不同的顺序或重复多次执行本文描述的方法的某些步骤。对本领域技术人员来说还很显然,可以彼此不同地处理数据的各部分。例如,可以只对被解析数据的一部分执行多个解析步骤。被解析数据的每个部分都可以用任何期望的方式唯一地加以保护,只要该数据可以被重组、重构、重新形成、解密或恢复成其原始形式或其它可用的形式。
如图22所示和本文所描述的,本发明的另一种实施例包括由安全数据解析器对数据执行的过程的多个步骤,以便将会话主密钥数据存储在一个或多个单独的密钥管理表中:
1.生成会话人密钥并使用RS1流密码加密数据。
2.根据会话主密钥的模式将结果产生的加密数据分成四份或四部分的被解析数据。
3.在本发明方法的这种实施例中,会话主密钥将存储在数据存储库中单独的密钥管理表中。生成用于这个事务的唯一事务ID。将该事务ID和会话主密钥存储在单独的密钥管理表中。根据解析器主密钥的模式分离事务ID,并将数据附到加密的被解析或被分离的数据。
4.结果产生的四份数据将包含原始数据被加密的部分和事务ID的部分。
5.生成用于四份数据中每一份的流密码密钥。
6.加密每份,然后将加密密钥存储在与加密的数据部分或份不同的位置:份1得到密钥4,份2得到密钥1,份3得到密钥2,份4得到密钥3。
为了恢复原始数据格式,步骤倒过来。
对本领域技术人员来说很显然,可以根据期望按照不同的顺序或重复多次执行本文描述的方法的某些步骤。对本领域技术人员来说还很显然,可以彼此不同地处理数据的各部分。例如,可以只对被解析数据的一部分执行多个分离或解析步骤。被解析数据的每个部分都可以用任何期望的方式唯一地加以保护,只要该数据可以被重组、重构、重新形成、解密或恢复成其原始形式或其它可用的形式。
如图23所示,本发明的这种实施例示处理了由安全数据解析器对数据执行的过程的步骤,以便存储会话主密钥连同被解析的数据:
1.获取与被认证用户相关的解析器主密钥。
2.生成唯一的会话主密钥。
3.从解析器主密钥与会话主密钥的异或函数导出中间密钥。
4.使用用中间密钥作为密钥的现有的或新的加密算法可选地加密数据。
5.根据中间密钥的模式将结果产生的被可选加密的数据分成四份或四部分的被解析数据。
6.在该方法的这种实施例中,会话主密钥将与被保护数据份一起存储在数据存储库中。根据解析器主密钥的模式分离会话主密钥,并将密钥数据附到可选加密的被解析数据份。
7.结果产生的多份数据将包含有原始数据可选加密的部分和会话主密钥的部分。
8.可选地生成用于四份数据的中每一份的加密密钥。
9.用现有或新的加密算法可选地加密每一份,然后将加密密钥存储在与加密的数据部分或份不同的位置:份1得到密钥4,份2得到密钥1,份3得到密钥2,份4得到密钥3。
为了恢复原始数据格式,步骤倒过来。
对本领域普通技术人员来说很显然,可以根据期望按照不同的顺序或重复多次执行本文描述的方法的某些步骤。对本领域技术人员来说还很显然,可以彼此不同地处理数据的各部分。例如,可以只对被解析数据的一部分执行多个解析步骤。被解析数据的每个部分都可以用任何期望的方式唯一地加以保护,只要该数据可以被重组、重构、重新形成、解密或恢复成其原始形式或其它可用的形式。
如图24所示和本文所描述的,本发明的另一种实施例包括由安全数据解析器对数据执行的过程的步骤,以便将会话主密钥数据存储在一个或多个单独的密钥管理表中:
1.获取与被认证用户相关的解析器主密钥。
2.生成唯一的会话主密钥。
3.从解析器主密钥与会话主密钥的异或函数导出中间密钥。
4.使用以中间密钥作为密钥的现有的或新的加密算法可选地加密数据。
5.根据中间密钥的模式将结果产生的可选加密的数据分成四份或四部分的被解析数据。
6.在本发明的方法的这种实施例中,会话主密钥将存储在数据存储库中单独的密钥管理表中。生成用于这个事务的唯一事务ID。将事务ID和会话主密钥存储在单独的密钥管理表中,或者将会话主密钥和事务ID传递回到于外部管理的调用程序。根据解析器主密钥的模式分离事务ID,并将数据附到可选加密的被解析或被分离的数据。
7.结果产生的四份数据将包含原始数据可选加密的部分和事务ID的部分。
8.可选地生成用于四份数据中每一份的加密密钥。
9.可选地加密每一份,然后将加密密钥存储在与加密的数据部分或份不同的位置。例如:份1得到密钥4,份2得到密钥1,份3得到密钥2,份4得到密钥3。
为了恢复原始数据格式,步骤倒过来。
对本领域普通技术人员来说很显然,可以根据期望按照不同的顺序或重复多次执行本文描述的方法的某些步骤。对本领域技术人员来说还很显然,可以彼此不同地处理数据的各部分。例如,可以只对被解析数据的一部分执行多个分离或解析步骤。被解析数据的每个部分都可以用任何期望的方式唯一地加以保护,只要该数据可以被重组、重构、重新形成、解密或恢复成其原始形式或其它可用的形式。
众多加密方法都适于在本发明的方法中使用,正如对本领域技术人员来说很显然的那样。一次填充算法经常被视为最安全的加密方法之一,并适用于本发明的方法。使用一次填充算法要求生成像待保护的数据一样长的密钥。在某些情形下可能不太期望使用这种方法,例如由于待保护数据集的大小而导致非常长密钥的产生和管理的情形。在一次填充(OTP)算法中,使用简单的异或函数,XOR。对于相同长度的两个二进制流x与y,x XOR y意味着x与y的位异或。
在位级产生:
0XOR0=0
0XOR1=1
1XOR0=1
1XOR1=0
本文中描述的这种过程的一个例子是用于待分割的n字节秘密,s,(或者数据集)。该过程将产生n字节的随机值,a,然后设置:
b=a XOR s。
应当注意,可以经该方程导出"s":
s=a XOR b
值a和b被称为份或部分并且放在单独的存储库中。一旦秘密s被分割成两份或多份,它就会以安全的方式被丢弃。
本发明的安全数据解析器可以利用这个函数,结合多个不同的秘密密钥值K1、K2、K3、Kn、K5而执行多个异或函数。在操作开始时,使待保护的数据通过第一加密操作,安全数据=数据XOR秘密密钥5:
S=D XOR K5
为了将结果产生的加密数据安全地存储在例如四份S1、S2、S3、Sn中,根据K5的值将数据解析并分割成"n"段、或份。这个操作导致原始加密数据的"n"个伪随机份。随后可以利用其余的安全密钥值对每份接着执行XOR函数,例如:安全数据段1=被加密数据份1XOR密码密钥1:
SD1=S1XOR K1
SD2=S2XOR K2
SD3=S3XOR K3
SDn=Sn XOR Kn
在一种实施例中,可能期望使任何一个存储库都包含对其中所保存的信息进行解密的足够信息,从而对份进行解密所需的密钥就被存储在不同的数据存储库中:
存储库1:SD1,Kn
存储库2:SD2,K1
存储库3:SD3,K2
存储库n:SDn,K3
此外,附到每一份的还有取回原始会话加密密钥K5所需的信息。因此,在本文描述的密钥管理例子中,原始会话主密钥被事务ID引用,根据从属的解析器主密钥(TID1、TID2、TID3、TIDn)的安装内容将事务ID分割成"n"份:
存储库1:SD1,Kn,TID1
存储库2:SD2,K1,TID2
存储库3:SD3,K2,TID3
存储库n:SDn,K3,TIDn
在本文描述的所结合的会话密钥例子中,根据从属的解析器主密钥(SK1、SK2、SK3、SKn)的安装内容将会话主密钥分割成"n"份:
存储库1:SD1,Kn,SK1
存储库2:SD2,K1,SK2
存储库3:SD3,K2,SK3
存储库n:SDn,K3,SKn
除非全部四份都取回出来,否则不能根据这个例子重组数据。即使全部四份都已捕获,也不可能不获取会话主密钥和解析器主密钥就重组或恢复原始信息。
这个例子已经描述了本发明的方法的一种实施例,并且还在另一种实施例中描述了用于将多份放入存储库从而使来自所有存储库的多份能够被组合形成秘密认证材料的算法。所需的计算是非常简单而快速的。但是,利用一次填充(OTP)算法,可能存在使它不太令人期望的情形,例如待保护的是大数据集,因为密码大小与待存储的数据大小相同。因此,将需要存储和传输大约两倍的原始数据量,在某些情形下这可能是不令人期望的。
流密码RSI
流密码RS1分割技术非常类似于本文描述的OTP分割技术。生成n'=min(n,16)-字节随机值,而不是n-字节随机值,并用作RS1流密码算法的密钥。RS1流密码算法的优点在于伪随机密钥是由更小的种子数产生的。在不损害安全性的前提下,RS1流密码加密的执行速度大约是现有技术中已知的三重数据加密标准(“Triple DES”或“3DES”)加密的速度的10倍。RS1流密码算法在本领域中是众所周知的,并且可以用于产生在XOR函数中使用的密钥。RS1流密码算法与例如RSA安全公司的RC4TM流密码算法的其它可以买到的流密码算法是可互操作的,并适于在本发明的方法中使用。
使用上面的密码记号,现在K1至K5是n字节随机值并且我们设置:
SD1=S1XOR E(K1)
SD2=S2XOR E(K2)
SD3=S3XOR E(K3)
SDn=Sn XOR E(Kn)
其中,E(K1)至E(Kn)是从用K1至Kn作为密钥的RS1流密码算法输出的前n个字节。现在各份被放在各数据存储库中,如本文所描述的。
在这种流密码RS1算法中,所要求的计算差不多像OTP算法一样简单而且快速。在这个例子中,使用RS1流密码的好处在于***对每份需要存储和传输比待保护的原始数据的大小平均只大大约16字节。当原始数据的大小大于16字节时,这个RS1算法比OTP算法更有效,因为简单地说它更短。对本领域普通技术人员来说很显然,多种加密方法或算法都适于在本发明中使用,包括但不限于RS1、OTP、RC4TM、Triple DES和先进加密标准(“AES”)。
本发明的数据安全方法和计算机***比传统加密方法提供重要的优点。一个优点是由于将多份数据移到一个或多个数据存储库或储存设备上的不同位置从而它们可以在不同的逻辑、物理或地理位置中而由此获得的安全性。当多份数据被物理分割并处于不同人员的控制时,例如,损害数据的可能性被大大降低。
本发明的方法和***提供的另一个优点是用于保护数据的本发明方法步骤的组合,用于提供维持敏感数据安全性的综合过程。数据用安全密钥加密并且被分割成一份或多份,而且,在一种实施例中,根据安全密钥,是四份。安全密钥与参考指针一起被安全地存储,参考指针根据安全密钥被保护成四份。然后,多份数据各自加密并且密钥用不同的加密份安全地存储。当组合到一起时,用于根据本文公开的方法保护数据的整个过程变成用于数据安全的综合包。
根据本发明的方法保护的数据易于被取回和恢复、重构、重组、解密或以别的方式返回到其原始形式或其它适当的形式,以便于使用。为了恢复原始数据,可以利用下列项:
1.数据集的所有份或部分。
2.用于重现用于保护数据的方法的过程流的知识和能力。
3.获取会话主密钥。
4.获取解析器主密钥。
因此,计划一种安全的安装可能是期望的,其中,至少一个上面的元件可以与***的其余组件物理分离(例如,在不同的***管理员的控制下)。
防止调用数据保护方法的流氓应用程序的保护策略可以通过使用解析器主人密钥来加强。在本发明的这种实施例中,在采取任何动作之前,可能要求安全数据解析器与应用程序之间的相互认证握手。
***的安全性指出不存在用于重建原始数据的“后门”方法。对于可能出现数据恢复问题的安装,可以增强安全数据解析器以提供四份和会话主密钥存储库的镜像。例如RAID(廉价磁盘冗余阵列,用于在几个盘上分散信息)的硬件选项和例如复制的软件选项也可以帮助数据恢复计划。
密钥管理
在本发明的一种实施例中,数据保护方法使用三个密钥集用于加密操作。每个密钥集都可以基于安装具有各自的密钥储存、取回、安全性和恢复选项。可以使用的密钥包括但不限于:
解析器主密钥
这个密钥是与安全数据解析器的安装相关的各自的密钥。它安装在安全数据解析器已经部署于其上的服务器上。存在适于保护这个密钥的多种选项,包括但不限于例如智能卡、单独的硬件密钥存储、标准密钥存储、定制密钥存储或者在受保护的数据库表内。
会话主密钥
可以在每次数据被保护时产生会话主密钥。会话主密钥用于在解析和分割操作之前加密数据。它还可以作为解析被加密数据的一种手段被结合(如果会话主密钥未集成到被解析的数据中)。会话主密钥可以用多种方式进行保护,包括但不限于例如例如标准密钥存储、定制密钥存储、单独的数据库表或者被保护在受加密的份内。
份加密密钥
对于产生的数据集的每份或部分,可以产生各自的份加密密钥,以便进一步加密各份。份加密密钥可以存储在与加密的份不同的份中。
对本领域普通技术人员来说很显然,本发明的数据保护方法和计算机***可广泛应用于任何场景或环境中的任何类型的数据。除了通过互联网或在消费者和卖方之间进行的商业应用之外,本发明的数据保护方法和计算机***非常适用于非商业或私人的场景或环境。期望阻止任何未授权用户而保持安全的任何数据集都可以使用本文描述的方法和***加以保护。例如,通过采用本发明的用于保护数据的方法和***,对公司或组织内的特定数据库的访问可以有利地限制到只是选定的用户。另一个例子是文档的生成、修改或访问,其中期望在一组选定的个人、计算机或工作站之外限制访问或者防止未授权或偶然的访问或公开。本发明的数据保护方法和***可应用于任何非商业或商业环境或者任何设置的方式的这些和其它例子包括但不限于任何组织、政府机构或公司。
在本发明的另一种实施例中,数据保护方法使用三个密钥集用于加密操作。每个密钥集都可以基于安装具有各自的密码储存、取回、安全性和恢复选项。可以使用的密钥包括但不限于:
1.解析器主密钥
这个密钥是与安全数据解析器的安装相关的各自的密钥。它安装在安全数据解析器已经部署于其上的服务器上。存在适于保护这个密钥的多种选项,包括但不限于例如智能卡、单独的硬件密钥存储、标准密钥存储、定制密钥存储或者在受保护的数据库表内。
2.会话主密钥
可以在每次数据被保护时产生会话主密钥。会话主密钥与解析器主密钥相结合使用以导出中间密钥。会话主密钥可以用多种方式进行保护,包括但不限于例如标准密钥存储、定制密钥存储、单独的数据库表、或者被保护在加密的份内。
3.中间密钥
可以在每次数据被保护时产生中间密钥。中间密钥用于在解析和分割操作之前加密数据。它还可以作为解析加密数据的一种手段被结合。
4.份加密密钥
对于产生的数据集的每份或每部分,可以产生各自的份加密密钥,以便进一步加密各份。份加密密钥可以存储在与加密的份不同的份中。
对本领域普通技术人员来说很显然,本发明的数据保护方法和计算机***可广泛应用于任何场景或环境中的任何类型的数据。除了通过互联网或在消费者和卖方之间进行的商业应用之外,本发明的数据保护方法和计算机***非常适用于非商业或私人的场景或环境。期望阻止任何未授权用户而保持安全的任何数据集都可以使用本文描述的方法和***加以保护。例如,通过采用本发明的用于保护数据的方法和***,对公司或组织内的特定数据库的访问可以有利地限制到只是选定的用户。另一个例子是文档的生成、修改或访问,其中期望在一组选定的个人、计算机或工作站之外限制访问或者防止未授权或偶然的访问或公开。本发明的数据保护方法和***可应用于任何非商业或商业环境或者任何设置的方式的这些和其它例子包括但不限于任何组织、政府机构或公司。
工作组、项目、个人PC/膝上型电脑或交叉平台数据安全
本发明的数据保护方法和计算机***在通过工作组、项目、个人PC/膝上型电脑和在例如商业、办公室、政府机构中使用的任何其它平台保护数据中,或者在敏感数据被产生、操纵或存储于其中的任何设置中,也是有用的。本发明提供用于保护数据的方法和计算机***,已知这是例如美国政府的组织所寻找的,用于在整个政府组织中或在州或联邦级的政府之间实现。
本发明的数据保护方法和计算机***不仅提供解析和分割平面文件的能力,而且提供解析和分割任何类型的数据域、集和/或表的能力。此外,所有的数据形式都能够根据这个过程被保护,包括但不限于文本、视频、图像、生物测定和语音数据。本发明的保护数据方法的可量测性、速度和数据吞吐量仅限于用户可随机处理的硬件。
在本发明的一种实施例中,数据保护方法在工作组环境中被如下利用。在一种实施例中,如图23所示和如下描述的,本发明的工作组规模数据保护方法使用信任引擎的私钥管理功能来存储一组用户共享安全数据所必须的用户/组关系和相关的私钥(解析器组主密钥)。本发明的方法依赖解析器主密钥怎样部署而具有为企业、工作组或个人用户保护数据的能力。
在一种实施例中,可以提供附加的密钥管理和用户/组管理程序,从而使得可以利用单点行政和密钥管理实现大规模的工作组。由单个维护程序操纵密钥产生、管理和废止,随着用户数量的增加,这些全都变得特别重要。在另一种实施例中,还可以跨一个或几个不同的***管理员建立密钥管理,根据需要,这可能不允许任何一个人或组控制数据。这允许通过如由组织定义的角色、责任、成员资格、权利等获得对被保护数据的管理,并且对被保护数据的访问能够限制到只是被允许或要求有权访问仅仅是他们正在工作的那部分的那些人,而例如经理或行政领导的其他人可以有权访问所有被保护的数据。这种实施例允许被保护数据在公司或组织内的不同组当中的共享,但是,同时,只允许例如具有授权和预定角色和责任的某些选定个人看到全部数据。另外,本发明方法和***的这种实施例还允许在例如单独的公司、或公司中单独的部门或单位、或任何单独的组织部门、组、机构、或办公室等当中共享数据,其中一些共享是被要求的,但并非任何一方都可以被允许有权访问所有数据。对于本发明这种方法和***的需要和功用的尤其明显的例子是在政府区域、机构和办公室之间,及大公司或任何其它组织的不同单位、部门或办公室之间允许共享,但维持安全性。
本发明方法在更小规模上的适用性的一个例子如下。解析器主密钥用作安全数据解析器对一个组织的序列化或品牌化。由于解析器主密钥的使用规模由整个企业减小到更小的工作组,因此本文描述的数据保护方法用于在用户组内共享文件。
在图25所示和下面描述的例子中,存在连同他们在组织内的头衔或角色一起定义的六个用户。边条代表用户根据他们的作用能够属于的五个可能的组。箭头代表用户在一个或多个组中的成员资格。
当配置安全数据解析器以便在这个例子中使用时,***管理员通过维护程序从操作***访问用户和组信息。这个维护程序产生解析器组主密钥并基于用户在组中的成员资格将解析器组主密钥分配给用户。
在这个例子中,在资深职员组中有三个成员。对于这个组,动作将是:
1.获取用于资深职员组的解析器组主密钥(如果不可用,就生成一个密钥);
2.生成将CEO与资深职员组关联的数字证书;
3.生成将CFO与资深职员组关联的数字证书;
4.生成将销售副总裁与资深职员组关联的数字证书。
将对每个组和每个组内的每个成员进行相同的动作集。当维护程序完成时,解析器组主密钥成为用于组的每个成员的共享证件。当通过维护程序从组中去除一个用户时,可以自动做出对被分配数字证书的废止,而不影响组中其余的成员。
一旦已经定义了共享证件,解析和分割过程就保持相同。当文件、文档或数据元素要被保护时,提示用户在保护数据时要使用的目标组。结果产生的被保护数据只可以由目标组的其他成员访问。本发明方法和***的这个功能可以用于任何其它计算机***或软件平台,并且可以例如集成到现有的应用程序中或者为了文件安全而独立使用。
对本领域普通技术人员来说很显然,加密算法中的任何一种或者其组合都适于在本发明的方法和***中使用。例如,在一种实施例中,加密步骤可以重复,以便产生多层加密方案。此外,不同的加密算法或者加密算法的组合可以在重复加密步骤中使用,使得不同的加密算法被应用于多层加密方案的不同层。这样,加密方案本身可以变成本发明用于防止未授权的使用或访问而保护敏感数据的方法的一个组成部分。
安全数据解析器可以包括作为内部组件、作为外部组件或者作为两者的错误校验组件。例如,在一种合适的方法中,当根据本发明使用安全数据解析器产生多个数据部分时,为了确保数据在一个部分内的完整性,在该部分内以预设的间隔取得哈希值并附到间隔的末尾。哈希值是数据的可预测和可重现的数字表示。如果数据内有任何位发生改变,哈希值将会不同。然后,扫描模块(或者作为安全数据解析器外部的独立组件,或者作为内部组件)可以扫描由安全数据解析器产生的多个数据部分。每个数据部分(或者可选地,根据某个间隔或者通过随机或伪随机采样的小于全部的数据部分)与所附的一个或多个哈希值进行比较,并且可以采取动作。这种动作可以包括匹配和不匹配的值的报告、对不匹配的值的警告或者调用一些外部或内部程序来触发数据的恢复。例如,根据本发明,基于可能需要比全部部分少的较少部分来产生原始数据的概念,能够通过调用恢复模块来执行对数据的恢复。
利用附到数据部分的全部或一个子集中任何地方的任何合适的完整性信息,任何其它合适的完整性校验都可以实现。完整性信息可以包括能够用于确定数据部分的完整性的任何合适信息。完整性信息的例子可以包括基于任何合适参数(例如,基于各数据部分)、数字签名信息、消息认证代码(MAC)信息、任何其它合适信息或其任何组合而计算的哈希值。
本发明的安全数据解析器可以在任何合适的应用中使用。即,本文所述的安全数据解析器在不同的计算领域和技术中具有多种应用。下面讨论几个这种领域。应当理解,这些本质上都只是说明性的并且任何其它合适的应用都可以使用安全数据解析器。还应当理解,所描述的例子只是说明性实施例,为了满足任何合适的需要,它可以按照任何合适的方式更改。例如,解析和分割可以基于任何合适的单位,例如通过位、字节、千字节、兆字节或其任何组合或者任何其它合适的单位。
本发明的安全数据解析器可以用于实现安全物理标记,由此可能要求存储在物理标记中的数据,以便访问存储在另一个储存区域中的其它数据。在一种合适的方法中,例如小型USB闪存驱动器、软盘、光盘、智能卡的物理标记或任何其它合适的物理标记都可以根据本发明用于存储至少两个被解析数据部分之一。为了访问原始数据,将需要访问USB闪存驱动器。因此,在能够访问原始数据之前,保存一个被解析数据部分的个人计算机将需要让包括另一个被解析数据部分的USB闪存驱动器附连。图26说明了这种应用。储存区2500包括被解析数据部分2502。具有被解析数据部分2506的物理标记2504将需要使用任何合适的通信接口2508(例如USB、串行接口、并行接口、蓝牙、红外线、IEEE 1394、以太网或任何其它合适的通信接口)与储存区2500耦合,以便访问原始数据。这在例如计算机上的敏感数据被留下不管并遭受未授权访问尝试的状况下是有用的。通过去除物理标记(例如USB闪存驱动器),敏感数据不可访问。应当理解,可以使用任何其它适当的方法来使用物理标记。
本发明的安全数据解析器可以用于实现安全认证***,由此使用安全数据解析器解析和分割用户注册数据(例如密码、私人加密密钥、指纹模板、生物测定数据或任何其它合适的用户注册数据)。用户注册数据可以被解析和分割,由此一个或多个部分存储在智能卡、政府公共访问卡、任何何事的物理储存设备(例如磁盘或光盘、USB密钥驱动器等)或任何其它合适的设备。一个或多个被解析的用户注册数据的其它部分可以存储在执行认证的***中。这给认证过程提供了增加的安全级别(例如,除了从生物测定源获得的生物测定认证信息之外,还必须经由适当的被解析和分割的数据部分获得用户注册数据)。
本发明的安全数据解析器可以被集成到任何合适的现有***中,以便在每个***各自的环境中提供对其功能的使用。图27示出了说明性***2600的框图,说明性***2600可以包括软件、硬件或者两者都包括,以便实现任何合适的应用。说明性***2600可以是现有的***,其中,安全数据解析器2602可以被改型为集成的组件。可选地,安全数据解析器2602可以例如从其最早的设计阶段就被集成到任何合适的***2600中。安全数据解析器2602可以集成在***2600中任何合适的级。例如,安全数据解析器2602可以集成在***2600中足够后端的级,使得安全数据解析器2602的存在对于***2600的终端用户来说可以是基本透明的。根据本发明,安全数据解析器2602可以用于对一个或多个储存设备2604当中的数据进行解析和分割。以下讨论其中集成了安全数据解析器的***的一些说明性例子。
本发明的安全数据解析器可以集成在操作***内核(例如Linux、Unix或任何其它合适的商业或专有的操作***)中。这种集成可以用于在设备级保护数据,由此,例如,通过集成在操作***中的安全数据解析器,平常将存储在一个或多个设备中的数据被分成一定数量的部分并存储在一个或多个设备当中。当尝试访问原始数据时,同样集成在操作***中的适当的软件可以按照对于终端用户来说可以是透明的方式将被解析数据部分重组成原始数据。
本发明的安全数据解析器可以集成在卷管理器或者储存***中任何其它合适的组件当中,以便跨任何或所有支持平台保护本地和联网的数据储存。例如,利用集成的安全数据解析器,储存***可以使用由安全数据解析器提供的冗余性(即,为了重构原始数据,它用于实现比所有被分离的数据部分需求更少的特征),以保护数据不丢失。安全数据解析器还允许写入储存设备的所有数据,无论是否使用冗余性,都具有根据本发明的解析所产生的多个部分的形式。当尝试访问原始数据时,同样被集成在储存***的卷管理器或其它适当组件中的适当软件可以按照对于终端用户来说可以是透明的方式将被解析数据部分重组成原始数据。
在一种合适的方法中,本发明的安全数据解析器可以集成在RAID控制器中(作为硬件或软件)。这允许将数据安全储存到多个驱动器中,同时在驱动器故障的情形下维持容错性。
本发明的安全数据解析器可以集成在数据库中,以便例如保护敏感的表信息。例如,在一种合适的方法中,与数据库表的特定单元(例如,个别单元、一个或多个特定的列、一个或多个特定的行、其任何组合或者整个数据库表)关联的数据可以根据本发明被解析和分离(例如,不同部分被存储在一个或多个储存设备的一个或多个位置,或者单个储存设备上)。为了查看原始数据而重组多部分的访问可以被传统认证方法(例如用户名和密码询问)准许。
本发明的安全数据解析器可以集成在涉及运动数据(即,从一个位置到另一个位置的数据传送)的任何合适***中。这种***包括例如电子邮件、流数据广播和无线(例如WiFi)通信。在一种合适的方法中,关于电子邮件,安全数据解析器可以用于解析外出消息(即,含有文本、二进制数据或两者都包括(例如附到电子邮件消息的文件))并沿着不同路径发送被解析数据的不同部分,因此产生多个数据流。如果这些数据流中的任何一个被损害,原始数据仍保持安全,因为,根据本发明,***可以要求多于一个部分进行组合,以便产生原始数据。在另一种合适的方法中,不同的数据部分可以沿着一条路径顺序传送,从而,如果一部分被获得,它可能不足以产生原始数据。根据本发明,不同的部分到达预期接收者的位置并可以被组合,以便产生原始数据。
图28和29是这种电子邮件***的说明性框图。图28示出了发送者***2700,发送者***2700可以包括任何合适的硬件,例如计算机终端、个人计算机、手持设备(例如PDA、Blackberry)、蜂窝电话、计算机网络、任何其它适当的硬件或者其任何组合。发送者***2700用于生成和/或存储消息2704,消息2704可以是例如电子邮件消息、二进制数据文件(例如图形、语音、视频等)或两者都有。根据本发明,消息2704通过安全数据解析器2702被解析和分割。结果产生的数据部分可以经网络2708(例如,互联网、内联网、LAN、WiFi、蓝牙、任何其它合适的硬连线或无线的通信装置或者其任何组合)跨一个或多个分离的通信路径2706传送给接收者***2710。数据部分可以在时间上并行地或者,可选地,根据不同数据部分的传送之间的任何合适的时间延迟进行通信。接收者***2710可以是如上关于发送者***2700所述的任何合适的硬件。根据本发明,沿着通信路径2706输送的单独的数据部分在接收者***2710处被重组,以便产生原始消息或数据。
图29示出了发送者***2800,发送者***2800可以包括任何合适的硬件,例如计算机终端、个人计算机、手持设备(例如PDA)、蜂窝电话、计算机网络、任何其它合适的硬件或者其任何组合。发送者***2800用于生成和/或存储消息2804,消息2804可以是例如电子邮件消息、二进制数据文件(例如图形、语音、视频等)或两者都有。根据本发明,消息2804通过安全数据解析器2802被解析和分割。结果产生的数据部分可以经网络2808(例如互联网、内联网、LAN、WiFi、蓝牙、任何其它合适的通信手段或者其任何组合)跨单条通信路径2806传送给接收者***2810。数据部分可以相对于彼此跨通信路径2806串行传送。接收者***2810可以是如上关于发送者***2800所述的任何合适的硬件。根据本发明,沿着通信路径2806输送的单独的数据部分在接收者***2810处被重组,以便产生原始消息或数据。
应当理解,图28和图29的布置只是说明性的。任何其它合适的布置都可以使用。例如,在另一种合适的方法中,图28和29的***的特征可以组合,由此使用图28的多路径方法并且其中一条或多条通信路径2706用于输送多于一部分数据,正如通信路径2806在图29的背景中做的那样。
安全数据解析器可以集成在运动数据***的任何合适的级。例如,在电子邮件***的背景中,安全数据解析器可以集成在用户接口级(例如,在Outlook中),在这种情形下,当使用电子邮件时,用户可以对安全数据解析器特征的使用进行控制。可选地,安全数据解析器可以在例如交换服务器的后端组件中实现,在这种情形下,根据本发明,消息可以没有任何用户干预地自动被解析、分割、并沿着不同路径传送。
类似地,在数据的流广播(例如音频、视频)的情形下,外出数据可以被解析并分成多个流,每个流都包含一部分被解析的数据。根据本发明,多个流可以沿着一条或多条路径传输并在接收者的位置被重组。这种方法的好处之一在于避免与随后跟着单个通信信道上加密数据的传输的传统数据加密相关的相对大管理费用。本发明的安全数据解析器允许运动数据在多个并行的流中发送,从而提高了速度和效率。
应当理解,安全数据解析器可以被集成,用于对通过任何运输介质,包括例如有线、无线、或物理的运输介质,的任何类型的运动数据的保护和容错性。例如,网络电话(VoIP)应用程序可以使用本发明的安全数据解析器。来往于例如Blackberry和智能电话的任何合适个人数字助理(PDA)设备之间进行输送的无线或有线数据可以使用本发明的安全数据解析器进行保护。根据本发明,使用用于对等和基于集线器的无线网络的无线802.11协议的通信、卫星通信、点对点无线通信、互联网客户端/服务器通信、或任何其它合适的通信可能涉及安全数据解析器的运动数据能力。计算机外设(例如,打印机、扫描仪、监视器、键盘、网络路由器、生物测定认证设备(例如,指纹扫描仪)或者任何其它合适的外设)之间、计算机与计算机外设之间、计算机外设与任何其它合适的设备之间或者其任何组合的数据通信都可以使用本发明的运动数据特征。
本发明的运动数据特征还可以应用于使用例如单独的路由、交通工具、方法、任何其它合适的物理运输或者其任何组合来物理运输安全份。例如,数据的物理运输可以发生在数字/磁带、软盘、光盘、物理标记、USB驱动器、可拆卸硬盘驱动器、具有闪存存储器的消费者电子设备(例如Apple IPOD或其它MP3播放器)、闪存存储器、用于运输数据的任何其它合适的介质或者其任何组合上。
本发明的安全数据解析器可以提供安全性,具有灾难恢复能力。根据本发明,为了取回原始数据,比由安全数据解析器产生的被分离数据的所有部分少的部分可能是必需的。即,在被存储的m个部分中,n可以是取回原始数据必需的这m个部分中最小的数量,这里n<=m。例如,如果四个部分中每一个都存储在相对于其它三个部分不同的物理位置,那么,如果在这个例子中n=2,两个位置就可能被损害,由此数据被毁坏或不可访问,但是原始数据仍然可以通过另外两个位置中的部分取回。用于n或m的任何合适的值都可以使用。
此外,本发明的m分之n特征可以用于产生“两人规则”,由此,为了避免委托单个个人或任何其它实体可完全访问可能是敏感的数据,可能需要两个或更多个不同的实体同意将他们的部分放到一起以便取回原始数据,其中每个实体都具有通过本发明的安全数据解析器解析的被分离数据的一部分。
本发明的安全数据解析器可以用于给一组实体提供全组密钥,该全组密钥允许组成员访问授权被那个特定组访问的特定信息。组密钥可以是由安全数据解析器根据本发明产生的数据部分之一,例如,为了取回所寻找的信息,可能要求这个数据部分与集中存储的另一个部分组合。例如,这个特征允许保护一组当中的合作。它可以应用在例如专用网络、虚拟私人网络、内联网或任何其它合适的网络中。
安全数据解析器的这种用途的具体应用包括例如联合信息共享,其中例如多国友好的政府部队被赋予通过单个网络或双网络(即,当与涉及当前使用的相对而言基本上是人工过程的许多网络相比)在授予每个对应国家的安全级别上传送可操作和别的敏感数据的能力。这种能力还可用于公司或其它组织,其中,(组织内或组织外的)一个或多个具体的个人需要知道的信息可以经单个网络传送,而不需要担心未授权的个人看到信息。
另一个具体应用包括用于政府***的多层安全体系。即,本发明的安全数据解析器可以使用单个网络提供以不同级别的分类信息(例如,未分类的、分类的、秘密、顶级秘密)操作政府***的能力。如果期望,可以使用更多的网络(例如,用于顶级秘密的单独的网络),但是本发明允许比单独网络用于每个级别分类的当前装置基本上更少的装置。
应当理解,可以使用本发明的安全数据解析器的上述应用的任何组合。例如,组密钥应用能够与运动数据安全应用一起使用(即,由此,通过网络传送的数据只能够被各组的成员访问,并且其中,当数据在运动时,根据本发明,它在多条路径当中被分割(或者按顺序的部分发送))。
本发明的安全数据解析器可以集成在任何中间件应用中,以便使应用能够将数据安全地存储在不同的数据库产品或不同的设备中,而不更改该应用或者所述数据库。中间件是用于允许两个独立并且已经存在的程序通信的任何产品的通用术语。例如,在一种合适的方法中,具有集成的安全数据解析器的中间件可以用于允许为特定数据库书写的程序在无定制编码的情况下与其它数据库通信。
本发明的安全数据解析器可以实现为具有例如本文所讨论的任何合适能力的任何组合。在本发明的一些实施例中,例如,安全数据解析器可以实现为只具有某些能力,而其它能力可以通过使用外部软件、硬件或者这两者获得,其中外部软件和硬件直接或间接地与安全数据解析器接口。
例如,图30示出了一种作为安全数据解析器3000的安全数据解析器的说明性实现。安全数据解析器3000可以实现为具有非常少的内置能力。如所说明的,根据本发明,安全数据解析器3000可以包括用于使用模块3002将数据解析和分割成多个数据部分(在本文中也被称为份)的内置能力。安全数据解析器3000还可以包括用于执行冗余性的内置能力,以便能够使用模块3004实现例如上述的n分之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及其外部模块(即,安全数据解析器层3026)集成到应用层3024(例如,电子邮件应用程序、数据库应用程序等)中,可以使用包装层,其中包装层可以使用例如API函数调用。可以使用用于方便将安全数据解析器层3026集成到应用层3024中的任何其它合适的布置。
图31说明性地示出了当写(例如,写到储存设备)、***(例如,在数据库域中***)、或传输(例如,跨网络传输)命令在应用层3024中被发出时,可以怎样使用图30的装置。在步骤3100,识别待保护的数据并且对安全数据解析器进行调用。该调用被传递通过包装器层3022,在步骤3102,包装器层3022将在步骤3100识别出的输入数据流化到组装数据缓冲器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是根据本发明的一种实施例、用于将原始数据解析和分割成两个或更多个数据部分的说明性过程流的框图。如所说明的,期望被解析和分割的原始数据是平面文本3306(即,单词"SUMMIT"被用作一个例子)。应当理解,根据本发明,任何类型的数据都可以被解析和分割。生成会话密钥3300。如果会话密钥3300的长度与原始数据3306的长度不兼容,可以生生成密码反馈会话密钥3304。
在一种合适的方法中,原始数据3306可以在被解析、分割或者既解析又分割之前加密。例如,如图33所说明的,原始数据3306可以与任何合适的值XOR(例如,与密码反馈会话密钥3304,或者与任何其它合适的值)。应当理解,代替所说明的XOR技术或者除此之外,任何其它合适的加密技术都可以使用。还应当理解,尽管图33是按照逐字节操作的方式说明的,但是该操作可以在位级或任何其它合适的级别发生。还应当理解,如果期望的话,无论什么情形可能都不需要对原始数据3306的任何加密。
然后,结果产生的加密数据(或者如果不发生加密的话就是原始数据)被哈希,以确定在输出的大量数据(例如,在所说明的例子中有四个)当中怎样分割加密的(或原始的)数据。在所说明的例子中,哈希按字节发生并且是密码反馈会话密钥3304的函数。应当理解,这只是说明性的。如果期望的话,可以在位级执行哈希。哈希可以是除了密码反馈会话密钥3304之外的任何其它合适的值的函数。在另一种合适的方法中,不需要使用哈希。而是可以采用任何其它合适的技术来分割数据。
图34是根据本发明一种实施例、用于从原始数据3306的两个或更多个被解析和被分割部分恢复原始数据3306的说明性过程流的框图。该过程涉及作为密码反馈会话密钥3304的函数对部分进行反向哈希(即,对图33的过程),以恢复加密的原始数据(或者,如果在解析和分割之前没加密的话就是原始数据)。然后加密密钥可以用于恢复原始数据(即,在所说明的例子中,密码反馈会话密钥3304用于通过使它与被加密数据XOR而对XOR加密进行解密)。这可以恢复原始数据3306。
图35示出可以怎样在图33和34的例子中实现位分割。可以使用哈希(例如,作为密码反馈会话密钥的函数,作为任何其它合适值的函数)来确定分割数据的每个字节所在的位值。应当理解,这只是在位级实现分割的一种说明性方式。可以使用任何其它合适的技术。
应当理解,本文中对哈希功能所做的任何参考都可以关于任何合适的哈希算法做出。这些包括例如MD5和SHA-1。不同的哈希算法可以在不同的时间并且被本发明的不同组件使用。
在根据上述说明性过程或通过任何其它过程或算法确定了分割点之后,可以作出关于哪个数据部分附于左和右段中每一段的确定。任何合适当的算法都可以用于做出这个确定。例如,在一种合适的方法中,可以产生一张所有可能分配的表(例如,具有为左段和为右段配对的目的地的形式),由此可以通过对在会话密钥、密码反馈会话密钥、或可以被产生或延伸到原始数据大小的任何其它合适的随机或伪随机值中的相应数据使用任何适当的哈希函数来确定用于左段和右段中每一个的目的地份值。例如,可以获得具有随机或伪随机值形式的相应字节的哈希函数。哈希函数的输出用于确定从全部目标组合的表中选择哪对目的地(即,一个用于左段而另一个用于右段)。基于这个结果,被分割数据单元的每一段都被附到由作为哈希函数结果而选择的表值所指出的对应的两份。
根据本发明,冗余信息可以附到数据部分,以便允许使用比全部数据部分少的数据部分来恢复原始数据。例如,如果期望四个部分中的两个就足以恢复数据,那么来自多份的其它数据可以因而以例如循环(round-robin)方式附到每一份(例如,原始数据的大小是4MB,则份1得到它自己的份以及份2和3的份;份2得到它自己的份以及份3和4的份;份3得到它自己的份以及份4和1的份;并且份4得到它自己的份以及份1和2的份)。根据本发明,可以使用任何此类合适的冗余。
应当理解,根据本发明,任何其它合适的解析和分割方法都可以用于从原始数据集产生多个数据部分。例如,可以在逐位的基础上随机或伪随机地处理解析和分割。可以使用随机或伪随机值(例如会话密钥、密码反馈会话密钥等),由此对于原始数据中的每位,哈希函数对具有随机或伪随机值形式的相应数据的结果可以指出哪份附到对应的位。在一种合适的方法中,随机或伪随机值可以被产生或扩展到原始数据大小的8倍,使得哈希函数可以关于原始数据的每一位在随机或伪随机值的相应字节上执行。根据本发明,可以使用对在逐位级上解析和分割数据的任何其它合适的算法。根据本发明,还应当意识到,冗余数据可以按例如用刚刚描述过的方式附到数据份。
在一种合适的方法中,解析和分割不需要是随机或伪随机的。而是可以使用用于解析和分割数据的任何合适的确定性算法。例如,可以采用将原始数据分解成按顺序的份作为解析和分割算法。另一个例子是逐位解析和分割原始数据,将每个对应的位按照循环方式按顺序附到多个数据份。根据本发明,还将意识到,冗余数据可以例如用上述方式附到数据份。
在本发明的一种实施例中,在安全数据解析器产生原始数据的多个部分之后,为了恢复原始数据,某一个或多个产生的部分可以是强制的。例如,如果一个部分被用作认证份(例如,保存在物理标记设备上),并且如果使用安全数据解析器的容错性特征(即,需要比全部部分少的部分来恢复原始数据),那么,即使安全数据解析器可以有权访问原始数据的足够数量的部分,以便恢复原始数据,但是在它恢复原始数据之前它也可能需要存储在物理标记设备上的认证份。应当理解,基于例如应用程序、数据类型、任何其它合适的因素或者其任何组合,可能要求任何数量和类型的特定份。
在一种合适的方法中,安全数据解析器或安全数据解析器的一些外部组件可以加密原始数据的一个或多个部分。为了恢复原始数据,可能要求提供加密部分并对其解密。不同的加密部分可以用不同的加密密钥进行加密。例如,这个特征可以用于实施更安全的“两人规则”,由此,第一用户将需要具有使用第一加密加密的特定份,而第二用户将需要具有使用第二加密加密的特定份。为了访问原始数据,两个用户都将需要具有他们各自的加密密钥并且提供原始数据中他们各自的部分。在一种合适的方法中,公钥可以用于加密可以是被要求用于恢复原始数据的强制份的一个或多个数据部分。然后私钥可以用于对份进行解密,以便用于恢复成原始数据。
使用强制份的任何此类合适范例都可以使用,在这种范例中需要比全部份更少的份来恢复原始数据。
在本发明的一种合适的实施例中,将数据分配成有限数量的数据份可以随机或伪随机地进行处理,使得从统计学的观点上看,任何特定的数据份接收特定的数据单元的概率等于任何一个其余的份将接收到该数据单元的概率。因此,每份数据都将具有近似相等量的数据位。
根据本发明的另一种实施例,有限数量的数据份中的每一个不需要具有从解析和分割的原始数据接收数据单元的相等概率。而是某一份或几份可以具有比其余份更高或更低的概率。因此,某些份相对于其它份就位大小而言可以更大或更小。例如,在两份的场景中,一份可以具有1%接收单元数据的概率而第二份具有99%的概率。因此,应该注意的是,一旦已经通过安全数据解析器在两份当中分配了数据单元,第一份就应该具有大约1%的数据而第二份具有大约99%的数据。根据本发明,可以使用任何合适的概率。
应当理解,安全数据解析器可以编程为也根据精确的(或接近精确的)百分比将数据分配给份。例如,安全数据解析器可以编程为把80%的数据分配给第一份而把其余20%的数据分配给第二份。
根据本发明的另一种实施例,安全数据解析器可以生成数据份,其中一份或多份数据具有预定义的大小。例如,安全数据解析器可以将原始数据分割成多个数据部分,这些部分之一精确地是256位。在一种合适的方法中,如果不可能生成具有必要大小的数据部分,安全数据解析器就可以填塞该部分以使它具有正确的大小。可以使用任何合适的大小。
在一种合适的方法中,数据部分的大小可以是加密密钥、分割密钥、任何其它合适的密钥或者任何其它合适的数据元素的大小。
如前面所讨论的,安全数据解析器可以在数据的解析和分割中使用密钥。为了清晰和简洁,这些密钥在本文中将被称为“分割密钥”。例如,之前介绍的会话主密钥就是一种分割密钥。同样,如前面所讨论的,在通过安全数据解析器产生的数据份内可以保护分割密钥。用于保护分割密钥的任何合适算法都可以用于在数据份当中保护它们。例如,Shamir算法可以用于保护分割密钥,由此生成可以用于重构分割密钥的信息并附到数据份。根据本发明,可以使用任何其它此类合适的算法。
类似地,根据例如Shamir算法的任何合适算法,在一份或多份数据内可以保护任何合适的加密密钥。例如,用于在解析和分割之前加密数据集的加密密钥、用于在解析和分割之后加密数据部分的加密密钥或者这两个都使用例如Shamir算法或任何其它合适的算法加以保护。
根据本发明的一种实施例,全部变换或全部不变换(AoNT),例如全包变换,可以用于通过变换分割密钥、加密密钥、任何其它合适的数据元素或者其任何组合来进一步保护数据。例如,根据本发明,用于在解析和分割之前加密数据集的加密密钥可以通过AoNT算法进行变换。然后,变换后的加密密钥可以根据例如Shamir算法或任何其它合适的算法在数据份当中被分配。为了重构加密密钥,加密的数据集必须被恢复(例如,根据本发明,如果使用冗余,就不必使用所有数据份),以便根据AoNT访问关于变换的必要信息,如本领域技术人员熟知的那样。当原始加密密钥被取回时,它可以用于对加密的数据集进行解密以取回原始数据集。应当理解,本发明的容错性特征可以与AoNT特征结合使用。即,冗余数据可以包括在数据部分中,使得需要比全部数据部分少的数据部分来恢复加密的数据集。
应当理解,AoNT可以应用到加密密钥,其中,替代加密或除了加密之外,加密密钥还用于在解析和分割之后加密数据部分,而且各个加密密钥的AoNT对应于解析和分割之前的数据集。同样,AoNT可以应用到分割密钥。
在本发明的一种实施例中,如根据本发明所使用的加密密钥、分割密钥或者这两者可以使用例如工作组密钥进一步加密,以便给被保护数据集提供额外的安全级别。
在本发明的一种实施例中,可以提供检查模块,该检查模块对安全数据解析器何时被调用来分割数据进行跟踪。
图36说明了根据本发明用于使用安全数据解析器的组件的可能选项3600。选项的每个组合都在下面被标出并且用图36的适当的步骤数标记。安全数据解析器本质上可以是模块化的,从而允许任何已知的算法在图36所示的每个功能块中使用。例如,像Blakely的其它密钥分割(例如,秘密共享)算法可以代替Shamir而被使用,或者AES加密能够被例如三重DES(Triple DES)的其它已知的加密算法代替。在图36的例子中示出的表只绘出了用于在本发明的一种实施例中使用的算法的一种可能组合。应该理解,任何合适的算法或算法组合都可以替代被标记的算法而使用。
1)3610,3612,3614,3615,3616,3617,3618,3619
在步骤3610,使用之前加密的数据,数据可以最终被分割成预订数量的份。如果分割算法需要密钥,可以在步骤3612使用密码安全伪随机数产生器产生分割加密密钥。在步骤3614,分割加密密钥可以可选地使用全部变换或全部不变换(AoNT)变换成变换分离密钥,之后,在步骤3615,密钥被分割成预订数量的份,具有容错性。然后,
在步骤3616,数据可以被分割成预订数量的份。在步骤3617,可以使用容错性方案,以便允许从少于总份数的份重生数据。一旦产生了多份,就可以在步骤3618将认证/完整性信息嵌到这些份中。在步骤3619,每份都可以可选地进行后期加密。
2)3611,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,每份都可以可选地进行后期加密。
尽管上述四个选项组合优选在本发明的一些实施例中被使用,但是特征、步骤、或选项的任何其它合适组合都可以在其它实施例中用于安全数据解析器。
安全数据解析器可以通过促进物理分离而提供灵活的数据保护。数据可以首先被加密,然后被分割成多份,具有"n分之m"容错性。这允许在少于总份数的份可用时重生原始信息。例如,一些份可能丢失或在传输中被损坏。丢失或被损坏的份可以由附到该份的容错性或完整性信息重建,如以下更具体讨论的。
为了产生份,安全数据解析器可选地利用多个密钥。这些密钥可以包括以下一个或多个:
预加密密钥:当选择份的预加密时,外部密钥可以传递给安全数据解析器。可以生成这个密钥并且外部存储在密钥存储器(或其它位置)中并且可以用于在数据分割之前可选地加密数据。
分割加密密钥:这个密钥可以在内部产生并被安全数据解析器用于在分割之前加密数据。然后可以使用密钥分割算法将这个密钥安全地存储在份内。
分割会话密钥:这个密钥不用于加密算法;而是可以在选择随机分割时用作数据划分算法的密钥。当使用随机分割时,分割会话密钥可以在内部产生并被安全数据解析器用于将数据划分成多份。可以使用密钥分割算法将这个密钥安全地存储在份内。
后期加密密钥:当选择份的后期加密时,外部密钥可以传递给安全数据解析器并用于对各份进行后期加密。可以生成这个密钥并外部存储在密钥存储器或其它适当的位置中。
在一些实施例中,当使用安全数据解析器以这种方式来保护数据时,只有在所有要求的份和外部加密密钥都存在时,信息才可以重组。
图37说明了用于在一些实施例中使用本发明的安全数据解析器的说明性总体过程3700。如上所述,用于安全数据解析器3706的两个便利功能可以包括加密3702和备份3704。因此,在一些实施例中,安全数据解析器3706可以与RAID或备份***或硬件或软件加密引擎集成。
与安全数据解析器3706关联的主要密钥过程可以包括预加密过程3708、加密/变换过程3710、密钥安全过程3712、解析/分配过程3714、容错性过程3716、份认证过程3718和后期加密过程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中。
为了恢复数据,可以根据本发明取回分割密钥并恢复。然后根据本发明分割操作可以反向,以便恢复密文。(用工作组密钥加密的)加密密钥可以被取回并恢复。然后,可以使用工作组密钥对加密密钥解密。最后,可以使用加密密钥对密文解密。
存在用于部署和保护工作组密钥的几种安全方法。对选择哪种方法用于特定应用取决于多个因素。这些因素可以包括要求的安全级别、成本、方便性和工作组中用户的数量。在一些实施例中使用的一些常用技术提供如下:
基于硬件的密钥储存器
基于硬件的解决方案通常提供在加密***中用于加密/解密密钥的安全性的最强保证。基于硬件的储存解决方案的例子包括在便携式设备(例如智能卡/软件狗)或非便携式密钥储存外设中存储密钥的防篡改密钥标记设备。这些设备设计成防止未授权方轻易复制密钥材料。密钥可以由被信任的机构产生并分配给用户,或者在硬件内产生。此外,许多密钥储存***提供多因素的认证,其中密钥的使用既需要获取物理对象(标记)又需要获取口令短语或生物测定。
基于软件的密钥储存器
虽然专用的基于硬件的储存器对于高度安全性的部署或应用可能是期望的,但是其它部署可以选择将密钥直接存储在本地硬件(例如,盘、随机存取存储器(RAM)或者例如USB驱动器的非易失性RAM)上。这提供了防止内线攻击的较低级别的保护,或者在攻击者能够直接访问加密机器的情形下提供较低级别的保护。
为了保护盘上的密钥,基于软件的密钥管理经常通过以加密形式存储密钥来保护密钥,这种加密是在一个从其它认证量度的组合导出密钥下进行的,所述其它认证量度包括:密码和口令短语、其它密钥的存在(例如,来自基于硬件的解决方案)、生物测定或者以上所述的任何合适组合。由这种技术提供的安全级别的范围可以从由一些操作***(例如MS WINDOWS和LINUX)提供的相对弱的密钥保护机制到使用多因素认证实现的更健壮的解决方案。
本发明的安全数据解析器可以有利地用在许多应用和技术中。例如,电子邮件***、RAID***、视频广播***、数据库***、磁带备份***或者任何其它适当的***都可以具有以任何合适级别集成的安全数据解析器。如上所述,应当理解,安全数据解析器还可以集成成通过任何运输媒体,包括例如有线、无线或物理传输介质,保护任何类型的运动数据并具有容错性。作为一个例子,网络电话(VoIP)应用程序可以使用本发明的安全数据解析器,来解决与在VoIP中常见的回声和延迟有关的问题。对被漏掉的包进行网络重输的需要可以通过使用容错性来消除,即使丢掉预订数量的份,容错性也保证包交付。数据包(例如,网络包)还可以被有效分割并以最小延迟和缓冲被"飞快地"恢复,从而导致对不同类型运动数据的综合解决方案。安全数据解析器可以对网络数据包、网络语音包、文件***数据块或任何其它合适的信息单元起作用。除了与VoIP应用程序集成之外,安全数据解析器还可以与下列应用程序集成:文件共享应用程序(例如,对等文件共享应用程序)、视频广播应用程序、电子选举或投票应用程序(它可以实现电子选举协议和盲签名,例如Sensus协议)、电子邮件应用程序或者可能要求或期望安全通信的任何其它网络应用程序。
在一些实施例中,可以由本发明的安全数据解析器在两个不同阶段中提供对网络运动数据的支持--头部生成阶段和数据分区阶段。简化的头部生成过程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)也可以被计算并附到每个数据份。
每个数据份都可以包括元数据,该元数据对于允许正确重构数据块或数据包可能是必需的。这个信息可以包括在份头部中。元数据可以包括如密码密钥份、密钥身份、份随机数(share nonce)、签名/MAC值和完整性块的这种信息。为了最大化带宽的效率,元数据可以用紧凑型二进制格式进行存储。
例如,在一些实施例中,份头部包括明文头部大块,它可以是不加密的并且可以包括像Shamir密钥份、每会话随机数(per-sessionnonce)、每份随机数(per-share nonce)、密钥标识符(例如,工作组密钥标识符和后认证密钥标识符)的这种元素。份头部还可以包括加密的头部大块,其它是用分割加密密钥加密的。可以包括对任何数量的之前块(例如,前面的两个块)的完整性校验的完整性头部大块也可以包括在头部当中。任何其它合适的值或信息也可以包括在份头部中。
如图41的说明性份格式4100所示,头部块4102可以与两个或更多个输出块4104关联。例如头部块4102的每个头部块都可以被设计成装在单个网络数据包内。在一些实施例中,在头部块4102从第一位置传输到第二位置后,输出块可以接着被传输。可选地,头部块4102和输出块4104可以同时并行地传输。传输可以在一个或多个类似或不同的通信路径上发生。
每个输出块都可以包括数据部分4106和完整性/真实性部分4108。如上所述,每个数据份都可以使用份完整性部分加以保护,份完整性部分包括加密的、预分区的数据的份完整性信息(例如,SHA-256哈希)。为了在恢复时验证输出块的完整性,安全数据解析器可以比较每份的份完整性块,然后使分割算法反过来。之后可以针对份哈希对被恢复数据的哈希进行验证。
如上所述,在本发明的一些实施例中,安全数据解析器可以与磁带备份***相结合使用。例如,根据本发明,个别磁带可以用作节点(即,部分/份)。可以使用任何其它合适的布置。例如,由两个或更多个磁带组成的磁带库或子***可以作为单个节点来看待。
根据本发明,冗余也可以用于磁带。例如,如果一个数据集在四个磁带(即,部分/份)当中被分摊,则四个磁带中的两个对于恢复原始数据可能是必需的。应当理解,根据本发明的冗余特征,可能需要任何合适数量的节点(即,少于节点总数)来恢复原始数据。这大大增加了当一个或多个磁带过期时恢复的可能性。
每个磁带还可以用SHA-256、HMAC哈希值、任何其它合适的值或者其任何组合进行数字保护,以保护其免受篡改。如果磁带或哈希值上的任何数据改变,则该磁带将不是用于恢复的候选对象,并且其余磁带中任何最少要求数量的磁带都将用于恢复数据。
在传统的磁带备份***中,当用户要求数据被写入磁带或从磁带读取时,磁带管理***(TMS)给出对应于物理磁带底座(mount)的一个数。这个磁带底座指向数据将被安装的物理驱动器。由磁带操作者或由磁带仓(tape silo)中的磁带机器人装载磁带。
在本发明的情况下,物理磁带底座可以被视为指向多个物理磁带的逻辑底座点。这不仅增加了数据容量,而且因为并行性提高了性能。
为了提高的性能,磁带节点可以是或可以包括用于储存磁带图像的盘的RAID阵列。因为数据在受保护的RAID中总是可用,所以这允许高速恢复。
在上述任何一种实施例中,利用确定性、概率性或者既利用确定性又利用概率性数据分配技术,待保护的数据可以被分配到多个份中。为了防止攻击者在任何密文块上开始秘密者攻击,来自密文块的位可以被确定性地分配给多份。例如,可以使用位段例程执行分配,或者可以修改块段例程以便允许将块的多个部分分配给多个份。这个策略可以防御已经累积了少于"M"份的攻击者。
在一些实施例中,可以使用具有密钥的信息分散(例如,通过使用具有密钥的信息分散算法或“IDA”)采用具有密钥的秘密共享例程。还可以通过一个或多个外部工作组密钥、一个或多个共享的密钥或者工作组密钥和共享密钥的任何组合来保护用于具有密钥的IDA的密钥。以这种方式,可以采用多因素秘密共享方案。为了重构数据,在一些实施例中可能需要至少"M"份加上一个或多个工作组密钥(和/或一个或多个共享密钥)。IDA(或者用于IDA的密钥)也可以用于(driven)加密过程。例如,变换可以用于明码电文(例如,在加密之前的预处理层期间)并且可以在明码电文被加密之前进一步保护明码电文。
例如,在一些实施例中,具有密钥的信息分散用于将来自数据集的数据的唯一部分分配到两份或多份中。具有密钥的信息分散可以使用会话密钥来首先加密数据集,以便将来自数据集的加密数据的唯一部分分配到两个或更多个加密的数据集份中,或者既加密数据集又将来自数据集的加密数据的唯一部分分配到两个或更多个加密的数据集份中。例如,为了分配数据集或加密数据集的唯一部分,可以使用秘密共享(或者上述方法,例如位段或块段)。然后,会话密钥可以被可选地变换(例如,使用完全包变换或者AoNT)并使用例如秘密共享(或者具有密钥的信息分散和会话密钥)进行共享。
在一些实施例中,在密钥的唯一部分被分配或共享到两个或更多个会话密钥份之前,可以使用共享密钥(例如,工作组密钥)给会话密钥加密。然后,可以通过将至少一个加密的数据集份和至少一个会话密钥份组合起来而形成两个或更多个用户份。在形成用户份的过程中,在一些实施例中,至少一个会话密钥份可以插进加密的数据集份中。在其它实施例中,至少一个会话密钥份可以***加密的数据集份中一个至少部分地基于被共享的工作组密钥的位置。例如,具有密钥的信息分散可以用于将每个会话密钥份分配到唯一的加密数据集份中,以便形成用户份。在面临密码攻击时,将会话密钥份插进或***加密的数据集份中一个至少部分地基于共享工作组的位置可以提供增加的安全性。在其它实施例中,一个或多个会话密钥份可以附到加密数据集份的开始或末尾,以便形成用户份。然后,可以在至少一个数据存储库分离地存储收集的用户份。数据存储库或多个数据存储库可以位于相同的物理位置(例如,在相同的磁性或磁带储存设备上)中或在地理上被分离(例如,在不同地理位置的物理分离的服务器上)。为了重构原始数据集,可能需要被授权的用户份集和共享工作组密钥。
即使面对密钥取回的数据库(oracle),具有密钥的信息分散也可以是安全的。例如,取得块密码E和用于E的密码取回数据库,用于E的密码取回数据库给块密码带去输入/输出对的列表(X1,Y1),...,(Xc,Yc),并且返回与输入/输出示例(例如对于所有的i,Yi=EK(Xi))一致的密钥K。如果不存在一致的密钥,则数据库可以返回有区别的值⊥。这个数据库可以模拟可以从输入/输出示例的列表恢复密钥的密码攻击。
当存在密钥取回数据库时,标准的基于块密码的方案可能失败。例如,当存在密钥取回数据库时,CBC加密或CBC MAC可能变得完全不安全。
如果ΠIDA是IDA方案并且ΠEnc是通过一些块密码E的操作模式给出的加密方案,则如果当与任意优选的秘密共享方案(PSS)组合成每HK1或HK2的两个方案,获得健壮的计算秘密共享(RCSS)目标,但是在对手具有密钥取回数据库的模式中,则(ΠIDA,ΠEnc)就会提供面临密钥取回攻击时的安全性。
如果存在IDA方案ΠIDA和加密方案ΠEnc,使得这对方案在面临密钥取回攻击时提供安全性,则获得这对的一种方式可以是具有“聪明的”IDA和“哑巴”加密方案。获得这对方案的另一种方式可以是具有“哑巴”IDA和“聪明的”加密方案。
为了说明聪明IDA和哑巴加密方案的使用,在一些实施例中,加密方案可以是CBC而IDA可以具有“弱隐私”性质。弱隐私性质意味着,例如,如果对IDA的输入是块的随机序列M=M1...Ml并且对手通过未授权的收集获得多份,则存在一些块系数i,使得对手计算Mi是不可行的。这种弱隐私IDA可以通过下列步骤来创建:首先给M施加例如Stinson的AoNT的信息理论AoNT,然后施加例如块段的简单IDA或者像Rabin的方案(例如,Reed-Solomon编码)的位有效IDA。
为了说明哑巴IDA和聪明加密方案的使用,在一些实施例中,可以使用CBC模式,具有双加密而不是单加密。现在可以使用任何IDA,即使是复制。对于对手而言,具有用于块密码的密码取回数据库将是无用的,因为对手将被拒绝任何单加密的输入/输出例子。
虽然聪明的IDA具有值,但是在某些背景下它也可能是无关紧要的,在某种意义下,当面临密钥取回攻击时提供安全性所需的“聪明”能够被“推到”别处。例如,在一些实施例中,无论IDA多聪明,并且正在努力用IDA在HK1/HK2的背景下获得无论什么目标,聪明都可以被推到IDA外并推到加密方案中,剩下固定和哑巴的IDA。
基于以上所述,在一些实施例中,可以使用“万能声音”聪明的IDAΠIDA。例如,提供一个IDA,使得对于所有加密方案ΠEnc,对(ΠIDA,ΠEnc)在面临密钥取回攻击时可万能地提供安全性。
在一些实施例中,提供了在面临密钥取回数据库时是RCSS安全的加密方案。该方案可以与HK1/HK2、与任何IDA集成,以便在面临密钥取回时获得安全性。使用这种新方案可能特别有用,例如,使对称加密方案抵抗密钥取回攻击更加安全。
如上所述,经典的秘密共享观念通常是非密钥的(unkey)。因此,以既不需要重构秘密的商人又不需要重构秘密的某方来保存任何类型的对称或不对称密钥的方式,将秘密分成多份,或者由多份重构秘密。但是,本文描述的安全数据解析器可选地是有密钥的。商人可以提供对称密钥,如果用于数据共享,那么该对称密钥对于数据恢复而言可能是要求的。安全数据解析器可以使用对称密钥将待保护消息的唯一部分分散或分配成两份或多份。
共享密钥可以启用多因素或两因素秘密共享(2FSS)。于是,为了打破安全机制,对手可能被要求通过两种基本不同类型的安全性。例如,为了违反秘密共享目标,对手(1)可能需要获得授权参与者集的份,和(2)可能需要获得应该不能够获得的秘密密钥(或者打破由该密钥作为密钥的密码机制)。
在一些实施例中,附加要求的新组被添加到RCSS目标。附加要求可以包括“第二因素”-密钥拥有。这些附加要求可以被添加而不减少原始的要求集。一个要求集可以与对手不能打破方案有关,如果它知道秘密密钥但未获得足够的份(例如经典的或第一因素要求),而其它的要求集可以与对手不能打破方案有关,如果它确实具有密钥但又设法找到所有的份(例如,新的或第二因素要求)。
在一些实施例中,可以存在两个第二因素要求:隐私要求和真实性要求。在隐私要求中,可能涉及一个游戏,其中通过环境选择秘密密钥K和位b。现在对手在秘密共享方案的域中提供一对等长度的消息M1 0和M1 1。该环境计算M1 b的份,以便得到份的向量S1=(S1[1],...,S1[n]),并且它把份S1(它们的全部)给予对手。使用相同的密钥K和隐藏位b,对手现在可以选择另一对消息(M2 0,M2 1)并且每件事都像前面那样进行。对手的工作是输出被认为是b的位b'。对手隐私优点是小于b=b'的概率的两倍。这个游戏捕捉这样一个观念,即,即使知道了所有的份,但如果对手缺乏秘密密钥,那么对手仍然不能知道关于共享秘密的任何事。
在真实性要求中,可能涉及一个游戏,其中环境选择秘密密钥K并在随后对份和恢复者的调用中使用它。在一些实施例中,份和恢复者可以使它们的句法规则被修改,以反映出这个密钥的存在。然后对手在秘密共享方案的域中对它选择的无论什么消息M1,...,Mq做出份请求。响应每个份请求,它得到对应的份的n-矢量S1,...,Sq。对手的目标是伪造新的明码文本;如果它输出一个份矢量S',使得当其被供给恢复者算法时,导致不在{M1,...,Mq}中的什么东西,它就赢了。这是“明码文本的完整性”观念。
存在获得多因素秘密共享的两种方法。第一种方法是一般的方法—就以黑箱方式使用基本(R)CSS方案来说是通用的。被认证的加密方案用于对CSS共享的消息进行加密,然后可以例如使用像Blakely或Shamir的秘密共享算法使所得的密文被共享出去。
一种可能更有效的方法是允许共享密钥是工作组密钥。即(1)可以使用共享密钥加密随机产生的(R)CSS方案的会话密钥,和(2)应用到消息(例如,文件)的加密方案可以由被认证的加密方案代替。这个方法可能只导致性能上的最小下降。
尽管上面描述了安全数据解析器的一些应用,但是应当清楚地理解,本发明可以与任何网络应用集成,以便增加安全性、容错性、匿名性或者以上所述的任何合适组合。
在有些实现中,上述解析和/或分割过程可以在安全文件共享应用中采用。在有些实现中,安全备案共享是通过在图42的框图中绘出的说明性安全共享***4200执行的。
图42A绘出了两个用户计算设备,用户1设备4202a和用户2设备4202b。一个或多个数据集可以存储在用户1设备4202a上的存储器中,例如文件ANYFILE1(任何文件1)4204a和存储在目录SHARED(共享的)\4206a中的文件。类似地,一个或多个数据集可以存储在用户2设备上的存储器中。用户1设备4202a和用户2设备4202b每个都与多个储存存储库4208a、4208b和4208c通信(经一个或多个无线或有线通信网络,未示出)。储存存储库4208a、4208b和4208c说明为位于计算云储存器中,但是可以是任何合适的联网的存储设备,例如由至少一个网络存储提供商所提供的那些。应当理解,在图42中,任何合适数量和任何合适类型的网络存储提供商都可以使用。在有些实现中,例如图42中所说明的实现,安全共享***包括至少三个储存存储器(例如,三个云存储提供商)。在有些实现中,安全共享***中所包括的储存存储器的数量等于数据要分割成的份的数量(例如,4分之3密码分割中的四个储存存储器),如本文具体描述的。储存存储器可以由存储提供商服务器进行管理,每个服务器都可以配置成按需提供储存器、认证对储存器的访问并且提供上载、下载、删除和列表功能性。
用户1设备4202a和用户2设备4202b还每个都与注册服务器4210通信(经一个或多个无线或有线通信网络,未示出)。注册服务器4210可以配置成注册安全共享***4200的用户(包括个别用户、用户设备及用户或设备的组)、存储例如电子邮件地址或用户名的用户凭证、(例如,基于所存储的凭证)认证用户、通过他们的电子邮件地址或其它凭证查找用户、把公钥传输到密码共享客户端(如以下具体描述的)、通过访问注册服务器421解除一个或多个用户的授权、接受为使用安全共享***4200的一个或多个方面而支付的费用及强制用户访问注册服务器4210的到期。
用户1设备4202a和用户2设备4202b每个都包括配置成执行密码共享客户端的处理器。在有些实现中,密码共享客户端提供如上关于在本文公开的安全解析器和其它***所述的密码分割操作。在有些实现中,在用户设备利用密码共享客户端进行初始配置的过程中(例如,在密码共享客户端软件包的安装过程中),密码共享客户端在用户设备中创建共享目录(例如,在用户1设备4202a中密码共享客户端安装过程中的目录SHARED\4206a,或者在用户2设备4202b中密码共享客户端安装过程中的目录SHARED\4206b)。在初始配置中,密码共享客户端可以捕捉识别与该用户设备关联的用户的信息(例如用户名和电子邮件地址)并且可以生成与那个用户关联的对称密钥对(包括一个私钥和一个公钥)。密码共享客户端在用户设备本地存储私钥(例如,在该用户设备中包括的存储器设备中,或者在本地连接或用户设备可安全获得的存储器设备中),并且传输要存储在注册服务器4210的公钥。在有些实现中,注册服务器4210还可以存储可以定义一组用户或用户设备的任何合适的组信息(例如,通过用户名或其它识别信息或者通过用户设备识别信息)。当用户设备与注册服务器4210通信时,组的隶属关系可以提供给注册服务器4210。例如,当试图向该组的其它成员传输数据时,用户设备所属的组可以由安全电子邮件的发送者来指示。在有些实现中,访问注册服务器4210的用户设备可以利用例如“共享”工作组的访问组来指定。
现在将通过例子说明安全共享***4200的操作,其中,用户1,与用户1设备4202a关联的用户,希望与用户2,与用户2设备4202b关联的用户,安全地共享文件ANYFILE14202a。用户1与私钥-公钥对Pri-U14214a和Pub-U14212a关联,而用户2与私钥-公钥对Pri-U24214b和Pub-U24212b关联。与用户1和2关联的公钥,Pub-U14212a和Pub-U24212b,存储在注册服务器4210中,而私钥Pri-U14214a和Pri-U24214b分别让用户1设备4202a和用户2设备4202b本地可用。在有些实现中,每个用户或用户设备可以与各自的私钥-公钥对关联。在有些实现中,一个工作组或者用户或用户设备的集合可以共享一个私钥和对应的公钥。用于安全共享***4200的用户的公钥存储在注册服务器4210上而且可以被用户各自的密码共享客户端取回。
图42A说明用户1通过把文件ANYFILE1 4202a移动到目录SHARED\4206a中来启动安全共享过程。这种用于启动安全共享过程的技术不是唯一的,而且许多其它技术都可以使用。在有些实现中,用户1可以通过选择操作***的***托盘中的一个图标来访问密码共享客户端。在有些实现中,用户1可以通过利用鼠标右击文件的图像在显示器上选择ANYFILE1 4202a,然后可以从密码共享客户端响应该右击而显示的弹出菜单中选择“密码共享”作为一个选项。然后,用户1可以识别要与其共享ANYFILE1 4202a的个人或组,例如,通过从一个电子邮件地址列表中选择个人或组的电子邮件地址。这个列表可以按安全共享***4200的所有用户共有的方式组填充(例如,使用所有用户的电子邮件查找表),或者可以利用关于用户1过去的共享或其它通信行为的信息来填充。例如,电子邮件地址列表可以通过识别用户1之前曾与其安全共享过文件或者向其发送过电子邮件的用户来填充。其它识别,例如用户名或真名,也可以代替电子邮件地址或者附加地使用。
图42B说明用户1设备4202a的密码共享客户端访问注册服务器4210,来取回与用户2关联的公钥Pub-U2 4212b。在有些实现中,在被允许访问公钥Pub-U2 4212b之前,用户1设备4202a必须向注册服务器4210认证它自己。用户1设备4202a的密码共享客户端可以通过提供识别信息,例如用户1的电子邮件地址,来做这件事。用户1设备4202a还可以访问与用户1关联的公钥Pub-U1 4212a,这个公钥关于用户1设备4202a本地存储或者可以从注册服务器4210取回。为了开始保护要传输的文件ANYFILE1 4204a,用户1设备4202a的密码共享客户端利用文件会话密钥加密文件ANYFILE1 4204a。在有些实现中,文件会话密钥是工作组密钥或者一个内部密钥。一旦公钥Pub-U1 4212a和Pub-U2 4212b都可用,用户1设备4202a的密码共享客户端就利用用户1的公钥Pub-U1 4212a加密文件会话密钥,形成第一加密的密钥,并且利用用户2的公钥Pub-U2 4212b加密文件会话密钥,形成第二加密的密钥。在有些实现中,在利用用户2的公钥Pub-U2 4212b加密文件会话密钥之前,要利用由用户1设备4202a的密码共享客户端生成的附加内部密钥加密密钥(KEK)加密该文件会话密钥。应当理解,利用相同或不同的加密技术和相同或不同的加密密钥,文件会话密钥可以在一轮或多轮加密中被加密。用户1设备4202a的密码共享客户端也可以利用与用户1关联的私钥Pri-U1 4214a签署加密之后的密钥,以便认证加密的密钥。在有些实现中,第一和第二加密的密钥与加密的数据打包到一起,作为静止的加密数据的一部分,或者与运动中的加密数据打包到一起,作为数据包头部或者在传输到储存存储器4208a、4208b和4208c的加密数据的专用头部包中,如下所述。
接下来,用户1设备4202a的密码共享客户端利用与用户1关联的私钥Pri-U1 4214a和与用户2关联的公钥Pub-U2 4212b把文件ANYFILE1 4202a分割成两份或多份,使得只有能访问与用户1关联的私钥Pri-U1 4214a或者能访问与用户2关联的私钥Pri-U2 4214b的用户才能恢复文件ANYFILE1 4202a。密码分割可以涉及任何合适的密码分割过程,例如上述其中数据被分割成某个随机的密码份数,例如,3分之2份,的密码分割过程。更一般地说,文件可以分割成N分之M份,其中M比N至少小一而且需要M份来重建或重组文件,从而在份中提供足够的冗余性,使得重组或把数据恢复到其原始或可用形式只需要份的一个子集。在有些实现中,安全解析器生成数据的份和/或加密这些份并且使用包括利用工作组密钥包装会话密钥的协议,如上所述。在这种实现中,安全共享***4200可以创建用于包装会话密钥的一次性对称密钥(就像上述工作组密钥一般将做的那样)。然后,包装好的会话密钥进一步利用与用户1关联的公钥Pub-U1 4212a和与用户2关联的公钥Pub-U2 4212b加密,形成第一和第二加密的密钥,如上所述。例如,如上所述,在用户2的设备4202b的密码共享客户端解密会话密钥之后,一次性对称密钥可以丢弃。在有些实现中,工作组密钥或一次性密钥可以是不对称密钥(例如,私钥-公钥对的公钥)。应当理解,分割操作和加密操作可以按任何次序执行。例如,数据集可以分割成份,然后加密这些份,或者然后数据集可以先加密再分割成份。多次分割和多次加密操作也可以按任何次序执行。此外,用于加密文件会话密钥(例如,KEK)的任何附加密钥本身都可以按任何合适的次序分割和加密任意次数。这些加密后的附加密钥的份可以按以下为加密的数据和加密的密钥所述的任何方式存储与传输。通过利用附加的安全层保护这些现有***中所使用的加密密钥,本文公开的安全共享技术可以有利地用于其它已经存在的密码或安全***,而不会干扰或损害现有***。特别地,包括内部会话或工作组密钥的数据安全***可以继续使用这些密钥来保护数据,因为图42的安全共享***在这种***之上操作,以便启用安全数据共享。
图42C说明用户1的设备4202a的密码共享客户端把份分配到储存存储库4208a、4208b和4208c。这多个储存存储库4208a、4208b和4208c中的每一个都可以只接收少于恢复文件ANYFILE1 4204a所需的份数的多份。在有些实现中,只有一份发送到储存存储库4208a、4208b和4208c中的每一个。在有些实现中,份临时存储在储存存储库4208a、4208b和4208c中(例如,当文件ANYFILE1 4204a安全地附到一个电子邮件时,该电子邮件随后将传输到用户2的设备4202b)。临时存储可以在例如经过预定时间段之后结束,或者当发生特定的事件时结束(例如,当文件ANYFILE1 4204a被用户2设备4202b从储存存储库4208a、4208b和4208c取回)。在这种实现中,例如,储存存储库4208a、4208b和4208c可以包括一个或多个临时云存储设备。在有些实现中,份持久地存储在储存存储库4208a、4208b和4208c中(例如,当文件ANYFILE1 4204a是可以由一个或多个授权用户访问的共享目录的一部分时)。在这种实现中,储存存储库4208a、4208b和4208c可以包括一个或多个持久性或永久性云存储服务器。基于持久存储的数据可以在合适的时间段(例如,一年)之后删除。临时性或持久性存储的过期时期可以由储存存储库4208a、4208b和4208c中的一个或多个设置,或者由注册服务器4210设置。存储在储存存储库4208a、4208b和4208c中的数据的份可以存储为文件、对象或者任何其它合适的形式,而且这种形式在存储库之间可以不同。在其中加密的文件会话密钥还利用与用户1关联的私钥Pri-U1 4214a签署的实现中,试图访问所存储数据的用户还必须利用与用户1关联的公钥Pub-U1 4212a(如从注册服务器4210取回的)来验证加密的文件会话密钥。用户2可以在认证该文件被用户1传输之后恢复文件。
图42D说明用户2设备4202b的密码共享客户端从储存存储库4208a、4208b和4208c取回一些或全部份。尽管图42D显示用户2设备4202b访问全部三个储存存储库,但是用户2设备4202b可以只访问其上存储了份的一些储存存储库,只要可以取回足够数量的份来恢复文件ANYFILE1 4204a就够了。在有些实现中,用户2设备4202b的密码共享客户端周期性地扫描并把数据从储存存储库4208a、4208b和4208c下载到用户2设备4202b的本地储存器。这种周期性的扫描与下载可以由运行在密码共享客户端上的批处理软件应用程序执行(例如,作为后台任务),但是与用户2设备4202b共享的数据可以利用任何合适的技术取回。例如,注册服务器4210可以使数据被推到用户2设备4202b(例如,通过识别传输或存储一份或多份的用户2设备4202b的识别信息)。在有些实现中,用户2设备4202b周期性地轮询注册服务器4210或储存存储库4208a、4208b和4208c,以便确定是否已经提供了要与用户2设备4202b共享的任何数据。在有些实现中,注册服务器4210向用户2或者用户2设备4202b提供文件已经放在用户1设备4202a的目录SHARED\4206a中或者用户2要用的数据在储存存储库4208a、4208b和4208c中一个或多个上可用的通知(例如,电子邮件提醒)。响应这种通知,用户2设备4202b可以从储存存储库4208a、4208b和4208c拉出用于ANYFILE1 4204a恢复的足够多份。
一旦一份或多份已经从储存存储库4208a、4208b和4208c取回,用户2设备4202b的密码共享客户端就可以利用与用户1关联的公钥Pub-U14212a验证加密的文件会话密钥(如果加密的文件会话密钥是由用户1设备4202a的密码共享客户端签署的话),然后利用与用户2关联的私钥Pri-U2 4214b解密第二加密的密钥,来恢复文件会话密钥。如果已经接收到用于恢复的足够数量的份,用户2设备4202b的密码共享客户端就在用户2设备4202b恢复共享的文件ANYFILE1 4204b。以这种方式,与用户2安全地共享文件ANYFILE1 4204a。恢复的文件ANYFILE1 4204b可以在用户2设备4202b本地存储;例如,在图42E所示的目录SHARED\4206b中。当与用户2关联的公钥Pub-U24212b在注册服务器4210被用户1设备4202a的密码共享客户端访问时,这指示共享开始,或者当与用户1关联的公钥Pub-U1 4212a在注册服务器4210被用户2设备4202b的密码共享客户端访问时,这指示验证开始,任何合适的消息或通知都可以提供给用户1、用户2或者二者。
以上图42的讨论集中在由用户2设备4202b从储存存储库4208a、4208b和4208c取回安全共享的数据,但是这些数据也可以由用户1设备4202a通过解密第一加密的密钥(例如,利用公钥Pub-U1 4212a加密的文件会话密钥)以恢复文件会话密钥并且随后利用文件会话密钥解密加密的数据集来取回。因此,用户1设备4202a可以与其它期望的用户一起访问安全共享的文件。此外,尽管密码共享客户端是作为在图42的用户设备执行讨论的,但是,在有些实现中,密码共享客户端在一个或多个中央服务器,例如公司服务器,执行。在有些此类实现中,中央服务器可以为用户保留私钥、执行本文所述的密码分割操作并且可以存储安全共享数据。
应当理解,以上参考图42描述的安全共享***与数据可以启用个别用户、多个个别用户、一组个别用户(例如,工作组)及多组个别用户之间的安全共享。例如,通过把一个用户同时看作以上参考图42所述技术中的用户1和用户2,该用户可以使用安全共享***4200来安全地存储文件,让他或她自己使用。在有些实现中,如果用户1希望与用户2和第三个用户,用户3,共享ANYFILE1 4202a,那么用户1设备4202a的密码共享客户端可以为了与用户2共享ANYFILE14202a而执行上述操作,并且还可以为了与用户3共享ANYFILE14202a而执行相似的上述操作。
图43说明了一种实现,其中用户设备的密码共享客户端配置成执行组合的共享操作,来与多个用户(图43中的用户1至用户M)安全地共享一个数据集。这多个用户可以包括配置成执行共享操作的用户设备。在图43中,对于每个用户,用户设备的密码共享客户端都取回与那个用户关联的公钥(例如,从图42的注册服务器4210)并且利用那个公钥加密文件会话密钥(该密钥用于加密数据集,如以上参考图42B中文件ANYFILE1 4204a的加密所描述的)。例如,如图43所示,密码共享客户端利用与用户1关联的公钥加密会话密钥(操作4306),形成加密的密钥4308,并且利用与剩余其他用户,直到用户M,关联的公钥执行对称密钥的相似加密(加密的密钥4310)。接下来,加密的密钥与加密数据集4314的N份4312中的每一份打包,作为静止的加密数据的一部分,或者与运动中的加密数据打包,作为数据包头部或者在传输到储存存储器4208a、4208b和4208c的加密数据的专用头部包中。例如,当与用户M关联的用户设备的密码共享客户端尝试取回并恢复数据时,利用用户M的公钥加密的会话密钥(加密的密钥4310)可以利用与用户M关联的私钥解密,如以上参考图42的用户2设备4202b所描述的。以这种方式,通过使利用一个用户的公钥加密的会话密钥让每个用户可用,连同利用该会话密钥加密的数据,可以与安全共享***4200的任何数量的用户安全地共享数据。在一种优选实现中,会话密钥是对称密钥,或者利用工作组密钥加密的对称密钥。
在有些实现中,用在安全共享***4200中的密码共享客户端可以配置成与其它客户端,例如(由位于加州Rancho Santa Margarita的Security First公司生产的)SPXCLIENT互操作,用于保护本地数据。在这种实现中,SPXCLIENT可以用于本地保护数据,而且本地保护的数据可以利用安全共享***4200安全地被共享。在有些实现中,例如(也是由Security First公司生产的)SPXCONNECT的附加安全通信软件可以用于在本地机器与网络服务器或其它服务器之间(例如,在用户1设备4202a与注册服务器4210之间,或者在用户1设备4202a与储存存储器4208a、4208b和4208c之间)保护通信。在有些实现中,通过使用不同的密钥管理***来创建安全连接,通信的执行可以不需要来自密码共享客户端的加密密钥。在有些实现中,例如(也是由Security First公司生产的)SPXBITFILER安全解析软件可以在企业设置中使用,数据由利用安全共享***4200共享的SPXBITFILER来保护。
在有些实现中,依赖于使用级别,安全共享***4200的使用可能要接受分级定价。例如,定价可以基于共享文件的大小。在有些此类实现中,每个价位都与安全共享***4200将为支付该级价格的用户处理的最大文件尺寸(例如,2GB)关联。在有些此类实现中,每个价位都与在一个时间段内安全共享的数据总量范围关联(例如,用于1-10GB/月的第一价格和用于10-20GB/月的第二价格),或者与其它合适的容量度量(例如,一个月内安全共享的文件个数)关联。分级定价可以基于共享的文件类型(例如,二进制大文件(blob)或其它文件类型)。分层定价可以基于到云存储中的存储库的数据吞吐量,支付基于价格的预定限度或者通过基于实际的吞吐量改变价格。安全共享***4200可以包括付款服务器,配置成给用户开账单并且根据分级定价接收***付款或其它电子付款。
图44是用于安全共享数据的方法的说明性步骤的流程图。在步骤4402,处理器(例如,与配置成具有密码共享客户端的第一用户设备,例如图42的用户1设备4202a,关联的处理器)通过利用对称密钥加密来自第一用户设备(例如,图42的用户1设备4202a)的数据集生成加密的数据集。在步骤4404,处理器通过利用与第一用户设备(例如,图42的用户1设备4202a)关联的第一不对称密钥对的第一不对称密钥(利用,公钥)加密指示对称密钥的数据来生成第一加密的密钥。在有些实现中,处理器不需要执行步骤4402,而且该方法可以从步骤4404加密的数据集和对称密钥开始。在步骤4406,处理器通过利用与第二用户设备(例如,图42的用户2设备4202b)关联的第二不对称密钥对的第一不对称密钥(利用,公钥)加密指示对称密钥的数据生成第二加密的密钥。第一和/或第二不对称密钥对的第一不对称密钥可以从注册服务器(例如,图42的注册服务器4210)访问。例如,指示对称密钥的数据可以是对称密钥本身或者利用用于第二用户可以获取的工作组的一个或多个密钥加密的对称密钥。在步骤4408,处理器形成加密数据集的两份或多份,每个加密数据集份都包括在步骤4402生成的加密数据集的一部分数据。在步骤4410,处理器使第一和第二加密的密钥存储在至少一个存储位置,而且两个或更多个加密数据集份分彼此独立地存储在至少一个存储位置。这至少一个存储位置(例如,云存储位置)远离第一和第二用户设备。为了恢复数据集需要,需要预定数量的两个或更多个加密数据集份(例如,3个中的2个)及第一或第二不对称密钥对的第二不对称密钥(例如,私钥)中的至少一个。
在有些实现中,通过生成多个加密的密钥(步骤4406)并且使这多个加密的密钥得以存储(步骤4410),处理器为多个用户设备执行步骤4406和4410。为此,对于与多个用户设备关联的对应多个不对称密钥对的多个第一不对称密钥(例如,公钥)中的每一个,处理器利用该第一不对称密钥加密指示对称密钥的数据,形成多个加密密钥(步骤4406)。然后,处理器使多个加密的密钥存储在至少一个存储位置(步骤4410)。在有些实现中,处理器在两个或更多个加密数据集份中每一份的头部中传输多个加密的密钥。为了恢复数据集,除了预定数量的两个或更多个加密数据集份,还需要多个不对称密钥对的多个第二加密密钥(例如,私钥)中的至少一个。
图45是处理器可以在执行图44步骤4410的过程中执行的说明性子步骤的流程图,其中处理器使加密的密钥存储在至少一个存储位置。在步骤4502,处理器形成第一和第二加密的密钥的两份或多份。这第一和第二加密的密钥可以单独地生成份,或者先组合再生成份。每个加密密钥份都包括来自加密密钥的一部分数据。在步骤4504,处理器使两个或更多个加密密钥份彼此独立地存储在至少一个存储位置(以上参考图44进行了讨论)。为了恢复加密密钥,需要预定数量的两个或更多个加密密钥份(例如,4个中的3个)。
图46是访问根据图44所说明方法安全共享的数据集的方法的说明性步骤的流程图。在步骤4602,处理器访问加密的密钥和存储在至少一个存储位置的预定数量的加密数据集份。加密的密钥包括指示利用与第一用户设备(例如,图42的用户2设备4202b)关联的第一不对称密钥对的第一不对称密钥(例如,公钥)加密的对称密钥的数据。这第一不对称密钥可能之前已经提供给了注册服务器(例如,图42的注册服务器4210)。加密数据集份是由与第一用户设备(例如,图42的用户1设备4202a)不同的第二用户设备利用对称密钥加密的。与第二用户设备关联的第二不对称密钥对的第一不对称密钥也存储在至少一个存储位置。这至少一个存储位置远离第一和第二用户设备。在步骤4604,通过利用不对称密钥对的第二不对称密钥(例如,私钥)解密加密的密钥,处理器恢复指示对称密钥的数据。在步骤4606,处理器从预定数量的加密数据集份(在步骤4602访问的)和指示对称密钥的数据恢复加密的数据集。
图47是用于安全共享数据的方法的说明性步骤的流程图。图47的方法的实现在以上参考图43讨论过了。图47流程图中与图44流程图步骤相似的步骤可以按相似的方式执行。在步骤4702,处理器(例如,配置成与具有密码共享客户端的第一用户设备关联的处理器,其中的用户设备例如图42的用户1设备4202a)通过利用对称密钥加密来自第一用户设备的数据集生成加密的数据。在步骤4704,处理器形成加密数据集的两份或多份,每个加密数据集份都包括来自(在步骤4702生成的)加密数据集的一部分数据。在有些实现中,步骤4702不需要由处理器执行而且该方法可以由步骤4704加密的数据集和对称密钥开始。在步骤4706,对于多个用户设备中的每一个,包括第一用户设备,处理器通过利用与用户设备关联的不对称密钥对的第一不对称密钥加密指示对称密钥的数据来生成加密的密钥。在步骤4708,对于两个或更多个加密数据集份中的每一份,处理器在加密数据集份的头部中分配多个加密的密钥。在步骤4710,处理器使两个或更多个加密数据集份和头部存储在至少一个存储位置。为了恢复数据集,需要预定数量的两个或更多个加密数据集份及多个不对称密钥对中至少一个的第二不对称密钥。
图48是根据任何上述方法、用于存储已被分成部分的数据的说明性安全存储***4800的框图。下文使用的术语“数据部分”包括由任何信息分散算法(IDA)——例如本文描述的任何确定性或概率性IDA——生成并且在先前或后来被加密或以其他方式加以保护的数据。安全存储***4800可被多个用户计算设备访问,例如用户1设备4802a和用户2设备4802b,它们类似于图42的用户设备4202a和4202b。一个或多个数据集可被存储在一个或多个用户计算设备上的存储器中。这些数据集可被存储为数据文件(例如ANYFILE4804a)、存储为数据对象或者存储为任何其他数据格式。用户1设备4802a和用户2设备4802b经由至少一个注册/认证服务器4806和多个存储位置4808a至4808n中的一个或多个与安全存储***4800通信(经由一个或多个无线或有线通信网络,未示出)。用户设备4802a和4802b与安全存储***4800之间的通信可通过静态数据(data-at-rest,DAR)API层4822来处理,如图48中所示。DAR API层4822例如可以对尝试访问注册/认证服务器4806或存储位置4808a至4808n的用户设备进行认证。DAR API层4822还可以对用户设备4802与注册/认证服务器4806或存储位置4808a至4808n之间的通信进行调解。
用户设备4802a和4802b可被配置为执行密码共享客户端,例如上文联系图42A-42E描述的密码共享客户端。其他设备、应用或网络——例如分析应用4810、SaaS应用4812、云服务应用4814、网络存储(NAS)设备4816、存储区域网络(SAN)4818和Web服务应用4820——可不被配置为执行密码共享客户端。为了向这种应用和设备提供密码共享和安全功能,这些应用和设备可与数据安全服务4826通信,数据安全服务4826包括安全解析软件,例如SPXBITFILER。数据安全服务器4826通过DAR API层4822与注册/认证服务器4806或存储位置4808a至4808n通信。
数据安全服务4826在密钥存储4828中存储用于访问存储位置4808a至4808n中存储的数据的密钥。例如,如果数据安全服务4826的多个用户属于一具有工作组密钥的工作组,则数据安全服务4826在密钥存储4828中存储该工作组密钥并且在该工作组中的用户从存储位置4808a至4808n存储或取回数据时获取该密钥。存储位置4208a、4208b和4208n优选地包括云计算环境内的一个或多个云存储位置。在云计算环境中,用于数据共享、存储或分布的各种类型的计算设备由网络可访问的计算和存储资源的集合提供,该集合被称为“云”。例如,云可包括向经由诸如因特网之类的通信网络连接的各种类型的用户和设备提供基于云的服务的服务器计算设备的集合,其中这些服务器计算设备可位于集中的位置或位于分布的位置。存储位置4208a、4208b和4208n可包括任何适当的本地或网络附接的存储设备,例如由至少一个网络存储提供商提供的那些。应当理解,任何适当数目和任何适当类型的网络存储提供商可用来实现安全存储***的一个或多个存储位置。在一些实现方式——例如图48中所示的实现方式——中,安全存储***包括至少三个存储位置(例如,由一个或多个云存储提供商提供)。在一些实现方式中,安全存储***中包括的存储位置的数目等于数据被所选的IDA分布成的部分的数目(例如,在4中取3(3-of-4)密码分割中的四个存储位置),如上文详细描述。存储位置可由存储提供商服务器管理,每个存储位置可被配置为按需提供存储并且提供上传、下载、删除和列表功能。存储位置4808a-4808n可与一个或多个其他存储位置4808a-4808n位于相同位置或者地理上分离。例如,用于存储公司的数据的一些存储位置可位于公司总部,而其他存储位置可位于远程。另外,所有的存储位置4808a-4808n可属于单个云服务提供商的单个云网络,或者不同的存储位置可由不同的云服务提供商控制。
注册/认证服务器4806可与存储位置4808a-4808n中的一个或多个位于相同位置,或者其可与存储位置4808a-4808n中的一个或多个地理上分离。注册/认证服务器4806包括一个或多个处理器,这些处理器被配置为注册安全存储***4800的用户(包括个体用户、用户设备以及用户或设备的群组),存储用户证书,例如电子邮件地址或用户名,认证用户(例如,基于存储的证书),按用户的电子邮件地址或其他证书查找用户,将公钥发送到密码共享客户端(如上文参考图42所述),解除对一个或多个用户访问注册/认证服务器4806的授权,接受对于使用安全存储***4800的一个或多个方面的付费,以及实施用户对安全存储***4800的访问的期满。注册/认证服务器4806还被配置为将用户或用户设备引导至存储位置4808a-4808n中的一个或多个以便写入数据或取回数据。具体地,如果用户设备请求取回的数据已根据N中取M(N中M(M of N))技术(其是如下的技术:为了将数据集重组或恢复成其原始或可使用的形式,需要N个存储的部分中的M个部分,其中M小于N)被分成部分,则注册/认证服务器4806被配置为识别关于存储位置4808a-4808n之中的M个推荐存储位置的信息并将该信息返回给用户设备。用户设备随后可使用此信息来选择性地访问存储位置以取回期望的数据。注册/认证服务器4806的这些和其他功能在下文中更详细描述。
{552}在一些实现方式中,安全存储***4800包括多个注册/认证服务器(类似注册/认证服务器4806)。多个注册/认证服务器的每一个可以都执行本文描述的所有注册、认证和引导功能,或者不同的注册/认证服务器功能可由不同的注册/认证服务器执行。在一些实施例中,每个注册/认证服务器与不同的一组用户设备和/或存储位置4808a-4808n通信。注册/认证服务器可与其他注册/认证服务器共享数据。
安全存储***4800的配置和操作的各种方面在图49-图65中说明。图49A-图49C是绘出图48的***中的安全数据存储的实现方式的框图。在图49A中,用户1设备4902a经由注册/认证服务器4806向安全存储***4800注册。在用户1设备4802a的初始注册期间,用户1设备4902a可向注册/认证服务器4806发送标识设备本身的信息(例如,MAC地址或其他设备标识信息)或标识与用户1设备4802a相关联的用户(用户1)的信息。例如,如图49A中所示,用户1设备4802a可发送与用户1相关联的电子邮件地址。注册/授权服务器4806还可生成与用户1或与用户1设备4802a相关联的用户授权数据(未示出)。授权数据被发送到用户1设备4802a并且被用户1设备4802a存储。用户1设备4802a随后可将此授权数据发送到注册/授权服务器4806,以便注册/授权服务器4806将授权用户1设备4802a对安全存储***中存储的数据执行额外的操作(例如,写入、读取和修改操作)。
如上文参考联系图42中描述的安全共享***4200所论述的,用户1或用户1设备4802a可与群组、企业或产品相关联。在这种实施例中,注册/认证服务器4806还可存储任何适当的群组信息,该群组信息可限定用户或用户设备的群组(例如,按用户名或其他标识信息或按用户设备标识信息)。群组归属可在用户设备与注册/认证服务器4806通信时被提供给注册/认证服务器4806。例如,用户设备所属的群组可由安全电子邮件的发送者在尝试发送数据给群组的其他成员时指示。在一些实现方式中,可利用诸如“共享”工作组之类的访问群组来指定访问注册/认证服务器4806的用户设备。在一些实现方式中,工作组或者用户或用户设备的集合可共享私有工作组密钥和相应的公钥。
为了在安全存储***4800中存储文件,用户1使用用户1设备4802a来选择要存储的数据集(如图49A中所示,ANYFILE1 4804a)并且将关于所选择的数据集的信息发送到注册/认证服务器4806。关于所选择的数据集的信息可包括数据集的名称或其他标识符、数据集的数据类型、数据集的大小、数据集在用户1设备4802a内被分布成的部分的数目(例如,根据本文描述的任何共享生成技术)或者注册/认证服务器4806被配置为用其来确定在何处存储数据集或者在何处找到先前存储并且现在正被更新的数据集的任何其他信息。在一些实现方式中,要存储的数据集由用户1设备4802a自动识别(例如,作为自动化备份过程的一部分)。
在接收到关于要存储的数据集的信息后,注册/认证服务器4806发送指向用户1设备4802a可在其中存储数据集的部分的存储位置4808a-4808n的指针,如图49B中所示。这些指针可包括允许用户设备识别存储或者可以存储可访问数据的位置的任何信息,例如存储位置的IP地址、存储器位置(例如,数据块号码或数据块号码的范围)、指示数据存储在存储位置内何处的存储路径、或者这种信息的任何组合。每次数据被发送到安全存储***4800时,或者按照周期性的或其他的时间安排,发送数据供存储的用户设备接收标识数据应当被写入的存储位置的一个或多个指针。
此方法可提供若干个益处。首先,如果从上次用户写入到或以其他方式访问存储位置起,一个或多个存储位置已移动(例如,如果先前在第一城市中的服务器上的存储位置被转移到了第二城市中的服务器)或被替换(例如,如果存储位置中的数据被从旧服务器转移到具有不同的IP地址的新服务器),则注册/认证服务器4806提供经更新的指针,该经更新的指针可防止用户设备依赖于来自前次访问的过时的、存储在本地的指针。其次,如果用户设备(或者与用户设备相关联的企业或产品)先前使用的一个或多个存储位置不可用了,则注册/认证服务器4806不提供指向不可用的存储位置的指针,而是可以改为识别数据份应当被写入的更少存储位置或不同存储位置。通过在注册/认证服务器4806处维护或确定存储位置可用性信息,用户设备不必浪费资源来探查可能不可用的存储位置或者尝试写入到可能不可用的存储位置。另外,通过仅在用户设备请求与存储位置交互(例如,写入到存储位置、从存储位置读取或者修改位置处存储的数据)时提供存储位置可用性信息,安全存储***避免了向用户设备发送不需要的数据,并且用户设备避免了在不需要时从安全存储***接收存储位置可用性数据。用于确定存储位置可用性的方法在下文联系图52来论述。
图49C示出了用户1设备4802a经由通信网络(例如,有线或无线网络)将N份加密数据(份1至份N)分别发送到注册/认证服务器4806确定可用的N个存储位置4808a-4808n。存储位置4808a-4808n由用户1设备4802a接收的指针来标识,如图49B中所示。
图50A-图50E绘出了通过例如图49A-图49C中所示和上文描述的过程来请求和接收已存储在安全存储***中的数据。在图50A中,用户1设备4802a发送对于访问用户1设备以分布方式存储在了安全存储***4800中的文件ANYFILE1的请求。在一些实现方式中,用户1设备4802a将认证信息(未示出)与该请求一起发送,并且注册/认证服务器4806验证用户1设备4802a被授权访问安全存储***4800中的文件或者更具体而言访问用于恢复ANYFILE1的数据部分。
如图50B中所示,注册/认证服务器4806发送指向存储ANYFILE1的部分的存储位置的指针。如上所述,安全存储***4800中存储的数据部分可根据N中取M或其他信息分散技术来分布,并且可在数个阶段的任何一个中被加密。因此,注册/认证服务器4806可向用户1设备4802a发送指向ANYFILE1的M个部分的指针。例如,如果ANYFILE1被根据4中取2技术来分布,则注册/认证服务器4806发送指向存储位置4808a-4808n中的两个的指针。在一些实现方式中,M是恢复期望数据所必要的部分的最小数目;在其他实现方式中,M大于该最小数目。
因为注册/认证服务器4806只需要发送存储ANYFILE1的份的存储位置4808a-4808n的子集,所以注册/认证服务器4806可选择最佳的存储位置来返回。例如,注册/认证服务器4806可基于评估存储位置对用户设备而言的可访问性的标准——例如地理位置或者存储位置处的当前处理或存储负荷——来选择存储位置。这些方法将联系图64A-图64B来进一步论述。注册/认证服务器4806可以替换地或额外地被配置为基于规则来选择存储位置(例如,始终选择特定地方(例如公司总部)的存储位置或者首先选择与特定的存储提供商相关联的存储位置)。在一些实现方式中,作出请求的用户设备(在图50的示例中是用户1设备4802a)可请求特定的存储位置或用于选择存储位置的特定方法。在其他实施例中,企业、产品、客户端或用户可设定默认存储位置或用于选择存储位置的默认规则。在其他实施例中,注册/认证服务器4806可对上述用于选择存储位置的规则或方法中的两个或更多个进行加权和平衡(例如,利用投票方案)。
一旦用户1设备4802a接收到了指向存储位置的指针,用户1设备4802a就可从每个所识别的存储位置请求ANYFILE1的所存储部分。在图50A-图50E的使用N中取2分布技术的示例中,用户1设备4802a接收到了指向存储位置1 4808a和存储位置34808c的指针。因此,例如,用户1设备4802a发送对分别来自存储位置14808a和存储位置34808c的ANYFILE1部分1和ANYFILE1部分3的请求,而不发送对存储位置24808b或存储位置N4808n的请求。如图50D中所示,存储位置1 4808a和存储位置3 4808c中的每一个返回其各自存储的ANYFILE1部分给用户1设备4802a。存储位置中存储的数据部分的结构和用于从存储位置取回数据部分的方法将联系图54和55来更详细描述。
在接收到N个数据份中的2份后,用户1设备4802a可从ANYFILE1部分1和ANYFILE1部分3恢复ANYFILE1,如图50E中所示。用户1设备4802a可利用本文描述的用于恢复受保护的分布式数据的方法中的任何一种来恢复ANYFILE1。
在一些实现方式中,注册/认证服务器4806可被配置为执行安全数据共享功能。具体地,安全存储***4800可被配置为允许多个用户读取、写入和更新共同可访问的存储位置中的数据。在这种实现方式中,数据集(例如图49的ANYFILE1)的存储可由第一用户设备(例如用户1设备4802a)执行,而数据集的取回(例如,根据图50中所示的步骤)可由不同的第二用户设备(例如,用户2设备4802b)执行。在一些实现方式中,两个用户设备可共享相同的证书,从而注册/认证服务器4806在认证这些设备和提供指向存储的数据的指针时可以不在不同的用户设备之间进行区分。
在一些实现方式中,注册认证服务器可被配置为根据上文参考图42A-图42E的注册服务器4210描述的安全共享技术来操作。例如,如上文参考图42-图47详细描述的,在用户1设备4802a上执行的密码客户端可生成包括与用户1设备4802a的用户相关联的私钥和公钥的非对称密钥对,并且在用户2设备4802b上执行的密码客户端可生成与用户2设备4802b的用户相关联的私钥和公钥。用户设备4802可存储其各自的私钥并将其各自的公钥传递给注册/认证服务器4806,注册/认证服务器4806存储这些公钥。如上文参考图42-图47所述,用户1设备4802a可使用其存储的私钥来对一对称加密密钥加密以将其与受该对称密钥保护的数据一起存储在安全存储***4800中(以对受保护的数据进行认证)并且还可使用用户2设备4802b的公钥(从注册/认证服务器4806取回)来对该对称密钥加密以存储在安全存储***4800中。用户2设备4802b随后可使用其私钥来对利用用户2设备4802b的公钥加密的对称密钥进行解密,然后使用该对称密钥来对数据解密。在一些实现方式中,用户设备的私钥是用于向注册/认证服务器4806认证用户设备的证书。上文参考图42-图47描述的任何安全数据共享技术可以与安全存储***4800的体系结构按任何组合方式使用。
图51说明了用于安全存储***4800的注册/认证服务器4806维护的注册/认证数据库5100中的示范性数据结构。注册/认证数据库5100中存储的数据可被存储在注册/认证服务器4806本地的存储器上或者存储在注册/认证服务器4806可访问的一个或多个远程数据存储设备上。
注册/认证数据库5100对于安全存储***4800的每个客户端包含一记录。图51示出了分别为两个用户——用户1和用户2——存储用户记录5102a和5102b的注册/认证数据库5100的示例。数据库5100可以额外地或替换地包含与用户设备相关联的记录。在此示例中,用户1与产品相关联并且不将数据份存储在专用存储位置中。另一方面,用户2与企业相关联并且将数据份存储在四个专用存储位置中。如图51中所示,除了用户记录5102以外,数据库5100还存储其他类型的记录。这些记录——例如存储数据信息记录5110a、产品信息记录5130、访问偏好记录5140a或5140b、存储位置信息记录5160和企业信息记录5170——可以被包含在用户记录5102内或者链接到一个或多个用户记录5102。其他记录——例如联系图64所述的与存储位置的可访问性(例如,当前负荷或可用性,未示出)有关的数据——也可被注册/认证数据库5100维护或者被存储在注册/认证服务器4806上或由注册/认证服务器4806访问的另一数据库所维护,并且不需要与用户记录5102相关联。
每个用户记录5102包含标识用户——例如用户ID5104a或5104b——的信息,该信息例如可以是电子邮件地址、用户的姓名、用户名、社会安全号、电话号码或者任何其他类型的标识符。用户记录5102还包含用户认证信息,例如公钥5106、口令5108、或者任何其他认证数据,如联系图49A-图49C所述。除了图51中所示的数据的类型以外,用户记录5102还可包含其他关于用户的信息,例如用户的联络信息、用户的地理位置、标识用户使用的用户设备的信息,等等。可通过注册过程——例如联系图49A-图49C描述的过程——来创建用户记录。用于注册与产品或企业相关联的客户端的过程将联系图62来描述。
每个用户记录5102还包含用于定位由用户存储的数据的信息;此信息可利用存储数据信息数据结构5110或存储位置信息数据结构5160来加以存储。如上所述,在所说明的场景中,用户1不在专用存储位置中存储数据份,而是将来自不同分部作业的数据份存储在不同组存储位置中。为了适应这类用户,对于由用户1存储的每个被分成部分的数据文件,存储数据信息5110a包括该文件的标识符和指向存储该文件的份的存储位置的一组指针。例如,存储数据信息5110a包含关于文件——文件15112a——的记录。该记录包括文件名5114和四个指针5116-5122,每个指针指向存储文件1的份的存储位置。注册/授权服务器可在其响应于写入请求而识别和返回指针时为文件15112a创建记录,如联系图50A-图50C所述。
另一方面,用户2记录5102b不包含文件记录5112。如上所述,在所说明的场景中,用户2在一组专用存储位置中存储数据份。在此示例中,用户2将每个文件分割成四份并将每个文件的一份存储在四个专用存储位置中的不同的一个中。为了适应此类用户,用户记录5102b包括包含指向四个专用存储位置的指针5162-5168的存储位置信息记录5160。虽然存储位置是专用的,但它们可能不一定是静态的;例如,如果存储位置3中存储的所有数据移动到了新的存储位置,则指针5166将被修改为指向新的存储位置3。从而,如联系图50A-图50C所述,用户2在写入数据份之前仍可接收到指向存储位置5162-5168的指针,从而用户2拥有指向最新近的一组存储位置的指针。
该组专用存储位置可直接与用户相关联,或者它们可与和用户相关联的企业或产品相关联。在后一种情况中,存储位置信息记录5160可属于产品或企业的数据结构,并且用户2记录5102b指向此记录。此外,上述存储的专用可以是单向的:用户2可使用单一一组存储位置,但每个存储位置可存储来自多于一个用户的数据。
用户记录5102可包含与用户使用的产品或与用户相关联的企业有关的信息。例如,用户1记录5102a包含产品信息记录5130a。产品信息记录5130a包含标识产品的产品标识符5132a;包括用户或购买者的付款信息(例如,***信息)的付款信息记录5134a;预订开始日期5136a,这是用户1开始预订存储产品的日期;以及付款到日期5138a,这是如下的日期:用户1将拥有对存储网络的访问权直到该日期为止,除非他更新他的续订。
如果用户——例如用户2——与企业相关联,则用户记录可包含或指向与此企业有关的企业信息记录5170,而不是产品信息记录5130。企业信息记录5170包括标识企业的企业标识符5172、付款信息记录5174、预订开始日期5174和付款到日期5176,它们与上述的付款信息记录5134a、预订开始日期5136a和付款到日期5138a类似,但涉及的是企业对存储网络的预订。企业信息记录5170还可包括被企业中的用户的全部或子集使用的一个或多个工作组密钥5174,以及标识与企业相关联的用户的企业用户ID5176的列表。如果与企业相关联的一些但不是全部用户属于给定的工作组,则企业信息5170可包括标识哪些用户属于该工作组并且拥有对该工作组的工作组密钥的访问权的信息。
用户记录5102还包含用户、产品或企业的访问偏好5140。偏好可按访问操作(例如,写入、读取和修改)来加以分解。例如,用户1记录5102a存储包括写入访问偏好5142a和读取访问偏好5150a的访问偏好5140a。写入访问偏好5142a包括分配位置5144a,其标识通过注册过程——例如联系图62描述的注册过程——分配给用户的存储位置的。写入访问偏好5146a还标识:每个写入操作的份数5146a,其标识用户的信息分散算法为每个分部作业生成的份数;以及判决规则5148a,其被注册/认证服务器用来选择用于写入数据份的存储位置。在一些实现方式中,由用户生成的份的数目在作业与作业之间可以有所不同;在此情况下,这个份数信息5146a不被存储在访问偏好5140a中,而是随着每个写入请求来发送。用于标识返回给用户的存储位置的判决规则将联系图63-图64B来更详细描述。读取访问偏好5150a标识:每个读取操作的份数5152a,其标识注册/认证应当返回给想要读取存储的数据份的用户的指向份的指针数;以及判决规则5154a,其被注册/认证服务器用来选择用于读取数据份的存储位置。用于修改操作的类似访问偏好(未示出)也可被存储在访问偏好5140a中。
由于用户2对于每个写入操作向专用的一组存储位置的全部写入,所以用户2记录5102b在访问偏好5140b内只存储读取访问偏好5150b。读取访问偏好5150b标识:每个读取操作的份数5152b,其标识注册/认证服务器应当返回给想要读取存储的数据份的用户的指向份的指针的数目;以及判决规则5154b,其被注册/认证服务器用来选择用于读取数据份的存储位置。
在一些实现方式中,一个或多个存储位置可变得暂时或永久地不可用。例如,网络中断可导致存储位置与网络断开连接,或者特定存储位置上的高处理负荷可使得该存储位置暂时不能执行任何新的写入或读取功能。在一些实现方式中,注册/认证服务器4806被配置为不向请求取回数据的用户设备(例如图50A-图50C中的用户1设备4802a)或请求写入数据的用户设备(例如图49A-图49C中的用户1设备4802a)返回指向不可用的存储位置的指针。这种实现方式在图52中说明,该图绘出了N个存储位置4808a-4808n;注册/认证服务器4806可确定存储位置4808a-4808n的状态并且避免向用户设备返回指向不可用位置(在此示例中是存储位置34808c)的指针。
在一些实现方式中,注册/认证服务器4806接收由存储位置4808a-4808n推送的状态信息。例如,存储位置4808a-4808n中的每一个可被配置为按周期性的间隔(例如,每天、每小时或者按分钟或秒)推送指出其连接到注册/认证服务器4806的状态消息,并且未从其接收到状态的存储位置被视为不可用。可替换地或额外地,注册/认证服务器4806可通过例如在接收到从存储位置4808a-4808n读取或向存储位置4808a-4808n写入的请求时探查每个存储位置4808a-4808n或者存储位置4808a-4808n的子集来从存储位置4808a-4808n拉回状态信息。
如果一存储位置被确定为不可用,或者如果一存储位置中的特定数据部分不可用(例如,如果其被损坏或误删除了),则安全存储***4800可重建该存储位置或数据。例如,图53A-图53C示出了用于在存储位置34808c不可用的情况下重建ANYFILE1的一部分的过程。重建是由维护处理器5316执行的,该维护处理器5316可以是与注册/认证服务器4806分离的计算机处理设备、与注册/认证服务器4806为一体或位于相同位置的处理设备、或者与存储位置服务器——例如与存储位置4808a、4808b或4808d相关联的服务器——相关联的处理设备。在一些实现方式中,多个存储位置和/或注册/认证服务器包含维护处理器,从而如果包含维护处理器的一个位置或服务器变得不可用,则具有维护处理器的另一位置或服务器可以仍可用。
如图53A中所示,注册/认证服务器4806向维护处理器5316发送指向可用的存储位置(存储位置14808a、24808b和N4808n)的指针。如果存储位置34808c可用,但缺失了ANYFILE1部分3,则注册/认证服务器4806也向维护处理器5316发送指向存储位置34808c的指针,以便在恢复数据之后,维护处理器5316可替换存储位置34808c处的缺失数据。如果存储位置34808c不可用,则维护处理器5316可创建新的替换位置3并将重建的份3存储在新创建的替换位置3中,如下文详细描述。
为了重建ANYFILE1的部分3,维护处理器5316从可用存储位置5308a、5308b和5308n请求ANYFILE1的可用部分并且从可用存储位置5308a、5308b和5308n接收这些部分,如图53B中所示。如果可用存储位置的数目大于恢复数据所需的部分的最小数目,则维护处理器5316可从少于全部可用份请求并接收份;例如,如果只需要恢复4中取2分布数据中的一份,则维护处理器可请求并接收两个可用部分,而不是所有三个可用部分。维护处理器5316还接收恢复部分所需的密钥(例如,通过接收密钥部分并且恢复密钥并且使用任何可用的公钥或私钥)并重生成部分3。
如图53C中所示,维护处理器5316从接收到的部分重建缺失的部分3并且将重建的部分3发送到存储位置35308c,如果存储位置35308c可用的话。如果存储位置35308c不可用,则维护处理器5316通过确定替换存储位置3所需的存储空间(例如,先前存储位置3使用的存储空间,或者存储位置3的先前容量)并且向新的存储位置3分配安全存储***4800内的可用存储来创建新的存储位置3。在一些实施例中,维护处理器5316请求注册/认证服务器5306分配新的存储位置3。在创建了新的存储位置3之后,维护处理器5316随后将重建的部分3发送到新的存储位置3。维护处理器5316可类似地重建来自旧存储位置3的任何其他数据部分并且将此数据发送到新存储位置3。
在一些实现方式中,用户设备执行来保护数据的信息分散技术有利地将数据以由头部和多个数据块构成的数据流的形式输出,如上文联系图41所述。图54是绘出由单个分部作业创建并存储在安全存储***4800的N个存储位置4808a-4808n中的头部和P个数据块的示范性分布的框图。每个存储位置4808a-4808n存储一不同的头部5402(例如,如图所示的H1,H2,H3…HN)。头部5402包含与原始数据和数据部分有关的信息。此信息可包括关于原始数据和/或数据部分的内容或属性的元数据。通过在头部5402中存储描述性数据,可以在不重建数据或者甚至不取回数据部分的情况下取回与数据有关的信息。示范性的头部数据在下文联系图56来描述。另外,利用本文描述的头部结构,可以在不重建数据或取回数据部分的情况下对分成部分的数据进行搜索、验证和密钥更新;这些优点将联系图57A-图57D、图58A-图58B、图59A-图59C和图61A-图61E来进一步描述。
除了头部5402以外,每个存储位置4808a-4808n还存储在存储位置之间可不同的数据块5404的数目P。例如,存储位置15408存储数据块D11,D12...D1P。在图54中,每个存储位置被描绘为存储P个数据块;在其他实现方式中,存储位置4808a-4808n不一定要存储相同数目的数据块。通过将数据以具有头部后跟数据块的数据流的形式发送到存储位置4808a-4808n,数据的存储可在接收到所有数据之前在存储位置4808a-4808n处开始,这可提高存储的速度。此外,通过并行地向不同存储位置发送数据集的各部分,与向单个存储位置发送所有部分相比可以更迅速地存储整个数据集。
当通过本文描述的任何安全分部技术来创建头部和数据块并将其存储在存储位置中时,它们可与分部作业标识符相关联,从而使得与给定的特定分部作业相关联的所有(或足够的)数据块(例如,与在一组分部和保护操作中保护的特定数据文件或数据文件集合相关联的所有数据块)可被用户设备取回。图55提供了如何可利用分部作业标识符5506来关联由两个分部作业创建并存储在安全存储***4800中的两个不同存储位置中的头部和数据块的示例。
存储位置15508a包含两个头部5502:头部J1-S1,其是用于(与例如第一数据文件相对应的)分部作业1的部分1的头部,以及头部J2-S1,其是用于(与例如第二数据文件相对应的)分部作业2的部分1的头部。为了标识分部作业并从而标识与头部相关联的原始数据文件,每个头部被指派以作业ID:头部J1-S1被指派以作业ID1,对应于第一数据文件,并且头部J2-S2被指派以作业ID2,对应于第二数据文件。
存储位置15508a还包含两组数据块5504,并且每个数据块5504被指派以分部作业标识符5506。与分部作业1的部分1相关联的数据块(数据J1-S11、数据J1-S12,等等)被指派以作业ID1,并且与分部作业2的部分1相关联的数据块(数据J2-S11、数据J2-S12,等等)被指派以作业ID2。
存储位置24808b中的头部5502和数据块5504被类似地指派以与创建它们的分部作业相对应的分部作业标识符。存储位置14808a处存储的数据与存储位置24808b处存储的数据之间的差异是存储位置24808b包含来自每个分部作业的第二部分,而存储位置14808a包含来自每个分部作业的第一部分。因此,作为用于分部作业1的部分2的头部的头部J1-S2被指派以作业ID 1,并且作为用于分部作业2的部分1的头部的头部J2-S1被指派以作业ID 2。与分部作业1的部分2相关联的数据块(数据J1-S21、数据J1-S22,等等)被指派以作业ID 1,并且与分部作业2的部分2相关联的数据块(数据J2-S21、数据J2-S22,等等)被指派以作业ID2。另外的存储位置中的头部和数据块被以相同的方式指派以分部作业标识符,并且来自另外的分部作业的头部和数据块被类似地指派以与该分部作业相对应的分部作业标识符。
分部作业标识符可用在读取或取回操作中,用于标识为了恢复在分部作业中处理的数据的全部或一些而需要返回的所有的或足够的数据块。当用户设备请求与数据集相关联的存储部分时,注册/认证服务器4806返回指向可从中取回这些部分的存储位置的指针,如上文参考图51B所述。在如图55中所示或以类似的方式来构造数据的一些实现方式中,当用户设备从存储位置请求与特定的文件名或其他数据标识符相关联的部分时,与该存储位置相关联的处理器(例如,管理该存储位置与其他设备之间的数据传送的服务器)搜索头部5502中存储的描述性数据以找到指定的文件名或数据标识符。当存储位置处理器识别出包含所请求的文件名或标识符的头部5502时,存储位置处理器取回与该头部相关联的分部作业标识符5506,并且基于分部作业标识符5506,取回被指派以相同的分部作业标识符5506的数据块5504。
如上所示,头部可存储与原始数据和特定数据部分两者有关的描述性信息。图56绘出了可存储在数据头部中的示范性存储数据。与原始数据有关的数据5602可包括例如文件名(如上所述)、生成了数据份的用户设备中的文件路径、关于可用于搜索文件的内容或其他属性(例如,文件类型)的元数据、最后修改文件的日期、文件的作者、以及用于生成数据份的信息分散算法(IDA)。与特定数据部分有关的数据5604可包括分割密钥、加密密钥、认证数据、部分ID和部分号。
如上所述,无需重组数据部分,利用头部中存储的信息可以执行许多操作,例如验证数据部分、对数据份进行密钥更新、替换头部数据以及搜索数据。在这些过程的若干个中,用户设备或与安全存储***4800相关联的处理器(例如,注册/认证服务器4806或与存储位置中的一个或多个相关联的处理器)首先取回头部数据。图57A-图57D绘出了用于从安全存储***4800中的存储位置取回头部的过程。
为了取回用于给定的分成部分的数据文件的头部,设备(例如用户1设备4802a)向注册/认证服务器4806发送对于文件(例如ANYFILE1)的存储位置的请求,如图57A中所示。此请求与联系图50A描述的对于ANYFILE1本身的请求的不同之处在于只请求头部而不请求数据块。对于一些应用,只请求单个头部。对于其他应用,请求恢复数据所需要的最小数目的头部。对于另一些其他应用,请求来自存储所选文件的各部分的所有存储位置的头部。如果请求了用于一文件的所有数据头部的一个或子集,则可如上文联系图50B所述来选择要返回指向其的指针的存储位置。如图57B中所示,在识别和/或选择指针之后,注册/认证服务器4806返回所请求数目的指向存储与ANYFILE1相关联的头部的存储位置的指针。
用户1设备4802a随后向返回了指向其的指针的每个存储位置发送请求以读取头部。图57C中的示例示出了用户1设备4802a向N个存储位置4808a-4808n发送读取头部请求;这可以是存储与ANYFILE1相关联的头部的存储位置的全部或子集。在接收到读取头部请求后,存储位置4808a-4808n向用户1设备4802a返回头部H1至HN,如图57D中所示。
在其他实现方式中,图57A-图57D中绘出的任何步骤可由与安全存储***4800相关联的处理设备执行而不是由用户设备执行。例如,用户1设备4802a可发送对于注册/授权服务器4806取回或访问头部数据的请求;在这种实现方式中,注册/授权服务器4806可取回头部H1至HN并且对头部进行操作,而用户1设备4802a不接收来自头部的数据。或者,注册/认证服务器4806或与安全存储***4800相关联的另一处理设备可以在不被用户设备提示的情况下请求头部,以便例如周期性地验证数据。
图58A-图58B绘出了用于验证安全存储***4800中存储的与头部相关联的数据的过程。在图58A-图58B的示例中,头部包括由工作组密钥5810a包裹的加密密钥,如本文别处所述(例如,参考图39)。如图58A中所示,用户1设备4802a使用工作组密钥5810a(其例如可能是从工作组密钥服务器或本地存储取回的)来对头部H1至HN的每一个中的加密密钥拆包。验证处理器5818随后验证可从与返回的头部相关联的数据部分恢复的数据(例如,利用包括对于一个或多个关联块的完好性校验的完好性头部组块,如上文参考图41所述)。
如果一个或多个数据部分的完好性已受到损害,则可根据图59A-图59C中描述的过程来对数据部分进行密钥更新,或者可利用上文联系图53A-图53C描述的过程在相同存储位置或新创建的存储位置中重新生成数据部分。如果注册/认证服务器4806向用户1设备4802a返回了比指向部分存储位置的所有指针更少的指针,则为了恢复缺失的或受损害的数据可能需要一个或多个额外的指向(一个或多个)额外数据部分的指针。在一些实现方式中,图58A-图58B中绘出的步骤可由安全存储***4800中的处理设备执行而不是由用户设备执行。例如,注册/认证服务器4806或另一验证处理器可周期性地对存储网络中存储的数据进行拆包和验证。
图59A-图59C绘出了用于对安全存储***4800中存储的头部进行密钥更新的过程。此过程可例如用在工作组密钥被改变的情况下;在此情况下,由工作组密钥包裹的加密密钥应当被密钥更新,使得能够利用新工作组密钥来访问它们,而不能利用旧工作组密钥来访问它们。在图59A-图59C中所示的示例中,头部中存储的加密密钥先前是利用用于用户1设备4802a所属的工作组的旧工作组密钥——工作组密钥15920a——来包裹的。如果所有数据部分的头部通过图57A-图57D的过程被取回并被密钥更新,则可利用新工作组密钥来读取所有数据部分。如果少于所有数据部分被取回和密钥更新,则如果旧工作组密钥不再能够被使用,则仍与旧工作组密钥相关联的数据部分不再能够被读取。
如图59A中所示,用户1设备4802a使用旧工作组密钥15920a来对来自每个取回的头部H1至HN的加密密钥进行拆包。用户1设备4802a随后使用新的工作组密钥——工作组密钥25920b——来对来自头部H1至HN的所有拆包的加密密钥进行包裹,如图59B中所示。最后,用户1设备4802a将新包裹的头部H1至HN存储在从中取回头部H1至HN的存储位置5908a至5908n中,如图59C中所示。或者,每个头部的拆包、再包裹和发送可以顺序地执行(例如,H1可被拆包、再包裹并发送到存储位置15908a,然后H2可被拆包、修改并发送到存储位置25908b,等等)。
在一些实现方式中,图59A-图59C中绘出的步骤可由与安全存储***4800相关联的处理设备执行而不是由用户设备执行。例如,注册/认证服务器4806或者单独的密钥更新处理器或头部修改处理器可接收来自用户设备或其他的工作组密钥仓库的新工作组密钥,取回由旧工作组密钥包裹的头部数据中的一些或全部,并且利用新的工作组密钥对取回的头部数据进行密钥更新。
图60A-图60D绘出了用于在安全存储***4800中存储的头部中***新的头部信息或修改信息的过程。当添加或修改描述原始数据的头部信息——例如联系图56描述的原始数据信息5602的类型——时,与原始数据相关联的所有可用头部(例如,按文件名或其他标识符)可被取回并修改,以使得没有数据部分具有过时的头部信息。在图60A-图60C中所示的示例中,用户1设备4802a已经利用取回过程——例如联系图57A-图57D描述的过程——取回了特定数据文件的所有部分的头部H1至HN。
如图60A中所示,用户1设备4802a有新头部信息6002来添加到或替换头部H1至HN中当前存储的头部信息。用户1设备4802a将新头部信息6002***到头部H1至HN的每一个中或者替换头部H1至HN的每一个中的头部信息。新头部信息6002可以是例如新的文件名、作者的添加、或者文件的作者的改变。将新头部信息6002***到头部H1至HN中的结果是经修改的头部H1_mod至HN_mod,如图60C中所示。
在新头部信息6002被***之后,用户1设备4802a将经修改的头部H1_mod至HN_mod发送到从中取回头部H1至HN的存储位置4808a至4808n,如图60C中所示。在其他实现方式中,每个头部的修改和发送可以顺序地执行(例如,H1可被修改并发送,然后H2可被修改并发送,等等)。
在一些实现方式中,图60A-图60D中绘出的步骤可由与安全存储***4800相关联的处理设备执行而不是由用户设备执行。例如,注册/认证服务器4806或单独的头部修改处理器可从用户设备接收新的头部信息,取回包括旧头部信息的头部,并且基于新头部信息来修改取回的头部,而不将头部传送到用户设备。
图61A-图61E是绘出经由数据文件的关联的头部来搜索安全存储***4800中存储的数据文件的过程的框图。在图61A-图61E中所示的示例中,用户1设备4802a向与安全存储***4800相关联的搜索服务器6102发送搜索请求。搜索服务器6102与注册/授权服务器4806和存储位置4808a-4808n通信以访问存储的头部以取回所请求的信息并将搜索结果返回给用户1设备4802a(如下所述)。在一些实现方式中,注册/授权服务器4806接收搜索请求并将搜索请求引导至搜索服务器6102或将用户1设备4802a指引到搜索服务器6102(未示出)。在一些实现方式中,搜索服务器6102不是单独的服务器;而是注册/认证服务器4806或一个或多个存储位置4808执行本文描述的搜索服务器6102的功能。在其他实现方式中,搜索服务器6102的功能由用户设备——例如用户1设备4802a——执行。
搜索请求包含来自用户1设备4802a的指定所寻求的信息的信息。具体地,搜索请求可包含搜索查询和搜索范围。搜索查询指定与要返回的数据有关的信息(例如,作者、创建日期、内容概要、来自文件名的字符串、或者联系图56描述的任何头部信息)。搜索范围指定在何处搜索数据(例如,用户1创建的所有数据,用户1可访问的所有数据,或者由用户1的工作组的成员创建的所有数据)。搜索范围可限于用户1设备4802a被许可访问的数据。如果用户1设备4802a请求其在不提供额外的认证信息的情况下不可访问的数据,则用户1设备4802a可在搜索请求中(或者在请求之前或之后)发送额外的认证信息以验证用户设备的身份和/或证明用户设备访问该数据或与该数据有关的信息的权利。
在接收到搜索请求之后,搜索服务器6102向注册/授权服务器4806发送对于包含搜索范围内的数据的存储位置的请求,如图61A中所示。例如,如果搜索请求是搜索用户创建的所有数据,则注册/授权服务器4806可返回存储数据信息记录5110(图51)中的指向用于所有数据5112的所有存储位置的指针。如果搜索请求在搜索工作组中的所有数据,则注册/授权服务器4806可返回被分配给该工作组的所有存储位置,或者工作组的成员在其中存储了数据部分的所有存储位置。在一些实现方式中,注册/授权服务器4806发送指向搜索范围内的存储位置的指针的缩减集以避免冗余搜索。例如,注册/授权服务器4806可返回给定文件的仅一部分的位置。如果多于一个文件在给定的存储位置中具有数据部分,则注册/授权服务器4806可以只返回指向该存储位置的一个指针,而不是多次返回相同的指针。注册/授权服务器4806可以以最小化搜索的存储位置的数目的方式缩减指向存储位置的指针的集合,或者其可基于诸如可用存储位置的地理位置、可用存储位置上的负荷或其他考虑之类的可访问性标准来选择要搜索的存储位置。如图61B中所示,注册/授权服务器4806向搜索服务器6102返回所选择的指向在搜索范围内的存储位置4808a-4808n的指针。
搜索服务器6102随后向注册/授权服务器4806指向的向存储位置4808a-4808n中的每一个发送对关于包含该搜索查询的文件的信息的请求,如图61C中所示。接收到搜索查询的存储位置4808a-4808n中的每一个读取该存储位置中存储的数据部分的头部并将头部信息与搜索查询相比较以确定头部所标识的数据部分是否匹配搜索查询。对于匹配查询的每个头部,存储位置向搜索服务器6102返回与该数据部分有关的信息,如图61D中所示。如果存储位置4808包含搜索范围以外的数据,则搜索服务器6102也将搜索范围发送给存储位置4808a-4808n。每个存储位置确定其上存储的每个数据部分是否在搜索范围内并且只返回关于搜索范围内的数据部分的信息。每个存储位置可返回所有可用头部信息,与原始文件有关的所有可用头部信息,或者可用头部信息的某个其他子集。在一些实现方式中,发送搜索请求的用户设备可指定在搜索结果中要接收的信息,并且每个存储位置可以只返回所请求的信息。
搜索服务器6102随后编制存储位置4808a-4808n返回的文件的列表。如果存储位置4808a-4808n中的多于一个可能返回了相同的文件信息,则搜索服务器6102准备存储位置4808a-4808n返回的数据部分(或相应的数据集)的非冗余列表。搜索服务器6102还可对从存储位置4808a-4808n接收的信息进行重格式化。搜索服务器6102随后将找到的数据的非冗余列表发送给用户1设备4802a。
与图61A-图61E中示出和上文描述的过程类似的过程可用于返回特定用户或工作组存储的所有文件的目录列表。不是像图61A中那样发送搜索请求,用户1设备4802a而是向搜索服务器6102发送目录列表请求。目录列表请求指定范围,例如上述的搜索范围,而不指定搜索查询。或者,搜索查询可指示搜索范围内的所有数据被返回。所有后续的步骤与上文所述相同,但存储位置4808a-4808n返回标识范围内的所有数据的信息,而不将头部信息与搜索查询相比较。
图62-图65是说明用于使用上文所述的安全存储***4800的若干个过程的流程图。这些流程图中的一个或多个步骤可由编程的计算机***实现,该编程的计算机***可包括一个或多个处理器、存储设备和通信设备,它们被布置在彼此的本地和/或远程,被编程有在计算机可读介质或自定义配置逻辑器件中具现化的机器可读指令(例如采取数种编程语言中的任何一种的代码)。为了易于说明,图62-图65的流程图的步骤在本文中被描述为由安全存储***中包括的编程的计算机***的服务器执行,但应当理解,任何一个或多个处理设备可被配置为适当地执行这些步骤。在一些实现方式中,主机设备例如是个人计算机、服务器或大型机。在一些实现方式中,主机设备是便携式计算设备,例如平板设备、上网本、膝上电脑、移动电话、智能电话、或者任何其他这种设备。在一些实现方式中,主机设备包括多个计算设备,例如以上描述的那些中的任何一种。多个计算设备可被配置为各自执行图62-图65的过程的一个或多个步骤或操作(例如,以串行或并行方式)。主机设备例如可在诸如WINDOWS(MICROSOFT)、LINUX、MACOS(APPLE)、ANDROID(GOOGLE)、IOS(CISCO SYSTEMS)、BLACKBERRY OS(RESEARCH IN MOTION)、SYMBIAN(NOKIA)或WINDOWS PHONE(MICROSOFT)之类的操作***上运行。
图62是用于在安全存储***——例如安全存储***4800——中分配存储的过程6200的流程图。在步骤6202,服务器将分布在多个存储设备上的存储位置分配给已向安全存储***注册的企业或产品。例如,安全存储***中的注册/授权服务器可以向安全存储***注册新的企业或产品并且基于例如企业或产品的位置、类型和/或大小来向企业或产品指派存储位置。单个存储位置的各部分可被分配给多个产品或企业,或者一存储位置可以只服务单个产品或企业。如果企业或产品的存储需求扩大或变化,则注册/认证服务器可分配额外的或不同的存储位置给已经向存储网络注册的企业或产品。
在步骤6204,服务器在企业或产品内的客户端之间分配存储。客户端可以是与企业或产品相关联的用户或用户设备。例如,安全存储***可支持多个存储设备,并且用户可以是预订安全存储***提供的服务之一的客户。作为另一示例,企业可具有与该企业相关联的多个用户(例如,员工),或者企业可具有与该企业相关联的多个计算设备(例如,公司拥有的计算机)。当客户端或产品内的每个用户或用户设备注册使用安全存储***时,服务器在步骤6202中可为该用户或用户设备识别安全存储***内的存储,其方式例如是通过将用户指派到分配给该企业或产品的存储位置的子集。在其他实现方式中,客户端不与企业或产品相关联,并且在不考虑企业或产品的情况下被指派存储位置。
在步骤6206,服务器生成或指派证书给客户端,如联系图49A-图49C所述。在一些实现方式中,服务器生成公钥-私钥对并将密钥对的私钥发送给客户端。在步骤6208,服务器存储证书(例如,密钥对的公钥)。服务器可接收额外的或替换的证书信息,例如从客户端接收的用户名和口令,或者可以创建额外的或替换的证书信息,例如由服务器生成并随后被发送给客户端的用户名和口令。此证书信息也被服务器存储。一旦客户端已注册并且证书已指派,用户就可存储并从安全存储***取回数据,如上所述。
图63是用于向安全存储***的客户端返回存储位置的过程6300的流程图。如联系图49A-图49C和图50A-图50E所述,如果客户端希望向安全存储***写入数据或从安全存储***读取数据,则服务器识别用于写入或读取数据的存储位置并且向客户端发送指向这些存储位置的指针。此交互在下文更详细描述。
在步骤6302,服务器接收来自客户端设备的访问请求。访问请求可以是对于访问存储位置以写入数据、读取数据或修改存储的数据的请求。访问请求可伴随着客户端的证书(例如,用户名和口令或者与客户端相关联的私钥)。访问请求可伴随着关于数据的额外信息,例如所取回或修改的数据的文件名,或者要写入的数据文件的大小。
在步骤6304,服务器验证客户端的证书。如果证书未得到验证,则可拒绝客户端访问所请求的存储位置,或者可给予客户端向安全存储***注册或者尝试不同的证书的机会。如果证书得到验证,则将服务客户端的请求,如图63中所示。
在步骤6306,服务器基于一组可访问性标准来识别存储要访问的数据或者客户端可向其写入新数据的所请求的存储位置。如上文联系图50A-图50C和图51A-图51E所述,如果存在比需要返回的更多的存储位置,则注册/认证服务器基于可取决于存储位置的可用性、位置、负荷和其他属性的静态或动态的可访问性标准来识别要返回给客户端的存储位置。具体地,不可用的存储位置将不被返回给客户端,或者将只在没有足够的其他可用存储位置的情况下被返回。如上所述,返回的存储位置的数目取决于操作。例如,如果数据被以N中取M的方式划分,则对于写入操作返回的存储位置的数目是数据划分所生成的份数N;对于读取操作,返回的存储位置的数目可少至M。用于识别存储位置的额外方法将联系图64A和图64B来描述。
在步骤6308,注册/认证服务器将存储位置发送给客户端。例如,注册/认证服务器可将指向存储位置的指针发送给客户端。利用这些指针,客户端可直接访问所识别的存储位置以完成期望的读取、写入或修改操作。
图64A-图64B是用于从一组可用存储位置中确定一组存储位置来返回给安全存储***的用户的过程的流程图。联系一读取操作来描述该过程,在该读取操作中存储要访问的数据的一部分的N个存储位置中的M个被返回。然而,如果用户在执行另一操作,例如写入操作,并且对于该操作,可用存储位置的数目大于为了数据的恢复而需要返回的存储位置的数目(例如,一客户端被分配了六个存储位置,但根据IDA将数据分布到四个部分中),则可以使用类似的过程。
图64A示出了用于基于地理情况来识别存储位置的过程6400。在步骤6402,服务器识别客户端设备的地理位置。客户端设备的地理位置可从客户端设备发送来,基于客户端设备的IP地址来确定,或者由GPS或任何其他方法确定。在步骤6404,服务器类似地识别存储所请求的文件的各部分的N个存储位置的地理位置。
在步骤6406,服务器将客户端的地理位置与N个存储位置的地理位置相比较以识别M个最近的存储位置。在步骤6408,服务器向客户端设备返回M个最近的存储位置。在一些实现方式中,M是恢复期望数据所必要的部分的最小数目;在其他实现方式中,M大于该最小数目。
图64B示出了基于存储位置上的处理负荷来识别存储位置的过程6450。在步骤6452,服务器识别存储所请求的数据的各部分的N个存储位置上的负荷。可例如通过向每个存储位置发送请求并且接收量化存储位置上的负荷的度量值或者通过接收来自存储位置的标识其当前负荷的周期性状态更新来确定负荷。或者,负荷可由服务器来管理:服务器可保持跟踪其将客户端指引到了哪些存储位置以便在可用存储位置间分散负荷。例如,对于特定的客户端或企业,服务器在选择要返回的存储位置时可在可用存储位置中循环。服务器可监视其将客户端指引至每个存储位置的频率或者在给定时间段(例如,最近5秒、最近10秒、最近一分钟、最近10分钟等等)内其返回每个存储位置的次数。服务器还可保持跟踪所执行的操作的类、每个存储位置与被指引到该存储位置的客户端之间的连接速度、客户端写入或取回的数据集或数据部分的大小、存储位置处被其他数据使用的存储的百分比、以及用于确定存储位置上的可能的处理或存储负荷的其他信息。
在识别可用存储位置上的负荷之后,在步骤6454,服务器识别具有最低负荷的M个存储位置,例如返回了最低负荷度量的M个存储位置,或者服务器在给定的时间段中最少返回的M个存储位置。在步骤6546,服务器向客户端返回指向具有最低负荷的M个存储位置的指针。在一些实现方式中,M是恢复期望数据所必要的部分的最小数目;在其他实现方式中,M大于该最小数目。
服务器可使用地理情况和负荷平衡过程中的任一者来识别要返回给客户端的存储位置,或者服务器可使用这些过程和/或任何其他存储位置选择规则或考虑的某种组合来识别要返回给客户端的存储位置。例如,服务器在加权组合或投票方案中可考虑地理和负荷平衡考虑两者。作为另一示例,服务器可对返回第一存储位置(例如,公司总部处的存储位置)具有偏好,但可以基于例如存储位置上的负荷而选择其他位置。可以使用因素的任何其他组合来选择存储位置。另外,对于不同类型的操作(例如,读取、写入和修改)的存储位置的选择可基于不同的选择标准。例如,服务器可通过在可用存储位置间分布写入操作的数目或大小来对写入操作使用负荷平衡,并且服务器可使用地理情况来为读取操作选择存储位置。
图65是用于在安全存储***的存储位置中存储数据的过程6500的流程图。在此示例中,每个数据部分在存储位置中被表示为头部和一组数据块,如图54中所示。在步骤6502,存储位置从客户端接收数据部分。客户端可使用信息分散算法来生成数据部分并且将头部与数据部分包括在一起,然后以头部后跟多个数据块的形式输出,头部和数据块各自采取安全存储***或接收方的存储位置所偏好的格式。如联系图55和图57至图61所述,头部可用于识别和取回数据块并且用于在不读取数据的情况下执行各种操作。在一些实现方式中,当客户端不以适当的格式输出数据来存储在安全存储***的存储位置之一中时,在步骤6504,存储位置或中间设备可对分割的数据流进行重格式化以向其赋予图54中指定的头部-数据块结构。具体地,如果未从客户端接收到头部,例如联系图56描述的头部,则存储位置创建包含任何可用信息——例如图56中指定的信息——的头部。如果从客户端接收到头部,但该头部不是采取安全存储***所使用的格式,则存储位置可对头部进行重格式化。数据块也可被安全存储***或接收方的存储位置根据期望来重格式化或重新设定大小。
在步骤6506,存储位置向格式化的头部并向分割数据流中的每个数据块指派分部作业标识符。分部作业标识符在该存储位置内是该数据流所特有的。存储在不同存储位置中的来自单个分部作业的数据部分可以——但不是必须——具有相同的分部作业标识符。在步骤6508,存储位置将头部与指派的分部作业标识符一起存储并且将数据块与分部作业标识符一起存储。在一些实现方式中,数据流内的数据块可指向彼此(例如,每个数据块可指向数据部分中的前一个或下一个数据块);在此情况下,可以向少于所有数据块指派分部作业标识符,例如可以只向流中的第一数据块或者流中的最末数据块指派分部作业标识符。如联系图55所述,头部不需要与数据部分一起存储,因为数据部分可通过分部作业标识符来定位。
本领域技术人员将认识到,安全共享可以由作为上述***的修改或变体的安全存储***来实现。因此,由于已经关于图48的安全存储***描述了实现,所以这些实现是说明性的而且不是对本发明的限制。
Claims (39)
1.一种用于将客户端计算设备引导至存储在多个存储位置上的数据部分的方法,该方法的步骤由编程的计算机***实现,该方法包括:
在服务器处从客户端计算设备接收对于识别多个物理上分离的存储位置的请求,所述多个物理上分离的存储位置中的每一个存储由所述请求标识的数据集的一部分,其中所述数据集能够从所述数据集的预定数目的部分恢复,所述数据集的预定数目的部分是所述数据集的至少两个部分并且少于所述数据集的所有部分;
利用所述服务器基于一个或多个标准从所述多个存储位置中的可用存储位置中选择至少所述预定数目的存储位置,其中所选位置中的每一个存储所述数据集的一部分,并且所选的存储位置包括比所述多个存储位置的全部更少的存储位置;以及
从所述服务器向所述客户端计算设备发送标识所选存储位置的数据。
2.如权利要求1所述的方法,还包括:
在接收对于识别多个物理上分离的存储位置的请求之前:
从与所述客户端计算设备不同的计算设备接收所述数据集的多个部分,以及
将所述数据的多个部分存储在所述多个物理上分离的存储位置之中。
3.如权利要求1所述的方法,其中所述标准包括地理位置,所述方法还包括确定所述多个存储位置中的至少一个的地理位置。
4.如权利要求1所述的方法,其中所述标准包括负荷,所述方法还包括确定所述多个存储位置中的至少一个上的负荷,所述负荷包括存储负荷和处理负荷中的至少一者。
5.如权利要求1所述的方法,其中对存储位置的选择基于与企业、产品、客户端、用户或请求相关联的至少一个规则。
6.如权利要求1所述的方法,其中所述数据集的每个部分都包括头部和与该头部相关联的多个数据块。
7.如权利要求6所述的方法,其中所述数据集的每个部分的头部通过指派给所述头部和每个所述数据块的分部作业标识符来与所述多个数据块相关联。
8.如权利要求6所述的方法,还包括从所述多个存储位置中的至少一个访问所述头部。
9.如权利要求8所述的方法,所述方法还包括:
从所述客户端计算设备接收对于修改经加密的数据集的一部分的头部的请求;以及
修改所述经加密的数据集的该部分的头部。
10.如权利要求8所述的方法,所述方法还包括:
从存储网络的用户接收对于利用新密钥对数据集的一部分的头部中的数据进行密钥更新的请求;
对所述数据集的该部分的头部中的数据进行拆包;以及
利用所述新密钥来重新包裹所述数据集的该部分的头部中的数据。
11.如权利要求8所述的方法,所述方法还包括基于至少一个头部来验证与该头部相关联的数据块能够用于恢复所述数据集。
12.如权利要求1所述的方法,所述方法还包括:
确定在第一存储位置处所述数据集的一部分对于所述客户端计算设备是不可访问的;以及
从至少所述预定数目的可用部分恢复所述数据集的该部分到所述第一存储位置。
13.如权利要求1所述的方法,其中所述至少一个存储位置包括云计算存储位置。
14.一种用于将客户端计算设备引导至存储在多个存储位置上的数据部分的方法的计算机***,包括:
至少一个处理器;以及
存储计算机可执行指令的非暂态计算机可读介质,所述指令当被所述至少一个处理器执行时使得所述计算机***执行以下步骤:
从客户端计算设备接收对于识别多个物理上分离的存储位置的请求,所述多个物理上分离的存储位置中的每一个存储由所述请求标识的数据集的一部分,其中所述数据集能够从所述数据集的预定数目的部分恢复,所述数据集的预定数目的部分是所述数据集的至少两个部分并且少于所述数据集的所有部分;
基于一个或多个标准从所述多个存储位置中的可用存储位置中选择至少所述预定数目的存储位置,其中所选位置中的每一个存储所述数据集的一部分,并且所选的存储位置包括比所述多个存储位置的全部更少的存储位置;以及
向所述客户端计算设备发送标识所选存储位置的数据。
15.如权利要求14所述的***,其中由所述计算机***执行的所述方法还包括:
在接收对于识别多个物理上分离的存储位置的请求之前:
从与所述客户端计算设备不同的计算设备接收所述数据集的多个部分,以及
将所述数据的多个部分存储在所述多个物理上分离的存储位置之中。
16.如权利要求14所述的***,其中所述标准包括地理位置,并且其中由所述计算机***执行的所述方法还包括确定所述多个存储位置中的至少一个的地理位置。
17.如权利要求14所述的***,其中所述标准包括负荷,其中由所述计算机***执行的所述方法还包括确定所述多个存储位置中的至少一个上的负荷,所述负荷包括存储负荷和处理负荷中的至少一者。
18.如权利要求14所述的***,其中对存储位置的选择基于与企业、产品、客户端、用户或请求相关联的至少一个规则。
19.如权利要求14所述的***,其中所述数据集的每个部分都包括头部和与该头部相关联的多个数据块。
20.如权利要求19所述的***,其中所述数据集的每个部分的头部通过指派给所述头部和每个所述数据块的分部作业标识符来与所述多个数据块相关联。
21.如权利要求19所述的***,其中由所述计算机***执行的所述方法还包括从所述多个存储位置中的至少一个访问所述头部。
22.如权利要求21所述的***,其中由所述计算机***执行的所述方法还包括:
从所述客户端计算设备接收对于修改经加密的数据集的一部分的头部的请求;以及
修改所述经加密的数据集的该部分的头部。
23.如权利要求21所述的***,其中由所述计算机***执行的所述方法还包括:
从存储网络的用户接收对于利用新密钥对数据集的一部分的头部中的数据进行密钥更新的请求;
对所述数据集的该部分的头部中的数据进行拆包;以及
利用所述新密钥来重新包裹所述数据集的该部分的头部中的数据。
24.如权利要求21所述的***,其中由所述计算机***执行的所述方法还包括基于至少一个头部来验证与该头部相关联的数据块能够用于恢复所述数据集。
25.如权利要求14所述的***,其中由所述计算机***执行的所述方法还包括:
确定在第一存储位置处所述数据集的一部分对于所述客户端计算设备是不可访问的;以及
从至少所述预定数目的可用部分恢复所述数据集的该部分到所述第一存储位置。
26.如权利要求14所述的***,其中所述至少一个存储位置包括云计算存储位置。
27.一种存储计算机可执行指令的非暂态计算机可读介质,所述指令当被至少一个处理器执行时使得计算机***执行用于将客户端计算设备引导至存储在多个存储位置上的数据部分的方法,该方法包括以下步骤:
从客户端计算设备接收对于识别多个物理上分离的存储位置的请求,所述多个物理上分离的存储位置中的每一个存储由所述请求标识的数据集的一部分,其中所述数据集能够从所述数据集的预定数目的部分恢复,所述数据集的预定数目的部分是所述数据集的至少两个部分并且少于所述数据集的所有部分;
基于一个或多个标准从所述多个存储位置中的可用存储位置中选择至少所述预定数目的存储位置,其中所选位置中的每一个存储所述数据集的一部分,并且所选的存储位置包括比所述多个存储位置的全部更少的存储位置;以及
向所述客户端计算设备发送标识所选存储位置的数据。
28.如权利要求27所述的非暂态计算机可读介质,其中所述方法还包括:
在接收对于识别多个物理上分离的存储位置的请求之前:
从与所述客户端计算设备不同的计算设备接收所述数据集的多个部分,以及
将所述数据的多个部分存储在所述多个物理上分离的存储位置之中。
29.如权利要求27所述的非暂态计算机可读介质,其中所述标准包括地理位置,并且其中所述方法还包括确定所述多个存储位置中的至少一个的地理位置。
30.如权利要求27所述的非暂态计算机可读介质,其中所述标准包括负荷,其中所述方法还包括确定所述多个存储位置中的至少一个上的负荷,所述负荷包括存储负荷和处理负荷中的至少一者。
31.如权利要求27所述的非暂态计算机可读介质,其中对存储位置的选择基于与企业、产品、客户端、用户或请求相关联的至少一个规则。
32.如权利要求27所述的非暂态计算机可读介质,其中所述数据集的每个部分都包括头部和与该头部相关联的多个数据块。
33.如权利要求32所述的非暂态计算机可读介质,其中所述数据集的每个部分的头部通过指派给所述头部和每个所述数据块的分部作业标识符来与所述多个数据块相关联。
34.如权利要求32所述的非暂态计算机可读介质,其中所述方法还包括从所述多个存储位置中的至少一个访问所述头部。
35.如权利要求34所述的非暂态计算机可读介质,其中所述方法还包括:
从所述客户端计算设备接收对于修改经加密的数据集的一部分的头部的请求;以及
修改所述经加密的数据集的该部分的头部。
36.如权利要求34所述的非暂态计算机可读介质,其中所述方法还包括:
从存储网络的用户接收对于利用新密钥对数据集的一部分的头部中的数据进行密钥更新的请求;
对所述数据集的该部分的头部中的数据进行拆包;以及
利用所述新密钥来重新包裹所述数据集的该部分的头部中的数据。
37.如权利要求34所述的非暂态计算机可读介质,其中所述方法还包括基于至少一个头部来验证与该头部相关联的数据块能够用于恢复所述数据集。
38.如权利要求27所述的非暂态计算机可读介质,其中所述方法还包括:
确定在第一存储位置处所述数据集的一部分对于所述客户端计算设备是不可访问的;以及
从至少所述预定数目的可用部分恢复所述数据集的该部分到所述第一存储位置。
39.如权利要求27所述的非暂态计算机可读介质,其中所述至少一个存储位置包括云计算存储位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161492296P | 2011-06-01 | 2011-06-01 | |
US61/492,296 | 2011-06-01 | ||
PCT/US2012/040480 WO2012167094A1 (en) | 2011-06-01 | 2012-06-01 | Systems and methods for secure distributed storage |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103959302A true CN103959302A (zh) | 2014-07-30 |
Family
ID=46245649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280034840.9A Pending CN103959302A (zh) | 2011-06-01 | 2012-06-01 | 用于安全分布式存储的***与方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20120331088A1 (zh) |
EP (1) | EP2715601A1 (zh) |
CN (1) | CN103959302A (zh) |
AU (1) | AU2012261972A1 (zh) |
CA (1) | CA2837716A1 (zh) |
HK (1) | HK1201093A1 (zh) |
WO (1) | WO2012167094A1 (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572891A (zh) * | 2014-12-24 | 2015-04-29 | 北京大学深圳研究生院 | 一种用于网络信息分离存储的文件更新方法 |
CN104618482A (zh) * | 2015-02-02 | 2015-05-13 | 浙江宇视科技有限公司 | 访问云数据的方法、服务器、传统存储设备、架构 |
CN104636088A (zh) * | 2015-02-17 | 2015-05-20 | 华为技术有限公司 | 一种将数据写入数据服务器的方法及存储*** |
CN104850797A (zh) * | 2015-04-30 | 2015-08-19 | 北京奇虎科技有限公司 | 设备安全管理方法及装置 |
CN106529317A (zh) * | 2016-11-22 | 2017-03-22 | 广州大学 | 基于Shadow DOM的Web应用加解密方法 |
CN106997521A (zh) * | 2016-01-22 | 2017-08-01 | 平安科技(深圳)有限公司 | 基于api的投保信息处理方法和装置 |
CN107005746A (zh) * | 2014-09-05 | 2017-08-01 | 微软技术许可有限责任公司 | 用于***设立的数据流头部的部分加密 |
CN107529352A (zh) * | 2015-03-13 | 2017-12-29 | 凯为公司 | 用于软件定义的数据中心网络的协议独立的可编程交换机(pips) |
CN107992753A (zh) * | 2016-10-26 | 2018-05-04 | 大众汽车有限公司 | 用于更新车辆的控制设备的软件的方法 |
CN108292250A (zh) * | 2015-12-21 | 2018-07-17 | 英特尔公司 | 用于促进分布式数据备份的方法和装置 |
CN108810002A (zh) * | 2018-06-21 | 2018-11-13 | 北京智芯微电子科技有限公司 | 安全芯片的多ca应用***及方法 |
CN109076054A (zh) * | 2016-03-28 | 2018-12-21 | 赛门铁克公司 | 用于管理单点登录应用程序的加密密钥的***和方法 |
CN109791594A (zh) * | 2016-08-12 | 2019-05-21 | Altr解决方案公司 | 为了在多个不可变数据结构上持续存储而对数据进行分段 |
CN110035089A (zh) * | 2019-04-28 | 2019-07-19 | 兰州理工大学 | 一种分布式***的网络安全验证方法和*** |
CN111625822A (zh) * | 2020-04-07 | 2020-09-04 | 重庆云君教育科技有限公司 | 一种云资源存储管理装置和方法 |
CN111651780A (zh) * | 2020-06-02 | 2020-09-11 | 亚太恒星经济技术发展有限公司 | 一种用于数据分类的存储方法 |
US10840912B2 (en) | 2014-06-11 | 2020-11-17 | Marvell Asia Pte, Ltd. | Hierarchical statistically multiplexed counters and a method thereof |
US10855573B2 (en) | 2014-09-23 | 2020-12-01 | Marvell Asia Pte, Ltd. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
CN112632490A (zh) * | 2015-02-12 | 2021-04-09 | 联合服务汽车协会 | 切换生物特征认证的方法、***和计算机存储介质 |
CN113011734A (zh) * | 2021-03-17 | 2021-06-22 | 上海数喆数据科技有限公司 | 一种基于capi和cati的调查数据质量控制方法 |
US11050859B2 (en) | 2014-06-19 | 2021-06-29 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
CN113487245A (zh) * | 2021-09-06 | 2021-10-08 | 苏州浪潮智能科技有限公司 | 一种云平台资源跨项目转让方法、***及计算机存储介质 |
CN113642664A (zh) * | 2021-08-24 | 2021-11-12 | 安徽大学 | 一种基于联邦学习的隐私保护图像分类方法 |
US11258886B2 (en) | 2014-06-19 | 2022-02-22 | Marvell Asia Pte, Ltd. | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
TWI756631B (zh) * | 2020-02-12 | 2022-03-01 | 瑞昱半導體股份有限公司 | 具有韌體驗證機制的電腦系統及其韌體驗證方法 |
US11297012B2 (en) | 2015-03-30 | 2022-04-05 | Marvell Asia Pte, Ltd. | Packet processing system, method and device having reduced static power consumption |
US11435925B2 (en) | 2013-12-27 | 2022-09-06 | Marvell Asia Pte, Ltd. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US11677664B2 (en) | 2013-12-30 | 2023-06-13 | Marvell Asia Pte, Ltd. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
CN116467754A (zh) * | 2023-06-20 | 2023-07-21 | 深圳奥联信息安全技术有限公司 | 一种密码安全存储***、方法、计算机设备及存储介质 |
US11824796B2 (en) | 2013-12-30 | 2023-11-21 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
Families Citing this family (175)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9576119B2 (en) | 2008-12-26 | 2017-02-21 | Facebook, Inc. | Preventing phishing attacks based on reputation of user locations |
AU2011289239B2 (en) | 2010-08-12 | 2016-02-25 | Security First Corp. | Systems and methods for secure remote storage of data |
JP2012186543A (ja) * | 2011-03-03 | 2012-09-27 | Ricoh Co Ltd | 画像読取装置および画像読取装置の制御プログラム |
CN102761579B (zh) * | 2011-04-29 | 2015-12-09 | 国际商业机器公司 | 利用存储域网络传输数据的方法和*** |
US10068084B2 (en) * | 2011-06-27 | 2018-09-04 | General Electric Company | Method and system of location-aware certificate based authentication |
JP5963135B2 (ja) * | 2011-08-23 | 2016-08-03 | パナソニックIpマネジメント株式会社 | 通信システム、通信システムにおいて利用される通信装置およびサーバ |
US8918120B2 (en) * | 2011-09-23 | 2014-12-23 | Tara Chand Singhal | Systems for faster access and download of digital content in mobile wireless devices using celluar network |
US9215225B2 (en) | 2013-03-29 | 2015-12-15 | Citrix Systems, Inc. | Mobile device locking with context |
US9143530B2 (en) | 2011-10-11 | 2015-09-22 | Citrix Systems, Inc. | Secure container for protecting enterprise data on a mobile device |
US9280377B2 (en) | 2013-03-29 | 2016-03-08 | Citrix Systems, Inc. | Application with multiple operation modes |
US20140040979A1 (en) | 2011-10-11 | 2014-02-06 | Citrix Systems, Inc. | Policy-Based Application Management |
US20140032733A1 (en) | 2011-10-11 | 2014-01-30 | Citrix Systems, Inc. | Policy-Based Application Management |
US9043480B2 (en) | 2011-10-11 | 2015-05-26 | Citrix Systems, Inc. | Policy-based application management |
US9304843B2 (en) * | 2011-11-01 | 2016-04-05 | Cleversafe, Inc. | Highly secure method for accessing a dispersed storage network |
US10176045B2 (en) | 2011-12-12 | 2019-01-08 | International Business Machines Corporation | Internet based shared memory in a distributed computing system |
US20130173903A1 (en) * | 2011-12-29 | 2013-07-04 | Eric T. Obligacion | Unified network architecture having storage devices with secure boot devices |
US8745371B2 (en) * | 2011-12-29 | 2014-06-03 | Unisys Corporation | Unified network architecture having storage devices with secure boot devices |
US9548943B2 (en) * | 2012-02-20 | 2017-01-17 | Tyco Fire & Security Gmbh | Dual communication-interface facility monitoring and management system and method |
US20130263233A1 (en) * | 2012-03-27 | 2013-10-03 | Francis Dinha | Data access and control |
US9015106B2 (en) * | 2012-04-30 | 2015-04-21 | Dell Products, Lp | Cloud based master data management system and method therefor |
US9106405B1 (en) * | 2012-06-25 | 2015-08-11 | Amazon Technologies, Inc. | Multi-user secret decay |
US9578499B2 (en) * | 2012-08-21 | 2017-02-21 | Facebook, Inc. | Authenticating user sessions based on information obtained from mobile devices |
WO2014036074A1 (en) * | 2012-08-28 | 2014-03-06 | Visa International Service Association | Protecting assets on a device |
US9383982B2 (en) * | 2012-09-12 | 2016-07-05 | Microsoft Technology Licensing, Llc | Data-parallel computation management |
US9106411B2 (en) * | 2012-09-30 | 2015-08-11 | Apple Inc. | Secure escrow service |
US9053340B2 (en) | 2012-10-12 | 2015-06-09 | Citrix Systems, Inc. | Enterprise application store for an orchestration framework for connected devices |
US9516022B2 (en) | 2012-10-14 | 2016-12-06 | Getgo, Inc. | Automated meeting room |
US8910239B2 (en) | 2012-10-15 | 2014-12-09 | Citrix Systems, Inc. | Providing virtualized private network tunnels |
US20140109176A1 (en) | 2012-10-15 | 2014-04-17 | Citrix Systems, Inc. | Configuring and providing profiles that manage execution of mobile applications |
WO2014062804A1 (en) | 2012-10-16 | 2014-04-24 | Citrix Systems, Inc. | Application wrapping for application management framework |
US9606774B2 (en) | 2012-10-16 | 2017-03-28 | Citrix Systems, Inc. | Wrapping an application with field-programmable business logic |
US9971585B2 (en) | 2012-10-16 | 2018-05-15 | Citrix Systems, Inc. | Wrapping unmanaged applications on a mobile device |
US20140108793A1 (en) | 2012-10-16 | 2014-04-17 | Citrix Systems, Inc. | Controlling mobile device access to secure data |
TW201416873A (zh) * | 2012-10-19 | 2014-05-01 | Apacer Technology Inc | 網路儲存系統的檔案分享方法 |
US10146850B2 (en) * | 2012-10-30 | 2018-12-04 | FHOOSH, Inc. | Systems and methods for collecting, classifying, organizing and populating information on electronic forms |
WO2014087381A1 (en) * | 2012-12-07 | 2014-06-12 | Visa International Service Association | A token generating component |
US9866560B2 (en) | 2012-12-20 | 2018-01-09 | Empire Technology Development Llc | Secure data access |
CA2901734C (en) * | 2013-02-19 | 2020-04-21 | Sony Computer Entertainment Inc. | Information processing system |
US9032505B1 (en) | 2013-03-15 | 2015-05-12 | Wells Fargo Bank, N.A. | Creating secure connections between distributed computing devices |
CN104065680B (zh) * | 2013-03-21 | 2017-03-08 | 华为终端有限公司 | 信息处理方法、检索方法、装置、用户终端及服务器 |
US20150334185A1 (en) * | 2013-03-27 | 2015-11-19 | Hitachi Consumer Electronics Co., Ltd. | Terminal device, program, data transmission/reception system, and data transmission/reception method |
US10284627B2 (en) | 2013-03-29 | 2019-05-07 | Citrix Systems, Inc. | Data management for an application with multiple operation modes |
US9355223B2 (en) | 2013-03-29 | 2016-05-31 | Citrix Systems, Inc. | Providing a managed browser |
US9374344B1 (en) | 2013-03-29 | 2016-06-21 | Secturion Systems, Inc. | Secure end-to-end communication system |
US8910264B2 (en) * | 2013-03-29 | 2014-12-09 | Citrix Systems, Inc. | Providing mobile device management functionalities |
US8850049B1 (en) | 2013-03-29 | 2014-09-30 | Citrix Systems, Inc. | Providing mobile device management functionalities for a managed browser |
US9985850B2 (en) | 2013-03-29 | 2018-05-29 | Citrix Systems, Inc. | Providing mobile device management functionalities |
US9317718B1 (en) | 2013-03-29 | 2016-04-19 | Secturion Systems, Inc. | Security device with programmable systolic-matrix cryptographic module and programmable input/output interface |
US9355279B1 (en) | 2013-03-29 | 2016-05-31 | Secturion Systems, Inc. | Multi-tenancy architecture |
US9369449B2 (en) | 2013-03-29 | 2016-06-14 | Citrix Systems, Inc. | Providing an enterprise application store |
US9524399B1 (en) * | 2013-04-01 | 2016-12-20 | Secturion Systems, Inc. | Multi-level independent security architecture |
EP2819013B1 (en) * | 2013-06-24 | 2019-11-27 | Alcatel Lucent | Automated adaption of a Codec |
WO2015065422A1 (en) * | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Wireless software-defined networking |
US10187358B2 (en) * | 2013-12-03 | 2019-01-22 | Amazon Technologies, Inc. | Data transfer optimizations |
EP3087498A4 (en) * | 2013-12-27 | 2017-08-09 | Intel Corporation | Electronic device having two processors to process data |
US9838388B2 (en) * | 2014-08-26 | 2017-12-05 | Veridium Ip Limited | System and method for biometric protocol standards |
US9608876B2 (en) | 2014-01-06 | 2017-03-28 | Microsoft Technology Licensing, Llc | Dynamically adjusting brand and platform interface elements |
US9483811B2 (en) | 2014-01-06 | 2016-11-01 | Microsoft Technology Licensing, Llc | Division of processing between systems based on external factors |
KR101521808B1 (ko) * | 2014-02-20 | 2015-05-20 | 한국전자통신연구원 | 클라우드 환경에서의 상황인지형 보안 통제 장치, 방법, 및 시스템 |
US9367253B2 (en) | 2014-03-13 | 2016-06-14 | Vmware, Inc. | Catastrophic data loss avoidance |
US9954828B1 (en) * | 2014-03-24 | 2018-04-24 | Trend Micro Incorporated | Protection of data stored in the cloud |
US10127244B2 (en) * | 2014-06-04 | 2018-11-13 | Harris Corporation | Systems and methods for dynamic data storage |
MY170681A (en) * | 2014-06-19 | 2019-08-26 | Mimos Berhad | System and method for distributed secure data storage in torus network topology |
US9519793B2 (en) | 2014-07-23 | 2016-12-13 | Bank Of America Corporation | Secure document repository |
US9779255B2 (en) * | 2014-07-23 | 2017-10-03 | Bank Of America Corporation | Split storage and communication of documents |
US9397833B2 (en) * | 2014-08-27 | 2016-07-19 | International Business Machines Corporation | Receipt, data reduction, and storage of encrypted data |
US10579823B2 (en) | 2014-09-23 | 2020-03-03 | Ubiq Security, Inc. | Systems and methods for secure high speed data generation and access |
SG11201808317XA (en) | 2014-09-23 | 2018-10-30 | Fhoosh Inc | Secure high speed data storage, access, recovery, and transmission |
US9444886B2 (en) | 2014-09-25 | 2016-09-13 | At&T Intellectual Property I, L.P. | Data analytics for adaptive networks |
US10554486B2 (en) * | 2014-09-26 | 2020-02-04 | Microsoft Technology Licensing, Llc | Multi-enrollments of a computing device into configuration sources |
US9767306B2 (en) | 2014-11-03 | 2017-09-19 | Secured2 Corporation | Secured data storage on a hard drive |
US10165050B2 (en) * | 2014-12-15 | 2018-12-25 | FHOOSH, Inc. | Systems and methods for diffracted data retrieval |
US9292699B1 (en) | 2014-12-30 | 2016-03-22 | Airwatch Llc | Encrypted file storage |
US10110572B2 (en) * | 2015-01-21 | 2018-10-23 | Oracle International Corporation | Tape drive encryption in the data path |
US9906510B2 (en) * | 2015-02-10 | 2018-02-27 | Airwatch Llc | Virtual content repository |
US20160292396A1 (en) * | 2015-03-30 | 2016-10-06 | Iperial, Inc. | System and method for authenticating digital content |
US10270475B1 (en) | 2015-06-16 | 2019-04-23 | Amazon Technologies, Inc. | Layered redundancy coding for encoded parity data |
US9998150B1 (en) | 2015-06-16 | 2018-06-12 | Amazon Technologies, Inc. | Layered data redundancy coding techniques for layer-local data recovery |
US10270476B1 (en) | 2015-06-16 | 2019-04-23 | Amazon Technologies, Inc. | Failure mode-sensitive layered redundancy coding techniques |
US10298259B1 (en) | 2015-06-16 | 2019-05-21 | Amazon Technologies, Inc. | Multi-layered data redundancy coding techniques |
US10977128B1 (en) | 2015-06-16 | 2021-04-13 | Amazon Technologies, Inc. | Adaptive data loss mitigation for redundancy coding systems |
US10621148B1 (en) * | 2015-06-30 | 2020-04-14 | EMC IP Holding Company LLC | Maintaining multiple object stores in a distributed file system |
US10108819B1 (en) | 2015-07-01 | 2018-10-23 | Amazon Technologies, Inc. | Cross-datacenter extension of grid encoded data storage systems |
US10394762B1 (en) | 2015-07-01 | 2019-08-27 | Amazon Technologies, Inc. | Determining data redundancy in grid encoded data storage systems |
US9959167B1 (en) | 2015-07-01 | 2018-05-01 | Amazon Technologies, Inc. | Rebundling grid encoded data storage systems |
US10089176B1 (en) | 2015-07-01 | 2018-10-02 | Amazon Technologies, Inc. | Incremental updates of grid encoded data storage systems |
US9904589B1 (en) | 2015-07-01 | 2018-02-27 | Amazon Technologies, Inc. | Incremental media size extension for grid encoded data storage systems |
US10162704B1 (en) | 2015-07-01 | 2018-12-25 | Amazon Technologies, Inc. | Grid encoded data storage systems for efficient data repair |
US9998539B1 (en) | 2015-07-01 | 2018-06-12 | Amazon Technologies, Inc. | Non-parity in grid encoded data storage systems |
US10198311B1 (en) | 2015-07-01 | 2019-02-05 | Amazon Technologies, Inc. | Cross-datacenter validation of grid encoded data storage systems |
CN105025019B (zh) * | 2015-07-07 | 2018-09-28 | 深圳奥联信息安全技术有限公司 | 一种数据安全分享方法 |
CN105100259B (zh) * | 2015-08-18 | 2018-02-16 | 北京京东尚科信息技术有限公司 | 一种分布式定时任务执行方法和*** |
US11329980B2 (en) * | 2015-08-21 | 2022-05-10 | Veridium Ip Limited | System and method for biometric protocol standards |
US11283774B2 (en) | 2015-09-17 | 2022-03-22 | Secturion Systems, Inc. | Cloud storage using encryption gateway with certificate authority identification |
US9928141B1 (en) * | 2015-09-21 | 2018-03-27 | Amazon Technologies, Inc. | Exploiting variable media size in grid encoded data storage systems |
KR101981203B1 (ko) * | 2015-09-23 | 2019-05-22 | 주식회사 엔터플 | 사용자 계정 동기화를 이용한 디지털 상품 제공 방법 및 장치 |
US11386060B1 (en) * | 2015-09-23 | 2022-07-12 | Amazon Technologies, Inc. | Techniques for verifiably processing data in distributed computing systems |
US10616196B1 (en) * | 2015-09-24 | 2020-04-07 | EMC IP Holding Company LLC | User authentication with multiple authentication sources and non-binary authentication decisions |
US9940474B1 (en) | 2015-09-29 | 2018-04-10 | Amazon Technologies, Inc. | Techniques and systems for data segregation in data storage systems |
US10708236B2 (en) | 2015-10-26 | 2020-07-07 | Secturion Systems, Inc. | Multi-independent level secure (MILS) storage encryption |
US10019251B1 (en) * | 2015-10-27 | 2018-07-10 | Bank Of America Corporation | Secure packaging software and deployment system |
JP6523143B2 (ja) * | 2015-11-13 | 2019-05-29 | 株式会社東芝 | データ配布装置、通信システム、移動体およびデータ配布方法 |
US10394789B1 (en) | 2015-12-07 | 2019-08-27 | Amazon Technologies, Inc. | Techniques and systems for scalable request handling in data processing systems |
US9785495B1 (en) | 2015-12-14 | 2017-10-10 | Amazon Technologies, Inc. | Techniques and systems for detecting anomalous operational data |
US10642813B1 (en) | 2015-12-14 | 2020-05-05 | Amazon Technologies, Inc. | Techniques and systems for storage and processing of operational data |
US10248793B1 (en) | 2015-12-16 | 2019-04-02 | Amazon Technologies, Inc. | Techniques and systems for durable encryption and deletion in data storage systems |
US10102065B1 (en) | 2015-12-17 | 2018-10-16 | Amazon Technologies, Inc. | Localized failure mode decorrelation in redundancy encoded data storage systems |
US10180912B1 (en) | 2015-12-17 | 2019-01-15 | Amazon Technologies, Inc. | Techniques and systems for data segregation in redundancy coded data storage systems |
US10127105B1 (en) | 2015-12-17 | 2018-11-13 | Amazon Technologies, Inc. | Techniques for extending grids in data storage systems |
US10235402B1 (en) | 2015-12-17 | 2019-03-19 | Amazon Technologies, Inc. | Techniques for combining grid-encoded data storage systems |
US10324790B1 (en) | 2015-12-17 | 2019-06-18 | Amazon Technologies, Inc. | Flexible data storage device mapping for data storage systems |
US20170177895A1 (en) * | 2015-12-21 | 2017-06-22 | Datanomix, Inc. | In-situ cloud data management solution |
ES2634024B1 (es) * | 2016-03-23 | 2018-07-10 | Juan José BERMÚDEZ PÉREZ | Método seguro para compartir datos y controlar el acceso a los mismos en la nube |
US10592336B1 (en) | 2016-03-24 | 2020-03-17 | Amazon Technologies, Inc. | Layered indexing for asynchronous retrieval of redundancy coded data |
US10366062B1 (en) | 2016-03-28 | 2019-07-30 | Amazon Technologies, Inc. | Cycled clustering for redundancy coded data storage systems |
US10061668B1 (en) | 2016-03-28 | 2018-08-28 | Amazon Technologies, Inc. | Local storage clustering for redundancy coded data storage system |
US10678664B1 (en) | 2016-03-28 | 2020-06-09 | Amazon Technologies, Inc. | Hybridized storage operation for redundancy coded data storage systems |
US10367879B2 (en) * | 2016-06-10 | 2019-07-30 | Apple Inc. | Download prioritization |
US10157021B2 (en) * | 2016-06-29 | 2018-12-18 | International Business Machines Corporation | Processing incomplete data access transactions |
US10367924B2 (en) * | 2016-08-24 | 2019-07-30 | Interwise Ltd. | Position-based communication routing |
US11137980B1 (en) | 2016-09-27 | 2021-10-05 | Amazon Technologies, Inc. | Monotonic time-based data storage |
US10657097B1 (en) | 2016-09-28 | 2020-05-19 | Amazon Technologies, Inc. | Data payload aggregation for data storage systems |
US10437790B1 (en) | 2016-09-28 | 2019-10-08 | Amazon Technologies, Inc. | Contextual optimization for data storage systems |
US11281624B1 (en) | 2016-09-28 | 2022-03-22 | Amazon Technologies, Inc. | Client-based batching of data payload |
US10496327B1 (en) | 2016-09-28 | 2019-12-03 | Amazon Technologies, Inc. | Command parallelization for data storage systems |
US10810157B1 (en) | 2016-09-28 | 2020-10-20 | Amazon Technologies, Inc. | Command aggregation for data storage operations |
US11204895B1 (en) | 2016-09-28 | 2021-12-21 | Amazon Technologies, Inc. | Data payload clustering for data storage systems |
US10614239B2 (en) | 2016-09-30 | 2020-04-07 | Amazon Technologies, Inc. | Immutable cryptographically secured ledger-backed databases |
CN109791591B (zh) * | 2016-10-06 | 2023-07-07 | 万事达卡国际公司 | 经由区块链进行身份和凭证保护及核实的方法和*** |
US10296764B1 (en) | 2016-11-18 | 2019-05-21 | Amazon Technologies, Inc. | Verifiable cryptographically secured ledgers for human resource systems |
US11269888B1 (en) | 2016-11-28 | 2022-03-08 | Amazon Technologies, Inc. | Archival data storage for structured data |
US10911238B2 (en) * | 2016-12-14 | 2021-02-02 | Microsoft Technology Licensing, Llc | Offline protection of secrets |
US10291409B2 (en) * | 2017-02-21 | 2019-05-14 | Adobe Inc. | Storing, migrating, and controlling access to electronic documents during electronic document signing processes |
DE102017109424A1 (de) * | 2017-05-03 | 2018-11-08 | Uniscon Universal Identity Control Gmbh | Verfahren zum gesicherten Zugriff auf Daten |
CN108964885B (zh) * | 2017-05-27 | 2021-03-05 | 华为技术有限公司 | 鉴权方法、装置、***和存储介质 |
US10509921B2 (en) | 2017-05-31 | 2019-12-17 | Intuit Inc. | System for managing transactional data |
CN109309694A (zh) * | 2017-07-27 | 2019-02-05 | 杭州海康威视数字技术股份有限公司 | 一种数据存储的方法和*** |
CA3071965C (en) * | 2017-08-10 | 2024-01-16 | Shardsecure, Inc. | Method for securing data utilizing microshard fragmentation |
US10902144B2 (en) * | 2017-08-25 | 2021-01-26 | Electronics And Telecommunications Research Institute | Method and apparatus for securing data |
US10701161B2 (en) * | 2017-08-28 | 2020-06-30 | Citrix Systems, Inc. | Wrapping continuation tokens to support paging for multiple servers across different geolocations |
GB2567146B (en) * | 2017-09-28 | 2022-04-13 | Red Flint Llp | Method and system for secure storage of digital data |
US10623181B2 (en) * | 2018-01-02 | 2020-04-14 | Bank Of America Corporation | Security system utilizing vaultless tokenization and encryption |
US11139959B2 (en) | 2018-02-01 | 2021-10-05 | The University Of Chicago | Stream ciphers for digital storage encryption |
US11349656B2 (en) | 2018-03-08 | 2022-05-31 | Ubiq Security, Inc. | Systems and methods for secure storage and transmission of a data stream |
US11044091B1 (en) * | 2018-03-15 | 2021-06-22 | Secure Channels Inc. | System and method for securely transmitting non-pki encrypted messages |
CN108600308B (zh) * | 2018-03-20 | 2021-08-06 | 新华三技术有限公司 | 数据上传方法、装置、存储介质和服务器 |
US11416626B2 (en) * | 2018-05-17 | 2022-08-16 | Carrier Corporation | Query-aware privacy for access control data analytics |
JP7178021B2 (ja) * | 2018-07-17 | 2022-11-25 | 株式会社OPExPARK | 情報統合装置 |
US10862485B1 (en) * | 2018-08-29 | 2020-12-08 | Verisilicon Microelectronics (Shanghai) Co., Ltd. | Lookup table index for a processor |
US10756887B2 (en) * | 2018-10-12 | 2020-08-25 | EMC IP Holding Company LLC | Method and system for securely replicating encrypted deduplicated storages |
US20200118122A1 (en) * | 2018-10-15 | 2020-04-16 | Vatbox, Ltd. | Techniques for completing missing and obscured transaction data items |
US11113409B2 (en) | 2018-10-26 | 2021-09-07 | Pure Storage, Inc. | Efficient rekey in a transparent decrypting storage array |
WO2020102696A1 (en) | 2018-11-15 | 2020-05-22 | Airside Mobile, Inc. | Methods and apparatus for encrypting, storing, and/or sharing sensitive data |
US10949388B2 (en) * | 2018-11-16 | 2021-03-16 | Advanced Messaging Technologies, Inc. | Systems and methods for distributed data storage and delivery using blockchain |
US20200201827A1 (en) * | 2018-12-20 | 2020-06-25 | Peter Chacko | Universal file virtualization with disaggregated control plane, security plane and decentralized data plane |
US10733374B1 (en) * | 2019-02-14 | 2020-08-04 | Gideon Samid | Live documentation (LiDo) |
KR20200100481A (ko) * | 2019-02-18 | 2020-08-26 | 삼성전자주식회사 | 생체 정보를 인증하기 위한 전자 장치 및 그의 동작 방법 |
CN110110538A (zh) * | 2019-05-08 | 2019-08-09 | 郑州信大捷安信息技术股份有限公司 | 硬件加解密***及方法 |
KR20220140639A (ko) * | 2019-05-22 | 2022-10-18 | 묘타, 인크. | 보안, 복원, 및 제어가 강화된 분산된 데이터 스토리지를 위한 방법 및 시스템 |
US11403024B2 (en) * | 2019-08-28 | 2022-08-02 | Cohesity, Inc. | Efficient restoration of content |
US11804955B1 (en) | 2019-09-13 | 2023-10-31 | Chol, Inc. | Method and system for modulated waveform encryption |
CN111065097B (zh) * | 2019-10-11 | 2021-08-10 | 上海交通大学 | 移动互联网中基于共享密钥的通道保护方法及*** |
US11194838B2 (en) | 2019-10-23 | 2021-12-07 | International Business Machines Corporation | Generating a data partitioning strategy for secure and efficient query processing |
US11562084B2 (en) * | 2019-12-19 | 2023-01-24 | Augustine Fou | System and method for secure, trustful internet interactions |
CN111381982B (zh) * | 2020-03-04 | 2023-05-09 | 上海航天控制技术研究所 | 一种适用于火星探测的三计算机数据交互与表决方法 |
EP3923170A1 (fr) | 2020-06-10 | 2021-12-15 | Bull SAS | Système de fichiers distribués et procédé d'accès à un fichier dans un tel système |
US11606193B2 (en) * | 2020-09-14 | 2023-03-14 | Oracle International Corporation | Distributed session resumption |
US11343085B2 (en) * | 2020-09-19 | 2022-05-24 | International Business Machines Corporation | Threshold encryption for broadcast content |
US11799643B2 (en) * | 2021-01-19 | 2023-10-24 | Bank Of America Corporation | Collaborative architecture for secure data sharing |
US20220294610A1 (en) * | 2021-03-10 | 2022-09-15 | Epifi Technologies Private Limited | Methods, systems and computer program products for secure encryption of data for transmission via an untrusted intermediary |
US20220329664A1 (en) * | 2021-04-09 | 2022-10-13 | Apple Inc. | Secure data caching for edge networks |
US11765242B2 (en) * | 2021-11-05 | 2023-09-19 | Honda Motor Co., Ltd. | File exchange system, communication support device, file exchange support device, file exchange method, and computer-readable non-transitory storage medium with program stored therein |
US20230318837A1 (en) * | 2022-03-29 | 2023-10-05 | OzoneAI Inc. | Zero-Knowledge Proofs for Providing Browsing Data |
US20230388280A1 (en) * | 2022-05-25 | 2023-11-30 | CybXSecurity LLC | System, Method, and Computer Program Product for Generating Secure Messages for Messaging |
CN116319104B (zh) * | 2023-05-22 | 2023-08-04 | 云上(江西)安全技术有限公司 | 一种基于属性重加密的数据安全运营方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6415373B1 (en) * | 1997-12-24 | 2002-07-02 | Avid Technology, Inc. | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
US20100299313A1 (en) * | 2009-05-19 | 2010-11-25 | Security First Corp. | Systems and methods for securing data in the cloud |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7391865B2 (en) | 1999-09-20 | 2008-06-24 | Security First Corporation | Secure data parser method and system |
US7650376B1 (en) * | 2000-03-27 | 2010-01-19 | Blumenau Trevor I | Content distribution system for distributing content over a network, with particular applicability to distributing high-bandwidth content |
JP2002091452A (ja) * | 2000-09-11 | 2002-03-27 | Nec Corp | データ配信システム及びその配信方法 |
US7418620B1 (en) * | 2001-02-16 | 2008-08-26 | Swsoft Holdings, Ltd. | Fault tolerant distributed storage method and controller using (N,K) algorithms |
US20080126357A1 (en) * | 2006-05-04 | 2008-05-29 | Wambo, Inc. | Distributed file storage and transmission system |
US8140676B2 (en) * | 2007-04-10 | 2012-03-20 | Apertio Limited | Data access in distributed server systems |
US8332375B2 (en) * | 2007-08-29 | 2012-12-11 | Nirvanix, Inc. | Method and system for moving requested files from one storage location to another |
US8560639B2 (en) * | 2009-04-24 | 2013-10-15 | Microsoft Corporation | Dynamic placement of replica data |
US20100332401A1 (en) * | 2009-06-30 | 2010-12-30 | Anand Prahlad | Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites |
US20110035497A1 (en) * | 2009-08-05 | 2011-02-10 | Dynamic Network Services, Inc. | System and method for providing global server load balancing |
US8370307B2 (en) * | 2009-09-01 | 2013-02-05 | Empire Technology Development Llc | Cloud data backup storage manager |
US20110258257A1 (en) * | 2010-04-20 | 2011-10-20 | Cisco Technology, Inc. | Proximity aggregated network topology algorithm (panta) |
US8769269B2 (en) * | 2010-08-12 | 2014-07-01 | International Business Machines Corporation | Cloud data management |
US20120047339A1 (en) * | 2010-08-20 | 2012-02-23 | Dan Decasper | Redundant array of independent clouds |
US8347184B2 (en) * | 2010-11-29 | 2013-01-01 | Beijing Z & W Technology Consulting Co. Ltd. | Cloud storage data access method, apparatus and system |
-
2012
- 2012-06-01 US US13/486,659 patent/US20120331088A1/en not_active Abandoned
- 2012-06-01 CA CA2837716A patent/CA2837716A1/en not_active Abandoned
- 2012-06-01 CN CN201280034840.9A patent/CN103959302A/zh active Pending
- 2012-06-01 AU AU2012261972A patent/AU2012261972A1/en not_active Abandoned
- 2012-06-01 EP EP12726696.3A patent/EP2715601A1/en not_active Withdrawn
- 2012-06-01 WO PCT/US2012/040480 patent/WO2012167094A1/en unknown
-
2015
- 2015-01-29 HK HK15101027.8A patent/HK1201093A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6415373B1 (en) * | 1997-12-24 | 2002-07-02 | Avid Technology, Inc. | Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner |
US20100299313A1 (en) * | 2009-05-19 | 2010-11-25 | Security First Corp. | Systems and methods for securing data in the cloud |
Cited By (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11435925B2 (en) | 2013-12-27 | 2022-09-06 | Marvell Asia Pte, Ltd. | Method and system for reconfigurable parallel lookups using multiple shared memories |
US11824796B2 (en) | 2013-12-30 | 2023-11-21 | Marvell Asia Pte, Ltd. | Protocol independent programmable switch (PIPS) for software defined data center networks |
US11677664B2 (en) | 2013-12-30 | 2023-06-13 | Marvell Asia Pte, Ltd. | Apparatus and method of generating lookups and making decisions for packet modifying and forwarding in a software-defined network engine |
US10840912B2 (en) | 2014-06-11 | 2020-11-17 | Marvell Asia Pte, Ltd. | Hierarchical statistically multiplexed counters and a method thereof |
US11843378B2 (en) | 2014-06-11 | 2023-12-12 | Marvel Asia PTE., LTD. | Hierarchical statistically multiplexed counters and a method thereof |
US11050859B2 (en) | 2014-06-19 | 2021-06-29 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
US11258886B2 (en) | 2014-06-19 | 2022-02-22 | Marvell Asia Pte, Ltd. | Method of handling large protocol layers for configurable extraction of layer information and an apparatus thereof |
US11799989B2 (en) | 2014-06-19 | 2023-10-24 | Marvell Asia Pte, Ltd. | Method of using bit vectors to allow expansion and collapse of header layers within packets for enabling flexible modifications and an apparatus thereof |
CN107005746A (zh) * | 2014-09-05 | 2017-08-01 | 微软技术许可有限责任公司 | 用于***设立的数据流头部的部分加密 |
CN107005746B (zh) * | 2014-09-05 | 2020-05-08 | 微软技术许可有限责任公司 | 用于加密的方法、***和计算机可读存储介质 |
US10855573B2 (en) | 2014-09-23 | 2020-12-01 | Marvell Asia Pte, Ltd. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
US11765069B2 (en) | 2014-09-23 | 2023-09-19 | Marvell Asia Pte, Ltd. | Hierarchical hardware linked list approach for multicast replication engine in a network ASIC |
CN104572891A (zh) * | 2014-12-24 | 2015-04-29 | 北京大学深圳研究生院 | 一种用于网络信息分离存储的文件更新方法 |
CN104618482A (zh) * | 2015-02-02 | 2015-05-13 | 浙江宇视科技有限公司 | 访问云数据的方法、服务器、传统存储设备、架构 |
CN112632490A (zh) * | 2015-02-12 | 2021-04-09 | 联合服务汽车协会 | 切换生物特征认证的方法、***和计算机存储介质 |
CN104636088A (zh) * | 2015-02-17 | 2015-05-20 | 华为技术有限公司 | 一种将数据写入数据服务器的方法及存储*** |
CN107529352A (zh) * | 2015-03-13 | 2017-12-29 | 凯为公司 | 用于软件定义的数据中心网络的协议独立的可编程交换机(pips) |
CN107529352B (zh) * | 2015-03-13 | 2020-11-20 | 马维尔亚洲私人有限公司 | 用于软件定义的数据中心网络的协议独立的可编程交换机(pips) |
US11297012B2 (en) | 2015-03-30 | 2022-04-05 | Marvell Asia Pte, Ltd. | Packet processing system, method and device having reduced static power consumption |
US11652760B2 (en) | 2015-03-30 | 2023-05-16 | Marvell Asia Pte., Ltd. | Packet processing system, method and device having reduced static power consumption |
CN104850797A (zh) * | 2015-04-30 | 2015-08-19 | 北京奇虎科技有限公司 | 设备安全管理方法及装置 |
CN108292250A (zh) * | 2015-12-21 | 2018-07-17 | 英特尔公司 | 用于促进分布式数据备份的方法和装置 |
CN108292250B (zh) * | 2015-12-21 | 2022-06-28 | 英特尔公司 | 用于促进分布式数据备份的方法和装置 |
US11740979B2 (en) | 2015-12-21 | 2023-08-29 | Intel Corporation | Methods and apparatus to facilitate distributed data backup |
CN106997521A (zh) * | 2016-01-22 | 2017-08-01 | 平安科技(深圳)有限公司 | 基于api的投保信息处理方法和装置 |
CN109076054A (zh) * | 2016-03-28 | 2018-12-21 | 赛门铁克公司 | 用于管理单点登录应用程序的加密密钥的***和方法 |
CN109076054B (zh) * | 2016-03-28 | 2021-06-11 | 诺顿卫复客公司 | 用于管理单点登录应用程序的加密密钥的***和方法 |
CN109791594A (zh) * | 2016-08-12 | 2019-05-21 | Altr解决方案公司 | 为了在多个不可变数据结构上持续存储而对数据进行分段 |
CN107992753A (zh) * | 2016-10-26 | 2018-05-04 | 大众汽车有限公司 | 用于更新车辆的控制设备的软件的方法 |
CN107992753B (zh) * | 2016-10-26 | 2021-10-15 | 大众汽车有限公司 | 用于更新车辆的控制设备的软件的方法 |
CN106529317A (zh) * | 2016-11-22 | 2017-03-22 | 广州大学 | 基于Shadow DOM的Web应用加解密方法 |
CN106529317B (zh) * | 2016-11-22 | 2019-11-12 | 广州大学 | 基于Shadow DOM的Web应用加解密方法 |
CN108810002A (zh) * | 2018-06-21 | 2018-11-13 | 北京智芯微电子科技有限公司 | 安全芯片的多ca应用***及方法 |
CN110035089A (zh) * | 2019-04-28 | 2019-07-19 | 兰州理工大学 | 一种分布式***的网络安全验证方法和*** |
TWI756631B (zh) * | 2020-02-12 | 2022-03-01 | 瑞昱半導體股份有限公司 | 具有韌體驗證機制的電腦系統及其韌體驗證方法 |
US11514167B2 (en) | 2020-02-12 | 2022-11-29 | Realtek Semiconductor Corporation | Computer system having firmware verification mechanism and firmware verification method of the same |
CN111625822A (zh) * | 2020-04-07 | 2020-09-04 | 重庆云君教育科技有限公司 | 一种云资源存储管理装置和方法 |
CN111651780A (zh) * | 2020-06-02 | 2020-09-11 | 亚太恒星经济技术发展有限公司 | 一种用于数据分类的存储方法 |
CN113011734A (zh) * | 2021-03-17 | 2021-06-22 | 上海数喆数据科技有限公司 | 一种基于capi和cati的调查数据质量控制方法 |
CN113011734B (zh) * | 2021-03-17 | 2023-07-07 | 上海数喆数据科技有限公司 | 一种基于capi和cati的调查数据质量控制方法 |
CN113642664A (zh) * | 2021-08-24 | 2021-11-12 | 安徽大学 | 一种基于联邦学习的隐私保护图像分类方法 |
CN113642664B (zh) * | 2021-08-24 | 2024-02-20 | 安徽大学 | 一种基于联邦学习的隐私保护图像分类方法 |
CN113487245A (zh) * | 2021-09-06 | 2021-10-08 | 苏州浪潮智能科技有限公司 | 一种云平台资源跨项目转让方法、***及计算机存储介质 |
CN113487245B (zh) * | 2021-09-06 | 2021-12-07 | 苏州浪潮智能科技有限公司 | 一种云平台资源跨项目转让方法、***及计算机存储介质 |
CN116467754A (zh) * | 2023-06-20 | 2023-07-21 | 深圳奥联信息安全技术有限公司 | 一种密码安全存储***、方法、计算机设备及存储介质 |
CN116467754B (zh) * | 2023-06-20 | 2023-10-10 | 深圳奥联信息安全技术有限公司 | 一种密码安全存储***、方法、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP2715601A1 (en) | 2014-04-09 |
HK1201093A1 (zh) | 2015-08-21 |
WO2012167094A1 (en) | 2012-12-06 |
US20120331088A1 (en) | 2012-12-27 |
CA2837716A1 (en) | 2012-12-06 |
AU2012261972A1 (en) | 2014-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103959302A (zh) | 用于安全分布式存储的***与方法 | |
CN103636160B (zh) | 安全文件共享方法与*** | |
CN101939946B (zh) | 使用多因素或密钥式分散对数据进行保护的***和方法 | |
CN101855860B (zh) | 用于管理加密密钥的***和方法 | |
CN1833398B (zh) | 安全数据解析器方法和*** | |
CN103270516B (zh) | 用于安全保护虚拟机计算环境的***和方法 | |
CN103039057B (zh) | 对移动中数据进行保护的***和方法 | |
CN101375284B (zh) | 安全数据分析方法和*** | |
CN103229450B (zh) | 用于安全多租户数据存储的***和方法 | |
CN101401341B (zh) | 安全数据解析方法和*** | |
CN103563325B (zh) | 用于保护数据的***和方法 | |
CN103229165A (zh) | 用于数据的安全远程存储的***和方法 | |
CN104079573A (zh) | 用于安全保护云中的数据的***和方法 | |
CN103238305A (zh) | 用于安全数据储存的加速器*** | |
CN103609059A (zh) | 用于安全数据共享的***和方法 | |
CN101689230A (zh) | 改进的磁带备份方法 | |
CN104917780A (zh) | 对移动中数据进行保护的***和方法 | |
CN103190129B (zh) | 对移动中数据进行保护的***和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1201093 Country of ref document: HK |
|
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140730 |
|
RJ01 | Rejection of invention patent application after publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1201093 Country of ref document: HK |