本发明属于工业数据通信领域,属于信息安全方面,具体涉及一种高效的 OPC UA客户端与服务器端数据传输加密方法。
背景技术:
OPC UA作为一种先进的工业信息交换规范已经得到了业界大多数自动化设备生产商的认可,势必成为主流的工业信息交换系统。但是OPC UA现在技术不够完全成熟,对于在秘钥的加密解密方面以及数据传输的安全方面难以达到很好的状况,基于目前国内外对于OPC UA安全领域的研究很少,而且OPC UA规范仅定义了OPC UA支持的安全机制,并没有针对具体运行环境详细定义应该执行的安全策略,复杂的安全机制和通信的实时性是一对矛盾,在工控领域尤为突出,尤其是处于底层的控制器,对实时性的要求极为苛刻。如何平衡性能以及实时性的问题是目前研究的重点。
OPC UA在通信的过程中首先要建立安全通道,服务器和客户端程序互相验证对方的证书,如果双方信任彼此的证书,则在安全通道上建立会话。根据OPC UA规范,UA中常用的证书类型是X.509v3,常用的安全策略有Basic128,采用 RSA不对称算法加解密,SHA1算法生成消息签名。RSA算法是公开密钥系统的代表,其安全性建立在具有大素数因子的合数,其因子分解困难这一法则之上的。而AES算法作为新一代的高级加密标准,运行时不需要计算机有非常高的处理能力和大的内存,操作可以很容易的抵御时间和空间的攻击,在不同的运行环境下始终能保持良好的性能。这使AES将安全,高效,性能,方便,灵活性集于一体,理应成为网络数据加密的首选。相比较,因为AES密钥的长度最长只有256比特,可以利用软件和硬件实现高速处理,而RSA算法需要进行大整数的乘幂和求模等多倍字长处理,处理速度明显慢于AES;所以AES算法加解密处理效率明显高于RSA算法。在密钥管理方面,因为AES算法要求在通信前对密钥进行秘密分配,解密的私钥必须通过网络传送至加密数据接收方,而RSA采用公钥加密,私钥解密(或私钥加密,公钥解密),加解密过程中不必网络传输保密的密钥;所以RSA算法密钥管理要明显优于AES算法。从上面比较得知,由于RSA加解密速度慢,不适合大量数据文件加密,因此在网络中完全用公开密码体制传输机密信息是没有必要,也是不太现实的。AES加密速度很快,但是在网络传输过程中如何安全管理AES密钥是保证AES加密安全的重要环节。这样在传送机密信息的双方,如果使用AES对称密码体制对传输数据加密,同时使用RSA不对称密码体制来传送AES的密钥,就可以综合发挥AES和RSA的优点同时避免它们缺点来实现一种新的数据加密方案。
技术实现要素:
本发明的目的在于提升目前OPC UA系统中数据交换时的加密效率,由于RSA 非对称加密性能速度慢性能差的弱点,因此我们利用RSA与AES交互加密的算法,既可以保证实时性,又可以保证数据传输的安全性,这样更利于OPC UA实时性系统的加密使用,提出了一种高效的OPC UA客户端与服务器端数据传输加密方法。本发明的技术方案如下:
一种高效的OPC UA客户端与服务器端数据传输加密方法,其包括以下步骤:
a.服务器首先创建RSA密匙对,即RSA公钥和私钥,通过Internet网络发送RSA公钥到客户端,同时保存RSA私钥;
b.客户端创建AES密钥,并用该AES密钥加密待传送的数据,同时用接受的RSA公钥加密AES密钥;
c.用RSA公钥加密后的AES密钥同密文一起通过Internet网络传输发送到服务器;
d.服务器收到这个被加密的AES密钥和密文后,首先调用服务器保存的RSA 私钥,并用该私钥解密加密的AES密钥,得到AES密钥;
e.最后用AES密钥解密密文得到数据;
进一步的,步骤a中OPC UA服务器创建RSA密匙对,并且通过Internet发送RSA公钥到客户端,创建RSA密匙对的具体步骤如下。
1.1)随机选择两个不相等的质数p和q;
1.2)计算p和q的乘积n;
1.3)计算n的欧拉函数当n=1时,n为质数时,如果n是某一质数的m次方,即n=pm(p为质数,m为整数且大于等于1)。则(1-1/p),p是质数,则从1到pm的整数中,除去pk,m≥k≥1,余下的都与pm互质,也就是说,一共n个数,其中有pm-1个整数与n不是互质关系,则与n互质的整数个数为pm-pm-1,当n=p1*p2,且p1、p2互质时,有如果a与p1互质(a
1.4)随机选择一个整数e,其中且e与互质;
1.5)计算e对于的模反元素d;
1.6)将n和e封装成公钥,n和d封装成私钥。
进一步的,e选为65537。
进一步的,所述步骤b中客户端创建AES密钥,并且用该AES密钥加密待传送的数据,同时用接受的RSA公钥加密AES密钥的具体步骤如下;
2.1)对明文进行轮密匙加处理,对处理后的数据进行字节代换运算;
2.2)行变换,行变换对状态的每行以字节为单位进行循环右移,移动字节数根据行数来确定,第0行不发生偏移,第一行循环右移一个字节,第二行移两个,依次类推;
2.3)列混合变换,列变换就是从状态中取出一列,表示成多项式的形式后,用它乘以一个固定的多项式a(x),然后将所得结果进行取模运算;
2.4)重复上述步骤2.1)-步骤2.3)过程10次;
2.5)用RSA公钥加密AES密钥。
进一步的,所述步骤2.1)对明文进行轮密匙加处理,对处理后的数据进行字节代换运算。
进一步的,所述步骤2.3)列混合变换具体包括:列变换就是从状态中取出一列,表示成多项式的形式后,用它乘以一个固定的多项式a(x),然后将所得结果进行取模运算,模值为x4+1,其中a(x)={03}x3+{02}x2+{01}x+{02},这个多项式与x4+1互质,因此是可逆的,列混合变换的算术表达式为:s’(x)=a(x) s(x),其中,s(x)表示状态的列多项式。
本发明的优点及有益效果如下:
对于传统的OPC UA数据的加解密来说,RSA加解密速度慢,不适合大量数据文件加密,因此在网络中完全用公开密码体制传输机密信息是没有必要,也是不太现实的。AES加密速度很快,但是在网络传输过程中如何安全管理AES 密钥是保证AES加密安全的重要环节。这样在传送机密信息的双方,如果使用 AES对称密码体制对传输数据加密,同时使用RSA不对称密码体制来传送AES 的密钥,就可以综合发挥AES和RSA的优点同时避免它们缺点来实现一种新的对于OPCUA的数据加密方案。
附图说明
图1是本发明提供优选实施例OPC UA服务器和客户端秘钥交换以及数据传输加解密的运行流程图。
图2为AES算法流程图。
图3RES算法流程图。
图4AES与RES混合算法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。
本发明解决上述技术问题的技术方案是:
一种高效的OPC UA客户端与服务器端数据传输加密方法,其过在OPC UA 服务器端和OPC UA客户端建立好通信的基础上交互使用RSA和AES加解密的技术,用来提高OPC UA服务器端和OPC UA客户端数据传输加解密的实时性,快速性以及安全性。。下面结合附图和具体实施方式对本发明作进一步详细说明。
图1给出了OPC UA服务器和客户端秘钥交换以及数据传输加解密的运行流程图,具体是这样实现的:
1.我们的发明是在OPC UA客户端与OPC UA服务器端建立好通信的基础上的, OPC UA服务器创建RSA密匙对,然后将RSA公钥发送给OPC UA客户端,自己保留RSA私钥。
2.OPC UA客户端创建AES密钥,用该AES密钥加密待传送的数据,同时用接受的RSA公钥加密AES密钥。
3.用RSA公钥加密后的AES密钥同加密后的数据一起通过Internet网络传输发送到OPC UA服务器。
4.OPC UA服务器收到被加密的AES密钥和数据后,调用保存的RSA私钥,并用该私钥解密加密的AES密钥,得到AES密钥;
5.OPC UA服务器验证得到的AES密钥是否与客户端想匹配的AES密钥,如果相匹配,OPC UA服务器解密得到原始数据,不匹配,重新进行到第四步,继续执行程序。
图2给出了AES算法流程图,是这样实现的:
1.首先对于客户端,它首先创建一个AES私钥,并用口令对这个私钥进行加密。
2.然后把用口令加密后的AES密钥通过Internet网络发送到服务器。
3.客户端解密这个私钥,并用此私钥加密数据得到加密后的数据,加密后的数据和加密后的AES密钥一起通过Internet网络发送到服务器。
4.服务器收到后再用口令对加密密钥进行解密得到AES密钥,最后用解密后的密钥把收到的加密后的数据解密成原始数据。
图3给出了RES算法流程图,是这样实现的:
1.首先,服务器创建RSA密匙对,即一个公钥和一个私钥,公钥被发送到客户端,私钥则被保存在服务器。
2.客户端在接收到这个公钥后,用该公钥对原始数据进行加密得到加密后的数据,然后把加密后的数据通过网络传输给服务器。
3.服务器在收到它们后,用RSA私钥对收到的加密后的数据进行解密,最后得到原始数据。
图4给出了AES与RES混合算法流程图,是这样实现的:
本发明提出一种高效的OPC UA客户端与服务器端数据传输加密方法,该方法主要用于在OPC UA客户端和服务器之间安全交换秘钥信息以及数据传输的过程,主要包括以下步骤:
a.服务器首先创建RSA密匙对,通过Internet网络发送RSA公钥到客户端,同时保存RSA私钥;
b.客户端创建AES密钥,并用该AES密钥加密待传送的数据,同时用接受的RSA公钥加密AES密钥;
c.用RSA公钥加密后的AES密钥同密文一起通过Internet网络传输发送到服务器;
d.服务器收到这个被加密的AES密钥和密文后,首先调用服务器保存的RSA 私钥,并用该私钥解密加密的AES密钥,得到AES密钥;
e.最后用AES密钥解密密文得到数据;
1)步骤a中OPC UA服务器创建RSA密匙对,并且通过Internet发送RSA 公钥到客户端,创建RSA密匙对的具体步骤如下。
1.1)随机选择两个不相等的质数p和q;
1.2)计算p和q的乘积n(将n转换为二进制后,二进制的长度就是密钥的长度,实际应用中一般选择1024位、2048位);
1.3)计算n的欧拉函数当n=1时,n为质数时,如果 n是某一质数的m次方,即n=pm(p为质数,m为整数且大于等于1)。则p是质数,则从1到pm的整数中,除去pk,m≥k≥1,余下的都与pm互质,也就是说,一共n个数,其中有pm-1个整数与n不是互质关系,则与n互质的整数个数为pm-pm-1,当n=p1*p2,且p1、p2互质时,有如果a与p1互质(a
1.4)随机选择一个整数e,其中且e与互质(实际应用中e一般选为65537);
1.5)计算e对于的模反元素d;
1.6)将n和e封装成公钥,n和d封装成私钥。
2)步骤b中客户端创建AES密钥,并且用该AES密钥加密待传送的数据,同时用接受的RSA公钥加密AES密钥的具体步骤如下;
2.1)对明文进行轮密匙加处理,对处理后的数据进行字节代换运算。
2.2)行变换,行变换是一种线性变换,其目的就是使密码信息达到充分的混乱,提高非线形度。行变换对状态的每行以字节为单位进行循环右移,移动字节数根据行数来确定,第0行不发生偏移,第一行循环右移一个字节,第二行移两个,依次类推。
2.3)列混合变换,列变换就是从状态中取出一列,表示成多项式的形式后,用它乘以一个固定的多项式a(x),然后将所得结果进行取模运算,模值为x4+1。其中a(x)={03}x3+{02}x2+{01}x+{02},这个多项式与x4+1互质,因此是可逆的。列混合变换的算术表达式为:s’(x)=a(x)s(x),其中,s(x)表示状态的列多项式。
2.4)重复上述2.1-2.3过程10次;
2.5)用RSA公钥加密AES密钥。
3)步骤c中中用RSA公钥加密后的AES密钥同密文一起通过Internet网络传输发送到服务器。
4)步骤d中服务器收到这个被加密的AES密钥和密文后,首先调用服务器保存的RSA私钥,并用该私钥解密加密的AES密钥,得到AES密钥。
5)步骤e中最后用AES密钥解密密文得到数据,这个加解密过程以及密匙配对过程既可以完成通信验证又可以保证实时传输数据时的安全性。
根据上述从上面比较得知,由于RSA加解密速度慢,不适合大量数据文件加密以及实时的工业现场,因此在网络中完全用公开密码体制传输机密信息是没有必要,也是不太现实的。AES加密速度很快,但是在网络传输过程中如何安全管理AES密钥是保证AES加密安全的重要环节。这样在传送机密信息的双方,如果使用AES对称密码体制对传输数据加密,同时使用RSA不对称密码体制来传送AES的密钥,就可以综合发挥AES和RSA的优点同时避免它们缺点来实现一种新的数据加密方案。我们将这种加密方案用于我们OPC UA的数据传输上面来,既可以保证实时性,又可以保证数据的安全性,这对于我们工业方面来说十分重要。
以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。