密码
算法
识别
技术研究
进展
展望
池亚平
第 30 卷 第 4 期北京电子科技学院学报2022 年 12 月Vol.30 No.4Journal of Beijing Electronic Science and Technology InstituteDec.2022密码算法识别技术研究进展与展望池亚平1,2 岳梓岩1 赵 伦31.北京电子科技学院,北京市 1000702.中国科学院信息工程研究所,北京市 1000933.西安电子科技大学,西安市 710071摘 要:唯密文条件下加密算法识别是密码分析和密码系统监管领域的研究热点,在对现有密码算法识别类型和识别方法进行总结分析的基础上,结合实验分析现有密码算法识别研究存在的问题和识别准确率影响因素,并对密码算法识别相关研究工作进行了展望。关键词:唯密文条件;密码分析;密码算法识别中图分类号:TP309.7 文献标识码:A文章编号:1672-464X(2022)4-01-14 作者简介:池亚平(1969-),女,北京人,教授,硕导,硕士,主要研究方向为虚拟化安全、可信计算、加密技术、软件定义网络。岳梓岩(1998-),男,通信作者,新疆哈密人,硕士研究生,主要研究方向为密码算法识别、加密流量分析。E-mail:1484253711 赵 伦(1999-),男,山西运城人,硕士研究生,主要研究方向为密码算法识别、加密流量分析。0 引言 随着信息技术的飞速发展,信息安全的重要性日益凸显,通过密码系统对数据进行加密保护是实现信息安全的重要环节之一,对密文进行密码分析也是密码学领域一个重要分支。在对密码系统进行监管时,密码分析者通常只能获取密文,无法确定是否正确调用了系统指定的密码算法,导致密码分析和密码设备监管工作困难重重1。1998 年密码学家 Lars Knudsen按照已获得的秘密信息的不同将分组密码的攻击分为五类,如表 1 所示。从表 1 可以看出,在唯密文条件下实现加密算法的识别是进行各类密码攻击的前提,也是之后开展密码分析的必要条件。信息安全中的攻与防是相辅相成的,一方面密码算法的识别研究是密码分析领域的重要分支,这也是对密码算法进行的一种攻击。另一方面,从密码算法设计角度来看,对抗现有技术对密码算法的识别,也是一种新挑战。密码算法识别目前有两个方面的研究,一方面是利用逆向分析 工 程 对 加 密 算 法 进 行 代 码 层 面 的 分析23,另一方面是在唯密文条件下对密码算法进行识别,本文研究仅针对第二方面进行研究。为此,本文从密码算法识别现状研究出发,重点研究融合了机器学习与深度学习技术的各种密码算法识别方法,对这些方法的特点、数据集获取及处理方式进行总结分析和实验验证,针对现有方法存在的问题进行了分析,并对密码算法识别技术发展方向进行了展望。(注:本文所设计实验内容的运行环境如表 2 所示。)北京电子科技学院学报2022 年表 1 针对分组密码的攻击类别类别已获得的秘密信息唯密文攻击(COA)加密算法与密文已知明文攻击(KPA)加密算法与若干明密文对选择明文攻击(CPA)加密算法及选定的明文和加密的密文选择密文攻击(CCA)加密算法及选定的密文和解密的密文选择文本攻击加密算法及选定的明密文对表 2 实验环境配置名称配置参数操作系统Windows 10CPUIntel(R)Core(TM)i5-8300H CPU 2.30GHzGPUNVIDIA GeForce RTX 1050ti内存8GB编程语言Python3.8深度学习框架Pytorch 1.7.11 密码算法识别技术评价指标 当前,密码算法识别工作大多使用机器学习中准确性相关指标进行评价,包括精确率、召回率、误报率、总体准确率等4,常用指标变量如表3 所示。表3 中各参数定义为:设 N 为密码算法类型数,即密文样本由 N 类密码算法加密而成;nij表示实际密码算法类型为 i 的密文被识别为密码算法类型 j 的样本数。表 3 常用指标变量指标表示说明值TP(TruePositive,真正)将属于某分类的密文样本识别为该分类TPi=niiFP(FalsePositive,假正)将不属于某分类的密文样本识别为该分类FPi=ijnjiTN(TrueNegative,真负)将不属于某分类的密文样本识别为非该分类TNi=njjFN(FalseNegative,假负)将属于某分类的密文样本识别为其他分类FNi=nij精确率定义为式(1):Precision=TPiTPi+FPi(1)召回率定义为式(2):Recall=TPiTPi+FNi(2)总体准确率定义为式(3):Accuracy=Ni=1(TPi+TNi)Ni=1(TPi+TNi+FPi+FNi)(3)精确率和召回率体现了识别方法在每个单独算法类别上的识别效果5。特别是当样本类别分布不均匀时,精确率和召回率可以准确获知每个类别的分类情况。总体准确率体现了识别方法的总体识别性能,好的算法应该同时具有较高的总体准确率、精确率和召回率。F-Measure 是综合查准率和查全率得到的评价指标,F-Measure 越高表明算法在各个类型的分类性能越好。F-Measure 定义为式(4):F-Measure=2PrecisionRecallPrecision+Recall(4)完整性反映了识别方法的识别覆盖率。完整性是指被标识为 i 的样本与实际类型为 i 的样本的比值,相当于精确率和召回率的比值,取值范围可能超过 1。完整性定义为式(5):Completeness=PrecisionRecall(5)2密码算法识别研究内容与研究现状 密码算法识别研究内容框架如图 1 所示,主要包括识别类型和识别方法。密码算法识别的首要任务是在唯密文条件下根据需求确定识别类型,之后再选用合适的识别方法。密码算法识别方法主要可以分为 3 类:基于统计检测的方法、基于机器学习的方法、基于深度学习的方法。密码算法识别研究内容框架如图 1 所示。2.1 识别类型2.1.1 加密数据与非加密数据加密的本质是在传输过程中通过使用特定的加密算法对数据进行加密处理,由此产生的数据是人们无法辨识和篡改的密文。密码算法识别首要工作是判断数据是否被加密,需分析密文2第 30 卷密码算法识别技术研究进展与展望 数据区别于明文数据的特征6,从密码学角度,经过加密得到的密文消除了统计特征,近似为随机数据。文献 7 基于 NIST 随机性检测标准8,统计了利用 RSA 公钥密码、AES-ECB、IDEA-ECB、DES-ECB 加密后的密文与随机文件(未被加密)的随机性特征值,得出密文文件与未被加密的文件在频率检验、块内频数检验、非重叠模板检验、游程检验、近似熵检验与离散傅里叶变换检验上的特征分布存在着明显区别,即从随机性分布出发,可有效识别与区分加密数据和非加密数据。2.1.2 密文所属加密体制文献9中提出,针对密文,密码算法识别的第一步是根据密文特点识别密码体制,其中包含古典密码、序列密码、公钥密码、分组密码等,第二步识别具体密码算法。图 1 密码算法识别研究内容公钥密码10主要有 RSA、ECC、IBC 三类11,针对 RSA 我国没有相应的标准算法出台,而针对 ECC 和 IBC,我国分别发布了相应的SM2、SM9 标 准 算 法,典 型 公 钥 密 码 包 括RSA1024、RSA2048、SM2、SM9;文献9提出的密码体制识别方案中包含 Substitution、Permuta-tion、TriviuSosemanuk、Grain、RC4、AES、Camellia、DES、3DES、SM4、RSA、ECC 在内的 13种密码算法,其中涉及古典密码体制、序列密码体制、分组密码体制、公钥密码体制。根据研究,可以得出经过非对称密码体制和单项函数密码体制加密后的密文具有较明显的长度特征,因此专门针对公钥密码体制和单向函数密码体制识别的研究与对称密码体制识别的研究相比较少,其长度特征总结如表 4 和 5所示。表 4 公钥密码体制长度特征总结公钥密码类别密文长度(bit)RSA10241024RSA20482048SM2256SM92563北京电子科技学院学报2022 年表 5 Hash 密码体制长度特征总结Hash 密码类别密文长度(bit)MD2128MD4128MD5128SHA1160SHA256256SHA384384SHA512512SM32562.1.3 相同密码体制下的不同算法现有密码算法识别工作主要针对对称密码体制,该体制下主要包括分组密码与序列密码。针对分组密码,文献12选取 AES、DES、3DES、IDEA、Blowfish、Camellia 六种分组密码,基于随机性测试算法的提取方式与参数设置,提出了一系列分组密码算法识别的新特征,输入随机森林算法中进行分类,得出基于随机性测试密文特征具有更低的维数的优势,在密码算法识别中具有一定的有效性。文献13通过分割变换密文文件提取特征向量,利用支持向量机(SVM)算法作为分类器,实现在短密钥流场景下,对 RC4、A5/1 和 Trivium 三种序列密码的准确识别。2.1.4 同一算法的不同工作模式对于分组密码而言,工作模式是一项增强密码算法安全性或扩展算法应用场景的技术。多次使用相同的密钥对多个分组加密,会引发许多安全问题。为了应对不同场合,因而需要开发出不同的工作模式来增强密码算法的安全性。NIST(SP800-38A)定义了 5 种“工作模式”。其中电码本(Electronic CodeBook,ECB)、密文分组链接(Cipher-block Chaining,CBC)、密文反馈(Cipher FeedBack,CFB)、输 出 反 馈(OutputFeedBack,OFB)这 4 种模式实际上覆盖了大量使用分组密码的应用14。针对应用广泛的分组密码,密码算法识别研究主要集中于 ECB 模式,但是很多密码应用场景更多地采用了 CBC 或者与 CBC 相关的模式。因此,对分组密码工作模式的分类与识别也属于密码算法识别领域,文献15针对 SM4 算法的四种模式,借助统计学方法与信息熵实现密文序列的特征提取。利用决策树分类算法进行二分类识别与四分类识别,结果表明,该方法在二分类问题中表现稳定,准确率高达 90%以上,而在四分类问题中,区分率在25%左右,与随机猜测准确率相近,识别准确率还有提升空间。2.2 识别方法从公开文献来看,总体上关于密码算法识别研究并不多见,现有方案主要针对分组密码开展相关研究,也取得了一些进展。下面详细介绍现有的密码算法识别方法,并从技术路线、识别效果等方面进行对比分析。2.2.1 基于统计检测的密码算法识别方法在该方向研究初期,学者们较多利用统计检测的思想进行探索。统计检测在分组密码安全性评估的过程中发挥着重要的作用,关于分组密码密文序列的统计检测初衷是通过将分组密码作为一个伪随机数发生器进行检测,以此判定分组密码输出序列是否拥有优秀的随机性能。在密码算法识别任务中,利用统计检测发现不同分组密码密文的随机程度存在差异,从而判断密文所属的密码算法。相关文献表明,随机性检测方法多达上百种,其中美国商务部国家标准技术协会(NIST)公布的 2010 版 SP800-22 标准中的15 种随机性检测算法(以下简称 NIST 随机性检测)8最为典型。文献16 提出除了随机性相关统计检测外,还有一类统计检测方法与分组密码的分组长度、密码结构等有关,因此基于分组长度,将分组密码看作是一个随机的多输出布尔函数,将 256个密文分组进行异或操作,统计其结果的汉明重量,进而通过期望值计算判断是否服从二项分布。将此方法用于 Rijndael、Camellia 和 SM4 算法,统计结果表明,这 3 种算法分别从第 4 轮、第5 轮和第 7 轮开始呈现出良好的统计性能,体现了 3 种算法的在该统计检测方法中表现出的差4第 30 卷密码算法识别技术研究进展与展望 异性。2015 年,文献17通过统计密文比特流中比特 0 与 1 的频数、特定序列出现的频数及固定分块长度内比特