一种用于数字化车间信息安全的混合加密通信方法与流程

文档序号:16514176发布日期:2019-01-05 09:31阅读:306来源:国知局
一种用于数字化车间信息安全的混合加密通信方法与流程

本发明涉及数字化车间信息安全领域,具体涉及一种用于数字化车间信息安全的混合加密通信方法。



背景技术:

在数字化车间管理(如图1)中,数据由服务器向终端或终端传输到服务器传输过程中,数据信息容易被监听或者篡改,会造成信息泄露或数据显示虚假数据如果在工控领域可能接收错误的指令信息,从而给工业生产带来巨大危害和损失,所以为了保证终端与服务器以及工业设备和管理系统之间网络通讯的可靠与数据安全,使用安全的通讯连接和可靠的数据加密算法来保证通讯和数据安全非常必要。

aes是美国联邦政府采用的区块加密标准,用于取代之前的标准des。全世界各个行业使用aes作为加密基础算法的领域非常广泛。截至2006年aes已经成为全球对称密钥加密中最流行的算法之一。aes具备三种加密特征:1.能最大程度抵抗已知攻击;2.与平台无关,加密解密效率快,编解码紧凑;3.设计简单。因此选择aes在不会损耗太多终端和服务器性能的情况下同时具备了较为可靠的数据加密方案。aes中混乱的密钥分散是分组密码算法设计的基本依据,抵御已知明文差分和线性攻击,变长密钥是设计重点。作为标准的加密算法,各大平台或软件语言内部都集成了标准算法。但集成算法也存在一些安全隐患。在逆向工程中通过分析原始程序内存得到密钥数据并不困难,困难的是逆向出原始的算法。虽然aes作为某些场景的标准,但语言继承算法的通用性太强。因此通过源程序得到密钥然后在用语言继承算法尝试解密的数据破解方式仍然可行,并且太过容易。

md5数字指纹或签名算法是加密算法的一个衍生,用于对数据生成唯一的数字指纹或签名数据,不对数据本身进行加密处理,只生成唯一的指纹密钥,指纹算法具备长度固定,容易计算,抗修改以及碰撞概率小的特征。与aes算法类似,作为通用和开放的标准算法,在开发时选择开源或语言自带算法会让系统安全性大打折扣。开源的算法和语言自带的算法由于其开放性,因此被最多的开发人员使用,也产生了最多的指纹字典。理论上md5不可逆,但由于通用特性已经存在很多的md5指纹映射数据库,因此短数据通过数据字典映射比对的方式很容易得到元数据。



技术实现要素:

针对标准的aes数据加密算法和标准的md5指纹摘要算法在数据加解密和密文验证过程中存在的缺点与不足,提出一种改进的aes数据加密算法和改进的md5指纹摘要算法并实现了数字化车间管理系统的通信安全。

本发明为实现上述目的所采用的技术方案是:一种用于数字化车间信息安全的混合加密通信方法,包括以下步骤:

步骤1:在通讯过程中,发送端使用ssl技术对传输通道进行连接加密;

步骤2:发送端对网络传输中的数据进行加密生成加密数据并发送给接收端;

步骤3:发送端对加密数据进行处理生成发送端数字指纹;同时接收端对接收的加密数据进行处理生成接收端数字指纹;

步骤4:通过对发送端数字指纹和接收端数字指纹进行指纹效验,判断出数据在传输过程中是否被篡改或丢失。

所述步骤2中发送端是采用自定义的aes算法对网络传输中的数据进行加密生成加密数据,包括:通过修改aes算法的安全哈希算法字典长度、置换表、以及置换选择和位移规则对要传输的数据片段或文件进行加密。

所述修改安全哈希算法字典长度为将字典长度随机修改成一个属于264范围内的数值。

所述修改置换表包括修改初始置换表、逆向初始置换表、扩展置换表。

所述修改置换选择和位移规则为将出现置换的位置按照数组范围进行混淆。

所述步骤3中发送端是采用自定义的md5算法对加密数据进行处理生成发送端数字指纹,包括:通过修改md5算法的置换数组组合和输出字节序列对发送端生成的加密数据进行处理生成发送端数字指纹。

所述步骤3中接收端是采用自定义的md5算法对接收的加密数据进行处理生成接收端数字指纹,包括:通过修改md5算法的置换数组组合和输出字节序列对接收端接收的加密数据进行处理生成接收端数字指纹。

所述修改md5算法的置换数组组合采用修改轮转和算法分离计算赋值的方法,所述修改输出字节序列采用修改区块转换过程变量的方法。

所述步骤4中是通过比对发送端数字指纹和接收端数字指纹是否相同来进行指纹效验。

本发明具有以下有益效果及优点:

1.安全性高,减少了因标准aes和md5算法通用性太强容易被攻击破解的可能,改进后的方法在保证数据安全的同时又没有对数字化车间管理系统的性能和网络过多的损耗。

2.通用性高,本发明以数字化车间管理系统安全拓展模式来提供一个可靠的信息安全方案,可适用于其他需要的场景。

附图说明

图1数字化车间管理架构图;

图2为本发明整体流程图;

图3ssl技术方案流程图。

具体实施方式

下面结合附图及实施例对本发明做进一步的详细说明。

如图1所示,数字化车间管理架构图。采集服务器通过串口转网口将工业设备上的数据采集,并以一定的格式存储到database,管理服务器将database中的数据以图表的形式通过管理客户端(android端和ios端)供用户查看。

本发明的总体流程如图2所示,一种用于数字化车间信息安全的混合加密通信方法,主要包括以下步骤:

步骤1:在通讯过程中使用ssl对传输通道进行连接加密(ssl技术方案流程图如图3所示):(1)利用rsa安全传输aes生成密钥所需的seed(32字节)。(2)利用aes_encrypt/aes_decrypt对socket上面的业务数据进行aes加密/解密。理论上只需要aes就能保证全部流程,但由于aes加密所需要的aes-key是一个结构。这样一个结构,如果通过网络进行传输,就需要对它进行网络编码,openssl里面没有现成的api所以就引入rsa来完成首次安全的传输,保证seed不会被窃听。同样,只使用rsa也能完成全部流程,但由于rsa的处理效率比aes低,所以在业务数据传输加密上还是使用aes。在实际的socket应用开发时,需要将这些步骤插入到client/server网络通信的特定阶段。

步骤2:使用自定义的aes算法对网络传输中的数据进行加密:(1)修改标准算法的安全哈希算法字典长度,随机修改一个基于264范围内的数值。只要不与开源的库中的数值相同即可,修改此值将导致加密结果与标准算法或多数开源库算法产生的结果出现最大可能的差异化,并且无法使用标准算法和开源库算法解密。但从内存中取得字典长度的并不困难,因此为了进一步加强安全,还需要进一步对算法修正。(2)修改算法置换表,aes包含多种置换,包括但不限于初始置换,逆向初始置换,扩展置换。方案示例:例如标准算法置换数组如下{14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7},我们将其修改为{16,6,12,1,5,11,15,9,4,13,3,14,4,7,9,0}。上述示例描述一个置换参数赋值来产生不同的结果。假设1+1=2但是我们现在将加数和被加数值修改,那么结果等于2的可能就不会太大,即便相同的结果解密还原那么也会还原出不同的数据。以此进行数组置换实现与标准算法和开源算法不同的数组顺序从而产生截然不同的加密结果。如果算法独立,那么表示无法与标准算法兼容,从而最大可能的提升算法安全。

步骤3:在发送端和接收端加密数据后使用自定义的md5算法生成数字指纹:

(1)修改置换数组组合,例如:

假设组ff中的填充顺序为(a,b,c,d,x,s,ac),而内部的计算方式为(a)+=f((b),(c),(d))+(x)+ac;那么将填充和计算顺序自定义。

假设组ff中填充的数值定义如(a,b,c,d,x[0],s11,0xd76aa478);根据自己的规定填充为(c,a,b,d,x[0],s11,0xd76aa478)。

(2)修改输出字节序列。在outpout中假设标准输出为:output[j+1]=(byte)((input[i]>>8)&0xff);自定义输出如下:output[j+3]=(byte)((input[i]>>8)&0xff);

上述内容为,如果标准算法定义了一个数组填充123456789那么我们自己定义一个填充数组为987654321,参考标准并不遵循标准,而填充过程与算法是内部的,无法被看到,因此将填充规则改变之后数据结果将不再与标准算法相同,而标准算法也无法解密其数据。

经过上述技术手段,md5算法的加密结果将完全不同于标准和开源库所产生的结果,以此防止通过字典碰撞来破解数据的可能。

步骤4:通过指纹效验判断数据在传输过程中是否被篡改或丢失。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1