技术领域
本发明一般涉及用于保护工作组内的移动中数据(即,从一个位置转移到另一个位置的数据)的改进系统和方法。可以与在共同拥有的美国专利No.7391865和在2003年6月11日提交的共同拥有的美国专利申请No.10/458928、2005年10月25日提交的美国专利申请No.11/258839、2006年11月20日提交的美国专利申请No.11/602667、2007年11月7日提交的美国专利申请No.11/983355、2007年12月5日提交的美国专利申请No.11/999575、2008年9月12提交的美国专利申请No.12/209703和2009年1月7提交的美国专利申请No.12/349897中描述的其它系统和方法结合地使用本文所述的系统和方法,上述所有的美国专利和专利申请的全部内容通过引用并入本文。
背景技术:
在当今社会中,个人和企业通过计算机系统进行越来越多的活动。这些计算机系统包括专有和非专有的计算机网络,常常存储、存档和发送所有类型的敏感信息。因此,日益需要确保通过这些系统进行存储和发送的数据不会被读取或以其它方式受到危害。
一种保护计算机系统的普通方案是提供登录和口令功能。然而,由于大部分的服务台呼叫与口令问题有关,所以口令管理被证明是成本极高的。此外,由于口令通常存储在例如通过暴力攻击而易被不当访问的文件中,所以口令提供极小的安全性。
另一种保护计算机系统的方案是提供密码基础结构。密码术通常是指通过将数据变换或加密成不可读格式对数据进行保护。只有拥有加密密钥的那些人才能将数据解密成可用格式。密码术可用于识别用户,例如允许访问特权的认证、例如建立数字证书和签名的授权等等。一种流行的密码术系统是使用两个密钥的公钥系统,这两个密钥是任何人知道的公钥和只有它的个人或企业拥有者知道的私钥。通常,用一个密钥加密的数据被用另一个密钥进行解密,并且从任一个密钥无法重建另一个密钥。
不幸的是,对于安全性来讲,即使是上述的典型公钥密码系统也高度依赖于用户。例如,密码系统例如通过用户的浏览器向用户发布私钥。没有经验的用户然后通常将私钥存储在硬盘上,其它人通过开放计算机系统(例如,互联网)可以访问该硬盘。另一方面,用户可能为包含他们的私钥的文件选择差的名称(例如,“密钥”)。上述和其它行为的结果是使一个密钥或多个密钥易受危害。
用于保护移动中数据的传统方案也不能够提供健壮和安全的工作组支持。例如,工作组的成员可能希望经由一个或多个安全通道与其它工作组成员(例如以私有和认证方式)安全地进行通信。由于共享的工作组密钥的管理和分布的不安全和低效,所以基于预共享的工作组加密密钥、公钥广播加密等的典型的安全工作组通信协议常常变得不稳定和不安全。此外,这些安全工作组通信协议通常只包括有限的工作组客户机撤销支持。例如,在成员的身份或共享的工作组密钥受到危害后或者在工作组成员离开工作组后,通常不能够高效地撤销任何一个工作组成员的通信权。另外,对于传统方案,在已撤销任何一个工作组成员的通信权(或者该工作组成员离开工作组)以后,通常无法按需要、定期地或者自动地迅速和高效更新工作组安全机制。
技术实现要素:
基于上述内容,需要提供一种与移动中数据方法一起使用的更加健壮和安全的工作组安全方案。
在一些实施例中,提供工作组管理模块以管理工作组加密密钥。该模块可以与第三方用户认证、用户登录、或者诸如微软的Active Directory(AD)目录服务的目录访问服务进行集成。目录服务可以加强用户(以及用户组)的安全策略,以及管理并验证工作组成员资格和跟踪工作组和用户的活动。
工作组管理模块可以与在以上提及的美国专利和专利申请中描述的任何安全数据解析器进行集成,以保护属于同一工作组的任何两个或更多端点(例如,客户机或服务)之间的移动中数据。在一些实施例中,通过验证共享的秘密来认证用户。例如,摘要认证可用于将用户的ASCII口令变换成密码密钥。客户机装置然后可以请求一使用基于口令的密钥进行加密的质疑值。所得密文然后可以传送至认证服务器。响应于接收到密文,认证服务器可以(使用存储的用户的基于口令的密钥的副本)对质疑值执行相同的加密,并且验证接收的密文与服务器的加密的结果匹配。如果存在匹配,则该客户机可以被认证。否则,认证请求会被拒绝。
在用户被认证以后,可以通过认证服务器的基于Kerberos的子系统处理对网络上的服务和通信的另外请求。每当希望与另一个工作组成员进行安全服务或安全通信时,可以向用户或客户机装置提供票证授予票证(TGT),该票证授予票证(TGT)用作要给予密钥分布中心(KDC)的令牌。在一些实施例中,TGT可以包括指示接收方的身份、时间戳和任何其它证明中的一个或多个的数据块或数据串。可以在KDC的主密钥下对TGT进行加密从而使得仅有KDC可以读取它的内容。
为了与服务(例如,电子邮件或web服务器)进行安全通信,客户机可以向KDC传送TGT并且请求服务票证(ST)。如果TGT有效,则KDC可以向客户机返回两个ST,每个包含通信中涉及的各方的证明、时间戳以及用作双方之间的用于加密的临时共享密钥的唯一且新鲜的会话密钥(SK)。可以使用用户与KDC之间的共享的基于口令的密钥对ST之一进行加密,并且可以使用被访问的服务与KDC之间的共享的基于口令的密钥对另一个ST进行加密。针对进行请求的客户机进行加密的ST可以立即被解密并且会话密钥被揭示。用户然后可以向目标服务发送第二ST和使用SK加密的消息。该服务然后可以用它的基于口令的密钥对ST进行解密以获得SK,随后对用户发送的消息进行解密。通过这个过程,客户机和服务现在可以共享SK。
SK然后可用作用于安全数据解析器的工作组密钥(WK)。该WK可以在本地存储到客户机的密钥库(KeyStore)中。WK还可用于包装在内部创建的会话密钥,包括加密会话密钥(ESK)和MAC会话密钥(MK)。在利用WK进行包装后,密文可以安全地在由安全数据解析器产生的各个首标之间进行共享,其中,在每个首标内存储各个包装的密钥的一份。访问ESK或MK现在要求获得WK和足以恢复包装的ESK和MK密文的某最小数量的份。
在一些实施例中,WK可用于包装在内部产生的ESK。一旦用WK进行了包装,密文可以用新产生的密钥加密密钥(KEK)进行再次包装,获得已经被双重包装并且只有知道WK和KEK二者才能够被恢复的ESK。KEK可以安全地在由安全数据解析器产生的各个首标之间进行共享,并且双重包装的ESK可以存储在每个首标内。恢复ESK现在要求获得WK以及足以重建KEK的某最小数量的份。
在一些实施例中,支持在线密钥更新。每当客户机希望更新它的密钥(或者检查更新的可用性)时,客户机可以与在线密钥服务器进行交互。这个在线密钥服务器然后可以根据工作组安全策略,分布和共享密钥材料。
在一些实施例中,可以根据需要、按由工作组安全策略定义的某时间表定期地、或者在某事件以后(例如,在客户机的通信权被撤销或者客户机离开工作组后)自动地使在线密钥更新可用。密钥更新系统可由工作组机构(WA)进行管理,该工作组机构(WA)可以控制多个客户机装置和用户的工作组成员资格。最初可以向系统中的每个客户机或用户提供公共/私有密钥对。公钥可向WA进行登记,该WA也可以记录或存储公钥。或者,在一些实施例中,可以使用对称加密方案,其中,最初向系统中的每个客户机或用户提供秘密密钥,而非公共/私有密钥对。秘密密钥可向WA进行登记,该WA也可以记录或存储秘密密钥。WA(或者一些其它工作组密钥服务器)可以向每个装置提供密钥服务器的公钥证书,该公钥证书已由受信任的认证机构(CA)签名。
为了发起输出连接或者接收输入连接,每个客户机可以联系它的WA,在一些实施例中,该WA可以与第三方认证或用户登录服务(例如,Active Directory服务器)进行对接,以确定客户机的工作组成员资格。客户机然后可以使用公钥或秘密密钥技术向WA证实它的身份。然后可以使用公钥或秘密密钥加密方案加密当前WK,从而使得接收客户机能够解密所得的密文以获得当前WK。所得的密文还可以由密钥服务器(使用与它的认证的公钥对应的签名密钥)进行签名并且被发送至请求客户机。
在一些实施例中,即使当客户机不能够到达密钥服务器(即,客户机无束缚(untethered)或者部分无束缚)时,可以支持密钥更新。通过加入定期更新共享的工作组密钥的机制,仍可以实现可更新性。按照一定期时间表,可由密钥服务器启动密钥更新,该密钥服务器可与第三方认证或用户登录服务对接以确定组成员资格。每个密钥更新可包含新鲜的WK及其标识符。可以使用公钥广播加密方案来加密WK,从而使得仅仅当前工作组成员能够对所得的密文进行解密。所得的密文然后可由密钥服务器(使用与它的认证的公钥对应的签名密钥)进行签名并且经由半信任通道(例如,网站)被传送至未撤销的装置。例如,当一客户机准备离线时,密钥服务器能够向客户机预先提供有限数目的未来时段的密钥更新。另外或者代替地,对于具有有限网络访问的客户机,密钥撤销和更新消息可以公示至可用性高的位置,例如,TLS保护的公共网站。
为了加入工作组,在一些实施例中,客户机首先向WA进行登记,然后向该客户机提供秘密密钥。WA可以将该客户机的身份和秘密密钥存储在安全位置,例如,存储在加密的查找表或密钥库中。
为了发起连接,在一些实施例中,客户机可以使用它的秘密密钥连接到WA并且请求WK。WA可以查找该客户机并且使用存储的密钥解密消息。它然后可以用使用客户机的秘密密钥进行加密的WK进行响应。客户机现在可以使用WK来发起与工作组中的另一个客户机的连接。在一些实施例中,WA还向客户机指示WK的有效性的近似持续时间。在密钥过期后,客户机上有效的安全策略可以要求客户机联系WA以进行密钥更新(但是如果需要的话,客户机也可以在密钥过期之前检查密钥更新)。当接收到连接时,客户机上有效的安全策略可以要求新鲜且未过期的WK,如果需要的话由WA验证WK的状态。
为了撤销工作组内的一个客户机的通信权,WA可以拒绝对撤销的客户机的进一步密钥更新。因此,在当前WK有效的时间段内,受危害的客户机可以仅仅对该工作组进行通信访问。撤销可以仅影响新的连接或者(通过终止陈旧连接或者当连接超过某系统定义的时长或者连接次数时强制重新连接)而影响新连接和现有连接二者。
为了发起与另一个工作组成员的连接,在一些实施例中,发起方可以向接收方工作组成员发送由安全数据解析器产生的首标。该首标可以包括工作组密钥、工作组密钥标识符和工作组密钥版本号中的一个或多个。接收方工作组成员然后可以检查工作组密钥标识符以验证该标识符是用于当前工作组的正确标识符。接收方工作组成员还可以检查工作组密钥版本号以验证该版本号与接收方工作组成员的当前工作组密钥版本号相同(在当前时间大于工作组密钥刷新警报时间的情况下是可选的)。如果工作组密钥标识符是有效的并且工作组密钥版本号相同(在当前时间不大于工作组密钥刷新警报时间的情况下是可选的),则接收方工作组成员可以报告一成功连接尝试。
附图说明
在下文中结合附图更加详细描述本发明,这些附图旨在例示而非限制本发明,在附图中:
图1示出了根据本发明的实施例的各方面的密码系统的框图;
图2示出了根据本发明的实施例的各方面的图1的信任引擎的框图;
图3示出了根据本发明的实施例的各方面的图2的事务引擎的框图;
图4示出了根据本发明的实施例的各方面的图2的储存器的框图;
图5示出了根据本发明的实施例的各方面的图2的认证引擎的框图;
图6示出了根据本发明的实施例的各方面的图2的密码引擎的框图;
图7是根据本发明的一个实施例的例示性移动中数据系统的框图;
图8是根据本发明的一个实施例的另一个例示性移动中数据系统的框图;
图9A和9B是根据本发明的一个实施例的可以在任何合适组合(具有任何合适添加、删除或修改)中使用的针对移动中数据的首标产生和数据分裂的简化和例示性处理流程图;
图10是根据本发明的一个实施例的可以在任何合适组合(具有任何合适添加、删除或修改)中使用的例示性份格式的简化框图;
图11是示出根据本发明的一个实施例的认证工作组中的客户机的消息序列的简化协议;
图12是示出根据本发明的一个实施例的获得工作组中的服务票证的消息序列的简化协议;
图13是示出根据本发明的一个实施例的使用工作组密钥保护移动中数据的消息序列的简化协议;
图14是示出根据本发明的一个实施例的内核与用户空间交互的消息序列的简化协议;
图15是根据本发明的一个实施例的在一个域内初始建立工作组机构的简化框图;
图16是示出根据本发明的一个实施例的工作组内的两个客户机的连接序列的简化协议;
图17是根据本发明的一个实施例的用于加入工作组的例示性处理流程图;
图18A、18B和18C是根据本发明的一个实施例的发起两个工作组客户机之间的连接的例示性处理流程图;
图19是根据本发明的一个实施例的在工作组内撤销客户机的通信权的例示性处理流程图;以及
图20是根据本发明的一个实施例的更新工作组密钥的例示性处理流程图。
具体实施方式
本发明提供了一种密码系统,在该密码系统中,一个或多个安全服务器或信任引擎存储密码密钥和用户认证数据。用户可通过对信任引擎的网络访问,访问传统密码系统的功能,然而,信任引擎没有发布实际密钥和其它认证数据,因此这些密钥和数据仍是安全的。密钥和认证数据的这种服务器中心存储提供了用户无关的安全性、移植性、可用性和直接性。
因为用户能够确信或信任密码系统来执行用户和文档认证以及其它密码功能,所以多种多样的功能可以包括在该系统内。例如,通过例如对协议参与者进行认证,代表或针对参与者对该协议进行数字签名,并且存储由每个参与者数字签名的协议的记录,信任引擎提供商可以确保不会出现协议抵赖。此外,该密码系统可以监视协议并且例如基于价格、用户、卖方、地理位置、使用地点等来确定应用不同程度的认证。
为了便于完全理解本发明,具体实施方式的其余部分参照附图描述本发明,其中,相同元素始终由相同标号进行表示。
图1示出了根据本发明的实施例的各方面的密码系统100的框图。如图1所示,密码系统100包括通过通信链路125进行通信的用户系统105、信任引擎110、认证机构115和卖方系统120。
根据本发明的一个实施例,用户系统105包括具有一个或多个微处理器(例如,基于Intel的处理器)的传统通用计算机。此外,用户系统105包括适当的操作系统,例如能够包括图形或窗口的操作系统(例如,Windows、Unix、Linux等)。如图1所示,用户系统105可以包括生物测定装置107。生物测定装置107可以有利地获取用户的生物测定并且将获取的生物测定传送给信任引擎110。根据本发明的一个实施例,生物测定装置可有利地包括具有与在以下文献中公开的类似的属性和特征的装置:题目为“RELIEF OBJECT IMAGE GENERATOR”的美国专利6856383、2000年4月26日提交的题目为“IMAGING DEVICE FOR A RELIEF OBJECT AND SYSTEM AND METHOD OF USING THE IMAGE DEVICE”的美国专利申请No.09/558634、题目为“RELIEFOBJECT SENSOR ADAPTOR”的美国专利6631201和2000年1月5日提交的题目为“PLANAR OPTICAL IMAGE SENSOR AND SYSTEM FOR GENERATING AN ELECTRONIC IMAGE OF A RELIEF OBJECT FOR FINGERPINT READING”的美国专利申请No.09/477934,上述所有的美国专利申请由当前受让人拥有并且通过引用并入本文。
此外,用户系统105可以通过传统的服务提供商(例如,拨号、数字用户线(DSL)、线缆调制解调器、光纤连接等)连接到通信链路125。根据另一个实施例,用户系统105通过网络连接性(例如,局域网或广域网)连接通信链路125。根据一个实施例,操作系统包括TCP/IP栈,该TCP/IP栈处理在通信链路125上传递的所有的出入消息通信。
尽管参照上述实施例公开了用户系统105,但是本发明不限于此。相反,熟练技术人员从这里的公开可以识别用户系统105的大量的替代实施例,包括能够发送或从另一个计算机系统接收信息的几乎任何计算装置。例如,用户系统105可以包括但不限于能够与通信链路125进行交互的计算机工作站、交互式电视、交互亭、个人移动计算装置(例如,数字助理、移动或蜂窝电话、膝上型电脑等)、无线通信装置、智能卡、嵌入式计算装置等。在这些替代系统中,操作系统很可能不同并且针对特定装置进行改动。然而,根据一个实施例,操作系统有利地继续提供与通信链路125建立通信所需的适当的通信协议。
图1示出了信任引擎110。根据一个实施例,信任引擎110包括用于访问和存储敏感信息的一个或多个安全服务器,敏感信息可以是任何类型或形式的数据,例如是但不限于文本、音频、视频、用户认证数据以及公共和私有密码密钥。根据一个实施例,认证数据包括被设计为唯一识别密码系统100的用户的数据。例如,认证数据可以包括用户识别号、一个或多个生物测定、以及由信任引擎110或用户产生但是在登记时由用户初始回答的一系列提问和回答。上述提问可以包括人口数据(例如,出生地、地址、周年纪念等)、个人数据(例如,母亲未婚时的名字、喜欢的冰激凌等)、或被设计为唯一识别用户的其它数据。信任引擎110将与当前事务关联的用户的认证数据与先前(例如在登记时)设置的认证数据进行比较。信任引擎110可以有利地要求用户在每次事务时生成认证数据,或者信任引擎110可以有利地允许用户定期地(例如,在一串事务的开始时或者在登录到特定卖方网站时)生成认证数据。
根据用户生成生物测定数据的实施例,用户向生物测定装置107提供身体特征,例如但不限于面部扫描、手扫描、耳扫描、虹膜扫描、视网膜扫描、血管模式、DNA、指纹、笔迹或语音。生物测定装置有利地生成身体特征的电子模式或生物测定。为了登记或认证,电子模式通过用户系统105传送至信任引擎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请求数字证书,从而使得信任引擎110可访问与任何请求方的证书标准对应的数字证书。
根据另一个实施例,信任引擎110在内部执行证书发放。在这个实施例中,当证书被请求时(例如,在密钥产生时)或者在请求时请求的证书标准中,信任引擎110可以访问用于产生证书的证书系统和/或可以在内部产生证书。在下文中将更加详细地公开信任引擎110。
图1还示出了卖方系统120。根据一个实施例,卖方系统120有利地包括Web服务器。典型的Web服务器通常使用几个互联网标记语言或文档格式标准(例如,超文本标记语言(HTML)或可扩展标记语言(XML))之一在互联网上提供内容。Web服务器从如Netscape和Internet Explorer的浏览器接受请求,然后返回适当的电子文档。多个服务器或客户端技术能够用于提高Web服务器的能力以超越它的传递标准电子文档的能力。例如,这些技术包括公共网关接口(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等获得的传统Web服务器的数据路由装置。例如,Web服务器可以有利地从通信链路125接收输入数据。根据本发明的一个实施例,输入数据被寻址至信任引擎110的前端安全系统。例如,前端安全系统可以有利地包括防火墙、搜索已知攻击概况的入侵检测系统、和/或病毒扫描器。在通过了前端安全系统后,数据由事务引擎205接收并且被路由至储存器210、认证引擎215、密码引擎220和海量存储器225之一。此外,事务引擎205监视来自认证引擎215和密码引擎220的输入数据,并且通过通信链路125将该数据路由至特定系统。例如,事务引擎205可有利地向用户系统105、认证机构115或卖方系统120路由该数据。
根据一个实施例,使用传统的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”时,通信可以包括1/2SSL或全SSL。
由于事务引擎205将数据路由至密码系统100的各个部件,所以事务引擎205可有利地建立审计索引(audit trail)。根据一个实施例,审计索引包括在整个密码系统100内由事务引擎205进行路由的数据的至少类型和格式的记录。这种审计数据可有利地存储在海量存储器225中。
图2还示出了储存器210。根据一个实施例,储存器210包括一个或多个数据存储设施,例如目录服务器、数据库服务器等。如图2所示,储存器210存储密码密钥和登记认证数据。密码密钥可有利地对应于信任引擎110或者密码系统100的用户(例如,用户或卖方)。登记认证数据可有利地包括被设计用于唯一识别用户的数据,例如用户ID、口令、提问的回答、生物测定数据等。有利的是,可以在用户登记时或者在另一个替代的以后时间获取这个登记认证数据。例如,信任引擎110可以包括登记认证数据的周期性或其它的更新或重新发放。
根据一个实施例,从事务引擎205到认证引擎215和密码引擎220的通信以及从认证引擎215和密码引擎220到事务引擎205的通信包括安全通信(例如,传统的SSL技术)。此外,如上所述,可以使用URL、URI、HTTP或XML文档传送到达和来自储存器210的通信的数据,有利地在上述任何一个内部嵌入了数据请求和格式。
如上所述,储存器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中。由于审计索引数据包括由储存器210接收到的请求的记录及其响应,所以储存器审计索引数据与事务引擎205的审计索引数据类似。此外,海量存储器225可用于存储在内部包含了用户的公钥的数字证书。
尽管参照其优选实施例和替代实施例公开了信任引擎110,但是本发明不限于此。相反,熟练技术人员将从这里的公开中认识到信任引擎110的大量替代。例如,信任引擎110可有利地仅仅执行认证,或者仅仅执行例如数据加密和解密的一些或所有的密码功能。根据这些实施例,可有利地去除认证引擎215和密码引擎220之一,从而为信任引擎110建立更加简单的设计。此外,密码引擎220还可以与认证机构进行通信从而在信任引擎110内实现认证机构。根据另一个实施例,信任引擎110可以有利地执行认证以及例如数字签名的一个或多个密码功能。
图3示出了根据本发明的实施例的各方面的图2的事务引擎205的框图。根据这个实施例,事务引擎205包括具有处理线程和侦听线程的操作系统305。有利的是,操作系统305可与在例如可从Apache得到的Web服务器的传统高容量服务器中发现的操作系统类似。侦听线程针对输入数据流,监视来自通信链路125、认证引擎215和密码引擎220之一的输入通信。处理线程识别输入数据流的特定数据结构(例如,上述数据结构),从而将输入数据路由至通信链路125、储存器210、认证引擎215、密码引擎220或海量存储器225之一。如图3所示,有利的是,通过例如SSL技术可以保护输入和输出数据。
图4示出了根据本发明的实施例的各方面的图2的储存器210的框图。根据这个实施例,储存器210包括一个或多个轻量目录访问协议(LDAP)服务器。可以从各种制造商(例如,Netscape、ISO、微软等)获得LDAP目录服务器。图4还示出了目录服务器优选存储与密码密钥对应的数据405和与登记认证数据对应的数据410。根据一个实施例,储存器210包括单个逻辑存储结构,用于将认证数据和密码密钥数据索引至唯一用户ID。该单个逻辑存储结构优选包括确保存储在其中的数据的高度信任或安全性的机制。例如,储存器210的物理位置可有利地包括大量的传统安全性措施,诸如受限雇员访问、现代监视系统等。除了物理安全性以外或者替代物理安全性,计算机系统或服务器可以有利地包括保护存储的数据的软件方案。例如,储存器210可有利地建立并存储与采取的动作的审计索引对应的数据415。此外,有利的是,可以用与传统的SSL技术结合的公钥加密,对输入和输出通信进行加密。
根据另一个实施例,储存器210可以包括不同的且物理分离的数据存储设施。例如,储存器210可以包括安置在地理分离的位置处的超过一个的物理存储装置,例如,磁带驱动器、硬盘驱动器、光盘驱动器、或它们的任何组合。
图5示出了根据本发明的实施例的各方面的图2的认证引擎215的框图。与图3的事务引擎205类似,认证引擎215包括操作系统505,操作系统505至少具有传统的Web服务器(例如,可从Apache获得的Web服务器)的变型版本的侦听和处理线程。如图5所示,认证引擎215包括对至少一个私钥510的访问。有利的是,私钥510可用于例如对来自事务引擎205或储存器210的数据进行解密,该数据用认证引擎215的对应公钥进行了加密。
图5还示出了包括比较器515、数据分裂模块520和数据组装模块525的认证引擎215。根据本发明的一个实施例,比较器515包括能够比较与上述生物测定认证数据有关的潜在复杂模式的技术。该技术可以包括用于模式比较(例如,表示指纹模式或语音模式的模式比较)的硬件、软件或者组合方案。此外,根据一个实施例,认证引擎215的比较器515可有利地比较文档的传统哈希值以呈现比较结果。根据本发明的一个实施例,比较器515包括对该比较应用启发法(heuristics)530。有利的是,启发法530可以应对围绕认证尝试的境况(例如,时间、IP地址或子网掩码、购买概况、电子邮件地址、处理器序列号或ID等)。
此外,生物测定数据比较的性质会导致从当前生物测定认证数据与登记数据的匹配产生变化的置信度。例如,与可仅仅返回肯定或否定匹配的传统口令不同,指纹可被确定为部分匹配,例如90%匹配、75%匹配或10%匹配,而非简单地为正确或不正确。诸如声纹(voice print)分析或面部识别的其它生物测定识别法会共有这个概率认证的属性,而非绝对认证。
当利用这种概率认证进行工作时或者在认为认证低于绝对可靠的其它情况下,期望应用启发法530以确定设置的认证的置信水平是否高到足够对正在进行的事务进行认证。
有时候存在如下情况:谈及的事务是相对低值事务,其中,它可以较低的置信水平被接受而得到认证。这可以包括具有与之关联的低货币值(例如,$10购买)的事务或者低风险的事务(例如,进入会员制网站)。
相反,为了对其它事务进行认证,会期望在允许事务进行之前要求高的认证置信度。这些事务可以包括大货币值的事务(例如,签署几百万美元供货合同)或者在发生不正确认证的情况下具有高风险的事务(例如,远程登录政府计算机)。
如下文所述,与置信水平和事务值组合的启发法530的使用可用于允许比较器提供动态的上下文敏感认证系统。
根据本发明的另一个实施例,比较器515可有利地跟踪特定事务的认证尝试。例如,当事务失败时,信任引擎110可以请求用户重新输入他或她的当前认证数据。认证引擎215的比较器515可有利地利用尝试限制器535以限制认证尝试的次数,由此禁止假扮用户的认证数据的暴力尝试。根据一个实施例,尝试限制器535包括监视事务的重复认证尝试并且例如将给定事务的认证尝试限制为三次的软件模块。因此,尝试限制器535例如将用于假扮个人的认证数据的自动尝试限制为仅三次“猜测”。当三次失败时,尝试限制器535可有利地拒绝另外的认证尝试。有利的是,例如通过不管正在发送的当前认证数据如何比较器515都返回否定结果,而实现这种拒绝。另一方面,事务引擎205可有利地阻止属于三次尝试先前已经失败的事务的任何另外的认证尝试。
认证引擎215还包括数据分裂模块520和数据组装模块525。数据分裂模块520有利地包括能够对各种数据进行数学运算从而充分地将数据随机化(例如,随机化或伪随机化)并分裂成个体部分(还称作份)的软件、硬件或组合模块。在一些实施例中,为了充分地将数据随机化,数据分裂模块520可以产生随机或伪随机数。该随机或伪随机数然后可与来自数据集的数据单元(例如,任何数目的比特、字节或块)关联。该随机或伪随机数还可与各个份关联。数据分裂模块520可以至少部分基于随机或伪随机数与数据单元和份的关联,来确定把来自数据集的每个数据单元存储在哪个份中。
根据一个实施例,无法从一个单独部分或用户份重建原始数据。数据组装模块525有利地包括被构造为对上述充分随机化的部分进行数学运算从而使它们的组合提供原始译解数据的软件、硬件或组合模块。根据一个实施例,认证引擎215利用数据分裂模块520将登记认证数据随机化并分裂成多个部分,并且利用数据组装模块525将这些部分重新组装成可用的登记认证数据。
图6示出了根据本发明的一个实施例的各方面的图2的信任引擎200的密码引擎220的框图。与图3的事务引擎205类似,密码引擎220包括操作系统605,操作系统605至少具有传统的Web服务器(例如,可从Apache得到的Web服务器)的变型版本的侦听和处理线程。如图6所示,密码引擎220包括功能与图5中类似的数据分裂模块610和数据组装模块620。然而,根据一个实施例,与上述的登记认证数据不同,数据分裂模块610和数据组装模块620处理密码密钥数据。但是,熟练技术人员将从这里的公开认识到,数据分裂模块910和数据分裂模块620可以与认证引擎215的相应模块进行组合。
密码引擎220还包括密码处理模块625,密码处理模块625被构造为执行大量的密码功能中的一个、一些或全部。根据一个实施例,密码处理模块625可以包括软件模块或程序、硬件或二者。根据另一个实施例,密码处理模块625可以执行数据比较、数据解析、数据分裂、数据分离、数据哈希法、数据加密或解密、数字签名验证或创建、数字证书产生、存储、或请求、密码密钥产生等等。此外,熟练技术人员将从这里的公开认识到,密码处理模块825可有利地包括公钥基础设施,诸如良好隐私(PGP)、基于RSA的公钥系统、或者大量的替代密钥管理系统。此外,密码处理模块625可以执行公钥加密、对称密钥加密或二者。除了上述以外,密码处理模块625可以包括用于执行无缝、透明的互用性功能的一个或多个计算机程序或模块、硬件或二者。
熟练技术人员还将从这里的公开认识到,密码功能可以包括一般与密码密钥管理系统有关的大量或多样的功能。
本发明的安全数据解析器可以集成到操作系统内核(例如,Linux、Unix、或者任何其它合适的商业或专用操作系统)。该集成可用于在装置等级保护数据,由此,例如,通常将存储在一个或多个装置内的数据被集成到操作系统内的安全数据解析器分离成一定数目的部分并且存储在所述一个或多个装置之间。当尝试访问原始数据时,同样集成到操作系统内的适当软件可以按照对于端用户透明的方式将解析的数据部分重组成原始数据。
本发明的安全数据解析器可以集成到存储系统的卷管理器或者任何其它合适部件,以跨任何或所有支持的平台保护本地和联网的数据存储。例如,通过集成安全数据解析器,存储系统可利用由安全数据解析器提供的冗余(即,用于实现不需要数据的所有的分离部分就可以重构原始数据的特征)以防止数据损失。不管是否使用冗余,安全数据解析器还使得写入存储装置的所有数据可以成为根据本发明的解析而产生的多个部分的形式。当尝试访问原始数据时,同样集成到卷管理器或存储系统内的其它合适部件的适当软件可以按照对于端用户透明的方式将解析的数据部分重组成原始数据。
在一个合适方案中,本发明的安全数据解析器可以集成到RAID控制器(作为硬件或者作为软件)。这使得可以将数据安全存储到多个驱动器上,同时在驱动器故障的情况下保持容错性。
例如为了保护敏感表信息,本发明的安全数据解析器可以集成到数据库。例如,在一个合适方案中,可以根据本发明对与数据库表的特定单元(例如,个体单元、一个或多个特定列、一个或多个特定行、它们的任何组合、或者整个数据库表)关联的数据进行解析和分离(例如,其中,不同的部分存储在位于一个或多个位置处的一个或多个存储装置上或者单个存储装置上)。可以通过传统的认证方法(例如,用户名和口令查询)来授权为了观看原始数据而重组这些部分的访问。
本发明的安全解析器可以集成到包括移动中数据(即,数据从一个位置到另一个位置的转移)的任何合适系统内。这些系统例如包括网络文件服务器和文件系统、电子邮件服务器、web服务器、流式数据广播和无线(例如,WiFi)通信。关于电子邮件,在一个合适方案中,安全解析器可用于对外发消息(即,包含文本、二进制数据或二者(例如,附于电子邮件消息的文件))进行解析并且沿着不同路径发送解析数据的不同部分,由此建立多个数据流。如果这些数据流中的任何一个受到危害,则原始消息仍然安全,因为根据本发明,为了产生原始数据,该系统要求组合超过一个的部分。在另一个合适方案中,数据的不同部分可以沿着一个路径顺序地传送从而使得如果获得了一个部分,则这不足以产生原始数据。根据本发明,这些不同部分到达期望收件人的位置并且可以被组合以产生原始数据。
图7和图8是这种电子邮件系统的例示性框图。图7示出了发送方系统700,它可以包括任何合适硬件,例如,计算机终端、个人计算机、手持装置(例如,PDA、黑莓)、蜂窝电话、计算机网络、任何其它合适硬件、或者它们的任何组合。发送方系统700用于产生和/或存储消息704,消息704例如可以是网络包、电子邮件消息、二进制数据文件(例如,图形、语音、视频等)或它们的任何组合。根据本发明由安全数据解析器702对消息704进行解析和分裂。得到的数据部分可以经由一个或多个分立的通信路径706通过网络708(例如,互联网、内联网、LAN、WiFi、蓝牙、任何其它合适有线或无线通信手段、或者它们的任何组合)传送至接收方系统710。可以在时间上并行地或者另选地根据不同数据部分的通信之间的任何合适的时间延迟,传送这些数据部分。接收方系统710可以是关于发送方系统700如上所述的任何合适硬件。根据本发明,沿着通信路径706运送的单独的数据部分在接收方系统710处被重组以产生原始消息或数据。
图8示出了发送方系统800,它可以包括任何合适硬件,例如,计算机终端、个人计算机、手持装置(例如,PDA)、蜂窝电话、计算机网络、任何其它合适硬件、或者它们的任何组合。发送方系统800用于产生和/或存储消息804,消息804例如可以是网络包、电子邮件消息、二进制数据文件(例如,图形、语音、视频等等)或它们的任何组合。根据本发明由安全数据解析器802对消息804进行解析和分裂。得到的数据部分可以经由单个通信路径806通过网络808(例如,互联网、内联网、LAN、WiFi、蓝牙、任何其它合适的有线或无线通信手段、或者它们的任何组合)传送至接收方系统810。这些数据部分可以经由通信路径806相对于彼此串行传送。接收方系统810可以是在上文关于发送方系统800描述的任何合适硬件。根据本发明,沿着通信路径806运送的各个数据部分在接收方系统810处被重组以产生原始消息或数据。
应该明白,图7和图8的布置仅仅是例示性的。可以使用任何其它合适布置。例如,在另一个合适方案中,图7和8的系统的特征可以进行组合,从而使用图7的多路径方案,并且其中,与在图8中通信路径806一样,一个或多个通信路径706用于运送超过一个的数据部分。
安全数据解析器可以集成在移动中数据系统的任何合适等级。例如,在电子邮件系统的情况下,安全解析器可以集成在用户接口等级(例如,集成到Outlook中),在这种情况下,当使用电子邮件时,用户可以对安全数据解析器特征的使用进行控制。或者,可以在后端部件(例如在交换服务器)中实现安全解析器,在这种情况下,根据本发明,不需要任何用户干涉,可以自动对消息进行解析、分裂并且沿着不同路径进行传送。在一些实施例中,这种集成可以对用户透明。
类似地,在数据(例如,音频、视频)的流式广播的情况下,输出数据可以被解析和分离成多个流,每个流包含解析数据的一部分。根据本发明,这多个流可以沿着一个或多个路径发送并且在收件人的位置进行重组。这种方案的好处之一是,避免了与对数据进行传统加密然后通过单个通信通道发送加密的数据相关联的相对较大的开销。本发明的安全解析器允许多个并行流中发送移动中数据,从而提高了速度和效率。
应该明白,为了通过任何传输介质(例如包括有线、无线或物理)的任何类型的移动中数据的保护和容错,可以集成安全数据解析器。例如,IP语音(VoIP)应用可以利用本发明的安全数据解析器。可以使用本发明的安全数据解析器来保护往来于任何合适个人数字助理(PDA)装置(例如,黑莓和智能电话)的无线或有线数据传输。对等和基于集线器的无线网络的使用无线802.11协议的通信、卫星通信、点对点无线通信、互联网客户机/服务器通信或者任何其它合适通信可以包括根据本发明的安全数据解析器的移动中数据能力。计算机外设装置(例如,打印机、扫描仪、监视器、键盘、网络路由器、生物测定认证装置(例如,指纹扫描仪)、或者任何其它合适外设装置)之间、计算机与计算机外设装置之间、计算机外设装置与任何其它合适装置之间的数据通信或者它们的任何组合可以利用本发明的移动中数据特征。
本发明的移动中数据特征还可以应用于例如使用独立路线、媒介物、方法的安全份的物理传输、任何其它合适的物理传输或者它们的任何组合。例如,数据的物理传输可以发生于数字/磁带、软盘、光盘、物理令牌、USB驱动器、可移动硬盘、具有闪存的消费电子装置(例如苹果IPOD或其它MP3播放器)、闪存、用于传输数据的任何其它合适介质、或者它们的任何组合。
本发明的安全数据解析器提供了具有灾难恢复能力的安全性。根据本发明,为了获取原始数据,不需要由安全数据解析器产生的所有部分的分离数据。也就是说,在存储的m个部分之中,n可以是这m个部分之中获取原始数据所需的最小数,其中,n<=m。例如,如果四个部分的每个存储在与其它三个部分不同的物理位置中,那么如果在这个例子中n=2,则这些位置中的两个可被危害从而数据被破坏或者不可访问,并且从其它两个位置中的部分仍可以获取原始数据。对于n或m,可以使用任何合适值。
此外,本发明的m取n特征可用于建立“双人规则”,由此为了避免委托单个个人或者任何其它实体对可能是敏感数据的事务进行全面访问,两个或更多不同实体(每个实体具有由本发明的安全解析器解析的分离数据的一部分)需要同意将它们的各部分放到一起以获取原始数据。
本发明的安全数据解析器可用于向一组实体提供组范围密钥,该组范围密钥使组成员可以访问由该特定组授权访问的特定信息。组密钥可以是例如为了获取寻找的信息而需要与在中心存储的另一个部分进行组合的、由根据本发明的安全解析器产生的数据部分之一。例如,这个特征允许在组内实现安全协作。例如,它可以应用于专有网络、虚拟专用网、内联网、或者任何其它合适网络。
安全解析器的这种用途的特定应用例如包括联合信息共享,在联合信息共享中,例如,对多国友好政府军队给予基于对每个对应国家授权的安全等级通过单个网络或双重网络(即,与涉及当前使用的相对较多人工处理的许多网络相比)传送在操作和其它方面敏感的数据的能力。这种能力还可应用于公司或其它组织,其中,需要由一个或多个特定个人(组织内或组织外)知道的信息可以经由单个网络传送,而不需要担心未授权个人观看该信息。
另一个特定应用包括用于政府系统的多级安全性层级。也就是说,本发明的安全解析器可以提供使用单个网络以不同等级的机密信息(例如,不机密、机密、秘密、绝密)操作政府系统的能力。如果需要,可使用更多网络(例如,对于绝密使用单独网络),但是本发明允许比对每个等级的机密使用独立网络的当前布置实质更少的布置。
应该明白,可以使用本发明的安全解析器的上述的应用的任何组合。例如,组密钥应用能够与移动中数据安全性应用一起使用(即,由此,通过网络传送的数据仅能够由对应组的成员访问,并且在这种情况下,当数据在移动时,根据本发明它在多个路径中进行分裂(或者以顺序的部分进行发送))。
本发明的安全数据解析器可以集成到任何中间件应用中,从而使得应用能够将数据安全存储到不同数据库产品或不同装置,而不需要对应用或数据库进行改动。中间件是使得两个独立和已经存在的程序可以进行通信的任何产品的一般术语。例如,在一个合适方案中,集成了安全数据解析器的中间件可用于使得针对特定数据库编写的程序与其它数据库进行通信,而不用定制编码。
本发明的安全数据解析器可以实现为具有例如本文所述的任何合适能力的任何组合。在本发明的一些实施例中,例如,安全数据解析器可以实现为仅仅具有某些能力,但是可以通过使用直接或间接与安全数据解析器对接的外部软件、硬件或二者而获得其它能力。
有利的是,本发明的安全数据解析器可用于多个应用和技术中。例如,电子邮件系统、RAID系统、视频广播系统、数据库系统、磁带备份系统、或者任何其它合适系统可以具有以任何合适等级集成的安全数据解析器。如上所述,应该明白,还可以集成安全数据解析器以用于通过任何传输介质(例如包括有线、无线或者物理传输介质)的任何类型的移动中数据的保护和容错。作为一个例子,IP语音(VoIP)应用可以利用本发明的安全数据解析器解决与在VoIP内通常存在的回声和延迟有关的问题。通过使用容错可以消除对漏掉包进行网络再试的需要,即使在丢失预定数目的份的情况下这仍可以保证包传送。数据包(例如,网络包)还可以以最小延迟和缓冲“即时地(on-the-fly)”被高效地分裂和恢复,从而获得针对各种类型的移动中数据的综合方案。安全数据解析器可作用于网络数据包、网络语音包、文件系统数据块、或者任何其它合适的信息单元。除了与VoIP应用集成在一起以外,安全数据解析器可以与文件共享应用(例如,对等文件共享应用)、视频广播应用、电子投票或民意调查应用(可以实现例如Sensus协议的电子投票协议和盲签名)、电子邮件应用、或者要求或希望安全通信的任何其它网络应用集成在一起。
在一些实施例中,本发明的安全数据解析器在两个不同阶段(即,首标产生阶段和数据划分阶段)可以提供对移动中网络数据的支持。在图9A和9B中分别示出了简化的首标产生过程900和简化的数据划分过程910。可以对网络包、文件系统块、或者任何其它合适信息执行这些过程中的一个或二者。
在一些实施例中,在网络包流开始时可以执行一次图9A所示的首标产生过程900。在步骤902中,可以产生随机(或伪随机)分裂加密密钥K。然后,在AES密钥包装步骤904中,(例如,使用上述的工作组密钥)可选地对分裂加密密钥K进行加密。尽管在一些实施例中可以使用AES密钥包装,但是在其它实施例中可以使用任何合适的密钥加密或者密钥包装算法。AES密钥包装步骤904可以对整个分裂加密密钥K进行操作,或者该分裂加密密钥可以被解析成几个块(例如,64比特块)。如果需要,AES密钥包装步骤904然后可以对分裂加密密钥的块进行操作。
在步骤906中,秘密共享算法(例如,Shamir)可用于将分裂加密密钥K分裂成多个密钥份。然后,每个密钥份可以嵌入到输出份之一中(例如,份首标中)。最后,份完整性块和(可选的)后置认证标记(例如,MAC)可以附于每份的首标块。每个首标块可以被设计为适合安置在单个数据包内。
在首标产生完成后(例如,使用简化的首标产生过程900),安全数据解析器可使用简化的数据分裂过程910进入图9B所示的数据划分阶段。在步骤912中,使用分裂加密密钥K对流中的每个输入数据包或数据块进行加密。在步骤914中,可以对从步骤912获得的密文计算份完整性信息(例如,哈希值H)。例如,可以计算出SHA-256哈希值。然后,在步骤916中,可以使用根据本发明以上描述的数据分裂算法之一将数据包或数据块划分成两个或更多数据份。在一些实施例中,数据包或数据块可以被分裂为使得每个数据份包含加密的数据包或数据块的基本随机的分布。然后,完整性信息(例如,哈希值H)可以附于每个数据份。在一些实施例中,还可以计算可选的后置认证标记(例如,MAC)并且将其附于每个数据份。
每个数据份可以包括允许数据块或数据包的正确重建所需的元数据。这个信息可以包括在份首标内。元数据可以包括诸如密码密钥份、密钥标识或标识符、份现时、签名/MAC值和完整性块的信息。为了使带宽效率最大化,元数据可以以紧凑二进制格式存储。
例如,在一些实施例中,份首标可包括明文首标块,该明文首标块没有加密并且可以包括例如Shamir密钥份、每会话现时、每份现时、以及密钥标识符(例如,工作组密钥标识符和后置认证密钥标识符)的元素。份首标还可以包括使用分裂加密密钥进行加密的加密的首标块。完整性首标块也可以包括在该首标内,完整性首标块可以包括对任何数目的先前块(例如,先前两块)的完整性检查。在其它实施例中,任何其它合适值或信息也可以包括在份首标内。
如图10的例示性份格式1000所示,首标块1002可与两个或更多的输出块1004关联。例如首标块1002的每个首标块可被设计为适合安置在单个网络数据包内。在一些实施例中,在首标块1002从第一位置发送至第二位置后,输出块然后可以被发送。或者,首标块1002和输出块1004可以同时并行地发送。可以经由一个或多个类似或不类似的通信路径进行该发送。
每个输出块可以包括数据部分1006和完整性/真实性部分1008。如上所述,可以使用包括加密的预先划分的数据的份完整性信息(例如,SHA-256哈希值)的份完整性部分,对每个数据份进行保护。为了在恢复时验证输出块的完整性,安全数据解析器可以比较每份的份完整性块并且然后颠倒分裂算法。然后,可以针对份哈希值验证恢复的数据的哈希值。
如上所述,本发明的安全数据解析器还可以用于保护工作组内的移动中数据(或者从一个系统或服务传送至另一个系统或服务的数据)。在一些实施例中,中央服务器处理一个域(或者跨多个域)的所有的用户、服务和工作组管理。中央服务器可以包括一个服务器或者一个服务器群(用于容错),并且可以包括LDAP服务器,诸如运行Server2003和Active Directory的服务器。
可以使用如图11所示的质疑/响应协议1100提供工作组内的无缝用户认证。使用协议1100,工作组客户机1102可以向认证服务器1104认证它自身。可以通过共享秘密的验证(例如,使用摘要认证)来授予无缝用户认证。当用户登录工作组客户机1102时,可使用户输入的口令经过把口令的ASCII文本变换成密码密钥的密码函数。这个基于口令的密钥(在图11的例子中标记为“PBK”)还可以存储在认证服务器1104上或者可由认证服务器1104访问。
为了被认证,工作组客户机1102可以用消息1106向认证服务器1104识别它自身。例如,消息1106可以包括指示用户身份的数据,例如用户的工作组名称、登录用户名、网络地址、MAC地址、或者它们的任何组合。响应于消息1106,认证服务器1104可以在消息1108中向工作组客户机1102发送质疑值。该质疑值可以包括任何数目的比特或字节,这些比特或字节被工作组客户机1102接收后可以使用基于口令的密钥进行加密。所得的密文(在图11的例子中标记为“Y”)然后可以在消息1110中返回到服务器。然后,认证服务器1104可以使用对于该工作组客户机存储的基于口令的密钥对质疑值执行相同的加密并且验证它自身的加密与接收的密文匹配。如果存在匹配,则用户得到认证。否则,认证请求会被拒绝。
图12示出了用于与网络上的服务进行通信的例示性过程1200。可以使用Kerberos子系统实现过程1200,该Kerberos子系统允许网络上的两个工作组客户机(例如,客户机1202和1206)通过使用中央服务器(有时候称作密钥分布中心(KDC)1204)彼此证明它们的真伪。
在(例如,使用如消息1208所示的质疑/响应协议)得到认证后,在消息1210中向用户给予票证授予票证(TGT)。这个票证可用作每当客户机1202想要与网络上的另一个用户或服务(例如,web服务器、电子邮件服务器或客户机1206)进行通信时被给予KDC1204的令牌。TGT例如可以包括包含接收方的名称或身份、时间戳、和任何其它必要证明的信息块。还可以在KDC的主密钥下对TGT进行加密从而使得仅仅KDC能够读取TGT的内容。
当具有TGT的用户希望与网络上的服务进行通信时,它可以将TGT传送给KDC并且请求有效的服务票证(ST)。例如,如图12所示,工作组客户机1202已经经由消息1212请求针对客户机1206的ST。如果该TGT有效,则KDC1204可以经由消息1214向客户机1202返回两个ST,每个ST包含通信各方所涉及的证明、时间戳以及用作用于加密的双方之间的临时共享密钥的唯一和最新会话密钥(SK)。可以在用户与KDC之间共享的基于口令的密钥下对ST之一进行加密,并且可以在进行联系的服务或客户机(例如,客户机1206)与KDC之间共享的基于口令的密钥下对另一个ST进行加密。
针对进行请求的客户机1202进行加密的ST能够立即由客户机1202进行解密从而揭示SK。然后,客户机1202可以经由消息1216将第二ST和在SK下加密的消息发送至目标服务或客户机(例如,客户机1206)。然后,在最后步骤中,该服务或客户机(例如,客户机1206)可以用它的基于口令的密钥对该ST进行解密以获得SK,随后对客户机1202发送的消息进行解密。通过这个过程,客户机1202和1206现在共享SK。
实际上,在过程1200中所示的一个或多个步骤可以与其它步骤进行组合,以任何合适顺序执行、并行执行(例如,同时或基本同时执行)或者被去除。
图13示出了针对安全数据解析器使用共享密钥的例示性过程1300。上述的SK可用作共享工作组密钥(WK)以支持使用安全数据解析器的安全工作组通信。在一些实施例中,安全数据解析器WK可用于包装在内部产生的会话密钥,包括加密会话密钥(ESK)和MAC会话密钥(MK),这在美国专利No.7,391,865以及2003年6月11日提交的美国专利申请No.10/458,928、2005年10月25日提交的美国专利申请No.11/258,839、2006年11月20日提交的美国专利申请11/602,667、2007年11月7日提交的美国专利申请11/983,355、2007年12月5日提交的美国专利申请11/999,575、2008年9月12日提交的美国专利申请12/209,703和2009年1月7日提交的美国专利申请12/349,897中进行了更加详细的描述。
在用WK进行了包装后,可以在由安全数据解析器产生的每个首标之间安全地共享密文(例如,使用诸如Shamir的秘密共享方案),其中,用每个首标存储各个包装的密钥的一份。获得ESK或MK现在要求获得WK和足以重建包装的ESK和MK密文的数量的份。在一些实施例中,安全数据解析器WK可用于包装在内部产生的加密会话密钥(ESK)。一旦用WK进行了包装,可以用新产生的密钥加密密钥(KEK)对密文进行再次包装。现在,ESK已经被双重包装,只有在知道WK和KEK二者的情况下才可被恢复。KEK可以在由安全数据解析器产生的每个首标之间安全地共享,并且双重包装的ESK可以存储在每个首标内。获得ESK现在要求获得WK和足以重建KEK的数量的份。在典型的通信会话中,两个用户或者工作组客户机可以获得仅仅针对每个客户机单独加密的票证,这些票证包含WK值。该WK值然后可以被输入到两个用户或客户机的每个的密钥库中并且在安全数据解析器通信会话的上下文中用作普通WK。
例如,客户机1302可以将共享的WK输入到它的密钥库中并且产生安全数据解析器首标,如在上文中关于图9和图10所述。安全数据解析器首标可以包括WK、工作组密钥ID和WK版本号中的一个或多个(例如,在一些实施例中,可以使用例如Shamir的秘密共享方案,将WK、密钥ID和版本号分配到首标)。客户机1302然后可以经由消息1306将这些首标发送至客户机1304。客户机1304可以从接收的首标重建WK、工作组密钥ID和WK版本号,并且将WK输入到它的密钥库中。在每个客户机将WK存储在它的相应密钥库中后,安全数据解析器通信会话(例如,分析数据集并恢复数据集)然后可以使用数据消息1308和1310执行。
实际上,在过程1300中所示的一个或多个步骤可以与其它步骤进行组合、以任何合适顺序执行、并行执行(例如,同时或基本同时执行)或者被去除。
为了将以上机制与内核级网络驱动器进行集成,在一些实施例中,提供认证服务器修改来分布会话密钥。在一些实施例中,还可以提供工作站修改以请求TGT和ST。如图14所示的过程1400示出了示例性消息序列。例如,通常在内核空间1404中不能够执行Kerberos功能和与KDC1406的通信。代替地,网络驱动器可以对用户空间1402进行回调(call back)以执行Kerberos密钥交换,然后向下传回网络驱动器使用的任何数据(或者发送至原始目的地)。例如,在客户机1401希望与客户机1419进行通信后,可以产生消息1408并且将其从用户空间1402传送至内核空间1404中的网络驱动器。网络驱动器可以确定是否已经存在与期望的目的地IP地址(或者其它网络标识符)的安全数据解析器会话,如果存在,则可以使用该通道。如果没有现存的会话,则网络驱动器可以使用消息1410将IP地址(或者其它网络标识符)向上传递至用户级服务以获得ST。
该服务然后可以确定当前是否缓存了给定IP地址(或者其它网络标识符)的ST,如果没有,则用户级服务可以经由消息1412从KDC1406获取ST。接下来,用户级服务可以对客户机1401的ST中的嵌入WK进行解密并且经由消息1414将客户机1419的WK和ST传回内核空间1404中的网络驱动器。网络驱动器然后可以使用WK产生安全数据解析器首标并且经由消息1416将它们与客户机1419的ST一起发送至客户机1419。在客户机1419的网络驱动器处接收到首标和ST后,然后可经由消息1418将ST向上传递至它自己的用户级服务。该用户级服务可以解密ST并提取WK,然后经由消息1420将WK向下传回至网络驱动器。客户机1419然后可以使用WK恢复它接收的安全数据解析器首标并且完成通道。
实际上,在过程1400中所示的一个或多个步骤可以与其它步骤进行组合、以任何合适顺序执行、并行执行(例如,同时或基本同时执行)或者被去除。
图15示出了例示性网络拓扑1500。认证机构(CA)1502可以登记网络或域中的每个工作组机构(WA)。尽管在图15的例子中示出了三个WA(即,WA1504、WA1506和WA1508),但是在实际实现方式中,在一个网络或域中可以存在多于或少于三个的WA。CA1502通过为每个WA发布其对应工作组的WA证书,可以登记WA1504、WA1506和WA1508中的每个。这些证书可由CA1502进行数字签名以防止篡改。
在由CA1602登记后,WA1504、WA1506和WA1508可以开始将客户机(例如,用户、机器和服务)登记到它们的对应工作组中。例如,在一些实施例中,登记可以至少部分基于先前存在的活动目录(或者其它LDAP)成员资格语义。可以对登记的客户机发布由它们的对应WA签名的证书以及由WA、CA或这二者的证书。
图16示出了例示性连接建立1600。发起方1604可以首先通过与WA1602执行密钥更新1608而确保它正在使用最新WK。发起方1604可以向WA1602提供一现时并且证实它拥有有效证书。WA1602然后可以提供包括发起方的现时的加密并签名的WK。在一些实施例中,使用具有RSA-PSS或ECDSA签名的RSA PKCS#1v2执行加密。在其它实施例中,在预共享的对称密钥下使用AES-GCM认证的加密。
发起方1604然后用请求消息1610使用最新WK发起与接收方1606的连接。在接收到连接请求后,接收方1606可以确保它具有最新WK。按照与由发起方1604执行的相同的加密认证的防重放方式执行密钥更新1612。如果接收方1606属于超过一个的工作组,则接收方1606至少部分基于在请求消息1610中提供的工作组密钥ID选择适当的WA。如果发起方1604和接收方1606从WA1602取得相同的WK,则接收方1606可以向发起方1604发送成功连接消息1614。
在连接建立1600中所示的密钥更新步骤之一或二者在与另一个工作组客户机进行初始连接时执行,在到达工作组密钥刷新警报时间后定期地执行,或者按照任何其它合适时间表定期地执行。在一些实施例中,如下文更加详细地描述的,在建立每个新通信会话之前自动地执行密钥更新。工作组密钥的系统或用户控制TTL以及刷新警报可以提供定制级别的可更新性。例如,这在已撤销了一客户机的通信权并且希望可立即撤销性后是有利的。
使用这种方案还可以减小或者甚至完全消除对证书撤销列表(CRL)的需要。可以通过认证或LDAP服务器保持工作组成员资格。在一些实施例中,还使用在线证书状态协议(OCSP)来支持WA撤销。例如,OSCP应答方可以确定WA的证书的状态而不需要检查由CA公布的CRL。
实际上,在过程1700中所示的一个或多个步骤可以与其它步骤进行组合、以任何合适顺序执行、并行执行(例如,同时或基本同时执行)或者被去除。
图17到图20示出了支持本发明的安全工作组密钥管理和分布的例示性过程。图17示出了用于加入新工作组的例示性过程1700。在步骤1702中,客户机n可以表示希望加入工作组。在步骤1704中,WA可以为该客户机产生秘密密钥En。在一些实施例中,En可以是用于对称密码的密钥。在其它实施例中,可以使用采用非对称密码的公钥加密方案并且En可以是用于非对称密码的密钥(例如,私钥)。例如,可以使用Naor、Naor和Lotspeich子集覆盖广播加密方案,替代下述的对称方案。该公钥加密算法可以建立在任何其它的安全公钥加密方案之上。
在一些实施例中,由WA集中执行使用公钥方案的密钥产生。如果M是最大工作组大小,则WA可以产生2M-1个不同的公钥/私钥对。如果存在跨度(span)为M的二叉树(每个密钥对与树中的一个内部节点关联),则对于工作组中的每个装置或客户机,可以选择树中的第i叶子并且可以向装置或客户机i提供与第i叶子上至树的根关联的每个密钥对。于是,装置或客户机的密钥材料的总大小会等于log M+1。在其它实施例中可以采用使用公钥或秘密密钥方案的其它密钥产生方案。
在步骤1706中,WA可以存储客户机n的身份、客户机的秘密密钥En和授权的工作组密钥ID的列表之中的一个或多个。在步骤1708中,客户机n可以存储它的秘密密钥En。例如,客户机可以在本地将它的秘密密钥存储在密钥库中。在步骤1710中,客户机n还可以存储工作组密钥ID(例如,公开知识和/或串标识符)并且将工作组密钥刷新警报设置为0(即,立即)以及将密钥版本设置为0。
一个客户机可以属于一个或多个工作组。每个工作组(以及由此该工作组的当前WK)可以与唯一工作组标识符关联。唯一工作组标识符和关联的工作组密钥ID可以帮助客户机和WA确定客户机当前属于哪个或哪些工作组以及确定使用哪个工作组密钥来建立与也属于一个或多个工作组的另一个客户机的通信会话。
实际上,在过程1700中所示的一个或多个步骤可以与其它步骤进行组合、以任何合适顺序执行、并行执行(例如,同时或基本同时执行)或者被去除。
图18A、18B和18C示出了发起两个客户机之间的连接的例示性过程1800。在步骤1802中,客户机1可以发起与客户机2的通信会话。例如,客户机1可以向客户机2发送它的身份(例如,网络地址或用户名)并且请求与客户机2的通信会话。在步骤1804中,客户机1可以检查它的工作组密钥刷新警报时间。在步骤1804中,客户机1还可以验证与客户机1的WK关联的任何生存时间(TTL)值是否届满。例如,为了确定客户机1的WK是否届满,客户机1可以将与客户机1的WK关联的TTL值与当前时间或WK时间戳进行比较。WK时间戳可以指示WK何时被产生或传送至客户机1。在步骤1806中,如果刷新警报时间大于当前时间(或者WK时间戳),则例示性过程1800可以在图18B中继续。如果在步骤1806中刷新警报时间不大于当前时间(或者WK时间戳),则在步骤1808中,客户机1可以用安全数据解析器的产生的首标联系客户机2。这些首标例如可以包括WK和WK版本号。在步骤1810中,客户机2可以读取工作组密钥ID。如果在步骤1812中工作组密钥ID对于这个工作组(或者客户机2当前所属于的工作组)无效,则在步骤1814中客户机2可以向主调应用报告该错误。在一些实施例中,主调应用可以确定对发出的错误的响应。如果在步骤1812中工作组密钥ID对于这个工作组(或者客户机2当前所属于的工作组)有效,则例示性过程1800可以在图18C中继续。
图18B继续示出在步骤1806中确定刷新警报时间大于当前时间(或者WK时间戳)之后的例示性过程1800。在一些实施例,这可以指示陈旧WK。在一些实施例中,为了使客户机1继续,它必须联系WA并且刷新它的WK。在步骤1816中,客户机1可以产生现时N1。在步骤1816中,客户机1还可以向WA发送消息。在一些实施例中,该消息可以如下被格式化:{Client1||E1{UP-TO-DATE?||N1||工作组密钥ID||客户机工作组密钥版本}},其中,Client1是客户机1的身份,E1是至少部分基于客户机1的秘密密钥的密码函数,UP-TO-DATE?是消息类型。
在步骤1818中,WA可以查找客户机1并且访问E1、客户机1的秘密密钥。如上所述,WA可以将每个工作组成员的秘密密钥存储在密钥库、密钥仓库或数据库中。在步骤1818中,WA还可以对在步骤1816中由客户机1发送的消息进行解密。在步骤1820中,WA可以通过确认接收的工作组密钥ID是否针对这个客户机进行了授权,来确定客户机1是否被授权。WA还可以检查以查看是否存在较新版本的WK并且计算到WK届满还有多久(例如,可以计算WK的“生存时间”或TTL值)。如果在步骤1820中WA确定针对这个工作组没有发现该客户机或者该客户机没有被授权,则在步骤1822中WA可以发回未授权消息。否则,在步骤1824中,WA可以发回用客户机1的秘密密钥进行加密的消息。在一些实施例中该消息可以被如下格式化:E1{UP-TO-DATE?||N1||工作组密钥ID||当前工作组密钥版本||TTL}。
在步骤1826中,客户机1可以解密该消息并且将WK版本与当前WK版本进行比较。如果客户机1的WK版本早于当前WK版本,则在步骤1830中客户机1可以更新它的WK。在下面参照图20描述客户机可用来更新它的WK的例示性过程。如果客户机1的WK版本不早于当前WK版本(例如,它是当前版本),则在步骤1828中客户机1可以将它的WK刷新警报更新为当前时间加上由WA计算的TTL。
现在参照图18C,如果工作组密钥ID对于特定工作组有效,则在步骤1832中客户机2可以确定客户机1的WK的版本号是否小于客户机2的当前版本号。如果小于,则在步骤1834中客户机2可以向主调应用报告错误。在一些实施例中,主调应用可以确定对发出的错误的响应(例如,主调应用可以自动执行密钥更新以获得较新版本的WK并且重试连接)。如果在步骤1832中客户机2确定客户机1的WK版本号不大于客户机2的版本,则在步骤1836中客户机2可以确定当前时间是否大于WK刷新警报时间。如果当前时间大于刷新警报时间,则客户机2可以使用UP-TO-DATE?(上述)和/或KEY-REQUEST(在下面关于图20描述)消息类型来联系WA,以验证当前工作组密钥的新鲜度,请求新工作组密钥,或进行这二者。应该注意:UP-TO-DATE?消息类型对于检查工作组密钥是否新鲜而言是最佳的。然而,为了减小延时,可以使用KEY-REQUEST消息类型,而不需要在前的UP-TO-DATE?消息类型。在其它实施例中,WA通过将TTL设置为0可以强迫客户机在每次进行连接尝试时检查密钥的新鲜度。
在步骤1838中更新它的密钥后(或者如果在步骤1836中当前时间不大于刷新警报时间),在步骤1840中客户机2可以确定客户机1的WK的版本号是否不等于客户机2的现在最新版本号。如果这两个版本号不同,则在步骤1842中客户机2可以向主调应用报告错误。如果工作组密钥ID有效并且所述版本号相同,则在步骤1844中客户机2可以向主调应用报告成功连接尝试。
实际上,在过程1800中所示的一个或多个步骤可以与其它步骤进行组合、以任何合适顺序执行、并行执行(例如,同时或基本同时执行)或者被去除。
图19示出了撤销工作组客户机的通信权的例示性过程1900。如上所述,传统的安全工作组通信协议会要求使用CRL并且可能不支持工作组安全性机制的可立即撤销性和可更新性。然而,通过定期地(或者在每次连接尝试时)更新安全性机制,本发明可以支持被撤销客户机的立即发现。例如,为了撤销工作组客户机,WA可以开始向所有未撤销的用户发送新WK。通过使用改变了版本的WK,取决于在接收客户机处有效的安全策略,使用陈旧WK的连接会被拒绝。
在步骤1902中可以接收工作组客户机撤销请求。例如,从工作组中去除一个或多个用户(或者撤销它们的通信权)。如上所述,在一些实施例中,可以通过LDAP(例如,Active Directory)服务器保持工作组成员资格。某些用户(例如,工作组管理员)可以被授权使用工作组管理接口从工作组中去除特定用户(或者用户组)、机器(例如,计算机和打印机)、服务(例如,web服务和打印/文件服务)、或者它们的任何组合。在步骤1904中,管理工作组成员资格的服务器可以确定撤销请求是否有效。有效的撤销请求可通过授权的用户或其它实体(例如,WA或CA)进行认证(例如,签名)并且指示要撤销的有效工作组用户、机器或服务。如果撤销请求无效,则在步骤1906中可将错误返回给主调应用并且忽视撤销请求。
然而,如果在步骤1904中撤销请求有效,则可以在步骤1908中从工作组客户机的列表去除撤销的工作组密钥ID。例如,WA可以从存储在WA或CA处的关系数据库中的工作组密钥ID表中去除客户机的工作组密钥ID。在步骤1910中,WA可以确定是否应该触发密钥更新。在一些实施例中,在步骤1910中,响应于每个有效撤销请求,自动触发密钥更新。在其它实施例中,可以仅仅在预定数目的有效撤销请求(由工作组安全策略定义)、预定数目的当前待撤销的客户机后触发密钥更新,在自最后一次密钥更新起预定时间长度后定期地触发密钥更新,由WA或授权的用户按需要触发密钥更新,在一个或多个用户离开工作组后自动地触发密钥更新,或者在上述时间的任何组合触发密钥更新。触发密钥更新可以隐式地拒绝对所有被撤销用户的访问,这是因为被撤销用户无法访问新WK。通过定制WK版本号、由WA计算的TTL值和WK刷新警报时间,可以控制、限制或完全禁止使用陈旧WK的通信。
如果在步骤1910中没有触发密钥更新,则例示性过程1900可以返回到步骤1902以等待另一个撤销请求。如果在步骤1910中触发了密钥更新,则在步骤1912中WA可以增大它的当前WK版本号并且产生新的WK。为了产生新的WK,在一些实施例中,WA可以使用它的主密钥产生密钥(MKGK)通过安全的密钥派生函数(KDF)评估工作组名称和当前更新号。在其它实施例中可以使用用于产生新的WK的其它方案。然后,在步骤1914中,可由WA加密新产生的WK并且可产生签名的密钥更新消息。在一些实施例中,在步骤1914中产生的密钥更新消息可以包括下面字段中的一些或全部:(1)WA标识符和证书字段,它可以包括对更新进行授权的WA的识别信息,包括它的CA签名的证书;(2)工作组标识符字段,它可以包括指定应用这个更新的工作组的名称的唯一标识符;(3)顺序标识符字段,它可以包括指示更新的次数的顺序计数器;(4)更新时段字段,它可以包括密钥材料将有效的时段的指示;(5)更新有效载荷字段,它可以包括包含更新的密钥材料的密文;(6)辅助数据字段,它可以包括客户机要求的附加信息(例如,密钥策略和可找到其它更新的位置);(7)重新配钥标记,其当被设置时可以指示客户机重新产生它的秘密密钥并且联系WA进行重新证明;(8)签名字段,它可以包括使用WA的签名密钥在前面的字段上计算的数字签名。
如果使用公钥方案,则通过对于在上文中关于图17描述的二叉树中的每个叶子根据该位置处的装置是否已经被撤销而进行标记,可以对所有未撤销的用户加密密钥更新消息。然后,作为与未撤销的装置关联的叶子的父辈(或共存)的所有节点可以被识别(而不是撤销的那些)。例如,完整的树的根是所有叶子的父辈;由此,当没有装置被撤销时这个节点就足够了。接下来,可以在与这些节点关联的每个密钥下对消息进行加密。结果可以包括识别这些节点的列表以及生成的密文的列表。当使用这个加密方案时,每个未撤销的用户可以拥有用于对消息进行加密的至少一个密钥对。它可以识别这个密钥对,对适当密文进行解密,以及输出消息。
在产生了密钥更新消息后,在步骤1916中可经由半信任通道(例如,网站)将其公开给所有未撤销的用户。还可以支持无束缚(以及半束缚)操作。当客户机或装置准备离线时,WA可以在有限数目的未来时段内对客户机或装置预先提供密钥更新。另外或代替地,对于具有一些网络访问的装置,密钥撤销和密钥更新消息可以公示到非常容易到达的位置(例如,TLS保护的公共网站)。
实际上,在过程1900中所示的一个或多个步骤可以与其它步骤进行组合、以任何合适顺序执行、并行执行(例如,同时或基本同时执行)或者被去除。
图20示出了用于请求WK更新的例示性过程2000。在步骤2002中,客户机可以向WA发送用客户机的秘密密钥(在使用非对称加密方案的情况下为私钥)进行加密的密钥请求消息。例如,在步骤2002中,客户机可以向WA发送下面格式的消息:{Client X||EX{KEY-REQUEST||N2||工作组密钥ID||请求的密钥版本}},其中,X是请求客户机的标识,EX是客户机X的秘密密钥(在使用非对称加密方案的情况下为私钥),KEY-REQUEST表示密钥请求消息类型,N2是由请求客户机产生的现时。在步骤2004中,WA可以接收加密的消息并且查找客户机以获得客户机的秘密加密密钥EX。在步骤2004中,WA还可以对密钥请求消息进行解密,在步骤2006中验证工作组密钥ID对于这个客户机是否有效。如果工作组密钥ID对于这个客户机无效,则在步骤2008中WA可以发回未授权消息,并且例示性过程2000可以返回到步骤2002。然而,如果工作组密钥ID对于这个客户机有效,则WA可以访问最新(即,最近)版本的密钥(它可以比请求的版本更新)。然后,在步骤2012中,WA可以创建对密钥请求消息的响应并且使用客户机的秘密密钥EX对该响应进行加密。在一些实施例中,WA对密钥请求消息的响应可以采取如下格式:EX{KEY-REQUEST||N2||工作组密钥ID||当前密钥版本||TTL||密钥}。在从WA接收到响应后,在步骤2014中客户机可以更新它的WK。最后,在步骤2016中,客户机可以将它的WK刷新警报时间更新为当前时间加上接收的TTL值。
实际上,在过程2000中所示的一个或多个步骤可以与其它步骤进行组合、以任何合适顺序执行、并行执行(例如,同时或基本同时执行)或者被去除。
已经开发了以相当高效的方式支持密钥分布的许多密钥分布系统和协议(例如,Kerberos协议)。然而,这些现有系统和协议无法满足用于与本发明的安全数据解析器结合使用以保护移动中数据的安全工作组密钥分布和管理的要求。这些要求中的一些例如可以包括:(1)无法获得标识用于连接,即,当两个客户机之一或二者没有另一方的完全身份时,系统应该支持这两个客户机之间的通信。该要求的直接结果可能是排除了每个对等体(per-peer)会话密钥;(2)撤消,即,系统应该能够撤销任何客户机的通信权。完成撤销所需的时间应该可由用户配置。在一些实施例中,撤销可以仅仅影响新连接而非现有连接;(3)参数化网络聊天,即,这个系统应该支持能够确认和分布密钥的中央机构。然而,与这个服务器的通信可以使分布的密钥仅仅在一些用户可配置或预定的时间段内可用或有效;(4)最小参与者状态,即,客户机可以仅需要存储进行通信的少量信息。特别地,客户机存储的状态不应该包括每个对等体信息。使用本文所述的系统和方法可以满足所有的以上要求。
在一些实施例中,下面的客户机函数可用于在工作组客户机中支持本发明的过程和系统。可以使用软件、固件、硬件(例如,嵌入式系统)或者它们的任何组合来实现下面所述的函数。除了“helper”参数(例如,缓冲器的长度字段)以外,可以指示下面的函数中的参数。另外,仅仅提及了一些显著的错误代码。在其它实施例中,可以使用另外的错误代码、参数或二者。
1.函数wa_init。这个函数可以返回类型ErrorCode,以clientId为输入,输出类型ctx。这个函数可用于初始化客户机侧密钥分布服务。该ctx变量可以被初始化并且保持关于当前使用的所有密钥、它们的版本以及其它密钥特定信息的状态。这个函数还可以建立用于处理异步通信的事件线程。clientId应该是给予WA的相同标识符。
2.函数wa_newKeyId。这个函数可以返回类型ErrorCode,以类型ctx、wgKeyId、waAddress、privateKey作为输入,没有输出。这个函数可用于向ctx上下文添加工作组密钥ID以进行管理。waAddress可以是对这个特定ID负责的WA的网络地址。privateKey可用于对与WA的通信进行加密并且应该与提供给WA的密钥相同。
3.函数wa_teardown。这个函数可以返回类型ErrorCode,以类型ctx作为输入,没有输出。这个函数可用于卸下由该服务管理的所有状态并且释放上下文ctx的内存。这个函数还可以取消任何未决请求(例如,票证)。
4.函数wa_keyUpToDate_async。这个函数可以返回类型ErrorCode,以类型ctx、wgKeyId、callback作为输入,输出类型Ticket t。这个函数可用于检查由wgKeyId识别的工作组密钥是否是最新的。在一些实施例中,由于在内部由管理上下文处理版本号,可能不需要指定版本号。这个调用可以是异步的并且可以立即返回。当事件循环从服务器接收到响应时,事件循环可以调用回调(callback)函数。于是可以向这个回调函数传递错误码以及状态码,尽管在没有错误的情况下状态码可以是有意义的。如果客户机不再被授权与这个工作组通信,则回调可以接收ERROR_WORKGROUP_AUTHORIZATION。如果没有错误并且密钥仍然有效,则它可以接收STATUS_KEY_OK。否则,它可以接收STATUS_KEY_STALE。当这个函数结束时,票证t可用作等待请求监听器的标识符。
5.函数wa_keyRequest_async。这个函数可以返回类型ErrorCode,以类型ctx、wgKeyId、callback作为输入,返回类型Ticket t。这个函数可用于针对这个密钥标识符刷新密钥材料和版本。对这个函数的调用可以是异步的并且可以立即返回。当事件循环接收到响应时,事件循环可以调用回调函数。可以向这个回调函数传递指示密钥更新是否成功的错误码。如果不再授权客户机与这个工作组进行通信,则回调可以接收ERROR_WORKGROUP_AUTHORIZATION。当这个函数结束时,票证t可用作等待请求监听器的标识符。
6.函数wa_keyValidate_async。这个函数可以返回类型ErrorCode,以ctx、wgKeyId、wgKeyIDVersion、callback作为输入,并且输出类型Ticket t。这个函数可用于确认从另一方接收到的密钥。作为操作的一部分,这个函数可以更新它自身的密钥(根据wa_keyRequest_async)。这个函数也可以是异步的并且可以立即返回。当事件循环接收到响应时,事件循环可以调用回调函数。可以向这个回调函数传递指示密钥检查是否成功的错误码和指示密钥的有效性的状态码。三个可能的状态码例如可以包括STATUS_KEY_OK、STATUS_KEY_STALE和STATUS_KEY_INVALID。如果工作组密钥不是当前由上下文ctx管理的工作组密钥,则这个函数会返回ERROR_UNKNOWN_KEY。作为优化,这个错误码还可以传递给回调函数。
7.函数wa_currentVersion。这个函数可以返回类型ErrorCode,以ctx和wgKeyId作为输入,输出版本。这个函数可用于针对给定的工作组密钥ID返回由上下文ctx管理的当前版本。
8.函数wa_nextRefresh。这个函数可以返回类型ErrorCode,以ctx和wgKeyId作为输入,输出timeLeft。这个函数可用于返回在应该刷新密钥之前剩余的秒数。如果下一更新时间已届满,这个函数会返回0。
9.函数wa_status。这个函数可以返回类型、以Ticket t作为输入,输出类型status。这个函数例如可用于对于给定的票证提供状态STATUS_COMPLETE或STATUS_WAITING。如果票证是未知的,则这个函数可以返回ERROR_UNKNOWN_TICKET。
10.函数wa_timeWaiting。这个函数可以返回类型ErrorCode,以Ticket t作为输入,输出秒。这个函数可用于提供请求处于未决状态的秒数。
11.函数wa_cancel。这个函数可以返回类型ErrorCode,以Tickett作为输入,没有输出。这个函数可用于取消未决的请求。
以上函数仅仅是例示性的。根据本发明可以在工作组客户机处定义许多其它函数以用于分布和管理工作组密钥。此外,尽管在上文描述了安全数据解析器和工作组管理模块的一些应用,但是应该清楚地理解,本发明可以与任何网络应用进行集成以增加安全性、容错性、匿名性或者它们的任何合适组合。
此外,鉴于这里的公开,其它组合、添加、替代和修改对于熟练技术人员是显而易见的。例如,尽管附图中所示的许多过程涉及客户机的秘密密钥和/或对称密钥密码术,但是熟练技术人员将认识到,公钥/私钥对也可以用于对应的非对称密码方案中。