专利名称:保密任意通信业务的制作方法
技术领域:
本发明整体上涉及开放通信系统的保密信息,并更特别地涉及用于提供任意通信业务的鉴权、加密、和完整保护的方法和系统。
相关现有技术的描述开放通信系统需要对信息保密。这包括通信同位体之间的鉴权和数据的加密和完整保护。鉴权意味着提供一些装置来保证未授权用户不能操作所要求的实体或者所传送的信息。加密基本上意味着没有一个未授权的实体能够读出我们的消息,并且数据完整性保证了我们的消息不被改变、整个消息流来自相同的源、整个消息流流向相同的目的地。
对这类问题的解决方案来自密码研究。典型地一个加密算法是作为秘密的、或者应被保护的一个输入值和另一个输入秘密值的一个函数。秘密值经常被称为算法的一个密钥。现在使用众所周知的加密算法和安全措施的许多保密通信系统不是基于算法本身,而是基于一个密钥。只有来自对方当事人的真实密钥才被加密的假设被称为Kerkhoff假设。Kerkhoff假设对例如Internet等的开放通信系统来说是重要的,在这些系统中许多不同地点的、许多不同生产商的设备需要相互操作。如果如何处理数据的方法是公知的就很容易进行通信。因而,所有Internet通信加密技术都是基于Kerkhoff假设,即众所周知的基于密钥值的安全加密算法。
为了建立一个保密通信信道,必须有一些预定协议来描述通信同位体之间的消息交换。对一个通信系统保密的一个必要的步骤是提供鉴权密钥的交换。典型地,使用一个公共密钥算法来完成一个码交换,例如在Internet密钥交换协议(IKE)、传输层安全协议(TLS)、和安全壳协议(SSH)等中使用的Diffie-Hellman(DH)算法,或者例如在TLS中使用的Rivest-Shamir-Adleman(RSA)算法。
在象SSH、TLS、Internet Protocol Security(IP sec)/IKE等开放保密协议中,数字化签名数据或者密钥交换使用公共密钥算法。可以使用几个不同的公共密钥签名方法和密钥交换方法。在多个协议中,加密负载数据和添加完整性检查标记所使用的基本协议是非常相似的。然而,多个协议所支持的鉴权程序、密钥交换、和不同的对称算法是有实质性差别的。因此,如果没有预定保密关系的两个单元能够进行保密地互操作,一个问题是至少一个通信同位体必须支持很多不同的密码算法和加密选项。进一步,大量的不同选项使得密钥协商协议非常大、非常复杂,并且很难简单地实现。
在US5,892,904中描述了保证一个计算机程序、一个执行文件、或者例如Internet等计算机网络上所接收码的鉴权和完整性的一种方法。在一个实施例中,这种方法涉及判定一个密码摘要或者可执行文件的“无用数据”,并使用密码摘要形成一个发行人签名。使用本领域众所周知的公共-专用密钥签名算法,例如RSA(Rivest-Shamir-Adleman)通用密钥算法,来形成发行人签名。对发行人签名附加一个发行人数字证书来鉴定发布发行人签名的发行人的身份。数字证书包括软件出版商的名字、与出版商对文件签名所使用的专用密钥相对应的一个公共密钥、证书的一个失效日期、和到证书代理的一个链接或者超级链接。
WO99/56428描述了从处理器外部的设备下载一个程序到一个处理器的另一种保密方法。程序应被加密,并包含添加的鉴权信息。在允许处理器执行程序之前,处理器对程序进行解密和鉴权。
WO99/33224公开了保证一个数据流,包括例如视频或者音频数据,只能被授权的接收机所接收的一种方法和系统。接收机也可以查验所接收的视频或者音频数据分组的数量。通过对发送数据流中每个数据分组进行加密并记录接收机中解密分组的数量来实现这一点。
这些文件中没有一个描述了不具有预定加密关系的两个通信同位体之间如何建立一个保密通信信道。在例如特别的网络(即BluetoothTM、SalutationTM、JiniTM等)中,这也是一个常见的情况。这样,需要一种方法和系统表示在一个客户和一个任意通信业务之间如何建立保密通信。
在现有协议中,如果两个单元应该能够互操作,至少一个通信同位体必须支持大量的不同密码算法和加密选项,使得密钥协商协议不仅大,而且复杂。
这样,本发明的一个目标是提供一个解决方案,其中所需要的预定密码算法尽可能少。
本发明的另一个目标是减少由支持的选项和密码算法的数量而决定的密钥协商协议的复杂性。
还有一个目标是提供一个解决方案,其中减小了输出限制的问题。
上面提到的目标基本上可以如下实现从一个通信客户想使用的一个特定业务处下载一个签名的计算机软件(例如一个JiniTMProxy),这个软件包含必要的算法以与服务器进行鉴权密钥的交换。进一步,在一个保密业务会话中,计算机程序包含必要的算法以加密和保护在客户和业务之间发送的所有数据。
更特别地,本发明涉及一个加密通信情况,在此一个通信客户想使用一个特定业务进行通信。用户使用一个全球网络业务(例如Internet、一个本地网)或者甚至一个特别网络(即在飞行中相同物理位置的实体之间生成的一个网络)可以获得这种业务。也假定使用这种业务的所有单元使用一个通用的计算平台,即所有单元可以下载和执行以一种共同语言写的一个程序。广泛应用的这种计算平台和语言一个例子是JavaTM虚拟机器和JavaTM字节码计算语言。假设客户只有两个预定的密码能力对任意数据进行数字化签名的能力;和验证任意数据一个数字化签名的能力。
能够提供一个保密通信业务的服务器对一个计算机程序进行数字化签名,包含必要的算法以使用与一个公共密钥成对的专用密钥与服务器进行验证密钥的交换。服务器组合签名码和签名以及可选的一个或者多个证书,这些证书验证了服务器的公共密钥。服务器公共密钥能用于验证用户签名的密码。
想使用一种业务进行通信的一个用户通过网络下载具有签名码和一个可能证书的软件包,并且检查下载软件包的签名。如果客户保留着与签名对应的一个信托公共密钥,或者客户信托包含在证书的一些公共密钥之中,那么客户将下载码作为一个信托加密码。
然后在客户的通用计算平台上执行加密码,并且如果需要相互鉴权,可以要求客户执行一个加密功能。这个功能将一些任意数据作为输入,并将数据的数字签名加上客户附加的一个特别标记作为输出。客户也可能返回包含业务所使用的公共密钥的一个证书来验证客户签名。业务码与他原来的服务器完成验证密钥的交换。如果成功,就与服务器建立起一个保密通信链路。
在本发明的第一个实施例中,通过利用本身签名的密钥交换码,因此节省了一个公共密钥签名的产生、一个公共密钥的验证、和在客户与服务器之间的一次传输,使得验证密钥交换更有效。
在本发明的第二个实施例中,密钥交换和通信的保护相隔离。这种方法的好处是几个不同的业务可以使用一个主要密钥来保护,而不是每个业务都必须完成一个繁重的公共密钥交换。
通过允许下载用于密钥交换和数据通信保护所需要的加密协议码,一个客户或者服务器需要支持的预定加密功能的数量是有限的。可替代的是,通过本身签名的加密码来保证安全。这也使得使用新算法来保护通信更容易,因为当协议具有安全缺陷时,并且必须重写整个协议或者部分协议时,只需要更新服务器上的程序。
由于客户所需要的必要密码功能只是签名和验证签名,经常在输出管理方面没有问题,所以这些功能一般不受限制。
详细描述参考
图1,本发明描述了一个安全通信的情况100,在此一个通信客户110想和提供特别业务的一个服务器120进行通信。客户110可以通过一个全球网络(例如Internet)、一个本地网络、或者一个特别网络130来接入服务器120。进一步,假定使用业务的所有单元使用一个通用的计算平台140,即所有单元可以下载和执行用一种通用语言写的一个计算程序。广泛使用的这种计算平台和语言的一个例子是JavaTM虚拟机器和JavaTM字节码计算语言。提供业务的单元,即服务器120,能够全面掌握网络中不同客户110使用的语言和通用的计算平台。
下面本发明将描述使用JavaTM JiniTM技术作为想连接通信业务的一个通信客户的例子。JavaTM JiniTM技术使得计算机和设备能够很快形成特别的网络,而不用任何规划、安装、或者人工干预。每个设备提供的业务,网络中其他设备也可以使用。这些设备也提供他们自己的接口,这保证了可靠性和兼容性。每个设备和业务都登记在一个查找业务中,并且当新业务加入网络时,他们通过一个称为发现和参加的添加协议。为了使用一个业务,一个人或者一个程序使用查找业务定位这个业务。从查找业务将业务接口复制到要求使用的设备。这样查找业务像一个接线板一样,将寻找一个业务的一个客户和那个业务相连接。业务在哪里实现是不重要的,因为每个业务提供了与一个下载JiniTM代理相互作用所必须的所有条件。
在一个特别的无线网络中,信托是其中一个中心问题。由于我们不能相信媒体,唯一的选择是使用密码术。一个主要问题是我们不能假定特别节点之间的任何预置的加密关系。由于特别网络中所有节点都具有公共密钥对,并且所有节点都考虑了其他节点的公共密钥,这有益于在特别网络中生成加密连接,可以使用基于验证的任何公共密钥。
与标准方法不同的是,本发明不用假定客户和服务器必须共享不同的对称密钥加密或者消息验证码(MAC)算法的很大集合。代替地,本发明假定客户只具有两种预定的密码能力-通过使用一个公共密钥算法和一个单向哈什函数,客户可以对任意数据进行数字化地签名;和-客户可以验证任意数据的一个公共密钥签名的正确性。用于签名数据的算法是从相当小数量的可能算法中选出来的。
用于签名或者验证任意数据签名的软件程序或者硬件,在物理上置于客户处,使得一个敌意的人不能进行改变或者操纵。用于签名或者验证签名的软件或者硬件不完全需要使用通用的计算平台,例如相反可以使用计算平台中定义的APIs(应用程序接口)。
使用上面描述的密码能力,一个客户可以安全地下载一个JiniTM代理,并使用JiniTM代理来执行他代表的一个鉴权和密钥管理协议。这给根据加密解决方案所使用的业务一个完全的自由。下面将参考图2的流程图描述本发明的第一个实施例。
在任何通信开始之前,服务器准备了客户能下载的一个JiniTM代理。服务器对JiniTM代理进行签名,因而允许客户在执行JiniTM代理之前验证JiniTM代理的完整性和来源。JiniTM代理码典型地包括与服务器的一个专用密钥相对应的一个公共密钥、和与服务器进行验证密钥交换所需的方法。
1、希望提供保密通信的服务器具有使用通用平台的计算机语言,即Java,编写的一个计算机程序。用JiniTM术语来说,服务器具有一个JiniTM代理。JiniTM代理包含与服务器进行验证密钥交换的必要算法和所需的方法。进一步,代理包含在一个保密业务会话之中、在一个客户和一个服务器之间对发送数据进行加密和保护所需的算法。然而,代理不必包含执行密码计算需要的所有码。相反,如果可行,代理可能使用通用平台中定义的APIs。
2、服务器使用他的专用密钥对JiniTM代理进行数字化签名。使用上面所述的预定算法和格式计算签名。这保证客户能够验证签名。
3、服务器组合签名码和签名,并可选地包括证明服务器公共密钥的一个或者多个证书。服务器的公共密钥用于验证服务器的鉴权。
在JiniTM和类似的环境下,寻找业务的一个客户启动了通信。一旦发现了这个业务,客户下载要执行的业务代理,区别在于在执行之前验证业务代理的鉴权。
4、一个客户使用Jini查找业务200搜索一个业务。
5、当客户找到这个业务并想使用他时,客户下载与业务对应的一个代理和签名以及可选的证书210。
6、客户验证下载数据软件包的签名。如果客户具有与签名对应的一个信托公共密钥,或者客户信托的一些公共密钥包含在证书之中,那么客户将下载码作为一个信托码220。
7、如果代理验证是正确的,客户使用通用计算平台执行下载码。可能添加合适的运行时间限制;特别地,下载码只能和指定的230通信,不必能够和其他服务器通信。
如果需要相互鉴权,下载码可以要求客户生成一个签名标签。客户可能拒绝执行任何其他的密码功能。标签生成功能需要一些任意数据并输出一个标签,他基本上是数据的一个数字签名加上客户添加的一个特别标记。标记是必须的,为了保证得出的结果被识别为一个标签。客户也可能返回包含一个公共密钥的一个证书,这个公共密钥用于验证客户所作的签名。标签的标记典型地指定了客户要求代理指定的业务和一个时间标记。在客户机器对数据和标签进行数字化签名之前,应该向客户机器的用户显示这个标记。在那个时候用户可能拒绝对标签进行签名。这样JiniTM代理和服务器可以彼此如下进行鉴权。
8、代理和原来的服务器240进行验证密钥的交换。实际使用的协议基本上可以是任何标准的验证和密钥交换协议,例如DH或者RSA。JiniTM代理也可以从客户处要求一个证书来验证公共密钥,以验证上面提到的标签的签名。如果鉴权成功,代理与服务器250建立一个保密通信链路。
编写加密码的业务提供者可以按照自己的愿望来实现密钥交换算法,但是应当遵循优秀的密码原理。这样的加密级别是由服务器使用的算法决定的。
在本发明的第一个实施例中,服务器对密钥交换码自己进行签名节省了一个公共密钥签名的生成、一个公共密钥签名的验证、和客户和服务器之间的一次传输。这是可能的,因为密钥交换码签名的核查在实际的密钥交换之前。因此服务器的公共密钥的鉴权信息对客户来说是可用的。例如如果使用Diffie-Hellman,业务码中可以包含服务器的公共密钥交换值。因此可以通过唯一的一次从客户到服务器传输来完成密钥交换,并且节省了一次传输。
在本发明的第二个实施例中,如图3所示,密钥交换和纯粹的通信保护相隔离。这种方法的优点是可以使用一组主密钥来保护几个不同的业务,以代替每个业务必须执行的一个繁重的公共密钥交换。这样,代替搜索一个业务的是客户300搜索一个密钥交换服务器310。客户300从密钥交换服务器310接收一组主密钥和那些密钥的一个识别符。当客户300想在密钥交换服务器所处的同一域中使用一个业务时,客户搜索提供一个业务的一个服务器320、从服务器320下载一个软件包、和在通用计算平台330上执行那个软件包。下载的加密码可以要求客户300完成一个加密功能,他将主密钥组识别符作为输入,并将主密钥组作为输出。当进行密钥交换时,下载的业务码使用这个主密钥组。
本发明描述了使用JiniTM技术的例子,对节点的唯一要求是他们要支持一个通用的计算平台,即特别网络中所有节点都能够下载和执行用一种通用语言编写的程序,并且具有生成和验证签名的能力。当建立保密WAP(无线应用协议)业务时,例如也可以使用本发明,即通过下载一个程序码来定义加密算法。
如上所述已经描述了本发明,很明显本发明可以有多种变化。这些变化不被认为脱离了本发明的保护范围,并且本领域熟练技术人员对本发明所作的一切修改很明显都属于权利要求书的保护范围之内。
权利要求
1.在一个客户和一个服务器之间建立一个保密通信信道的一种方法,所述客户和所述服务器具有一个通用的计算平台,以支持对任意数据的数字签名和验证,其特征在于从所述服务器向所述客户下载一个数字签名数据软件包,所述软件包包含与所述服务器进行验证密钥交换的程序;在所述客户处验证所述下载的数据软件包的所述数字签名;和如果所述验证正确,在所述通用计算平台上执行所述下载的数据软件包。
2.如权利要求1所述的方法,进一步,其特征在于,所述下载的数据软件包要求所述客户完成一个加密功能,所述功能将一些任意数据作为输入、并将所述数据的一个数字签名和客户添加的一个标记作为输出,以进行相互验证。
3.如权利要求2所述的方法,其特征在于,所述标记是识别所要求业务的一个文本和一个时间标记。
4.如前述任何一项权利要求所述的方法,其特征在于,所述通用计算平台是Java虚拟机器和Java字节码计算语言。
5.如前述任何一项权利要求所述的方法,其特征在于,所述服务器是提供一组主密钥的一个密钥交换服务器,以保护和几个业务的通信。
6.在一个客户和一个服务器之间建立一个保密通信信道的一个系统,所述客户和所述服务器具有一个通用的计算平台,以支持对任意数据的数字签名和验证,其特征在于装置用于从所述服务器向所述客户下载一个数字签名数据软件包,所述软件包包含与所述服务器进行验证密钥交换的程序;装置用于在所述客户处验证所述下载的数据软件包的所述数字签名;和如果所述验证正确,装置用于在所述通用计算平台上执行所述下载的数据软件包。
7.如权利要求6所述的系统,进一步,其特征在于,所述下载的数据软件包具有要求所述客户完成一个加密功能的装置,所述功能将一些任意数据作为输入、并将所述数据的一个数字签名和客户添加的一个标记作为输出,以进行相互验证。
8.如权利要求7所述的系统,其特征在于,所述标记是识别所要求业务的一个文本和一个时间标记。
9.如权利要求6-8中任何一项所述的系统,其特征在于,所述通用计算平台是Java虚拟机器和Java字节码计算语言。
10.如权利要求6-9中任何一项所述的系统,其特征在于,所述服务器是一个密钥交换服务器,他具有的装置能够提供一组主密钥以保护几种业务的通信。
全文摘要
本发明涉及开放系统的保密信息,并且更特别地涉及对任意通信业务提供鉴权、加密、和完整保护的一种方法和系统。想进行一项特殊业务的一个客户从那个业务下载一个签名的程序码,他包含与那个业务进行鉴权密钥交换所必须的码。假定客户只支持两种基本的密码功能使用一个公共密钥算法和一个单向哈什函数对任意数据进行签名,和验证任意数据的一个公共密钥签名。通过允许下载密钥交换和数据保密通信所需的加密协议,客户或者服务器需要支持的预定加密功能的数量是有限的。由于只需要更新服务器的程序,这使得对保密通信的更新变得更容易。
文档编号G09C1/00GK1446418SQ0181401
公开日2003年10月1日 申请日期2001年7月5日 优先权日2000年8月11日
发明者C·格赫曼恩 申请人:艾利森电话股份有限公司