APP下载

基于seq2seq模型的深度学习密码破译方法*

2019-10-09孙晓丽宋晓祥

通信技术 2019年9期
关键词:明文解码器加密算法

孙晓丽,郭 艳,李 宁,宋晓祥

(中国人民解放军陆军工程大学,江苏 南京 210007)

0 引 言

古希腊时期,人们尝试使用简单的加密方法对信息进行加密,以此来防止信息被窃取。随着时代的进步与发展,人们对个人信息的保密问题变得越来越重视。密码学以密码通信的研究为目的,通过对传输信息进行加密,防止第三方对信息的窃取[1]。密码技术的多样性为信息加密和信息安全提供了多样选择。密码技术因其能够在潜在威胁的环境中保证通信的安全获得了更多关注,广泛应用于军事通信保密、数据加密以及信息保密等方面。

明文和密文是一组存在复杂映射关系的数据对,密码破译是要找到密文所对应的明文。神经网络的出现为密码理论提供了全新的思路,促成了神经密码学的发展[1],同时神经网络也成为保密通信的一种新的实现途径。传统密码破译技术基于穷举法、字典法等,需要大规模完全数据库进行尝试实现,需要耗费大量的时间,效率低下。而基于神经网络实现密码破译,规避了传统密码破译方式的弊端。利用神经网络解决密码破译问题的关键在于寻找一种合适的神经网络。

文献[2-3]使用简单BP神经网络分别对椭圆曲线密码和公钥密码进行破译。文献[4]提出了一种新的神经网络结构——生成式对抗网络(GAN)。文献[5]在此基础上提出了一种新的模型——PassGAN,并将此网络应用于密码猜测的问题上,改变了利用传统破译工具进行字典学习破译的弊端。文献[6]受CycleGAN的启发,提出了一种新的网络——CipherGAN,并对vigerene密码进行破译,取得了较好效果。以上几种算法都证明所提模型在字符级密码破译方面有优异效果,但GAN模型的超参数对模型效果有较大影响。因此,需要找到一个合适的网络,使其能够高效、稳定地实现密码破译。

明文和密文是一组存在复杂映射关系的数据对,通过对其学习得到映射关系,与序列处理问题类似,因此可以使用合适的序列处理模型[7-11]解决密码破译问题。

基于此,本文采用一种基于深度学习的密码破译方法。首先,文章采用词嵌入的编码方式对输入数据进行编码,从而将明文和密文转化为可学习的存在某种内在关系的数据对,使其在确定数据输入形式的同时,保留序列之间的相关信息。其次,充分利用seq2seq(sequence to sequence)模型[12]实现多对多的特点进行网络学习,成功解决了明文密文长度匹配的问题。最后,使用多表置换密码的不同加密算法验证了模型的性能。仿真结果表明,无论哪种加密方式,所用模型都具有很好的破译效果,破译的准确率高达99%。本文所提的破译方法对研究其他密码破译问题具有重要的参考意义。

1 相关知识

1.1 seq2seq模型

seq2seq模型是一类端到端的算法框架,即序列到序列的转换模型框架,在机器翻译、自动应答等应用场景上经常出现。

Seq2Seq由编码器-解码器[13](Encoder-Decoder)框架实现。Seq2seq模型包含3部分——编码器、解码器和固定长度的语义向量(Context Vector),如图1所示。从图1可以看到,编码是将源序列转化为一个长度固定的语义向量,而解码的过程是将语义向量转化为目标序列。其中,语义向量中间语义编码是编码器最后一个时间步的状态,以此作为整个句子的语义向量。

图1 seq2seq结构

Seq2seq模型可以解决一对多、多对多的问题,将其应用于密码破译中,即无论明文密文的长度是否相等,理论上都可以实现密码的破译,有利于将模型推广到其他加密算法。

1.2 词嵌入

数据以何种形式输入网络,成为网络设计的又一问题。因此,结合现有的编码形式,摒弃独热码(One-hot)编码方式,选择词嵌入(Word Embedding)[13]的方式处理数据。在数据量较大的情况下,使用One-hot编码会造成较大的空间浪费,且One-hot编码会导致序列相关信息的缺失。词嵌入的方式可以通过网络学习词嵌入矩阵存储数据的相关信息,能够更多地保留源序列的特征值。训练网络的过程中,每个嵌入的向量都会更新。使用词嵌入进行编码,可以发现很多字符与字符之间的相似性,且能够可视化字符之间的关系。相较下,选择词嵌入的方式处理数据更贴近需求。词嵌入能够把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。结构如图2所示。

图2 词嵌入关系

1.3 多表置换密码

维吉尼亚密码(Vigenere)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。

自动密钥密码(Autokey Cipher)也是多表替换密码,与维吉尼亚密码密码类似,但使用不同的方法生成密钥。通常来说,它比维吉尼亚密码更安全。自动密钥密码主要有2种:关键词自动密钥密码和原文自动密钥密码。

Enigma是通过enigma机产生的一种多表替换密码,明文密文之间的相互转换需要对应相同的转子初始位置。相较于vigenere和autokey,enigma的生成过程更复杂。enigma是一种复式置换密码。

本文选择3种安全程度不同的置换密码进行实验,以此证明所用模型的正确性。

2 模 型

本文采用基于seq2seq的算法解决密码破译问题,通过对现有明文密文对的分析,学习明文密文对之间复杂的映射关系,从而实现对密文的破译。本文中,编码器与解码器均采用传统的递归神经网络(Recurrent Neural Network,RNN)实现,具体采用GRU神经单元搭建模型的架构。

模型的编码器和解码器的运算过程分别表示为:

其中,f和g都是激活函数,其中g函数一般为softmax函数。

Seq2seq模型能够很好地解决一对多、多对多的问题,能够很好地适应明文密文的长度。模型结构如图3所示。

图3 模型结构

由结构图图3可以看出,需要对现有密文进行处理,采用词嵌入的方式对其进行编码处理,并在训练过程中对其进行更新,从而得到合适的词嵌入矩阵。

本文所用模型的seq2seq算法过程如下:

输入:已知的密文

输出:产生的明文

1.对密文进行编码,编码方式为词嵌入;

2.编码后的数据输入编码器,得到语义向量C;

3.对语义向量进行解码,经过softmax层输出得到解码后的明文;

4.使用负最大似然求loss,并求出训练过程的准确率;

5.loss.backward()。

seq2seq算法描述了seq2seq模型的训练过程。在此过程中,语义向量C通常为编码器最后一个隐藏节点或者多个隐藏节点的加权和。本文实验中,采用最后一个隐藏节点作为语义向量C。解码器在t时刻的隐藏状态h(t)由t-1时刻的隐藏状态h(t-1)、输出y(t-1)以及语义向量C共同决定。在解码器的输出端增加softmax层,输出采用输出概率最大的方式,有效提高了准确率。

3 实验结果

实验中,编码器与解码器中的神经网络单元都选用GRU,激励函数选用线性整流(Rectified Linear Unit,ReLu)函数。本文在NVIDIA TITAN X上进行实验。

在训练网络的过程中,选择了一种有条件的teacher-forcing训练模式,即达到一定条件后,使用真实的目标输出作为下一个输入,而不是直接使用解码器猜测的结果作为下一个输入。使用teacherforcing能够使得模型收敛更快,且有限定条件的使用teacher-forcing能够避免不稳定情况的出现,从而达到更好的效果。

在训练过程中需要记录训练的准确率,对准确率的计算方式定义如下:

其中,δi表示第i组输出的明文是否与目标值一致,即使仅有一位不相同也不能将其视为一致。若一致记为1,而num_testset表示测试集的大小。

3.1 确定节点数

由于实验所用的训练数据较多,本实验中设定批量大小为512。在隐藏节点选取问题上,需要通过大量实验确定其个数,实验结果如图4所示,以autokey密码为例进行实验确定节点数。

由图4可以看出,在不同节点数情况下,准确率随迭代次数的增加而升高,当准确率达到一定程度时,保持稳定;随着节点数的增加,网络的收敛速度越来越快,网络的稳定性越来越高;低节点数时,训练过程存在较多波动;随着节点数的增加,网络的训练越来越稳定。在选定节点数时,应综合考虑准确率、稳定性以及收敛速度。因此,从仿真结果可以明显看出,当节点数为512时,网络的稳定性和收敛速度均为最优,但是其准确率相较节点数位256时偏低。综合考虑,选定节点数为256最合适。

3.2 密码破译效果实验

确定节点数后,对模型进行训练。训练过程中,在不同加密算法下,准确率、误差函数随迭代次数的变化图如图5、图6和图7所示。

图5 Autokey数据集节点数为256时准确率、误差与迭代步数的关系

图6 Vigenere数据集节点数为256时准确率、误差与迭代步数的关系

图7 Enigma数据集节点数为256时准确率、误差与迭代步数的关系

由图5、图6和图7可以看出,在不同加密算法的情况下,模型的准确率和误差函数的变化是同步的。准确率随迭代次数的增加而升高,误差函数的变化则与之相反;训练过程中,模型具有很高的稳定性;训练过程的准确率高达100%。

表1为在不同加密算法的情况下,测试阶段的破译准确率。在训练好的、对训练数据的破译率高达100%的模型下,对未知明文的密文进行破译。

表1 三种加密算法破译准确率

由表1可以明显看出,针对3种不同的加密算法,该模型能够很好地实现破译功能,准确率高达99%,说明seq2seq模型在字符级密码破译方面有较为优异的效果。

4 结 语

信息的安全问题受到越来越多的关注,信息的加解密问题成为当今研究的热点。相较于传统的密码破译方法,基于深度学习的密码破译方法更高效,且一个合适的模型可以推广到更多的加密算法上。因此,本文采用一种基于seq2seq模型的深度学习密码破译方法,首次将seq2seq模型应用于密码破译问题,将密码破译问题转换为序列处理问题。模型中,采用词嵌入的方式对数据进行处理,摒弃one-hot编码浪费信息、占用大空间的弊端,充分利用密文之间的相互关系。以3种不同的多表置换密码对模型进行检验,仿真结果显示,该模型在3种多表置换密码的破译问题中准确率高达99%,证明在字符级密码破译方面具有较为优异的效果。

但是,本文采用较为简单的加密算法对模型进行检验,为了更好地证明其在字符级密码破译方面的效果,下一步需要对复杂的字符级加密算法进行检验,并对其在字符级加密算法中进行推广。

猜你喜欢

明文解码器加密算法
科学解码器(一)
基于DES加密算法的改进研究
科学解码器(二)
科学解码器(三)
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
DES加密算法的实现
基于整数矩阵乘法的图像加密算法
奇怪的处罚
奇怪的处罚
基于小波变换和混沌映射的图像加密算法