1、密码学报ISSN 2095-7025 CN 10-1195/TNJournal of Cryptologic Research,2023,10(1):118130密码学报编辑部版权所有.E-mail:http:/Tel/Fax:+86-10-82789618针对分组密码工作模式的基于持久性故障的碰撞攻击*臧首金,郑世慧北京邮电大学 网络空间安全学院,北京 100876通信作者:郑世慧,摘要:基于持久性故障的碰撞攻击可以有效恢复 AES 加密/解密模块(基于 S 盒实现)中使用的密钥.现实中处理长消息需要调用相应的工作模式,不能满足基于持久性故障的碰撞攻击的前提假设.此外,广泛应用的开源密码库
2、OpenSSL 中 AES 密码模块采用多个 T 盒而非 S 盒实现,导致已有的持久性故障注入模式失效.本文针对 OpenSSL 中的不同工作模式分别研究.对于 ECB 模式,通过分别在 T 盒注入置零故障或随机故障,分别攻击 ECB 模式加/解密实现;对于 CBC 模式,通过挑战密文的方式攻击 CBC模式的解密实现,从而避免加密时输入随机初始向量对中间值的干扰;对于 OFB 和 CFB 这种不直接操作消息的模式,通过挑战密文的方式仍能成功攻击.本文还证明了获得加密模块(或解密模块)的直接输出并非持久性故障碰撞攻击的必要条件,并通过对 CMAC 的分析验证了只要可以观测到中间状态的碰撞信息,就
3、可以恢复密钥.通过在 PC 上仿真注入故障,针对上述工作模式实施密钥恢复实验,表明不论是单字节故障还是多字节故障,攻击成功率都为 100%.关键词:OpenSSL;AES;工作模式;持久性故障;故障攻击;碰撞攻击中图分类号:TP309.7文献标识码:ADOI:10.13868/ki.jcr.000583中文引用格式:臧首金,郑世慧.针对分组密码工作模式的基于持久性故障的碰撞攻击J.密码学报,2023,10(1):118130.DOI:10.13868/ki.jcr.000583英文引用格式:ZANG S J,ZHENG S H.Persistent fault-based collision
4、attack on block cipher modeJ.Journal of Cryptologic Research,2023,10(1):118130.DOI:10.13868/ki.jcr.000583Persistent Fault-based Collision Attack on Block Cipher ModeZANG Shou-Jin,ZHENG Shi-HuiSchool of Cyberspace Security,Beijing University of Posts and Telecommunications,Beijing 100876,ChinaCorresp
5、onding author:ZHENG Shi-Hui,Abstract:Persistent fault-based collision analysis can effectively recover the key used in the AESencryption/decryption module(based on the S-box implementation).Nevertheless,processing longmessages requires invoking the corresponding working mode in reality,which cannot
6、satisfy the pre-supposition of collision attack based on persistent fault.In addition,the AES cryptographic moduleof OpenSSL,a widely used open source cryptographic library,is implemented with multiple T-boxesinstead of S-boxes,which invalidates the existing persistent fault injection mode.In this s
7、tudy,ECB*基金项目:国家自然科学基金(61502048)Foundation:National Natural Science Foundation of China(61502048)收稿日期:2022-01-04定稿日期:2022-05-15臧首金 等:针对分组密码工作模式的基于持久性故障的碰撞攻击119mode in OpenSSL is implemented by injecting stuck at 0 fault or random fault into T-box respec-tively to attack ECB mode encryption/decryptio
8、n.For CBC mode,this study attacks the decryptionimplementation of CBC mode by challenging ciphertext,so as to avoid interference of intermediatevalue by input random initial vector during encryption.For OFB and CFB modes,attacking thepattern of non-direct operating messages can be successful by chal
9、lenging ciphertext.In addition,itis shown that obtaining the direct output of the encryption module(or decryption module)is not anecessary condition for persistent fault collision attack,and the key can be recovered as long as thecollision information of the intermediate state can be observed by CMA
10、C analysis.Some simulationexperiments about injection faults on PC and implement key recovery are done for the above workingmodes.The experimental results show that the success rate of the attack is 100%for both single-byteand multi-byte faults.Key words:OpenSSL;AES;block cipher mode;persistent faul
11、t analysis;fault analysis;collisionanalysis1引言故障攻击利用电压毛刺、时钟毛刺、激光注入等技术向加密设备中注入故障,使之在计算过程中产生错误,从而通过分析观测到的正确/错误密文,恢复密钥等敏感信息.1997 年,Biham 和 Shamir 首次提出了针对分组密码 DES 的差分故障攻击(differential fault analysis,DFA)1,通过注入 50200 次单比特故障可以恢复完整的 56 比特密钥.2004 年,Giraud 提出了一个针对 AES 实现的 DFA2,通过在一个字节上注入故障,使用少于 250 条密文就可以恢复
12、AES-128 的密钥.2020 年,金雨璇等人基于面向比特的随机故障模型,通过注入一个单比特故障,结合平均 15.3526 比特的穷举攻击,成功恢复出了 SM4 的128 比特的密钥3.除 DFA 之外,还有许多故障攻击方法被提出,如故障灵敏度分析(fault sensitivityanalysis,FSA)4、错误率分析(fault rate analysis,FRA)5、暂稳攻击(transient-steady effect attack,TSE)6等.以上攻击都基于瞬态故障模型,即注入的故障只会影响一次加密过程.这类分析方法需要对注入位置精确把握,而现实攻击中从观测密文区分是否在指定
13、位置注入了所需的错误也不是一个简单问题.此外,往往需要多次注入所需错误才能恢复完整密钥.Zhang 等人在 CHES 2018 上提出针对 AES 的持久性故障攻击(persistent fault attack,PFA)7,也就是说,加密设备刷新(比如重启)之前会一直保持故障的状态.攻击者在 S 盒中注入一个单字节的持久性故障,且已知注入故障的值和注入位置,则平均使用 2000余条密文,可以恢复 AES 的 128 比特密钥.同时,他们借助 Rowhammer 技术,在密码库 Libgcrypt 1.6.3中 AES 实现的 S 盒中成功注入单字节持久性故障.之后,Menu 等人通过电磁故障
14、注入技术对 ARM 微控制器上的 AES 实现的 S 盒注入持久性故障并恢复密钥8.2020 年,Zhang 等人在 ATmega163L 微控制器上的 AES 实现上注入错误并攻击成功,这里他们不再假设攻击者需知道故障位置和故障值9.2021年,Zheng 等人提出了基于持久性故障的碰撞攻击(persistent fault-based collision analysis,PFCA)10,他们通过在 AES 的 S 盒中注入一次持久性故障,使用不超过 4096 条密文成功恢复了 AES 的 128 比特密钥.同样地,PFCA 也不需要知道注入故障的位置和注入的故障值,而且错误长度可以为多字
15、节.特别地,攻击者可以通过观测密文是否有碰撞判断是否注入了所需故障.2022 年,Soleimany 等人利用电磁故障在 ARM Cortex-M4 微控制器上注入了 8 字节故障和 16 字节持久性故障,分别只需要 1509 和 1448条密文就可以将密钥搜索复杂度降低到 O(29)11.OpenSSL 是一个功能齐全的工具包,包含常用的密码算法(对称/非对称/摘要)和数字证书认证等密码模块,被广泛应用于 TLS 协议、HTTPS、SSH 等12.但是,OpenSSL 中的 AES 实现采用多个 T 盒而非一个 S 盒,因而在注入持久性故障时与 PFCA 的错误模型不同.此外,CBC 等适用
16、于长消息加密的工作模式加密时,会输入随机值使得相同明文变换为不同密文,导致无法通过选择明文观测到碰撞密文.最后,在基于分组密码原语设计的消息认证模式中,明文块对应的密文块会经过处理再输出,因而不能收集到密文.由此,PFCA 不能直接应用于 OpenSSL 中基于 AES 的工作模式中来恢复密钥.本文通过对120Journal of Cryptologic Research 密码学报 Vol.10,No.1,Feb.2023OpenSSL 中基于 AES 的几种常用工作模式ECB 模式、CBC 模式、CFB 模式、OFB 模式及 CMAC模式的实现原理进行分析,改进 PFCA 的攻击流程,成功恢复了 128 比特密钥,主要贡献如下:首先,由于 OpenSSL 使用 4 个 T 盒同时来进行查表操作,为了达到原始 PFCA 故障模型的效果,需要在 4 个 T 盒的相同位置注入故障;本文通过对 AES 加密使用的 4 个 Te 盒注入置零故障,成功攻击了ECB 模式的加密实现.另一方面,通过在 OpenSSL 中 AES 解密实现的第 5 个 Td 盒注入随机故障,结合选择密文攻击,成功恢复