具体实施方式
图1描述了根据本发明一个实施例的提供网络化加密服务的计算机服务器环境10。计算机服务器环境10包括多个客户机12、应用程序服务器14、以及加密密钥服务器16,它们都经由计算机网络18双向连接。计算机网络18可以采用任何合适的网络形式,例如因特网或者局域网。双向连接到应用程序服务器14的是一个网络数据库20。应用程序服务器14经由计算机网络18提供请求的服务给客户机12。客户机12请求的服务可以具体地包括加密服务,或者可以满足加密服务的需求。例如,客户机请求的服务可以要求在网络数据库20上存储敏感数据,或者从网络数据库20中检索加密的数据。应用程序服务器14可利用加密密钥服务器16来执行加密服务,这样,从而从应用程序服务器14中卸载了加密服务的计算强度。
这里所提到的加密密钥服务器也被认为是一个网络化连接加密设备。下面将详细描述加密服务的原理以及实现这些功能性的各种机制。
图2示意性地描述了根据本发明一个实施例的用于应用程序服务器52和加密密钥服务器54的软件结构体系50。图2的软件结构体系并不局限于应用程序服务器,并且可以根据不同的实施而变化。任何数目的计算机设备以及系统都可以作为加密密钥服务器54的客户机。在优选实施例中,应用程序服务器52和加密密钥服务器54经由安全网络 通信信道56双向连接。安全网络通信信道56可以通过例如安全通信协议SSL或TLS的任何合适的安全通信技术来实施。可替换地,安全信道可以经由直接物理链路或者通过任何本领域技术人员所熟知的手段来实现。基于软件的应用程序服务器52仅仅是需要加密密钥服务器的加密服务的客户机的一个例子。
图2的应用程序服务器52包括多个应用程序60、加密应用程序接口(API)62、以及安全网络接口引擎64。这些应用程序60是在应用程序服务器52上所例示的并且执行的软件程序。这些应用程序60可以为应用程序服务器52的本地用户提供服务,并且可以经由网络连接为远程客户提供网络服务。
加密API62提供了一套标准,通过该标准,多个应用程序60可以调用多个加密服务。根据本发明,所述多个加密服务中的至少一个由加密密钥服务器54远程地执行。为了实现网络化加密密钥服务,加密API62对远程加密服务的请求作出响应,以利用安全网络接口引擎64来请求加密服务。
加密API62优选地是一个标准化的软件加密API,应用程序开发者可以很容易地将其集成到他们的软件中。这样,加密API62可采用与基本计算环境相关的特定形式。基本计算环境的几个例子包括Java、Microsoft、PKCS#11/Cryptoki Provider、Oracle9i等,下面将立即更详细地描述其中的一些环境。
在Java计算环境中,加密API62可提供(expose to)给应用程序作为Java密码术扩展(JCE)。JEC可以由各种源使用或者调用,这些源包括:Java服务器页面(JSP)、Java小服务程序、或者企业级JavaBeans组件(EJB)。能够使用JCE的Java应用程序还可以由动态服务器主页(ASP)调用。在本发明的其它一些实施例中,应用程序60可以直接访问加密密钥服务器54,而不需要加密API62的帮助。
在例如微软的.NET的ASP计算环境中,可以经由加密服务提供商 (CSP)利用VBScript来提供加密功能,其中,Vbscript利用微软加密API(MS-CAPI)来与CSP进行通信。在这种情况中,CSP或者加密API被实施为动态链接库,该动态链接库给应用程序60提供了多个加密操作。加密功能和加密API的上述说明是在网络应用程序服务器的环境中进行的。然而,加密功能和加密API同样适用于基于非网络的应用程序服务器,例如使用JCE的基于非网络的Java应用程序和调用MS-CAPI的基于非网络的Windows应用程序等等。
安全网络接口引擎64被操作用来建立与远程加密密钥服务器54的安全网络通信信道56。相似地,远程加密密钥服务器54被操作用来建立与安全网络接口引擎64的安全网络通信信道56。在应用程序服务器52与远程加密密钥服务器54之间建立了安全网络通信信道56之后,操作安全网络接口引擎,例如来打包(marshal)并传输加密服务的安全请求到远程加密密钥服务器54,接收并解包(unmarshal)对加密服务的请求的安全响应,并且将该响应转发回到加密API62,而加密API62提供对请求的应用程序60的响应。
可以想到的是,安全网络接口引擎64可以提供安全网络服务给应用程序服务器,以用于提供应用程序60与应用程序服务器52的客户机之间的安全通信信道。在图2中,加密API62和安全网络接口引擎64呈现为两种不同的处理,每个都例示在应用程序服务器52中。这允许对这些处理的每一个分别进行修改。然而,本发明的另一个实施例公开了将加密API62和安全网络接口引擎64的功能设置为单一处理,或者包含在应用程序60中。
更进一步参考图2,加密密钥服务器54包括加密服务引擎70、安全网络接口引擎72、以及私人密钥引擎74。加密密钥服务器54适用于经由安全网络通信信道56提供加密服务给连接到所述加密密钥服务器的应用程序服务器52。操作安全网络接口引擎72,来建立与应用程序服务器52的安全网络通信信道56,相似地,操作应用程序服务器52 来建立与安全网络接口引擎72的安全网络通信信道56。另外,操作安全网络接口引擎72,来解包从应用程序服务器52接收的安全的加密服务请求,以及打包并传输安全加密服务响应到应用程序服务器52。
在加密密钥服务器54上执行的加密服务引擎70与安全网络接口引擎72双向连接。操作加密服务引擎70,以经由安全网络接口引擎72来提供由应用程序服务器52所请求的加密服务。加密服务可以包括:1)散列操作,以及2)签名以及验证操作,例如RSA和DSA。
提供给应用程序60的加密功能可以包括远程客户机最可能期望的加密功能。这些加密功能必须在应用程序服务器52上执行或者更优选地在加密密钥服务器54上执行,以从应用程序服务器52卸载执行加密服务的负担。这样,优选地,加密服务引擎70能够执行没有设置在应用程序服务器52上的任何提供的加密服务,典型的提供功能包括但不局限于以下功能,例如加密和解密(例如,DES、3DES、AES、RSA、DSA、ECC等)、签名和验证(例如,RSA、DSA等)、以及散列法和验证(例如:SHA-1、HMAC等)。一般地,加密和解密功能包括:
对称块密码,
通用密码模式,
序列密码模式,
公共密钥密码术,
用于公共密钥的填充(padding)方案,
密钥协议方案,
椭圆曲线密码术,
单向散列函数,
消息鉴别编码,
基于散列函数的密码构造,
伪随机数产生器,
基于密码的密钥派生函数,
沙米尔的秘密共享方案和拉宾的信息分散算法(IDA),
具有gzip(RFC 1952)和zlib(RFC 1950)格式支持的DEFLATE(RFC 1951)压缩/解压缩,
快速多精度整数(大数)和多项式操作,
有限域算术,包括GF(p)和GF(2n),以及
质数产生和验证。
可以理解的是,私人密钥引擎74提供执行加密操作所需的私人密钥给加密服务引擎70。可以通过本领域公知的各种机制以及本发明所考虑的几种方法来生成和存储这些私人密钥。下面将参照图3来描述用于产生并且处理私人密钥的一个优选实施例。
在图2中,加密服务引擎70和安全网络接口引擎72呈现为两种不同的处理,每个都例示在加密服务引擎70上。这允许对这些处理的每一个分别进行修改。然而,本发明的另一个实施例公开了将加密服务引擎70和安全网络接口引擎72的功能设置为单一处理。
图3A描述了根据本发明一个实施例的一个硬件结构体系100,其适用于例如图2所示的加密密钥服务器54的网络化加密密钥服务器。硬件结构体系100包括中央处理单元(CPU)104、例如硬盘的永久存储设备106、例如随机存取内存(RAM)的临时存储设备108、网络I/O设备110、例如加密加速器卡的加密设备112、硬件安全模块(HSM)114、以及智能卡接口116、它们经由数据总线102双向相连。其它附加组件也可以作为硬件结构体系100的一部分。
根据图3A的一个实施例,私人密钥120被装入HSM 114中并且以加密格式存储。在优选实施例中,HSM 114是一个防窜改设备。利用只有一小组预定的加密密钥服务器知道的一组密钥来加密私人密钥120。这些组密钥通过智能卡来保护。当在该预定的加密服务器组中 的其中一个上执行备份操作时,创建原始加密密钥的加密形式,作为备份文件。只有作为该预定组设备中的一部分的加密服务器才能够使用一个独立的加密密钥来对加密的密钥进行解密。
在一个实施例中,加密服务器还支持组密钥的n中取k秘密共享,用于提高安全性。其意味着:加密服务器需要智能卡来进行私人密钥的备份与恢复。例如,组密钥信息分布在一组五个智能卡上(n)上,优选地,可以进行如下设定,即,使得只有在插入三个智能卡(k)到智能卡读卡器116之后才可以访问组数据。任何利用少于三个智能卡来对数据进行访问的企图都会失败。使用n中取k方案确保了数据的安全性;如果单个卡被盗窃,盗窃者也不能访问存储在HSM 114上的配置数据,这是因为盗窃者没有足够的卡来满足上述n中取k方案。根据一些实施例,图3B描述了用于备份和恢复相对于一个加密服务器的私人密钥的操作150,其中,该加密服务器支持组密钥的n中取k秘密共享。在步骤152,接收用于备份与恢复私人密钥的请求。在步骤154,响应于备份的请求,确定n个智能卡中的至少k个是否已经插入到与做出备份请求的加密服务器相关联的一个智能卡接口设备中。如果确定n个智能卡中的至少k个没有被插入,则在步骤156,拒绝备份与恢复的请求。如果确定n个智能卡中的至少k个已经插入,则在步骤158,同意备份与恢复的请求。
参考图4,将描述根据本发明一个实施例的一个计算机实现的方法200,通过该方法,例如加密密钥服务器16或54的网络化加密密钥服务器可以提供加密服务。在初始步骤202,在网络化密钥服务器上建立一套私人密钥。这些私人密钥可以根据任何合适的机制来创建并且维持。在优选实施例中,这些私人密钥被存储在一个防窜改硬件设备中并且不是分布在网络上,而是通过例如参考图3的HSM 114的上述处理的处理来管理。对于已经在网络化密钥服务器上建了一套私人密钥的给定应用程序服务器,随后的加密服务的请求不包括步骤202。
在下一个初始步骤204,在应用程序服务器和加密密钥服务器之间建立了一个安全网络通信信道。在一些实施例中,在客户机的任何特定加密服务的请求之前,在应用程序服务器和密钥服务器之间建立连接池。可以无限期地维持连接池,或者可以由于没有激活而断开连接池。建立安全连接的是一个很重要的处理,因此一旦建立安全连接,则维持安全连接就是有效的。可以使用SSL和TLS、或者本领域中所共知的任何合适方法来建立安全信道。在很多情况下,可以使用具有服务器和客户机凭证的HTTP。另外,在步骤204,验证(例如鉴别)请求实体的身份。如果合适的话,这包括:应用程序服务器身份的验证、在应用程序服务器上执行的应用程序身份的验证、以及应用程序服务器的客户机请求服务的识别。如果请求实体的鉴别失败,那么拒绝该加密服务的请求。另外,在一些实施例中,当请求实体的鉴别失败时,处理控制转到步骤216,执行下面解释的与失败的服务请求相关的内务处理功能。
一旦在步骤202已经建立了私人密钥,而且在步骤204已经建立了安全网络通信信道,并且鉴别处理已经完成,加密密钥服务器便可以被用来提供加密服务。因此,在步骤206,密钥服务器经由安全信道接收一个加密服务的请求。在接收加密服务请求时,密钥服务器将来自加密的网络格式的请求解开。正如以上参考图2所述,在一些实施例中,这可以通过安全网络接口引擎来执行。在步骤208,密钥服务器将执行对加密服务请求的授权分析。步骤208的授权分析确定请求的服务是否应该被提供给请求的客户机。下面参考图4,将更详细地描述步骤208的一个实施例。
当步骤208确定可以执行请求时,处理控制从步骤208转到执行请求的加密服务的步骤210。例如,应用程序服务器可以请求特定的数据被加密或者解密。在步骤212,加密密钥服务器经由安全信道响应应用程序服务器。这包括打包数据为安全格式,用于通过网络来传输。 在下一个步骤214,执行与授权的请求的满足相关的各种内务处理功能。在一些实施例中,这些包括维持与加密请求(时间、客户机身份、请求的服务、满意的完成等)相关的数据库。
当步骤208确定由于在步骤208的鉴别失败导致请求不可以被执行时,步骤216执行与失败的服务请求相关的内务处理功能。在一些实施例中,这包括维持一个与加密请求(时间、客户机身份、请求的服务等)相关的数据库。这个数据库可以用来估计是否受到攻击,或者确定系统中的错误。
下面转到图5,现在,将更详细地描述根据本发明一个方面的用于执行加密请求的授权分析的一个计算机实现的方法208。正如以上参照图4所述,当一个远程应用程序服务器请求加密密钥服务器执行应用程序服务器的特定加密功能时,则调用方法208。在第一步骤250中,确定给予应用程序服务器、应用程序以及客户机的授权特权。如果不能确定给予应用程序服务器、应用程序、以及客户机的授权特权,那么认为步骤250的授权测试失败。当步骤250的授权测试失败时,则在步骤252拒绝请求。当步骤250的授权测试成功时,则步骤254确定特定的请求是否在请求实体的权利内。例如,应用程序服务器上运行的某一个的应用程序可能不会被授权来解密某些数据,或者简单地可能不会被授权来解密不管任何数据,即使相同的应用程序可能被授权来解密数据。在任何情况下,当请求不在请求实体的权利内时,在步骤252拒绝请求。当请求在请求实体的权利内时,在步骤256同意请求,并且处理控制继续,以执行所请求的加密服务。
参照图6,现在将描述一个计算机实现的方法300,该方法用于使在应用程序服务器上例示的应用程序能够通过一个标准的加密API来访问远程以及本地的加密服务。步骤302和304是初始化步骤,使得加密服务对应用程序是可利用的。在步骤302,在应用服务器内集成一个标准的软件加密API。正如以上参照图2所详细地讨论的那样,加密 API可以根据应用程序服务器的特定计算环境(Java、Microsoft等)而设计。在步骤304,加密服务被用于提供给在应用程序服务器上例示的应用程序,以便服务请求可以在执行应用程序中作出。加密提供者允许程序员利用加密API可用的标准密码术来开发应用程序软件。
在步骤306,一个应用程序调用加密函数,并且加密API接收该服务请求。该请求被加密API处理,以确定该请求是应当传送到远程加密服务器还是在本地执行,或者应用程序服务器也可能在允许加密服务的请求传送之前在本地执行一些验证和授权。当请求被传输到远程加密服务器时,步骤308打包并且传输请求。在优选实施例中,安全网络接口引擎经由前面建立的安全网络传输信道来执行打包和传输。在步骤310,应用程序服务器接收并解包一个对加密服务请求的响应。在优选实施例中,安全网络接口引擎经由前面建立的安全网络传输信道来执行响应的接收和解包。该响应被提供给加密API,并且在步骤312,加密API以合适的格式提供响应给请求应用程序。
图7描述了根据本发明一些实施例的分布式加密服务计算环境400。计算环境400包括多个加密密钥服务器402、多个应用程序服务器404、以及多个客户机406,它们都经由例如因特网的广域网408双向相连。加密密钥服务器402和应用程序服务器404可以采用任何合适的形式。例如,以上参照图1到3所描述的实施例都是适用的。
考虑各种用于实现分布式加密服务计算环境400的操作的方法。例如,多个加密密钥服务器402都以独立的方式来进行操作,每个加密密钥服务器都以独立的方式来提供服务。可替换地,一个特定的加密密钥服务器402可以作为所有服务的管理器,根据预定的负载平衡方案,将所有请求从应用程序服务器404引导到其它加密密钥服务器402。
图8显示了一个其中网络安全装置提供网络化加密密钥服务的系统结构体系500的方框图。系统结构体系500包括多个客户机502、例 如因特网的广域网504、网络安全装置506、以及应用程序服务器508。除网络安全装置506外,通过参考图1到7的以上描述可以容易地理解图8中的所有其它元件。
网络安全装置506物理地位于应用程序服务器508和网络504之间。本领域技术人员都熟悉网络安全装置以及其一般操作。网络安全装置506可以提供的一些服务包括:客户机502与应用程序服务器508之间的安全传输、减少应用程序服务器上的负担并且改善对用户的响应时间的安全缓存、SSL和TLS的加速、透明的加密服务、客户机鉴别等等。根据图8的实施例,网络安全装置506还提供加密密钥服务给应用程序服务器508,网络安全装置506具有一个如上参照图2的加密密钥服务器54所述的软件结构体系。同样地,网络安全装置506具有一个如上参照图3的加密密钥服务器所述的硬件结构体系100。以上参照图4-6所描述的方法也可以很好地应用于网络安全装置506以及应用程序服务器508的操作。
图9是显示一个网络结构体系600的方框图,该网络结构体系600包括:多个客户机602、例如因特网的广域网604、透明加密装置606、多个应用程序服务器608、局域网610、至少一个加密密钥服务器612、两个或者更多网络数据库614、以及多个后端服务器616。正如在相关专利申请中所述的,透明加密装置606被构造用来检查所有经由网络604进入站点的请求,并且利用已经安装的私人密钥120的其中一个来加密敏感数据。透明加密装置606和加密密钥服务器612是共享组密钥的一个预定TE装置组的成员,并且装载了相同的私人密钥120。多个应用程序服务器608能够经由局域网610从加密密钥服务器612请求加密服务,正如后端服务器616一样。
为了示例性目的,假设客户机602以一个金融机构注册到因特网上。在这个例子中,应用程序服务器608是一个网络服务器,并且客户机602经由安全会话提供信用卡号码到网络604上的网络服务器 608。TE装置606检测到信用卡号码是敏感信息,并且利用安装的私人密钥120之一来加密该数据,使得网络服务器608不是没有阻碍的来管理该敏感信息。类似地,信用卡号码只能以加密的形式存储在网络数据库614中。后端服务器616需要访问客户信用卡号码,以检索帐户信息,并且向加密密钥服务器612提出一个请求,以解密信用卡号码。在这个例子中,后端服务器616被授权访问客户信用卡号码,并且因此加密密钥服务器612正如所请求的那样解密信用卡号码。
这里的附图和讨论提供了适合的计算环境的一个简单的、总的说明,在该计算环境中可以实现本发明的多个方面。尽管没有要求,但本发明的多个实施例以计算机可执行的指令的总的上下文来描述,例如,由通用计算机(例如:服务器或者个人计算机)所执行的程序。本领域技术人员应该理解,可以以其它计算机系统配置来实现本发明的各个方面,包括:因特网装置、手持设备、便携式计算机、蜂窝或者移动电话、多处理器系统、基于微处理器或者可编程的消费电子设备、机顶盒、网络个人计算机(PC)、微型计算机、大型主机等等。
本发明的若干方面可以以专用计算机或者数据处理器来实现,具体地编程、配置、或者构造专用计算机或者数据处理器以执行以下将详细说明的计算机可执行指令的一个或者多个。实际上,通常使用在此的术语“计算机”是指以上设备中的任何一个,以及任何数据处理器。另外,在这里通常使用的术语“处理器”是指任何逻辑处理单元,例如,一个或多个中央处理单元(CPU)、数字信号处理器(DSP)、专用集成电路(ASIC)等等。
在前面的说明中,参考多个根据实施而变化的特定细节描述了本发明的实施例。这样,申请人的发明的唯一并且绝对的指示是以特定形式的从本发明中产生的包括随后更改的一套权利要求,其中这些权利要求以特定形式产生。在此对包含在这些权利要求中的术语所阐述的任何表达定义应当指导在权利要求中所使用的这些术语的意义。因 此,在权利要求中没有明显地描述的限制、元件、性质、特征、优势以及属性不应当以任何形式限制该权利要求的范围。因此,说明书和附图都被认为是说明性的而不是限制性的。
在此引用的所有参考文件以及美国专利和申请都作为参考文件结合在此。如果需要,可以修改发明的多个方面,以采用在这里所描述的各种专利和申请的系统、功能以及概念来提供发明的其它实施例。根据这里的详细描述,可以对本发明做出这些或者其它改变。
虽然本发明的一些方面以以下的一些权利要求形式出现,但是发明人考虑到了以任何数量的权利要求形式的本发明的各个方面。例如,虽然,本发明的一个方面描述为在计算机可读介质中实施,但是类似地,其它方面也可以在计算机可读介质中实施。因此,发明人保留在提交申请之后添加附加权利要求的权利,以对于发明的其它方面要求附加权利要求的形式。