CN102483790B - 利用白盒密码术的联锁二进制保护 - Google Patents

利用白盒密码术的联锁二进制保护 Download PDF

Info

Publication number
CN102483790B
CN102483790B CN201080030733.XA CN201080030733A CN102483790B CN 102483790 B CN102483790 B CN 102483790B CN 201080030733 A CN201080030733 A CN 201080030733A CN 102483790 B CN102483790 B CN 102483790B
Authority
CN
China
Prior art keywords
conversion
code
key
application
white box
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.)
Expired - Fee Related
Application number
CN201080030733.XA
Other languages
English (en)
Other versions
CN102483790A (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.)
Ai Dide Technology Co., Ltd.
Original Assignee
Ai Dide Technology Co Ltd
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 Ai Dide Technology Co Ltd filed Critical Ai Dide Technology Co Ltd
Publication of CN102483790A publication Critical patent/CN102483790A/zh
Application granted granted Critical
Publication of CN102483790B publication Critical patent/CN102483790B/zh
Expired - Fee Related 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs
    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/603Digital right managament [DRM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

一种将包括二进制代码和任选关联数据的软件应用从原形式转换为更安全形式的系统和方法。该方法包括对该应用执行二进制转化的组合,并且通过在所述转化之间生成并设置依存性来联锁转化,其中转化是对应用的不可逆变化。不同类型的转化可应用于应用的各种粒度。转化还被应用到应用代码和被植入的代码上。结果是被转换的软件应用语义等同于原软件应用但是抵抗静态和/或动态攻击。

Description

利用白盒密码术的联锁二进制保护
技术领域
本发明概括地涉及密码术和计算机安全。更具体地,本发明涉及用于保护二进制应用免受静态和动态攻击的方法。本申请要求于2009年5月6日提交的第61/175,945号美国临时申请的优先权,该申请的全部内容通过引用并入本文。
背景技术
在信息技术时代,越来越多的应用将被运用在对直接攻击完全开放的数以亿计的装置上。停止并阻止攻击成为软件设计者关注的重点。如今的软件正被越来越复杂的工具破解,这使得一般用户仅利用很少的现有知识或者无需现有知识就可访问敏感信息。先前的安全模式假设如果受保护过程在黑盒中运行,则输出就是安全的(即,攻击者不能查看黑盒内运行的过程),但这种模式不再有效。根据攻击的性质,安全漏洞被攻击者利用,从而侵害了一个或多个安全性能。
通常,类似调试的活动代表最常见的、允许黑客理解应用的全部或详细操作的攻击来源。一旦黑客可访问重要的数据和代码,则计算出攻击点以进行其进一步的攻击只是时间问题。随后,攻击者通过执行克隆程序、通过使二进制程序出错或者简单地通过准予访问敏感信息或版权信息(部分或全部复制关键代码)来损害系统安全性。
此外,现代操作系统包含向例如内存提升(memorylifting)攻击的其它攻击提供良好供应库(arsenal)的特征。攻击者能够利用由操作系统提供的任务管理应用程序界面(API)。例如,将每个多进程操作系统的特有进程终止的API允许攻击者在该过程冻结在存储器中时访问重要信息。
虽然软件安全性需要解决所有这些攻击,但是目前的安全引擎忽略了许多安全因素,并使得安全引擎仅集中于特定的安全考虑而完全忽略了其它的安全威胁。
例如,反调试技术仅对调试器的存在进行检测,而不能保护应用免受内存提升攻击。密码术隐藏重要信息,但是不能对其内部和其自身进行保护而免受调试活动。另一有益的示例是保护应用免受篡改攻击的完整性验证,但是不能阻止静态或动态分析攻击。作为通用的范例,每一种安全技术解决一个或一些攻击,而不是整个攻击领域。
因此,期望提供一种安全系统,其提供抵御各种攻击领域的保护。此外,提出了软件模糊和转换技术以转换应用的源代码。然而,本发明提出了一种包括应用二进制级别转换的改进的安全措施,其包括在源代码已被编译后应用二进制级别转换。
发明内容
本发明的目的是消除或减缓先前的安全系统中至少一个缺陷。
本发明的一个方面提供一种保护包括二进制代码及任选关联数据的软件应用从原形式至更安全形式的方法,该更安全形式抵抗试图篡改、逆向改造或提升该应用的全部或部分的静态和/或动态攻击,所述系统包括:
a.提供构建时工具组以对所述应用执行二进制转化准备,并且通过利用该工具组将所述应用的原执行转换成安全的执行;以及
b.产生语义等同于原应用、包括联锁的转化执行的受保护应用,该联锁的转化执行还与转化准备联锁,以使得二进制保护不再与受保护的应用分离。
在这个文本中术语“语义等同”应解释为“产生相同的结果或输出”。
转化是对应用的一种变化,其不只包括简单转换,在这个意义上转换通常包括这样的操作,其中存在逆操作以将该转换引起的变化逆转,而转化代表没有简单逆操作的更明显的变化。转化包括两个阶段:
-转化准备,其在构建时期间将一系列变化应用到应用代码上,并且植入与已改变的应用代码紧密相关(intertwine)的新代码;以及
-转化执行,其在执行包括被植入代码的受保护应用期间进行已准备好的转化保护。
限定于(A)中的不同类型的转化被应用于应用的各种粒度(granularity),该粒度包括:包括应用的模块、包括模块的函数、包括函数的指令基础块、以及单个机器指令。不同类型的转化包括:模块转化、函数转化、块转化、指令转化、完整性验证(IV)转化以及反调试转化。转化合并有一种或多种白盒转换。
保护过程被分成两个阶段:
(A)构建时阶段,其中软件应用在执行之前被静态分析并转换;以及
(B)运行时阶段,其中被转换的软件应用在存储器中运行。
本发明的一个方面提供了一种将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法,该安全形式抵抗试图篡改、逆向改造或提升所述应用全部或部分的静态和/或动态攻击,所述方法包括:
在构建时阶段通过对所述二进制应用代码产生一系列变化以产生被改变的二进制应用代码,以对所述二进制软件应用执行多个二进制转化的组合,所述变化包括在构建时期间植入与所述被改变的二进制应用代码紧密相关的新代码;以及
通过在所述转化之间生成并设置依存性来联锁所述转化;
应用所述转化的组合并联锁至待保护的二进制应用代码和被植入的代码;以及
产生语义等同于原应用但包括所述已联锁转化的受保护应用,以使得所述二进制保护不再与受保护应用分离。
发明的另一方面提供了将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法,该安全形式抵抗试图篡改、逆向改造或提升该应用的全部或部分的静态和/或动态攻击,所述方法包括:
分析所述二进制应用以确定至少一种二进制应用能够应用于其上的所述应用中的至少一个组件,所述组件包括组件代码;
对所述组件代码执行一系列变化以产生被改变的组件代码,所述变化包括:对所述组件代码应用至少一种WB转换以及将与所述转换紧密相关的新代码植入所述二进制应用代码中;
通过在所述变化之间生成并设置依存性来联锁所述变化;以及
应用所述变化并且联锁至待保护的二进制应用代码和被植入的代码,以产生语义等同于原应用但包括所述联锁转换的已转化应用,以使得二进制保护不再与受保护应用分离。
优选地,所述受保护应用的安全执行包括联锁的转化执行,其被配置使得在其执行的任何时间过程中仅一小部分的二进制代码处于清除形式。
在构建时,该系统能够与白盒转换构建时设备交互以生成并集合白盒转换密钥和操作代码,并且通过执行具有白盒转换构建时密钥的白盒转换操作来将所述二进制代码和相关的重要信息从输入形式转换为输出形式。
在运行时,该系统能够与白盒转换运行时设备交互,通过执行具有白盒转换运行时密钥的白盒转换逆操作以将二进制代码和相关的重要信息从输出形式转换回输入形式。
在回顾了本发明的特定实施方式的下列描述连同附图之后,本发明的其它方面和特征对本领域普通技术人员来说将变得显而易见。
附图说明
图1示出了根据本发明的示例性实施方式的自动白盒(WB)代码生成的WB过程;
图2示出了根据本发明的示例性实施方式用于转换和逆转换过程的自动白盒密钥生成;
图3描绘了根据本发明的示例性实施方式提出的自动被插入受保护的二进制应用中作为联锁的安全层、具有首要安全组件的二进制保护系统;
图4示出了根据本发明的示例性实施方式作为预链接保护过程的一部分的、包括使用代码转换器的保护过程的示意图;
图5示出了根据本发明的示例性实施方式源代码转换如何被应用到由待保护的应用所使用的代码以及包括二进制保护技术的代码上;
图6示出了根据本发明的示例性实施方式在构建时处理之后的受保护二进制应用模块的结构;
图7示出了根据本发明的示例性实施方式输入为二进制应用的保护流程;
图8描绘了根据本发明的示例性实施方式块转化组件的保护流程;
图9示出了根据本发明的示例性实施方式具有模块转化组件的保护过程;
图10示出了根据本发明的示例性实施方式具有对试图修改受保护应用的行为的篡改攻击进行检测的完整性验证组件的保护过程;
图11是根据本发明的示例性实施方式,在运行时受保护应用如何安全执行的全貌图;
图12示出了根据本发明的示例性实施方式在运行时执行期间的模块转化(MT)组件;
图13示出了根据本发明的示例性实施方式的完整性验证组件的运行时过程;
图14通过示出具有和没有IV的运行时函数处理的自动IV调用的示例描绘了根据本发明的示例性实施方式;
图15示出了根据本发明的示例性实施方式在运行时执行期间的函数转化(FT)组件;
图16示出了根据本发明的示例性实施方式的块转化(BT)的运行时过程;
图17示出了根据本发明的实施方式受保护应用在执行的不同时刻处的示例;
图18示出了根据本发明的实施方式的动态函数加载的构建时过程;
图19描述了根据本发明的实施方式的动态函数加载的运行时过程;
图20示出了根据本发明的实施方式的动态函数加载的过程的第一阶段的示例;
图21示出了根据本发明的实施方式的动态函数加载的过程的第二阶段的示例;
图22示出了根据本发明的实施方式的动态函数加载的过程的第三阶段的示例;
图23示出了根据本发明的实施方式的动态函数加载的过程的第四阶段的示例;
图24示出了根据本发明的实施方式的最终阶段,其中调用应用可请求安全地消除函数;
图25示出了根据本发明的实施方式,关于具有代码转化和联锁的动态函数加载的构建时过程的示例;
图26描绘了根据本发明的实施方式的BT和IV组件的已联锁形式;
图27示出了根据本发明的实施方式的密钥分拆的示例,其中在保护时,隐藏的解密密钥被分解;
图28示出了根据本发明的实施方式形成相继嵌套层的程序的不同粒度或组件;
图29示出了根据本发明的示例性实施方式的相继嵌套层以及转化如何被应用于其上。
具体实施方式
概括地,本发明提供了用于将包括二进制代码及可选关联数据的软件应用从原形式转换为更安全形式的系统和方法。该方法包括对应用执行二进制转化的组合,以及通过在转化之间生成并布置相互依赖性来将转化联锁,其中转化实际上是应用的不可逆变化。事实上,关于所包含的难度,已联锁的转化组合对应用产生转化,这种转化实际上是不可逆的,这是因为联锁不仅使所应用转换的逆向改造变得困难,而且简单地应用逆向转换也不能恢复原代码。需要明确,不可逆不一定意味着整个过程在形而上学的意义下都不能被逆转,而是意味着实际上来说,将转化逆向不会将用于保护目的所提交的精确原程序恢复。不同类型的转化被应用于应用的各种粒度或层中。转化被应用于应用代码以及植入的代码。这样的结果是被转换的软件应用在语义上相当于原软件应用但对静态和/或动态攻击有抵抗力。注意使用术语“植入(implant)”以阐明过程通常不仅包括代码的简单插入。使用“植入”来包括对原代码的替代和/或修改,以使被插入的新代码能够在已改变的应用中运行。
如上所述,本发明应用了各种粒度或层上的转换组合,这些转换组合是联锁的以使得没有简单的逆转换。图28示出了这些不同的粒度,其形成相继嵌套层。应用601能包括一个或多个模块610,模块610封装(encapsulate)一个或多个函数620,函数620封装一个或多个块630,块630能封装一个或多个指令640。本发明的实施方式将不同的转换应用于这些相继嵌套层中的每一层,并且还在它们之间增加依存性。
本发明的实施方式在消除安全架构差距的后链接二进制保护系统内将各种技术结合并互连。连同白盒密码术,本发明的实施方式允许一种包括被应用到待保护代码的二进制转化的组合的防御策略。在共同拥有的第7,397,916号美国专利和第11/020,313号美国专利申请中公开了白盒密码术的实施方式,该专利和专利申请的全部内容通过引用并入本文;在共同拥有的第6,594,761号、第6,779,114号和第6,842,862号美国专利,以及第11/039,817号美国专利申请中也公开了白盒密码术的实施方式,这些专利和专利申请的全部内容通过引用并入本文。
这些转化描述如下:
●反调试转化(AD)检查受保护应用是否被附接至调试器。
●块转化(BT)在受保护应用在存储器中运行时提供抵御动态代码分析和攻击的二进制保护。其主要任务包括将二进制应用分拆成白盒转换的块,然后在运行时经请求将转换除去并在执行后将块毁坏。因此,仅当前执行的代码块被暴露。
●函数转化(FT)充当块转化,但是将白盒转换应用到能包含许多函数块的函数中,并且在运行时调用函数时除去该转换,并且从该函数返回之后毁坏该函数。
●完整性验证转化(IV)确保受保护应用在存储器中的代码段或者其组件中的任何一个没有被篡改和/或应用组件的磁盘图像没有被修改。
●模块转化(MT)在二进制代码被加载存储器之前提供抵御静态代码分析和攻击的二进制保护。
●指令转化(IT)利用白盒转换修改单个指令以使得指令必须具有在执行之前除去的转换。此外,这些变化甚至可以包括改变受保护的指令自身(例如,将进入和退出处理器插入或者通过请求由从其初始值改变的指令所操控的地址)。
实施方式允许选择一组安全选项,这组安全选项确定这些转化如何优选地自动应用到处于联锁形式的二进制应用模块上。通过联锁,在应用中产生依存性,以使得在最终被转换的应用中已联锁的两个组件中的每一个都需要另一个的存在。例如,完整性验证调用被嵌入块或函数的每次执行,以使得如果没有成功的IV调用,则块或函数就不再正确运行,而且IV调用仅当块或函数没有被篡改时成功。此外,安全组件自身得到其他安全组件的保护(即,完整性验证保护函数转化引擎,而块转化保护完整性验证)。
除了反调试之外,以上提出的转化能够利用白盒转换以增加安全性。白盒转换通过以下事实来识别,即如果应用被暴露给攻击者,密钥和转换算法也得到保护。然而,由于数学转换被应用到仅由转换代码已知的密钥上,所以密钥决不会处于清除形式。图1和2描绘了这个规则中引起的白盒技术。
图1示出了用于转换和逆转换过程的自动代码生成10,而图2示出了用于转换15和逆转换20过程的自动白盒密钥生成。从相同的密钥和转换算法25生成WB逆转换代码20以及隐藏密钥35。另外,每个隐藏WB密钥35与逆转换20相关联,逆转换20通过WB转换代码15将转换逆转。在保护阶段,用户能够利用允许每个安全组件具有其自身的白盒密钥组的各种WB密钥。例如,安全性验证组件和模块转化组件能够利用不同的密钥。此外,函数转化组件利用多个密钥来转换函数。为了调整交易的安全性能,用户具有很多白盒转换技术,范围从复杂的AES加密算法到例如XOR操作的简单转换。这将在下面的密钥分拆部分中更详细地讨论。
二进制保护系统
图3描绘了根据本发明的示例性实施方式提出的二进制保护系统100与其最主要的安全组件,二进制保护系统被自动插入受保护的二进制应用中作为联锁的安全层。每个安全层由可执行代码实现,无论层是否实现IV转化125、FT转化130、BT转化135或MT转化120。要在层之间产生联锁关系,则安全层及其保护的代码均由具有前趋/后继关系的代码来实现。应该理解,图3实际上是示意性的。MT、FT、BT、以及指令转化(IT)(未示出)均优选设置在一系列层间转化的相继嵌套层中(即,MT封装FT、FT转而封装BT、BT转而封装IT,如图28所示),其中IV125和ADB140能被应用于层间基础上(即,被应用到每个嵌套层上、或者一组层上、或者整个受保护应用上)。
此外,安全层按顺序执行。当每一层获得控制时,为了适当地执行,每一层能被设定成依赖于前一层产生的值。例如,MT加载具有特定误差的可执行代码,在执行期间这些特定误差通过FT或BT来修正。二进制保护工具接收一组安全选项110的输入,安全选项110允许并供应所需的安全组件。另外,用户提供与安全组件耦接的转换密钥。此外,二进制工具允许用户将一组转换密钥关联至安全组件。例如,函数转化组件用不同的密钥来转换函数。
实施方式提供了与高级别的源代码保护联锁的能力。例如,用户能够在源代码中应用转换以增加安全性。这些高级别的转换通过代码转换器自动地应用。在共同拥有的第6,594,761号、第6,779,114号和第6,842,862号美国专利、以及第11/039,817号美国专利申请中可找到代码转换器的详细信息,以上专利和专利申请的全部内容通过引用并入本文。
图4示出了关于源代码也被转换的实施方式的保护过程的示意图,该保护过程包括作为预链接保护过程一部分的代码转换器220的使用。二进制保护系统100框可被认为包括图3中描绘的全部框图。此外,在源级别处,用户插入一些安全机制,但是这些安全机制提供的保护并不完全,直至二进制级别明确的安全引擎也被插入。例如,在源代码中用户采用一些安全API,但是在链接之后,当相应的安全组件在二进制级别处被插入后生成的二进制才变得更加安全。
在图4中二进制保护库230代表用户与安全组件之间的接口。二进制保护库230是提供一组API以支持由程序产生的安全请求的静态库。这些API提供完整性验证以及反调试功能性。二进制保护过程中的另一个重要模块是常驻安全模块(RSM)300,其包含五个最主要的安全组件引擎。下面将更详细地讨论RSM。在后链接保护阶段,常驻安全模块300封装有应用二进制模块200(称为有效载荷)。有效载荷模块被分解成白盒转换的块或函数,然后被压缩并转换为整体且被RSM封装入受保护应用中。新的受保护应用替代了在已部署应用中的原可执行程序和共享的库。此外,常驻安全模块包含主要安全组件的运行时引擎、白盒逆转换代码程序以及被转换的密钥。整个后链接保护过程是自动的。除了当进行安全选项选择时,用户不与常驻安全模块交互。二进制保护库与常驻安全模块均是受保护的高级别代码,并且结合源代码转换,如在图5中概述的那样。如图5中所示,源代码转换能够被应用到待保护的应用所使用的代码以及包括二进制保护技术的代码上。也就是说,通过利用源代码转换使攻击变得困难,链接至待保护应用的库以及在保护阶段被插入应用中的代码能具有增强的安全性。
如上所述,本文所描述的方法和系统概括地分为构建时特征/组件以及运行时特征/组件。图6示出了根据本发明的示例性实施方式在构建时处理之后,受保护二进制应用模块的结构。根本地,受保护二进制应用的结构由常驻安全模块300及其被转换的有效载荷350组成。常驻安全模块实现静态和动态保护。其包含无需用户交互的安全组件,例如白盒逆转换例程(routine)、自动的完整性验证和反调试引擎、以及动态块排列管理器。此外,常驻安全模块负责在运行时阶段将有效载荷加载存储器中。然后常驻安全模块保持常驻(或者其中的部分这样做),以使得能够为各种二进制转化提供服务。例如,经访问用于函数保护的进入处理器,该处理器能够调用RSM以获得被解密函数的其余内容等。
构建时处理
图6能通过对构建上述受保护二进制应用模块的过程(即,构建时过程)进行讨论而被很好地理解。这个部分描述了每个安全组件的保护阶段以及其如何单独应用。描绘并分析了受保护二进制应用的保护流程和结构。此外,该部分指出了安全组件之间的交互。通常,这些安全组件直接自动地应用于二进制应用。安全组件的安全引擎常驻于常驻安全模块300中。通常没有要求安装安全组件的用户交互。二进制应用被大量转换并被包括成为常驻安全模块的有效载荷350。因此,有效载荷例如包括被转换的函数410(以及用于每个被转换的函数的进入和退出处理器(未示出))。根据所需的安全技术,应用在二进制级别下被修改并且在几个阶段被转换。当二进制应用受模块转化保护时,有效载荷的结构是不重要的;有效载荷被看作单个实体。
然而,完整性验证和反调试组件能具有需要用户交互的另外的模式。在这种情况下,安全组件的功能性引擎常驻于静态地链接至被保护的二进制应用的二进制保护库230中。特别注意到,安全组件能以各种模式应用。例如,如果用户应用完整性验证API,则完整性验证组件可在链接阶段103应用。此外,完整性验证能够被再次应用于所产生的作为后链接保护一部分的二进制而没有任何冲突。
函数转化-构建时
图7示出了根据本发明的示例性实施方式的保护流程,其中输入为二进制应用。函数转化是阻止应用免受动态攻击的后链接保护技术。原二进制应用105被分解成其复合函数(例如,函数1、函数2、函数3、...、函数N),然后通过FT处理块130用WB算法来转换这些复合函数。FT处理130通过白盒转换构建时设备140来执行,白盒转换构建时设备140生成并集合用于每个函数的白盒转换密钥和操作代码。然后,每个被转换的函数410被包括作为常驻安全模块的有效载荷。FT处理还安装用于每个函数的进入和退出处理器420。每个函数用其自身的白盒密钥(以及其自身的转换代码)来转换,因而生成的受保护二进制模块包含用于每个函数的隐藏的WB逆转换密钥(转换代码)。此时,为了避免术语密钥与代码之间的任何混淆,应澄清,代码指的是用于执行通常使用唯一密钥的转换的算法/软件代码。
函数转换组件的益处是对在执行期间的任何给定时刻处于清除形式的函数数量进行限制。此外,常驻安全模块拦截对被转换的函数410的调用,并且与用于每个函数的进入和退出处理器420合作。进入处理器负责对函数的WB转换进行逆转并负责白盒密钥管理,而退出处理器破坏存储器中的函数。因此,通过进入处理器执行对函数的调用,而通过退出处理器从函数返回。除了函数转化组件特有的操作(函数转化和破坏)之外,进入和退出处理器还执行各种操作:块排列、完整性检查、测试调试器的存在等。应该注意,附图本质上是示意性的并且被包括的目的是示出系统如何运行,并不意味着包括一切。因此,图6没有示出进入和退出处理器(主要为了避免过于杂乱),而图7仅示出了RSM以及与被转换函数自身相关的有效载荷的部分。
块转化-构建时
图8描绘了根据本发明的示例性实施方式的块转化组件135的保护流程,当受保护应用在存储器中运行时该保护流程提供免受动态代码分析和攻击的二进制保护。块转化通过插入并替换二进制指令来修改二进制应用。另外,二进制应用代码被分解成白盒转换块,该白盒转换块需要被转换回可执行状态以被执行,这个情况在运行期间经请求发生。BT处理块135将应用二进制模块分解成其需要的函数,然后将每个函数分成块。然后,BT处理块135利用白盒转换代码来转换块。BT对应用二进制结构影响最大。用BT保护的函数被明显修改。例如,原始指令中的一些被新的指令替代,而另外一些在函数地址空间中重新定位。由于插入新的指令,用BT保护的每个函数的数据量更大。因此,BT保护的函数被重新定位于专用的二进制位置。在运行时,用BT保护的函数包括被分成WB转换的块440的大代码段。块被分成组,并且块中的每一组用唯一的白盒密钥转换。生成的二进制应用保持其原始行为,但是更不易被篡改。被转换的白盒密钥和逆转换例程是受保护的二进制模块的一部分。此外,在程序执行期间原应用的控制流程时常被中断并改变,以阻止二进制应用受到自动攻击。常驻安全模块包含随机修改块的物理存储地址的动态块排列管理器155。白盒转换块被包含在与常驻安全模块紧密配合的有效载荷中。
模块转化-构建时
图9示出了根据本发明的示例性实施方式的利用模块转化120组件的保护过程,模块转化120组件保护二进制应用免受静态分析和攻击。一般来说,受保护应用能由若干模块(可执行程序和共享库)构成,在这种情况下该过程为每个模块重复,以使得受保护应用包括多个被转化模块。原二进制应用105被转换、压缩,然后被包括作为常驻安全模块的有效载荷。生成的受保护二进制模块替代部署的应用中的原模块。图9中右手方框展现了用模块转化保护的应用二进制模块200的结构。除了将应用加载存储器用于静态保护的功能性之外,常驻安全模块300包含程序从而在执行期间对有效载荷360执行逆转换,而且常驻安全模块300包括完整性验证能力。图9仅示出了有效载荷360的一部分,其形成有效载荷350的部分。
完整性验证-构建时
图10示出根据本发明的示例性实施方式,对试图修改受保护应用的行为的篡改攻击进行检测的完整性验证组件的保护过程。在构建时,输入二进制模块是数字签名的,产生了凭单(voucher)数据。凭单包含关于受保护应用的签名集以及其它相关信息。凭单数据通过IV过程125利用白盒算法来转换,并且已转换的凭单数据被嵌入受保护应用中或者输出至分离文档。一般来说,受保护应用能够包括若干模块(可执行程序和共享库)。在这种情况下,使得应用防篡改意味着所有模块都已签名并且凭单数据能够被储存在用于所有模块的单个实体中,或者优选地,每个模块具有单独储存的其自身的凭单数据。允许用于每个模块的凭单数据不仅为应用提供了无需重新签名就可更新单个模块的灵活性,而且通过允许将每个凭单用不同的密钥来转换还增加了安全性。
完整性验证转化能够以自动模式和/或用户交互模式运行。这两种模式共享行为和原理,但是其不同之处在于IV机制被插入受保护二进制应用的方式。在自动模式下,IV引擎540常驻在常驻安全模块中,并且在策略点处IV组件自动插入受保护二进制应用中。在用户交互模式下,IV机制550基于对IV库555的调用常驻在静态地链接至应用中的二进制保护库中,在编译阶段前IV库555被插入用户的源代码中。
通常,在运行时,受保护应用的结构由大量代码段构成,这些代码段根据已应用的不同二进制转化动态地改变其状态。实际上,受保护的二进制应用结构包括多个二进制转化的组合,二进制转化包括至少一种被应用于所述二进制应用代码的相继嵌套层的层间转化,其中相继嵌套层包括:包括应用的模块、包括模块的函数、包括函数的指令基础块、以及单个机器指令。大多数安全性重要的函数用BT保护,另外一些用FT保护。无论受保护应用的自我修改代码本性如何,IV转化都将优选地提供检查模块、函数或块的完整性的能力。因此,签名阶段包括将一组签名关联至在执行期间改变其状态的每个代码段。这些代码段在转换之前或之后被签名。例如,等式1示出了处于其已转换以及未转换状态的块的签名。随后,等式2能够表达用BT保护的函数的签名,其是包括函数的块签名之和。当用FT保护函数时,函数被转换成一体。等式3表征用FT保护的函数的签名。
在讨论运行时处理的示例性实施方式之前参考图29,该图是根据本发明的示例性实施方式示出相继嵌套层以及转化如何被应用于相继嵌套层的不同的示意图。在这个实施例中,仅示出了一个模块,尽管应该理解可以包含另外的模块。在这个实施例中,该模块被分成3个函数。将仅讨论一个示例性函数,即标注为770的函数1。这个函数包括多个块,每个块包括多个指令。FT处理块将函数1转化成已转换形式775,已转换形式775包括进入处理器773和退出处理器778,并且在与来自RSM和WB转换引擎810的代码/数据没有联锁的情况下不再运行。然而,函数1包括多个块,每个块也都被转化。例如,BT处理块将块转化成已转换形式780,已转换形式780包括进入处理器783和退出处理器785,并且也在与来自RSM790和WB转换引擎810的代码/数据没有联锁的情况下不再运行。类似地,块780包括一个或多个指令,其被转换成已转换形式790,已转换形式790也在与来自RSM790和WB转换引擎810的代码/数据没有联锁的情况下不再运行。另外,RSM800不仅与上述相继嵌套的层间转化结合,还包括IV引擎820和ADB引擎830,IV引擎820和ADB引擎830将层内保护添加到所述层中的一个或多个层上,和/或添加到整个被转化模块上。
注意到以上内容是以自上而下的顺序来描述的。也就是说,在BT之前描述FT如同函数封装块。然而,应该理解,实际上,实施方式首先分析函数,并且将每个函数分解成块、通过有效地转换函数将块转换。然后如上所述,FT处理被应用于被转换函数。在运行时,该过程逆向进行,首先除去函数转换,暴露已转换的块,已转换的块在其执行时将转换除去。
运行时处理
图11是受保护应用如何在运行时安全地执行的概述图。如图6所示,受保护二进制应用包括RSM300及其已转换的有效载荷350。有效载荷的结构依赖于在构建时应用的二进制转化。当受保护二进制应用开始时,RSM采取控制并准备使有效载荷运行。有效地,RSM替代OS加载过程。RSM包含关于受保护应用的信息并且对采用逆转换时已转换的有效载荷将定位的存储器空间进行分配。在处理有效载荷上的转换之前,RSM执行三项操作:1)初始化安全引擎;2)运行反调试组件;以及3)检查有效载荷的完整性。
在有效载荷已在存储器中建立之后,RSM准备运行时安全支持,而后将控制传送至包括已转换函数和已转换块的有效载荷。此外,应用包含与块、函数以及整个应用模块有关的完整性信息。函数和块经请求动态转换成可执行状态并在执行之后被毁坏。结果,在运行时仅一部分代码将处于清除形式。在初始化阶段中,RSM管理对函数和块的转换以及毁坏负责的进入和退出处理器。此外,这些处理器执行其它安全活动,例如完整性检查、代码再定位、代码部署以及附接至受保护应用的调试器的检测。完整性验证允许自动地检查块、函数或者整个应用的完整性。
代码再定位能力意味着在每个函数调用之后,函数结构动态地改变。这可能通过排列函数块的物理储存地址来实现。动态代码再定位展现了对自动和动态攻击极好的防御。当进入和退出处理器是提供动态保护的关键元件时,其还优选保护自身。每个处理器能够检查其自身的完整性并且周期性地将自身重构。此外,处理器会检查是否有任何调试器附接至受保护应用。
模块转化-运行时过程
图12示出了在运行时执行过程中的模块转化(MT)组件。当受保护应用被加载存储器中时,RSM采取控制并执行一些安全操作。首先,RSM检验受保护应用是否在调试器控制之下并且检查自身和有效载荷的完整性,然后将有效载荷转换成准备好执行的状态。MT组件主要用于静态保护。其阻止攻击者分析磁盘上的有效载荷。在有效载荷被部署之后,嵌入有效载荷和RSM中的其它安全组件采取控制并保护应用免受动态分析和攻击。此外,有效载荷包含与二进制受保护应用有关的运行时数据。
完整性验证转化-运行时过程
图13示出了完整性验证组件的运行时过程。当受保护应用被部署于存储器中时,其结构包括经请求动态转换成可执行状态并且在执行之后被再次毁坏的代码段。IV转化(IV)确保受保护应用的位于存储器内的代码段或者其组件的任何代码段没有被篡改,而且确保应用的磁盘图像没有外部修改。基本原理依赖于在保护/构建时产生的完整性验证数据与受保护的二进制应用的运行时图像之间的比较。每当块或函数改变其转换状态,运行时签名就适当地更新。因此,能够检查自我修改的代码应用的完整性,例如包括动态改变其转换状态的段的二进制应用。
在自动模式下,IV能检验模块、函数或块的完整性。根据所需的安全级别,对IV的调用在策略点处以各种形式插入。例如,当用块转化(BT)保护函数时,在每个块执行之前,IV检查这个块的完整性或者构成函数的所有块的完整性。检查函数的完整性意味着检查包括那个函数的所有块的完整性,而模块的完整性包括属于BT/FT保护的函数以及其余的应用代码的多个签名值。图14通过示出在具有和没有IV的情况下的运行时函数处理来描绘自动的IV调用的另一实施例。利用双签名方案,函数能够在执行之前被检验,这展现了极好的防御策略。图14.a)展示了对FT保护函数的基本调用,而图14.b)示出了对包含调用者和被调用函数的完整性检验的、FT保护函数的调用。
在用户模式下,IV提供了一组检查模块或函数的完整性的API。此外,通过将这组API插入源代码中用户能够控制IV检查何时发生。完整性验证功能性允许用户以若干方式检查模块的完整性。首先,只要相应的IVAPI被调用,包括应用(即代码和只读数据)的全部不变字节组就能被检查到。这个API允许用户指定每次调用将检查多少应用以便调整性能。除了检验这样的全部模块之外,IVAPI允许用户检查当前执行的函数自构建时以来是否有过修改。如上所述,动态转换并执行的函数和块能够在执行之前或之后检查完整性。
函数转化-运行时过程
一般来说,在应用模块执行过程中,当受保护应用被调用时,它的进入函数处理器首先执行并且与白盒转换运行时设备相互作用,从而通过利用该函数特有的白盒转换运行时密钥数据和操作代码来执行白盒转换逆操作、将逆转换的函数加载执行存储器中、并且将执行控制传送至函数并在从函数退出时调用函数的退出处理器来对白盒转换函数进行逆转换。任选地,用于每个函数的RSM在返回之前清除或搅乱(scramble)函数的存储器占用空间(footprint)。此外,层内保护能够被调用以使得通过将IV转化、ADB转化或者两种都转化隐性地应用到进入和退出函数处理器上,使IV或ADB转化中的一种或两种与被保护的函数所应用的FT联锁。
图15示出了根据本发明的示例性实施方式在运行时执行过程中的函数转化(FT)组件。即使在RSM将有效载荷转换成可执行状态之后,一些函数仍能被转换。此外,RSM为每个受保护函数安装进入处理器和退出处理器。当受保护的、已转换的函数被调用时,它的进入处理器获得控制并执行适当的逆转换,以利用必要的白盒密钥将函数恢复成可执行状态。如本文件之前所指出的,能够利用唯一的密钥来转换每个函数。在执行转换操作之前,如果需要,进入处理器执行在保护时指定的各种其它操作(完整性检查、反调试)。在将函数转换成可执行状态之后,进入处理器将控制传送至函数以用于执行。通过函数的退出处理器来拦截从函数的返回,退出处理器的主要任务是毁坏函数内容并将控制返回给调用者。如在进入处理器中的那样,退出处理器能执行在保护时指定的各种安全操作。
FT组件允许用户限定动态计数器,动态计数器指定函数的运行时破坏/转换的频率。计数器的默认值设定为1。每个函数具有其自身的动态保护计数器。该计数器允许用户调整相对于(vs.)性能的安全保护。例如,如果计数器被设定为5,则在退出处理器毁坏函数内容之前函数能被调用5次。
块转化-运行时过程
图16示出了承担抵抗动态分析和攻击的保护的块转化(BT)组件的运行时过程。其中心原理依赖于将二进制应用分解成离散的块。在构建时,利用白盒转换来转换块。在运行时,块经请求被动态地转换回可执行状态。优选地,在运行时仅最少数量的块(而且理想地仅一个块)将处于清除形式,其余的块仍是未转换的。在执行之后,块被毁坏,BT和FT共享相同的基本原理:转换-执行-毁坏,但是它们被不同地实现。用BE保护的函数在构建时修改。例如,对转换例程的调用被插入受保护函数内。
动态转换的块而不是整个函数构成了由FT提供的保护之外的另外的保护层。例如,根据函数的输入参数,一些块未被执行。随后,未被执行的块决不转换成可执行状态并且易受分析、提升和篡改攻击。
此外,属于相同函数的块在存储器中不断地排列。动态地转换块并且在存储器中排列其位置是抵抗自动和动态攻击的极好的防御策略。图17示出了在该策略执行的不同时刻的受保护应用的示例。块排列的频率能够由用户在输入安全选项之中限定。
动态函数加载
除了以上概述的技术之外,由该系统提供的技术基础架构还能够允许动态加载受保护函数。这种动态加载功能性允许用户利用白盒转换来保护函数,当需要时加载函数、调用函数,然后安全地从存储器中清除函数。除了允许在不改变基础应用的情况下就能容易地对函数更新之外,该系统将受保护函数在存储器中处于清除的时间最小化。
动态函数加载-构建时
图18示出了动态函数加载的构建时过程。用户提供待保护的函数。这是通过动态函数加载器处理引擎连同用户提供的白盒转换密钥以及算法规范来进行的。这个过程产生包含已转换函数和隐藏的白盒逆转换密钥的受保护数据模块。然后这个数据模块能以各种方式(下载等)提供给应用。这允许用户不必重新构建、重新测试以及重新部署原始应用就可容易地改变函数的本性或保护级别。还允许用户将函数代码(以该数据模块的形式)放置在通常可能不考虑代码二进制程序(例如,可执行程序以及动态加载或共享的库)的目标系统上的区域中。
动态函数加载-运行时过程
图19描述了动态函数加载的运行时过程。在运行时,应用对动态函数加载库进行调用来指定哪个受保护的数据模块将被加载以及哪个函数将被调用。然后该库在受保护的数据模块中找到该函数并将其转换成存储器中的可执行形式。然后库调用这个代表应用的函数并返回结果。在调用函数之后,应用能够接着询问函数是否能从存储器中安全地消除。
动态函数加载的运行时过程被分成若干阶段。图20示出了该过程的第一阶段的示例。在这个阶段中,调用的应用指定哪个受保护数据模块包含所需的函数。然后动态函数加载库对库中的函数进行识别。
图21示出了该过程的第二阶段的示例。在这个阶段中,动态函数加载库获取隐藏的白盒转换密钥并准备为所需的函数应用逆转换。图22示出了该过程的第三阶段的示例。在这个阶段中,包含用于所需函数的代码的数据被转换成可执行状态,被放置在存储器中并且为调用作准备。
图23示出了该过程的第四阶段的示例。在这个阶段中,动态函数加载库调用代表调用应用的函数。该应用已向函数提供通过库传送的参数。在函数完成之后,从函数返回的代码接着被传送至调用者。图24示出了最终阶段,其中调用应用可以请求将函数安全地清除。然后库从存储器中清除函数。如果函数需要再次被调用,其必须再次被转换成可执行状态并且通过库加载。
图25示出了具有代码转化和联锁的动态函数加载的构建时过程的示例。动态函数加载提供了待应用的更安全技术的基础架构。例如,可利用在之前的部分中概述的函数保护技术中的任何一个:
-块转化
-基于函数的完整性验证
-基于块的完整性验证
-反调试
更大的安全性还能够通过将动态函数加载与源代码转换结合来获得。在图25示出的示例中,用户提供包含三个需要被保护的函数的应用。通过代码转换器来应用源代码转换,系统能够产生应用,该应用包含用于与被转换函数紧紧联锁的函数的被转换残余部分。然后能够利用动态函数加载机构来保护这些函数。以这种方式利用代码转换将使攻击者更难于替换受保护函数,而动态函数加载技术使得难于从存储器中提升受保护应用。此外,可能响应于对初始实现的攻击,该技术允许用户容易地替换受保护函数。
联锁安全技术
联锁针对的是通过在各种安全技术之间产生强关联来增加安全标准。联锁集中于重要代码和数据。某一安全引擎的关键组件依赖于由其它安全组件产生的值。在图14中示出了联锁安全引擎的这种实施例,其中在被验证函数的动态转换之前检查完整性。虽然如此,联锁能够更复杂。例如,IV和AD组件提供了包含其它安全组件的部分(可执行代码)的失败和成功回叫例程。
例如,图26描绘了BT和IV组件的联锁形式。构成块的指令中的部分重新定位于IV引擎的成功回叫中。因此,这些指令部分基于验证的成功或失败来执行。在IV失败的情况下,计算不完全而且黑客攻击将失败。
密钥分拆
密码术中重要的安全范例包括保护解密密钥。使用白盒技术是满足这个需求的重大进步。数学转换被应用到仅通过解密例程已知的解密密钥上,使得即使攻击者观察了每个指令执行,解密操作也不会暴露密钥。本发明介绍了一种另外的安全措施,其包括将隐藏的解密密钥拆分成两个部分。嵌入受保护的二进制应用中的一个内部部分和最终用户必须在执行阶段提供的外部部分。图2示出了产生加密密钥30和隐藏的解密密钥35的过程。在保护时,隐藏的解密密钥被分解,如图27所描绘的那样。在运行时,RSM负责密钥重建。该技术扩展至任何白盒转换。密钥分拆特征应用到利用WB转换的所有安全组件上:MT、IV、FT以及BT。
例如,装置制造者能够将部分密钥放置在装置中的安全存储器中。当受保护应用被调用时,这个部分的密钥能通过执行装置上将密钥从安全存储器重新取回的代码而被重新取回。现在完整的白盒密钥能够重新构建并用于解密受保护应用的有效载荷、用于解密凭单数据、或者用于函数和/或块转换。从安全存储器中得到密钥片段的攻击者不能做任何事情,攻击者也不能从应用中提取密钥片段。联锁技术的另一用处是能够使受保护应用的文本在具有安全存储器的装置上除运行之外难以执行任何解密操作。当然,密钥的转换使得在白盒文本的外面使用变得困难,即,攻击者不能利用具有其自身加密程序的被转换密钥。
在之前的描述中,出于解释的目的,阐述了许多细节以便提供对本发明的实施方式的充分理解。然而,对本领域技术人员明显的是为了实践本发明并不需要这些具体的细节。
本发明的实施方式能够表示为存储在机器可读介质(也称为计算机可读介质、处理器可读介质或者其中嵌入有计算机可读程序代码的计算机可用介质)中的软件产品。机器可读介质能够是包括磁、光或电存储介质的任何合适的有形介质,包括磁盘、只读光盘存储器(CD-ROM)、存储器设备(易失性的或非易失性的)、或者类似的存储机构。机器可读介质能够包含各种指令集、代码序列、配置信息或其它数据,当被执行时,机器可读介质使得处理器执行根据本发明的实施方式的方法中的步骤。本领域技术人员将理解实现所述发明所必需的其它指令和操作也能被储存在机器可读介质中。从机器可读介质中运行的软件能够与电路交互以执行所述任务。
一般来说,应该理解,源代码能够在一个计算设备上开发,构建时过程能够由其他设备来执行,而受保护应用实际由另一个设备来执行。每个设备能包括处理器、存储器以及有形地储存机器可读指令和可执行指令的机器可读介质,当通过处理器执行时,机器可读指令和可执行指令使得所述处理器实现本文所公开的方法。
本发明的上述实施方式仅旨在作为示例。本领域的技术人员能对特定的实施方式进行更改、修改和改变而不偏离本发明的范围,本发明的范围由所附的权利要求单独限定。

Claims (38)

1.一种将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的方法,所述方法包括:
在构建阶段中对原二进制应用代码应用多个转换,以产生转换的二进制应用代码,其中,所述多个转换应用于多个应用层;以及
以多个逆转换密钥和多个逆转换对所述转换的二进制应用代码进行封包,以产生受保护的应用,其中所述多个逆转换密钥中的每个被配置为在执行阶段提供对所述多个逆转换中对应的逆转换的访问;
其中,所述受保护的应用的执行导致所述多个逆转换中的每个在所述转换的二进制应用代码的对应部分执行之前应用于所述转换的二进制应用代码的所述对应部分,从而使得所述受保护的应用的执行语义等同于所述二进制应用代码的执行。
2.如权利要求1所述的方法,其中所述多个应用层包括所述原二进制应用代码的相继嵌套层。
3.如权利要求2所述的方法,其中所述多个逆转换必须以预定序列应用于所述转换的二进制应用代码,以使所述受保护的应用能够执行。
4.如权利要求3所述的方法,其中所述多个转换以第一序列应用于所述原二进制应用代码中的所述多个应用层,并且其中所述多个逆转换必须以与所述第一序列相反的第二序列应用于所述转换的二进制应用代码,以使所述受保护的应用能够执行。
5.如权利要求4所述的方法,其中所述多个转换中的第一转换生成输出,该输出用于所述多个转换中的第二转换的输入。
6.如权利要求1-5中任一项所述的方法,其中所述多个转换中的每个转换对所述原二进制应用代码形成一个或多个改变,并且所述多个逆转换中的每个对应逆转换对所述转换的二进制应用代码形成一个或多个补充改变,其中所述改变包括二进制代码修改、二进制代码插入和二进制代码删除中的一个或多个。
7.如权利要求2-5中任一项所述的方法,其中所述相继嵌套层包括:包括一个或多个模块的应用层、包括一个或多个函数的模块层、包括一个或多个指令块的函数层、以及包括各机器指令的指令层。
8.如权利要求1-5中任一项所述的方法,进一步包括:
对所述原二进制应用代码和所述转换的二进制应用代码中的一个或多个的所述多个应用层中的至少一层应用至少一种层内转化。
9.如权利要求8所述的方法,其中所述至少一种层内转化包括应用于所述原二进制应用代码和所述转换的二进制应用代码的完整性验证转化,并且其中所述受保护的应用的成功执行取决于由所述完整性验证转化添加的完整性检查的结果。
10.如权利要求8所述的方法,其中所述至少一种层内转化包括被应用于所述至少一层的反调试转化。
11.如权利要求2所述的方法,其中所述原二进制应用代码由已通过一个或多个源代码转换进行转换的源代码生成,其中应用于所述原二进制应用代码的所述多个转换中的一个或多个为所述一个或多个源代码转换的补充。
12.如权利要求1所述的方法,其中应用于所述原二进制应用代码的所述多个转换中的一个或多个利用一个或多个白盒构建时密钥而被应用,并且其中所述多个逆转换密钥中的一个或多个包括与所述白盒构建时密钥对应的一个或多个白盒运行时密钥。
13.如权利要求12所述的方法,其中每个白盒构建时密钥与对应的白盒运行时密钥紧密配合,并且其中所述白盒构建时密钥与所述白盒运行时密钥均基于由用户提供的原密钥数据和转换算法选择而生成。
14.如权利要求13所述的方法,还包括:在所述白盒运行时密钥生成之后,隐藏所述原密钥数据和重要转换信息。
15.如权利要求12或14所述的方法,其中为所述多个应用层中的不同层的不同转换生成不同的白盒构建时密钥和白盒运行时密钥。
16.如权利要求9所述的方法,其中应用至少一种层内转化包括:
a.生成并集合完整性验证特定的白盒转换密钥和操作代码;
b.计算代表构建时所述原二进制应用代码的散列信息的静态完整性验证凭单数据;
c.通过使用所述特定白盒转换密钥和操作代码来应用完整性验证特定白盒转换以转换所述凭单数据,从而阻止对所述凭单数据未授权的访问和攻击;以及
d.集合与所述特定白盒转换密钥和操作代码对应的、隐藏的白盒转换运行时密钥数据;
e.在完整性验证库被调用时,与所述白盒转换运行时设备交互,以通过在所述白盒转换运行时密钥数据上执行所述完整性验证特定白盒转换逆操作而将所述白盒转换完整性验证数据逆转换成普通的完整性验证数据,并且将所述普通的完整性验证数据加载到受保护数据结构中;
f.通过OS对加载存储器中的所述二进制应用代码的动态完整性验证凭单数据进行计算,所述动态完整性验证凭单数据代表运行时中所述二进制应用代码的散列信息,并且将所述动态完整性验证凭单数据储存至受保护的数据结构中;以及
g.通过将以被保护形式存在的所述静态完整性验证凭单数据与所述动态完整性验证凭单数据作比较,来检查待保护的应用代码的完整性。
17.如权利要求16所述的方法,其中所述完整性验证转化的应用包括通过在所述构建阶段中允许用户将完整性验证API调用插入所述应用的源代码的选定位置中来检查由指定选项的用户规范所确定的完整性,以及随后在所述构建阶段将自动的完整性验证引擎自动添加到所述应用中,所述完整性验证引擎在运行阶段执行。
18.如权利要求16所述的方法,其中所述完整性验证转化检查所述原二进制应用代码自身的完整性,而且还检查被应用到所述代码的任何其它二进制转化的代码的完整性。
19.如权利要求16所述的方法,其中所述完整性验证转化执行通过调用回叫函数被联锁至所述应用。
20.一种将包括二进制应用代码的二进制软件应用从原形式转换为安全形式的系统,所述系统包括:
用于在构建阶段中对原二进制应用代码应用多个转换以产生转换的二进制应用代码的装置,其中,所述多个转换应用于多个应用层;以及
用于以多个逆转换密钥和多个逆转换对所述转换的二进制应用代码进行封包以产生受保护的应用的装置,其中所述多个逆转换密钥中的每个被配置为在执行阶段提供对所述多个逆转换中对应的逆转换的访问;
其中,所述受保护的应用的执行导致所述多个逆转换中的每个在所述转换的二进制应用代码的对应部分执行之前应用于所述转换的二进制应用代码的所述对应部分,从而使得所述受保护的应用的执行语义等同于所述二进制应用代码的执行。
21.如权利要求20所述的系统,其中所述多个应用层包括所述原二进制应用代码的相继嵌套层。
22.如权利要求21所述的系统,其中所述多个逆转换必须以预定序列应用于所述转换的二进制应用代码,以使所述受保护的应用能够执行。
23.如权利要求22所述的系统,其中所述多个转换以第一序列应用于所述原二进制应用代码中的所述多个应用层,并且其中所述多个逆转换必须以与所述第一序列相反的第二序列应用于所述转换的二进制应用代码,以使所述受保护的应用能够执行。
24.如权利要求23所述的系统,其中所述多个转换中的第一转换生成输出,该输出用于所述多个转换中的第二转换的输入。
25.如权利要求20-24中任一项所述的系统,其中所述多个转换中的每个转换对所述原二进制应用代码形成一个或多个改变,并且所述多个逆转换中的每个对应逆转换对所述转换的二进制应用代码形成一个或多个补充改变,其中所述改变包括二进制代码修改、二进制代码插入和二进制代码删除中的一个或多个。
26.如权利要求21-24中任一项所述的系统,其中所述相继嵌套层包括:包括一个或多个模块的应用层、包括一个或多个函数的模块层、包括一个或多个指令块的函数层、以及包括各机器指令的指令层。
27.如权利要求20-24中任一项所述的系统,进一步包括:
用于对所述原二进制应用代码和所述转换的二进制应用代码中的一个或多个的所述多个应用层中的至少一层应用至少一种层内转化的装置。
28.如权利要求27所述的系统,其中所述至少一种层内转化包括应用于所述原二进制应用代码和所述转换的二进制应用代码的完整性验证转化,并且其中所述受保护的应用的成功执行取决于由所述完整性验证转化添加的完整性检查的结果。
29.如权利要求28所述的系统,其中所述至少一种层内转化包括被应用于所述至少一层的反调试转化。
30.如权利要求21所述的系统,其中所述原二进制应用代码由已通过一个或多个源代码转换进行转换的源代码生成,其中应用于所述原二进制应用代码的所述多个转换中的一个或多个为所述一个或多个源代码转换的补充。
31.如权利要求20所述的系统,其中应用于所述原二进制应用代码的所述多个转换中的一个或多个利用一个或多个白盒构建时密钥而被应用,并且其中所述多个逆转换密钥中的一个或多个包括与所述白盒构建时密钥对应的一个或多个白盒运行时密钥。
32.如权利要求31所述的系统,其中每个白盒构建时密钥与对应的白盒运行时密钥紧密配合,并且其中所述白盒构建时密钥与所述白盒运行时密钥均基于由用户提供的原密钥数据和转换算法选择而生成。
33.如权利要求32所述的系统,还包括:用于在所述白盒运行时密钥生成之后,隐藏所述原密钥数据和重要转换信息的装置。
34.如权利要求32或33所述的系统,其中为所述多个应用层中的不同层的不同转换生成不同的白盒构建时密钥和白盒运行时密钥。
35.如权利要求28所述的系统,其中对所述原二进制应用代码和所述转换的二进制应用代码中的一个或多个的所述多个应用层中的至少一层应用至少一种层内转化的装置包括:
a.用于生成并集合完整性验证特定的白盒转换密钥和操作代码的单元;
b.用于计算代表构建时所述原二进制应用代码的散列信息的静态完整性验证凭单数据的单元;
c.用于通过使用所述特定白盒转换密钥和操作代码来应用完整性验证特定白盒转换以转换所述凭单数据,从而阻止对所述凭单数据未授权的访问和攻击的单元;以及
d.用于集合与所述特定白盒转换密钥和操作代码对应的、隐藏的白盒转换运行时密钥数据的单元;
e.用于在完整性验证库被调用时,与所述白盒转换运行时设备交互,以通过在所述白盒转换运行时密钥数据上执行所述完整性验证特定白盒转换逆操作而将所述白盒转换完整性验证数据逆转换成普通的完整性验证数据,并且将所述普通的完整性验证数据加载到受保护数据结构中的单元;
f.用于通过OS对加载存储器中的所述二进制应用代码的动态完整性验证凭单数据进行计算,所述动态完整性验证凭单数据代表运行时中所述二进制应用代码的散列信息,并且将所述动态完整性验证凭单数据储存至受保护的数据结构中的单元;
g.用于通过将以被保护形式存在的所述静态完整性验证凭单数据与所述动态完整性验证凭单数据作比较,来检查待保护的应用代码的完整性的单元。
36.如权利要求35所述的系统,其中所述完整性验证转化的应用包括通过在所述构建阶段中允许用户将完整性验证API调用插入所述应用的源代码的选定位置中来检查由指定选项的用户规范所确定的完整性,以及随后在所述构建阶段将自动的完整性验证引擎自动添加到所述应用中,所述完整性验证引擎在运行阶段执行。
37.如权利要求35所述的系统,其中所述完整性验证转化检查所述原二进制应用代码自身的完整性,而且还检查被应用到所述代码的任何其它二进制转化的代码的完整性。
38.如权利要求35所述的系统,其中所述完整性验证转化执行通过调用回叫函数被联锁至所述应用。
CN201080030733.XA 2009-05-06 2010-05-06 利用白盒密码术的联锁二进制保护 Expired - Fee Related CN102483790B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17594509P 2009-05-06 2009-05-06
US61/175,945 2009-05-06
PCT/CA2010/000666 WO2010127438A1 (en) 2009-05-06 2010-05-06 Interlocked binary protection using whitebox cryptography

Publications (2)

Publication Number Publication Date
CN102483790A CN102483790A (zh) 2012-05-30
CN102483790B true CN102483790B (zh) 2016-01-20

Family

ID=43049872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080030733.XA Expired - Fee Related CN102483790B (zh) 2009-05-06 2010-05-06 利用白盒密码术的联锁二进制保护

Country Status (7)

Country Link
US (1) US9141787B2 (zh)
EP (1) EP2430584B1 (zh)
JP (1) JP5808019B2 (zh)
KR (1) KR101676326B1 (zh)
CN (1) CN102483790B (zh)
CA (1) CA2761065C (zh)
WO (1) WO2010127438A1 (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2362314A1 (en) * 2010-02-18 2011-08-31 Thomson Licensing Method and apparatus for verifying the integrity of software code during execution and apparatus for generating such software code
KR20140058419A (ko) * 2011-03-24 2014-05-14 이르데토 비.브이. 공격 저항을 위하여 어플리케이션 전체에 걸쳐 종속성 네트워크들을 제공하는 방법 및 시스템
WO2013175368A1 (en) * 2012-05-25 2013-11-28 Koninklijke Philips N.V. Method, system and device for protection against reverse engineering and/or tampering with programs
US10089126B2 (en) * 2013-03-21 2018-10-02 Vmware, Inc. Function exit instrumentation for tail-call optimized code
US9678816B2 (en) 2012-06-29 2017-06-13 Vmware, Inc. System and method for injecting faults into code for testing thereof
US8918768B2 (en) 2012-12-06 2014-12-23 Apple Inc. Methods and apparatus for correlation protected processing of data operations
KR101428915B1 (ko) * 2013-02-22 2014-08-11 한양대학교 산학협력단 안드로이드 보안을 위한 피드백 기반 어플리케이션 재가공 프레임워크 방법과 그 시스템
US9721120B2 (en) 2013-05-14 2017-08-01 Apple Inc. Preventing unauthorized calls to a protected function
US20150199530A1 (en) 2014-01-10 2015-07-16 General Electric Company Systems and Methods With Cryptography and Tamper Resistance Software Security
GB201405706D0 (en) * 2014-03-31 2014-05-14 Irdeto Bv Software protection
WO2015152924A1 (en) * 2014-04-03 2015-10-08 Empire Technology Development Llc Sub-packaging of a packaged application including selection of user-interface elements
US9075990B1 (en) * 2014-07-01 2015-07-07 Shape Security, Inc. Reliable selection of security countermeasures
KR101695639B1 (ko) * 2014-08-13 2017-01-16 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
US20170249460A1 (en) * 2014-09-23 2017-08-31 The Regents Of The University Of California Provably secure virus detection
FR3030818B1 (fr) * 2014-12-23 2016-12-23 Valeo Comfort & Driving Assistance Procede de transmission securisee d'une cle virtuelle et methode d'authentification d'un terminal mobile
CN105790931B (zh) * 2014-12-26 2019-05-24 中国移动通信集团公司 一种密钥分发方法、网络设备、终端设备及系统
WO2016112338A1 (en) * 2015-01-08 2016-07-14 Intertrust Technologies Corporation Cryptographic systems and methods
KR102311340B1 (ko) 2015-01-15 2021-10-15 한국전자통신연구원 암호화 장치 및 방법
IN2015DE01753A (zh) * 2015-06-11 2015-08-28 Pradeep Varma
US10642962B2 (en) * 2015-07-28 2020-05-05 Western Digital Technologies, Inc. Licensable function for securing stored data
KR101790948B1 (ko) * 2015-10-26 2017-10-27 삼성에스디에스 주식회사 Drm 서비스 제공 장치 및 방법, drm 서비스를 이용한 콘텐츠 재생 장치 및 방법
US10171234B2 (en) * 2015-12-16 2019-01-01 Nxp B.V. Wide encoding of intermediate values within a white-box implementation
GB201522315D0 (en) 2015-12-17 2016-02-03 Irdeto Bv Securing webpages, webapps and applications
US10503931B2 (en) * 2016-05-09 2019-12-10 Arris Enterprises Llc Method and apparatus for dynamic executable verification
KR101933649B1 (ko) * 2016-05-27 2018-12-28 삼성에스디에스 주식회사 화이트박스 암호 알고리즘을 이용한 공개키 암호화를 위한 장치 및 방법
CN106599620A (zh) * 2016-11-16 2017-04-26 中国人民解放军国防科学技术大学 一种基于动态代码变换的二进制软件保护方法
WO2019028547A1 (en) 2017-08-08 2019-02-14 Crypto4A Technologies Inc. METHOD AND SYSTEM FOR DEPLOYING AND EXECUTING EXECUTABLE CODE BY SECURE MACHINE
EP3441898B1 (de) * 2017-08-10 2020-02-12 Siemens Aktiengesellschaft Verfahren und vorrichtung zum schützen einer software gegen ein unbefugtes nutzen
US10785017B2 (en) * 2018-04-24 2020-09-22 Microsoft Technology Licensing, Llc Mitigating timing attacks via dynamically scaled time dilation
US11017078B2 (en) 2018-04-24 2021-05-25 Microsoft Technology Licensing, Llc Environmentally-trained time dilation
US10965444B2 (en) 2018-04-24 2021-03-30 Microsoft Technology Licensing, Llc Mitigating timing attacks via dynamically triggered time dilation
FR3098319A1 (fr) * 2019-07-05 2021-01-08 Commissariat à l'énergie atomique et aux énergies alternatives Procédé d'exécution d'un code binaire d'une fonction sécurisée par un microprocesseur
US11263316B2 (en) * 2019-08-20 2022-03-01 Irdeto B.V. Securing software routines
US11409843B2 (en) 2019-10-10 2022-08-09 Nxp B.V. Method for protecting a software program from copying
CN111625784B (zh) * 2020-05-29 2023-09-12 重庆小雨点小额贷款有限公司 一种应用的反调试方法、相关装置及存储介质
CN116668007B (zh) * 2023-08-01 2023-10-31 中电信量子科技有限公司 基于白盒sm4算法的加密通信方法、终端及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054443B1 (en) * 2000-03-27 2006-05-30 Microsoft Corporation System and method for protecting digital goods using random and automatic code obfuscation
CN101031859A (zh) * 2004-09-30 2007-09-05 Ttpcom有限公司 程序源代码保护

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3683031B2 (ja) * 1996-04-17 2005-08-17 株式会社リコー プログラム保護装置
AU7957998A (en) * 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security
JP3637743B2 (ja) 1997-10-15 2005-04-13 ソニー株式会社 投射型液晶表示装置
US7757097B2 (en) * 1999-09-03 2010-07-13 Purdue Research Foundation Method and system for tamperproofing software
CA2327911A1 (en) * 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
JP4475894B2 (ja) 2002-08-01 2010-06-09 パナソニック株式会社 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法
JP4514473B2 (ja) * 2004-02-23 2010-07-28 富士通株式会社 コンピュータシステム、中央装置及びプログラム実行方法
EP1646174A1 (en) * 2004-10-07 2006-04-12 Axalto SA Method and apparatus for generating cryptographic sets of instructions automatically and code generation
US7587616B2 (en) 2005-02-25 2009-09-08 Microsoft Corporation System and method of iterative code obfuscation
JP4770425B2 (ja) 2005-11-24 2011-09-14 富士ゼロックス株式会社 保護済み実行プログラムの作成のためのプログラム、方法及び装置
JP4048382B1 (ja) * 2006-09-01 2008-02-20 富士ゼロックス株式会社 情報処理システムおよびプログラム
US8752032B2 (en) 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
JP2008250475A (ja) * 2007-03-29 2008-10-16 Brother Ind Ltd 情報処理装置、ネットワークシステム、およびプログラム
KR20090032701A (ko) * 2007-09-28 2009-04-01 에스케이 텔레콤주식회사 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체
GB0719250D0 (en) * 2007-10-02 2007-11-14 Iti Scotland Ltd Anti-hack method
US8121294B2 (en) * 2008-10-21 2012-02-21 Apple Inc. System and method for a derivation function for key per page

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054443B1 (en) * 2000-03-27 2006-05-30 Microsoft Corporation System and method for protecting digital goods using random and automatic code obfuscation
CN101031859A (zh) * 2004-09-30 2007-09-05 Ttpcom有限公司 程序源代码保护

Also Published As

Publication number Publication date
US9141787B2 (en) 2015-09-22
CN102483790A (zh) 2012-05-30
JP5808019B2 (ja) 2015-11-10
EP2430584B1 (en) 2019-11-13
KR101676326B1 (ko) 2016-11-15
EP2430584A4 (en) 2017-07-19
US20120192283A1 (en) 2012-07-26
JP2012526310A (ja) 2012-10-25
CA2761065A1 (en) 2010-11-11
WO2010127438A1 (en) 2010-11-11
EP2430584A1 (en) 2012-03-21
KR20120032477A (ko) 2012-04-05
CA2761065C (en) 2018-01-02

Similar Documents

Publication Publication Date Title
CN102483790B (zh) 利用白盒密码术的联锁二进制保护
CN106462677B (zh) 一种保护软件项目的方法和装置
CN103827880B (zh) 保护非本机代码安全的方法
CN106126981B (zh) 基于虚拟函数表替换的软件安全防护方法
US8938727B2 (en) Method for preventing software reverse engineering, unauthorized modification, and runtime data interception
JP2012526310A5 (zh)
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
EP2388730A1 (en) Method for generating software code
US20080288921A1 (en) Transformations for Software Obfuscation and Individualization
CN102047220A (zh) 生成软件应用程序的白盒实现的系统和方法
KR20140053757A (ko) 소프트웨어 라이브러리에서의 다양한 변형을 통한 압축과 보호를 위한 시스템과 방법
CN100538587C (zh) 数字数据保护设备
KR20130018642A (ko) 적대적 실행 환경 내에서 정적 및 동적 공격들에 대하여 자바 바이트코드 코드를 보호하는 시스템 및 방법
CN103460217A (zh) 用于保护应用程序和相关计算机程序产品的方法
Manikyam Program protection using software based hardware abstraction
CN112632536B (zh) 基于pe文件改造的内存加载方法
US7000119B1 (en) Instruction/data protection employing derived obscuring instruction/data
JP6698775B2 (ja) 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法
CN113420313A (zh) 程序安全运行、加密方法及其装置、设备、介质
WO2023279319A1 (en) Protected data packages
Zhu et al. Mobile code security on destination platform
Fukuda et al. To prevent reverse-enginnering tools by shuffling the stack status with hook mechanism
KR101704703B1 (ko) 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
CN113849780A (zh) So文件安全加固/调用方法、系统及可逆矩阵生成服务器
WO2019106655A1 (en) System and method for code protection against cyber threat

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: IRDETO B. V.

Free format text: FORMER OWNER: IRDETO CANADA CORP.

Effective date: 20150522

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150522

Address after: Holland Hoofddorp

Applicant after: Ai Dide Technology Co., Ltd.

Address before: Ontario, Canada

Applicant before: Irdeto Canada Corporation

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160120

Termination date: 20200506

CF01 Termination of patent right due to non-payment of annual fee