技术社区
安全培训
技术社群
积分商城
先知平台
漏洞库
历史记录
清空历史记录
相关的动态
相关的文章
相关的用户
相关的圈子
相关的话题
注册
登录
侧信道攻击在密码中一点应用
1416621359078770
发表于 四川
CTF
888浏览 · 2025-05-29 08:35
返回文档
侧信道攻击在密码中应用
侧信道攻击(Side-Channel Attack,简称 SCA)是一种不直接攻击密码算法本身数学结构,而是通过分析加密设备在执行加密运算时泄露出的物理信息来推测密钥的攻击方式。
这里讨论时间的侧信道攻击,以sage中一个is_prime()函数为例,它就判断一个数是不是素数,返回true/flase,去看它是怎么实现的
ret = n.is_prime()
对于整数是调用自身方法,再次查看code
mpz_fits_ulong_p()
判断是否可以安全地转换为一个 无符号长整型(unsigned long),而不会发生溢出或精度丢失。返回true/flase
这对小于2^64的数,给一个分支判断是否是不是素数,这里先判断奇偶,然后小于一千的奇数(用一个list保存对应的是不是素数),大于1000的用
pari_is_prime()
判断是不是素数,这里对小于1000的素数判断时间会较小于大于1000的素数
测试代码
测试结果
分析数如果大于2^64(即超过unsigned long的精度),会判断proof.arithmetic(),一般默认true
分析pari的素数测试代码
查看代码可知isprime()函数要过两个判断,对于第一个判断,是否有小于103的小素因子,对于第二个判断进行正式复合的素性证明(可能耗时比较长)
测试代码
由此我们可以利用is_prime()函数判断一个数有小于103的因子,或者小于1000(这个几乎不能利用)
以jqctf2025 onelinecrypto 为例
题目描述
这个题就是利用
is_prime()
函数判断一个数有小于103的因子,
我们可以操控
flag^input_num
中
input_num
,这个以为这可以在高于flag的位任意构造,所以所以可以利用这个使得可以
(flag^input_num)
可以覆盖一个小素数(p<103,p!=2)的完全剩余系,每个进行
is_prime()
判断,时间短的有
(flag^input_num)%p==0
,
input_num
已知,则
flag=-input_num%p
(这里是因为他们input_num只取了高于flag的位,有flag^input_num=flag+input_num),遍历小p,crt,然后爆破得到结果。
虽然有小于103因子的数会快速出结果,但有时侯(还挺多)没有小于103因子的数也能快速出结果,则在每个剩余类进行爆破,只有正确(即
(flag+input_num)%p==0
)的没有长时间响应,由此一个个排除结果,然得到
flag=-input_num%p
exp:
0
人收藏
0
人喜欢
转载
分享
0
条评论
某人
表情
可输入
255
字
评论
发布投稿
热门文章
1
从零掌握java内存马大全(基于LearnJavaMemshellFromZero复现重组)
2
突破网络限制,Merlin Agent助你轻松搭建跳板网络!
3
从白帽角度浅谈SRC业务威胁情报挖掘与实战
4
基于规则的流量加解密工具-CloudX
5
从0到1大模型MCP自动化漏洞挖掘实践
近期热点
一周
月份
季度
1
从零掌握java内存马大全(基于LearnJavaMemshellFromZero复现重组)
2
突破网络限制,Merlin Agent助你轻松搭建跳板网络!
3
从白帽角度浅谈SRC业务威胁情报挖掘与实战
4
基于规则的流量加解密工具-CloudX
5
从0到1大模型MCP自动化漏洞挖掘实践
暂无相关信息
暂无相关信息
优秀作者
1
T0daySeeker
贡献值:38700
2
一天
贡献值:24800
3
Yale
贡献值:21000
4
1674701160110592
贡献值:18000
5
1174735059082055
贡献值:16000
6
Loora1N
贡献值:13000
7
bkbqwq
贡献值:12800
8
手术刀
贡献值:11000
9
lufei
贡献值:11000
10
xsran
贡献值:10600
目录
侧信道攻击在密码中应用
转载
标题
作者:
你好
http://www.a.com/asdsabdas
文章
转载
自
复制到剪贴板