CN108123790A - 一种侧信道攻击方法及装置 - Google Patents

一种侧信道攻击方法及装置 Download PDF

Info

Publication number
CN108123790A
CN108123790A CN201611092276.2A CN201611092276A CN108123790A CN 108123790 A CN108123790 A CN 108123790A CN 201611092276 A CN201611092276 A CN 201611092276A CN 108123790 A CN108123790 A CN 108123790A
Authority
CN
China
Prior art keywords
instruction
algorithm
attack
caching
mapped
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201611092276.2A
Other languages
English (en)
Other versions
CN108123790B (zh
Inventor
唐烨
李慧云
刘玢玢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Institute of Advanced Technology of CAS
Original Assignee
Shenzhen Institute of Advanced Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Institute of Advanced Technology of CAS filed Critical Shenzhen Institute of Advanced Technology of CAS
Priority to CN201611092276.2A priority Critical patent/CN108123790B/zh
Publication of CN108123790A publication Critical patent/CN108123790A/zh
Application granted granted Critical
Publication of CN108123790B publication Critical patent/CN108123790B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及信息安全技术领域,特别涉及一种侧信道攻击方法及装置。所述侧信道攻击方法包括:步骤a:确定待监测指令的内容和位置;步骤b:将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中;步骤c:在所述共享文件区的最后一级缓存上执行攻击,得到私钥dB的值。与现有的功耗攻击或注入攻击相比,本发明提出的缓存攻击过程简单,快速准确,且突破了目前的攻击技术无法作用于时间平衡算法的困境。

Description

一种侧信道攻击方法及装置
技术领域
本发明涉及信息安全技术领域,特别涉及一种侧信道攻击方法及装置。
背景技术
SM2算法是由国家密码管理局于2012年12月17日发布的椭圆曲线公钥密码算法,它被设计用来代替RSA算法。SM2算法相比RSA算法具有如下优势:签名速度和密钥对生成速度都远快于RSA;ECC算法(椭圆加密算法)的单位安全强度高于RSA算法,也就是说,要达到同样的安全强度,ECC算法所需的密钥长度远比RSA算法低;数据表明,ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA-2048的还高,但运算速度要比RSA-2048快的多。
国家密码局颁布的《SM2椭圆曲线公钥密码算法》[1]共分为四个部分:总则、数字签名算法、密钥交换协议和公钥加密算法,后面三个部分可为安全产品生产商提供产品和技术的标准定位以及标准化的参考,提高安全产品的可信性与互操作性。一般意义上的SM2算法指的是公钥加密算法,它适用于商用密码应用中的消息加解密,消息发送者可以利用接收者的公钥对消息进行加密,接收者用对应的私钥进行解密。
因为SM2算法是基于椭圆曲线加密(ECC)算法的非对称算法,因此,SM2算法的困难性可以规约到椭圆曲线离散对数问题上,即:
椭圆曲线离散对数问题:已知椭圆曲线E(Fq),阶为n的点P∈E(Fq)及Q∈<P>,确定整数k∈[0,n-1],使得Q=[k]P成立,其中Fq表示一个包含q个元素的素域,E(Fq)表示Fq上椭圆曲线E的所有有理点(包括无穷远点)组成的集合。Q=[k]P也被称为点P的k倍点运算,其过程为
对于一般曲线的离散对数问题,目前的求解方法都为指数级计算复杂度,未发现有效的亚指数级计算复杂度的一般攻击方法;而对于某些特殊曲线的离散对数问题,存在多项式级计算复杂度或者指数级计算复杂度算法。SM2算法中使用的椭圆曲线,在密码学意义上其计算复杂度也是指数级的。SM2算法中的多倍点操作虽然在密码学上是安全的,但是在算法的具体实践过程中,会出现侧信道信息的泄露,因为多倍点操作的运算时间和资源消耗在整个算法中占很大的比例。因此,现今对SM2算法的相关攻击研究,大多数都是基于侧信道的。椭圆曲线离散对数问题中待求解的参数k,即就是SM2算法中的私钥dB。如果可以通过侧信道的手段破解椭圆曲线离散对数问题,那么这个密码方案就是不安全的,更直观的表现就是公钥-私钥对中的私钥被泄露了。
在目前的研究中,对SM2加密算法展开的侧信道攻击主要是功耗攻击,它是一种利用加密/解密计算过程中设备的功耗泄露来得到密钥的攻击方式,具有较高的分析效率。功耗攻击主要包括简单功耗分析(SPA)和查分功耗分析(DPA),前者通过观察加密过程中的功耗曲线,推断出不同时间的对应操作,从而提取部分或者全部密钥。DPA利用功耗和中间变量之间的关系分析密钥。事实上,SM2算法的某些实现在处理多倍点操作时,会根据私钥dB的比特位是0或是1,执行不同的操作,攻击者通过分析这些操作与功耗产生之间的关系,可以得到敏感信息。针对SM2算法的功耗攻击均是建立在ECC功耗分析的基础上的,因此对抗ECC功耗分析的措施,也可以挫败SM2算法功耗攻击。
现有的一些针对ECC的抗功耗分析方法可以使得应用于SM2算法上的功耗攻击方法失效。如不论私钥dB的每一位是0还是1,总是执行消耗资源相同的操作,就可以有效挫败SPA。同时,针对DPA这种攻击手段,滑动窗口法(NAF)、二进制随机初始化点(BRIP)、蒙哥马利阶梯法(The Montgomery Ladder)等相继被提出,都可以有效地防御功耗分析。
发明内容
本发明提供了一种侧信道攻击方法及装置,旨在至少在一定程度上解决现有技术中的上述技术问题之一。
为了解决上述问题,本发明提供了如下技术方案:
一种侧信道攻击方法,包括:
步骤a:确定待监测指令的内容和位置;
步骤b:将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中;
步骤c:在所述共享文件区的最后一级缓存上执行攻击,得到私钥dB的值。
本发明实施例采取的技术方案还包括:在所述步骤a中,所述确定待监测指令的内容即建立指令ins和私钥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的“驱逐-等待-再读取”的攻击过程,直到解密结束。
本发明实施例采取的另一技术方案为:一种侧信道攻击装置,包括指令计算模块、文件映射模块和缓存攻击模块;所述指令计算模块用于确定待监测指令的内容和位置;所述文件映射模块用于将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中;所述缓存攻击模块用于在所述共享文件区的最后一级缓存上执行攻击,得到私钥dB的值。
本发明实施例采取的技术方案还包括:所述指令计算模块包括指令内容计算单元,所述指令内容计算单元用于确定待监测指令的内容即建立指令ins和私钥dB比特位之间的联系,计算方式包括二进制展开算法、加减法算法及滑动窗口算法的椭圆曲线多倍点计算实现算法,以及蒙哥马利阶梯算法。
本发明实施例采取的技术方案还包括:所述指令计算模块还包括指令位置计算单元,所述指令位置计算单元用于确定待监测指令的位置,计算方式包括:通过逆向工程技术对待监测指令进行定位,或利用Linux自带的反汇编工具对待监测指令进行定位。
本发明实施例采取的技术方案还包括:所述文件映射模块将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中具体包括:所述公钥密码算法为SM2算法,令攻击者所在的进程为进程A,SM2算法解密时所在的进程为进程S,映射工作由攻击者使用相关映射指令或函数完成;映射完成后,如果进程S和进程A同时工作,进程S的ELF文件将会被映射到两个进程的虚拟空间,但被映射到最后一级缓存中的位置是唯一的,对所述最后一级缓存中S-ELF的操作会同时影响进程A和进程S的工作。
本发明实施例采取的技术方案还包括:所述缓存攻击模块在所述共享文件区的最后一级缓存上执行攻击的攻击方式包括:通知执行进程A和进程S;进程A“驱逐”指令ins;进程A“等待”一段时间,此时进程S执行一轮多倍点操作;进程A“再读取”指令ins,收集读取指令的时间;重复执行“驱逐-等待-再读取”的攻击过程,直到解密结束。
相对于现有技术,本发明实施例产生的有益效果在于:本发明实施例的侧信道攻击方法及装置在公钥密码算法解密过程中,通过运行一个间谍进程监测公钥密码算法中相关指令在缓存中的变化情况,推测公钥密码算法的执行流,最终得到公钥密码算法中私钥的部分或者全部的内容。与现有的功耗攻击或注入攻击相比,本发明提出的缓存攻击过程简单,快速准确,且突破了目前的攻击技术无法作用于时间平衡算法的困境。
附图说明
图1是本发明实施例的侧信道攻击方法的流程图;
图2是本发明实施例的进程A和进程S的空间映射分布图;
图3是本发明实施例的侧信道攻击装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例的侧信道攻击方法在公钥密码算法解密过程中,通过运行一个间谍进程监测公钥密码算法中相关指令在缓存中的变化情况,推测公钥密码算法的执行流,最终得到公钥密码算法中私钥的部分或者全部的内容。在以下实施例中,本发明仅以SM2算法为例进行具体说明,在本发明其他实施例中,还可以采用其他公钥密码算法,例如AES、SM4算法等。
具体地,请参阅图1,是本发明实施例的侧信道攻击方法的流程图。本发明实施例的侧信道攻击方法包括以下步骤:
步骤100:确定待监测指令的内容和位置;
在步骤100中,首先需要确定待监测指令的内容,即建立指令ins和私钥dB比特位之间的联系。本发明实施例以《SM2椭圆曲线公钥密码算法》中给出的二进制展开算法、加减法算法及滑动窗口算法等椭圆曲线多倍点计算实现算法为例进行说明,这三种算法描述了Q=[k]P的计算过程。多倍点计算中可以判断私钥dB比特位的值是0还是1的指令,可以是单条指令,也可以是多条指令。
在多倍点计算的二进制展开算法中,算法从私钥的高位到低位依次判断每一比特位的值,当密钥位为1(kj=1)时,执行Q=Q+P。因此,可以通过监测Q=Q+P该操作中的指令ins,来判断密钥的每一比特位的值,即若指令ins被执行,则此时私钥dB中该比特位的值为1,反之若指令ins未被执行,则私钥dB中该比特位的值为0。二进制展开算法如下表1所示:
表1多倍点计算:二进制展开
在多倍点计算的加减法算法中,算法从第4步开始循环r次,其中在每一轮循环中,当私钥dB比特位的值为1时,执行Q=Q+P操作;当私钥dB比特位的值为0时,执行Q=Q-P操作。因此,可以同时监测Q=Q+P和Q=Q-P中的指令,得到私钥dB中某些比特位的值,最终可以获取到部分私钥。加减法算法具体如下表2所示:
表2多倍点计算:加减法
在多倍点计算的滑动窗口算法中,情况比较复杂。由于存在滑动窗口,算法并不对私钥中每一比特位的值进行判断,对指令执行情况的判读结果很难与私钥的每一位一一对应。但是在算法的4.a)中,私钥的比特位被用来进行了一次判断,故监测指令可以选择此处。通过监测处的指令,攻击者可以得到私钥dB高位的比特值,最终能得到比特位的数量,取决于私钥dB的具体构成。滑动窗口算法具体如下表3所示:
表3多倍点计算:滑动窗口法
除了《SM2椭圆曲线公钥密码算法》中给出的三种椭圆曲线多倍点计算实现算法外,多倍点计算实现算法还较多使用了蒙哥马利阶梯算法,在该算法中,同样可以通过监测特定指令来获得敏感信息。具体如下表4所示:
表4多倍点计算:蒙哥马利阶梯法
从表4所示的多倍点计算的蒙哥马利阶梯算法中可以得知,算法也使用了私钥dB的比特位来进行条件的判断,从而执行不同的操作。可以同时检测T=T+Q,Q=[2]Q,Q=T+Q,T=[2]T这四处指令所在的Cacheline(缓存行),从而推断出私钥dB相应比特位的值。相对于现有技术,本发明突破了目前的攻击技术无法作用于时间平衡算法(如蒙哥马利阶梯算法)的困境。
确定好待监测指令的内容后,需要确定待监测指令的位置,即找到待监测指令在虚拟进程空间中的地址。由于加解密程序在运行前已经被编译过了,因此不能直接得到代码或数据的空间分布情况。本发明实施例通过使用专业的反汇编器等逆向工程技术达到定位待监测指令的目的,在本发明其他实施例中,还可以利用Linux自带的反汇编工具(如objdump指令)等对待监测指令进行定位。
步骤200:将SM2算法所在的进程映射到攻击者所在进程的共享文件区中;
在步骤200中,如果令攻击者所在的进程为进程A,SM2算法解密时所在的进程为进程S,在展开攻击前,需要将进程S的可执行文件(Linux下为ELF,Executable and LinkableFormat)映射到进程A虚拟地址空间的的共享文件区中,二者的进程映射关系如附图2所示,是本发明实施例的进程A和进程S的空间映射分布图。进程S的可执行文件占据了进程A虚拟地址空间中共享文件区的一部分内容。映射工作由攻击者完成,可以使用相关映射指令或函数完成,如Linux下可以使用mmap函数。映射完成后,如果进程S和进程A同时工作,进程S的ELF文件(S-ELF)将会被映射到两个进程的虚拟空间,但被映射到最后一级缓存中的位置是唯一的。因此对最后一级缓存中S-ELF的操作(如驱逐指令),将会同时影响进程A和进程S的工作。
步骤300:在共享文件区的最后一级缓存上执行攻击,得到私钥dB部分或者全部的值。
在步骤300中,计算机最后一级缓存是被所有进程所共享的,这为进程A(及攻击者)操作共享文件区中的S-ELF文件提供了可能。本发明使用“驱逐-等待-再读取”的攻击方式来监测进程S的执行过程。具体攻击过程如下:
步骤301:通知执行进程A和进程S;
步骤302:进程A“驱逐”指令ins;进程A通过clflush指令驱逐待监测指令所在的Cacheline,这种驱逐将会导致Cacheline中的指令在所有层级的Cache(缓存)中失效。clflush指令位于x86指令集中。
步骤303:进程A“等待”一段时间,此时进程S执行一轮多倍点操作;
步骤304:进程A“再读取”指令ins,收集读取指令的时间;
在步骤304中,由于之前建立的映射关系,进程A对待监测指令(同时存在于两个进程空间)的驱逐,将会影响进程S对待监测指令的存取情况。因此,在上述“驱逐-等待-再读取”过程后,进程A读取指令ins的时间将会出现两种情况,第一种:读取时间较长,即出现“缓存失效”,这种情况说明进程A“等待”的时间里,进程S未使用待监测指令;第二种情况是读取时间较短,即出现“缓存命中”,说明在进程A“等待”的时间里,进程S使用过待监测指令。
步骤305:重复执行步骤302至步骤304的“驱逐-等待-再读取”的攻击过程,直到解密结束。
在步骤305中,进程A在固定的一段时间(slot)内重复执行“驱逐-等待-再读取”的攻击过程,根据收集到的读取指令的时间,就可以得到SM2算法的执行流,并结合步骤100中得到的待监测指令和私钥dB比特位的关系,就可以得到部分或者全部的私钥信息。与现有的功耗攻击或注入攻击相比,本发明提出的缓存攻击过程简单,快速准确。可以理解,本发明不仅适用于监测SM2算法的多倍点操作,还可以通过分析指令与敏感信息之间的关系,将攻击方法迁移至AES、SM4等其他算法中。
本发明实施例中的“驱逐-等待-再读取”的攻击过程也可以使用下表5中的指令监测算法来描述:
表5指令监测算法
表5中,addr是待监测指令的虚拟地址。出于测量精度的考虑,监测过程需要使用汇编来完成,使用rdtsc获取时间戳,mfence和lfence两条语句保证后此嵌入式汇编中的语句得以串行化执行。
请参阅图3,是本发明实施例的侧信道攻击装置的结构示意图。本发明实施例的侧信道攻击装置包括指令计算模块、文件映射模块和缓存攻击模块。
指令计算模块用于确定待监测指令的内容和位置;具体地,指令计算模块包括指令内容计算单元和指令位置计算单元;
指令内容计算单元用于确定待监测指令的内容;计算方法包括多倍点计算的二进制展开算法、加减法算法、滑动窗口算法及蒙哥马利阶梯算法等;其中,
在多倍点计算的二进制展开算法中,算法从私钥的高位到低位依次判断每一比特位的值,当密钥位为1(kj=1)时,执行Q=Q+P。因此,可以通过监测Q=Q+P该操作中的指令ins,来判断密钥的每一比特位的值,即若指令ins被执行,则此时私钥dB中该比特位的值为1,反之若指令ins未被执行,则私钥dB中该比特位的值为0。二进制展开算法如下表1所示:
表1多倍点计算:二进制展开
在多倍点计算的加减法算法中,算法从第4步开始循环r次,其中在每一轮循环中,当私钥dB比特位的值为1时,执行Q=Q+P操作;当私钥dB比特位的值为0时,执行Q=Q-P操作。因此,可以同时监测Q=Q+P和Q=Q-P中的指令,得到私钥dB中某些比特位的值,最终可以获取到部分私钥。加减法算法具体如下表2所示:
表2多倍点计算:加减法
在多倍点计算的滑动窗口算法中,情况比较复杂。由于存在滑动窗口,算法并不对私钥中每一比特位的值进行判断,对指令执行情况的判读结果很难与私钥的每一位一一对应。但是在算法的4.a)中,私钥的比特位被用来进行了一次判断,故监测指令可以选择此处。通过监测处的指令,攻击者可以得到私钥dB高位的比特值,最终能得到比特位的数量,取决于私钥dB的具体构成。滑动窗口算法具体如下表3所示:
表3多倍点计算:滑动窗口法
除了《SM2椭圆曲线公钥密码算法》中给出的三种椭圆曲线多倍点计算实现算法外,多倍点计算实现算法还较多使用了蒙哥马利阶梯算法,在该算法中,同样可以通过监测特定指令来获得敏感信息。具体如下表4所示:
表4多倍点计算:蒙哥马利阶梯法
从表4所示的多倍点计算的蒙哥马利阶梯算法中可以得知,算法也使用了私钥dB的比特位来进行条件的判断,从而执行不同的操作。可以同时检测T=T+Q,Q=[2]Q,Q=T+Q,T=[2]T这四处指令所在的Cacheline(缓存行),从而推断出私钥dB相应比特位的值。相对于现有技术,本发明突破了目前的攻击技术无法作用于时间平衡算法的困境。
指令位置计算单元用于确定待监测指令的位置,即找到待监测指令在虚拟进程空间中的地址。由于加解密程序在运行前已经被编译过了,因此不能直接得到代码或数据的空间分布情况。本发明实施例通过使用专业的反汇编器等逆向工程技术达到定位待监测指令的目的,在本发明其他实施例中,还可以利用Linux自带的反汇编工具(如objdump指令)等对待监测指令进行定位。
文件映射模块用于将SM2算法所在的进程映射到攻击者所在进程的共享文件区中;其中,如果令攻击者所在的进程为进程A,SM2算法解密时所在的进程为进程S,在展开攻击前,需要将进程S的可执行文件映射到进程A虚拟地址空间的的共享文件区中,进程S的可执行文件占据了进程A虚拟地址空间中共享文件区的一部分内容。映射工作由攻击者完成,可以使用相关映射指令或函数完成,如Linux下可以使用mmap函数。映射完成后,如果进程S和进程A同时工作,进程S的ELF文件(S-ELF)将会被映射到两个进程的虚拟空间,但被映射到最后一级缓存中的位置是唯一的。因此对最后一级缓存中S-ELF的操作(如驱逐指令),将会同时影响进程A和进程S的工作。
缓存攻击模块用于在共享文件区的最后一级缓存上执行攻击,得到私钥dB部分或者全部的值。其中,计算机最后一级缓存是被所有进程所共享的,这为进程A操作共享文件区中的S-ELF文件提供了可能。本发明使用“驱逐-等待-再读取”的攻击过程来监测进程S的执行过程。
缓存攻击模块的具体攻击过程如下:通知执行进程A和进程S;进程A“驱逐”指令ins;进程A通过clflush指令驱逐待监测指令所在的Cacheline,这种驱逐将会导致Cacheline中的指令在所有层级的Cache中失效。clflush指令位于x86指令集中。进程A“等待”一段时间,此时进程S执行一轮多倍点操作;进程A“再读取”指令ins,收集读取指令的时间;重复执行“驱逐-等待-再读取”的攻击过程,直到解密结束。
其中,由于文件映射模块建立的映射关系,进程A对待监测指令的驱逐,将会影响进程S对待监测指令的存取情况。因此,在上述“驱逐-等待-再读取”过程后,进程A读取指令ins的时间将会出现两种情况,第一种:读取时间较长,即出现“缓存失效”,这种情况说明进程A“等待”的时间里,进程S未使用待监测指令;第二种情况是读取时间较短,即出现“缓存命中”,说明在进程A“等待”的时间里,进程S使用过待监测指令。进程A在固定的一段时间(slot)内重复执行“驱逐-等待-再读取”的攻击过程,根据收集到的读取指令的时间,就可以得到SM2算法的执行流,并结合待监测指令和私钥dB比特位的关系,就可以得到部分或者全部的私钥信息。
缓存攻击模块的“驱逐-等待-再读取”的攻击过程也可以使用下表5中的指令监测算法来描述:
表5指令监测算法
表5中,addr是待监测指令的虚拟地址。出于测量精度的考虑,监测过程需要使用汇编来完成,使用rdtsc获取时间戳,mfence和lfence两条语句保证后此嵌入式汇编中的语句得以串行化执行。
为了证明本发明实施例的可行性和正确性,以下实施例通过展开若干仿真实验来模拟整个攻击过程。具体如下:
1、令一个整数k表示私钥,其长度为32位;
2、从k的最高位依次下降到0执行:
A:若kj=1,则执行耗时操作1;
B:若kj=0,则执行耗时操作2;
3、监测耗时操作1中的相关指令。
上述实验场景模拟了多倍点操作的二进制展开算法,实验结果表明,完整获取到私钥k的概率为98.2%。因此,本发明提出的侧信道攻击方法及装置可以通过监测特定指令的执行获取算法的执行流,同时通过分析算法的工作原理,可以得到私钥的部分或者全部信息。
本发明实施例的侧信道攻击方法及装置在SM2算法解密过程中,通过运行一个间谍进程监测SM2算法中相关指令在缓存中的变化情况,推测SM2算法的执行流,最终得到SM2算法中私钥的部分或者全部的内容。与现有的功耗攻击或注入攻击相比,本发明提出的缓存攻击过程简单,快速准确,且突破了目前的攻击技术无法作用于时间平衡算法的困境。本发明不仅适用于监测SM2算法的多倍点操作,还可以通过分析指令与敏感信息之间的关系,将攻击方法迁移至AES、SM4等其他算法中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种侧信道攻击方法,其特征在于,包括:
步骤a:确定待监测指令的内容和位置;
步骤b:将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中;
步骤c:在所述共享文件区的最后一级缓存上执行攻击,得到私钥dB的值。
2.根据权利要求1所述的侧信道攻击方法,其特征在于,在所述步骤a中,所述确定待监测指令的内容即建立指令ins和私钥dB比特位之间的联系,计算方式包括二进制展开算法、加减法算法及滑动窗口算法的椭圆曲线多倍点计算实现算法,以及蒙哥马利阶梯算法。
3.根据权利要求1或2所述的侧信道攻击方法,其特征在于,在所述步骤a中,所述确定待监测指令的位置的计算方式包括:通过逆向工程技术对待监测指令进行定位,或利用Linux自带的反汇编工具对待监测指令进行定位。
4.根据权利要求1所述的侧信道攻击方法,其特征在于,在所述步骤b中,所述公钥密码算法为SM2算法,所述将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中具体包括:令攻击者所在的进程为进程A,SM2算法解密时所在的进程为进程S,映射工作由攻击者使用相关映射指令或函数完成;映射完成后,如果进程S和进程A同时工作,进程S的ELF文件将会被映射到两个进程的虚拟空间,但被映射到最后一级缓存中的位置是唯一的,对所述最后一级缓存中S-ELF的操作会同时影响进程A和进程S的工作。
5.根据权利要求4所述的侧信道攻击方法,其特征在于,在所述步骤c中,所述在所述共享文件区的最后一级缓存上执行攻击的攻击方式包括:
步骤c1:通知执行进程A和进程S;
步骤c2:进程A“驱逐”指令ins;
步骤c3:进程A“等待”一段时间,此时进程S执行一轮多倍点操作;
步骤c4:进程A“再读取”指令ins,收集读取指令的时间;
步骤c5:重复执行步骤c2至步骤c4的“驱逐-等待-再读取”的攻击过程,直到解密结束。
6.一种侧信道攻击装置,其特征在于,包括指令计算模块、文件映射模块和缓存攻击模块;所述指令计算模块用于确定待监测指令的内容和位置;所述文件映射模块用于将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中;所述缓存攻击模块用于在所述共享文件区的最后一级缓存上执行攻击,得到私钥dB的值。
7.根据权利要求6所述的侧信道攻击装置,其特征在于,所述指令计算模块包括指令内容计算单元,所述指令内容计算单元用于确定待监测指令的内容即建立指令ins和私钥dB比特位之间的联系,计算方式包括二进制展开算法、加减法算法及滑动窗口算法的椭圆曲线多倍点计算实现算法,以及蒙哥马利阶梯算法。
8.根据权利要求6或7所述的侧信道攻击装置,其特征在于,所述指令计算模块还包括指令位置计算单元,所述指令位置计算单元用于确定待监测指令的位置,计算方式包括:通过逆向工程技术对待监测指令进行定位,或利用Linux自带的反汇编工具对待监测指令进行定位。
9.根据权利要求6所述的侧信道攻击装置,其特征在于,所述文件映射模块将公钥密码算法所在的进程映射到攻击者所在进程的共享文件区中具体包括:所述公钥密码算法为SM2算法,令攻击者所在的进程为进程A,SM2算法解密时所在的进程为进程S,映射工作由攻击者使用相关映射指令或函数完成;映射完成后,如果进程S和进程A同时工作,进程S的ELF文件将会被映射到两个进程的虚拟空间,但被映射到最后一级缓存中的位置是唯一的,对所述最后一级缓存中S-ELF的操作会同时影响进程A和进程S的工作。
10.根据权利要求9所述的侧信道攻击装置,其特征在于,所述缓存攻击模块在所述共享文件区的最后一级缓存上执行攻击的攻击方式包括:通知执行进程A和进程S;进程A“驱逐”指令ins;进程A“等待”一段时间,此时进程S执行一轮多倍点操作;进程A“再读取”指令ins,收集读取指令的时间;重复执行“驱逐-等待-再读取”的攻击过程,直到解密结束。
CN201611092276.2A 2016-11-30 2016-11-30 一种侧信道攻击方法及装置 Active CN108123790B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611092276.2A CN108123790B (zh) 2016-11-30 2016-11-30 一种侧信道攻击方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611092276.2A CN108123790B (zh) 2016-11-30 2016-11-30 一种侧信道攻击方法及装置

Publications (2)

Publication Number Publication Date
CN108123790A true CN108123790A (zh) 2018-06-05
CN108123790B CN108123790B (zh) 2021-01-19

Family

ID=62227231

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611092276.2A Active CN108123790B (zh) 2016-11-30 2016-11-30 一种侧信道攻击方法及装置

Country Status (1)

Country Link
CN (1) CN108123790B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110247929A (zh) * 2019-06-28 2019-09-17 兆讯恒达微电子技术(北京)有限公司 一种椭圆加密算法协处理器防注入式攻击的方法
CN110750301A (zh) * 2018-08-29 2020-02-04 清华大学无锡应用技术研究院 检测处理器安全性的方法、装置、系统及存储介质
CN112968761A (zh) * 2021-03-15 2021-06-15 北京理工大学 一种针对密码算法的人工智能侧信道分析方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101562522A (zh) * 2009-05-06 2009-10-21 深圳先进技术研究院 抗侧信道攻击的椭圆曲线密码系统实现方法
CN104639313A (zh) * 2014-12-08 2015-05-20 中国科学院数据与通信保护研究教育中心 一种密码算法的检测方法
CN104780051A (zh) * 2015-04-24 2015-07-15 成都信息工程学院 针对sm2公钥密码加密算法的侧信道攻击的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101562522A (zh) * 2009-05-06 2009-10-21 深圳先进技术研究院 抗侧信道攻击的椭圆曲线密码系统实现方法
CN104639313A (zh) * 2014-12-08 2015-05-20 中国科学院数据与通信保护研究教育中心 一种密码算法的检测方法
CN104780051A (zh) * 2015-04-24 2015-07-15 成都信息工程学院 针对sm2公钥密码加密算法的侧信道攻击的方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
FANGFEI LIU,ECT.: ""Last-Level Cache Side-Channel Attacks are Practical"", 《IEEE》 *
YUVAL YAROM,KATRINA FALKNER: ""FLUSH+RELOAD: a High Resolution, Low Noise,L3 Cache Side-Channel Attack"", 《USENIX ASSOCIATION》 *
王丽娜等: ""云环境下基于内存总线的侧信道攻击检测方法"", 《武汉大学学报(理学版)》 *
赵跃华等: ""一种针对RSA抗侧信道攻击的改进窗口算法"", 《计算机工程》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750301A (zh) * 2018-08-29 2020-02-04 清华大学无锡应用技术研究院 检测处理器安全性的方法、装置、系统及存储介质
CN110247929A (zh) * 2019-06-28 2019-09-17 兆讯恒达微电子技术(北京)有限公司 一种椭圆加密算法协处理器防注入式攻击的方法
CN112968761A (zh) * 2021-03-15 2021-06-15 北京理工大学 一种针对密码算法的人工智能侧信道分析方法
CN112968761B (zh) * 2021-03-15 2022-04-19 北京理工大学 一种针对密码算法的人工智能侧信道分析方法

Also Published As

Publication number Publication date
CN108123790B (zh) 2021-01-19

Similar Documents

Publication Publication Date Title
Yarom et al. CacheBleed: a timing attack on OpenSSL constant-time RSA
Chiappetta et al. Real time detection of cache-based side-channel attacks using hardware performance counters
Shin et al. Unveiling hardware-based data prefetcher, a hidden source of information leakage
Liu et al. Last-level cache side-channel attacks are practical
Pereida García et al. Make sure DSA signing exponentiations really are constant-time
Inci et al. Seriously, get off my cloud! Cross-VM RSA Key Recovery in a Public Cloud
Demme et al. Side-channel vulnerability factor: A metric for measuring information leakage
Li et al. K-Hunt: Pinpointing insecure cryptographic keys from execution traces
Gulmezoglu et al. Cache-based application detection in the cloud using machine learning
Gulmezoglu et al. Cross-VM cache attacks on AES
John et al. Connecting the dots: Privacy leakage via write-access patterns to the main memory
Schwarz et al. Malware Guard Extension: abusing Intel SGX to conceal cache attacks
Jiang et al. A novel cache bank timing attack
CN108123790A (zh) 一种侧信道攻击方法及装置
CN109144894A (zh) 基于数据冗余的内存访问模式保护方法
Yu et al. Detecting vms co-residency in cloud: Using cache-based side channel attacks
Visconti et al. Examining PBKDF2 security margin—Case study of LUKS
Irazoqui et al. Did we learn from LLC side channel attacks? A cache leakage detection tool for crypto libraries
Sepulveda et al. Exploiting bus communication to improve cache attacks on systems-on-chips
Haas et al. itimed: Cache attacks on the apple a10 fusion soc
Zhang et al. Secure cache modeling for measuring side-channel leakage
Conti et al. Side-channel attacks on mobile and IoT devices for Cyber–Physical systems
Sangeetha et al. An optimistic technique to detect Cache based Side Channel attacks in Cloud
CN104639313B (zh) 一种密码算法的检测方法
Saxena et al. Preventing from cross-VM side-channel attack using new replacement method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant