杨 涛 刘文杰 丁 宁
(1.大连理工大学体育教学部 辽宁 116000;2.大连理工大学软件学院 辽宁 116000)
网格的系统资源被分布在互联网的各个部分,这使得作业对资源的管理变得非常复杂。因此,我们使用虚拟组织对网格资源进行管理。基于虚拟动态组织的网格信息管理方式,使用标准的和开放的接口实现信息交互。这些信息被用来建立合理的VO之间的资源使用策略。这些策略可以避免盲目查找和不合理远程调用,从而提高网格计算的智能性。这样的方法使虚拟组织成为网格资源管理的单元,这样的单元使网格协同计算延伸到不同的组织和异构的平台。每一个连接到网格的用户得到了强大的计算能力、沟通协作能力和信息获得能力[1]。
这样的管理方式使用移动代理技术实现主机间的连接[2]。
移动代理是一种网格计算技术,能够自行选择运行地点和时机,根据具体情况中断自身的执行,同时移动到另一设备上恢复运行,并及时将有关结果返回[3]。由于在网格环境中,不同虚拟组织的网格资源存在较大差异[4],所以当移动代理执行计算任务时,会在不同的虚拟组织之间迁移,从而完成网格计算的任务。同时,在现有的网格基础设施中,位于不同虚拟组织下的资源之间,是没有直接的信任传递关系的。这可能会使得恶意移动代理在虚拟组织之间迁移时利用这种漏洞,给移动代理平台带来安全威胁[5]。
规划方案的实现主要包括两个部分,一部分是对运行模块部分的代码进行修改,使其在迁移时,向信任调度模块发送请求;另一部分就是在网格中的汇聚层添加信任调度模块。调度模块根据信任推荐机制,从资源层的资源数据库中选择初步满足条件的资源,计算间接信任,并从应用层的本地交易记录中,选择初步满足条件的资源,计算直接信任,最后计算出综合信任。把综合信任值最高的资源的信息作为结果返回给运行模块[6]。
协议初始化的实现包括两个部分:系统初始化和消息初始化。我们用两个类 SystemInitial,MessageInitial 来实现。并且分别在 Aglet 源码 com.ibm.aglet 的 AgletContext 类中建立PlatformInitial 类的对象,在 Message 类中建立 MessageInitial类的对象来进行初始化工作。在SystemInitial 类中,我们采用RSA 算法。RSA 是非对称加密中最常用的方式,它用于各种协议中,如安全站点通信的 SSL 和安全 E-mail 的 S/MIME。在RSA 公钥系统中,公钥使用X.509 编码,X.509 是传输公钥和证书的标准。私钥使用PKCS#8 编码,PKCS#8 仅仅是编制私钥的简单标准,当调用getEncoded()获取公钥或私钥调用时,它将使用对应的编码机制自动进行编码。
我们对协议中使用到的符号作如下定义:P0 是消息产生的平台,Pi 表示第i 个传输消息的平台,用有序序偶(M,Di)表示消息从 Pi 传送到 Pi+1,M 表示消息的静态部分,Di 表示消息动态部分。用f(.,.)表示前面定义的强非交换单向函数,用 S表示有限集,f在这个有限集上不满足交换性并且是闭合的。用m表示M 经过哈希函数计算的结果,这个哈希函数是映射到S的碰撞抵抗哈希函数,假设可以很容易的从S中找到随机元素。我们用中缀符号x o y来表示f(x,y)。
虽然我们的协议需要可信第三方,但是只有当信息在系统中进行初始化时才会用到。验证信息的真实性,不需要激活可信第三方。接下来描述协议的具体认证流程,在公钥目录创建时需要初始化设置。
(1)系统初始化
首先是可信第三方选取参数。选取大素数 p、q,且 q 为p-1 的大素因子。可信第三方产生一个随机数 a∈S,阶为 q,即满足aq ≡1mod n,t为安全参数。
在这个过程中资源平台创建一对公私钥。并由可信第三方向平台颁发证书。协议按如下步骤进行:
A.可信第三方为每个平台Pi 建立身份信息,并颁发一个身份识别串ID Pi。
B.每个Pi产生一个随机私钥Xi∈S 并且计算yi=a-xmod p,公钥就是yi,发送给可信第三方。
C.可信第三方计算签名s=Sig(IDPi,yi),将公开的身份证书CerPi=Cer(IDPi,yi,s)发送给Pi。上面可信第三方的签名可以用标准的数字签名方案实现。上述过程结束后,所有经过这样注册的用户都可以对消息进行认证和签名。
(2)消息初始化
这一步是平台在消息进入系统时对它进行初始化。对于每个消息M,消息产生平台P0 提供一个秘密的随机签名密钥u,并且计算出相应的公钥 v=f(m,u)。最后它向可信第三方发送请求对(m,v)的值进行验证,这可以通过任何标准的数字签名方案实现,并从可信第三方获得消息的证书T。
为了避免遭到重放攻击,证书里面要加上时间戳。创建公钥的时间在时间戳后面的用户就被不能被允许加入协议。
(1)代理发送平台Pi 对代理接受平台Pi+1 的身份验证
A.Pi+1 任选一整数r∈[1,q-1],并计算X=armodp。将X和证书CerPi+1 发送给Pi。
B.Pi 验证 CerPi+1 中可信第三方的签名。如果有效,则Pi 任选一整数 e∈[1,2t-1],作为 Pi对 Pi+1 的询问,发送给Pi+1。
C.Pi+1计算s=r+xe mod q,看成是Pi+1对Pi的应答,将s 发送给Pi。
D.Pi验证as ye mod p=X 是否成立。如果成立,则Pi相信对方就是Pi+1。
(2)代理接受平台Pi 对代理发送平台Pi-1 及遍历路线的验证
任意的平台Pi 传递消息是按照如下步骤:只要接受到来自Pi-1 的消息,平台Pi 首先执行验证程序。而平台Pi-1 在把消息传递给Pi 之前,首先对Pi 进行身份验证,即上面的验证流程,并且Pi-1 会执行签名程序,即附加零知识签名。但是消息创建平台P0 不执行验证程序。我们假定证书T 必须一直和消息一起传递。下面是认证时用到的定义:
A.定义 z0=f(u,x0)
B.定义 zi=f(f(zi-1,a),xi)如果 i>0
C.定义w0=y0
D.定义wi=f(wi-1,yi)如果i>0
注意wi 可以通过对公钥和y0,y1,…yi 等进行计算直接得到,zi 也可以直接从zi-1 计算得出。但是,如果没有仅仅P0 知道的保密签名密钥u,就无法计算出z0。Mi 和Di 分别表示 Pi 对 M 和 Di 的签名,他们采用不同的标准签名方案。
Pi-1对(M,Di-1)的签名是下面的值集:{ T,Zi-1 M0,M1…Mi-1D0 }。包含名字列表的字符串“P0,P1,…Pi-1”也应该是签名中的一部分。Pi-1 接受Pi-2 签名的zi-2 并且用上述的程序计算出zi-1。Pi-1 把Zi-2 作为秘密证据,向别的平台证明它的消息确实接受自Pi-2。
我们列出 Pi 的验证程序如下,它从 5 个方面进行检验,只要其中一个失败了,消息就会被拒绝:
A.验证从可信第三方获得的证书 T,并且从 T 得到验证密钥v。
B.验证等式f(f(m,Zi-1),a)=f(v,wi-1)是否成立。
C.验证Pi-1 对静态部分M 的签名Mi-1。
D.验证Pi-1 对动态部分Di-1 的签名Di-1。
E.验证静态部分和动态部分属于同一个消息。
为了对协议作一个初步的安全分析,我们假设攻击在签名中的名字列表含有错误信息,并且验证程序没有发现的情况下进行的。假设Pi 是攻击者,它的攻击手段可以是下面的一种或几种:
A.在名字列表中没有它的名字;
B.它向列表中添加一个或多个名字;
C.它删除列表中的一个或多个名字;
D.改变列表中一些名字的顺序。
并且,Pi 可以获得的有用的秘密信息只有Pi-1 的签名。
我们分开考虑每种攻击情况,同时假设 Pi+1 是诚实的验证者。
A.由于验证程序的第4 步,第一种攻击假设会被排除(因为消息是通过安全通道进行传输的);
B.因为Pi 不能为其他的用户计算签名,所以任何用户都不可能被添加到列表中。因此如果错误的用户被添加到列表中,验证过程的第三步就会失败;
C.很显然,删除名字也是不可能的。由于验证过程第二步使用的验证密钥必须是v,这意味着Pi 将必须计算(,)以使得。并且要使下面两个等式有一个成立:
f(f(m,),ai)=f(v,)
由于函数f 具有不可逆性,因此这也不成立;
D.又因为函数f 具有非交互性,所以改变列表中名字的顺序的攻击也不能成功。另外由于u 和x0 都是P0 的秘密,z0 在不知道u 和x0 的情况下是计算不出来的。并且如果不知道u,恶意平台就不可能用 v 作为验证密钥对 M 进行签名而产生。因此,z0 是平台P0 对M 的零知识签名,其中v 是随机字符串。而且根据验证步骤的第5 步可知,T 可以保证其他的字符串不可以用于M。
在测试时,我们需要进行资源的设置和移动代理访问资源的迁移路线设置。同时必须考虑实际因素,如恶意移动代理和非恶意移动代理的数量,以及为了模拟现实的程序环境将计算任务的行为分类等。因此,定义了与测试有关的三个基本参数:恶意移动代理百分比、可能的移动代理任务和移动代理计算的成功率。
在测试中首先在没有认证协议的情况下分别对五个移动计算任务进行测试,其中每次移动计算任务在其回路上运算 100次。图1是测试结果:
图1 没有认证协议的测试结果统计
在有认证协议的情况下分别对五个移动计算任务进行测试,其中每次移动计算任务在其回路上运算100 次。图2是测试结果:
图2 有认证协议的测试结果统计
在有认证协议时,各种情况的移动代理计算成功率都要高于没有认证协议的情况。在没有认证协议的情况下,随着恶意移动代理百分比的增加,移动代理计算的成功率成线性比率下降;但是在有认证协议的情况下,随着恶意移动代理百分比的增加,移动代理计算的成功率波动很小。无论是在有认证协议还是没有认证协议的情况,移动代理计算的成功率的总体状况是随着通信/计算比r 的增大,越来越低。
从保护移动代理平台的目的出发,当移动代理在网格环境中进行计算时,引入基于单向函数签名链的移动代理认证协议可以提高移动代理计算的成功率,特别是当恶意移动代理比例增加时,可以使移动代理计算的成功率保持在一个比较稳定的水平。但是仍然不能克服当计算任务的通信/计算比增加的时候,移动代理计算的成功率下降的问题。
[1]杨涛,刘文杰.基于梯度下降算法的神经网络模型研究.网络安全技术与应用.2013(4):75-77
[2]王丹,张代远.无线传感器网络LEACH路由算法的研究.计算机技术与发展,2010(10):221-223
[3]滕扬,刘文杰,曹晓东.无线传感器网络数据路由协议研究.网络安全技术与应用,2008(4):23-25
[4]Eung-Gu You,Keum-Suk Lee,A Mobile Agent Security Management,Advanced InformationNetworking and Applications,2004.AINA 2004.18th International Conference onVolume 2,2004 Page(s):360-365.
[5]Burkle,A.,Essendorfer,B.,Hertel,A.;etal,A Test Suite for the Evaluationof Mobile Agent Platform Security.Intelligent Agent Technology,2006.IAT '06.IEEE/WIC/ACM International Conference on 18-22 Dec.2006 Page(s):752 – 756.
[6]Xu,D.,Lein Harn,Narasimhan,M.,etal,An Improved Free-Roaming Mobile AgentSecurity Protocol against Colluded Truncation Attacks.Computer Software andApplications Conference,2006.COMPSAC '06.30th Annual International Volume2,Sept.2006 Page(s):309-314.