针对RSA的FLUSH+RELOADCache计时攻击参数选取方法研究汇报人:周平单位:军械工程学院汇报提纲一、研究背景二、研究内容三、总结展望汇报提纲一、研究背景二、研究内容三、总结展望1.研究背景针对RSA的密码分析RSA故障攻击计时攻击声音攻击功耗攻击Cache计时攻击模数分解共模攻击小加密指数攻击小解密指数攻击格规约攻击……1.研究背景加密E()解密D()密文C发送者(Alice)攻击者(Eve)接收者(Bob)KaKb明文P明文P电磁功耗声音故障输出Cache访问时间频率可见光电磁功耗声音频率可见光公开信道故障输出Cache访问时间旁路攻击与Cache计时攻击1.研究背景针对RSA的Cache计时攻击思路𝑚=𝑐𝑑mod𝑛forifromtto0m=Sqr(m)m=Reduce(m,n)ifdi=1m=Mult(m,c)m=Reduce(m,n)𝑑=𝑑𝑡𝑑𝑡−1⋯𝑑1𝑑02计算过程:RSA解密:SMSSSMSSMd=1001011.研究背景L1Inst32KBL1Data32KBL2256KBCore0L3Unified6MBL1Inst32KBL1Data32KBL2256KBCore1L1Inst32KBL1Data32KBL2256KBCore2L1Inst32KBL1Data32KBL2256KBCore3多核处理器OpenSSL当前Cache计时攻击的研究热点L1Inst32KBL1Data24KBL2512KBCore0单核处理器OpenSSL1.研究背景Y.Yarom.Flush+Reload:aHighResolution,LowNoise,L3CacheSide-ChannelAttack.(USENIXSecurity2013)Y.Yarom.RecoveringOpenSSLECDSANoncesUsingtheFLUSH+RELOADCacheSide-channelAttack.(ePrint2014)N.Benger.Asmallamountofsidechannelcangoalongway.(CHES2014)现有文献都采用FLUSH+RELOAD攻击方法1.研究背景FLUSH+RELOAD攻击基本原理密码进程间谍进程密码进程间谍进程访问指令冲刷cache重载指令等待密码进程执行了被监测指令密码进程未执行被监测指令1.研究背景阈值如何设?监测周期监测对象当前研究待解决的问题1.研究背景本研究的工作以二进制平方乘算法实现的RSA为攻击对象以FLUSH+RELOAD攻击为方法研究攻击中3种参数的最优值选取方法提高获取RSA解密指数的成功率汇报提纲一、研究背景二、研究内容三、总结展望2.1基于贝叶斯二元信号检测理论的最优阈值选取方法问题1:如何选取最优的阈值?0102030405060708090100050100150200250300350????监测轮数Cache重载时间2.1基于贝叶斯二元信号检测理论的最优阈值选取方法-5005010015020025030035040045000.511.522.533.544.55x104本质上是一个离散二元信号状态检测问题累计数量Cache重载时间2.1基于贝叶斯二元信号检测理论的最优阈值选取方法R0R1Op(x|Hj)p(x|H0)p(H0|H0)p(H0|H1)p(x|H1)p(H1|H1)p(H1|H0)阈值(判决门限)x二元信号状态的统计检测理论2.1基于贝叶斯二元信号检测理论的最优阈值选取方法C=P(H0)[c00P(H0|H0)+c10P(H1|H0)]+P(H1)[c11P(H1|H1)+c01P(H0|H1)]提出基于二元信号贝叶斯检测准则的阈值选取方法𝑃𝐻𝑖𝐻𝑗=𝑝(η|𝐻𝑗)dη𝑅𝑖𝑖,𝑗=0,1判决概率:判决平均代价:2.1基于贝叶斯二元信号检测理论的最优阈值选取方法050100150200250300350400-10-505阈值(CPU时钟周期)平均代价(取对数)平均代价随阈值变化图2.1基于贝叶斯二元信号检测理论的最优阈值选取方法80100120140160180200020406080100阈值(CPU时钟周期)百分比(%)运算推测错误率攻击成功率理论范围实验范围攻击成功率和运算推测错误率随阈值变化图2.2基于充分必要条件的被监测指令选取方法问题2:如何选取合适的被监测指令010203040506070809010050100150200250300350400450500监测轮数Cache重载时间命题p:addri被载入Cache。(能观测到的现象)命题q:运算i被执行。(i=s,m,r)(推测目标)充要关系提出基于充要条件推理的被监测指令选取规则2.2基于充分必要条件的被监测指令选取方法1、为满足充分性(q→p),addri应满足:规则1:运算i执行时必然访问addri:addrs∈S,addrm∈M,addrr∈R2.2基于充分必要条件的被监测指令选取方法2、为满足必要性(p→q),addri应满足:规则2:除i以外的其它运算执行时不会直接访问addri:addrs∉M∪R∪E,addrm∉S∪R∪E,addrr∉S∪M∪E.规则3:除i以外的其它运算执行时不会间接导致addri被载入Cache:[addrs-2b,addrs+2b]∉M∪R∪E,[addrm-2b,addrm+2b]∉S∪R∪E,[addrr-2b,addrr+2b]∉S∪M∪E.2.2基于充分必要条件的被监测指令选取方法3、为提高每次运算被监测到的机会和增加计时数据的抗噪能力,addri应满足:规则4:在满足上述规则的前提下被执行次数最多的指令:n𝑎𝑑𝑑𝑟𝑖=maxn𝑎𝑑𝑑𝑟,𝑎𝑑𝑑𝑟∈𝑥𝑥使得pq,(𝑖=s,m,r)2.2基于充分必要条件的被监测指令选取方法根据提出的规则选取的被监测指令地址bn_sub_words()bn_mul_recursive()BN_mul()BN_sqr()0x08049bac0x08049d480x0804c27a0x0804df6c0x0804f48d0x080517780x08051b65bn_sqr_comba8()0x0805105bbn_div_words()BN_div()0x0804e4a0R∩M∩SMSRMMSMRbn_mul_comba8()0x08049dc8bn_sqr_recursive()0x08051be51times13times9times1times1times4times9times32times2.2基于充分必要条件的被监测指令选取方法问题3:如何选取最优的监测周期?0102030405060708090100501001502002503003504004505002.3监测时序模型和监测周期选取方法监测轮数Cache重载时间2.3监测时序模型和监测周期选取方法twait+trdtscprobe(s)flush(s)probe(m)flush(m)probe(r)flush(r)probe(s)flush(s)等待间隔tprobetprobe间谍程序监测时序模型tmemory-tL3_Cachetwait+2*tprobe+trdtscΔTtarget提出基于监测时序模型的监测周期选取方法2.3监测时序模型和监测周期选取方法时间样本标准差随监测周期的变化050010001500200025003000350040004500510152025303540周期=200监测周期/CPU时钟周期样本标准差2.3监测时序模型和监测周期选取方法不同监测周期下Cache访问行为的“捕获率”050010001500200025003000350040002030405060708090100等待间隔twait(CPU时钟周期)捕获率(%)平方乘法求模twait(r)378.44twaitt(s)961.93twait(m)2272.732.4实验结果实验配置OperationsystemProcessorMemorySoftwareIDELinuxFedora18Inteli5-34704GBDDR3-1600OpenSSLv1.01eEclipse2.4实验结果对一次RSA解密过程的监测数据(部分)131713371357137713971417143714571477050100150200250300350400450500roundnumberreloadtime(cycles)multiplysquaremodulothreshold2.4实验结果阈值\监测周期20018016012020086%87%87%25089%88%87%30090%91%91%40087%89%89%60094%95%95%204864%平均成功率:89.67%最高:95%最低:86%不同阈值/监测周期下的攻击成功率汇报提纲一、研究背景二、研究内容三、总结展望3.总结展望对其他RSA算法的攻击对DSA、ECC的攻击对移动设备的攻击汇报完毕敬请各位批评指正!