SM4加密算法的侧信道攻击实现

SM4 算法有多个位置存在泄漏点,如下图所示:
SM4的潜在攻击点
在位置1和2,可以逐个字节攻击密钥,因为密钥和中间结果之间没有扩散,这时通常取Sbox的输出作为攻击点,因为在位置2处的功耗是大于位置1的,但是在FPGA硬件电路中,Sbox产生的功耗相对于状态寄存器来说小得多,有文章中的数据显示,如果攻击点在Sbox处,至少需要采集270000条功率曲线才可以破解出密钥。在实际密码电路中,产生功耗的寄存器出现在位置3,因为SM4算法的移位操作,密钥和明文高度混淆,直接攻击需要 2 32 2^{32} 232次穷举尝试,如果选择随机明文,则在位置3中不可能进行攻击。因为选择位置3作为攻击点时,应该使用选择特定的明文方法来获得密钥。这与破解AES密钥是不同的,因为在AES的每轮的状态寄存器中,最后一步是轮密钥加操作,状态寄存器的每个字节的数据只与其对应的密钥字节有相关性,可以使用正常的随机明文作为输入来攻击。
对于SM4算法而言,使用选择特定的明文方法如下:
(1)以第一轮攻击为例,第一轮密钥为 r k 0 rk_0 rk0,记 r k 0 = ( r k 0 , 0 , r k 0 , 1 , r k 0 , 2 , r k 0 , 3 ) rk_0 = (rk_{0,0}, rk_{0,1},rk_{0,2},rk_{0,3}) rk0=(rk0,0,rk0,1,rk0,2,rk0,3)
(2)选择明文 ( X 0 , X 1 , X 2 , X 3 ) = ( 00000000 h , 00000000 h , 00000000 h , X X 000000 h ) (X_0,X_1,X_2,X_3)=(00000000h, 00000000h, 00000000h,XX000000h) (X0,X1,X2,X3)=(00000000h,00000000h,00000000h,XX000000h),其中 X X XX XX表示一个字节的随机数据。根据SM4算法步骤,经过Sbox替换后,输出的值为:
B = ( S b o x ( X X ⊕ r k 0 , 0 ) , S b o x ( r k 0 , 1 ) , S b o x ( r k 0 , 2 ) , S b o x ( r k 0 , 3 ) ) B = (Sbox(XX \oplus rk_{0,0}), Sbox(rk_{0,1}), Sbox(rk_{0,2}), Sbox(rk_{0,3})) B=(Sbox(XXrk0,0),Sbox(rk0,1),Sbox(rk0,2),Sbox(rk0,3))
从这看出,只有 32bits的 b 0 b_0 b0 是变量,其他 b 1 , b 2 , b 3 b_1, b_2,b_3 b1,b2,b3都是常量,为了便于表述,把Sbox输出 B B B以及移位的结果在下表中进行推导,表中字母 X X X表示1bit变量,其他字母表示1bit固定常量。

移位操作32bit寄存器中的值
B = ( b 0 , b 1 , b 2 , b 3 ) B=(b_0,b_1,b_2,b_3) B=b0,b1,b2,b3XXXXXXXX ABCDEFGH IJKLMNOP QRSTUVWY
移位2比特XXXXXXAB CDEFGHIJ KLMNOPQR STUVWYXX
移位10bitCDEFGHIJ KLMNOPQR STUVWYXX XXXXXXAB
移位18 bitsKLMNOPQR STUVWYXX XXXXXXAB CDEFGHIJ
移位24bitsQRSTUVWY XXXXXXXX ABCDEFGH IJKLMNOP

(3)经过线性位移后,状态寄存器的值为:
C = B ⊕ ( B < < < 2 ) ⊕ ( B < < < 10 ) ⊕ ( B < < < 18 ) ⊕ ( B < < < 24 ) C=B \oplus(B <<< 2) \oplus (B <<< 10) \oplus (B <<< 18) \oplus (B <<< 24) C=B(B<<<2)(B<<<10)(B<<<18)(B<<<24)
其中 c 0 c_0 c0 表达式如下:
c 0 = b 0 ⊕ ( b 0 < < < 2 ) ⊕ m a s k c_0 = b_0 \oplus (b_0 <<< 2) \oplus mask c0=b0(b0<<<2)mask
mask 是一个与后3个字节的子密钥相关的未知的8 bits 常量。根据表达式可以看出 c 0 c_0 c0 与轮密钥的第一个字节 r k 0 , 0 rk_{0,0} rk0,0具有很强的相关性,根据功耗攻击原理,可以恢复出 r k 0 , 0 rk_{0,0} rk0,0。同理,如果选择明文: ( X 0 , X 1 , X 2 , X 3 ) = ( 00000000 h , 00000000 h , 00000000 h , 00 X X 0000 h ) (X_0,X_1,X_2,X_3) = (00000000h, 00000000h, 00000000h, 00XX0000h) (X0,X1,X2,X3)=(00000000h,00000000h,00000000h,00XX0000h)可以恢复出 r k 0 , 1 rk_{0,1} rk0,1,依次按字节恢复出轮密钥,然后依据第1-4轮的轮密钥通过密钥扩展算法反推出加密的原始密钥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/235727.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ODOO领先其他ERP的王炸功能:作业路线!(含MTO模式配置图表)

和众多ERP系统比较&#xff0c;ODOO-ERP中的作业路线功能可谓相当强大&#xff0c;可以自行定义供应链路线&#xff0c;以及单据同步生成。极大地增强了不同业务场景的适应性和业务管理效率&#xff01; 自定义供应路线的特点&#xff1a;对于很多灵活多变的企业而言&#xff…

Java架构师系统架构实现高内聚低耦合

目录 1 导语2 边界内聚耦合概述3 聚焦内聚4 关注耦合5 如何实现高内聚低耦合6 内聚耦合规划不当的效果7 总结想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导语 架构设计的核心维度,从系统的扩展性、高性能、高可用、高安全性和伸缩性五个维度进行了探讨,并介绍了…

JavaEE:计算机是如何工作的

JavaEE学什么&#xff1f; 主要学习Java开发网站后端&#xff0c;为后面学习Spring做铺垫 涉及的内容&#xff1a; 1&#xff09;操作系统基础知识 2&#xff09;多线程知识 3&#xff09;文件操作 4&#xff09;网络编程 5&#xff09;网络原理 6&#xff09;JVM 计算…

用到了C语言的函数指针功能。

请选择一个功能&#xff1a; 1. 加法 2. 减法 3. 乘法 4. 除法 5. 取模 6. 阶乘 7. 判断素数 8. 球体体积 9. 斐波那契数列 10. 幂运算 11. 最大公约数 12. 最小公倍数 13. 交换数字 14. 排序 15. 退出 请选择一个选项&#xff1a; #include <stdio.h> #include <stdl…

強強联手!M88明陞宣布与G2 电子竞技俱乐部成为官方合作伙伴!

M88明陞作为亚洲领先的在线游戏平台&#xff0c;正式宣布与G2电子竞技俱乐部建立具有突破性意义的官方合作伙伴关系&#xff0c;G2电子竞技俱乐部是全球领先的电子竞技品牌之一。作为官方合作伙伴关系&#xff0c;双方将合作开展一系列活动。 M88明陞将在G2 电子竞技俱乐部追求…

工单质检上线提升企业IT服务质量管理,智能服务能力再添新翼!甄知燕千云全新版本V1.26.0发布!

燕千云数智化业务服务平台在11月24日发布了V1.26.0版本&#xff0c;本次主要新增了工单质检、SLA绩效管理和上下游管理能力升级、以及自动预测工单流转趋势的功能&#xff0c;以支持更多的IT服务场景。同时&#xff0c;呼叫中心新增了智能分配客服、工单关联会话记录、客服消息…

RT-Thread学习笔记(六):RT_Thread系统死机日志定位

RT_Thread系统死机日志定位 一、RT_Thread系统死机日志定位二、Cortex-M3 / M4架构知识2.1 Cortex-M3 / M4架构概述2.2 寄存器用途 三、排查步骤 一、RT_Thread系统死机日志定位 RT-Thread 系统发生hardfault死机时&#xff0c;系统默认会打印出一系列寄存器状态帮助用户定位死…

NOIP2016提高组第二轮day2 - T3:愤怒的小鸟

题目链接 [NOIP2016 提高组] 愤怒的小鸟 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔。简单来说&#xff0c;这款游戏是在一个平面上进行的。 有一架弹弓位于 ( 0 , 0 ) (0,0) (0,0) 处&#xff0c;每次 Kiana 可以用它向第一象限发射一只红色的小鸟&#xff0c;小鸟…

【T3】安装畅捷通T3软件,错误代码0x800A0146,描述:未找到标识符为‘138’的资源。

【问题描述】 安装畅捷通T3软件过程中&#xff0c;提示&#xff1a; 错误代码0x800A0146 描述&#xff1a;未找到标识符为‘138’的资源&#xff0c; 安装程序将立即终止。 【解决方法】 该错误是因为安装过程中检测到数据库版本过高。 首先T3普及版/标准版11.2版本支持数据库…

48.0/图片和多媒体文件的使用(详细版)

目录 48.1 网页中插入图片 48.1.1 基本语法 48.1.2 常见属性 48.2 图片超链接 48.3 设置图片热区链接 48.4 将图片作为网页背景 48.5 滚动字幕 48.6 插入多媒体文件 48.1 网页中插入图片 48.1.1 基本语法 <img src=“图片地址”> img 标记用于将图像插入到 HTML…

深度解析HarmonyOS开发-活动召集令元服务【鸿蒙北向应用开发实战】

目录 一&#xff0e;元服务和ArkTS语言简介1.1 学习元服务1.2 元服务带来的变革1.3 元服务全场景流量入口1.4 ArkTS学习1.5 ArkTS特点 二&#xff0e;DevEco Studio开发工具2.1 DevEco Studio学习2.2 DevEco Studio的主要特性2.3 端云一体化开发2.3.1端云一体化开发特点 2.4 低…

Zidebactam sodium salt β-内酰胺酶抑制剂 1706777-46-9科研

Zidebactam sodium salt β-内酰胺酶抑制剂 1706777-46-9 &#xff08;源自星戈瑞&#xff09; ATH686 FLT3 抑制剂 853299-52-2 Pelitrexol 抑制剂 446022-33-9 TBT1 转运蛋白抑制剂 52535-76-9 HFY-4A HDAC 抑制剂 2094810-82-7 SDR-04 BET 抑制剂 879593-54-1 Phthala…

年会抽奖【编程题】

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 目录 ☁️题目解析 ☁️解题思路…

JAVA 阻塞队列原理

JAVA 阻塞队列原理 阻塞队列&#xff0c;关键字是阻塞&#xff0c;先理解阻塞的含义&#xff0c;在阻塞队列中&#xff0c;线程阻塞有这样的两种情况&#xff1a; 当队列中没有数据的情况下&#xff0c;消费者端的所有线程都会被自动阻塞&#xff08;挂起&#xff09;&#x…

浅析不同NAND架构的差异与影响

SSD的存储介质是什么&#xff0c;它就是NAND闪存。那你知道NAND闪存是怎么工作的吗&#xff1f;其实&#xff0c;它就是由很多个晶体管组成的。这些晶体管里面存储着电荷&#xff0c;代表着我们的二进制数据&#xff0c;要么是“0”&#xff0c;要么是“1”。NAND闪存原理上是一…

新瓶装旧酒之底座概念

一、前言 互联网技术总是喜欢创造一下新的词汇以显示技术先进或者高大上&#xff0c;比如&#xff1a;云计算&#xff0c;中台&#xff0c;引擎&#xff0c;敏捷&#xff0c;领域模型等等。刚出来的时候总是让人看的云里雾里&#xff0c;但是了解后发现也就那么回事。比如今年…

【运维】将Linux的硬盘当内存用,Linux内存不够用的时候如何用硬盘提升内存

文章目录 内存不够用&#xff0c;可以用硬盘当内存吗如何取消这种交换空间交换空间是优先使用的还是说原始内存是会被优先使用的 内存不够用&#xff0c;可以用硬盘当内存吗 是的&#xff0c;可以使用硬盘作为虚拟内存来扩展容器中的内存。这个过程被称为“交换”或“交换空间…

管理空闲存储空间

位示图是操作系统中一种管理空闲存储空间的方法。管理空闲除使用位示图法还可用&#xff1a;空闲区表法&#xff0c;空闲链表法&#xff0c;成组链接法 1.空闲区表法 空闲表法属于连续分配方法。它与内存管理中的动态分区分配方法雷同。 将外存空间上一个连续未分配区域称为“…

【兔子王赠书第11期】成为一名优秀的程序员,从读一本好书开始

文章目录 写在前面《代码大全2》前 言哪些人适合阅读本书还可以从哪些地方找到更多相关信息本书的关键收益为什么要写这本书 推荐理由粉丝福利写在后面 写在前面 如果你曾经想要学习软件开发&#xff0c;却因为零基础而感到困惑&#xff0c;那么《代码大全2纪念版》是你的完美…

第三十二课 电商系统增删改查统一接口的编写

商品增删改查 统一接口 接口方法&#xff0c;只有五个 Add增 Delete 删 Update 更新 findAll查询所有 findOne查询某一个 add增加一个数据 不管增加哪一个表的数据 表名&#xff08;小写&#xff09;与类名一致表中的字段在类中私有化封装 采用&#xff1a;java技术…