发明内容
技术问题:本发明的目的是提供一种网格环境中基于虚拟组织的秘密通信方法,与传统的使用数字证书或者票据来进行认证的方法不同,本方法是一种策略性方法,通过使用本发明提出的方法可以达到保障虚拟组织安全通信的目标。
技术方案:本发明的方法是一种策略性的方法,通过对虚拟组织内不同层次的秘密通信的需求而提出,其目标是解决网格虚拟组织的安全问题。
下面给出该模型中的几个概念:
虚拟组织(Virtual Organization VO):所谓虚拟组织就是一些个体、组织或者资源的动态组合。是指网格环境中,为了完成某一特定的任务而不同自治域的节点组成的一个跨地域,异构型并共享资源协同完成任务的组织。
自治域(Autonomy Domain AD):加入网格系统的具有自身安全体系和功能的组织、部门和团体等。
成员节点(Leaguer Node LN):加入网格虚拟组织的自治域内的个体,由这些个体来参与协作完成虚拟组织的任务。
虚拟组织管理中心(Virtual Organization Management Center VOMC):由虚拟组织的发起者委托维护整个虚拟组织的正常运行的节点,负责协调虚拟组织内的自治域之间的活动。
自治域管理中心(Autonomy Domain Management Center ADMC):自治域加入该虚拟组织的维护者,负责并协调管理该自治域内的参与该虚拟组织的成员节点的活动。
自治域代理(Autonomy Domain Agency ADA):负责自治域间秘密通信时的交互,其作用相当于网关。
虚拟组织证书(Virtual Organization Certificate VOC):虚拟组织证书是指由虚拟组织管理中心所创建的数字证书,负责对整个虚拟组织的自治域证书的签发。
自治域证书(Autonomy Domain Certificate ADC):自治域证书是指加入虚拟组织的自治域的证书,由虚拟组织证书签发,用来标识加入该虚拟组织内的自治域身份。
域成员节点证书(Domain Member Certificate DMC):是指加入虚拟组织的自治域内的成员节点所拥有的证书,由自治域证书签发,用来标识加入该虚拟组织内的该自治域的成员节点身份。
一、体系结构
图1给出了网格虚拟组织的参考模型,从图中可看出,虚拟组织由不同的自治域构成,而自治域又由参与的成员节点所构成,因而他们之间的秘密通信就是多层次的秘密通信;图2给出了运用这种基于虚拟组织的秘密通信的组成结构图,这种结构主要包括了两个部分:成员节点间的秘密通信和自治域间秘密通信,其中成员节点间的秘密通信又包括自治域内成员节点秘密通信和自治域间成员节点秘密通信两部分。下面我们给出几个具体部分的说明:
自治域间秘密通信:交互的双方是自治域,而自治域的功能体现是由自治域成员群体来体现,因而他们之间的秘密通信就不能和成员节点间秘密通信一样,要有相应的成员节点群体签名和群体加密的效果。
自治域间成员节点秘密通信:交互双方处于虚拟组织的不同自治域中,需要通过各自的自治域证书进行相互认证和通信。
自治域内成员节点秘密通信:在自治域内的成员节点进行秘密通信时和通常的网络环境中的秘密通信相似,双方通过相互的域内认证(使用各自的域成员节点证书),然后协商出共享密钥进行通信。
网格环境中基于虚拟组织的秘密通信方法包含自治域内成员节点的秘密通信、自治域间成员节点的秘密通信、自治域间的秘密通信三部分;当所涉及到的秘密通信为单个自治域内的成员节点时,则使用自治域内成员节点的秘密通信,而涉及的秘密通信为自治域间的成员节点间的通信时,则使用自治域间成员节点的秘密通信,当涉及的秘密通信为自治域间群体通信时,则使用自治域间的秘密通信;这三部分之间的关系为自治域内和自治域间的关系,单个成员节点间和群体成员节点间的关系。
自治域内成员节点的秘密通信方法为:
步骤1-1).发送成员节点发送自身的成员节点证书给接收成员节点,
步骤1-2).接收成员节点提取发送成员节点证书中的公钥标识对,
步骤1-3).接收成员节点将该公钥标识对和公钥标识对库中的元素进行匹配,若匹配成员节点验证通过,
步骤1-4).接收成员节点产生一随机数用该公钥加密并发送给发送成员节点,
步骤1-5).发送成员节点使用私钥解密,并将解密结果返回给接收成员节点,
步骤1-6).接收成员节点将解密结果和产生的随机数进行比较,若相同则认证通过,
步骤1-7).按照上述步骤同样可以完成自治域内发送成员节点对接收成员节点的身份认证。
自治域间成员节点的秘密通信方法为:
步骤2-1).发送成员节点将成员节点证书和所在自治域的证书发给接收成员节点,
步骤2-2).接收成员节点从虚拟组织证书中提取出虚拟组织公钥并使用虚拟组织公钥对自治域证书的签名进行验证,验证通过就得到自治域公钥,
步骤2-3).接收成员节点使用自治域公钥对发送成员节点证书进行验证,验证通过得到发送成员节点的公钥,
步骤2-4).接收成员节点产生一随机数并用发送成员节点公钥进行加密并发送给发送成员节点,
步骤2-5).发送成员节点使用私钥解密,并将解密结果返回给接收成员节点,
步骤2-6).接收成员节点将解密结果和产生的随机数进行比较,若相同则认证通过,
步骤2-7).按照上述步骤同样可以完成自治域间发送成员节点对接收成员节点的身份认证。
自治域间的秘密通信方法为:
自治域间的秘密通信过程又可以分为三个子部分:即自治域的密钥产生过程;发送方自治域的签名过程;接收方自治域的验证过程,其中各个部分的步骤分别为:
第1子部分:自治域的密钥产生过程:
步骤3-1-1).自治域的管理中心产生公私密钥对并生成自治域证书,
步骤3-1-2).自治域的管理中心使用自治域证书对成员节点证书进行签发,
步骤3-1-3).自治域的管理中心从签发的各成员节点证书中提取成员节点公钥和成员节点标识对,
步骤3-1-4).自治域的管理中心将各成员节点公钥代入多项式f(x),生成各成员节点密钥的保密部分并发送给对应的成员节点,
步骤3-1-5).自治域的管理中心将各成员节点公钥和成员节点标识对广播给各成员节点;
第2子部分:发送方自治域的签名过程:
步骤3-2-1).发送方自治域管理中心对需要发送的消息用单向散列函数进行求解,得到消息摘要,
步骤3-2-2).发送方自治域参与自治域秘密通信的各成员节点用成员节点密钥保密部分和各成员节点的公钥对消息摘要进行单成员节点签发,并将签发结果发送给发送方自治域代理,
步骤3-2-3).发送方自治域代理收到所有参与的单成员节点签名后进行群体签名过程,得到的结果返回给各参与者成员节点,
步骤3-2-4).各参与者成员节点使用发送方自治域管理中心的公钥对群体签名结果进行验证,验证通过则自治域签名成功,
步骤3-2-5).发送方自治域代理将群体签名结果用接收方的自治域公钥进行加密,并将加密结果和发送方自治域证书发送给接收方自治域代理;
第3子部分:接收方自治域的验证过程:
步骤3-3-1).接收方自治域代理将得到的消息发送给接收方自治域的各参与成员节点,
步骤3-3-2).接收方自治域各参与成员节点完成单成员节点解密过程,并将解密结果返回给接收方自治域代理,
步骤3-3-3).接收方自治域代理再完成群体解密过程,得到经发送方的自治域签名的消息摘要,
步骤3-3-4).接收方自治域代理将该签名的消息摘要和发送方自治域证书发送给接收方自治域的管理中心,
步骤3-3-5).接收方自治域的管理中心使用发送方自治域证书的公钥对该消息摘要进行验证,验证通过则完成了自治域间秘密通信过程。
二、方法流程
1、[自治域间秘密通信]
这种秘密通信发生在自治域之间,而自治域的行为主体是自治域的成员节点,因而表现的秘密通信为群体通信,即由自治域的成员节点群体来体现自治域的行为。
假设虚拟组织内的自治域A和自治域B要进行秘密通信,自治域A和B的自治域管理中心(ADMC)根据公私密钥原理(RSA)产生公私密钥对,每一个密钥由两个数字组成,记公钥为(kpub,n),私钥为(kprv,n)。则私钥加密和公钥解密过程可以表示为:
其中公钥是完全公开的并作为自治域证书(ADC)的一个元素,只有私钥部分的kprv是秘密的。与标准RSA算法不同,自治域管理中心ADMC生成kprv后不交给成员节点(LN),而是根据如下步骤来进行。
首先,自治域A的自治域管理中心ADMC对加入该虚拟组织的自治域A内的n个成员节点所提交的域成员节点证书(DMC)使用自治域证书(ADC)进行签发,并从签发的各域成员节点证书中提取出成员节点公钥和成员节点标识,其中第i个成员节点的公钥作为密钥种子xi,其成员节点标识假设为IDi。如果发现有两个成员节点的成员节点密钥种子相同则要求他们重新生成。得到所有成员节点密钥种子后,自治域管理中心ADMC将密钥种子xi代入多项式f(x),生成成员节点的密钥保密部分ki:
其中系数ai(1≤i≤t-1)为未知数。
自治域管理中心ADMC将ki发送给与xi对应的第i个成员节点,同时将成员节点公钥和成员节点标识对{xi,IDi}广播给所有成员节点,这些成员节点将这些公钥标识对保存在相应的公钥标识对库中,供自治域内成员节点间秘密通信时使用,而参与自治域秘密通信则只要从{xi,IDi}中提取出xi即可。这样就生成了私钥的n个投影分发给不同的成员节点。对于第i个成员节点,他得到的私钥投影是(ki,xi,n),其中的n是RSA算法中的模数,ki,xi由前面的多项式生成,并且系数a0=kprv。
下面说明密钥的恢复过程。假设代表自治域特性至少需要数目为t的成员节点节点数才能有效,因而需要t个成员节点参与恢复密钥。由成员节点的密钥种子及密钥可构成如下方程组:
在上述方程中,未知元为ai(1≤i≤t-1),方程组中共有t个方程。由于 所以此方程组有唯一解,由LaGrange插值多项式
而对于任何少于t的自治域成员节点,不可能构造达到t维的方程组,也就不可能得到私钥a0,因而不能代表自治域的权利来进行群体通信。
现在分析自治域的签名过程,首先自治域A的自治域管理中心(ADMC)将消息广播给所有的自治域A的成员节点(作为签名者),成员节点独自对消息签名,然后发送给自治域A的自治域代理(ADA),由其形成最后的签名。该过程分为两步,第一步是生成单成员节点签名,第二步是生成群体签名。
(1)生成单成员节点签名
设要签名的信息为m,有t个成员节点参与签名过程(设为前t个成员节点),每个参与的成员节点进行下面的运算生成单成员节点签名:
其中用到了此t个成员节点的成员节点密钥的公开部分xi(从相应的公钥标识对库中提取),以及单成员节点的成员节点密钥的保密部分ki。其中h(m)为单向散列函数:d=h(m)。所有参与签名的成员节点将生成的成员节点签名ci发送给自治域A的自治域代理(ADA),该自治域代理(ADA)完成下面的群体签名。
(2)生成群体签名
自治域代理(ADA)收到所有t个参与者的成员节点签名后,完成如下计算生成群体签名:
可见,经过两步运算后在t个成员节点参与的情况下已经等效于完成了RSA的私钥签名过程。自治域代理(ADA)在生成签名以后,将其发送给所有的t个参与者。参与者可以用从自治域证书(ADC)中提取的公钥进行签名验证,确保整个过程是正确的。
上述过程实现数字签名,同时自治域A的自治域代理(ADA)需要使用自治域B的自治域证书(ADC)中的公钥对签名后的消息进行加密:
其中(k′pub,n′)是自治域B的自治域证书(ADC)的公钥
加密后的消息发送给自治域B的自治域代理。这样自治域B可通过签名验证信息的来源来实现与自治域A的秘密通信。下面分析自治域B的验证过程。
同样自治域B也是由自治域B的成员节点来实现自治域间的通信,因而也需要成员节点的群体来参与验证和解密。
标准RSA签名的验证就是使用公钥解密签名的过程。设收到的签名是c,原文是m,验证过程如下:
d=h(m),
如果d=n′,则接收签名,否则拒绝签名。因而自治域B的自治域代理只要从自治域A的自治域证书中提取出其公钥就可以实现验证过程。
而签名经过前面使用自治域B的公钥进行了加密,因而在验证之前需进行解密。加密时使用的是自治域B的公钥,所以要使用自治域B的私钥进行解密。由于是自治域间的秘密通信,因而自治域B的自治域解密过程也是由该自治域的各成员节点来完成。假设组内需要s个成员节点进行验证才能有效,并且按照前面同样的方式进行了分割私钥,则按照下面的过程恢复签名。该解密过程同样分为两个部分:该过程分为两步,第一步是单成员节点解密,第二步是群体解密。
(1)单成员节点解密
域内参与验证签名的s个成员节点分别进行下面的单成员节点解密
式子中k′,xi′,n′为自治域B的成员节点的参数,其意义与签名组成员节点的k,xi,n相同。解密的结果都发送给自治域B的自治域代理
(2)群体解密
自治域B的自治域代理得到上面的所有s个成员节点解密消息后,进行下面的群体解密
式中的参数与群体签名中对应的参数意义相同,即可以得到签名的明文。由上面的过程得到签名后,使用前面所述方法进行验证签名。从而完成了整个自治域间的秘密通信。
2、[自治域间的成员节点秘密通信]
假设自治域A的成员节点a和自治域B的成员节点b进行秘密通信。其主要流程为:
(1)自治域A的成员节点a将其域成员节点证书Certa(该证书被域A证书CertA进行了签发和域A证书CertA一起发送给自治域B的成员节点b:
(2)自治域B的成员节点b从虚拟组织证书(VOC)中提取出虚拟组织的公钥对CertA的数字签名进行验证,得到的自治域A公钥和自治域A标识并与CertA元素的公钥和标识进行匹配,若匹配成功,则使用该自治域A的公钥对Certa的数字签名进行验证,得到的自治域A的成员节点a的公钥和标识并与Certa元素公钥和标识进行匹配,若匹配成功,则通过验证。
(3)自治域B的成员节点b生成并发送一个随机数rand给自治域A的成员节点a;
(4)自治域A的成员节点a使用其私钥对该随机数rand进行加密并发送给自治域B的成员节点b;
(5)自治域B的成员节点b使用从Certa中提取的成员节点公钥对该加密的随机数进行解密,若解密结果和随机数rand相同则通过对自治域A的成员节点a的认证过程;
(6)同样自治域A的成员节点a也需要上述步骤对自治域B的成员节点
(7)b进行相应的认证过程。
3、[自治域内的成员节点秘密通信]
假设自治域A内的成员节点a要和成员节点b进行秘密通信,主要工作流程如下:
(1)成员节点a将其域成员节点证书Certa(该证书被自治域A证书CertA进行了签发)发送给成员节点b:
(2)成员节点b从Certa中提取出{成员节点公钥,成员节点标识}对,并与成员节点公钥和成员节点标识对库中的各个公钥标识对进行匹配,若能够匹配成功,说明该成员节点a的证书被域A证书所签发,则通过验证中。
(3)成员节点b生成并发送一个随机数rand给成员节点a;
(4)成员节点a使用其私钥对该随机数rand进行加密并发送给成员节点b;
(5)成员节点b使用从Certa中提取的成员节点公钥对该加密的随机数进行解密,若解密结果和随机数rand相同则通过对成员节点a的认证过程;
(6)同样成员节点a也需要上述步骤对成员节点b进行相应的认证过程。
有益效果:本方案提出了网格环境中虚拟组织的秘密通信,主要用来解决虚拟组织安全性问题中的安全传输和相互认证问题。通过本方案能够实现并保障虚拟组织的安全通信。这种方案的优点在于:
(1)安全性:虚拟组织的秘密通信中的三部分实现都是采用目前流行的公私密钥原理来实现,因而能够保障其秘密通信的安全性;
(2)合理性:自治域间的秘密通信是由自治域的成员节点群体所体现的,而当参与秘密通信的成员节点达到一定数目时就能够代表该自治域的权益,并且该数目可动态调整;
(3)灵活性:将虚拟组织的秘密通信分为三个部分,能够针对不同的情况进行灵活的选取;
(4)可扩展性:在自治域间秘密通信和自治域成员节点间秘密通信基础上可实现多组成员之间的秘密通信过程。
具体实施方式
本发明的网格环境中基于虚拟组织的秘密通信方法包含自治域内成员节点的秘密通信、自治域间成员节点的秘密通信、自治域间的秘密通信三部分;当所涉及到的秘密通信为单个自治域内的成员节点时,则使用自治域内成员节点的秘密通信,而涉及的秘密通信为自治域间的成员节点间的通信时,则使用自治域间成员节点的秘密通信,当涉及的秘密通信为自治域间群体通信时,则使用自治域间的秘密通信;这三部分之间的关系为自治域内和自治域间的关系,单个成员节点间和群体成员节点间的关系,其中:
自治域内成员节点的秘密通信方法为:
步骤1-1).发送成员节点发送自身的成员节点证书给接收成员节点,
步骤1-2).接收成员节点提取发送成员节点证书中的公钥标识对,
步骤1-3).接收成员节点将该公钥标识对和公钥标识对库中的元素进行匹配,若匹配成员节点验证通过,
步骤1-4).接收成员节点产生一随机数用该公钥加密并发送给发送成员节点,
步骤1-5).发送成员节点使用私钥解密,并将解密结果返回给接收成员节点,
步骤1-6).接收成员节点将解密结果和产生的随机数进行比较,若相同则认证通过,
步骤1-7).按照上述步骤同样可以完成自治域内发送成员节点对接收成员节点的身份认证。
自治域间成员节点的秘密通信方法为:
步骤2-1).发送成员节点将成员节点证书和所在自治域的证书发给接收成员节点,
步骤2-2).接收成员节点从虚拟组织证书中提取出虚拟组织公钥并使用虚拟组织公钥对自治域证书的签名进行验证,验证通过就得到自治域公钥,
步骤2-3).接收成员节点使用自治域公钥对发送成员节点证书进行验证,验证通过得到发送成员节点的公钥,
步骤2-4).接收成员节点产生一随机数并用发送成员节点公钥进行加密并发送给发送成员节点,
步骤2-5).发送成员节点使用私钥解密,并将解密结果返回给接收成员节点,
步骤2-6).接收成员节点将解密结果和产生的随机数进行比较,若相同则认证通过,
步骤2-7).按照上述步骤同样可以完成自治域间发送成员节点对接收成员节点的身份认证。
自治域间的秘密通信方法为:
自治域间的秘密通信过程又可以分为三个子部分:即自治域的密钥产生过程;发送方自治域的签名过程;接收方自治域的验证过程,其中各个部分的步骤分别为:
第1子部分:自治域的密钥产生过程:
步骤3-1-1).自治域的管理中心产生公私密钥对并生成自治域证书,
步骤3-1-2).自治域的管理中心使用自治域证书对成员节点证书进行签发,
步骤3-1-3).自治域的管理中心从签发的各成员节点证书中提取成员节点公钥和成员节点标识对,
步骤3-1-4).自治域的管理中心将各成员节点公钥代入多项式f(x),生成各成员节点密钥的保密部分并发送给对应的成员节点,
步骤3-1-5).自治域的管理中心将各成员节点公钥和成员节点标识对广播给各成员节点;
第2子部分:发送方自治域的签名过程:
步骤3-2-1).发送方自治域管理中心对需要发送的消息用单向散列函数进行求解,得到消息摘要,
步骤3-2-2).发送方自治域参与自治域秘密通信的各成员节点用成员节点密钥保密部分和各成员节点的公钥对消息摘要进行单成员节点签发,并将签发结果发送给发送方自治域代理,
步骤3-2-3).发送方自治域代理收到所有参与的单成员节点签名后进行群体签名过程,得到的结果返回给各参与者成员节点,
步骤3-2-4).各参与者成员节点使用发送方自治域管理中心的公钥对群体签名结果进行验证,验证通过则自治域签名成功,
步骤3-2-5).发送方自治域代理将群体签名结果用接收方的自治域公钥进行加密,并将加密结果和发送方自治域证书发送给接收方自治域代理;
第3子部分:接收方自治域的验证过程:
步骤3-3-1).接收方自治域代理将得到的消息发送给接收方自治域的各参与成员节点,
步骤3-3-2).接收方自治域各参与成员节点完成单成员节点解密过程,并将解密结果返回给接收方自治域代理,
步骤3-3-3).接收方自治域代理再完成群体解密过程,得到经发送方的自治域签名的消息摘要,
步骤3-3-4).接收方自治域代理将该签名的消息摘要和发送方自治域证书发送给接收方自治域的管理中心,
步骤3-3-5).接收方自治域的管理中心使用发送方自治域证书的公钥对该消息摘要进行验证,验证通过则完成了自治域间秘密通信过程。
为了方便描述,我们假定有如下三个应用实例:
1、一个网格环境中虚拟组织的自治域甲中的两个成员节点(分别用A和B表示)要进行秘密通信,则其具体实施方式为:
1).成员节点A发送自身的成员节点证书给成员节点B;
2).成员节点B提取成员节点A证书中的公钥标识对;
3).成员节点B将该公钥标识对和公钥标识对库中的元素进行匹配,若匹配,成员节点验证通过;
4).成员节点B产生一随机数用该公钥加密并发送给成员节点A;
5).成员节点A使用自身私钥对接收的消息解密,并将解密结果返回给成员节点B;
6).成员节点B将解密结果和产生的随机数进行比较,若相同则认证通过;
7).按照上述步骤同样可以完成自治域内成员节点A对成员节点B的身份认证过程。
2、一个网格环境中的虚拟组织的自治域甲和自治域乙中的两个成员节点(分别用C和D表示)要进行秘密通信,则其具体实施方式为:
1).成员节点C将成员节点证书和所在自治域甲的证书发给成员节点D;
2).成员节点D从虚拟组织证书中提取出公钥并使用虚拟组织公钥对自治域甲证书的签名进行验证,验证通过就得到自治域甲公钥;
3).成员节点D使用自治域甲公钥对成员节点C证书进行验证,验证通过得到成员节点C的公钥;
4).成员节点D产生一随机数并用成员节点C公钥进行加密并发送给成员节点C;
5).成员节点C使用私钥解密,并将解密结果返回给成员节点D;
6).成员节点D将解密结果和产生的随机数进行比较,若相同则认证通过;
7).按照上述步骤同样可以完成自治域甲和乙间成员节点C对成员节点D的身份认证过程。
3、一个网格环境中虚拟组织的自治域甲和自治域乙要进行秘密通信,而自治域间的秘密通信过程又可以分为三个部分:自治域的密钥产生过程;自治域甲的签名过程;自治域乙的验证过程。其中各个部分的步骤分别为:
(1)自治域的密钥产生过程:
1).自治域的管理中心产生公私密钥对并生成自治域证书;
2).自治域的管理中心使用自治域证书对成员节点证书进行签发;
3).自治域的管理中心从签发的各成员节点证书中提取成员节点公钥和成员节点标识对;
4).自治域的管理中心将各成员节点公钥代入多项式f(x),生成各成员节点密钥的保密部分并发送给对应的成员节点;
5).自治域的管理中心将各成员节点公钥和成员节点标识对广播给各成员节点;
(2)自治域甲的签名过程:
1).自治域甲的管理中心对需要发送的消息用单向散列函数进行求解,得到消息摘要;
2).自治域甲中参与自治域秘密通信的各成员节点用成员节点密钥保密部分和各成员节点的公钥对消息摘要进行单成员节点签发,并将签发结果发送给自治域甲代理;
3).自治域甲代理收到所有参与的单成员节点签名后进行群体签名过程,得到的结果返回给各参与者成员节点;
4).各参与者成员节点使用自治域甲的管理中心的公钥对群体签名结果进行验证,验证通过则自治域签名成功;
5).自治域甲代理将组签名结果用自治域乙公钥进行加密,并将加密结果和自治域甲证书发送给自治域乙代理;
(3)自治域乙的验证过程:
1).自治域乙代理将得到的消息发送给自治域乙的各参与成员节点;
2).自治域乙中各参与成员节点完成单成员节点解密过程,并将解密结果返回给自治域乙代理;
3).自治域乙代理再完成群体解密过程,得到经自治域甲签名的消息摘要;
4).自治域乙代理将该签名的消息摘要和自治域甲证书发送给自治域乙的管理中心;
5).自治域乙的管理中心使用自治域甲证书的公钥对该消息摘要进行验证,验证通过则完成了自治域间秘密通信过程。