摘要 本文基于神经网络算法,训练了一个能产生随机函数的神经网络算法,对重要明文数据进行序列加密。
关键词 数据加密 序列加密 神经网络
1 引言
对于一些重要数据,为了保证其安全性,我们需要对其进行加密。当前,数据加密算法有多种,本文采用了序列加密算法对重要数据进行加密,一是因为序列加密算法的加密密钥与解密密钥相同,操作相对简单;二是序列加密算法是基于比特流或字符流的;三是序列加密算法的保密性取决于密钥序列的随机性。由于神经网络能根据不同的训练情况,对输入空间与输出空间进行非线性的函数映射,因此,我们可以用神经网络的方法作为密钥序列产生器来进行数据加密。
2 数据加密概述
2.1 数据加密原理
一般的数据加密解密模型如图1,在加密阶段,明文X用加密算法和加密密钥Ke得到密文Y=E(X,Ke)。
加密阶段 解密阶段
截取者
明文X 明文X
密文Y=E(Ke,X)
加密密钥Ke 解密密钥Kd
图1 一般数据加密解密模型[1]
在保密阶段,密文截取者有可能盗取密文,但由于没有解密密钥Kd而无法将其还原成明文,从而保证数据的安全性。
2.2 数据加密技术分类
数据加密的技术可分为两类,即对称加密和非对称加密。对称加密的加密密钥和解密密钥相同,非对称加密的加密加密密钥和解密密钥不相同,加密密钥可以公开而解密密钥需要保密。在对称加密算法中,主要有序列密码加密法和分组密码加密法[2]。
2.3 序列加密算法
这种加密算法将明文X看成连续的比特流(或字符流)x1,x2,x3,…..,在加密过程中用密钥序列K=K1,K2,…中的第i个元素,对明文中的xi进行加密。如图2所示。
加密过程 yi=E(Ki,xi)=xi XOR Ki
解密过程 D(Ki,yi)= (xi XOR Ki) XOR Ki
从上述分析可得,序列密码加密算法的保密性取决于密钥的随机性。如果密钥是真正的随机数,则在理论上是不可破的,但是这种算法需要的密钥大得惊人,很难在实际中应用。
随机种子I 加密 随机种子I 解密
Ki Ki
Xi yi xi
明文序列 密文序列 明文序列
图2 序列加密[1]
2.4 基于神经网络方法的序列加密算法模型
目前人们常用伪随机序列作为密钥,但是要求序列的周期要长,随机性要好。
神经网络经过训练后,网络就会进入到某一种稳定的状态,对于一个已定的输入,神经网络会按照某种非线性运算规则,输出一个确定值。由此,可以利用神经网络方法来产生伪随机数,同时,神经网络每次产生输出值经过发散函数处理后,作为下一次的随机种子输入到神经网络中去。
对于一个初始的随机种子,神经网络会产生一个与明文相匹配的伪随机数列。利用这种方法,可以实现一次一个密钥。用户在使用时,只需要知道初始随机种子就可以进行加密解密。而且在每次加密解密时,初始随机种子不同,产生的密文也不同。如图3所示。
随机种子I 随机种子I
Ki Ki
图3 用神经网络进行序列加密模型
为了提高密钥序列的周期性,本文引进了发散函数Fx。其作用是:1)使得任何两个函数乘积的周期都大于等于其中一个函数的周期,即 T(f(x)*g(x))>= T(f(x)), T(f(x)*g(x))>= T(g(x)),2)若神经网络的输入与输出不一致,则需要将神经网络的输出转换为相匹配的输入,3)尽可能使输入值不重复。T为获得函数周期的函数,f(x)、g(x)为函数。
3 神经网络加密算法描述
利用神经网络方法进行加密分为两个阶段,即准备阶段和加密阶段。
3.1 准备阶段
在利用神经网络方法对数据进行加密之前,首先要设计或者选择某一个神经网络,包括其隐含层的层数,隐含层及输入层,输出层的神经元个数,每个神经元的初始权值以及样本值。然后对该网络进行训练,使之具有一定的分类能力。
目前,神经网络的设计和学习算法可以借助于编程语言实现,也可以借助于相应的工具 ,如Matlab,使用起来非常方便。经过学习后,网络中的层数,各层的神经元个数,以及每个神经元的权值等数据写入到加密盘或者数据库文件中去,为后面加密解密所用,操作过程如图4所示。
图4 操作过程框图
3.1 加密阶段
加密前,从加密盘或者数据库文件将神经网络层数,神经网络权系数据读入到神经网络中去,生成一个用于加密的神经网络。对于初始给定的随机种子和相同的神经网络,该神经网络都会生成一个相同的伪随机数列。加密开始时,神经网络接受初始随机种子,产生第一个伪随机数作为加密密钥与明文的第一个数进行异或运算,生成第一个密文数。然后,将第一个伪随机数经过发散函数处理,生成下一个送入到网络的随机种子——如此反复,直到所有的明文数据处理完毕。所有的明文数据处理完毕后,将初始给定的随机种子保存到文件中去。至此,整个数据加密才算完毕,其流程如图5所示。
加密过程 解密过程
是 是
否
结束
结束
图5 加密解密流程图
4 程序实现
本文对一个输入层为三个节点,输出层为一个节点的神经网络用Delphi对上述算法的主要部分进行了实现。在Delphi 中自定义一个类TneuralNet,该类的属性有神经网络层数、每一层的节点个数、每一个节点输出函数和初始随机种子树。
其中要用到的函数有:
PROCEDURE ReadDataToNet ( Filename:String;net: TneuralNet ) ; // 从文件读入数据到网络
PROCEDURE SaveSeedToFile ( Filename:String ) ; // 从随机种子写入到文件
FUNCTION ReadSeedFromFile ( Filename:String ) ; // 从文件中读出随机种子
FUNCTION NetOutput(input1,input2,input3:integer;net: TneuralNet) : integer; //经过神经网络计算输出一个值
PROCEDURE Fx(int:integer;Var Out1:integer; Var Out2:integer; Var Out3:integer);//发散函数
加密函数:
PROCEDURE JiaMi(Str1:String;Var Str2:String) //对一串数据进行加密 str1为任意长度的
//字符串以’#0’结束
VAR
InitSeed1 , InitSeed2 , InitSeed3 :Integer
I ,Seed1,Seed2,Seed3: Integer;
Pass ,C:Char
BEGIN
ReadDataToNet( ‘net.dat’ , Net) ;
InitSeed1:=Strtoint(editmask1.text) ;
InitSeed2:=Strtoint(editmask1.text) ;
//上述初始随机种子也可以根据日期,时间,姓名等用随机函数产生
Pass:=NetOutput(InitSeed1, InitSeed2, InitSeed3, Net) ;
I:=0;
While(I<>length(str1))
BEGIN
Str2:=Char( byte(pass) xor byte(Str1) ) ;
Fx(Pass, Seed1, Seed2, Seed3);
Pass:=NetOutput(Seed1, Seed2, Seed3, Net) ;
I:=I+1;
END;
Savedatatofile(‘seed.dat’) ;
END;
PROCEDURE JieMi( ) //对一串数据进行解密
BEGIN
VAR
I ,Seed1,Seed2,Seed3: Integer;
Pass ,C:Char
BEGIN
ReadDataToNet( ‘net.dat’ , Net) ;
ReadSeedFromFile (‘seed.dat’) ;
Pass:=NetOutput(Seed1,Seed2, Seed3, Net) ;
I:=0;
While(I<>length(str1))
BEGIN
Str2:=Char( byte(pass) xor byte(Str1) ) ;
Fx(Pass, Seed1, Seed2, Seed3);
Pass:=NetOutput(Seed1, Seed2, Seed3, Net) ;
I:=I+1;
END;
END;
5 结束语
用神经网络方法加密的优点是,1) 实现了“一次一密”,安全性高。2) 产生的伪随机数列的随机性高。3) 加密后,密文数据量没有增加。4) 密文截获者要想破译密文,必须同时知道网络结构,网络参数以及初始化随机种子,否则很难破译。但是,加密成功的好坏关键在于如何去设计一个好的网络和发散函数。
参考文献
1 黄叔武,杨一平,计算机网络工程教程,北京,清华大学出版社,1999
2 尹朝庆,尹 皓 ,人工智能与专家系统,北京,中国水利水电出版社,2001
3 袁曾任,人工神经元网络及其应用,北京,清华大学出版社,1992.
高中各年级课程推荐
|
||||
年级
|
学期
|
课程名称
|
课程试听
|
|
高一 |
高一(上)、(下)同步复习
|
语文 | ||
英语 | ||||
数学 | ||||
数学(期中串讲) | ||||
数学(期末串讲) | ||||
数学拔高 | ||||
物理 | ||||
化学 | ||||
生物(一) | ||||
地理 | ||||
历史 | ||||
政治 | ||||
高中专项突破课
|
语文写作 | |||
英语阅读理解 | ||||
英语写作 | ||||
英语完形填空 | ||||
物理功和能量 | ||||
高二 |
高二(上)、(下)同步复习
|
语文 | ||
英语 | ||||
数学(理) | ||||
数学拔高(理) | ||||
数学(文) | ||||
数学拔高(文) | ||||
物理 | ||||
数学(期中串讲) | ||||
数学(期末串讲)(理) | ||||
数学(期末串讲)(文) | ||||
化学 | ||||
生物(一) | ||||
生物(二) | ||||
生物(三) | ||||
地理 | ||||
历史 | ||||
政治 | ||||
高三 |
高考第一轮复习
|
语文 | ||
英语 | ||||
数学(理) | ||||
数学拔高(理) | ||||
数学(文) | ||||
数学拔高(文) | ||||
物理 | ||||
物理拔高 | ||||
化学 | ||||
生物 | ||||
地理 | ||||
政治 | ||||
历史(韩校版) | ||||
历史(李晓风版) | ||||
高考第二轮复习
|
数学(理) | |||
数学(文) | ||||
英语 | ||||
物理 | ||||
化学 | ||||
地理 | ||||
高考第三轮冲刺串讲
|
语数英串讲(理) | |||
语数英串讲(文) | ||||
物化生串讲 | ||||
史地政串讲 | ||||
高考试题精讲
|
数学(理) | |||
英语 | ||||
化学 | ||||
物理 | ||||
2021高考研究2021高考策略(理) | ||||
2021高考研究2021高考策略(文) | ||||
Copyright © 2005-2020 Ttshopping.Net. All Rights Reserved . |
云南省公安厅:53010303502006 滇ICP备16003680号-9
本网大部分资源来源于会员上传,除本网组织的资源外,版权归原作者所有,如有侵犯版权,请立刻和本网联系并提供证据,本网将在三个工作日内改正。