旁路攻击裴士辉QQ:16281593052旁道攻击(sidechannelattacks)•针对加密电子设备在运行过程中泄露的物理信息(如时间消耗、功率消耗或电磁辐射之类的侧信道信息)而对加密设备进行攻击的方法。•这类新型攻击的有效性远高于密码分析的数学方法,因此给密码设备带来了严重的威胁。3旁道信息从密码设备输出的间接信息4功耗分析(PowerAnlysis)•功耗分析是旁路分析的一种,1996年,kocher等首先提出了旁路攻击的思想,此后出现多种旁路分析的方法,其中针对密码芯片的攻击以功耗攻击为主。•功耗分析主要通过分析密码设备运行时的功耗消耗,来推导出密码设备进行的操作和在操作中涉及的秘密参量。•功耗分析的分析对象主要是各种嵌入式密码芯片(如微控制器、智能卡、FPGA、ASIC).•功耗分析的种类:–简单功耗分析(SimplePowerAnalysis,SPA)–差分功耗分析(DifferentialPowerAnalysis,DPA)郭世泽等著,密码旁路分析原理与方法5功耗产生的机理VDDPMOSNMOSVoutVinIVDDIVDDCLGNDVDDPMOSNMOSVoutVinILCLGND(a)CMOS反相器输入为0、输出为1的反相过程(b)输入为1、输出为0的反相过程SylvainGuilley,etc.DIFFERENTIALPOWERANALYSISMODELANDSOMERESULTS.6功耗产生的机理CMOS反相器的电流,I(VDD)为流经PMOS的电流,I(VSS)为流经NMOS的电流。7静态CMOS反相器旁路信号与内部运算的相关性011P01PP10000GNDV'xxcircuitshortcircuitshortchrgDD无有有无电源电能消耗电流到输出逻辑状态变化在CMOS门电路一级,旁路泄露的大小取决于门电路的翻转行为。在寄存器一级,由于寄存器是由多个CMOS反相器组成的,所以寄存器一级的旁路泄露大小表现为反相器的翻转次数。对于密码芯片,关注的应是比寄存器更高一级,即操作数一级的旁路信号量值模型,它表现为操作数的汉明重量或汉明距离模型。WilliamHnath,etc.DifferentialPowerAnalysisSide-ChannelAttacksincryptography.8功耗与汉明重量或汉明距离的相关性AnexampleshowingtheHammingweightmodel.TheHammingweightofthevalueonthedatabusistakentobeproportionaltothepowerconsumptionofthebus.WilliamHnath,etc.DifferentialPowerAnalysisSide-ChannelAttacksincryptography.9功耗与汉明重量或汉明距离的相关性AnexampleshowingtheHammingDistancemodel.Astheregisterupdatesfromonestatetothenext,itconsumesacertainamountofpower.Inthisexample,theHammingdistanceshowsthatthepowerconsumedwhentheregisterupdatesisproportionalto6.维基百科10密码设备功耗采集平台原理图功耗采集平台需要在芯片供电回路中串联一个小电阻,并使用差分探头连接电阻两端,采集密码执行功耗信号,最后将信号通过USB数据线传送给PC机进行分析。郭世泽等著,密码旁路分析原理与方法11简单功耗分析(SPA)•运行一个加密或解密过程,监控和记录该过程中整个设备的功耗信息,表现为一组电压值或一组电流值。•根据整个设备的功耗信息,直接推测和计算加解密过程中所使用的秘密信息(如私钥或随机数)的部分或全部比特。12对RSA的SPADouglasR.Stinson,密码学原理与实践(第三版)13平方-乘算法平方-乘算法假定指数c用二进制表示,即102liiicc其中0ic或1,01il。计算modczxn的算法如下:算法Square-and-Multiply(,,)xcn21101fordowntomoddoifthen()mod()izilzznczzxnreturnz14举例RSA算法,假设11413,n公开的指数3533b。Alice利用平方-乘算法,通过计算3533972611413mod来加密明文9726,过程为。222222222222111197269726101972697262695902695563481563497269167719169972645986145989726778350778362984062984629314629972610185211018597261051010511025011102597265761iibz维基百科15对RSA的SPAAnattempttodecodeRSAkeybitsusingpoweranalysis.TheleftpeakrepresentstheCPUpowervariationsduringthestepofthealgorithmwithoutmultiplication,theright(broader)peak-stepwithmultiplication,allowingtoreadbits0,1.郭世泽等著,密码旁路分析原理与方法16对RSA的SPA实验•对AT89C52微控制器的RSA加密算法进行简单功耗攻击实验。•示波器的采样率设置为100M次/s,采样长度为1M个点,考虑微控制器的计算能力,p、q选择为16位以内的素数,分别为p=79,q=73。实验中预设的密钥值为d=1649,其二进制表示为(1100111000)2。郭世泽等著,密码旁路分析原理与方法17对RSA的SPA实验上图为“平方-乘法”模幂运算的功耗轨迹,其中S=squareM=Multipy.可以从功耗轨迹上直接读出密钥的二进制序列为(1100111000)2,该序列与真实值相符,攻击成功。18对DES的SPA19DES算法IPffffFP646416functionDESK(M)//|K|=56and|M|=64(K1,...,K16)← KeySchedule(K)M← IP(M)ParseMasL0‖R0//|L0|=|R0|=32forr=1to16doLr← Rr−1;Rr← f(Kr,Rr−1)⊕Lr−1C← IP−1(L16‖R16)returnCPaulKocher,JoshuaJae,andBenjaminJun.DifferentialPowerAnalysis20对DES的SPASPAtraceshowinganentireDESoperation.Atracereferstoasetofpowerconsumptionmeasurementstakenacrossacryptographicoperation.Forexample,a1millisecondoperationsampledat5MHzyieldsatracecontaining5000points.Figure1showsanSPAtracefromatypicalsmartcardasitperformsaDESoperation.Notethatthe16DESroundsareclearlyvisible.PaulKocher,JoshuaJae,andBenjaminJun.DifferentialPowerAnalysis21对DES的SPASPAtraceshowingDESrounds2and3.This2isamoredetailedviewofthesametraceshowingthesecondandthirdroundsofaDESencryptionoperation.ManydetailsoftheDESoperationarenowvisible.Forexample,the28-bitDESkeyregistersCandDarerotatedonceinround2(leftarrow)andtwiceinround3(rightarrows).InFigure2,smallvariationsbetweentheroundsjustcanbeperceived.22SPAtraceshowingindividualclockcycles.Thisshowsevenhigherresolutionviewsofthetraceshowingpowerconsumptionthroughtworegions,eachofsevenclockcyclesat3.5714MHz.Thevisiblevariationsbetweenclockcyclesresultprimarilyfromdifferencesinthepowerconsumptionofdifferentmicroprocessorinstructions.TheuppertraceshowstheexecutionpaththroughanSPAfeaturewhereajumpinstructionisperformed,andthelowertraceshowsacasewherethejumpisnottaken.Thepointofdivergenceisatclockcycle6andisclearlyvisible.jumpNojump23差分功耗分析(DPA)•使用统计分析和误差校正技术,提取和秘密密钥相关的信息.•比SPA更加强大,更难预防。24DPA的基本思想构造函数D(C,b,Ks),其中b为目标位,C为密文,Ks为猜测的密钥。收集m个功耗轨迹T1:m[1:k],其中每个轨迹的样本数相同,都为k,并且轨迹和密文C1:m相对应。根据函数的值的不同把数据分成两组s:D(C,b,Ks)=0D(C,b,Ks)=1如果猜测密钥Ks是正确的,D(C,b,Ks)=1的轨迹的平均值在对应的点会高一些,而D(C,b,Ks)=0的轨迹的平均值在对应的点会低一些。如果猜测密钥Ks是错误的,两者的轨迹的平均值几乎相同。25DPA的分析过程=1=08:00011110-猜测密钥正确的情况26DPA的分析过程猜测密钥错误的情况27对DES的DPA参考功率正确的Ks错误的Ks1000个采样点28计时分析(timingattack)•通过采集密码算法处理不同输入的执行时间差异,通过分析时间差异同密钥之间的相关性来实现密钥破解。•是由kocher在1996年提出,是最早被学术届研究者提出的密码旁路分析方法。•2003年,斯坦福大学的Brumley和Bonch首次在网络环境下,通过即时分析手段恢复出OpenSSL服务器的RSA密钥。29采集方法•CPU内部时间戳计数器在Pentium以上的CPU中,该部件已64位无符号整型数的格式记录了自CPU上电以来所经历的时钟周期数。由于CPU主频非常高,这个部件可以达到纳秒级的计时精度。•在Pentium以上的CPU中提供了读取时间戳的机械指令:RDTSC(readtimestampcounter)•RDTSC的调用方法:inlineunsigned__int64GetCycleCount(){__asm_emit0x0F;__asm_emit0x31;}30采集方法unsignedlongt1,t2;t1=(unsignedlong)GetCycleCount();runsomeencryptioncodet2=(unsignedlong)GetCycleCount();31对RSA-CRT算法的计时分析