分组密码算法的自相关检测参数选择_范丽敏
NAYUTA:一种基于分组密码的加密算法
Computer Science and Application 计算机科学与应用, 2023, 13(10), 1889-1901Published Online October 2023 in Hans. https:///journal/csahttps:///10.12677/csa.2023.1310187NAYUTA:一种基于分组密码的加密算法董旭鹏1,周雪晴1,杨文忠1,孟繁一21新疆大学计算机科学与技术学院(网络空间安全学院),新疆乌鲁木齐2复旦大学微电子学院,上海收稿日期:2023年9月16日;录用日期:2023年10月16日;发布日期:2023年10月23日摘要分组密码作为对称密码的一个重要分支,在保护信息安全方面具有重要作用;当今主流的分组密码算法有DES、AES、SMS4等加密算法。
该算法作为基于分组密码设计的加密算法,选取分组密码的K空间中的密钥元素作为置换依据对密文进行置换,并在置换完毕后将密钥插入密文中,通过函数将密文中的所有块和密钥进行处理并发送。
相较于其他的加密算法,NAYUTA主要面向即时通讯,利用密文–密文验证的双因子验证模式和密文–密文验证的双因子混合模式,增加了统计学分析攻击的难度,同时也保证了密文信息的可信性和完整性。
对于双因子验证模式的处理函数而言,该模式是一种基于时间的对称加密方式,使得加密近似于理想OTP (One-Time Password)的加密方式。
NAYUTA目前已将在软件层面和硬件层面均有实现。
关键词分组密码,对称加密,密码学,加密算法,信息安全,一次一密,信息内容安全NAYUTA: An Encryption Algorithm Based on Block CiphersXupeng Dong1, Xueqing Zhou1, Wenzhong Yang1, Fanyi Meng21School of Computer Science and Technology (School of Cyberspace Security),Xinjiang University, UrumqiXinjiang2School of Microelectronics, Fudan University, ShanghaiReceived: Sep. 16th, 2023; accepted: Oct. 16th, 2023; published: Oct. 23rd, 2023AbstractAs an important branch of symmetric ciphers, block ciphers play an important role in protecting董旭鹏 等information security; today’s mainstream block cipher algorithms include DES, AES, SMS4 and other encryption algorithms. As an encryption algorithm designed based on block cipher, the al-gorithm selects the key element in the K space of the block cipher as the replacement basis to re-place the ciphertext, and inserts the key into the ciphertext after the replacement is completed, and processes and sends all blocks and keys in the ciphertext through the function. Compared with other encryption algorithms, NAYUTA is mainly oriented to instant messaging, and uses the two-factor authentication mode of ciphertext-ciphertext verification and the two-factor hybrid mode of ciphertext-ciphertext verification, which increases the difficulty of statistical analysis of attacks and ensures the credibility and integrity of ciphertext information. For the processing functions of the two-factor authentication mode, this mode is a symmetric time-based encryption method, which makes the encryption similar to the ideal OTP (One-Time Password) encryption method. NAYUTA will now be implemented at both the software and hardware levels.KeywordsBlock Cipher, Symmetric Encryption, Cryptology, Encryption Algorithms, Information Security, One Secret at a Time, Information Content SecurityCopyright © 2023 by author(s) and Hans Publishers Inc.This work is licensed under the Creative Commons Attribution International License (CC BY 4.0)./licenses/by/4.0/1. 引言随着信息网络技术的发展,人们使用网络进行社会活动的现象越来越普遍,同时使用网络的人数也在不断增加,在网络不断便利人们的同时,也产生了一系列与网络安全和信息安全相关的问题[1]。
实验二:分组密码实验
实验二:分组密码实验一、实验目的通过使用 DES 算法对实际的数据进行加密和解密来了解密码体制的原理。
二、实验要求(1)所下发程序是不完整的,请你完成程序中加密函数的第16次迭代,解密函数的第1次迭代,调试程序确保正确。
(2)用自己姓名拼音的前八个字母作为明文,学号后八位作为密文,观察实验结果,检验程序的功能是否正确。
(3)调试程序,观察并记录:L3与R2的值,阐述他们之间有何关系,并解释结果。
(4)连续点击解密按钮,观察明文输出有什么变化,并解释为什么?修改程序使连续点击解密按钮,输出的明文不会发生前面观察的现象。
(5)修改程序,使得密文以二进制码的形式输出。
(选做)三、相关知识信息加密根据采用的密钥类型可以划分为对称密码算法和非对称密码算法。
对称密码算法是指加密系统的加密密钥和解密密钥相同,或者虽然不同,但是可以从其中任意一个推导出另一个,更形象的说就是用同一把钥匙开锁和解锁。
在对称密码算法的发展历史中曾出现过多种优秀的算法,包括 DES、3DES、AES 等。
下面我们以 DES 算法为例介绍对称密码算法的实现机制。
DES 算法是美国 IBM 公司在 20 世纪 70 年代提出,并被美国政府、美国国家标准局和美国国家标准协会采纳和承认的一种标准加密算法。
它属于分组加密算法,即明文加密和密文解密过程中,信息都是按照固定长度分组后进行处理的。
混淆和扩散是它采用的两个最重要的安全特性,混淆是指通过密码算法使明文和密文以及密钥的关系非常复杂,无法从数学上描述或者统计。
扩散是指明文和密钥中每一位信息的变动,都会影响到密文中许多位信息的变动,从而隐藏统计上的特性,增加密码安全。
DES 将明文分成 64 比特位大小的众多数据块,即分组长度为 64 位。
同时用56 位密钥对 64 位明文信息加密,最终形成 64 位的密文。
如果明文长度不足 64 位,则将其扩展为 64位(例如补零等方法)。
具体加密过程首先是将输入的数据进行初始换位(IP),即将明文 M中数据的排列顺序按一定的规则重新排列,生成新的数据序列,以打乱原来的次序。
现代密码学_第四五讲 分组密码
循环左移
D1 (28位) (56位) 置换选择2 k1 (48位)
14 3 23 16 41 30 44 46
置换方法
17 28 19 7 52 40 49 42 11 15 12 27 31 51 39 50 24 6 4 20 37 45 56 36 1 21 26 13 47 33 34 29 5 10 8 2 55 48 53 32
20
迭代的轮数
分组密码一般采用简单的、安全性弱的密码函数进行多
轮迭代运算,使得安全性增强。一般来说,分组密码迭代轮 数越多,密码分析越困难,但也不是追求迭代轮数越多越好, 过多迭代轮数会使加解密算法的性能下降,而实际的安全性 增强不明显。 决定迭代轮数的准则:密码算法分析的难度大 于简单穷举搜索攻击的难度。分组密码迭代轮数一般采用8、 10、12、16、20的居多。
循环左移
C16 (28位)
循环左移
C16 (28位) (56位) 置换选择2 k16 (48位)
注:去掉9,18,22,25,35,38, 43,54位
注:密钥各位在子密钥出现次数基本相同(12次至15次),平均次数为13.7
30
压缩替代S-盒(48位压缩到32位)
48比特
6比特 6比特 6比特 6比特 6比特 6比特 6比特 6比特
考虑,通常密钥长度t不能太大。当然,密钥长度t不能太小,
否则,难以抵抗对密钥的穷举搜索攻击。
7
分组密码的要求
分组长度要足够大 密钥量要足够大
当分组长度较小时,攻击者通过 穷举明文空间,得到密码变换规 律,难于抵御选择明文攻击。
密码变换足够复杂
加密和解密运算简单 无数据扩展或压缩
21
分组密码发展报告11-15
Ding and J. Yuan, A Family of Skew Hadamard Difference C. Carlet, Comp. Theory,2006 Sets, J. K. Feng, An Infinite Class of Balanced Functions with Optimal
F.
MMB Block Cipher,SAC 2009 W. Zhang, W. Wu, D. Feng. B. Su,Some New Observations on the SMS4 Block Cipher,ISPEC 2009 X. Sun, X. Lai, The Key-Dependent Attack on Block Ciphers, ASIACRYPT 2009
Embedded Systems)
Hardware and
主要侧信道攻击:
计时攻击 能量攻击 错误攻击 电磁攻击 缓存攻击
传统分析方法
基于压缩感知贪婪算法的分组密码设计理论的研究
及其对 于贪婪 算法的构造 ,以及密 钥扩展 算法的设计等 ,进 而为用户
的 信 息 安 全提 供 理 论 保 证 。
0为变 换基 的逼 近 或者 等价 的稀 疏 表 示 。根据 ( 2 )来 设计 出一个 稳定且 和变换 基 设 无关 的 MX N维测 量矩 阵 ,并测量 对 0 获得测量 的序 列 y。
n f o r ma t i o n S e c u r i t y・ 信息安全
基于压缩感知贪婪算法 的分组 密码设 计理论的研究
文/ 邓 胡滨 胡锐 锋
本 文通 过研 究分 析压 缩 感知 贪婪 算法 中的 M P 和0 M P两种 重构 算 法做 为 密钥加 解码 的 可行 性设 计,并对 该算法应用 于分组 密码的 设 计原 理进行 阐述,并详 细阐述 了
3分组密码设计 的原理
寻 找一 种 算法 ,可在 密钥 控 制之 下, 从 足够大足够好 的一个 置换子集里,迅速又简单 的挑选一个置换 , 来加密 当前的 明文输入数据 。 通常情况 下,分 组密 码设计的原则有实用性和 安全性两个原则 。实用 性原则注意的是分组密 码算法效益和速度 的提 高,有效性原则针对 的 是怎样设计才能够达到组高 的安全性 。 分组密码安全性原则主要基于 S h a n n o n提 出的扩散与混乱两个原则 。 其 中,混乱原则 中, 设计 出来 的密码要让 密文,明文,密钥间有复 杂 的依赖关系 ,从而 让分析密码的人没办法利 用这种混乱 的关 系。而对 于扩散原则 ,设计 出 来的密码要让密钥每位 数字都能够对密文或者 明文的多位数字有影 响,这 样能够防止密码分 析者利用逐字破译的方式获知密码 。 分组密码设计 中的非线性变换通常称 为 S 盒 ,非线性变换可 以提 供比较好的混乱;分组 密码设计 中的线性变换一般称 作 P置换 。我们 应 当注意:S盒不但 能够产 生混乱,还能扩散 。 P置换也有相 同的作用 。 .
一种评估分组密码密文的随机性度量值分布特征的新方法
优先出版 计 算 机 应 用 研 究 第32卷--------------------------------基金项目:国家自然科学基金资助项目(61173191);军内科研资助项目(YJJXM12033)作者简介:吴杨(1985-),男,四川成都人,博士研究生,主要研究方向为网络协议识别(baiyanwy@);王韬(1964-),男,河北石家庄人,教授,博导,主要研究方向网络安全、密码学;邢萌(1990-),女,河南濮阳人,硕士研究生,主要研究方向为网络协议识别.一种评估分组密码密文的随机性度量值分布特征的新方法吴 杨,王 韬,邢 萌,李进东(军械工程学院 信息工程系,石家庄 050003)摘 要:为评估分组密码密文的随机性度量值分布特征,在一定样本量条件下,采用码元频数检测、游程检测、块内频数检测提取分组密码密文的随机性度量值及其取值个数的分布特征,再考察固定随机性度量值区间内密文的分布均值及其方差特征,以上特征可用于实现已知密文条件下的分组密码算法识别。
关键词:分组密码;密文随机性;游程检测;块内频数检测 中图分类号:TP 309New method to evaluate distribution character of randomness test values ofciphertext from block ciphersWU Yang, W ANG Tao, XING Meng, LI Jin-dong(Dept. of Information Engineering, Ordnance Engineering College, Shijiazhuang, 050003, China)Abstract: To evaluate distribution character of randomness test values of ciphertext from block ciphers, under the condition of fixed amount ciphertext samples, randomness test values and distribution of their numbers are calculated by the Frequency Test, Run Test, Frequency Test in Block. The average and variance value of ciphertext distribution is confirmed during fixed randomness value area, above characters can be used to identify block ciphers based on ciphertexts. Key Words: block cipher; randomness of Ciphertext; Run Test; Frequency Test in Block0 引言密码算法统计检测对评估算法安全性具有重要意义,广大研究者针对密码算法的统计检测技术进行了大量的研究。
基于国产FPGA_的可选算法引擎的密码模块实现
第32卷第1期北京电子科技学院学报2024年3月Vol.32No.1JournalofBeijingElectronicScienceandTechnologyInstituteMar.2024基于国产FPGA的可选算法引擎的密码模块实现陈雪松㊀赵海淇㊀李秀滢北京电子科技学院,北京㊀100070摘㊀要:在国产FPGA芯片上设计并实现密码算法是服务于我国关键基础设施建设的一项举措㊂为探讨新型密码算法模块实现的可行性,基于国产FPGA芯片设计了一款可选算法引擎的硬件密码模块,该模块可集成于嵌入式系统中,基于SPI接口实现了两种分组密码算法引擎的自主选择以及多组数据的一次性加解密处理㊂在此基础上,对比分析了在国产FPGA实现的SM4算法引擎和uBlock算法引擎的性能,并将SM4算法部署在国内和国外两款同档次的FPGA芯片上,对两种芯片的性能等方面进行对比分析㊂实验结果可知,利用国产FPGA芯片实现硬件密码模块具有较好的可行性,为FPGA的国产化替代提供一定的借鉴经验㊂关键词:国产FPGA;SM4;uBlock;可选算法;紫光同创;Altera中图分类号:TP918㊀㊀㊀文献标识码:A文章编号:1672-464X(2024)1-12-22∗㊀基金项目:北京市自然科学基金资助项目(4232034);中央高校基本科研业务费专项资金项目(3282023038,328202264,328202241)∗∗㊀作者简介:陈雪松(1998-),女,硕士研究生㊂研究方向:密码工程㊁物联网物理安全㊂赵海淇(1999-),男,硕士研究生㊂研究方向:人工智能安全㊂李秀滢(1975-),女(回),通信作者,硕士,副教授㊂研究方向:密码工程㊁嵌入式系统安全㊂E-mail:lixiuying@bes⁃ti.edu.cn㊀㊀引言随着我国网络数字化时代的到来,数据安全已成为突出的社会问题㊂为了保障数据的应用安全,诞生了许多以密码技术为核心的安全防护机制,进而也催生了基于软硬件设计实现的专用密码算法模块[1]㊂虽然软件实现的密码算法模块可变能力强,但其数据处理效率相对较低,而ASIC(专用集成电路,ApplicationSpecificIntegratedCircuit)技术形成的密码算法模块缺乏算法更换和配置的灵活性㊂比较而言,FPGA(现场可编程门阵列,FieldProgrammableGateArray)丰富的逻辑资源㊁高超的灵活性以及大吞吐量并行的工作效率,使其更加适用于密码算法模块的实现㊂所以很多实际应用中,都采用FP⁃GA实现密码模块的方案㊂目前,我国已开展了采用FPGA实现商用密码算法模块技术的研究,如SM3[2]㊁SM4[3]㊂也诞生了许多由我国学者自主设计研发的新型密码算法,但这些新型算法如TANGRAM[4]㊁uBlock[5]等目前仅处于单一算法引擎的应用研究阶段,少有将多个算法集合起来进行泛化应用的案例,这势必降低用户使用密码引擎的选择性,同时也没有充分发挥FPGA灵活性的优势㊂在同一FPGA芯片上利用可重构技术[6]实现多个算法引擎的复用是当前普遍受关注的解决方案㊂可重构技术在一定程度上提升了芯片逻辑资源的使用率,但同时也存在着资源下载占用时间长㊁算法配置时间消耗大的问题㊂第32卷基于国产FPGA的可选算法引擎的密码模块实现㊀随着芯片集成度的快速提升,在许多低成本高资源的芯片中实现多算法并行分布也成为一种好的解决方案,它在保证逻辑资源充分利用的同时,可以极大地提升下载时长㊁缩短算法配置时间㊂另外,硬件密码算法模块实现所采用的FP⁃GA芯片,目前还主要依赖于国外的芯片,如Xil⁃inx公司的Virtex系列㊁Altera公司的Cyclone系列等,未能在底层芯片技术上实现完全的自主可控,这在数据安全方面存在极大隐患,而从算法到芯片的全国产化才是未来密码应用发展的必然方向㊂本文基于国产FPGA芯片,设计并实现了一款可选算法引擎的硬件密码模块,该密码模块基于SPI(串行外围接口,SerialPeripheralInter⁃face)接口自定义了类APDU(应用协议数据单元,ApplicationProtocolDataUnit),可为用户提供两种分组算法的自主选择和多组(每组128bit)数据一次性加解密处理的功能㊂本文选择的两种分组密码算法为国密算法SM4和新型分组算法uBlock,采用的FPGA芯片为紫光同创的PGL22G芯片㊂论文在设计模块系统方案的基础上,比较分析了两种分组算法在PGL22G上的性能表现以及分组算法SM4在不同FPGA芯片上的运行效率㊂为在国产化FPGA芯片上实现硬件密码系统,提供一定的可借鉴经验㊂1㊀技术介绍1 1㊀密码算法结构原理1 1 1㊀SM4密码算法SM4[7]是由国家密码管理局颁布的商用分组密码算法,当前已被ISO/IEC组织列为国际标准㊂SM4密码算法的加密分组长度为128bit,采用32轮加密操作,每轮运算使用不同的轮密钥,算法结构主要包括密钥扩展单元和轮变换单元[8]㊂(1)轮变换单元SM4密码算法的一次加密运算是将一组128bit明文加密成128bit密文㊂整个加密算法由32轮非线性迭代运算组成,一次迭代运算为一轮变换(也称轮函数),在最后一轮变换结束后输出结果(X32,X33,X34,X35),之后对其进行反序变换,最终输出密文[9]㊂每个Xi以字长(32bit)为单位㊂SM4加密算法的轮变换结构如图1所示㊂其中i代表第i轮变换(i=0,1,2, ,31),轮密钥是通过密钥扩展函数生成的,在每轮加密变换中使用对应的第i个轮密钥rki㊂设轮函数的输入为(Xi,Xi+1,Xi+2,Xi+3),则轮函数可表示为:F(Xi+1,Xi+2,Xi+3,Xi+4)=Xi T(Xi+1 Xi+2 Xi+3 rki)(1)其中,T运算由非线性S盒变换和线性移位变换组成㊂图1㊀SM4算法轮变换单元的基本结构解密运算与加密运算的算法结构相同[10],唯一不同之处在于解密轮变换中轮密钥反序使用,即(rk31,rk30, ,rk0)㊂(2)密钥扩展单元SM4密码算法轮变换单元中使用的轮密钥是通过密钥扩展算法从初始密钥中获得的[11]㊂初始密钥的长度与明文分组长度相同,均为128bit;经过密钥扩展运算生成的轮密钥长度为32bit㊂密钥扩展算法共迭代运算32轮,每轮生成的轮密钥应用于对应轮次的加密变换㊂图2㊃31㊃北京电子科技学院学报2024年所示为密钥扩展单元的算法结构㊂其中i代表第i轮扩展(i=0,1,2, ,31),参数FK和CK均为指定参数不可变㊂图2㊀SM4算法密钥扩展单元的基本结构1 1 2㊀uBlock密码算法uBlock密码算法[12]是全国密码算法设计竞赛中的一等奖分组密码算法㊂其加解密数据分组长度和密钥长度可选128bit或256bit,分别记为uBlock-128/128㊁uBlock-128/256和uBlock-256/256㊂uBlock密码算法逻辑结构同样包括轮变换单元和密钥扩展单元,该算法在抗安全性分析㊁实现效率以及适应性上都具有较好的表现㊂为了与国密算法SM4进行对比,本文实现的uBlock算法为uBlock-128/128,即其分组长度和密钥长度均为128bit㊂(1)轮变换单元uBlock-128/128密码算法(以下简称uBlock算法)的一次加密运算是将一组128bit的明文加密成128bit的密文㊂整个加密算法由16轮迭代运算组成,一轮迭代运算为一轮变换(轮函数),最后一轮变换后的结果X与轮密钥RK16进行异或运算,得到最终的密文㊂uBlock加密算法的轮变换单元的算法结构如图3所示㊂其中,i代表第i轮的轮变换(i=0,1,2, ,15),轮密钥是通过密钥扩展算法生成的,在每轮加密变换中使用对应的第i个轮密钥RKi㊂图3㊀uBlock算法轮变换单元的基本结构uBlock解密算法的轮变换结构与加密算法的基本呈逆序关系,密文与轮密钥进行异或运算后,将结果分组先进行向量置换,再进行移位变换和异或运算,最后通过S盒变换得到轮变换的结果㊂解密变换中的S盒㊁向量置换均为加密变换中S盒㊁向量置换的逆运算,移位变换为加密算法中的反向位移㊂解密变换中轮密钥RKi倒序使用㊂(2)密钥扩展单元uBlock算法轮变换单元中使用的轮密钥共有17个,具体分为初始轮密钥RK0和16个生成轮密钥RK1 RK16㊂将128bit的密钥K放置在寄存器中,作为初始轮密钥RK0,然后进行16轮(i=1,2, ,16)的密钥扩展迭代运算,每轮形成RKi,最终形成16个生成轮密钥㊂寄存器按公式(2)进行更新㊂K0 K1 K2 K3ѳRKi-1K0ᶄ K1ᶄѳPK(K0 K1)K2ᶄѳK2 SK(K0ᶄ RCi)K3ᶄѳK3 Tk(K1ᶄ)㊃41㊃第32卷基于国产FPGA的可选算法引擎的密码模块实现㊀RKiѳK2ᶄ K3ᶄ K1ᶄ K0ᶄ(2)其中,PK为16个半字节的向量置换;RC为常数,给定值不可变;Sk为8个4比特S盒的并置;Tk为半字节模2的运算㊂(K0,K1,K2,K3)由输入的轮密钥RKi-1平分成四组构成,(K2 ,K3 ,K1 ,K0 )为每组密钥经过运算后重新组合后形成的轮密钥RKi㊂uBlock算法轮密钥扩展单元的基本结构如图4所示㊂图4㊀uBlock算法密钥扩展单元的基本结构2㊀可选算法模块的设计与实现2 1㊀系统结构设计本密码模块系统基于PGL22G为核心的FPGA开发平台进行设计,系统的总体结构如图5所示㊂系统由四部分组成:SPI接口模块㊁数据包解包封包模块㊁SM4密码算法引擎以及uBlock密码算法引擎㊂该FPGA密码模块系统对外提供密码服务的接口为SPI或SQI(四通道SPI接口)㊂该密码模块的应用对象主要针对的是MCU等微处理器的主机端,本文在SPI接口协议的基础上,又设计了类APDU协议,用于两系统间的应用通信㊂主机端向FPGA系统下达选定算法的加解密命令APDU,FPGA系统根据命令APDU进行相应算法引擎的调度,算法引擎并行地进行加解密运算处理,并将运算结果通过SPI接口的响应APDU返回给主机端㊂图5㊀硬件密码模块的系统结构2 2㊀SM4密码算法引擎的实现2 2 1㊀硬件实现的设计(1)实现结构的设计本文设计的SM4密码算法引擎的硬件实现结构由输入寄存器㊁输出寄存器㊁密钥数据寄存器㊁密钥生成单元㊁轮密钥寄存器㊁SM4加解密轮函数单元㊁状态机控制器和I/O接口组成[13,14]㊂基本单元结构如图6所示,其中所述的寄存器都是根据实际需要定义的多比特数据存储单元㊂图6㊀SM4算法引擎的硬件实现结构图6中,密钥数据寄存器用于存储初始化数据和初始密钥,输入㊁输出寄存器用于存储待处理的输入数据和已处理的输出数据㊂多个明文分组加解密运算使用的密钥相同,所以SM4算法引擎的32个轮密钥生成操作只进行一次,之后存储在轮密钥寄存器中,待轮变换单元加解密操作时使用㊂SM4轮变换对128bit的输入数据寄存器中的内容循环迭代运算32轮后,完成加㊃51㊃北京电子科技学院学报2024年解密运算,128bit的结果数据存储在输出寄存器中㊂状态机控制器统一控制SM4算法引擎各功能单元的工作调度转换㊂(2)状态机设计状态机是FPGA硬件实现的核心逻辑,本文设计的SM4算法引擎,其状态机控制器的控制逻辑主要分为Idle状态㊁GetReady状态㊁Get⁃KorD0状态㊁GetKorD1状态和GetResult状态,状态机转换过程如图7所示㊂图7㊀SM4算法引擎的状态机在图7中,Idle状态为空状态,用来等待外㊀㊀㊀部就绪信号,以控制状态机进入其它工作状态;GetReady状态主要是控制向密钥数据寄存器写入初始密钥或者向输入寄存器写入明文,控制下一状态转换;GetKorD0状态主要进行轮密钥扩展运算,并且将每轮生成的轮密钥存储到轮密钥寄存器中;GetKorD1状态主要进行轮函数加解密运算;GetResult状态用于将最终加解密结果输出,然后重新将状态机置为Idle状态㊂2 2 2㊀仿真结果针对SM4密码算法引擎的硬件实现,本文利用紫光同创公司自主研发的PDS软件和Mod⁃elsim软件进行了引擎实现的仿真,仿真结果如图8所示㊂从图8中可以看出,一组128bit的数据 h0123456789abcdeffedcba9876543210 经过加密后得到密文结果 h681edf34d206965e86b3e94f536e4246 ㊂再把该密文放入算法引擎中进行解密,得到解密明文结果为 h0123456789abcdeffedcba9876543210 ㊂仿真结果表明,SM4算法引擎的实现是正确的㊂图8㊀SM4算法引擎实现的仿真结果2 3㊀uBlock密码算法引擎的实现2 3 1㊀硬件实现的设计(1)实现结构的设计系统设计的uBlock密码算法引擎的实现结构由密钥数据寄存器㊁输入寄存器㊁输出寄存器㊁密钥生成单元㊁轮密钥寄存器㊁uBlock轮函数加解密单元㊁状态机控制器和I/O接口组成㊂由于本文选用的uBlock算法与SM4算法同为128bit的分组密码算法,且通过上述算法原理介绍可知,虽然二者在密钥扩展和轮变换单元中的运算逻辑有所不同,但算法引擎所需的功能结构基本相同,因此将其硬件实现结构与接口信号设计成一致的,具体如图9所示㊂为了实现多种算法引擎的可选操作,将各算法引擎的接口部分设计成了通用的接口信号,即在uBlock算法引擎中使用相同的接口信号㊂其中各信号的功能包括:clk为时钟信号,由系统时钟统一调度;KeyIn为密钥数据输入信号(128bit),与之相匹配的KeyRdy为密钥数据准㊃61㊃第32卷基于国产FPGA的可选算法引擎的密码模块实现㊀图9㊀uBlock算法引擎的硬件实现结构备就绪信号,用于指示算法引擎进行轮密钥的生成工作;DataIn为待加解密数据输入信号(128bit),用于向引擎内部传输待加解密的数据,与之相匹配的InRdy为准备就绪信号,指示算法引擎开始进行加解密运算工作;opMode为模式选择信号,用于指示算法引擎进行加密或解密运算;DataOut为加解密完成后的数据输出信号(128bit);KVld和OVld是分别用来向上级模块指示密钥扩展运算完成及加解密运算完成的标志信号㊂图11㊀uBlock算法引擎的仿真结果(2)状态机设计uBlock算法引擎的状态机控制逻辑主要包括:Idle状态㊁KeyExp状态㊁S0状态㊁KeyExpNop状态㊁Enc状态㊁Dec0状态㊁Dec1状态和EncDec⁃Nop状态,状态转换过程如图10所示㊂图10中,状态机控制器控制密钥扩展和加解密运算两个过程的流转㊂KeyExp状态㊁S0状态和KeyExpNop状态为密钥扩展要经历的3个流转状态,而Enc状态㊁Dec0状态㊁Dec1状态和EncDecNop状态为加解密运算要经历的4个流图10㊀uBlock算法引擎的状态机转状态㊂㊀㊀Idle状态为空状态,主要用来等待外部就绪信号,进而控制状态机进入运算状态,并向密钥数据寄存器写入初始密钥或者向输入寄存器写入待处理的明密文数据㊂在密钥扩展过程中,KeyExp和S0两个状态用于进行轮密钥的生成,并将生成的轮密钥存储到轮密钥寄存器中;KeyExpNop状态为密钥扩展结束状态,其控制状态机返回Idle状态,并输出完成信号㊂在加解密运算过程中,Enc状态为加密运算,Dec0和Dec1状态为解密运算,在加密或解密完成后均会将结果输出到输出寄存器中;EncDecNop状态为运算结束状态,其控制状态机返回Idle状态,并输出完成信号㊂2 3 2㊀仿真结果针对uBlock密码算法引擎的硬件实现,本文利用PDS软件和Modelsim软件进行了引擎实现的仿真,仿真结果如图11所示㊂㊃71㊃北京电子科技学院学报2024年㊀㊀从图11中可以看到,一组128bit的数据 h0123456789abcdeffedcba9876543210 经加密后得到密文结果为 h32122bedd023c429023470e1158c147d ,再把该密文放入算法引擎中进行解密,得到明文结果为 h0123456789abcdeffedcba9876543210 ㊂仿真结果表明uBlock算法引擎的实现是正确的㊂2 4㊀数据分组组包调度模块为了提升密码模块的处理速度(吞吐量),本文设计了FPGA系统通过SPI接口一次可处理多组(每组128bit)的明密文数据[15],这里以最多处理16组(256字节)的数据包为例介绍其设计思路㊂系统在密码算法引擎接口的基础上,设计了分组组包调度模块,用于对多组的数据包进行分组㊁引擎调度以及组包等操作㊂该调度模块先将SPI接口接收的类APDU中的数据段拆解成一个个128bit明密文数据分组,然后根据类APDU中的命令码选择调度相应的密码算法引擎,进行数据加解密运算,最后将每组运算结果打包成结果数据包待统一输出㊂2 4 1㊀硬件实现的设计FPGA中的程序块是并行执行逻辑,而本文设计的分组组包调度模块与密码算法引擎之间是一个协同顺序执行逻辑,所以将该调度模块设计成与密码算法引擎之间进行乒乓式操作的状态机结构,进而保证多组数据被正确的加解密处理㊂这里设计的分组组包调度模块的状态机工作逻辑分为IdleData状态㊁InputData状态和Out⁃putData状态㊂其中,IdleData状态为空状态,主要根据SPI模块发送来的操作码初始启动密码引擎模块进行相应的操作,操作包括密钥扩展㊁加密和解密,并设置相应的状态转换信号;Input⁃Data状态用来进行数据包分组,每次向密码引擎模块传输一组128bit数据,密钥数据仅启动密码引擎操作一次,并标记密钥扩展完成信号量;OutputData状态用来进行数据组包,根据密码引擎模块传回的结果数据进行组包操作,并判断全部数据是否加解密完成,若完成则控制状态机返回IdleData状态,若未完成则进入InputData状态继续解包并传输新一组的数据㊂状态机的具体控制逻辑如图12所示㊂图12㊀数据分组组包调度模块的状态机分组组包调度模块的状态机部分的算法伪码如下算法1所示㊂算法1分组组包调度信号说明:clk,系统时钟信号;InRdy_o,整包数据传输完成信号;KeyRdy_o,密钥数据传输完成信号;OVld,一组数据运算完成信号;KVld,密钥扩展完成信号㊂a)always@(posedgeclk)beginb)㊀㊀case(工作状态)c)㊀㊀㊀IdleData:㊀//准备空状态d)㊀㊀㊀begine)㊀㊀㊀㊀if(InRdy_o)㊀㊀㊀工作状态=InputDataf)㊀㊀㊀㊀elseif(KeyRdy_o)工作状态=OutputDatag)㊀㊀㊀endh)㊀㊀㊀InputData:㊀//数据包分组状态i)㊀㊀㊀beginj)㊀㊀㊀㊀从输入的整包数据中选择一组数据进行加解密运算k)㊀㊀㊀㊀工作状态=OutputDatal)㊀㊀㊀endm)㊀㊀㊀OutputData:㊀//数据组包状态n)㊀㊀㊀begino)㊀㊀㊀㊀if(OVld)begin㊀p)㊀㊀㊀㊀㊀保存一组加解密完成的数据q)㊀㊀㊀㊀㊀完成一组,计数+1r)㊀㊀㊀㊀㊀if(计数==分组数量)工作状态=IdleData㊃81㊃第32卷基于国产FPGA的可选算法引擎的密码模块实现㊀s)㊀㊀㊀㊀㊀else㊀㊀㊀㊀工作状态=InputDatat)㊀㊀㊀㊀endu)㊀㊀㊀㊀elseif(KVld)㊀工作状态=IdleDatav)㊀㊀㊀endw)㊀㊀endcasex)end2 4 2㊀Debug调试在多组数据调度密码引擎进行数据处理的过程中,不同信号之间很容易产生时序不协调㊁不匹配的问题,通常这种情况用Modelsim仿真是解决不了问题的㊂这就需要启动PDS开发工具中的Debug功能,在Debug中通过增加触发条件和信号观察器,来抓取程序运行中的中间结果,进而分析出时序问题,一点点修改程序,使各信号时序衔接匹配正确㊂图13展示了数据分组组包调度模块调度SM4算法引擎进行一包数据(每组16字节,共16组)加密时,PDS的debug调试器中的结果,对比图8中一组SM4加解密结果不难看出,分组组包调度模块能正确工作㊂图13㊀PDS的Debugger工具中使用SM4算法引擎加密一包数据的调试结果㊀㊀在图13中,当cmd_SM4为0x02时,代表加密操作命令,该信号的出现将启动算法引擎进行一包数据的加密,它也是Debugger调试器数据抓取的触发条件㊂start_flag_round为一组(16字节)数据加解密的启动信号,高有效;round_over为一组数据加解密完成信号,高有效㊂cnt为处理的数据组数计数器,pKey为轮密钥,tempout为加密结果暂存寄存器㊂3㊀密码算法引擎的性能分析㊀㊀本文设计的硬件密码模块主要依托的是型号为PGL22G-6FBG256的国产FPGA㊂本小节首先介绍PGL22G与国内外其他型号芯片的资源对比㊂其次分析使用的两款密码算法在PGL22G上的运行效果㊂最后,为了更好的分析国内和国外FPGA的性能差异,分别在实验室所使用的国内㊁国外两款FPGA芯片上进行了以SM4算法引擎为例的性能比较㊂3 1㊀PGL22G资源对比PGL22G[16]是紫光同创Logos系列的FPGA器件,面向工业控制市场的需求,PGL22G提供了丰富的片上时钟和RAM资源以及乘法器,支持LVDS差分标准㊁MIPI接口标准以及丰富的用户I/O,并集成了1066Mbps硬核DDR3和硬核ADC等资源㊂正是源于该芯片丰富的资源和高性能的运算速度,非常适合用于构建性能要求较高的密码算法硬件模块,目前已被许多具有技术创新和国产自主可控需求的中国系统设备厂商采用㊂如表1所示,挑选了几款与PGL22G性能相近的芯片进行比较㊂分别是国产高云公司的GW2A-18系列芯片和美国XILINX公司的Spar⁃tan-6系列芯片㊂由于后续3 3节中会对PGL22G和Altera公司CycloneⅣE系列的EP4CE75F29C6芯片进行算法实现上的比较,因此表中还添加了该芯片的资源数据㊂从表1中数据可知,PGL22G的资源情况在完全满足本文设计的硬件密码模块的各项要求的情况下,其价格最优㊂㊃91㊃北京电子科技学院学报2024年表1㊀芯片资源对比芯片厂商紫光同创高云XILINXALTERA型号PGL22GGW2A-18XC6SLX16EP4CE75工艺40nm55nm45nm60nm内核电压1 1V1 0V1 0V1 0VLUT6 9,112 (等效)LUT517,536 18,224 (等效)LUT421,04320,73621,86975,408分布式RAM71Kbit41Kbit136Kbit2,745KbitPLL6424IOBANK6848单芯片价格70元160元98元158元㊀㊀注:1个LUT6等效于2个LUT5,1个LUT5等效于1 2个LUT63 2㊀PGL22G芯片上的性能分析表2记录了两种算法引擎在PGL22G上运行时的逻辑资源使用情况㊂两种算法选取的数据分组和密钥长度均为128bit,I/O端口的设计基本相同,因此两种算法引擎的I/O端口使用量皆为390㊂而从LUT和寄存器使用情况来看,uBlock的使用量基本是SM4的2 5倍㊂表2㊀PGL22G芯片的逻辑资源使用情况算法TotalLUTsTotalRegistersI/OPortsSM414201326390uBlock34912736390表3中记录了两种算法工作时的最大时钟频率及相应吞吐量㊂测试方法为事前生成加解密过程中需要的轮密钥,然后使用该组轮密钥一次性将一包数据(256字节)进行加解密处理,再根据定义[17]:吞吐量(率)=处理的比特数/所用秒数,计算出密码引擎的吞吐量㊂从结果可知,SM4工作的最大时钟频率约为uBlock的2倍,但uBlock吞吐量却比SM4高出约30Mbit/s,这说明uBlock的工作效率更高㊂分析这一现象的主要原因在于两种算法在加解密过程中的迭代运算轮数不同,SM4加密一组数据需迭代32轮,即需要32个时钟周期才能完成一次加密操作,而uBlock的迭代运算轮数为16,FPGA是典型的并行处理逻辑单元,运算轮数对速度起决定作用㊂表3㊀算法性能分析FPGA芯片算法模块最大时钟频率吞吐量PGL22GSM4226 501MHz906Mbit/sPGL22GuBlock117 398MHz939Mbit/s3 3㊀两种芯片上的性能对比选取中国紫光同创公司研发的Logos系列PGL22G芯片与美国Altera公司CycloneⅣE系列的EP4CE75F29C6芯片进行对比分析㊂两款芯片都属于当前市面上中低端FPGA芯片,芯片资源对比已在前文中给出㊂本文在两款芯片上对SM4算法引擎的实现进行了仿真㊂表4记录了SM4算法引擎在两款FPGA芯片上的资源使用情况㊂PGL22G器件中的逻辑单元为LUT5㊂EP4CE75F29C6器件使用的逻辑单元为LUT4㊂由文献[16]可知PGL22G中使用的每个LUT5等效为1 2个LUT4㊂通过计算可知,本文设计的SM4算法引擎在紫光同创芯片上使用了约1704个LUT4㊂结合表中LUT单元㊁寄存器单元和I/O端口的使用数量可知,紫光芯片的逻辑单元使用量少于Altera芯片,其它资源的使用情况大致相同㊂表4㊀SM4逻辑资源使用情况FPGA芯片TotalLUTsTotalRegistersTotalpins紫光PGL22G1704(LUT5折算为LUT4)1326390AlteraEP4CE75F29C62000(LUT4)1344390根据文献[17]吞吐量计算公式可以得到密码算法的吞吐量计算方法,具体如公式(3)所示㊂吞吐量=分组数据长度ˑ最大时钟频率迭代运算轮数(3)表5记录了SM4算法在两款芯片上工作的最大时钟频率和相应吞吐量的对比㊂从表中结果可知,在算法的相同工作模式(ECB模式)下,紫光芯片工作的最大时钟频率是Altera芯片的1 76倍㊂由于所使用的SM4算法分组长度为128bit,加解密迭代轮数为32轮,根据公式(3)计算可知,紫光芯片运行SM4算法的吞吐量同㊃02㊃第32卷基于国产FPGA的可选算法引擎的密码模块实现㊀样是Altera芯片的1 76倍㊂这说明本文设计的SM4算法引擎在紫光芯片上的工作效率略高于Altera芯片㊂表5㊀SM4算法性能分析FPGA芯片最大时钟频率吞吐量紫光PGL22G226 5MHz906Mbit/sAlteraEP4CE75F29C6128 5MHz514Mbit/s综合上述分析情况可知,在逻辑资源使用相近的情况下,紫光PGL22G芯片的吞吐量更大㊂说明紫光PGL22G芯片在硬件密码模块实现上比Altera的EP4CE75F29C6芯片更有优势㊂4㊀结论㊀㊀本文设计了一个可选算法引擎的硬件密码模块FPGA实现方案㊂该密码模块由基于SPI(SQI)接口的自定义通信协议㊁SM4和uBlock密码算法引擎以及基于数据分组的组包调度模块组成,实现了两种密码算法自主选择㊁一次性加解密处理多组数据的高性能硬件密码模块㊂在后续应用中可根据引擎的接口配置,自主扩展其它分组密码算法,具有一定的普适性和可扩展性㊂本论文在密码模块设计实现的基础上,基于国产FPGA平台进一步讨论了实现的两种算法引擎的性能差异,以及不同FPGA芯片的性能差异㊂通过实验分析可知,对于分组长度和密钥长度均为128bit的两种分组算法引擎来说,在PGL22G芯片上SM4算法引擎的资源使用要略少于uBlock算法引擎,而uBlock算法引擎的工作效率略高于SM4算法㊂此外,SM4算法引擎实现在国产PGL22G芯片与国外产EP4CE75F29C6芯片上的测试结果说明,在国产PGL22G芯片上实现的硬件密码模块实现,其性能高于在国外产的EP4CE40F29C6芯片上的实现㊂这在一定程度上表明,推广FPGA芯片国产化替代的可行性㊂在多组数据的加解密运算效率上,本文方案还有提升空间㊂可以根据算法的工作模式设计多级流水线结构,进而实现多组数据的同时加解密处理,这不仅会提高多组数据之间的运算效率,还可以极大程度上提高片内资源的使用效率㊂如何提高多组数据的运算效率将成为后续进一步研究的方向㊂参考文献[1]㊀王剑锋,张应辉,马华.浅谈密码学与信息安全[J].西安文理学院学报(自然科学版),2020,23(1):34-36.[2]㊀郑佳乐,韩跃平,唐道光.FPGA平台SM3密码杂凑算法的优化设计[J].单片机与嵌入式系统应用,2023,23(05):33-36+39.[3]㊀赵保磊,范玉进,张建军等.基于FPGA的多秘钥SM4加解密模块设计[C]//天津市电子学会.第三十六届中国(天津)2022IT㊁网络㊁信息技术㊁电子㊁仪器仪表创新学术会议论文集.2022:246-248.[4]㊀王建新,许弘可,郑玉崝等.基于FPGA的TANGRAM分组密码算法实现[J/OL].计算机应用研究,1-7[2024-01-07].ht⁃tps://doi.org/10 19734/j.issn.1001-3695 2023 04 0190.[5]㊀吴文玲,张蕾,郑雅菲等.分组密码uBlock[J].密码学报,2019,6(06):690-703.[6]㊀陈翔宇.基于FPGA的多算法可重构加解密系统的设计[D].哈尔滨:哈尔滨工业大学,2020.[7]㊀JintaoR,ZheC.ChosenPlaintextCombinedAttackagainstSM4Algorithm[J].AppliedSciences,2022,12(18):9349.[8]㊀AlifAZ,A.H.A,FaridaR,etal.System⁃aticliteraturereview:Trendanalysisonthedesignoflightweightblockcipher[J].JournalofKingSaudUniversity-ComputerandInfor⁃㊃12㊃。
现代密码学 课后答案 第二版
第一章
1.判断题
2.选择题
3.填空题
1.信息安全的主要目标是指机密性、完整性、可用性、认证性和不可否认性。
2.经典的信息安全三要素--机密性,完整性和可用性,是信息安全的核心原则。
3.根据对信息流造成的影响,可以把攻击分为5类中断、截取、篡改、伪造和重放,进一步可概括为两类主动攻击和被动攻击。
4.10、对称密码体制又称为秘密密钥密码体制,它包括分组密码和序列密码。
第三章
5.判断
6.选择题
7.填空题
a)在1949年香农发表《保密系统的通信理论》之前,密码学算法主要通过字符间的简单置换和代换实现,一般认为密码体制属于传统密码学范畴。
b)传统密码体制主要有两种,分别是指置换密码和代换密码。
c)置换密码又叫换位密码,最常见的置换密码有列置换和周期转置换密码。
1.Hash函数就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出称为散列值。
2.13、Hash函数的单向性是指对任意给它的散列值h找到满足H(x)=h的x。
3.14、Hash函数的抗碰撞性是指。
4.与以往攻击者的目标不通,散列函数的攻击不是恢复原始的明文,而是寻找散列函数的过程,最常用的攻击方法是生日攻击,中途相遇攻击。
8.密码法规是社会信息化密码管理的依据。
第二章
1.判断题
答案×√×√√√√××
2.选择题
答案:DCAACADA
3.填空题
1.密码学是研究信息寄信息系统安全的科学,密码学又分为密码编码学和密码分析学。
2.8、一个保密系统一般是明文、密文、密钥、加密算法、解密算法5部分组成的。
分组密码算法几种分析模型的研究
分组密码算法几种分析模型的研究分组密码算法是保证当今网络空间中信息私密性的一类重要的密码算法,密码设计与密码分析是研究分组密码算法的两个主要方面,两者相辅相成,不断推动对称密码算法体系的发展。
本文主要研究分组密码算法的安全性分析方法,对几类重要的分析模型的攻击过程或者是攻击使用的区分器进行改进。
具体研究的分析模型包括线性分析、多维线性分析、多维零相关线性分析、不可能差分分析、零相关分析以及积分分析,相关工作为(1)改进了卡方法多维线性分析模型以及多维零相关线性分析模型的攻击过程;(2)将动态密钥猜测技术引入到面向比特的分组密码算法的线性分析模型中并对Simon进行了改进的线性分析,有效的降低了攻击的时间复杂度;(3)对不可能差分区分器、零相关区分器、积分区分器之间的关系进行了进一步研究,提出了零相关区分器向积分区分器转化的一般方法,并建立了 Feistel-type算法不可能差分区分器与零相关区分器之间更有效的等价条件。
·改进卡方法多维线性分析以及多维零相关分析模型:多维线性分析和多维零相关线性分析是攻击分组密码算法的两种重要的分析模型,在使用卡方法的多维线性分析模型中(或者多维零相关线性分析模型),用来区分正确密钥和错误密钥的统计数是从多维区分器的概率分布情况计算得出。
而在本文中,我们提出了一种计算统计数更简单的方法:在随机的明文空间下,从多维(零相关)线性路线的试验的相关系数出发,计算最终的统计数。
这样,可以省掉计算概率分布的过程,如果在计算每条路线相关系数的时候,将FFT技术引入的话,可以降低distillation阶段的时间复杂度。
为了说明我们新模型的有效性,我们使用多维零相关线性分析方法对具有双射轮函数且模加(或异或)轮密钥的Feistel结构进行了一般性攻击,对于模加密钥的情况,我们的结构攻击在轮数上是最优的;我们还分析了 CAST-256,将其多维零相关分析结果从28轮扩展到了 29轮,改进了一轮攻击,虽然与已有的29轮多重零相关分析结果具有相近的复杂度,但是我们的攻击对区分器没有独立假设,是在无假设条件下最优的攻击结果。
3-2分组密码之线性分析
密码学原理S盒的线性逼近◆考虑一个S盒πs:{0,1}m→{0,1}n,具有m重输入X=(x1,x2,...,x m)和n重输出Y=(y1,y2,...,y n)。
从X和Y中任意选择若干比特通过异或运算构成一个随机变量◆计算该随机变量的概率当(y1,y2,...,y n) ≠πs(x1,x2,...,x m) 时,Pr[Y1=y1, Y2=y2, …,Y n=y n | X1=x1, X2=x2, …,X m=x m]=0 Pr[X1=x1, X2=x2, …,X m=x m]=2-m则Pr[X1=x1, X2=x2, …,X m=x m ,Y1=y1, Y2=y2, …,Y n=y n]= 0当(y1,y2,...,y n) =πs(x1,x2,...,x m) 时, Pr[Y1=y1, Y2=y2, …,Y n=y n | X1=x1, X2=x2, …,X m=x m]= 1则Pr[X1=x1, X2=x2, …,X m=x m ,Y1=y1, Y2=y2, …,Y n=y n]= 2-mS盒线性逼近x 0 1 2 3 4 5 6 7 8 9 A B C D E F y=πs(x) E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7X1 X2 X3 X4 Y1 Y2 Y3 Y40 0 0 0 1 1 1 00 0 0 1 0 1 0 00 0 1 0 1 1 0 10 0 1 1 0 0 0 10 1 0 0 0 0 1 00 1 0 1 1 1 1 10 1 1 0 1 0 1 10 1 1 1 1 0 0 01 0 0 0 0 0 1 11 0 0 1 1 0 1 01 0 1 0 0 1 1 01 0 1 1 1 1 0 01 1 0 0 0 1 0 11 1 0 1 1 0 0 11 1 1 0 0 0 0 01 1 1 1 0 1 1 1偏差取值于{0,1}上的随机变量X,取值为0的概率为p,则取值为1的概率为1-p,X的偏差定义为X1⊕X4⊕Y2Pr[X1⊕X4⊕Y2=0]=1/2偏差为0X3⊕X4⊕Y1⊕Y4Pr[X3⊕X4⊕Y1⊕Y4=0]=1/8偏差为-3/8堆积引理◆堆积引理:设是取值于{0,1}上的独立随机变量,他们相应的偏差依次为,定义随机变量,用表示其偏差,则有:◆推论设是取值于{0,1}上的独立随机变量,表示随机变量的偏差,若对某j,有,则。
分组密码攻击模型的构建和自动化密码分析
分组密码攻击模型的构建和自动化密码分析随着物联网时代向万物互联时代的不断推动,互联网为生活方方面面带来便利的同时,网络安全问题也在新形势下面临新的挑战。
作为保障网络安全的基石,密码在安全认证、加密保护和信息传递等方面发挥了十分重要的作用。
与公钥密码体制相比,对称密码算法由于效率高、算法简单、适合加密大量数据的优点应用更为广泛。
基于这一事实,对分组密码算法分析与设计的研究在新环境下显得尤为重要。
本文围绕分组密码攻击模型的构建和自动化密码分析这一主题展开。
首先,在攻击模型构建方面,我们提出了卡方多重/多维零相关线性分析模型,并将该模型用于一系列算法的多重和多维零相关分析中。
其次,针对自动化密码分析,我们一方面着眼于攻击路线的自动化搜索问题,另一方面试图借助自动化思想解决密码学中的理论问题。
在路线自动化搜索方面,我们给出了基于MILP方法对具有复杂线性层的算法和ARX类算法搜索比特级分离特性的模型,使用新方法对一系列算法关于积分分析的抵抗性进行了评估。
构建了基于SAT方法ARX类算法比特级分离特性的自动化搜索工具和基于SMT方法自动化搜索字级分离特性的新工具,完善了分离特性自动化搜索框架。
在自动化解决理论问题方面,讨论了差分分析中的差分聚集现象,对两个算法给出了更加精确的差分分析。
最后,我们对SIMON算法的所有版本给出了零相关攻击结果。
具体结果如下。
给出了基于SAT方法自动化搜索并分析带S盒算法差分闭包的工具:为了填补SAT方法在搜索差分闭包方面的空白,我们给出了基于SAT问题的差分闭包自动化搜索工具。
首先,我们给出对线性层和由多个小S盒构成的非线性层的刻画。
随后,给出了目标函数的SAT模型,这使得我们可以实现在固定权重下差分特征的搜索。
最后,给出了搜索差分闭包中多条路线的方法。
这一自动化搜索方法在对LED64算法和Midori64算法的分析中发挥了十分重要的作用。
对于LED64算法,我们提出了一种自动化搜索差分闭包正确对的方法。
分组密码的分析技术
分组密码的分析技术分组密码的分析技术概述分组密码是一种常见的密码体制,广泛应用于信息安全领域。
分组密码通过将明文分成固定长度的块,并对每个块进行独立的加密操作来保证数据的安全性。
然而,分组密码算法也存在一些安全隐患,因此研究和分析分组密码的攻击技术显得尤为重要。
本文将介绍几种常见的分组密码分析技术,包括差分攻击、线性攻击和差分线性攻击。
差分攻击差分攻击是一种常见的密码分析技术,广泛应用于分组密码中。
其基本思想是通过改变输入明文的差分而观察输出密文的差分,并从中获得有关密钥的信息。
差分攻击主要包含以下几个步骤: 1. 选择明文对:攻击者首先要选择一对特定的明文对,并计算它们之间的差分。
2. 计算密文对的差分:对于所选择的明文对,通过分组密码算法计算它们的密文对,并计算出对应的差分。
3. 统计差分出现的频次:攻击者会收集大量的明文对并计算它们的对应差分出现的频次。
4. 推测密钥:通过分析差分出现的频次,攻击者可以根据统计结果逐渐推测出密钥的一部分或全部。
差分攻击的关键在于选择合适的明文对和统计密文的差分频次。
通过统计分析,攻击者可以根据密文的差分出现频次来推测分组密码的密钥,从而破解密码。
线性攻击线性攻击是另一种常见的分组密码分析技术,旨在揭示分组密码的结构和内在规律。
其基本思想是构造一个线性近似特性,并通过统计分析来寻找与线性近似特性相关的密钥位。
线性攻击主要包含以下几个步骤:1. 选择明文对和密文对:攻击者首先会选择一组明文对和对应的密文对。
2. 构造线性近似特性:通过对选择的明文对和密文对进行统计分析,攻击者会尝试构造一个线性方程来描述它们之间的关系。
3. 统计出现频次:根据构造的线性近似特性,攻击者可以通过统计明文对和密文对的差分出现的频次,从而获得线性近似特性对应的发生概率。
4. 推测密钥位:通过统计结果,攻击者可以根据线性近似特性和密文的差分出现频次来推测分组密码的密钥位。
线性攻击的关键在于构造合适的线性近似特性和对应的线性方程。
分组密码算法的自相关检测参数选择_范丽敏
2009年7月Journal on Communications July 2009 第30卷第7期通信学报V ol.30No.7分组密码算法的自相关检测参数选择范丽敏1,2, 冯登国1, 周永彬1(1. 中国科学院软件研究所信息安全国家重点实验室,北京 100190;2. 中国科学院研究生院,北京 100039)摘要:自相关检测是一种用以检测一个长度为n的二元序列与其左移d位后序列的关联程度的随机性检测算法。
d的选择范围很大,对所有参数逐一进行检测不现实,需要研究检测参数之间的关系。
定义了检测参数之间可能存在的3种关系,以分组长度为m的分组密码随机性检测为对象,综合考虑分组密码和自相关检测的特点,利用统计实验研究了自相关检测参数子集D={1,2,m/4,m/2,3m/4,m,2m}中参数的关系。
研究结果表明,对分组密码进行自相关检测时,检测参数应该首选d=m。
该方法和结果为研究其他类型密码算法的随机性检测参数选择提供了新思路。
关键词:信息安全;分组密码;统计检测;自相关检测;参数选择中图分类号:TP309.7 文献标识码:B 文章编号:1000-436X(2009)07-0086-05Parameter selection of autocorrelation test for block ciphersFAN Li-min1,2, FENG Deng-guo1, ZHOU Yong-bin1(1. State Key Laboratory of Information Security,Institute of Software ,Chinese Academy of Sciences, Beijing 100190, China;2. Graduate University of Chinese Academy of Sciences, Beijing 100049, China)Abstract: Autocorrelation test was a statistical test to evaluate the correlation between one sequence and the corresponding non-cyclic left-shifted d bits sequence. It was impractical to adopt all the values of d since its range was often very wide.Three relations between parameters of randomness test were defined firstly. Then the relationships among the subclass D={1,2,m/4,m/2,3m/4,m,2m}of autocorrelation test for block cipher were studied by statistical experiments, where m was block length. The experiments show that the prefer choice of parameter d is m when doing autocorrelation test for block cipher. The method is also available for parameter selection of other randomness test for other types of cryptosystem.Key words: information security; block cipher; statistical test; autocorrelation test; parameter selection1引言一个好的密码算法应该能够保证其输出序列的随机性,使得该密码产生的输出序列在统计上难以与真随机序列区别开来。
对称密码学及其应用-03第五章 分组密码的统计测试原理与攻击方法
北邮信息安全中心 北邮计算机学院
2
《对称密码学及其应用》
主要内容
分组密码的统计测试原理
分组密码的典型攻击方法
北邮信息安全中心 北邮计算机学院
3
《对称密码学及其应用》
5.1 分组密码的统计测试原理
对分组密码进行统计测试的目的是:断 定算法产生的输出是否在统计上难以与 真随机数据区别开来。 按照测试目的分为:
《对称密码学及其应用》
明密文独立性测试(续)
设待测分组密码算法的分组长度为n比特, 明文文件含有F个分组,则其对应的密文 也含有F个分组。设明文分组集为P={p0, p1, p2,..., pF-1},密文分组集为C={c0, c1, c2,..., cF-1} ,记录相应的明密文距离 D=W(pi+ci),0≤i≤F-1。 统汁D中汉明重量为i的分组数,记为Hi , 判断Hi是否符合二项分布B(n,1/2)。
扑克牌测试(Poker test)
计算1的个数:9654~10346之间
游程测试(runs test)
X=(16/5000)*(n02+n12+…+n152)– 5000 如果1.03<x<57.4,测试通过 1 2 Length 3 of run 4 5 6 2267-2733 1079-1421 502-748 223-402 90-223 90-223
北邮信息安全中心 北邮计算机学院
15
《对称密码学及其应用》
例
把一颗骰子重复抛掷 300 次, 结果如下:
出现的点数
1
分组密码算法的自相关检测参数选择
分组密码算法的自相关检测参数选择范丽敏;冯登国;周永彬【期刊名称】《通信学报》【年(卷),期】2009(030)007【摘要】自相关检测是一种用以检测一个长度为n的二元序列与其左移d位后序列的关联程度的随机性检测算法.d的选择范围很大,对所有参数逐一进行检测不现实,需要研究检测参数之间的关系.定义了检测参数之间可能存在的3种关系,以分组长度为m的分组密码随机性检测为对象,综合考虑分组密码和自相关检测的特点,利用统计实验研究了自相关检测参数子集D={1,2,m/4,m/2,3m/4,m,2m}中参数的关系.研究结果表明,对分组密码进行自相关检测时,检测参数应该首选d=m.该方法和结果为研究其他类型密码算法的随机性检测参数选择提供了新思路.%Autocorrelation test was a statistical test to evaluate the correlation between one sequence and the corresponding non-cyclic left-shifted d bits sequence. It was impractical to adopt all the values of d since its range was often very wide.Three relations between parameters of randomness test were defined ftrstly. Then the relationships among the subclassD={1,2,m/4,m/2,3m/4,m,2m}of autocorrelation test for block cipher were studied by statistical experiments, where m was block length. The experiments show that the prefer choice of parameter d is m when doing autocorrelation test for block ci-pher. The method is also available for parameter selection of other randomness test for other types of cryptosystem.【总页数】5页(P86-90)【作者】范丽敏;冯登国;周永彬【作者单位】中国科学院,软件研究所,信息安全国家重点实验室,北京,100190;中国科学院,研究生院,北京,100039;中国科学院,软件研究所,信息安全国家重点实验室,北京,100190;中国科学院,软件研究所,信息安全国家重点实验室,北京,100190【正文语种】中文【中图分类】TP309.7【相关文献】1.基于FPGA的FESH分组密码算法高速实现 [J], 王建新;周世强;肖超恩;张磊2.ANT系列分组密码算法的FPGA高速实现 [J], 王建新;刘芮安;肖超恩;张磊3.基于MLP神经网络的分组密码算法能量分析研究 [J], 王恺;蔡爵嵩;严迎建4.基于混沌的双模块Feistel结构高安全性高速分组密码算法安全性分析 [J], 杜小妮;段娥娥;王天心5.RAIN:一种面向软硬件和门限实现的轻量分组密码算法 [J], 曹梅春;张文英;陈彦琴;邢朝辉;吴磊因版权原因,仅展示原文概要,查看原文内容请购买。
基于模糊评价的分组密码随机性评估模型
基于模糊评价的分组密码随机性评估模型范丽敏;冯登国;周永彬【期刊名称】《计算机研究与发展》【年(卷),期】2008(45)12【摘要】检测评估是研究密码算法安全性的重要技术手段.随机特性是其中重要而实用的测评内容.针对密码算法的随机性,已有多种不同的检测方法,但是对繁杂的随机性检测结果,尚不存在一个完整实用的量化评估体系和模型.选择分组密码为实例,研究了对密码算法随机性的量化评估.根据分组密码的设计准则,提出一个分组密码随机性的评估指标体系,以模糊多准则决策为基础给出了一个实用的分组密码随机性评估模型.该模型采用模糊数学中的隶属度函数方法,对随机性检测结果进行模糊化处理,能够反映出随机性的连续和渐变特点,有效解决了单纯的阈值方法造成的评估信息丢失问题.该模型的优点是实现了对分组密码随机性的量化评估,为密码算法的综合评估提供基础.同时,给出了对单个指标和属性的通用的评估流程,因此,该模型也可稍加修改和扩展.应用于其他类型密码算法的随机性评估中.【总页数】7页(P2095-2101)【作者】范丽敏;冯登国;周永彬【作者单位】中国科学院软件研究所信息安全国家重点实验室,北京,100190;中国科学院研究生院,北京,100049;中国科学院软件研究所信息安全国家重点实验室,北京,100190;中国科学院软件研究所信息安全国家重点实验室,北京,100190【正文语种】中文【中图分类】TP309【相关文献】1.基于模糊评价法的剧场文化影响力评价模型研究——文化部科技提升计划课题:中国剧场使用后评估(POE)体系研究报告之四 [J], 彭相国;王凤2.基于模糊评价方法的航天器总装过程产品安全性评估模型研究 [J], 赵书萍;刘宏阳;孙刚;万毕乐;刘智斌3.基于变压器马尔可夫状态评估模型和熵权模糊评价方法的风险评估技术研究 [J], 张桦;魏本刚;李可军;梁永亮4.基于模糊评价和AHP的综合评估模型 [J], 林娜5.基于模糊评价模型的辽阳市水资源承载能力综合评估 [J], 孙海波因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2009年7月Journal on Communications July 2009 第30卷第7期通信学报V ol.30No.7分组密码算法的自相关检测参数选择范丽敏1,2, 冯登国1, 周永彬1(1. 中国科学院软件研究所信息安全国家重点实验室,北京 100190;2. 中国科学院研究生院,北京 100039)摘要:自相关检测是一种用以检测一个长度为n的二元序列与其左移d位后序列的关联程度的随机性检测算法。
d的选择范围很大,对所有参数逐一进行检测不现实,需要研究检测参数之间的关系。
定义了检测参数之间可能存在的3种关系,以分组长度为m的分组密码随机性检测为对象,综合考虑分组密码和自相关检测的特点,利用统计实验研究了自相关检测参数子集D={1,2,m/4,m/2,3m/4,m,2m}中参数的关系。
研究结果表明,对分组密码进行自相关检测时,检测参数应该首选d=m。
该方法和结果为研究其他类型密码算法的随机性检测参数选择提供了新思路。
关键词:信息安全;分组密码;统计检测;自相关检测;参数选择中图分类号:TP309.7 文献标识码:B 文章编号:1000-436X(2009)07-0086-05Parameter selection of autocorrelation test for block ciphersFAN Li-min1,2, FENG Deng-guo1, ZHOU Yong-bin1(1. State Key Laboratory of Information Security,Institute of Software ,Chinese Academy of Sciences, Beijing 100190, China;2. Graduate University of Chinese Academy of Sciences, Beijing 100049, China)Abstract: Autocorrelation test was a statistical test to evaluate the correlation between one sequence and the corresponding non-cyclic left-shifted d bits sequence. It was impractical to adopt all the values of d since its range was often very wide.Three relations between parameters of randomness test were defined firstly. Then the relationships among the subclass D={1,2,m/4,m/2,3m/4,m,2m}of autocorrelation test for block cipher were studied by statistical experiments, where m was block length. The experiments show that the prefer choice of parameter d is m when doing autocorrelation test for block cipher. The method is also available for parameter selection of other randomness test for other types of cryptosystem.Key words: information security; block cipher; statistical test; autocorrelation test; parameter selection1引言一个好的密码算法应该能够保证其输出序列的随机性,使得该密码产生的输出序列在统计上难以与真随机序列区别开来。
检测一个序列与真随机序列之间的差距通常采用统计检测方法。
事实上,统计检测已经成为密码算法检测中重要的量化检测手段。
目前,已经存在多种不同的随机性检测项目[1~3],并且很多检测项目还带有参数。
对检测项目的参数研究并不多见,主要成果集中在正确参数的选择和错误参数收稿日期:2007-08-01;修回日期:2009-05-23基金项目:国家自然科学基金资助项目(60503014,60603013);国家高技术研究发展计划(“863”计划)基金资助项目(2007AA01Z470, 2008AA01Z417);北京市自然科学基金资助项目(4072026)Foundation Items: The National Natural Science Foundation of China (60503014,60603013); The National High Technology Research and Development Program of China (863 Program) (2007AA01Z470, 2008AA01Z417); The Natural Science Foundation of Beijing (4072026)第7期 范丽敏等:分组密码算法的自相关检测参数选择 ·87·的剔除上[4~6]。
文献[7]从统计学角度给出了参数之间相关性的研究方法,但是该方法不考虑具体密码算法的应用。
本文从另一个角度研究随机性检测项目的参数选择问题,首先定义参数之间可能存在的关系,综合考虑检测项目的基本特点和被测密码的基本结构,研究典型参数子集中各参数的相关性。
在众多的随机性检测项目中,自相关检测是一种十分重要的检测项目。
该项目在文献[8]中首次被提出,在文献[9,10]中进行了详细的描述。
此后,自相关检测被广泛地应用于随机性检测工具中。
其中,“使用自相关的随机性测试”作为实时检测由随机数发生器生成的随机数的方法和设备已被荷兰的L·哈尔斯申请为中国专利。
同时,我国科研与测评机构研制的相关工具也将自相关作为一项基础的检测项目。
自相关检测是用于检测一个长度为n 的二元序列与其左移(逻辑左移)d 位后的序列之间的关联程度。
除非特别说明之外,本文所指序列均为二元序列。
自相关检测中用到一个参数左移的位数d ,其取值通常有一个与序列长度有关的范围。
但是,在实际的检测中,要选择所有的参数进行逐一检测是不现实的。
此外,在实际的检测中还需要综合考虑被检测密码的结构特点。
例如,对分组密码算法的检测而言,对其进行自相关检测时,就应该考虑其按块加密的特点。
本文定义了参数之间可能存在的3种关系,并以分组密码为实例,设计大量的实验,给出了与分组长度m 有关的自相关检测参数子集D ={1,2,m /4,m /2,3m /4,m ,2m }中各参数的关系。
同时根据实验结果和最小冗余原则给出结论:对分组密码进行自相关检测时,应该优先选择d=m 。
文中制定的参数之间的关系、参数选择策略和采用的实验方法也可以应用于其他类型的密码算法以及随机性检测项目的参数相关性研究之中。
2 背景知识2.1 自相关检测自相关检测用来检测一个序列与其左移d 位的序列的关联程度。
一个随机序列应该与其左移任意位的序列都是统计独立的,关联程度应该很低。
用10()n d ii d i A d εε−−+==⊕∑表示待检序列与将其左移d 位的序列之间不同的元素个数,d 称为时延。
根据独立同分布的中心极限定理,可构造统计量为2(())n dA d V −−=(1) V 应该服从标准正态分布,记作~01V N (,)。
使用统计方法来检测一个密码算法输出序列的随机性时,需要进行多次统计检测,并利用通过检测的比例来刻画算法输出随机性的优劣。
检测的阈值通过式(2)计算求得[11]。
S A ⎛±⎜⎜⎝ (2) 其中,S 为样本数量,A =1−a ,a 为显著性水平,K 通常取3[11]。
2.2 分组密码的随机性检测当前,对分组密码的随机性检测通常是检测分组密码算法产生密文流的随机性。
也就是说,检测密码算法产生的密文流能否与真随机序列区分开来,如果能够区分,则认为密码算法输出不随机;否则,则认为密码算法的输出是随机的。
在AES 的评选过程中,NIST(national institute of standard technology)对候选密码算法的两轮评估均采用了随机性检测方法,它选用了6种方式产生密文流[12]。
这种方法将分组密码看成一个伪随机数发生器,却忽略了分组密码按分块加密的这一重要结构性特点。
在实际检测密文流的随机性时,如果在参数选择上考虑分组密码的这种结构特点,不同的参数选择可能会有不同的检测结论。
因此,对分组密码随机性检测的参数选择,不能简单照搬随机数发生器或者流密码的参数选择规则,而必须要考虑具体检测项目的特点和分组密码的结构特性,进行合理的参数设置。
2.3 参数之间的关系和参数子集选择基本原则一个随机性检测项目可能会包含多个参数,每个参数有一个选择范围。
为了研究的方便,首先定义参数之间可能存在的3种关系。
1) 包含关系对于同一个检测项目的2个不同参数A 和B ,对于任何序列,如果该序列能够通过参数A 的检测,那么它一定能通过参数B 的检测,反之不能成立,此时,称A 包含B 。
2) 等价关系对于同一个检测项目的2个不同参数A 和B ,对于任何序列,如果该序列能够通过参数A 的检测,那么它一定能通过参数B 的检测,反之亦然,此时,称A 等价B 。
·88·通信学报第30卷3) 不相关关系对于参数A和B,如果不存在包含和等价关系,则统称其不相关。
根据参数之间的关系,本文同时制定选择有效参数子集的2条基本原则。
①完备性选择出的参数子集应该尽可能可以代表参数选择范围内的所有参数。
即对于任何一个序列,通过参数子集中各参数的检测,就可以判定该序列通过了该项目的检测。
完备性原则需要将不相关的参数尽量多地包含到检测参数子集之中。
②最小冗余去除参数集之中的冗余参数。
无冗余原则需要去除包含关系中的被包含参数,多个等价的参数中只需选择其中的一个。
本文所定义的参数之间的关系和参数选择基本准则不仅适用于自相关检测,同时也适用于其他带有参数的检测项目的参数选择研究中。
3 分组密码自相关检测参数研究分组密码是按分组长度逐块加密的,如果分组密码的随机性好,则密文流应该去除分组块之间可能存在的各种关系[13]。
换句话说,若密码算法的随机化程度好,则无论明文形式如何,密文流从任何方面来看都是随机的。