CN103597490A - 保护小应用程序免受隐藏信道分析 - Google Patents

保护小应用程序免受隐藏信道分析 Download PDF

Info

Publication number
CN103597490A
CN103597490A CN201180066192.0A CN201180066192A CN103597490A CN 103597490 A CN103597490 A CN 103597490A CN 201180066192 A CN201180066192 A CN 201180066192A CN 103597490 A CN103597490 A CN 103597490A
Authority
CN
China
Prior art keywords
instruction
equipment
code
virtual machine
applet
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.)
Pending
Application number
CN201180066192.0A
Other languages
English (en)
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.)
Idemia Identity and Security France SAS
Original Assignee
Morpho SA
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 Morpho SA filed Critical Morpho SA
Priority to CN201810136156.0A priority Critical patent/CN108171021A/zh
Publication of CN103597490A publication Critical patent/CN103597490A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Power Sources (AREA)

Abstract

本发明具体涉及装备用于执行小应用程序的虚拟机的电子设备。虚拟机设置成识别小应用程序的指令以及执行对应于各条指令的代码。该虚拟机包括:关联模块,设置成将多个不同但操作上相同的代码与同一指令相关联,以及选择模块,设置成以随机的方式来选择所述指令要执行的代码。本发明还涉及保护计数器电子设备免受隐藏信道攻击的方法。

Description

保护小应用程序免受隐藏信道分析
技术领域
本发明涉及保护小应用程序免受隐藏信道分析的方法以及实施这种保护的设备。
背景技术
小应用程序(applet)是指由虚拟机所执行的任何程序。例如,使用Java Card语言编写并将由芯片卡的JVM执行的程序称之为小应用程序。以此类推,.NET小应用程序或Multos小应用程序指定用于芯片卡的以.NET环境(或Multos环境)开发的程序。在Java Card内容中,小应用程序所包含的指令通常称之为op-codes,表示“操作码(operation codes)”。
虚拟机是一个实体,它能够执行以一系列指令形式记录的小应用程序,当执行该小应用程序时,它将各条指令翻译成一个基本运算或一系列基本运算,并执行这个或这些基本运算。虚拟机有可能将记录或传输程序的界面与执行基本运算的平台相分离。虚拟机的例子具体包括JVM(Java Virtual Machines=Java虚拟机),或者CLI(CommonLanguage Infrastructure=通用语言架构)的多种实现,例如,适用于C#语言(.NET环境)的CLR(通用语言运行时)。虚拟机常常只是纯软件。因此,有可能在彼此完全不同的各类平台上执行相同的小应用程序,但会受制于现有适用于这些平台中的各个不同平台的虚拟机。然而,也有可能使用硬件虚拟机(例如专用电子电路)或结合软件部分和硬件部分的虚拟机。
小应用程序的逆向工程是指目的为理解小应用程序设计方式以便复制、修改或移植该小应用程序且通常没有获得其作者和/或持有者同意的行为。
隐藏信道分析是基于根据电子设备的物理实现所获得的信息的分析。此信息常常是电子设备执行程序所导致的某些物理量的变化。这些物理量(称之为“隐藏信道”)可具体为设备的耗电量或者设备所产生的电磁场,并还有可能根据它们所需要的耗电量或它们所产生的电磁辐射来区分所执行的任务。也有可能测量发出的振动(某些组件易于振动,并且振动方式取决于它们正在执行的工作内容而不同),或者温度的变化,或者执行特定任务所占用的时间(“时间攻击”)等。
基本分析可简单包括根据指定测量来识别目标电子设备的指定特征。这种情况例如所谓SPA(简单功率分析)的攻击。更复杂的分析可依据基于大量测量的统计研究(这种情况例如DPA攻击,表示为差分功率分析,以及更具体的是HODPA攻击,表示为高阶DPA)。
在Java Card的讨论内容中,常常追求保持小应用程序所包括的一系列指令的机密性,以便避免为移植小应用程序或者改变小应用程序执行过程所产生的结果而修改这些指令中的部分指令。
然而,有时有可能可以通过分析隐藏信道来找到这一系列指令并构建程序,具体正如Dennis Vermoen的解释,详见Dennis Vermoen,“Reverse engineering of Java Card applets using power analysis”,MScThesis,Delft Technology University(performed in Riscure),2006。这暗示着Java Card小应用程序存在着潜在的重大安全隐患。隐藏信道分析也已经由被授权的组织(例如信息技术评价机构-ITSEF)用于评估Java Card的安全性,正如Serge Chaumette等人的解释:详见SergeChaumette and Damien Sauveron“An efficient and simple way to test thesecurity of Java Cards”,in Proceedings of 3rd International Workshop onSecurity in Information Systems(WOSIS 2005)。Sagem Sécurité还拥有一项专利,详见″Protection of a program interpreted by a virtualmachine",number FR 2903508B1(″由虚拟机解释的程序的保护(Protection of a program interpreted by a virtual machine)″,专利号为FR 2903508 B1),提出了遮蔽指令来防止此类分析。
为了试图发现小应用程序的指令,攻击者可例如进行两个步骤。
在特征化步骤中,攻击者将学习型小应用程序下载到卡片中(对于一部分Java Card来说,这种操作实际上是以授权的方式来执行的,而对于另一部分,则必须进行第一次攻击以便下载学习型小应用程序)。学习型小应用程序是由攻击者采用能够通过相应模型来特征化指令的方式进行编码的。该模型对应于联系指令隐藏信道的信号。因此,所有模型构成已经特征化的指令的模型库。
在检测步骤中,攻击者测量来自他期望发现的小应用程序执行过程中的隐藏信道的信号。接着,他使用在特征化步骤中创建的模型库来找到小应用程序的指令序列。检测是基于检测步骤所采集的信号和存储于库的模型之间的相干性。一种最简单的相干性测量是相关性。
因此,采用分析隐藏信道的逆向工程的成功通常取决于特征化和检测这两个步骤。关于特征化步骤,攻击者可能面对下述四种具体状况之一,如图1所示:
C1-容易获得准确模型,
C2-难以获得准确模型,
C3-不可能获得模型,
C4-获得错误模型。
状况C1对应于例如没有实施硬件或软件对策的情况或者仅仅实施行基本(无效)对策的情况。此类对策的典型示例是在信道(例如耗电量或电磁辐射)上添加随机噪声。然而,这一随机噪声可通过很多次地执行特征化小应用程序和均化信号分离出。
状况C2尤其会发生于如果实施了一些硬件或软件的对策。使用专利FR 2903508 B1所提出的确定性噪声的解决方案有可能使得模型的提取更加困难。使信号失去同步(例如:抖动,时钟分频等)的对策可干扰模型的获得,但通常有可能籍助于信号处理技术找到它们。根据FR 2903508 B1的解决方案在性能方面相当昂贵。此外,如果没有准确生成确定性噪声(也就是说,如果它所生成的签名不能与执行讨论指令时所自然生成的签名非常类似),则攻击者可设法提取原始信号。
状况C3会出现在非常强的保护的情况下,例如籍助于低级别的干预措施,在硬件层面上,直接在执行小应用程序的组件中,或在软件层面上,在解释器(执行小应用程序的虚拟机)中。这些干预措施的目的通常是使模型恒定,或者不恒定但完全相同,从而使之不可能区分出警告指令。然而在实践中,要保证这一属性是非常困难的,因此情况C3是相当理论化的。
状况C4会出现在被攻击的设备被设计成在学习阶段提供假模型(也就是说,该模型并不对应于被攻击小应用程序的模型)时。根据专利FR 2903508 B1,有可能生成虚假类型的噪声,也就是说,为了干扰检测,在特征化和检测两个步骤中生成不同类型的噪声。然而,模型(隐藏在噪声后)通常是相同的。如果攻击者设法找到分离添加噪声的手段(例如分离来自用作噪声的加密处理器的信号),他有可能设法通过隐藏信道分析来实施被攻击的小应用程序的逆向工程。
通常,认为可能性C3和C4不能引起检测步骤。一般,可能性C1和C2允许他们在第二步骤中检测指令,其中两种状况可被预见:
D1-在执行过程中易于检测的模型,
D2-难以检测的模型。
其中不可能检测模型的状况一般是状况C3的结果,并因此不作研究。
通过隐藏信道分析实施小应用程序逆向工程可能发生的五种情景在图1中由S1、S2、S3、S4和S5示出。C2-D1的结合典型地非常少见。这是因为,如果对于攻击者来说要创建特征化小应用程序便于观测目标设备和确定模型都很困难,则会由于模型质量的不确定权衡,使得后续检测阶段也是同样很困难的。
为了防止这些攻击,保护电子设备自身是可能的。例如,有可能在电源上添加噪声以便使得对它的利用更加困难,平滑耗电量(例如使用电容器),通过适当的屏蔽来限制电磁辐射等。还有可能使用特殊的内部时钟,它具有随机改变的工作频率这一特征,这使得测量结果难以使用,小应用程序的指令以不断改变的速率执行并且这是攻击者无从获知的)。还有一些其它技术,包括例如控制对电子设备的物理访问和/或逻辑访问。例如,Java Card芯片卡可使得小应用程序的执行取决于对PIN码的正确展示。因此,盗取该芯片卡并期望从中提取信息的人员不能在没有展示正确PIN码的情况下来执行目标小应用程序(细心的用户将PIN码记在脑中并不告诉其他人),因此不在处于实施攻击的位置之中。
WO 02/50641(Nicolas Giraud等)公开了一种用于保护运算符(尤其是XOR运算符)的执行的技术,该运算符形成微处理器的一组算术指令的一部分。这一技术包括使用多个可能的操作序列的其中一个的执行来替代相同操作符的执行,该多种序列在功能上与该操作符相同。然而,这一技术保护了在使用该运算符的前后过程中没有任何差别的运算符。此外,它并没有设计特别保护具有虚拟机的电子设备(甚至还未公开此类电子设备)。
然而,这些对策是有缺点的。
发明内容
本发明旨在改善该状况。
本发明的一个方面涉及装备用于执行小应用程序的虚拟机的电子设备,该虚拟机设置成识别小应用程序的指令并执行对应于各条指令的代码。该电子设备为例如芯片卡(SIM,银行卡,健康卡等),电子身份文档(电子护照,电子身份卡,电子visa等),USB秘钥,令牌等等。虚拟机包括关联模块,设置成将多个不同但功能上完全相同的代码与同一指令相关联。因此,该虚拟机具有执行同一指令的多种方式。有可能保护多条指令,这些指令各自都与多个不同但功能上完全相同的代码相关联。与各条指令相关联的代码组的定义可在上游完成(例如,在设计该设备时),并且该关联模块随后仅存储与各个有关指令相关联的预定义代码的列表。虚拟机还包括选择模块,设置成随机选择相关指令所要执行的代码。随机是指对于该设备外部的实体来说不可能轻易地推断出确定性特性,该特性有可能根据过去的选择预测未来的选择。这种选择可例如籍助于所谓“伪随机”发生器来完成,例如线性同余产生器,它可为软件或硬件。由这一发生器所产生的一系列随机数是确定的,但是周期长并具有不与外部共享的机密性。关联模块和选择模块为例如由该设备的处理器所执行的软件模块或布线逻辑(例如通过籍助于专用电子组件所制造的虚拟机)。
于是,使用与多个代码相关联的指令的相同小应用程序的连续执行导致不同的观察结果并且难以从这些观察结果中推断出小应用程序的实际发生。这一保护是有利的,因为对使用解释器的设备(例如Java芯片卡)通常强调的特征之一是它们的开放特性以及第三方下载小应用程序的可能性。该设备的不诚实用户可试图利用这一开放特性以下载学习型小应用程序并尝试攻击该设备。
这一实施例是有利的,还在于它提供在比处理器级别更高的级别上实现的保护。因此,有可能保护虚拟机执行小应用程序时所使用某些指令。这一保护可增加至低级别的保护,例如处理器此外可额外使用多个功能等价序列中的一个序列来代替处理器的某些操作。作为常规,包括虚拟机的电子设备可引导执行多个代码,它的小应用程序仅构建为子组件。例如,某些代码可对应于电子设备的部分操作系统(或对应于软掩码(softmasks)),并可在虚拟机没有起作用(或甚至通知它们执行)的情况下执行。
根据一个实施例,与指令相关联的多个代码通过该设备执行它们的持续时间长度(时长)来区分。因此,小应用程序的执行时长不可预料地波动,不仅仅是在全局的(执行小应用程序的总时长)层面上,而且还是在与多个代码相关联的各条指令层面上。
根据一个实施例,与所述指令相关联的多个代码通过当设备执行代码时它们所产生的电磁辐射的耗电量来区分。因此,对当执行小应用程序时的耗电量的电磁辐射的测量不可能简单地推断该小应用程序正在做些什么,电磁(或耗电)签名对于相关联多个代码的各条指令而言是可变的。
根据一个实施例,虚拟机设置成依据设备物理特性的测量结果来随机选择与多个代码相关联的各条指令所要执行的代码。例如,有可能籍助于模数转换器来测量电阻器的噪声,电阻器的噪声具有随机的物理属性。一项或多项物理测量结果都可直接使用,或作为软件伪随机发生器的种子来使用,或者后处理,例如籍助于加密处理器,以便提升它们的统计属性。依据物理特性来提升选择的质量(不可预知性)。
根据一个实施例,两条指令各自都与多个代码相关联,相关联第一指令的至少一个代码与相关联第二指令的一个代码具有至少一个共同的特性,该共同特性包括当设备执行代码时的设备执行时长以及产生的耗电量和电磁辐射。根据一个实施例,该共同特征受限于这三项特性中的一项或多项。因此,任何攻击者有时将面临两条不同的指令却具有相同签名(即相同的执行时长和/或相同的耗电量和/或相同的电磁辐射)的情况,使之难以识别该指令。为了适应执行时长,有可能固定为最长的时长(两条指令之间的最长时长);然而,推荐的做法是不仅仅只将简单的等待循环添加至最快的指令,因为等待循环所具有的电磁签名原则上不同于任意指令的签名。建议采用执行与那些最长的指令相似的计算或操作且这些计算或操作的结果可被忽略,而不是简单的等待循环。这与被限制于将相同指令展示为多条不同指令(当该指令多次执行时)的实施例相比是更为有利的。这是因为易于将任何攻击者在其倾向于进行签名分析期间引向甚至更进一步地犯错。
根据一个实施例,虚拟机设置成识别最频繁的指令并仅为所述最频繁的指令使用多个代码。虚拟机可识别最频繁的指令(对于该指令来说多个代码是可用的),例如使用预先存储的指令列表(例如在设计设备时定义该列表)。因此,就有可能在统计上确定如此这般的指令是更频繁的。还可能分析所讨论的小应用程序的代码,以便识别出这一特定小应用程序的最频繁指令。
根据一个实施例,五个最频繁的指令是指令sload,sconst_0,baload,getfield_a_this,sstore,并且只有这五条指令或者乃至这五条指令的任意子集可被修改。
根据一个实施例,最频繁的指令包括来自于指令加、减、乘、按模计算和异或计算中的一条指令,并有利的是仅仅属于这一指令子集(加、减、乘、按模计算和异或计算)中的一条指令。这种基本的算术指令,它们非常普通,出现在任何小应用程序中的概率极大,并且频繁出现。通过关注于对一些非常频繁的指令的保护,使得实现保护的复杂性最小化(通过避免保护所有指令集),同时确保该保护相当有效(藉助于所选择指令的频繁出现,由此引导任何攻击者犯错,这些指令的签名不断改变)。
根据一个实施例,虚拟机设置成识别最敏感的指令并仅为这些最敏感的指令使用多个代码。因此,保护最关键的操作(攻击者的兴趣常常仅在于小应用程序的某些部分)。正如对于最频繁指令的识别那样,最敏感指令的识别可以是静态的,即最敏感的指令列表可在设计虚拟机和/或设计包括虚拟机的设备时预先编程在虚拟机中。根据一个实施例,最敏感指令包括来自于执行加密算法的指令和访问控制指令(尤其是用于验证PIN码或密码的指令)中的一条指令。
本发明的另一方面涉及保护电子设备免受隐藏信道攻击的方法,该电子设备装备识别小应用程序的指令并执行对应于每条指令的代码的虚拟机。一条指令(至少)与多个不同但功能上完全相同的代码相关联,虚拟机随机选择与多个代码相关联的该指令所要执行的代码。
根据一个实施例,与所述指令相关联的多个代码通过设备执行它们的持续时间长度(时长)来区分。
根据一个实施例,与所述指令相关联的多个代码通过设备执行它们时所产生的耗电量或电磁辐射来区分。
根据一个实施例,虚拟机依据设备的物理特性的测量结果影响所述指令所要执行的代码的选择。该物理特性(由模数转换器取样分量中的电噪声等)不能直接使用,而只是根据该物理特性计算出的参数,它可能例如具有更好的统计属性。
根据一个实施例,两条指令各自与多个代码相关联,相关联第一指令的至少一个代码和相关联第二指令的一个代码具有至少一个共同的特性,该共同特性包括设备的执行时长,以及当设备执行代码时所产生的耗电量和电磁辐射。
根据一个实施例,虚拟机识别最频繁的指令并仅为所述最频繁的指令使用多个代码。
本发明的其它方面、目的和优点将通过阅读实施例的详细说明而清晰。
附图说明
同样,借助于下述附图,本发明也易于更好地理解:
图1示出了通过隐藏信道分析的小应用程序的逆向工程的多种情景;
图2示出了根据本发明一个实施例所实施的小应用程序保护的实施例。
具体实施方式
根据一个实施例,保护由虚拟机解释的程序使其免受使用隐藏信道分析(称之为“边信道分析”)的逆向工程是基于备选模型的使用,使特征化和检测阶段更加困难。
于是,指令(操作码)可对应于多个不同的代码,并因此对应于多个不同的模型。
此外,相同的模型可对应于多条不同的指令。例如,加运算(ADD)通常非常接近于减运算(SUB)。有可能将ADD和SUB以它们的签名相同或非常相似的方式来编码。例如,可能预见使用加ADD,其采用两个操作数Op1和Op2作为参数,可有下述方式:
读取Op1
读取Op2
X=Op2的补数
计算Op1+Op2
将结果写入存储器
这里可看出,计算该运算的第二参数的补数但并未使用该计算的结果。有可能以下述方式执行相应的运算SUB:
读取Op1
读取Op2
X=Op2的补数
计算Op1+X
将结果写入存储器
可以看出,此SUB运算执行与ADD操作完全相同的步骤,除了在第四行它使用补数X作为参数代替参数Op2之外。然而,这在执行ADD和SUB所产生的电磁或其他辐射中一般是观测不到的,由于仅仅只改变所使用的地址(X的地址不是Op2的地址)。然而,在同一存储器组件的第一地址或其它地址中读取到的数据内容原则上产生相同的痕迹。这一结果是ADD运算可能比常规ADD运算稍慢些,因为它计算了显然不需要的补数X(后面未使用),但是另一方面,事实上,计算该补数使之有可能获得与SUB运算相同的签名。根据一个实施例,求补数是以硬件方式与其它步骤并行执行的步骤,并没有使ADD运算减慢。
也有可能为相当不同的运算获得相同的签名,例如,具有一个操作数的运算(求补数,取非,移位1比特等),以及具有两个操作数的运算(加,乘等)。尤其是,有可能连续两次读取唯一的操作数,从而模拟读取两个操作数。
根据一个实施例,相同指令的模型是不同的,不仅在形式上(耗电量,电磁辐射),而且在执行持续时间上(执行时长),例如,通过添加不需要的运算。不需要的运算可以为NOP运算。建议对于此类任务(对执行时长的人为延长)不仅仅使用NOP,因为随后可能发生攻击者会处于定位NOP的位置上并将它们认定为“时间填充”的指示器,它的执行时长必须被推断出以便确定真正的执行时长。
根据一个实施例,仅针对存储在特定类型存储器(例如ROM)中的小应用程序能启动某些模型。ROM存储器一般包括高度受控的小应用程序,因为在遮蔽ROM组件的步骤中它们必须已经由负责制造该ROM组件的制造商“下载”,它还包括小应用程序的信息,使得制造商因此获得验证其内容的机会。对于很多种小应用程序(特别是对于Java小应用程序),很容易(并根据现有技术已知)获得小应用程序的源代码,甚至仅在它的二进制码可供使用时(这可为上述制造商的情况)。
根据一个实施例,ROM模型不适用于将小应用程序下载到不是ROM的存储器,例如EEPROM或闪存或电池保护的RAM。这是有利的,由于这种(可重复写入)的存储器一般比ROM更利于存取并尤其是可能由攻击者操纵以便在其上存储经选择的特征化小应用程序(这是在ROM存储器的情况下不可能的或者至少不可能制成的,由于制造商和/或他的顾客和/或销售方会进行检查)。
根据一个实施例,模型是取决于存储区域而不同的。例如,电子设备的一些操作系统分割可重复写入的存储器(例如EEPROM和FLASH),至少定义了:
第一区域,可访问第三方,以便根据第一保护等级以受控方式下载小应用程序,以及,
第二区域,可访问设备的制造商,以便下载校正程序(补丁,软掩码等)或者小应用程序(可选小应用程序升级包),该第二区域一般可根据第二保护等级(常高于第一保护等级)来控制。
除了上述两个区域外还可存在补充区域。第二保护等级可以是确定的并且不可修改的,而第一保护等级是可以修改的。该第一等级是可通过例如电信运营商(典型的是采用SIM卡的电子设备的情况)、金融机构(典型的是银行卡的情况)或被任何购买该电子设备并使其终端用户使用的单位来修改。
因此,通过根据存储器类型和/或区域改变使用的模型,使得攻击者更难以进行特征化指令,由于可能由攻击者执行的特征化小应用程序对所有小应用程序而言并不相关,并尤其对于存储在某些种类的存储器中或某些存储器区域中被攻击者视为更敏感且无法访问的的小应用程序而言并不相关。这尤其可能涉及系统小应用程序,例如提供认证功能或身份证共享功能(信用证书)的小应用程序。认证功能可具体包括一项或多项生物识别认证(通过“match-on-card”技术的指纹校对,虹膜校对等),密码校对,PIN码等。共享身份证的功能可包括例如由系统小应用程序共享的PIN码功能,用于避免每个人的所有用户小应用程序必须向用户请求相同的PIN码,这会有害于电子设备的用户易用性(典型的是,用户因需要多次输入相同的密码而恼怒),甚至一般也会不利于安全性。这是由于每次新输入的PIN码都有可能承受攻击(社交工程,例如观察PIN的输入并记住它的人,或按键日志类型的间谍系统,即按键敲击拦截器)。此外,每次新输入电子设备的PIN码都有可能潜在地承受攻击。
根据为应用目标定义的某些规则交替地激活同一指令的模型。例如,所有模型都可随机激活,能够根据专利申请FR 2903508(“由虚拟机解释的程序的保护”,2006年7月10日提交)中定义的机制来确定适用于小应用程序的规则,也就是说,有可能考虑小应用程序的摘要(例如,应用于小应用程序的二进制代码的SHA-1函数的结果),以便对于同一指令,取决于它属于一个小应用程序还是另一个而不同地改变模型。
备选模型可应用于所有指令或一组最关键的指令和/或最频繁调用的指令。尤其可能例如将访问NVRAM或EEPROM类型存储器的指令作为目标,它们是耗电大户,并常常更易于通过分析耗电量来检测。
根据一个实施例,由这一对策产生的效果如下文所述。
当攻击者能够使用原始信号轻易地特征化模型时(如果该组件大量泄漏并且没有添加任何噪声或者如果添加噪声但它可轻易过滤掉,就有可能发生这一状况),备选模型的使用增加了攻击者在特征化阶段所要确定的模型的数量以及在检测阶段所要识别(匹配)的候选者的数量。因而,模型的检测变得更为困难。
因此,攻击者可能试图实施的噪声提取以便发现与该指令相关联的模型变得更为复杂。
攻击者可能注意到存在由目标电子设备使用的针对相同指令的不同模型(根据设备执行指令的前后过程)。这类攻击者然后可试图考虑这一特性,通过尝试确定目标电子设备所使用的一项或多项规则用来选择一个模型而不是另一个模型。在这种情况下,攻击者不能使用原始信号来特征化模型或者他被迫记录信号的很多次出现,然后平均这些信号以便推断出噪声:
-如果攻击者用于确定模型所使用的学习型小应用程序的一项或多项规则和使用要被攻击的小应用程序的电子设备所使用的一项或多项规则并不相同,则在两个不同阶段所获取的同一指令的模型一般也是不同的。因而,不能使用在特征化阶段所获取的模型(由于它们先天是错误的),以便成功地找到要被攻击的小应用程序的指令。攻击因此也变得更加困难。
-如果对于学习型小应用程序和要被攻击的小应用程序来说,一项或多项规则是相同的,但是对于各条指令所使用的多个代码以这种方式来确定,使得与这些代码相关联的模型并不具有相同的时长以及不在同一时刻调用,那么可以期望的是,根据这一实施例的对策产生抖动并导致不同步。通过平均化信号,在两个步骤(特征化和检测)中的同一指令的平均模型因此并不相同。检测因而变得更加困难。
根据一个实施例,仅仅只保护几条指令(最频繁的,即那些统计上被小应用程序频繁调用的指令),这有可能使得对性能产生小的影响(大约几个百分比,即小应用程序的执行速度几乎不变)。因此,通过将例如四个可能的代码而不是仅仅一个代码与指令相关联来仅改变一个非常频繁的指令(例如加运算),这一简单事实可能足以使得攻击变得更为复杂,而对于开发时间(在解释器,设备,小应用程序等的设计阶段)和性能(根据这一实施例,被保护的小应用程序与未被保护的小应用程序几乎同样快)两者都有着非常微不足道的影响。
根据一个实施例,最频繁的指令为:sload,sconst_0,baload,getfield_a_this和sstore,并且它是受保护的这些指令的子集(或者甚至所有这些指令)。
解释器(例如,JCVM类型,表示Java Card虚拟机)通常是使用C语言开发的软件。因此,有可能使用这种语言来修改解释器,这具有移植性更高的优点(可简单地从一个设备改变至另一个设备,这些设备例如具有不同类型的处理器)。
受限于保护频繁指令的一个实施例是特别有利的,特别是对于具有影响性能的高度约束的产品时,例如低容量存储器,慢速处理器等。例如,芯片卡所具有的计算和存储资源比那些传统计算机要小得多,本实施例特别适用于它们。
仅将某些指令作为目标也有可能避免翻译器的开发时间长和尺寸大。此外,通过与不同代码相关联的指令产生抖动(使用具有不同执行时间的代码),也同样能够干扰仅具有一个模型的其他指令的模型的生成和检测。
图2涉及根据一个实施例的小应用程序保护的实现。在图2中,OPi表示指令号i(具有操作码OPi)。Ri表示对应于指令OPi的小应用程序的规则。规则Ri可以例如为指令OPi定义所要执行的代码的选择算法。它可以是传统的伪随机算法,但也可以是使用不等概率所选择不同代码的算法,即使因难以预测而具有随机性。OP.SEQi表示执行由小应用程序所构建的指令序列中的指令OPi的步骤。在Op.SEQi期间所执行的代码并不总是相同;它首先取决于指令OPi,它确定必须由代码和由规则Ri所执行的功能,其中,规则Ri确定了必须执行的代码(在执行此功能的所有代码中)。
因此,根据图2所示实施例的虚拟机,从一系列指令(OP1、OP2、OP3、...)表示的小应用程序,从一系列规则(R1、R2、R3、...)和从一系列代码组(OP1的代码、OP2的代码、OP3的代码)中产生与一条指令相关联的各组代码,执行小应用程序所提供任务的执行序列(OP.SEQ1、OP.SEQ2、OP.SEQ3、...),但是使用随机选择的代码。
当然,本发明并不限制于上文通过示例描述的实施例;它可扩展至其它变体。
因此,可能为芯片卡的设备已在上文中描述。然而,实施本发明的设备还可为例如移动通信设备、非接触式识别标签、非接触式识别等级读取器、芯片卡、这种芯片卡的读取器、访问控制系统,等等。有利于实施本发明的芯片卡的类型尤其是健康芯片卡、身份或护照芯片卡、银行芯片卡、访问控制芯片卡或支持电子游戏的芯片卡。
可以受到保护的小应用程序并不限制为Java Card小应用程序,而是可为例如.NET小应用程序或Multos小应用程序。

Claims (15)

1.装备用于执行小应用程序的虚拟机的电子设备,该虚拟机设置成识别小应用程序的指令并执行对应于各条指令的代码,其特征在于,所述虚拟机包括关联模块,设置成将多个不同但功能上完全相同的代码与同一指令相关联;以及选择模块,设置成随机选择所述指令所要执行的代码。
2.根据权利要求1所述的设备,其特征在于,所述多个代码与所述指令相关联并通过设备执行代码的持续时间长度(时长)来区分。
3.根据权利要求1或2所述的设备,其特征在于,所述多个代码与所述指令相关联并通过设备执行代码时产生的耗电量或电磁辐射来区分。
4.根据上述权利要求中任一项所述的设备,其特征在于,所述虚拟机设置成依据设备物理特性的测量结果来影响所述指令所要执行的代码的随机选择。
5.根据上述权利要求中任一项所述的设备,其特征在于,所述两条指令各自与多个代码相关联,相关联于第一指令的至少一个代码与相关联于第二指令的一个代码具有至少一个共同特性,可能的共同特性为设备执行代码的时长以及当设备执行代码时产生的耗电量和电磁辐射。
6.根据上述权利要求中任一项所述的设备,其特征在于,所述虚拟机设置成识别最频繁的指令并仅为所述最频繁的指令使用多个代码。
7.根据权利要求6所述的设备,其特征在于,所述最频繁的指令包括取自加、减、乘、按模计算和异或计算指令中的一条指令。
8.根据权利要求1至5中任一项所述的设备,其特征在于,所述虚拟机设置成识别最敏感的指令并仅为所述最敏感的指令使用多个代码。
9.根据权利要求8所述的设备,其特征在于,所述最敏感的指令包括取自使用密码算法的指令和访问控制指令中的一条指令。
10.保护电子设备免受隐藏信道攻击的方法,所述电子设备装备识别小应用程序的指令并执行对应于各条指令的代码的虚拟机,其特征在于,所述指令与多个不同但功能上完全相同的代码相关联,所述虚拟机随机选择所述指令要执行的代码。
11.根据权利要求10所述的方法,其特征在于,所述多个代码与所述指令相关联并通过设备执行代码的时长来区分。
12.根据权利要求10或11所述的方法,其特征在于,所述多个代码与所述指令相关联并通过设备执行代码时产生的耗电量或电磁辐射来区分。
13.根据权利要求10至12中任一项所述的方法,其特征在于,所述虚拟机依据设备物理特性的测量结果来选择所述指令要执行的代码。
14.根据权利要求10至13中任一项所述的方法,其特征在于,所述两条指令各自与多个代码相关联,相关联于第一指令的至少一个代码与相关联于第二指令的一个代码具有至少一个共同特性,可能的共同特性为设备执行代码的时长以及当设备执行代码时产生的耗电量和电磁辐射。
15.根据权利要求10至14中任一项所述的方法,其特征在于,所述虚拟机识别最频繁的指令并仅为所述最频繁的指令使用多个代码。
CN201180066192.0A 2010-12-24 2011-12-22 保护小应用程序免受隐藏信道分析 Pending CN103597490A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810136156.0A CN108171021A (zh) 2010-12-24 2011-12-22 保护小应用程序免受隐藏信道分析

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1061252A FR2969787B1 (fr) 2010-12-24 2010-12-24 Protection des applets
FR1061252 2010-12-24
PCT/FR2011/053160 WO2012085482A1 (fr) 2010-12-24 2011-12-22 Protection des applets contre les analyses par canaux caches

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201810136156.0A Division CN108171021A (zh) 2010-12-24 2011-12-22 保护小应用程序免受隐藏信道分析

Publications (1)

Publication Number Publication Date
CN103597490A true CN103597490A (zh) 2014-02-19

Family

ID=44275914

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201180066192.0A Pending CN103597490A (zh) 2010-12-24 2011-12-22 保护小应用程序免受隐藏信道分析
CN201810136156.0A Pending CN108171021A (zh) 2010-12-24 2011-12-22 保护小应用程序免受隐藏信道分析

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201810136156.0A Pending CN108171021A (zh) 2010-12-24 2011-12-22 保护小应用程序免受隐藏信道分析

Country Status (6)

Country Link
US (1) US20130312110A1 (zh)
EP (1) EP2656268A1 (zh)
CN (2) CN103597490A (zh)
FR (1) FR2969787B1 (zh)
RU (1) RU2603545C2 (zh)
WO (1) WO2012085482A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107506623A (zh) * 2017-08-15 2017-12-22 北京奇虎科技有限公司 应用程序的加固方法及装置、计算设备、计算机存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2972064B1 (fr) * 2011-02-25 2013-03-15 Inside Secure Procede de cryptographie comprenant une operation d'exponentiation
US9607178B2 (en) 2014-03-20 2017-03-28 Qualcomm Incorporated Protection against key tampering
CN106919833A (zh) * 2015-12-28 2017-07-04 上海华虹集成电路有限责任公司 安全芯片中防止功耗泄露的方法
US11308239B2 (en) * 2018-03-30 2022-04-19 Seagate Technology Llc Jitter attack protection circuit
RU2733083C1 (ru) * 2019-11-06 2020-09-29 Акционерное общество "Государственный Рязанский приборный завод" Способ автоматического управления средством активной защиты информации
CN111159660B (zh) * 2019-12-30 2022-07-15 龙芯中科技术股份有限公司 指令执行方法、处理器和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1488091A (zh) * 2000-12-21 2004-04-07 Cp8技术公司 具有微处理器的电子模块中安装的逻辑或数学操作符的保护方法
US20050108507A1 (en) * 2003-11-17 2005-05-19 Saurabh Chheda Security of program executables and microprocessors based on compiler-arcitecture interaction
CN101009554A (zh) * 2007-01-17 2007-08-01 华中科技大学 一种抗功耗攻击的字节替换电路
US20090300754A1 (en) * 2006-07-10 2009-12-03 Segem Securite Protecting a Program Interpreted by a Virtual Machine

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5941957A (en) * 1997-10-06 1999-08-24 Ncr Corporation Dependable web page synchronization mechanism
US6681387B1 (en) * 1999-12-01 2004-01-20 Board Of Trustees Of The University Of Illinois Method and apparatus for instruction execution hot spot detection and monitoring in a data processing unit
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US9323955B2 (en) * 2000-12-21 2016-04-26 Gemalto Sa Method for protecting a logic or mathematical operator installed in an electronic module with a microprocessor as well as the associated embedded electronic module and the system
US20040249992A1 (en) * 2003-04-30 2004-12-09 Komarla Eshwari P. Methods and apparatus to provide environment-based instruction selection
WO2009024520A1 (en) * 2007-08-17 2009-02-26 International Business Machines Corporation Method and system for atomicity for elliptic curve cryptosystems
CN102045158B (zh) * 2010-11-26 2012-07-04 中国科学院软件研究所 一种隐蔽信道标识方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1488091A (zh) * 2000-12-21 2004-04-07 Cp8技术公司 具有微处理器的电子模块中安装的逻辑或数学操作符的保护方法
US20050108507A1 (en) * 2003-11-17 2005-05-19 Saurabh Chheda Security of program executables and microprocessors based on compiler-arcitecture interaction
US20090300754A1 (en) * 2006-07-10 2009-12-03 Segem Securite Protecting a Program Interpreted by a Virtual Machine
CN101009554A (zh) * 2007-01-17 2007-08-01 华中科技大学 一种抗功耗攻击的字节替换电路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107506623A (zh) * 2017-08-15 2017-12-22 北京奇虎科技有限公司 应用程序的加固方法及装置、计算设备、计算机存储介质

Also Published As

Publication number Publication date
RU2603545C2 (ru) 2016-11-27
US20130312110A1 (en) 2013-11-21
FR2969787A1 (fr) 2012-06-29
RU2013134481A (ru) 2015-01-27
WO2012085482A1 (fr) 2012-06-28
EP2656268A1 (fr) 2013-10-30
CN108171021A (zh) 2018-06-15
FR2969787B1 (fr) 2013-01-18

Similar Documents

Publication Publication Date Title
CN103597490A (zh) 保护小应用程序免受隐藏信道分析
CN105229612B (zh) 使用基于硬件的微体系结构数据的异常程序执行的检测
CN111898360B (zh) 基于区块链的文本相似性检测方法及装置、电子设备
JP6707024B2 (ja) 非対称マスク済み乗算
CN103164643B (zh) 一种通过硬件进行反调试的方法和装置
Irazoqui et al. Mascat: Preventing microarchitectural attacks before distribution
KR20170098732A (ko) 2차 이상의 부채널 분석에 대한 회로의 저항력을 테스트하는 방법
CN110022214A (zh) 用于在计算机系统中提供安全性的系统和方法
CN105247532A (zh) 使用硬件特征的无监督的基于异常的恶意软件检测
Tian et al. DKISB: Dynamic key instruction sequence birthmark for software plagiarism detection
WO2003003169A2 (en) Secure method and system for biometric verification
CN105550875A (zh) 用于保护电子货币交易的系统和方法
Msgna et al. Verifying software integrity in embedded systems: A side channel approach
Hurley-Smith et al. Certifiably biased: An in-depth analysis of a common criteria EAL4+ certified TRNG
CN111400708B (zh) 用于恶意代码检测的方法及装置
WO2015185071A1 (en) Method for enhanced security of computational device with multiple cores
Ren et al. A learning-based approach to secure JTAG against unseen scan-based attacks
Leng Smart card applications and security
US9111072B1 (en) Anti-reverse engineering unified process
CN110766402A (zh) 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质
CN110520860A (zh) 用于防护软件代码的方法
El Farissi et al. Neural network vs. Bayesian network to detect Java card mutants
Pejić et al. Estimating similarity between differently compiled procedures using neural networks
CN107533500A (zh) 用于确保程序执行的方法
CN108121899A (zh) 一种应用程序防重打包方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20140219