CN106416119B - 保护软件项目 - Google Patents
保护软件项目 Download PDFInfo
- Publication number
- CN106416119B CN106416119B CN201480079424.XA CN201480079424A CN106416119B CN 106416119 B CN106416119 B CN 106416119B CN 201480079424 A CN201480079424 A CN 201480079424A CN 106416119 B CN106416119 B CN 106416119B
- Authority
- CN
- China
- Prior art keywords
- software
- software project
- data
- project
- finite ring
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
Abstract
一种保护软件项目的方法,所述软件项目被布置成基于一个或多个数据项目实施数据处理,所述方法包括:对所述软件项目应用一种或多种软件保护技术以生成受保护的软件项目,其中所述一种或多种软件保护技术被布置成使得所述受保护的软件项目把所述数据处理至少部分地实施成在有限环上的一项或多项线性代数运算。
Description
技术领域
本发明涉及用于保护软件项目的方法、用于使用受保护的软件项目实施数据处理的方法以及用于实施此类方法的装置和计算机程序。
背景技术
众所周知的是,常常有针对软件项目的攻击被发起。攻击者可能希望获得包含在软件项目内的秘密信息(比如加密密钥),其目的是滥用该秘密信息(例如通过把加密密钥分发给其他人/***,从而使得这些人/***可以按照未经授权的方式使用加密密钥)。类似地,攻击者可能希望修改软件项目的执行流程。举例来说,软件项目可能具有检查软件项目的用户是否具有特定许可或访问权利的判定点——如果用户具有这些许可或访问权利,则软件项目可以准许用户访问特定功能或数据,否则会拒绝此类访问。攻击者可能希望尝试修改软件项目在该判定点处的执行,从而使得即使用户不具有许可或访问权利,软件项目仍然准许用户访问该特定功能或数据。
存在许多众所周知的软件保护技术,这些技术可以被应用于初始软件项目以便生成受保护的软件项目,其目的是使得攻击者不可能成功进行其攻击(或者至少足够困难)。
发明内容
确保可以按照安全并且可升级的方式以及按照可以容易并且高效地实施安全性审核的方式高效地应用软件保护技术是一项困难的挑战。本发明的实施例旨在解决这样的问题。
根据本发明的第一方面,提供一种保护软件项目的方法,所述软件项目被布置成基于一个或多个数据项目实施数据处理,所述方法包括:对所述软件项目应用一种或多种软件保护技术以生成受保护的软件项目,其中所述一种或多种软件保护技术被布置成使得所述受保护的软件项目把所述数据处理至少部分地实施成在有限环上的一项或多项线性代数运算。
在一些实施例中,所述一项或多项线性代数运算当中的每一项是在所述有限环上的针对向量空间的相应线性代数运算,并且其中所述一项或多项线性代数运算当中的每一项对被表示成所述向量空间的一个或多个元素的相应输入数据进行运算以产生相应输出数据。对于所述一项或多项线性代数运算当中的至少一项,所述相应输入数据可以至少部分地基于所述一个或多个数据项目当中的至少一个。所述有限环可以是环,并且所述向量空间于是可以是向量空间,其中n是正整数。
在一些实施例中,所述数据处理包括在有限环上的算术运算,并且所述对所述软件项目应用所述一种或多种软件保护技术包括使用在所述有限环上的一项或多项线性代数运算在所述受保护的软件项目中实施所述算术运算。
在一些实施例中,所述数据处理包括在有限环上的逻辑运算,并且所述对所述软件项目应用所述一种或多种软件保护技术包括使用在所述有限环上的一项或多项线性代数运算在所述受保护的软件项目中实施所述逻辑运算。
在一些实施例中,所述数据处理包括以下各项当中的至少一项:(a)至少部分地基于所述一个或多个数据项目当中的至少一个的判定;(b)安全性相关功能;(c)访问控制功能;(d)加密功能;以及(e)权利管理功能。
在一些实施例中,所述一种或多种软件保护技术包括以下各项当中的一项或多项:(i)白盒保护技术;(ii)节点锁定技术;(iii)数据流模糊;以及(iv)控制流模糊。
根据本发明的第二方面,提供一种对一个或多个数据项目实施数据处理的方法,其中所述数据处理包括以下各项当中的至少一项:(a)至少部分地基于所述一个或多个数据项目当中的至少一个的判定;(b)安全性相关功能;(c)访问控制功能;(d)加密功能;以及(e)权利管理功能;其中所述方法包括:执行受保护的软件项目,所述受保护的软件项目把所述数据处理至少部分地实施成在有限环上的一项或多项线性代数运算。
在一些实施例中,所述一项或多项线性代数运算当中的每一项是在所述有限环上的针对向量空间的相应线性代数运算,并且所述一项或多项线性代数运算当中的每一项对被表示成所述向量空间的一个或多个元素的相应输入数据进行运算以产生相应输出数据。对于所述一项或多项线性代数运算当中的至少一项,所述相应输入数据可以至少部分地基于所述一个或多个数据项目当中的至少一个。所述有限环可以是环,并且所述向量空间可以是向量空间,其中n是正整数。
在一些实施例中,所述数据处理包括在有限环上的算术运算,并且所述受保护的软件项目使用在所述有限环上的一项或多项线性代数运算来实施所述算术运算。
在一些实施例中,所述数据处理包括在有限环上的逻辑运算,并且所述受保护的软件项目使用在所述有限环上的一项或多项线性代数运算来实施所述逻辑运算。
根据本发明的第三方面,提供一种被布置成实施至少一种前面提到的方法的装置。
根据本发明的第四方面,提供一种计算机程序,其在由处理器执行时使得处理器实施至少一种前面提到的方法。所述计算机程序可以被存储在计算机可读介质上。
附图说明
现在将参照附图仅通过举例的方式来描述本发明的实施例,其中:
图1示意性地图示了计算机***的一个示例;以及
图2示意性地图示了根据本发明的一个实施例的***。
具体实施方式
在后面的描述中以及在附图中描述了本发明的特定实施例。但是将认识到,本发明不限于所描述的实施例,并且一些实施例可以不包括后面所描述的所有特征。但是将显而易见的是,在不背离所附权利要求书中所阐述的本发明的更宽泛的精神和范围的情况下,可以在这里做出各种修改和改变。
1—***总览
图1示意性地图示了计算机***100的一个示例。***100包括计算机102。计算机102包括:存储介质104,存储器106,处理器108,接口110,用户输出接口112,用户输入接口114,以及网络接口116,它们全部通过一条或多条通信总线118链接在一起。
存储介质104可以是任何形式的非易失性数据存储设备,比如硬盘驱动器、磁盘、光盘、ROM等等当中的一项或多项。存储介质104可以存储供处理器108执行的操作***,以使得计算机102运转。存储介质104还可以存储一个或多个计算机程序(或者软件或指令或代码)。
存储器106可以是适合于存储数据和/或计算机程序(或者软件或指令或代码)的任何随机存取存储器(存储单元或易失性存储介质)。
处理器108可以是适合于执行一个或多个计算机程序(比如存储在存储介质104上和/或存储器106中的计算机程序)的任何数据处理单元,其中一些计算机程序可以是根据本发明的实施例的计算机程序,或者是在由处理器108执行时使得处理器108实施根据本发明的一个实施例的方法并且把***100配置成根据本发明的一个实施例的***的计算机程序。处理器108可以包括单个数据处理单元,或者并行地或彼此协作地操作的多个数据处理单元。处理器108在实施针对本发明的实施例的数据处理操作时可以向存储介质104和/或存储器106存储数据和/或从其读取数据。
接口110可以是用于提供去到处于计算机102外部或者可以从计算机102移除的设备122的接口的任何单元。设备122可以是数据存储设备,例如光盘、磁盘、固态存储设备等等当中的一项或多项。设备122可以具有处理能力——例如所述设备可以是智能卡。接口110因此可以根据其接收自处理器108的一条或多条命令从设备122访问数据、或者向设备122提供数据或者与设备122接口。
用户输入接口114被布置成接收来自***100的用户或操作员的输入。用户可以通过连接到用户输入接口114或者与之通信的***100的一个或多个输入设备(比如鼠标(或其他指示设备)126和/或键盘124)来提供该输入。但是将认识到,用户可以通过一个或多个附加的或替换的输入设备(比如触摸屏)来向计算机102提供输入。计算机102可以把通过用户输入接口114接收自输入设备的输入存储在存储器106中以供处理器108随后访问和处理,或者可以将其直接传递到处理器108,从而使得处理器108可以相应地对用户输入做出响应。
用户输出接口112被布置成向***100的用户或操作员提供图形/视觉和/或音频输出。因此,处理器108可以被布置成指令用户输出接口112形成表示所期望的图形输出的图像/视频信号,并且将该信号提供到与用户输出接口112连接的***100的监视器(或者屏幕或显示单元)120。附加地或替换地,处理器108可以被布置成指令用户输出接口112形成表示所期望的音频输出的音频信号,并且将该信号提供到与用户输出接口112连接的***100的一个或多个扬声器121。
最后,网络接口116为计算机102提供从一个或多个数据通信网络下载数据和/或上传数据到一个或多个数据通信网络的功能。
将认识到,在图1中图示并且在前面描述的***100的架构仅仅是示例性的,并且在本发明的实施例中可以使用具有不同架构(例如具有少于图1中所示出的组件或者具有图1中所示出的之外的附加和/或替换组件)的其他计算机***100。作为示例,计算机***100可以包括以下各项当中的一项或多项:个人计算机;服务器计算机;移动电话;平板设备;膝上型计算机;电视机;机顶盒;游戏机;其他移动设备或消费电子设备;等等。
图2示意性地图示了根据本发明的一个实施例的***200。***200包括:软件生成***210;软件保护***250;用户***280;以及网络290。
软件生成***210包括(或者执行或使用)生成初始软件项目220的软件生成工具212。软件生成工具212例如可以是软件生成***210的处理器所执行的软件应用。软件生成***210可以被布置成自主地生成初始软件项目220;附加地或替换地,软件生成***210可以被布置成在一个或多个软件开发人员的控制下生成初始软件项目220,所述软件开发人员至少部分地编写形成初始软件项目220的部分的软件代码。用于生成或开发软件项目的工具是非常众所周知的,因此这里将不更详细地描述。
初始软件项目220可以包括源代码、对象代码、可执行代码和二进制代码当中的一项或多项。初始软件项目220可以用一种或多种编程语言来编程或编写,所述编程语言可以包括编译编程语言和/或解译或脚本编程语言。初始软件项目220可以包括一个或多个模块或软件组件或计算机程序,其可以被呈现或存储在一个或多个文件内。实际上,初始软件项目220可以是整个软件应用、软件库、或者一个或多个软件函数或过程的整体或一部分或者介于其间的任何情况(正如本领域技术人员将认识到的那样)。
在由处理器执行时,初始软件项目220被布置成基于一个或多个数据项目来实施(或者使得处理器实施)数据处理。每一个数据项目可以分别是任何类型的数据,比如音频数据、视频数据、多媒体数据、文本数据、财务数据、一个或多个加密密钥、数字权利管理数据、条件访问数据等等。所述数据处理可以包括以下各项当中的一项或多项:(a)至少部分地基于所述一个或多个数据项目当中的至少一个的判定;(b)安全性相关功能;(c)访问控制功能;(d)加密功能;以及(e)权利管理功能。但是将认识到,数据处理可以包括一种或多种其他类型的功能或操作作为前面的示例的附加或替换。作为一个示例,数据处理可以涉及提供对于作为已加密内容接收和/或存储的内容(比如音频和/或视频数据)的用户访问,其中只有在用户具有适当的访问许可/权利的情况下才为用户提供对于内容的访问。因此,所述一个或多个数据项目可以包括:已加密内容;关于用户和/或用户***280的细节或用户和/或用户***280的标识;规定一项或多项许可和/或权利的数据;以及一个或多个加密密钥(其可以作为初始软件项目220的部分而被存储)。因此,希望保护初始软件项目220,以使得攻击者无法按照未经授权的方式使用初始软件项目220,未经授权方式是指即使攻击者未被授权访问内容也能够通过该方式获得对于内容的访问;也就是说防止攻击者绕过由初始软件项目220提供的条件访问和/或数字权利管理功能(例如通过确定一个或多个解密密钥,或者规避初始软件项目220中的涉及是否应当为用户提供对于内容的访问的判定点或分支点)。将认识到,当然存在将希望为之提供针对攻击者的保护(出于类似的或者可能的其他原因)的初始软件项目220所能实施的其他功能和/或初始软件项目220所使用的其他信息。因此,如图2中所示,初始软件项目220被提供(或者传输或传送)到软件保护***250。
软件保护***250包括(或者执行或使用)软件保护工具252。软件保护工具252例如可以是软件保护***250的处理器所执行的软件应用。软件保护工具252被布置成接收初始软件项目220作为输入。软件保护工具252基于所接收到的初始软件项目220生成受保护的软件项目260。软件保护工具252生成受保护的软件项目260的方法将在后面描述。
软件保护***250可以包括软件数据库254。软件数据库254包括可以由软件保护工具252在生成受保护的软件项目260时使用的软件的一个或多个部分——后面将对此进行更加详细的描述。
软件生成***210和软件保护***250可以由不同的实体运行或操作。因此,如图2中所示,软件保护***250可以向软件生成***210输出受保护的软件项目260。在该模型的情况下,软件保护***250向软件生成***210提供保护服务。替换地,软件生成***210和软件保护***250可以由相同的实体运行或操作——实际上,软件生成***210和软件保护***250可以形成单个***的部分(在图2中通过虚线270图示),该***使用软件生成工具212生成初始软件项目220,并且使用软件保护工具252通过生成受保护的软件项目260来保护该初始软件项目220。
因此,软件生成***210和/或软件保护***250可以通过网络290向用户***280输出(或者提供或传送)受保护的软件项目260。但是将认识到,可以由未在图2中示出的不同实体来实施受保护的软件项目260的分发。
还将认识到,在受保护的软件项目260已经由软件保护***250生成之后并且在分发到用户***280之前,受保护的软件项目260可以经历各种附加的处理。因此将认识到,在后面的描述中,对受保护的软件项目260的分发或使用的提及包括通过对受保护的软件项目260应用附加的处理所得到的软件片段的分发或使用。举例来说,受保护的软件项目260可能需要被编译和/或与其他软件项目链接(例如如果受保护的软件项目260将要形成将被分发到用户***280的更大软件应用的部分的话)。然而将认识到,可以不需要这样的附加处理(例如如果受保护的软件项目260是准备好分发的最终的JavaScript片段的话)。
网络290可以是适合于向用户***280传送或传输受保护的软件项目260的任何种类的数据通信网络。因此,网络290可以包括以下各项当中的一项或多项:局域网,广域网,城域网,因特网,无线通信网络,有线或电缆通信网络,卫星通信网络,电话网络等等。软件生成***210和/或软件保护***250可以被布置成通过网络290经由任何适当的数据通信协议与用户***280进行通信。实际上,可以通过物理介质(比如存储在一个或多个CD或DVD上)将受保护的软件项目260提供到用户***280,因此网络290于是可以包括用于通过物理方式把物理介质递送到用户***280的递送***。
用户***280被布置成使用受保护的软件项目260,例如通过在用户***280的一个或多个处理器上执行受保护的软件项目280。
用户***280可以是适合于执行受保护的软件项目280的任何***。因此,用户***280可以是以下各项当中的一项或多项:个人计算机,膝上型计算机,笔记本计算机,平板计算机,移动电话,机顶盒,电视,服务器,游戏机等等。软件保护***250和软件生成***210例如可以包括一台或多台个人计算机和/或服务器计算机。因此,用户***280、软件保护***250和软件生成***210当中的每一个可以包括前面参照图1描述的一个或多个相应的***100。
将认识到,虽然图2把***200图示成包括单个用户设备280、单个软件生成***210和单个软件保护***250,但是***200可以包括多个用户设备280和/或多个软件生成***210和/或多个软件保护***250。
2—软件保护技术
正如前面所提到的那样,软件保护工具252的目的是保护初始软件项目220的功能或数据处理,和/或保护由初始软件项目220使用或处理的数据。具体来说,受保护的软件项目260将提供与初始软件项目220相同的功能或数据处理——但是该功能或数据处理以一种方式被实施在受保护的软件项目260中使得用户***280的操作员无法按照非预期的或者未经授权的方式从受保护的软件项目260访问或使用该功能或数据处理(然而,如果为用户***280提供了初始软件项目220,则用户***280的操作员可能能够按照非预期的或者未经授权的方式访问或使用所述功能或数据处理)。类似地,受保护的软件项目260可以按照受保护的或者模糊化的方式存储秘密信息(比如加密密钥),从而使得攻击者更难(如果不是不可能的话)推断出或访问该秘密信息(然而,如果为用户***280提供了初始软件项目220,则用户***280的操作员可能能够从初始软件项目220推断出或访问该秘密信息)。
例如:
-初始软件项目220可以包括至少部分地基于将由初始软件项目220处理的一个或多个数据项目当中的至少一个的判定(或者判定块或分支点)。如果初始软件项目220被提供到用户***280,则攻击者可能能够强制初始软件项目220执行,从而使得在处理判定之后的执行路径被遵循,即使该执行路径原本不应当被遵循。举例来说,所述判定可以包括测试程序变量B是真(TRUE)还是假(FALSE),并且初始软件项目220可以被布置成使得如果判定识别出B为真,则执行路径PT被遵循/执行,而如果判定识别出B为假,则执行路径PF被遵循/执行。在这种情况下,攻击者可以(例如通过使用调试器)在判定识别出B为真的情况下强制初始软件项目220遵循路径PF,和/或在判定识别出B为假的情况下强制初始软件项目220遵循路径PT。因此,在一些实施例中,软件保护工具250旨在通过在生成受保护的软件项目260时对初始软件项目220内的判定应用一种或多种软件保护技术来防止攻击者这样做(或者至少使其更加困难)。
-初始软件项目220可以包括以下各项当中的一项或多项:安全性相关功能;访问控制功能;加密功能;以及权利管理功能。这样的功能常常涉及使用秘密数据,比如一个或多个加密密钥。所述处理可以涉及使用一个或多个加密密钥和/或对一个或多个加密密钥进行操作或者利用其进行操作。如果攻击者能够识别或确定秘密数据,则会发生安全漏洞,并且对于受到秘密数据保护的数据(比如音频和/或视频内容)的控制或管理可能会被规避掉。因此,在一些实施例中,软件保护工具250旨在通过在生成受保护的软件项目260时对初始软件项目220内的此类功能应用一种或多种软件保护技术来防止攻击者识别或确定一项或多项秘密数据(或者至少使其更加困难)。
“白盒(white-box)”环境是用于软件项目的执行环境,其中假设软件项目的攻击者对于软件项目的正***作的数据(包括中间数值)、存储器内容以及执行/过程流程具有完全的访问权限和可见性。此外,在白盒环境中,假设攻击者能够例如通过使用调试器修改软件项目的正***作的数据、存储器内容以及执行/过程流程——这样,攻击者可以对软件项目的操作进行实验并且尝试操纵软件项目的操作,其目的是规避初始意图的功能和/或识别秘密信息和/或出于其他目的。实际上,人们甚至可以假设攻击者知晓正由软件项目实施的底层算法。但是软件项目可能需要使用秘密信息(例如一个或多个加密密钥),其中该信息需要对于攻击者保持隐藏。类似地,将会希望防止攻击者修改软件项目的执行/控制流,例如防止攻击者强制软件项目在判定块之后采取并非合法执行路径的一条执行路径。有许多技术(其在这里被称作“白盒模糊技术”)用于把初始软件项目220变换成受保护的软件项目260,从而使得受保护的软件项目260抵抗白盒攻击,也就是说使得受保护的软件项目260在白盒环境中执行时抵抗攻击者的攻击(比如前面所提到的攻击)。这样的白盒模糊技术的示例可以在如下文献中找到:“White-Box Cryptography and an AES Implementation” S. Chow et al,Selected Areas in Cryptography,9th AnnualInternational Workshop,SAC 2002,Lecture Notes in Computer Science 2595(2003),p250-270)以及“A White-box DES Implementation for DRM Applications”,S. Chow etal,Digital Rights Management,ACM CCS-9 Workshop,DRM 2002,Lecture Notes inComputer Science 2696(2003),p1-15,其全部公开内容通过引用被合并在此。附加的示例可以在US61/055,694和WO2009/140774中找到,这两个文献的全部公开内容通过引用被合并在此。一些白盒模糊技术实施数据流模糊——例如参见US7,350,085、US7,397,916、US6,594,761和US6,842,862,其全部公开内容通过引用被合并在此。一些白盒模糊技术实施控制流模糊——例如参见US6,779,114、US6,594,761和US6,842,862,其全部公开内容通过引用被合并在此。但是将认识到,存在其他白盒模糊技术,并且本发明的实施例可以使用任何白盒模糊技术。
作为另一个示例,有可能的情况是初始软件项目220可能意图被提供(或者分发)到特定用户设备280(或者特定用户设备280的集合)并且由其使用,并且因此希望把软件项目220“锁定”到(一个或多个)特定用户设备280,也就是说防止软件项目220在另一个用户设备280上执行。因此,有许多技术(其在这里被称作“节点锁定”技术)用于把初始软件项目220变换成受保护的软件项目260,从而使得受保护的软件项目260可以在一个或多个预定/特定用户设备280上执行(或者由其执行)但是将不会在其他用户设备上执行。这样的节点锁定技术的示例可以在WO2012/126077中找到,该文献的全部公开内容通过引用被合并在此。但是将认识到,存在其他节点锁定技术,并且本发明的实施例可以使用任何节点锁定技术。
数字加水印是一种众所周知的技术。具体来说,数字加水印涉及修改初始数字对象以产生加有水印的数字对象。做出修改以把特定数据(其被称作有效载荷数据)嵌入或隐藏到初始数字对象中。所述有效载荷数据例如可以包括标识数字对象的所有权或其他权利信息的数据。有效载荷数据可以标识加有水印的数字对象的(预期)接收者,在这种情况下,有效载荷数据被称作数字指纹——这样的数字加水印可以被用来帮助追踪数字对象的未经授权的拷贝的起源。数字加水印可以被应用于软件项目。这样的软件加水印技术的示例可以在US7,395,433中找到,该文献的全部公开内容通过引用被合并在此。但是将认识到,存在其他软件加水印技术,并且本发明的实施例可以使用任何软件加水印技术。
可能希望把受保护的软件项目260的不同版本提供到不同的用户***280。受保护的软件项目260的不同版本为不同的用户***280提供相同的功能——但是受保护的软件项目260的不同版本被不同地编程或实施。这样有助于限制攻击者成功地攻击受保护的软件项目260的影响。具体来说,如果攻击者成功地攻击了他的受保护的软件项目260的版本,则该攻击(或者通过该攻击发现或访问的比如加密密钥之类的数据)可能不适于供受保护的软件项目260的不同版本使用。因此,有许多技术(其在这里被称作“多样性(diversity)”技术)用于把初始软件项目220变换成受保护的软件项目260,从而使得受保护的软件项目260的不同版本被生成(也就是说从而引入“多样性”)。这样的多样性技术的示例可以在WO2011/120123中找到,该文献的全部公开内容通过引用被合并在此。但是将认识到,存在其他多样性技术,并且本发明的实施例可以使用任何多样性技术。
前面提到的白盒模糊技术、节点锁定技术、软件加水印技术和多样性技术是软件保护技术的示例。将认识到,存在对初始软件项目220应用保护以生成受保护的软件项目260的其他方法。因此,这里所使用的术语“软件保护技术”应当被理解成表示对初始软件项目220应用保护以生成受保护的软件项目260的任何方法(目的是挫败攻击者的攻击,或者至少使得攻击者成功进行他的攻击更加困难),比如任一种前面提到的白盒模糊技术和/或任一种前面提到的节点锁定技术和/或任一种前面提到的软件加水印技术和/或任一种前面提到的多样性技术。
在本发明的实施例中,软件保护工具252可以对初始软件项目220应用一种或多种前面提到的软件保护技术,以便生成受保护的软件项目260。
存在许多方式可以用来在受保护的软件项目260内实施前面提到的软件保护,也就是说存在许多方式可以用来对初始软件项目应用前面提到的软件保护技术以获得受保护的软件项目260。具体来说,为了从初始软件项目220生成受保护的软件项目260,软件保护工具252可以修改初始软件项目220内的一个或多个代码部分,和/或可以将一个或多个新的代码部分添加或引入到初始软件项目220中。用来做出这些修改的实际方式或者用来编写新的代码部分的实际方式当然可以有所不同——毕竟存在许多编写软件以实现相同功能的方式。但是已经创造性地认识到,实施软件保护技术的当前方法存在以下问题:
(a)一些软件保护技术(或者一些软件保护技术的至少部分)的应用是手动过程。因此,所应用的软件保护将特定于初始软件项目220及其特性。这意味着保护的质量或强度将取决于正在手动实施或应用软件保护的安全团队的技术。于是这可能对软件保护技术的应用的后续自动化步骤具有负面影响(例如在所得到的受保护的软件项目260的代码的效率和/或尺寸和/或安全性方面)。
(b)一些软件保护技术(比如白盒模糊技术)的应用常常导致非常晦涩(obscure)的代码。晦涩性并不一定意味着安全性,因为这使得安全性审核任务变得复杂,并且可能导致未被检测到的弱点。将希望能够消除这样的未被检测到的弱点(或者至少降低其可能性),并且使得安全性审核任务更加容易。此外,如果在后来检测到弱点,则固有的晦涩性意味着使得提供软件更新以修正所检测到的弱点的能力更加困难、缓慢并且成本高昂。
(c)初始软件项目220常常涉及使用混合的算术和逻辑数学(比如)。这总是会使得一些软件保护技术对初始软件项目220的应用更加困难,并且减少了针对使得一些软件保护技术的应用自动化的选项。
(d)一些软件保护技术适用于字注释(word-wise)数据元素(例如其总是对被表示成32比特字的数据进行运算)。这代表着风险,因为这使得攻击者更容易追踪关键资产和/或检测处理样式。
如应当变得显而易见的,本发明的实施例解决了这些问题当中的一个或多个个。
3—在有限环上使用向量空间
在本发明的实施例中,软件保护工具252对初始软件项目220应用一种或多种软件保护技术,从而使得所得到的受保护的软件项目260把数据处理(即如前面所描述的由初始软件项目220提供的功能)至少部分地实施成在有限环上的一项或多项线性代数运算。
具体来说,受保护的软件项目260把数据处理至少部分地实施成在有限环上的一项或多项线性代数运算,而不是仅仅使用在有限环上的算术运算或者在有限环上的逻辑运算来实施该数据处理。举例来说,初始软件项目220通常被编写成使得程序变量和数据实际上是有限环的元素(或者被表示成其元素),也就是具有对正整数n按模计算的加法和乘法的n比特数的环。于是初始软件项目220使用对作为该有限环的元素(或者被表示成该有限环的元素)的数据(或者参数或变量)进行运算的算术运算和逻辑运算来实施其功能。在这里,n常常是32或64(针对32比特或64比特字以及32比特或64比特处理器)。与此相对,在本发明的实施例中,所得到的受保护的软件项目260将数据处理至少部分地实施成在有限环上的一项或多项线性代数运算。在这里“线性代数”运算是对向量空间的一个或多个元素的运算或函数。
如根据后面的内容将变得显而易见的,有限环的元素可以被表示成在有限环上的向量空间的对应元素,并且反之亦然。在这里,向量空间是其元素为向量的向量空间,其中每一个向量的分量或元素是有限环的元素。类似地,有限环上的算术运算和该有限环上的逻辑运算可以被实施成针对向量空间的对应的相应线性代数运算,其中每一项线性代数运算对被表示成向量空间的一个或多个元素的相应输入数据进行运算,以便产生对应的输出数据。因此,在本发明的实施例中,软件保护工具252至少部分地通过如下方式实施一种或多种软件保护技术:将代码添加到初始软件项目220中和/或修改初始软件项目220的现有代码,从而使得所添加的代码和/或经过修改的代码包括(或者被实施成)针对向量空间的一项或多项线性代数运算(并且对向量空间的元素进行运算)。最终结果是初始软件项目220仍然使相同的软件保护技术对其应用——但是这些软件保护技术按照与他们先前被应用于初始软件项目220或者实施在初始软件项目220内的方式不同的方式被应用于初始软件项目220或者被实施在初始软件项目220内(不同点在于所添加的代码和/或对现有代码做出的(一项或多项)修改包括对向量空间的元素进行运算的针对向量空间的一项或多项线性代数运算)。
在后面,有限环将是前面所讨论的商环,并且向量空间将是向量空间(即向量空间的元素是具有本身是有限环的元素的n个元素/分量的向量)。但是将认识到,本发明的实施例同样适用于不同的有限环和向量空间。
3.1—从到的映射
定义函数如下:
于是函数提供把向量空间的任何元素u映射到有限环的元素的一种方式。因此,关于向量空间的一个或多个元素定义的表达式(或者公式或运算)可以被映射到对有限环的一个或多个对应元素进行运算的对应表达式(或者公式或运算)。
函数具有以下属性:。
将认识到,存在其他方式可以用来定义把向量空间的元素映射(或者关联)到有限环的对应元素的函数,并且本发明的实施例不限于前面给出的示例性函数。
3.2—从到的映射
设函数是把有限环的元素映射(关联)到向量空间的对应元素的函数。存在许多方式可以用来定义函数,并且将认识到,本发明的实施例不限于后面给出的示例。
函数的一个示例是如下定义的函数:
函数的另一个示例是如下定义的函数。如果并且的二进制表示是,则
注意。
3.3— 的元素的归一化形式
定义函数如下:
向量空间的元素可以被视为向量空间的元素u的“归一化”形式。应当简要描述函数的使用。
注意,对于环的任何元素p,如果,则。
3.4—逻辑乘法
定义函数如下:
其中,,,并且M(u)标示具有如下定义的元素mij的对角矩阵:对于i=0,…,n-1,mii=ui,并且对于i≠j,mij=0。
应当简要描述函数的使用。
3.5— 的元素的加法
注意,
因此,如果中的两个元素p和q在中被表示成和,则中的p和q的和p+q等效于中的和u+v。这是因为通过映射把u+v从映射回到得到。
3.6— 的元素的乘法
定义函数如下:
其中,,,并且。
注意,
因此,如果中的两个元素p和q在中被表示成和,则中的p和q的乘积等效于中的乘积。这是因为通过映射把从映射回到得到。
3.7— 的元素的多项式变换
考虑通过系数如下定义的二次变换T:
如果中的元素x在中被表示成,则我们需要确定中的哪一个元素u等效于中的经过变换的元素,也就是中的使得的元素u。
设。则
其中并且
其中,
因此,如果中的元素x在中被表示成,则中的经过变换的元素等效于中的元素。这是因为通过映射把u从映射回到得到。
我们还有:
将认识到,前述内容类似地适用于任意阶的任何多项式变换。具体来说,考虑通过系数如下定义的一般多项式变换T:。于是如果中的元素x在中被表示成,则中的经过变换的元素等效于中的元素。这是因为通过映射把u从映射回到得到。
3.8— 的元素的逻辑与(AND)
定义函数或算子如下:
其中,,并且。
于是。因此,如果中的两个元素p和q在中被表示成和,则中的p和q的逻辑(逐比特)与等效于中的。这是因为通过映射把从映射回到得到 。
3.9— 的元素的逻辑异或(XOR)
定义函数或算子如下:
于是
。
因此,如果中的两个元素p和q在中被表示成和,则中的p和q的逻辑(逐比特)异或等效于中的。这是因为通过映射把从映射回到得到:
3.10— 的元素的其他逻辑算子
由于针对的元素的所有逻辑算子都可以按照针对的元素的逻辑(逐比特)与和异或算子来表达,并且由于针对的元素的逻辑(逐比特)与和异或算子在中具有对应的线性代数算子,因此针对的元素的所有其他逻辑算子都可以按照前面提到的线性代数算子和来表达。
3.11— 的元素的移位运算
定义函数:如下:
其中,,并且其中是如下定义的矩阵:
假设中的元素x在中被表示成,并且假设x的二进制表示是,使得,于是中的向右移位k个位置得到中的元素,其二进制表示是。中的元素等效于中的元素。这是因为通过映射把从映射回到得到,由于,使得。因此,。
类似地,定义函数如下:
其中,,并且其中是如下定义的矩阵:
假设中的元素x在中被表示成,并且假设x的二进制表示是,使得,于是中的向左移位k个位置得到中的元素,其二进制表示是。中的元素等效于中的元素。这是因为通过映射把从映射回到得到 ,由于,使得。因此,。
3.12— 的其他函数或算子
前面的示例性函数和算子表明,对于(a)对作为环的元素的一个或多个运算对象(或参数)进行运算以便(b)生成作为环的元素的一项或多项结果的函数F1,存在等效的函数或算子F2,其(a)根据与之间的映射对作为向量空间的元素并且对应于的一个或多个运算对象(或参数)进行运算并且(b)根据与之间的映射生成对应于的一项或多项结果。虽然在前面已经描述了中的多个示例性函数和算子及其在中的等效函数和算子,但是将认识到,基于这些示例可以定义和确定中的更多函数和算子及其在中的等效函数和算子。此外,按照类似于前面所讨论的方式,技术人员将能够针对中的任何函数或算子确定其在中的等效函数或算子。
因此将认识到,软件保护工具252可以被布置成至少部分地通过如下方式实施一种或多种软件保护技术:将代码添加到初始软件项目220中和/或修改初始软件项目220的现有代码从而使得所添加的代码和/或经过修改的代码包括(或者被实施成)针对向量空间的一项或多项线性代数运算(并且对向量空间的元素进行运算),这代替使用在有限环上的一项或多项算术和/或逻辑运算来添加代码和/或修改代码。举例来说,使用前面的等效性,可以把实施一种或多种软件保护技术(但是仅仅使用在环上的算术和/或逻辑运算这样做)的现有技术转换成按照功能上等效的方式实施所述一种或多种软件保护技术(但是使用针对向量空间的线性代数运算这样做)的技术。
在一些实施例中,软件保护***250包括数据库254。数据库254包括可以由软件保护工具252在生成受保护的软件项目260时使用的软件或代码的一个或多个部分。举例来说,数据库254可以包括用于实施如在前面的3.7节中阐述的向量空间中的多项式变换的代码的一个或多个部分。通过这种方式,可以开发并且保持参考/模板代码部分的集合,以供将来由软件保护252和/或软件保护252的操作员使用。如图2中所示,数据库254中的这些代码部分当中的一个或多个可以利用软件生成***210来编写或开发。
通过采用在有限域上使用线性代数运算而不是在有限域上使用算术和/或逻辑运算的方法来实施软件保护技术,提供了许多优点和好处。举例来说:
-使用精简的数学运算集合(也就是有限域上的线性代数运算)实施软件保护技术,从而建立有助于改进安全性审核的标准。具体来说,安全性审核的范围可以被扩展到软件保护技术的设计。工程团队(其编写初始软件项目220和/或使用软件保护工具252实施软件保护技术)与安全性审核团队之间的沟通和理解可以得到改进,这是因为基于该精简的数学运算集合实现对于保护框架的更好的共识。
-通过把算术和逻辑运算表达成针对向量空间的线性代数运算,消除了前面提到的保护包括混合算术/逻辑数学的初始软件项目220的困难。这于是使得软件保护过程更自动化。
-对于弱点和安全漏洞的分析以及产生针对此类弱点和漏洞的解决方案得到了促进,这是因为软件保护技术是使用精简的数学运算集合来实施的。
4—示例
下面提供了前面所提到的技术的示例。但是将认识到,这仅仅是一个示例,并且本发明的实施例可以同样被应用于其他软件保护技术并且按照其他方式来应用。
假设初始软件项目220被布置成生成控制字CW(即用于对已加密内容进行解密的加密密钥)。因此,初始软件项目220可以根据公式或函数来计算CW,其中M是“掩码”,并且K是密钥,具体来说M和K都是32比特无符号字。
环是,并且向量空间是。
M和K都是的元素,因此设和是它们在中的等效元素。
用于保护对一个或多个软件变量进行运算的函数的一种众所周知的技术涉及对这些变量应用相应的线性变换,并且随后对这些经过变换的变量实施所述函数的经过变换的版本——例如参见如下文献:“White-Box Cryptography and an AES Implementation”,S. Chow et al,Selected Areas in Cryptography,9th AnnualInternational Workshop,SAC 2002,Lecture Notes in Computer Science 2595(2003),p250-270以及“A White-box DES Implementation for DRM Applications”,S. Chow etal,Digital Rights Management,ACM CCS-9 Workshop,DRM 2002,Lecture Notes inComputer Science 2696(2003),p1-15。对经过变换的变量实施函数的经过变换的版本的结果本身可以被变换,以便随后从该函数获得正确的结果。这产生了正确的结果,但是该处理将是对经过变换的变量实施的,而从未揭示这些变量的真实(未经变换的)数值,从而对攻击者隐藏了这些数值。
将这个过程应用于本示例,然后对于,定义变换和如下:
和,其中如果,则。因此,是函数的逆。类似地,对于,定义变换和如下:
和,其中如果,则。因此,是函数的逆。随后,可以获得和的经过变换的版本如下:和。
正如前面所讨论的那样,如果中的两个元素p和q在中被表示成和,则中的p和q的逻辑(逐比特)异或等效于中的。因此,中的M和K的逻辑(逐比特)异或等效于中的。
于是:
其中,。
因此人们可以把cw表达成cw=A+B+C,其中
因此,可以使用线性代数运算来计算向量A、B和C。内容提供者或条件访问***于是可以像前面那样生成向量A、B和C,并且随后将这些向量传送到用户***280。在用户***280上执行的受保护的软件项目260不是被布置成从内容提供者或条件访问***接收M和K并且如在初始软件项目220中那样计算,而是被布置成从内容提供者或条件访问***接收向量A、B和C并且计算 。
因此,已经对初始软件项目220应用了前面提到的软件保护技术以生成受保护的软件项目260,其中所述软件保护技术是使用针对的线性代数运算来实施的。
在前面的示例中,关于把cw划分成特定的向量A、B和C的选择是有用的,这是因为:B更新用户***280上的掩码M,C包含与内容有关的密钥K,并且A随后把B和C“粘合”在一起以使得用户***280能够如前面所阐述的那样获得CW。用户***280不需要明确地对向量A、B和C进行“去变换(de-transform)”以便明确地计算掩码M和密钥K从而计算CW,因此观察所述处理(例如在调试器中)的攻击者无法确定掩码M和密钥K的数值,即使掩码M和密钥K正被使用。
但是将认识到,存在其他方式可以用来把cw划分成两个或更多个向量,并且本发明的实施例不限于把cw划分成如前面所阐述的特定向量A、B和C。
5—修改
将认识到,所描述的方法被示出为按照特定顺序实施的个体步骤。但是技术人员将认识到,这些步骤可以被组合或者按照不同的顺序来实施,同时仍然实现所期望的结果。
将认识到,可以使用各种不同的信息处理***来实施本发明的实施例。具体来说,虽然附图及其讨论提供了示例性的计算***和方法,但是这些仅仅是为了在讨论本发明的各个方面时提供有用的参考而被呈现的。本发明的实施例可以被实施在任何适当的数据处理设备上,数据处理设备比如是个人计算机、膝上型计算机、个人数字助理、移动电话、机顶盒、电视、服务器计算机等等。当然,对于所述***和方法的描述出于讨论的目的而被简化,并且其仅仅是可以被用于本发明的实施例的许多不同类型的***和方法的其中之一。将认识到,逻辑块之间的边界仅仅是说明性的,并且替换的实施例可以合并逻辑块或元件,或者可以对各个逻辑块或元件施加替换的功能分解。
将认识到,前面提到的功能可以被实施成作为硬件和/或软件的一个或多个对应模块。举例来说,前面提到的功能可以被实施成一个或多个软件组件以供***的处理器执行。替换地,前面提到的功能可以被实施成硬件,比如在一个或多个现场可编程门阵列(FPGA)上,和/或一个或多个专用集成电路(ASIC),和/或一个或多个数字信号处理器(DSP),和/或其他硬件布置。前面所描述的方法步骤各自可以由对应的相应模块实施;多个方法步骤可以一起由单个模块实施。
将认识到,如果本发明的实施例是通过计算机程序实施的,则承载计算机程序的存储介质和传送介质形成本发明的方面。计算机程序可以具有一条或多条程序指令或程序代码,其在由计算机执行时实施本发明的实施例。这里所使用的术语“程序”可以是被设计用于在计算机***上执行的指令序列,并且可以包括子例程、函数、过程、模块、对象方法、对象实施方式、可执行应用、小应用程序、小服务程序、源代码、对象代码、共享库、动态链接库和/或被设计用于在计算机***上执行的其他指令序列。存储介质可以是磁盘(比如硬盘驱动器或软盘)、光盘(比如CD-ROM、DVD-ROM或BluRay盘)或者存储器(比如ROM、RAM、EEPROM、EPROM、闪存或者便携式/可移除存储器设备)等等。传送介质可以是通信信号、数据广播、两台或更多台计算机之间的通信链接等等。
Claims (14)
1.一种保护软件项目的方法,所述软件项目被布置成基于一个或多个数据项目实施数据处理,所述方法包括:
对所述软件项目应用一种或多种软件保护技术以生成受保护的软件项目,其中所述一种或多种软件保护技术被布置成使得所述受保护的软件项目把所述数据处理至少部分地实施成在有限环上的一项或多项线性代数运算。
2.根据权利要求1所述的方法,其中,所述一项或多项线性代数运算当中的每一项是在所述有限环上的针对向量空间的相应线性代数运算,并且其中所述一项或多项线性代数运算当中的每一项对被表示成所述向量空间的一个或多个元素的相应输入数据进行运算以产生相应输出数据。
3.根据权利要求2所述的方法,其中,对于所述一项或多项线性代数运算当中的至少一项,所述相应输入数据至少部分地基于所述一个或多个数据项目当中的至少一个。
4.根据权利要求2所述的方法,其中,所述有限环是环,并且所述向量
空间是向量空间,其中n是正整数。
5.根据任一在前权利要求所述的方法,其中,所述数据处理包括以下各项中的至少一项:
(a)在有限环上的算术运算,其中对所述软件项目应用所述一种或多种软件保护技术包括使用在所述有限环上的一项或多项线性代数运算在所述受保护的软件项目中实施所述算术运算;以及
(b)在有限环上的逻辑运算,其中对所述软件项目应用所述一种或多种软件保护技术包括使用在所述有限环上的一项或多项线性代数运算在所述受保护的软件项目中实施所述逻辑运算。
6.根据权利要求1-4中任一项所述的方法,其中,所述数据处理包括以下各项当中的至少一项:
(a)至少部分地基于所述一个或多个数据项目当中的至少一个的判定;
(b)安全性相关功能;
(c)访问控制功能;
(d)加密功能;以及
(e)权利管理功能。
7.根据权利要求1-4中任一项所述的方法,其中,所述一种或多种软件保护技术包括以下各项当中的一项或多项:
(i)白盒保护技术;
(ii)节点锁定技术;
(iii)数据流模糊;以及
(iv)控制流模糊。
8.一种对一个或多个数据项目实施数据处理的方法,其中所述数据处理包括以下各项当中的至少一项:(a)至少部分地基于所述一个或多个数据项目当中的至少一个的判定;(b)安全性相关功能;(c)访问控制功能;(d)加密功能;以及(e)权利管理功能;其中所述方法包括:
执行受保护的软件项目,所述受保护的软件项目把所述数据处理至少部分地实施成在有限环上的一项或多项线性代数运算。
9.根据权利要求8所述的方法,其中,所述一项或多项线性代数运算当中的每一项是在所述有限环上的针对向量空间的相应线性代数运算,并且其中所述一项或多项线性代数运算当中的每一项对被表示成所述向量空间的一个或多个元素的相应输入数据进行运算以产生相应输出数据。
10.根据权利要求9所述的方法,其中,对于所述一项或多项线性代数运算当中的至少一项,所述相应输入数据至少部分地基于所述一个或多个数据项目当中的至少一个。
11.根据权利要求9所述的方法,其中,所述有限环是环,并且所述向量
空间是向量空间,其中n是正整数。
12.根据权利要求8到11当中的任一项所述的方法,其中,所述数据处理包括以下各项中的至少一项:
(a)在有限环上的算术运算,其中所述受保护的软件项目使用在所述有限环上的一项或多项线性代数运算来实施所述算术运算;以及
(b)在有限环上的逻辑运算,其中所述受保护的软件项目使用在所述有限环上的一项或多项线性代数运算来实施所述逻辑运算。
13.一种被布置成实施根据权利要求1到12当中的任一项的方法的装置。
14.一种存储计算机程序的计算机可读介质,所述计算机程序在被一个或多个处理器执行时使得所述一个或多个处理器实施根据权利要求1-12中任一项的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2014/056416 WO2015149826A1 (en) | 2014-03-31 | 2014-03-31 | Protecting an item of software |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106416119A CN106416119A (zh) | 2017-02-15 |
CN106416119B true CN106416119B (zh) | 2019-10-11 |
Family
ID=50390109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480079424.XA Active CN106416119B (zh) | 2014-03-31 | 2014-03-31 | 保护软件项目 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10546155B2 (zh) |
EP (1) | EP3127269B1 (zh) |
CN (1) | CN106416119B (zh) |
WO (1) | WO2015149826A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015149826A1 (en) * | 2014-03-31 | 2015-10-08 | Irdeto B.V. | Protecting an item of software |
BR112017006236A2 (pt) | 2014-09-30 | 2017-12-12 | Koninklijke Philips Nv | dispositivo de cálculo eletrônico, dispositivo de codificação de anel, dispositivo de cálculo de tabela, método de cálculo eletrônico, programa de computador, e, mídia legível por computador |
WO2016092097A1 (en) | 2014-12-12 | 2016-06-16 | Koninklijke Philips N.V. | Electronic generation device |
CN107005403A (zh) * | 2014-12-22 | 2017-08-01 | 皇家飞利浦有限公司 | 电子计算设备 |
BR112017013588A2 (pt) * | 2014-12-24 | 2018-03-06 | Koninklijke Philips Nv | sistema para processamento criptográfico, dois sistemas, unidade de etapa para processamento criptográfico, método de processamento criptográfico, e produto de programa de computador |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594761B1 (en) * | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
US7809135B2 (en) * | 2000-12-08 | 2010-10-05 | Cloakware Corporation | System and method for protecting computer software from a white box attack |
CN103516767A (zh) * | 2012-06-26 | 2014-01-15 | 广达电脑股份有限公司 | 软件跨云部署机制及*** |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL128552A (en) * | 1996-08-19 | 2004-06-01 | Ntru Cryptosystems Inc | Method and device of a public key in a crypto system |
US6779114B1 (en) * | 1999-08-19 | 2004-08-17 | Cloakware Corporation | Tamper resistant software-control flow encoding |
CA2305078A1 (en) | 2000-04-12 | 2001-10-12 | Cloakware Corporation | Tamper resistant software - mass data encoding |
CA2350029A1 (en) | 2001-06-08 | 2002-12-08 | Cloakware Corporation | Sustainable digital watermarking via tamper-resistant software |
US8752032B2 (en) * | 2007-02-23 | 2014-06-10 | Irdeto Canada Corporation | System and method of interlocking to protect software-mediated program and device behaviours |
CN102047220B (zh) | 2008-05-23 | 2014-12-17 | 爱迪德加拿大公司 | 生成软件应用程序的白盒实现的***和方法 |
EP2227014B1 (en) | 2009-03-02 | 2019-10-02 | Irdeto B.V. | Securely providing secret data from a sender to a receiver |
EP3812894B1 (en) | 2010-03-31 | 2024-02-07 | Irdeto B.V. | A system and method for encapsulating and enabling protection through diverse variations in software libraries |
CA2830846C (en) | 2011-03-21 | 2018-08-28 | Irdeto B.V. | System and method for securely binding and node-locking program execution to a trusted signature authority |
EP2831797B1 (en) * | 2012-03-30 | 2018-05-02 | Irdeto B.V. | Securing accessible systems using dynamic data mangling |
US9191208B2 (en) * | 2012-12-18 | 2015-11-17 | Empire Technology Development Llc | Schemes for signcryption |
WO2015149826A1 (en) * | 2014-03-31 | 2015-10-08 | Irdeto B.V. | Protecting an item of software |
-
2014
- 2014-03-31 WO PCT/EP2014/056416 patent/WO2015149826A1/en active Application Filing
- 2014-03-31 EP EP14713494.4A patent/EP3127269B1/en active Active
- 2014-03-31 US US15/300,553 patent/US10546155B2/en active Active
- 2014-03-31 CN CN201480079424.XA patent/CN106416119B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594761B1 (en) * | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
US7809135B2 (en) * | 2000-12-08 | 2010-10-05 | Cloakware Corporation | System and method for protecting computer software from a white box attack |
CN103516767A (zh) * | 2012-06-26 | 2014-01-15 | 广达电脑股份有限公司 | 软件跨云部署机制及*** |
Non-Patent Citations (1)
Title |
---|
A Tutorial on White-box AES;James A. Muir;《International Association for Cryptologic Research》;20130228;摘要、第1节、第3节 * |
Also Published As
Publication number | Publication date |
---|---|
CN106416119A (zh) | 2017-02-15 |
WO2015149826A1 (en) | 2015-10-08 |
US20170109539A1 (en) | 2017-04-20 |
US10546155B2 (en) | 2020-01-28 |
EP3127269B1 (en) | 2018-07-11 |
EP3127269A1 (en) | 2017-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12001525B1 (en) | Methods, systems, and devices for an encrypted and obfuscated algorithm in a computing environment | |
US11886579B2 (en) | Machine learning model validation and authentication | |
CN106416119B (zh) | 保护软件项目 | |
US11281769B2 (en) | Software integrity verification | |
US20200233979A1 (en) | Machine learning model validation and authentication | |
US20170116410A1 (en) | Software protection | |
CN106415579B (zh) | 保护软件项目的方法 | |
CN108604262A (zh) | 保护网页、网络应用程序和应用程序 | |
CN107005402A (zh) | 提供对内容的访问 | |
Wilbanks | Portable approaches to informed consent and open data | |
CN106415566A (zh) | 保护软件项目 | |
KR102352066B1 (ko) | 암호화 알고리즘에 사용될 때 비밀 데이터를 보호하는 방법 | |
Huang et al. | Smart contract watermarking based on code obfuscation | |
CN108064381A (zh) | 数据保护 | |
Fernandez et al. | Using a variety of patterns in a secure software development methodology. | |
CN117725561A (zh) | 机器学习模型保护 | |
Ismail | Digital Rights Management of Image Content via LSB Embedding and Arithmetic Sequence | |
Centina | Image Steganography of Multiple File Types with Encryption and Compression Algorithms | |
Wilhoite | Code Obfuscation: methods and practicality within automation | |
Li et al. | SecureNet: Proactive intellectual property protection and model security defense for DNNs based on backdoor learning | |
Barakova et al. | Development and study of content protection models for online courses | |
Gautam et al. | Intensification of Software Security using Secure Obfuscation with Injecting and Detecting Code Clones | |
Sun et al. | Introducing code assets of a new white-box security modeling language | |
Kolasa et al. | Federated learning secure model: A framework for malicious clients detection | |
Nwosu | Decentralised Telehealth Data through Blockchain Technology: A ledger between physical and online health services |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |