[发明专利]一种侧信道攻击方法及装置有效
申请号: | 201611092276.2 | 申请日: | 2016-11-30 |
公开(公告)号: | CN108123790B | 公开(公告)日: | 2021-01-19 |
发明(设计)人: | 唐烨;李慧云;刘玢玢 | 申请(专利权)人: | 深圳先进技术研究院 |
主分类号: | H04L9/00 | 分类号: | H04L9/00 |
代理公司: | 深圳市科进知识产权代理事务所(普通合伙) 44316 | 代理人: | 赵勍毅 |
地址: | 518055 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 信道 攻击 方法 装置 | ||
1.一种侧信道攻击方法,其特征在于,包括:
步骤a:确定待监测指令的内容和位置;
步骤b:将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中;
步骤c:在所述共享文件区的最后一级缓存上执行攻击,得到私钥dB的值;
在所述步骤a中,所述确定待监测指令的内容即建立指令ins和私钥dB比特位之间的联系,计算方式包括二进制展开算法、加减法算法及滑动窗口算法的椭圆曲线多倍点计算实现算法,以及蒙哥马利阶梯算法;
所述二进制展开算法、所述加减法算法及所述滑动窗口算法描述了Q=[k]P的计算过程;多倍点计算中可以判断私钥dB比特位的值是0还是1的指令,可以是单条指令,也可以是多条指令;
所述Q=[k]P也被称为点P的k倍点运算,其过程为
在多倍点计算的二进制展开算法中,算法从私钥的高位到低位依次判断每一比特位的值,当密钥位为1,即kj=1时,执行Q=Q+P;因此,可以通过监测Q=Q+P该操作中的指令ins,来判断密钥的每一比特位的值,即若指令ins被执行,则此时私钥dB中该比特位的值为1,反之若指令ins未被执行,则私钥dB中该比特位的值为0;
在多倍点计算的加减法算法中,算法包括循环r次,其中在每一轮循环中,当私钥dB比特位的值为1时,执行Q=Q+P操作;当私钥dB比特位的值为0时,执行Q=Q-P操作;因此,可以同时监测Q=Q+P和Q=Q-P中的指令,得到私钥dB中某些比特位的值,最终可以获取到部分私钥;
在多倍点计算的滑动窗口算法中,所述滑动窗口算法并不对私钥中每一比特位的值进行判断,对指令执行情况的判读结果很难与私钥的每一位一一对应;通过监测处的指令,攻击者可以得到私钥dB高位的比特值;
在多倍点计算的蒙哥马利阶梯算法中,所述蒙哥马利阶梯算法使用私钥dB的比特位来进行条件的判断,从而执行不同的操作;同时检测T=T+Q,Q=[2]Q,Q=T+Q,T=[2]T这四处指令所在的缓存行,从而推断出私钥dB相应比特位的值;
在所述步骤a中,所述确定待监测指令的位置的计算方式包括:通过逆向工程技术对待监测指令进行定位,或利用Linux自带的反汇编工具对待监测指令进行定位;
在所述步骤b中,所述公钥密码算法为SM2算法,所述将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中具体包括:令攻击者所在的进程为进程A,SM2算法解密时所在的进程为进程S,映射工作由攻击者使用相关映射指令或函数完成;映射完成后,如果进程S和进程A同时工作,进程S的ELF文件将会被映射到两个进程的虚拟空间,但被映射到最后一级缓存中的位置是唯一的,对所述最后一级缓存中S-ELF的操作会同时影响进程A和进程S的工作;
在所述步骤c中,所述在所述共享文件区的最后一级缓存上执行攻击的攻击方式包括:
步骤c1:通知执行进程A和进程S;
步骤c2:进程A“驱逐”指令ins;
步骤c3:进程A“等待”一段时间,此时进程S执行一轮多倍点操作;
步骤c4:进程A“再读取”指令ins,收集读取指令的时间;
步骤c5:重复执行步骤c2至步骤c4的“驱逐-等待-再读取”的攻击过程,直到解密结束。
2.一种侧信道攻击装置,其特征在于,包括指令计算模块、文件映射模块和缓存攻击模块;所述指令计算模块用于确定待监测指令的内容和位置;所述文件映射模块用于将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中;所述缓存攻击模块用于在所述共享文件区的最后一级缓存上执行攻击,得到私钥dB的值;
所述指令计算模块包括指令内容计算单元,所述指令内容计算单元用于确定待监测指令的内容即建立指令ins和私钥dB比特位之间的联系,计算方式包括二进制展开算法、加减法算法及滑动窗口算法的椭圆曲线多倍点计算实现算法,以及蒙哥马利阶梯算法;
所述Q=[k]P也被称为点P的k倍点运算,其过程为
在多倍点计算的二进制展开算法中,算法从私钥的高位到低位依次判断每一比特位的值,当密钥位为1,即kj=1时,执行Q=Q+P;因此,可以通过监测Q=Q+P该操作中的指令ins,来判断密钥的每一比特位的值,即若指令ins被执行,则此时私钥dB中该比特位的值为1,反之若指令ins未被执行,则私钥dB中该比特位的值为0;
在多倍点计算的加减法算法中,算法包括循环r次,其中在每一轮循环中,当私钥dB比特位的值为1时,执行Q=Q+P操作;当私钥dB比特位的值为0时,执行Q=Q-P操作;因此,可以同时监测Q=Q+P和Q=Q-P中的指令,得到私钥dB中某些比特位的值,最终可以获取到部分私钥;
在多倍点计算的滑动窗口算法中,所述滑动窗口算法并不对私钥中每一比特位的值进行判断,对指令执行情况的判读结果很难与私钥的每一位一一对应;通过监测处的指令,攻击者可以得到私钥dB高位的比特值;
在多倍点计算的蒙哥马利阶梯算法中,所述蒙哥马利阶梯算法使用私钥dB的比特位来进行条件的判断,从而执行不同的操作;同时检测T=T+Q,Q=[2]Q,Q=T+Q,T=[2]T这四处指令所在的缓存行,从而推断出私钥dB相应比特位的值;
所述指令计算模块还包括指令位置计算单元,所述指令位置计算单元用于确定待监测指令的位置,计算方式包括:通过逆向工程技术对待监测指令进行定位,或利用Linux自带的反汇编工具对待监测指令进行定位;
所述文件映射模块将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中具体包括:所述公钥密码算法为SM2算法,令攻击者所在的进程为进程A,SM2算法解密时所在的进程为进程S,映射工作由攻击者使用相关映射指令或函数完成;映射完成后,如果进程S和进程A同时工作,进程S的ELF文件将会被映射到两个进程的虚拟空间,但被映射到最后一级缓存中的位置是唯一的,对所述最后一级缓存中S-ELF的操作会同时影响进程A和进程S的工作;
所述缓存攻击模块在所述共享文件区的最后一级缓存上执行攻击的攻击方式包括:通知执行进程A和进程S;进程A“驱逐”指令ins;进程A“等待”一段时间,此时进程S执行一轮多倍点操作;进程A“再读取”指令ins,收集读取指令的时间;重复执行“驱逐-等待-再读取”的攻击过程,直到解密结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳先进技术研究院,未经深圳先进技术研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611092276.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:分析安全攻击的方法及设备
- 下一篇:一种轻量级分组密码SCS的实现方法与装置