CN109325322A - 用于嵌入式平台的软件知识产权保护系统和方法 - Google Patents

用于嵌入式平台的软件知识产权保护系统和方法 Download PDF

Info

Publication number
CN109325322A
CN109325322A CN201810862498.0A CN201810862498A CN109325322A CN 109325322 A CN109325322 A CN 109325322A CN 201810862498 A CN201810862498 A CN 201810862498A CN 109325322 A CN109325322 A CN 109325322A
Authority
CN
China
Prior art keywords
instruction
encrypted
code
access
decrypted
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
CN201810862498.0A
Other languages
English (en)
Other versions
CN109325322B (zh
Inventor
Y·Y·R·卢瓦泽尔
F·莱尔米特
S·迪维托
V·阿尔巴内塞
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.)
Maxim Integrated Products Inc
Original Assignee
Maxim Integrated Products Inc
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 Maxim Integrated Products Inc filed Critical Maxim Integrated Products Inc
Publication of CN109325322A publication Critical patent/CN109325322A/zh
Application granted granted Critical
Publication of CN109325322B publication Critical patent/CN109325322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • 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
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

呈现了防止潜在攻击者以及客户对库源代码和二进制代码两者的明文版本进行访问的软件IP保护系统和方法。防止潜在攻击者在其他平台上再使用所述软件。所述保护机制不影响所述库本身的功能或性能,并且不干扰现有软件更新机制或应用开发者工具,如JTAG。

Description

用于嵌入式平台的软件知识产权保护系统和方法
发明人
扬·伊夫·雷内·卢瓦泽尔(Yann Yves Rene Loisel)
弗兰克·拉赫迈(Frank Lhermet)
史蒂法纳·迪·维托(Stéphane Di Vito)
文森特·阿尔巴纳斯(Vincent Albanese)
相关申请的交叉引用
本申请根据35U.S.C.§119要求于2017年8月1日提交的发明人为扬·伊夫·雷内·卢瓦泽尔(Yann Yves Rene Loisel)、弗兰克·拉赫迈(Frank Lhermet)、史蒂法纳·迪·维托(Stéphane Di Vito)和文森特·阿尔巴纳斯(Vincent Albanese)的题为SOFTWARE INTELLECTUAL PROPERTY PROTECTION SYSTEMS AND METHODS FOR EMBEDDEDPLATFORMS(用于嵌入式平台的软件知识产权保护系统和方法)的法国专利申请号1757380的外国优先权,所述专利申请特此通过引用以其全文结合在此。
A.技术领域
本公开涉及安全系统。更具体地,本公开涉及用于保护如微控制器等嵌入式平台中的软件知识产权(IP)的系统和方法。
B.相关技术说明
从事代码许可和销售业务的软件提供商开发有价值的专有软件,如包括知识产权的二进制代码。通常,专有软件被编译并存储在软件库中并且递送给客户,例如应用开发者,所述客户使用所述软件并将其集成到其自己的应用中。创建这种软件常常涉及花费相当多的时间和精力;然而,软件相对容易被复制、通过电子方式共享、修改并且在不同平台上再使用。由于软件提供商的业务性质,软件提供商无法完全隐藏其产品。例如,通过为了吸引潜在客户的目的而使程序的有限演示版本可用,软件提供商向第三方揭露关键信息。对于足智多谋的侵入者或者不诚实的应用开发者而言,可以使用所述信息在如服务器、计算机和嵌入式设备等众多前端处开始攻击以非法提取包含在二进制代码中的有价值IP,进而使用如反汇编等逆向工程技术并且然后应用汇编代码分析以提取关于算法的信息。
如合约协议等法律解决方案往往不是提供有效软件IP保护的充分遏制因素。此外,内在不确定性以及通过法律手段实施IP权利所需的时间和资源对专利持有人来说是一种负担,许多专利持有人觉得这由于对其业务活动具有太大的侵入性而是不可接受的。例如,对于大多数专利权人而言,在世界范围内进行专利保护的途径是极其昂贵的,并且可执行性布满了面向不同国家的专利持有人的不同问题。另外,对于更喜欢将其IP和公司专门技术保持为商业秘密的软件提供商而言,专利权授予并不是一个合适的选项。
因此,需要总是防止攻击者获得对如存储在微控制器或其他平台上的库代码的明文版本等有价值的二进制代码或源代码的访问的系统和方法。理想的保护机制将不会对资源的功能或性能例如存储器功耗具有负面影响并且将不会对现有软件更新机制、应用开发者对JTAG探头的使用或者行业的任何其他常用工具引起任何干扰。
附图说明
将参照本发明的实施例,所述实施例的示例可以在附图中予以展示。这些附图旨在是说明性的而不是限制性的。尽管总体上在这些实施例的背景下描述了本发明,但是应当理解的是,其不旨在将本发明的范围限制于这些具体实施例。
图1展示了根据本公开的各个实施例的生成经加密库并将经加密库传输到客户设备的存储器中。
图2展示了根据本公开的各个实施例的包括待保护软件IP的系统上的调试器设备的侵入作用。
图3是根据本公开的各个实施例的用于保护软件IP免于逆向工程的说明性过程的流程图。
图4是根据本公开的各个实施例的用于保护软件IP免于逆向工程的系统的示例性架构。
图5展示了根据本公开的各个实施例的在应用开发期间的受保护系统。
图6展示了根据本公开的各个实施例的其中应用试图从受保护系统中读取数据的场景。
图7描绘了根据本公开的实施例的计算系统的简化框图。
具体实施方式
在以下描述中,出于解释的目的,阐述了具体细节以提供对本发明的理解。然而,对于本领域的技术人员而言将明显的是,可以在不具有这些细节的情况下实践本发明。另外,本领域的技术人员将认识到,可以在有形计算机可读介质上以如过程、装置、系统、设备或方法等各种方式实施以下所描述的本发明实施例。
图示中所示的组件或模块说明了本发明的示例性实施例并且意在避免使本发明模糊。还应当理解的是,贯穿本讨论,组件可以被描述为可以包括子单元的单独功能单元,但是本领域的技术人员将认识到,各个组件或其部分可以被分成单独组件或者可以集成在一起,包括集成在单个系统或组件内。应当注意的是,本文讨论的功能和操作可以被实施为组件。可以在软件、硬件或其组合中实施组件。
另外,附图内的组件或系统之间的连接不旨在限于直接连接。而是,可以通过中间组件修改、重新格式化或以其他方式改变这些组件之间的数据。而且,可以使用附加连接或更少连接。还应当注意的是,术语“耦合”、“连接”或“通信地耦合”应当被理解为包括直接连接、通过一个或多个中间设备的间接连接以及无线连接。
本说明书中对“一个实施例”、“优选实施例”或“实施例(an embodiment或embodiments)”的引用意味着结合所述实施例描述的具体特征、结构、特性或功能包括在本发明的至少一个实施例中并且可以处于多于一个实施例中。而且,上述短语在本说明书中的各个地方出现不一定全都是指相同的一个或多个实施例。
在本说明书中的各个地方使用某些术语是为了说明并且不应被解释为进行限制。服务、功能或资源不限于单个服务、功能或资源;对这些术语的使用可以指可以是分散的也可以是聚集的一组相关服务、功能或资源。另外,对存储器、数据库、信息库、数据存储设备、表、硬件等的使用可以在本文中用于指可以将信息输入或以其他方式记录到其中的一个或多个系统组件。
另外,应当注意的是,本文所述的实施例是在安全微控制器的背景下给出的,但是本领域的技术人员应当认识到,本公开的教导不限于任何类型的微控制器并且同样可能引起想要在其他背景和应用中使用IP保护服务的任何软件提供商的兴趣。
在本文档中,库和库代码可以互换使用。“软件IP”包括寻求保护的任何秘密。
某些实施例公开了一种用于保护软件免于逆向工程的安全系统。所述安全系统可以包括:核,所述核耦合到指令代码总线并且被配置用于调用应用并且执行经解密指令;高速缓存,所述高速缓存耦合用于例如经由指令代码总线将所述经解密指令传送到所述核;解密引擎,所述解密引擎被配置用于对指令进行解密并且将经解密指令加载到所述高速缓存中;库存储器寄存器(LMR),所述LMR定义对于应用开发者不可访问的地址范围;非易失性存储器如外部闪存,所述非易失性存储器被配置用于将经加密指令存储在所述地址范围中并且将非经加密指令存储在第二地址范围中;以及处理器,所述处理器响应于代码被所述应用调用而判定程序计数器是否落入所述第一地址范围中,并且如果是,则将所述经加密指令传送到所述解密引擎,并且如果所述程序计数器落入所述第二地址范围中,则所述处理器将所述非经加密指令加载到所述高速缓存中,而不将所述经加密指令传送到所述解密引擎。
所述安全系统可以进一步包括:硬件,所述硬件使用跳转表来控制到所述非易失性存储器的函数和入口点之一以防止对库的访问;以及数据总线,所述数据总线用于访问所述第一地址范围中的经加密数据,由此防止对所述经加密数据的明文版本的访问。所述经加密数据可以是可执行代码或库源代码并且可以由包括安全AES引擎的控制器例如使用嵌入在硅中的密钥进行加密。
在实施例中,所述库源代码中包括经加密代码的至少一部分可以被解密并且然后使用与芯片相关联的唯一密钥进行重新加密。在实施例中,所述安全系统响应于程序计数器指向包括经加密指令的受保护范围而禁用调试启用信号以禁用由如JTAG探头等调试器设备进行的访问,从而防止对所述第一地址范围的直接存储器访问。
在实施例中,响应于所述程序计数器指向所述受保护范围之外,所述调试启用信号被启用以恢复由所述调试器设备进行的访问从而重新开始调试操作。
一些实施例公开了一种用于保护软件免于逆向工程的方法。所述方法包括:响应于代码被应用调用而判定程序计数器是否落入非易失性存储器的包括应用开发者不可访问的经加密指令、由LMR定义、并且包括用于存储非经加密指令的第二地址范围的第一地址范围中。响应于确定所述程序计数器落入所述第一地址范围中,所述经加密指令被传送到根据所述经加密指令生成经解密指令的解密引擎。在经由指令代码总线将所述经解密指令传送到执行所述经解密指令的核之前,所述经解密指令被加载到高速缓存中。最后,响应于确定所述程序计数器落入所述第二地址范围中,所述非经加密指令经由所述指令代码总线加载到所述高速缓存中,而不将所述经加密指令传送到所述解密引擎。
在实施例中,所述方法进一步包括:响应于程序计数器指向包括经加密指令的受保护范围而禁用调试启用信号以禁用由调试器设备进行的访问,从而防止对所述第一地址范围的直接存储器访问;以及响应于所述程序计数器指向所述受保护范围之外而启用所述调试启用信号以恢复由所述调试器设备进行的访问从而重新开始调试操作。
在实施例中,所述方法进一步包括:响应于由所述核作出的请求并且在将所述经解密指令加载到所述高速缓存中之前,使用所述解密引擎来开始实时解密过程。所述经解密指令可以基于例如所述解密引擎的块大小。
图1展示了根据本公开的各个实施例的生成经加密库并将经加密库传输到客户设备的存储器中。在实施例中,软件提供商可以例如在将未经加密库140递送给客户之前对所述未经加密库进行加密以生成经加密库142。然后可以以经加密格式将经加密库142递送给客户的嵌入式平台110。如此,库144被保护免于不想要的暴露,并且在客户的嵌入式平台110处使用所述软件的整个过程中从初始递送起建立了软件IP保护。
在实施例中,例如在不首先使库142的副本进入内部RAM 116中的情况下,库144被编程到存储器120中,可以从所述位置对所述库进行解密和执行。应当理解的是,库142可以被实施为存储器120中的多个库或者实施为分散式库。存储器120可以是任何类型的非易失性存储器,例如,嵌入式闪存。
应当理解的是,可以使用本领域中已知的任何加密方法102对库140进行加密例如以生成不旨在与客户共享的解密密钥,所述客户将以其他方式具有对存储在其中的专有代码的访问。在实施例中,解密密钥(例如,针对AES或任何其他对称密码算法)可以是可以由闪存控制器使用的随机(即,不可容易猜到的)密钥并且对于增强保护,可以存储在闪存120外部。
在实施例中,所生成的密钥可以嵌入在硅中,即,在芯片中。因此,由于用于从硅中提取密钥以逃避由本公开的实施例提供的保护的(时间、工具、精力等)成本大大超过对存储在软件库144中的IP进行逆向工程的成本,所以所公开的软件IP保护系统和方法的整体益处仍然是肯定的。在实施例中,可以向不同客户或用户提供不同密钥以进一步提升软件IP保护。
此外,为了便于密钥管理和定制,芯片提供商可以使用一个唯一密钥来对库144进行加密,客户可以将所述密钥编程在多个芯片上,然后可以使用局部和芯片独有的密钥来对每个不同芯片的库进行解密和重新加密,使得每个芯片都可以包括不同的图像。
图2展示了包括待保护软件IP的系统上的调试器设备的侵入作用。调试器设备256可以是用于在应用开发期间调试软件问题的JTAG探头或任何其他工具。虽然设备256可能是有帮助的调试工具,但是对设备256的使用对可以包括嵌入式平台210的芯片204具有相当的侵入性。如图2所示,调试器设备256具有对被探测平台210的几乎任何部分的访问,所述被探测平台为侵入者提供许多攻击点。此外,由于库240必须以明文运行以便可由微控制器进行读取,所以从软件开发者的角度看,由应用开发者使用调试器设备256能够实现对可能被成功攻击者盗窃的有价值代码和IP的不想要访问。
因此,将期望具有例如通过限制潜在侵入者对库代码的明文版本进行访问并且在不干扰应用开发者通过使用调试器设备256来进行故障排除和调试应用代码230的能力的情况下保护库240及其内容的解决方案。
图3是根据本公开的各个实施例的用于保护软件IP免于逆向工程的说明性过程的流程图。过程300开始于步骤302,其中,应用调用代码,例如,特定函数。
在步骤304处,响应于代码被调用而判定程序计数器是否落入存储器(例如,非易失性存储器)的包括经加密指令的第一区域中。在实施例中,包括经加密指令的区域由LMR定义。
如果程序计数器落入第一区域中,则在步骤306处,将经加密指令传送到解密引擎以获得经解密指令,并且在步骤308处,将经解密指令加载到高速缓存中。
否则,如果在步骤304处确定程序计数器未落入第一区域中,则过程300直接将非经加密指令加载到高速缓存中。
在步骤310处,经由指令代码总线将解密/非经加密指令从高速缓存传送到核例如以供立即执行。
应当注意的是:1)可以可选地执行某些步骤;2)步骤可以不限于本文所述的特定顺序;3)可以以不同的顺序执行某些步骤;并且4)可以同时进行某些步骤。
图4是根据本公开的各个实施例的用于保护软件IP免于逆向工程的系统的示例性架构。系统400包括核402、高速缓存410、安全解密引擎420、指令代码总线430、以及闪存120,例如嵌入式闪存,所述闪存进一步包括应用代码130和库代码144。在实施例中,库代码144已经被加密并且包括软件IP。
高速缓存410可以是芯片架构400的一部分并且可以例如经由指令代码总线430耦合到核402、耦合到解密引擎420、并且耦合到闪存控制器(在图4中未示出)。解密引擎420可以是嵌入在芯片中,例如在闪存控制器中的快速安全解密引擎。尽管在一些实施例中解密引擎420是AES解密引擎,但是这并不旨在限制本公开的范围,因为可以利用任何解密方法和任何解密引擎。
在操作中,在实施例中,经加密库144被编程到闪存120中在由LMR 450定义的一个或多个地址处。一旦被执行,应用就可以使核402不时地从库144中调用存储在LMR 450中的地址范围中的特定例程。在图4中,库144的包括呈经加密形式的代码的部分可以存储在闪存120中在例如两个地址0x100249与0x10040F之间的指定受保护闪存地址范围处。
在实施例中,核402可以仅在应用代码130被执行时才访问经加密库144。应用可以例如经由API(未示出)调用函数,所述函数可以是表示闪存120内的代码的指令集。在实施例中,经加密库代码144可能不可访问并且因此不可由应用开发者控制并且又与可以以明文格式存储在闪存120中的客户应用代码130共存。在实施例中,系统400执行如接下来将要描述的选择性加密和解密。
一旦核402调用代码并且程序计数器指向闪存120的已经被加密、由LMR450定义并且包括经加密指令的区域,解密引擎420就可以对那些指令执行选择性解密。解密引擎420可以是被设计用于从库144接收指令并且例如基于解密引擎420的块大小(例如,块大小为16字节)对指令进行解密的安全引擎。
在实施例中,在经解密指令例如经由指令代码总线430传递到核402以供进一步处理之前,可以首先将经解密指令存储在高速缓存410中。在实施例中,由可以被实施为访问库144中的受保护地址范围的硬件的核402作出的请求充当使解密引擎420开始此针对受保护地址范围的实时解密过程的触发事件。在实施例中,在从闪存120进行转移期间并且在数据进入高速缓存410即在闪存120外部的高速缓存之前,在指令总线430上发生解密。
在程序计数器不指向经加密区域但反而指向包括非经加密指令的区域的场景下,可以将非经加密指令直接加载到高速缓存410中,而不是传递通过解密引擎420。在任一场景下,加载到高速缓存410的指令可以经由指令代码总线430传递到执行指令的核402。
在实施例中,最终应用的二进制图像可以将明文格式的应用130与可以包括由应用使用的函数的经加密库114集成。在实施例中,可以使用间接表将调用链接到函数并且链接到库144中的地址。
应当理解的是,在系统400中,当解密引擎420执行其解密时,库144的内容可能以明文格式暴露;然而,因为相比于库144本身的内容的价值,对高速缓存410的潜在攻击的成本明显更高,所以有效地使这种攻击无价值。然而,应当注意,应用不被允许读取高速缓存410的内容。在实施例中,可以采用如反旁路攻击(anti-side-channel attack)方法等对策来阻止寻求例如通过恢复用于直接对二进制代码进行解密的解密密钥值读出高速缓存410的内容的潜在攻击者。
在实施例中,为了进一步提高安全性并防止潜在攻击者能够例如通过观察CPU行为或者通过如攻击等返回导向编程来分析库144的内容,可以使用硬件来将跳转限制于特定授权位置,如定义到受保护库144的函数或入口点(其可以分散于库144的二进制图像上)的跳转表。此外,可以使用软件来识别授权跳转并且防止对库144的直接访问。
最后,RAM 116可以包含由受保护库144处理的数据。根据关于RAM 116而做出的观察(例如,调试启用信号),为了获得关于芯片架构400的内部工作的信息的目的而可以猜到使用库144来处理的中间数据。然而,不同于库代码,通过库代码处理的数据对于攻击者来说通常不具有价值。因此,RAM 116还不会向外界泄露任何待保护信息。
图5展示了根据本公开的各个实施例的在应用开发期间的受保护系统。为了清晰起见,与图4所示组件类似的组件以相同方式标记。为了简洁的目的,描述或所述组件的功能此处不予赘述。除了图4所示的那些组件之外,
图5包括调试器设备504、调试特征530、以及调试特征启用信号502。调试特征530能够实现对存储器的访问并且在实施例中能够实现对核402的调试,例如,响应于确定程序计数器应当指向的地址而进行的调试。在实施例中,调试特征启用信号502,例如能够实现如可以停止处理器或触发调试监测异常的断点等调试事件的DBGEN信号。因此,一旦调试特征启用信号502不活动或禁用,通过与调试器设备504接口连接的端口进行的调试就不再可用。
应当注意的是,调试特征启用信号502不必连结到任何特定微控制器架构或用户实施方式并且在实施例中关闭微控制器中存在的所有调试特征。除了启用调试特征之外,调试特征启用信号502可以针对微控制器中的任何数量的独立调试引擎,例如,一个驱动CPU核(断点、逐步执行、寄存器转储等)、一个驱动存储器访问(独立于CPU核)、一个驱动一些外围设备、等等。
在实施例中,调试特征启用信号502可以由微控制器或其各个子部分提供,如核402或可以提供/实现对调试器设备504的直接存储器访问的调试控制器。调试器设备504可以是本领域中已知的任何调试工具——通常为运行某种类型的调试软件的硬件设备——例如,在应用开发期间的JTAG会话中执行读取和写入操作的JTAG探头。
以与图4中的架构的操作类似的方式,当程序计数器未处于闪存120的由LMR 450定义的范围中时,执行常规操作,包括经由指令代码总线430从闪存120中取出代码以及将代码移动到高速缓存410和核402,即,而不利用由解密引擎420提供的解密操作。
在实施例中,一旦调试器设备504耦合到系统500并且程序计数器处于LMR450范围中,即处于包括经加密指令的受保护范围中,调试特征启用信号502就被禁用。因此,例如当来自受保护范围的库代码被执行时,不向调试器设备504报告信息。在实施例中,LMR范围内的断点被忽略,实际上在对库代码的执行期间禁用任何调试特征和对存储器内容的读取访问以保护库144并且允许库代码在不中断的情况下执行或者由调试器设备504逐步执行,这可以以其他方式用于提取关于被执行指令的线索。例如,即使被执行指令无法被读取,许多寄存器也可以被转储,并且指令的副作用可以由有动机的攻击者观察和分析。
在实施例中,当已经被调用的函数未落入库144的受保护范围中使得程序计数器指向受保护区域外部时,可以通过重新启用调试特征启用信号502来恢复调试访问。因此,应用开发者可以继续添加断点并且重新开始执行对代码的逐步调试。
在实施例中,一旦解密引擎420对库中的代码进行解密以供指令执行,就可以像往常一样调试客户应用,而不会对系统性能(例如,ARM核)产生任何影响或损失,而受保护代码可以在不透明的不可中断环境中运行。在实施例中,适当的指令高速缓存410大小例如通过减少某些指令必须被加载到待解密的高速缓存410中的次数来有效地隐藏解密处理成本。
在系统500通过禁用调试特征启用信号502从原始模式(即,解密设备被绕过)切换为受保护模式的场景下,到调试器设备504的通信可能丢失。因此,应当使调试器设备504对于处置和恢复这种潜在的连接损失来说具有鲁棒性。
本领域的技术人员将理解的是,本文呈现的保护系统和方法同样可以应用于存储在外部闪存设备中的受保护代码(例如,软件库)。本领域的技术人员将进一步理解的是,所述保护机制可以用于保护第三方代码。例如,如果解密密钥保护在芯片中而不是在闪存120中,则即使闪存120位于系统500的外部并且因此对潜在攻击者来说可易于访问,包含在闪存120中的数据也将不会以其经加密格式向敌对者揭露任何有用数据。
图6展示了根据本公开的各个实施例的其中应用试图从受保护系统中读取数据的场景。图4中的相同数字表示类似元件。除了指令代码总线430之外,图6中的系统600还包括可以将核402耦合到闪存120的数据代码总线602。核402可以基于任何架构,例如,实施如指令代码总线430和数据代码总线602等两条总线的哈佛结构(Harvard architecture)。
在实施例中,数据代码总线602在原始模式下提供对闪存120的内容的访问,在所述原始模式下,在数据代码总线602上不发生解密处理。在应用试图访问库144和存储于其中的库代码例如以发起存储器转储的场景下,由于数据将必须流过数据代码总线602,由此跳过通过解密引擎420的路径,所以在库144中访问的数据将保持处于其经加密格式并且将以明文写为“按照原样(as is)”,这是因为数据文本还未经历由解密引擎420进行的解密。因此,为了通过数据代码总线602路径对闪存120进行读出的目的而进行的任何存储器读取访问将导致不会产生对经解密数据的访问的明文访问。这确保了库144的待保护内容将保持安全。
在实施例中,指令总线430专用于取出指令以供执行,使得指令无法通过此通道转储,而是仅仅被执行。在实施例中,数据代码总线602专用于取出数据并将数据存储在各个存储器位置或内部核寄存器中。在执行指令期间,可能涉及数据代码总线602,例如因为指令可能需要存储器转移,所述存储器转移可能需要通过数据代码总线602进行读取或写入。在实施例中,数据代码总线602可以使用未链接到解密引擎420并且与由指令代码总线430使用的指令高速缓存分离的数据高速缓存(两个高速缓存在图6中都未示出)。
在实施例中,可以使用写入操作控制闪存120中的写入操作,使得可以防止用户对闪存120的某些区域进行重新编程。此外,更新编程可以通过认证机制进行控制。
本专利文档的方面涉及信息处置系统。为了本公开的目的,信息处置系统可以包括可操作用于算出、计算、确定、分类、处理、传输、接收、检索、引起、路由、切换、存储、显示、传送、彰显、检测、记录、再现、处置或利用用于业务、科学、控制或其他目的的任何形式的信息、情报或数据的任何工具或工具集合。例如,信息处置系统可以是个人计算机(例如,台式计算机或膝上型计算机)、平板计算机、移动设备(例如,个人数字助理(PDA)或智能电话)、服务器(例如,刀片服务器或机架式服务器)、网络存储设备、或任何其他适当设备,并且尺寸、形状、性能、功能和价格可以变化。信息处置系统可以包括随机存取存储器(RAM)、如中央处理单元(CPU)或硬件或软件控制逻辑等一个或多个处理资源、ROM、和/或其他类型的非易失性存储器。信息处置系统的附加组件可以包括一个或多个磁盘驱动器、用于与外部设备通信的一个或多个网络端口、以及各种输入和输出(I/O)设备,如键盘、鼠标、触摸屏和/或视频显示器。信息处置系统还可以包括可操作用于在各个硬件组件之间传输通信的一条或多条总线。
图7描绘了根据本发明的实施例的计算系统的简化框。将理解的是,系统700的所示功能可以操作以支持信息处置系统的各个实施例,但是应当理解的是,信息处置系统可以以不同方式配置并且包括不同的组件。如图7所示,系统700包括中央处理单元(CPU)701,所述CPU提供计算资源并且控制计算机。CPU 701可以使用微处理器等来实施并且还可以包括图形处理器和/或用于数学计算的浮点处理器。系统700还可以包括系统存储器702,所述系统存储器可以采用随机存取存储器(RAM)和只读存储器(ROM)的形式。
还可以提供多个控制器和外围设备,如图7所示。输入控制器703表示到如键盘、鼠标或触笔等各个输入设备704的接口。还可以存在与扫描器706通信的扫描器控制器705。系统700还可以包括用于与一个或多个存储设备708接口连接的存储控制器707,所述一个或多个存储设备中的每一个都包括如磁带或磁盘等存储介质、或者可以用于记录用于操作可以包括实施本发明的各个方面的程序的实施例的系统、实用程序和应用的指令的程序的光学介质。(多个)存储设备708还可以用于存储经处理数据或者将根据本发明处理的数据。系统700还可以包括用于提供到显示设备711的接口的显示控制器709,所述显示设备可以是阴极射线管(CRT)、薄膜晶体管(TFT)显示器或者其他类型的显示器。计算系统700还可以包括用于与打印机713通信的打印机控制器712。通信控制器714可以与一个或多个通信设备715接口连接,其使系统700能够通过各种网络中的任何网络或者通过任何适当的电磁载波信号包括红外信号连接到远程设备,所述各种网络包括互联网、以太网云、以太网光纤通道(FCoE)/数据中心桥接(DCB)云、局域网(LAN)、广域网(WAN)、存储区域网(SAN)。
在所示系统中,所有主要系统组件可以链接到总线716,所述总线可以表示多于一条物理总线。然而,各个系统组件可以或者可以不在物理上彼此靠近。例如,输入数据和/或输出数据可以远程地从一个物理位置传输到另一个。此外,实施本发明的各个方面的程序可以通过网络从远程位置(例如,服务器)访问。这种数据和/或程序可以通过各种机器可读介质中的任何机器可读介质输送,所述机器可读介质包括但不限于:磁性介质,如硬盘、软盘和磁带;光学介质,如CD-ROM和全息设备;磁光介质;以及被专门配置用于存储或用于存储和执行程序代码的硬件设备,如专用集成电路(ASIC)、可编程逻辑器件(PLD)、闪存设备、以及ROM和RAM设备。
可以使用使一个或多个处理器或处理单元使步骤被执行的指令将本发明的实施例编码在一个或多个非暂态计算机可读介质上。应当注意的是,所述一个或多个非暂态计算机可读介质应当包括易失性和非易失性存储器。应当注意的是,替代性实施方式是可能的,包括硬件实施方式或软件/硬件实施方式。硬件实施的功能可以使用(多个)ASIC、可编程阵列、数字信号处理电路系统等来实现。因此,任何权利要求中的“装置”术语都旨在覆盖软件实施方式和硬件实施方式两者。类似地,如本文使用的术语“一个或多个计算机可读介质”包括具有在其上具体化的指令程序的软件和/或硬件或其组合。考虑到这些实施方式替代方案,将理解的是,附图及随附描述提供了本领域的技术人员写入程序代码(即,软件)和/或制造电路(即,硬件)以执行所需处理将需要的功能信息。
应当注意的是,本发明的实施例可以进一步涉及具有非暂态有形计算机可读介质的计算机产品,所述非暂态有形计算机可读介质在其上具有用于执行各种计算机实施的操作的计算机代码。介质和计算机代码可以是专门设计和构造用于本发明的目的的介质和计算机代码,或者其可以属于相关领域的技术人员熟知或可用的种类。有形计算机可读介质的示例包括但不限于:磁性介质,如硬盘、软盘和磁带;光学介质,如CD-ROM和全息设备;磁光介质;以及被专门配置用于存储或用于存储和执行程序代码的硬件设备,如专用集成电路(ASIC)、可编程逻辑器件(PLD)、闪存设备、以及ROM和RAM设备。计算机代码的示例包括如由编译器产生的机器代码以及包含由计算机使用解释器执行的高级代码的文件。本发明的实施例可以全部或部分地实施为可以处于由处理设备执行的程序模块中的机器可执行指令。程序模块的示例包括库、程序、例程、对象、组件、以及数据结构。在分布式计算环境中,程序模块可以物理地位于本地、远程或两者的环境中。
本领域的技术人员将认识到,对于实践本发明而言,计算系统或编程语言并不关键。本领域的技术人员还将认识到,上述多个元件可以物理地和/或功能上分离成子模块或组合在一起。
应当注意的是,以下权利要求的元件可以以不同方式安排,包括具有多种相关性、配置和组合。例如,在实施例中,各项权利要求的主题可以与其他权利要求组合。
对于本领域的技术人员而言,将理解的是,前述示例和实施例是示例性的并且不限制本发明的范围。意图是,在阅读本说明书和研究附图之后对本领域的技术人员而言显而易见的所有排列、增强、等效物、组合以及对其的改进包括在本发明的真实精神和范围内。

Claims (20)

1.一种用于保护软件免于逆向工程的方法,所述方法包括:
响应于代码被应用调用而判定程序计数器是否落入非易失性存储器的包括应用开发者不能够访问的经加密指令并且由库存储器寄存器(LMR)定义的第一地址范围中,所述非易失性存储器进一步包括用于存储非经加密指令的第二地址范围;
响应于确定所述程序计数器落入所述第一地址范围中而将所述经加密指令传送到根据所述经加密指令生成经解密指令的解密引擎;
在经由指令代码总线将所述经解密指令传送到执行所述经解密指令的核之前将所述经解密指令加载到高速缓存中;以及
响应于确定所述程序计数器落入所述第二地址范围中而经由所述指令代码总线将所述非经加密指令加载到所述高速缓存中,而不将所述经加密指令传送到所述解密引擎。
2.根据权利要求1所述的方法,进一步包括:响应于程序计数器指向包括经加密指令的受保护范围而禁用调试启用信号以便禁用由调试器设备进行的访问,从而防止对所述第一地址范围的直接存储器访问。
3.根据权利要求2所述的方法,进一步包括:响应于所述程序计数器指向所述受保护范围之外而启用所述调试启用信号以便恢复由所述调试器设备进行的访问从而重新开始调试操作。
4.根据权利要求3所述的方法,其中,所述调试器设备是JTAG探头。
5.根据权利要求1所述的方法,进一步包括:响应于由所述核作出的请求并且在将所述经解密指令加载到所述高速缓存中之前,使用所述解密引擎来开始实时解密过程。
6.根据权利要求1所述的方法,其中,所述经解密指令基于所述解密引擎的块大小。
7.根据权利要求1所述的方法,进一步包括:硬件,所述硬件使用跳转表来控制到所述非易失性存储器的函数和入口点之一以防止对库的访问。
8.根据权利要求1所述的方法,进一步包括:经由数据总线访问所述第一地址范围中的经加密数据以防止对所述经加密数据的明文版本的访问。
9.根据权利要求1所述的方法,其中,所述非易失性存储器是外部闪存。
10.根据权利要求1所述的方法,其中,所述经加密数据是可执行代码和库源代码之一。
11.根据权利要求1所述的方法,进一步包括:使用包括安全AES引擎的控制器来利用密钥对数据进行加密。
12.根据权利要求12所述的方法,其中,所述密钥嵌入在硅中。
13.根据权利要求1所述的方法,其中,所述库源代码中包括经加密代码的至少一部分被解密,并且然后被使用与芯片相关联的唯一密钥进行重新加密。
14.一种用于保护软件免于逆向工程的安全系统,所述安全系统包括:
核,所述核耦合到指令代码总线,所述核被配置用于调用应用并且执行经解密指令;
高速缓存,所述高速缓存耦合用于经由指令代码总线将所述经解密指令传送到所述核;
解密引擎,所述解密引擎耦合到所述高速缓存和所述核,所述解密引擎被配置用于对指令进行解密并且将经解密指令加载到所述高速缓存中;
库存储器寄存器(LMR),所述LMR定义应用开发者不能够访问的第一地址范围;
非易失性存储器,所述非易失性存储器被配置用于将经加密指令存储在所述第一地址范围中并且将非经加密指令存储在第二地址范围中;以及
一个或多个处理器,所述一个或多个处理器响应于代码被所述应用调用而判定程序计数器是否落入所述第一地址范围中,并且如果是,则将所述经加密指令传送到所述解密引擎,并且如果所述程序计数器落入所述第二地址范围中,则将所述非经加密指令加载到所述高速缓存中,而不将所述经加密指令传送到所述解密引擎。
15.根据权利要求14所述的安全系统,进一步包括:硬件,所述硬件使用跳转表来控制到所述非易失性存储器的函数和入口点之一以防止对库的访问。
16.根据权利要求14所述的安全系统,进一步包括:数据总线,所述数据总线用于访问所述第一地址范围中的经加密数据,从而防止对所述经加密数据的明文版本的访问。
17.根据权利要求14所述的安全系统,其中,响应于程序计数器指向包括经加密指令的受保护范围,调试启用信号被禁用以便禁用由调试器设备进行的访问,从而防止对所述第一地址范围的直接存储器访问。
18.根据权利要求17所述的安全系统,其中,响应于所述程序计数器指向所述受保护范围之外,所述调试启用信号被启用以便恢复由所述调试器设备进行的访问从而重新开始调试操作。
19.根据权利要求18所述的安全系统,其中,所述调试器设备是JTAG探头。
20.根据权利要求14所述的安全系统,其中,所述非易失性存储器是外部闪存。
CN201810862498.0A 2017-08-01 2018-08-01 用于嵌入式平台的软件知识产权保护系统和方法 Active CN109325322B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1757380A FR3069935A1 (fr) 2017-08-01 2017-08-01 Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
FR1757380 2017-08-01

Publications (2)

Publication Number Publication Date
CN109325322A true CN109325322A (zh) 2019-02-12
CN109325322B CN109325322B (zh) 2024-01-02

Family

ID=60955118

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810862498.0A Active CN109325322B (zh) 2017-08-01 2018-08-01 用于嵌入式平台的软件知识产权保护系统和方法

Country Status (3)

Country Link
US (1) US11023567B2 (zh)
CN (1) CN109325322B (zh)
FR (1) FR3069935A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3087020A1 (fr) * 2018-10-09 2020-04-10 Stmicroelectronics (Grenoble 2) Sas Procede d'acces a une memoire
US11443071B2 (en) * 2020-02-13 2022-09-13 SiFive, Inc. Secure debug architecture
CN112069506B (zh) * 2020-09-16 2024-02-23 地平线(上海)人工智能技术有限公司 一种安全启动方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1309351A (zh) * 2000-02-14 2001-08-22 株式会社东芝 抗干预微处理器
CN1668990A (zh) * 2002-07-09 2005-09-14 富士通株式会社 开放型通用抗攻击cpu及其应用系统
US20070074046A1 (en) * 2005-09-23 2007-03-29 Czajkowski David R Secure microprocessor and method
CN102197382A (zh) * 2008-10-23 2011-09-21 美信集成产品公司 多层内容保护微控制器
CN103761456A (zh) * 2013-10-12 2014-04-30 利尔达科技集团股份有限公司 一种单片机核心代码防破解的方法
CN105227565A (zh) * 2015-10-13 2016-01-06 北京娜迦信息科技发展有限公司 用于安卓系统的防逆向破解共享对象文件的方法和装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525599A (en) * 1982-05-21 1985-06-25 General Computer Corporation Software protection methods and apparatus
US4558176A (en) * 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US4573119A (en) * 1983-07-11 1986-02-25 Westheimer Thomas O Computer software protection system
US6272637B1 (en) * 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US7987510B2 (en) * 2001-03-28 2011-07-26 Rovi Solutions Corporation Self-protecting digital content
US7089419B2 (en) * 2002-04-18 2006-08-08 International Business Machines Corporation Control function with multiple security states for facilitating secure operation of an integrated system
EP1717723A1 (en) * 2005-04-29 2006-11-02 ST Incard S.r.l. Improved virtual machine or hardware processor for IC-card portable electronic devices
US8473754B2 (en) 2006-02-22 2013-06-25 Virginia Tech Intellectual Properties, Inc. Hardware-facilitated secure software execution environment
CN101501639A (zh) * 2006-08-15 2009-08-05 皇家飞利浦电子股份有限公司 快闪存储器存取电路
US8307215B2 (en) * 2008-01-23 2012-11-06 Noam Camiel System and method for an autonomous software protection device
US8736626B2 (en) * 2008-08-26 2014-05-27 Matrox Graphics Inc. Method and system for cryptographically securing a graphics system
US8578175B2 (en) * 2011-02-23 2013-11-05 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US8914648B1 (en) * 2009-08-17 2014-12-16 Sandia Corporation Stateless and stateful implementations of faithful execution
US9967092B2 (en) * 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US9892283B2 (en) * 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US8639945B2 (en) * 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
JP5984625B2 (ja) * 2012-10-31 2016-09-06 ルネサスエレクトロニクス株式会社 半導体装置及び暗号鍵書き込み方法
US9881161B2 (en) 2012-12-06 2018-01-30 S-Printing Solution Co., Ltd. System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
US20160085695A1 (en) * 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region
JP6476098B2 (ja) 2015-09-15 2019-02-27 ルネサスエレクトロニクス株式会社 半導体装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1309351A (zh) * 2000-02-14 2001-08-22 株式会社东芝 抗干预微处理器
CN1668990A (zh) * 2002-07-09 2005-09-14 富士通株式会社 开放型通用抗攻击cpu及其应用系统
US20070074046A1 (en) * 2005-09-23 2007-03-29 Czajkowski David R Secure microprocessor and method
CN102197382A (zh) * 2008-10-23 2011-09-21 美信集成产品公司 多层内容保护微控制器
CN103761456A (zh) * 2013-10-12 2014-04-30 利尔达科技集团股份有限公司 一种单片机核心代码防破解的方法
CN105227565A (zh) * 2015-10-13 2016-01-06 北京娜迦信息科技发展有限公司 用于安卓系统的防逆向破解共享对象文件的方法和装置

Also Published As

Publication number Publication date
US20190042712A1 (en) 2019-02-07
CN109325322B (zh) 2024-01-02
FR3069935A1 (fr) 2019-02-08
US11023567B2 (en) 2021-06-01

Similar Documents

Publication Publication Date Title
USRE40405E1 (en) Method and apparatus for securing executable programs against copying
US11841956B2 (en) Systems and methods for data lifecycle protection
US10152602B2 (en) Protecting state information for virtual machines
CN100580682C (zh) 安全地保存和还原安全程序加载程序上下文的系统及方法
EP2023248B1 (en) Data processing device, method, program, integrated circuit, and program generating device
US8498418B2 (en) Conversion of cryptographic key protection
US20070101158A1 (en) Security region in a non-volatile memory
CN104156642A (zh) 一种基于安全触控屏控制芯片的安全密码输入系统和方法
CN110210190A (zh) 一种基于二次汇编的代码混淆方法
CN102918539A (zh) 用于保护重放内容的方法和装置
JP2012234362A (ja) 情報処理装置、セキュアモジュール、情報処理方法、および情報処理プログラム
CN107066887A (zh) 具有敏感数据访问模式的处理装置
CN109325322A (zh) 用于嵌入式平台的软件知识产权保护系统和方法
US20120233671A1 (en) System and method for selective protection of information elements
CN109284585A (zh) 一种脚本加密方法、脚本解密运行方法和相关装置
JP3683031B2 (ja) プログラム保護装置
EP3913513A1 (en) Secure debug of fpga design
US8948381B2 (en) Conditional key generation based on expiration date of data
CN106326733A (zh) 管理移动终端中应用的方法和装置
Papadopoulos et al. No sugar but all the taste! memory encryption without architectural support
KR102584506B1 (ko) 가상 기계들을 위한 상태 정보 보호
Kumar et al. Hardware-assisted mechanisms to enforce control flow integrity: A comprehensive survey
JP4229330B2 (ja) 暗号プログラム生成装置及び暗号プログラム生成方法
CN118133326B (zh) 一种基于芯片的数据加密传输系统
JP2010134572A (ja) セキュリティを実現する装置、および方法

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