CN101971185A - 保护程序执行安全的方法 - Google Patents
保护程序执行安全的方法 Download PDFInfo
- Publication number
- CN101971185A CN101971185A CN2009801094094A CN200980109409A CN101971185A CN 101971185 A CN101971185 A CN 101971185A CN 2009801094094 A CN2009801094094 A CN 2009801094094A CN 200980109409 A CN200980109409 A CN 200980109409A CN 101971185 A CN101971185 A CN 101971185A
- Authority
- CN
- China
- Prior art keywords
- function
- execution
- management program
- security management
- carried out
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
保护实现嵌套函数的主程序的执行安全的方法,该方法包括以下步骤:执行被安排成更新当前函数列表的安全管理程序;向安全管理程序通知主程序的每个函数的执行开始并更新当前函数列表;向安全管理程序通知每个函数的执行结束;以及在每次被通知函数的执行结束之后,验证该函数确实是最近开始的函数,否则执行保护行动。
Description
本发明涉及保护由微处理器进行的程序执行安全的方法,尤其涉及诸如银行卡或电子身份证之类的数据介质卡的微处理器。
发明背景
这样的卡具有一般包括微处理器、易失性存储器和非易失性存储器的集成电路。非易失性存储器包含诸如获发该卡的人的身份、秘密标识码、银行信息等个人数据,以及使得能在该卡与该卡所连接到的终端(诸如自动柜员机(ATM)或支付终端)的读取器之间交换信息至少一个主程序。主程序实现多个嵌套函数,具体而言用于将各种个人数据项传达给终端、检索用户向终端输入的代码、对该代码执行运算(例如,出于加密或认证目的)、将认证结果传达给终端……这些函数在以下意义上是嵌套的:当第一函数正在执行时,其调用第二函数,第二函数正在执行时又调用第三函数,依此类推……;在第三函数和第二函数的执行分别结束之后,相继发生执行返回第二函数并随后返回第一函数。为了允许返回到调用方函数,微处理器管理函数调用栈,函数调用栈使得能在每次调用函数时存储返回地址,从而在被调用函数执行结束时,微处理器恢复存储在函数调用栈中的地址并将其执行指针指向该地址,从而继续执行调用方函数。
在这些卡中,在安全性方面很关键的一个函数包括在认证操作的每次失败时递减计数器,该认证操作包括验证向终端输入的代码确实与该卡的集成电路中所存储的秘密标识码相同。在银行卡的情况下,该失败次数一般设为3,而该代码本身包括4位数字。以此方式递减的计数器在该代码验证成功之后返回其初始值。相反,在3次代码验证失败之后,该集成电路被锁定。存在包括在认证操作结束时扰乱卡操作以阻止执行用于递减计数器的函数的欺骗性技术。可以理解,若不执行该函数,则不诚实的人能尝试4位数字的所有可能组合以找出正确的组合。
另一种欺骗性技术包括扰乱微处理器的操作,从而引发意外的微处理器行为,或许使得有可能恢复出本应保密的数据。例如,可以设想,在函数已被调用方函数调用之后,执行有可能在被调用函数执行结束前就返回调用方函数。
发明目的
本发明提供用于保护涉及嵌套函数调用的程序的执行安全的手段。
发明内容
为此,本发明提供了一种保护实现嵌套函数的主程序的执行安全的方法,该方法包括以下步骤:
执行被安排成更新当前函数列表的安全管理程序;
向安全管理程序通知主程序的每个函数的执行开始并更新当前函数列表;
向安全管理程序通知每个函数的执行结束;
在每次被通知函数的执行结束之后,验证该函数确实是最近开始的函数;以及
倘若验证失败,则执行根据与每个函数相关联的安全等级选择的保护行动。
由此,由安全管理程序保持的该列表用于检测主程序的异常操作,尤其是其函数调用的异常操作。
优选地且作为示例,保护行动包括发警告或中断主程序。
在特定实现中,该函数列表是包括用于接收各个函数标识符的一系列字段的表,该方法包括以下步骤:
初始化这些字段;以及
一旦被通知函数的执行开始,就将该函数的标识符写入首个可用字段。
该实现尤为简单和有效,且只需要对计算和存储器资源的有限使用。
有利地,该方法包括以下步骤:一旦被通知由调用方函数调用的函数的执行结束,就将被调用函数存储在存储器中,以及使调用安全管理程序的函数验证最近执行的函数就是该被调用函数。
本发明的其他特征和优点在阅读对本发明的特定但非限制性实现的以下描述之后变得明显。
附图简述
参照附图,其中:
图1是可用于实现本发明的方法的数据卡的图解视图;
图2是在根据本发明的方法的上下文中运行主程序的图解表示;以及
图3是在根据本发明的方法的上下文中运行安全管理程序的图解表示。
发明详细描述
参照附图,以下描述本发明应用于数据卡1,数据卡1包括集成电路(给定总参考2),该集成电路包括连接到例如随机存取存储器(RAM)类型的易失性存储器4和例如只读存储器(ROM)类型或电可擦可编程ROM(EEPROM)类型的非易失性存储器5的微处理器3。
非易失性存储器5包含图2中由6表示的主程序,其实现嵌套函数F1、F2和F3。函数F1被安排成使得在执行时调用函数F2,函数F2本身被安排成使得在执行时调用函数F3。在函数F3执行结束时,函数F2继续,并且在函数F2执行结束时,函数F1继续。函数F1、F2和F3的实质并不重要,并且作为示例,这些函数可执行以下操作:恢复向连接到智能卡的终端输入的代码值、运算操作、代码验证操作、加密操作、递增或递减计数器、写入存储器等……
每个函数F1、F2和F3拥有按唯一性方式指定所述函数的标识符ID-F1、ID-F2、或ID-F3。函数标识符以这样的方式构造,从而以编码形式包含该函数特有的信息,尤其是安全等级。
非易失性存储器5还包含图3中由7表示的安全管理程序,该程序被安排成建立和更新正在执行的函数列表或函数调用栈。该列表是具有一系列字段9的表8的形式,每个字段用于接收对正在执行的函数的标识。以本身已知的方式(因此本文中不再赘述),安全管理程序7利用索引来指向该栈中首个可用字段。该安全管理程序还能访问根据函数标识符中编码的安全等级来关联要执行的保护动作的表。
以下描述本发明的方法。
在操作中,当卡1的微处理器3执行主程序6时,它同时执行安全管理程序7。
在开始之际,通过向表8的字段9写入默认值(在此为无函数)来将其初始化,并且索引指向首个包含所述默认值的字段(也称为可用字段)。
当主程序执行函数F1时,函数F1藉由函数开始接口(这样的接口本身是已知的)通知安全管理程序7自己的执行已开始。安全管理程序7随后将函数F1的标识符ID-F1写入表8的首个可用字段9,并使得其索引指向随后成为首个可用字段的下一个字段9。
当函数F1调用函数F2时,函数F2藉由函数开始接口通知安全管理程序自己的执行已开始。安全管理程序7随后将函数F2的标识符(即,ID-F2)写入被指向的字段9,并随后使该索引指向下一个字段9。
当函数F2调用函数F3时,函数F3通知安全管理程序7自己的执行已开始,并且函数F3的标识符ID-F3随后被写入索引所指向的字段,且该索引指向下一个字段9。
当函数F3执行结束时,函数F3藉由函数结束接口(这样的接口本身是已知的)通知安全管理程序7自己的执行已结束。安全管理程序7随后验证向它通知执行结束的函数F3确实是最近开始执行的函数。若如此,则函数F2的执行继续,直至其结束,函数F2随后藉由函数结束接口通知安全管理程序7自己的执行已结束。安全管理程序7随后验证函数F2确实是最近开始执行的函数。若如此,函数F1的执行重新开始直至其结束。
倘若向安全管理程序7通知自己的执行结束的函数并非最近开始执行的函数,则安全管理程序7执行保护行动。在本示例中,该保护行动是向主程序6发警告,主程序6中断自己的执行。保护行动也可引发卡被锁定,例如,可由发行组织在其已验证持卡人的身份之后将该卡解锁。保护行动可以是安全对策。使用术语“安全对策”意指用于尤其是避免不诚实的人例如通过以下操作来恢复信息的手段:
·使时钟频率变化;或
·随机地插入指令以修改代码执行的历时,电磁波的发射,或在代码正被执行时的能量消耗……
在函数执行的开头,安全管理程序使用所述函数的标识符来确定应当激活哪个(些)保护行动或安全对策。在一种变形中,倘若函数执行结束但所述函数并非最近开始执行的函数时,则安全管理程序可被安排成从该函数的标识符推论出需要执行哪个保护行动。
安全管理程序还可被安排成在函数执行的开头激活至少一个安全对策。随后优选地确定标识符函数以通知安全管理程序需要激活这样的措施,但不一定要构成对所述对策的实质的指示(该对策对于要求此类激活的所有函数可以是相同的)。
在另一种变形中,该方法可包括当最近执行的函数指示其自己的执行结束时将所述函数存储在存储器中的步骤。调用了最近执行的函数的那个函数随后可询问安全管理程序,要求它验证该程序的名义执行与其实际执行之间的一致性。在上述示例中,当函数F3已指示其执行结束时,函数F2可请求安全管理程序验证刚才结束的确实是函数F3。
当然,本发明不限于所描述的实现,并且可向本发明应用各种实现而不超出如由权利要求书所定义的发明范围。
具体而言,在变形中,可提供来自主程序的每个函数的可能函数调用的表。作为示例,若函数F2调用函数F3,则安全管理程序验证函数F2的确有权限调用函数F3。还可以将函数按组关联并设计将这些函数与它们所属的组相关联的函数标识符,从而使得安全管理程序能验证彼此调用的函数确实属于同一组。
Claims (8)
1.一种保护实现嵌套函数的主程序的执行安全的方法,所述方法包括以下步骤:
执行被安排成更新当前函数列表的安全管理程序;
向所述安全管理程序通知所述主程序的每个函数的执行开始并更新所述当前函数列表;
向所述安全管理程序通知每个函数的执行结束;
在每次被通知函数的执行结束之后,验证该函数确实是最近开始的函数;以及
倘若所述验证失败,则执行根据与每个函数相关联的安全等级选择的保护行动。
2.如权利要求1所述的方法,其特征在于,所述保护行动包括发警告。
3.如权利要求1所述的方法,其特征在于,所述保护行动包括中断所述主程序。
4.如权利要求1所述的方法,其特征在于,所述函数列表是包括用于接收各个函数标识符的一系列字段的表,所述方法包括以下步骤:
初始化所述字段;以及
一旦被通知函数的执行开始,就将该函数的标识符写入首个可用字段。
5.如权利要求4所述的方法,其特征在于,每个函数的标识符包括与该函数相关联的安全等级,并且所述安全管理程序能访问根据所述安全等级来关联要执行的保护行动的表。
6.如权利要求1所述的方法,其特征在于,所述安全管理程序能访问来自所述主程序的每个函数的可能函数调用的表。
7.如权利要求1所述的方法,其特征在于,一旦被通知由调用方函数调用的函数的执行结束,所述方法包括:将所述被调用函数存储在存储器中,以及使调用所述安全管理程序的函数验证最近执行的函数是所述被调用函数。
8.如权利要求1所述的方法,其特征在于,在函数执行的开头,所述安全管理程序激活至少一个安全对策。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0801406 | 2008-03-14 | ||
FR0801406A FR2928755B1 (fr) | 2008-03-14 | 2008-03-14 | Procede de securisation d'une execution d'un programme |
PCT/FR2009/000254 WO2009115712A2 (fr) | 2008-03-14 | 2009-03-12 | Procede de securisation d'une execution d'un programme |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101971185A true CN101971185A (zh) | 2011-02-09 |
CN101971185B CN101971185B (zh) | 2013-08-07 |
Family
ID=39745671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801094094A Active CN101971185B (zh) | 2008-03-14 | 2009-03-12 | 保护程序执行安全的方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8621617B2 (zh) |
EP (1) | EP2252958B1 (zh) |
CN (1) | CN101971185B (zh) |
BR (1) | BRPI0909294B1 (zh) |
FR (1) | FR2928755B1 (zh) |
RU (1) | RU2468428C2 (zh) |
WO (1) | WO2009115712A2 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904208B2 (en) * | 2011-11-04 | 2014-12-02 | International Business Machines Corporation | Run-time task-level dynamic energy management |
US8819155B2 (en) * | 2011-12-16 | 2014-08-26 | Business Objects Software Limited | System and method for performing centralized common tasks for a set of functions |
EP2996034B1 (en) | 2014-09-11 | 2018-08-15 | Nxp B.V. | Execution flow protection in microcontrollers |
EP3040895A1 (en) * | 2014-12-30 | 2016-07-06 | Gemalto Sa | System and method for protecting a device against return-oriented programming attacks |
KR101568872B1 (ko) * | 2015-05-11 | 2015-11-12 | 주식회사 블랙포트시큐리티 | 프로그램 이상흐름 검출 장치 및 방법 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4251885A (en) * | 1979-03-09 | 1981-02-17 | International Business Machines Corporation | Checking programmed controller operation |
JP3472026B2 (ja) * | 1996-03-26 | 2003-12-02 | 富士通株式会社 | ログ情報採取解析装置 |
US5974549A (en) * | 1997-03-27 | 1999-10-26 | Soliton Ltd. | Security monitor |
RU2137185C1 (ru) * | 1998-01-09 | 1999-09-10 | Насыпный Владимир Владимирович | Способ комплексной защиты процесса обработки информации в эвм от несанкционированного доступа, программных закладок и вирусов |
WO2003050660A1 (en) * | 2001-12-12 | 2003-06-19 | Schlumberger Systemes | Method and system for module chaining control in a modular software architecture |
WO2003077083A2 (en) * | 2002-03-13 | 2003-09-18 | Matsushita Electric Industrial Co., Ltd. | Secure device for preventing unauthorised use of distributed content |
DE10252347A1 (de) * | 2002-11-11 | 2004-05-19 | Giesecke & Devrient Gmbh | Überwachte Unterprogrammausführung |
US20040168078A1 (en) * | 2002-12-04 | 2004-08-26 | Brodley Carla E. | Apparatus, system and method for protecting function return address |
US7243098B2 (en) * | 2002-12-19 | 2007-07-10 | International Business Machines Corporation | Method, system, and program for optimizing aggregate processing |
EP1450232A1 (fr) * | 2003-02-18 | 2004-08-25 | SCHLUMBERGER Systèmes | Procede de securisation de l'execution de code contre des attaques |
FR2859548B1 (fr) * | 2003-09-09 | 2005-11-25 | France Telecom | Procede de surveillance de l'execution de programmes sur un ordinateur |
EP1870814B1 (en) * | 2006-06-19 | 2014-08-13 | Texas Instruments France | Method and apparatus for secure demand paging for processor devices |
US7475431B2 (en) * | 2004-06-10 | 2009-01-06 | International Business Machines Corporation | Using security levels to improve permission checking performance and manageability |
US7401210B2 (en) * | 2005-03-30 | 2008-07-15 | Arm Limited | Selecting subroutine return mechanisms |
US7496551B1 (en) * | 2006-03-28 | 2009-02-24 | Emc Corporation | Methods and apparatus associated with advisory generation |
US8291381B2 (en) * | 2007-09-27 | 2012-10-16 | Microsoft Corporation | Call stack parsing in multiple runtime environments |
-
2008
- 2008-03-14 FR FR0801406A patent/FR2928755B1/fr not_active Expired - Fee Related
-
2009
- 2009-03-12 BR BRPI0909294A patent/BRPI0909294B1/pt active IP Right Grant
- 2009-03-12 EP EP09721330.0A patent/EP2252958B1/fr active Active
- 2009-03-12 US US12/922,553 patent/US8621617B2/en active Active
- 2009-03-12 CN CN2009801094094A patent/CN101971185B/zh active Active
- 2009-03-12 RU RU2010142001/08A patent/RU2468428C2/ru active
- 2009-03-12 WO PCT/FR2009/000254 patent/WO2009115712A2/fr active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP2252958A2 (fr) | 2010-11-24 |
US20110067104A1 (en) | 2011-03-17 |
CN101971185B (zh) | 2013-08-07 |
US8621617B2 (en) | 2013-12-31 |
WO2009115712A3 (fr) | 2009-11-12 |
FR2928755A1 (fr) | 2009-09-18 |
BRPI0909294A2 (pt) | 2015-08-11 |
BRPI0909294B1 (pt) | 2019-09-10 |
RU2010142001A (ru) | 2012-04-20 |
FR2928755B1 (fr) | 2014-04-11 |
EP2252958B1 (fr) | 2018-05-02 |
RU2468428C2 (ru) | 2012-11-27 |
WO2009115712A2 (fr) | 2009-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107276754B (zh) | 一种基于区块链大量生成私钥的方法及装置 | |
CN101971185B (zh) | 保护程序执行安全的方法 | |
CN108573296B (zh) | 防伪装置、防伪系统和防伪方法 | |
US20150172275A1 (en) | Method and system for verification of presence | |
CN106446667B (zh) | 一种密码数据处理方法、装置及设备 | |
US20150256524A1 (en) | Information processing apparatus, ic chip, and information processing method | |
CN110175475A (zh) | 一种智能卡数据处理方法、装置及计算机可读存储介质 | |
CN117916735A (zh) | 安全元件、注册令牌的方法和令牌参考注册器 | |
CN104012122A (zh) | 用于与便携式数据载体上的应用程序通信的方法以及这样的便携式数据载体 | |
EP2828813A1 (en) | External log storage in an asset storage and transfer system | |
CN103336977A (zh) | 车辆电子信息卡安全保护系统及方法 | |
CN104282098A (zh) | 一种税控装置的开票及抄税过程升级方法 | |
US10210512B2 (en) | Transaction count synchronization in payment system | |
EP2000936A1 (en) | Electronic token comprising several microprocessors and method of managing command execution on several microprocessors | |
EP2306415A1 (en) | Communication device, communication method, information processing device, information processing method, program, and communication system | |
US20140289874A1 (en) | Integrated circuit (ic) chip and method of verifying data thereof | |
CN105279670A (zh) | 基于可信服务管理平台的应用自动发布方法及系统 | |
CN113158201A (zh) | 信息的安全备份方法及装置 | |
CN113487315A (zh) | 一种账户合约的处理方法、装置、设备及存储介质 | |
CN106600406A (zh) | 一种交易方法及其终端 | |
CN103701599A (zh) | 安全设备、加密机、安全设备操作系统及操作方法 | |
CN107862358B (zh) | 综合发行智能卡的方法及装置 | |
US20150113243A1 (en) | Method for backing up data outside a secure microcircuit | |
CN112669029A (zh) | 银行卡添加方法、装置、设备及计算机可读存储介质 | |
EP2985724A1 (en) | Remote load and update card emulation support |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: French Kubeva Patentee after: Adimia - Identity and Security France Address before: Paris France Patentee before: MORPHO |