随着信息技术的迅速发展、电脑化教学与远程的网络化教学的普及,给传统的教学方式带来了重大的革命,也给教学改革的实施者们提出了很多新的课题。如何有效进行作业管理就是一个让很多老师头痛的问题。再者数据在传输的过程中,尤其是在网络环境下,数据的安全性成为了严重的问题。因为在网络环境中,时刻需要小心传输的数据被第三方获取,即便就算被第三方获取了,也需要确保被获取的数据的保密性。
一、通讯代理Agent角色构成
通讯代理Agent在作业管理系统中位于客户与服务器之间,负责完成客户与服务器之间的数据通信。通讯代理Agent包含有两种角色:客户通信代理角色(CL_Agent)和服务器代理角色(SV_Agent和ComAgent)。客户通信代理角色位于客户端,服务器代理角色位于服务器端。Client、Agent与Server三层结构所完成的整个通讯过程如图1所示。
二、通讯代理Agent的数据加密
上述内容中介绍了JobManager中的通讯代理Agent。通过介绍,也可以看出现在的通讯机制中没有数据加密的功能,这使得数据传输过程中的安全性不能得到保证。下面介绍AES加密解密模块是如何运用到JobManager的通讯代理Agent中的。
数据传输中如果使用加密技术,必然会对性能造成一定的影响,所以,我们只对需要加密的数据进行加密。这个由用户来指定。在数据传输前,需要判断是否需要加密,如果需要,则加密后再进行传输;如果不需要,则直接进行传输。所以,客户通信代理CL_Agent和服务器通信代理SV_Agent的主要功能作出了一些变化。
客户通信代理CL_Agent的功能主要体现在以下五个方面:
1)对于由客户发来的原始命令,完成对原始客户命令的打包功能(即客户命令的串行化);
2)如果客户发来的原始命令需要加密,则对串行化后的数据进行加密。
3)对于由服务器端发送过来的结果数据,如果是加密后的数据,则先进行解密。
4)完成对服务器端发送过来的结果数据的解包功能(即结果数据的反串行化);
5)真正的数据传输功能,即发送客户端的命令,和接收由服务器端发送过来的结果数据;
服务器通信代理SV_Agent的功能与客户通信代理CL_Agent的功能相对应,同样也主要体现在以五个方面:
1)对于由客户端发送过来的命令,如果是加密后的数据,则先进行解密。
2)完成对客户端发送过来的命令的解包功能(即客户命令的反串行化);
3)对于由服务器或者ComAgent处理完成的结果数据,完成对结果数据的打包功能(即结果数据的串行化);
4)如果由服务器或者ComAgent处理完成的结果数据需要加密,则对串行化后的数据进行加密。
5)真正的数据传输功能,即接收由客户端发送过来的命令,和发送服务器或者ComAgent处理完成的结果数据的结果数据;
三、加密解密模块的实现
1、加密过程
AES算法每次能够加密128位的数据。AES算法的加密过程包括一个初始密钥加法,记为AddRoundKey,接着进行Nr-I次轮变换Round,最后再使用一个轮变换FinaIRound。初始的密钥加法和每个轮变换均以状态State和一个轮密钥作为输入。第i轮的轮密钥记为ExpandedKye[i],初始密钥加法的输入记为ExpandedKey[0]。从初始密钥CipherKey推出扩展密钥ExpandedKey的过程为KeyExpansion。
AES的加密过程如下:
AES(State,CipherKey)
{
KeyExpansion(CipherKey,ExpandedKey);
AddRoundKey(State,ExpandedKey[O]);
for(i=l; i<Nr; i++) Round(State,ExpandedKey[i]); FinaIRound(State,ExpandedKey[Nr]); } 2、解密过程 解密过程的流程如下所示: INVAES( State,CipherKey) { invKeyExpansion (CipherKey,InvExpandedKey); AddRoundKey (State,hvExpandedKey+Nb*Nr); for(i=Nr-l; i>0; i--)
hvRound (State,hivExpandedKey+Nb*i);
InvFinaIRound (State,InvExpandedKey);
>
解密过程为加密过程的逆运算。
四、AES的CBC加密技术
在网络环境中,JobManager要时刻警惕传输的数据被第三方获取并利用。这里使用了AES的CBC加密技术。
在CBC模型中,首先将明文,按照128位为块分为明文块O,明文块1,…明文块n;IV是需要初始化的向量。密文块O,密文块1,…密文块n等为加密结果。
先将明文块O与初始化的Ⅳ异或,然后在AES加密模块中按照密钥加密,得到密文块O;明文块1与密文块0异或,再用AES加密得到密文块l;依次反馈,链式加密得到密文块0,密文块1,…密文块n。解密过程与此相同。
小知识之Agent技术
Agent技术在90年代成为热门话题,甚至被一些文献称为软件领域下一个意义深远的突破,其重要原因之一在于,该技术在基于网络的分布计算这一当今计算机主流技术领域中,正发挥着越来越重要的作用。