CN113742657A - 软件保护方法及其系统 - Google Patents
软件保护方法及其系统 Download PDFInfo
- Publication number
- CN113742657A CN113742657A CN202010472616.4A CN202010472616A CN113742657A CN 113742657 A CN113742657 A CN 113742657A CN 202010472616 A CN202010472616 A CN 202010472616A CN 113742657 A CN113742657 A CN 113742657A
- Authority
- CN
- China
- Prior art keywords
- execution environment
- execution
- encrypted
- processor
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000015654 memory Effects 0.000 claims description 80
- 238000004590 computer program Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Storage Device Security (AREA)
Abstract
一种软件保护方法及其系统,该软件保护方法包含通过处理器对已加密的执行档解密,其中解密的步骤包含以下操作。在第一执行环境中,执行连结指令;在第一执行环境中,根据连结指令,产生对应于已加密的执行档的特征值;在第一执行环境中,根据特征值及杂凑表,执行解密演算法并产生金钥;以及在第一执行环境中,将金钥传送至不同于第一执行环境的第二执行环境中的已加密的执行档。一种软件保护系统亦在此公开。
Description
技术领域
本公开文件涉及一种软件保护技术,特别涉及对执行档加密的技术。
背景技术
随着科技快速发展,软件技术也相应进步。目前关于软件保护的技术包含对执行档加密,利用金钥对执行档中某些程序码加密而达到保护的目的,其中加密与解密所需的金钥需考虑如何隐藏。然而,目前对金钥隐藏的方式受到限制,包含受限于连上网络的要求、软件所载入装置的运算能力或是支援加密狗(dongle)装置的要求等等。
发明内容
本公开文件提供一种软件保护方法,包含通过第一处理器对已加密的执行档解密,其中解密的步骤包含以下操作。在第一执行环境中,执行连结指令;在第一执行环境中,根据连结指令,产生对应于已加密的执行档的特征值;在第一执行环境中,根据特征值及杂凑表,执行解密演算法并产生金钥;以及在第一执行环境中,将金钥传送至不同于第一执行环境的第二执行环境中的已加密的执行档。
本公开文件亦提供一种软件保护系统,包含第一处理器以及第一存储器。第一存储器用以存储第一电脑程序码,其中第一处理器用以执行第一存储器中的第一电脑程序码,以执行解密程序。执行解密程序的步骤包含以下操作。在第一执行环境中,执行连结指令;在第一执行环境中,根据连结指令,产生对应于已加密的执行档的特征值;在第一执行环境中,根据特征值及杂凑表,执行解密演算法并产生金钥;以及在第一执行环境中,将金钥传送至不同于第一执行环境的第二执行环境中的已加密的执行档。
附图说明
图1示出根据本公开文件的一实施例的软件保护系统的架构示意图。
图2示出根据图1的架构用以执行加密流程的示意图。
图3示出根据图2的加密操作方法的流程图。
图4A及图4B示出根据图1的架构用以执行解密操作方法的示意图。
图5示出根据图3的解密操作方法的流程图。
附图标记说明:
D1:第一装置
D2:第二装置
110:第一处理器
120:第二处理器
130:第一存储器
140:第二存储器
P1:加密程序
P2:附加程序
P3:解密程序
H:杂凑表
E1:执行档
E2:已加密的执行档
310:步骤
320:步骤
330:步骤
340:步骤
350:步骤
410:普通执行环境
415:整合应用程序接口
420:开发端应用程序接口
425:客户端应用程序接口
430:存储单元
435:普通驱动程序
440:信任执行环境
445:付款认证程序
450:企业机密程序
455:信任应用程序接口
460:信任核心
465:信任函数库/信任连结库
470:硬件抽象层
475:硬件
510:步骤
515:步骤
520:步骤
525:步骤
530:步骤
535:步骤
540:步骤
545:步骤
具体实施方式
下文是举实施例配合说明书附图作详细说明,以更好地理解本公开文件的实施方式,但所提供的实施例并非用以限制本公开所涵盖的范围,而结构操作的描述非用以限制其执行的顺序,任何由元件重新组合的结构,所产生具有均等技术效果的装置,皆为本公开所涵盖的范围。此外,根据业界的标准及惯常做法,附图仅以辅助说明为目的,并未依照原尺寸作图,实际上各种特征的尺寸可任意地增加或减少以便于说明。下述说明中相同元件将以相同的符号标示来进行说明以便于理解。
此外,在本公开文件中所使用的用词“包含”、“包括”、“具有”、“含有”等等,均为开放性的用语,即意指“包含但不限于”。此外,本文中所使用的“及/或”,包含相关列举项目中一或多个项目的任意一个以及其所有组合。
于本公开文件中,当一元件被称为“连接”或“耦接”时,可指“电性连接”或“电性耦接”。“连接”或“耦接”亦可用以表示二或多个元件间相互搭配操作或互动。此外,虽然本文中使用“第一”、“第二”、…等用语描述不同元件,该用语仅是用以区别以相同技术用语描述的元件或操作。除非上下文清楚指明,否则该用语并非特别指称或暗示次序或顺位,亦非用以限定本发明。
本公开文件的各实施例中的软件保护系统或方法,是针对软件的执行档(executable file)或目的档(object file)加密,通过金钥对软件中某段程序码加密以及隐藏金钥的方式,达到软件保护的技术效果。在本公开文件的各实施例中,以执行档执行加密或解密的操作为示例说明。
在一些实施例中,执行档包含程序码及数据,且执行档被分割为多个不同的区域(section)。每个区域包含对应的程序码或数据,并以第一个位元组作为此区域对应于存储器中的位址,用以存取对应的数据并执行相应的操作。在一些实施例中,本公开文件所述的执行档或可执行程序是指经过编译(compile)且可经执行而进行特定功能的程序码(code)或指令(instruction)。
图1为根据本公开文件中一些实施例所示出的软件保护系统的架构示意图。如图1所示,软件保护系统100包含第一处理器110、第二处理器120、第一存储器130及第二存储器140。第一处理器110及第一存储器130运行于第一装置D1中,且第二处理器120及第二存储器140运行于第二装置D2中,其中第一装置D1与第二装置D2相互通信连接。
在一些实施例中,第一存储器130用以存储解密程序P3,其中第一处理器110用以执行第一存储器130中的解密程序P3,使得软件保护系统100可对已加密的执行档执行解密的操作。在一些实施例中,第二存储器140用以存储加密程序P1,其中第二处理器120用以执行第二存储器140中的加密程序P1,使得软件保护系统100可对执行档进行加密的操作。
在一些实施例中,加密程序P1为一种对执行档(或目的档)加密的应用程序,通过执行加密程序P1可利用加密演算法对执行档、目的档或其他文件进行加密。在一些实施例中,前述加密演算法包含特征提取演算法、杂凑演算法或其他类似的演算法。
在一些实施例中,解密程序P3为一种对已加密的执行档(或目的档)解密的应用程序,能利用解密演算法找到已加密的执行档(或目的档)的金钥,用以解密并还原已加密的执行档(或目的档),以产生原本的执行档(或目的档)。
在一些实施例中,第一处理器110及第二处理器120各自以中央处理器(CPU)、多核心处理器(multi-core processor)、分散式运算系统及特殊应用集成电路(ASIC)中的一者来实现,在此不限制第一处理器110及第二处理器120的种类。
在一些实施例中,第一存储器130及第二存储器140各自以一种电脑可读取媒体(computer readable media)来实现,且分别为固态存储器、磁带、可移除电脑磁盘、随机存取存储器(RAM)、只读存储器(ROM)、压缩磁盘-只读存储器(CD-ROM)、压缩磁盘-读/写(CD-R/W)及数字视频光盘(DVD)中的一者,在此不限制第一存储器130及第二存储器140的种类。
在一些实施例中,第一存储器130及第二存储器140分别包含挥发性存储器(volatile memory;VM)单元(图中未示)以及非易失性存储器(non-volatile memory;NVM)单元(图中未示)。在一些实施例中,第一存储器130的挥发性存储器单元用以存储解密程序P3,且第一存储器130的非易失性存储器单元用以存储杂凑表(hash table)H。第二存储器140的挥发性存储器单元用以存储加密程序P1,且第二存储器140的非易失性存储器单元用以存储杂凑表H。
在一些实施例中,第一装置D1及第二装置D2分别为服务器、移动装置及电脑中的一者,在此不限制第一装置D1及第二装置D2的种类。操作上,第一装置D1是以无线传输的方式与第二装置D2进行通信,并用以传送已加密的执行档至第二装置D2,使第二存储器140存储已加密的执行档。
举例来说,第二装置D2为服务器并对应软件开发端,且载有执行档以及加密程序P1于第二存储器140中。第一装置D1为智能手机并对应任意使用者,且通过蓝牙传输接收来自第二装置D2的已加密的执行档,更将已加密的执行档以载入第一存储器130中。使用者可通过操作第一装置D1,使第一处理器110执行解密程序P3而对已加密的执行档执行解密的操作,借此还原未经加密的执行档,然后使用者即可通过第一装置D1执行还原的执行档以进行相应的操作。
在不同实施例中,上述软件保护系统100可包含多个第一处理器110、多个第二处理器120、多个第一存储器130及/或多个第二存储器140,且上述元件可对应地运行于多个第一装置D1及/或多个第二装置D2中,在此不限制软件保护系统100的处理器以及存储器的数量。
举例而言,在不同实施例中,多个第一处理器110运行于一个第一装置D1中,并共享其中的一个第一存储器130,而多个第二处理器120分别运行于多个第二装置D2中,且分别用以与对应的多个第二存储器140进行相应的操作。
图2为根据本公开文件中一些实施例所示出的执行加密流程的示意图。下述图2所示实施例是以图1所示的第二装置D2为例来作说明,但不以其为限,任何可用于执行图2所示加密流程的装置均在本公开思及范围内。
如图1及图2所示,第二处理器120与第二存储器140可协同操作以执行加密操作,其中第二存储器140可用以存储执行档E1、加密程序P1、杂凑表H以及已加密的执行档E2。上述加密操作的具体流程如下所述。
图3为根据本公开文件中一些实施例所示出的加密操作方法的流程图。如图3所示,加密操作方法300包含步骤310、320、330、340及350,且至少步骤320、330、340及350对应于执行加密程序P1的操作。为清楚说明起见,下述加密操作方法300是搭配图1及图2所示实施例来作说明,然而加密操作方法300并不限于应用在图1及图2所示实施例。
首先,在步骤310中,存取加密程序。举例而言,如图1及图2所示,第二处理器120可存取第二存储器140中的加密程序P1,并执行加密程序P1而进行后续对应的加密操作。
接着,在步骤320中,产生对应于执行档E1的特征值(pattern)。举例而言,如图1及图2所示,第二处理器120执行加密程序P1,以进行加密演算法(如上述的特征提取演算法),借此萃取出执行档E1的特征值,并产生对应于执行档E1的特征值。
其次,在步骤330中,产生相应的杂凑值。举例而言,如图1及图2所示,第二处理器120执行加密程序P1,以根据杂凑表H进行加密演算法(如上述的杂凑演算法),借此计算对应于执行档E1的特征值,并产生相应的杂凑值。
再者,在步骤340中,产生对应于执行档E1的金钥。举例而言,如图1及图2所示,第二处理器120执行加密程序P1,以根据杂凑表H再进行加密演算法(如上述的杂凑演算法),借此产生对应于执行档E1的金钥。
在一些实施例中,上述特征值、杂凑值及金钥均为对应执行档E1的数据,其中通过杂凑演算法计算出的杂凑值及金钥为不可逆计算的数据,借此具有高数据保护性。
在一些实施例中,上述特征值、杂凑值及金钥中至少一者的数据格式为一组字串。在其他实施例中,上述特征值、杂凑值及金钥中至少一者的数据格式为多组长度不相同的字串。在此不限制特征值、杂凑值及金钥的数据格式。
在一些实施例中,杂凑表H的数据格式为二维阵列或三维阵列,且特征值的存储器容量大于512位元组(byte)。如此一来,对于多个不同的执行档E1,执行加密程序P1所计算出的多个杂凑值均相同(即,冲突(collision))的几率甚低,进而使不同执行档E1对应的金钥为相同的几率降低,借此可提高数据安全性。
然后,在步骤350中,产生已加密的执行档。举例而言,如图1及图2所示,第二处理器120执行加密程序P1,以根据上述产生的金钥再进行加密演算法,以对执行档E1进行加密,借此产生已加密的执行档E2。已加密的执行档E2接着由第二装置D2传送至第一装置D1,并且由第一装置D1对已加密的执行档E2进行解密操作。
相较于原始的执行档E1,上述已加密的执行档E2无法被正常地读取及/或执行,因此需要另外对已加密的执行档E2进行解密的操作,具体如下述参照图4A及图4B的说明。
需说明的是,在一些实施例中,已加密的执行档E2的程序码中多附加一段用于解密的程序码,在一些实施例中前述用于解密的程序码又称为附加程序码(appended code)。此段附加的程序码为可供特定硬件执行的附加程序P2(如图2所示),且附加程序P2是为了后续执行解密的操作而在加密过程中产生的程序码。在一些实施例中,附加程序P2又称为附加程序码或附加程序区域(appended section)。附加程序P2并不包含加密过程中产生的金钥,并与金钥彼此独立,借此达到良好的保护效果。另外,在一些实施例中,附加程序P2包含一段用于位址指向的程序码,在一些实施例中此段用于位址指向的程序码又称为连结指令(下述关于图4A至图5会更详细说明)。
基于上述,通过上述的加密流程,能使执行档E1被加密为具有高保护性的已加密的执行档E2。
图4A及图4B为根据本公开文件中一些实施例所示出的执行解密流程的示意图。下述图4A及图4B所示实施例是以图1所示的第一装置D1为例来作说明,但不以其为限,任何可用于执行图4A及图4B所示解密流程的装置均在本公开思及范围内。
如图1、图4A及图4B所示,第一处理器110与第一存储器130可协同操作以执行解密操作,其中第一存储器130可用以存储已加密的执行档E2、解密程序P3以及杂凑表H。
在一些实施例中,如图4A及图4B所示,第一存储器130用以存储多个执行环境,其中执行环境又可称为作业环境,主要是指硬件与软件的总称,包含对应的存储器、处理器以及存储于存储器中的作业系统与程序…等。
在一些实施例中,如图4A所示,上述执行环境包含普通执行环境(rich executionenvironment;REE)410(又称为丰富世界(rich world)),其关联于第一作业系统。另外,如图4B所示,上述执行环境包含信任执行环境(trusted execution environment;TEE)440(又称为安全世界(secure world)),其关联于第二作业系统,且第二作业系统相异于第一作业系统。普通执行环境410与信任执行环境440为相互独立的作业环境,两者可以通过各自的核心(kernel)(例如,核心驱动器(kernel driver))进行沟通/传递或交换数据,但在执行各自的操作时为相互隔离的状态。亦可理解为,基于此存储器,建构了多个独立的作业系统,包含普通作业系统(普通执行环境410)以及信任作业系统(信任执行环境440)。在一些实施例中,上述第一作业系统及第二作业系统分别为视窗作业系统(MicrosoftWindows)或Linux作业系统中的一者。
在一些实施例中,信任执行环境440具有第一安全级别(security level),以供执行需要保密的操作,例如身分认证或本公开文件的实施例中的解密操作。普通执行环境410具有第二安全级别,且此第二安全级别的保密性较第一安全级别还低,以供执行其余的操作,例如一般应用程序的功能。
在一些实施例中,在信任执行环境440中,所执行的操作是由普通执行环境410输入指示或要求而被动地执行相应的操作,且每个操作与对应的数据或程序码皆独立于普通执行环境410。另一方面,在普通执行环境410中,可以输入指示或要求至信任执行环境440,使信任执行环境440中的程序执行相应的操作,但无法要求存取信任执行环境440的程序码或数据。
在一些实施例中,普通执行环境410用以存储一般的应用程序(例如:已加密的执行档E2以及杂凑表)、整合应用程序接口(application programming interface;API)415、开发端应用程序接口420、客户端应用程序接口425、存储单元430以及普通驱动程序(device driver)435。
整合应用程序接口415用以整合开发端应用程序接口420以及客户端应用程序接口425。客户端应用程序接口425包含至少一个可执行的函数,例如打电话、付款或浏览,用以要求存取存储单元430中的数据,以执行对应的可执行的函数。开发端应用程序接口420包含至少一个程序函数,用以与普通执行环境410的核心(图中未示)沟通,以交换数据。
存储单元430用以存储普通执行环境410的核心的数据,以供开发端应用程序接口420或客户端应用程序接口425利用系统呼叫(system call)的方式存取或交换其中的数据。
在一些实施例中,存储单元430是以回放保护存储器区域(relay protectedmemory block;RPMB)来实现,并用以存储解密操作需要的杂凑表。在一些实施例中,存储单元430是存放于信任执行环境440的核心模式中(图中未示此实施例)。
普通驱动程序435用以经执行而使客户端应用程序接口425或开发端应用程序接口420的程序码或指令相应地被执行,借此与普通执行环境410的核心沟通。此外,普通驱动程序435也能经执行而进一步与信任执行环境440的核心沟通,作为普通执行环境410与信任执行环境440之间的沟通中间者。在一些实施例中,普通驱动程序435是指核心驱动器,用以经执行而使普通执行环境410与信任执行环境440各自的核心之间可以传递数据。
此外,在不同实施例中,图2所示的附加程序P2包含一个区域,其用以指向程序码中特定的位址,例如:普通驱动程序435的位址、杂凑表存放的位址、已加密的执行档E2中某一区域的位址、…等。因此,附加程序P2在一些实施例中又称为连结指令或安全指令(secure lib)。
在一些实施例中,图4A及图4B中所示的“使用者模式”(user mode)以及“核心模式”(kernel mode)是关联于存取作业系统的权限能力。举例而言,“使用者模式”是指在此执行的程序具有低系统存取权限,可以执行一般的操作,但若需存取核心数据或指令,需通过使用者模式与核心模式之间的应用程序接口(例如,客户端应用程序接口425)以系统呼叫的方式与核心模式沟通。另一方面,“核心模式”是指在此执行的程序具有高系统存取权限,可以执行特殊的指令或操作,包含存储器管理、行程管理等。例如,已加密的执行档E2用以存取普通执行环境410核心中的数据的权限受到限制。
如图4B所示,信任执行环境440用以存储多个处理保密数据的应用程序、信任应用程序接口455、信任核心460、信任函数库/信任连结库465、硬件抽象层(hardwareabstraction layer;HAL)470以及硬件475。在一些实施例中,上述处理保密数据的应用程序可例如包含解密程序P3、付款认证程序445及企业机密程序450。
在一些实施例中,信任应用程序接口455包含至少一个可执行的函数及/或至少一个程序函数,用以与信任执行环境440的核心(即,信任核心460)沟通,以交换数据。另外,在普通执行环境410中的应用程序可以通过信任应用程序接口455与信任执行环境440中的应用程序(例如,付款认证程序445)交换数据(例如:网络协定位址)。
在一些实施例中,信任核心460用以控制或管理用来执行信任执行环境440对应的操作或函数的资源,例如总线(bus)、处理器或信任函数库/信任连结库465等。另外,在不同实施例中,信任核心460更用以与普通执行环境410沟通,以交换数据。
在一些实施例中,信任函数库/信任连结库465包含函数、静态连结库或汇入库中的至少一者,用以存储对应的数据。
在一些实施例中,硬件抽象层470用以直接存取硬件475的数据,其中硬件475用以存储解密操作需要的数据,包含上述的杂凑表。
在一些实施例中,上述用来执行解密操作的第一存储器130及第一处理器110是以ARM架构设计的Trust Zone的架构,并分为普通世界(normal world,或称为丰富世界)以及安全世界(secure world),即分别对应为实施例中所述的普通执行环境410以及信任执行环境440。在不同实施例中,上述用来执行解密操作的第一存储器130及第一处理器110是以Intel架构设计的software guard extensions(SGX)的架构,包含指定位址空间(enclave),即对应上述的信任执行环境440。在本公开文件的一些实施例中,是以ARM的Trust Zone为架构作示例说明,但不以此为限。
图5为根据本公开文件中一些实施例所示出的解密操作方法的流程图。如图5所示,解密操作方法500包含步骤510、515、520、525、530、535、540及545,且至少步骤510、515、520、525、530、535、540及545对应于执行解密程序P3的操作。为清楚说明起见,下述解密操作方法500是搭配图1、图4A及图4B所示实施例来作说明,然而解密操作方法500并不限于应用在图1、图4A及图4B所示实施例。
在一些实施例中,如图1及图2所示,第一处理器110是执行第一存储器130中所存储的已加密的执行档E2中的附加程序P2以及解密程序P3,以进行下述的解密操作方法500。
首先,在步骤510中,存取附加程序,以传送连结指令至信任执行环境。举例而言,如图1、图4A及图4B所示,在普通执行环境410的使用者模式中,第一处理器110执行第二存储器140中的附加程序P2,借此通过客户端应用程序接口425以及普通驱动程序435传送连结指令至信任执行环境440的核心模式中。在一些实施例中,第一处理器110执行附加程序P2,以直接通过普通驱动程序435传送连结指令至信任执行环境440中。
接着,在步骤515中,存取解密程序,以接收连结指令。举例而言,如图1、图4A及图4B所示,在信任执行环境440的核心模式中,第一处理器110执行第一存储器130中的解密程序P3,借此通过信任应用程序接口455传送连结指令至解密程序P3,使解密程序P3接收连结指令。
接着,在步骤520中,执行连结指令,以产生对应于已加密的执行档的特征值。举例而言,如图1、图4A及图4B所示,在信任执行环境440的使用者模式中,第一处理器110执行第一存储器130中的解密程序P3,借此通过解密程序P3执行连结指令,并根据此连结指令产生对应于已加密的执行档E2的特征值。
其次,在步骤525中,产生相应的杂凑值。举例而言,如图1、图4A及图4B所示,在信任执行环境440的使用者模式中,第一处理器110执行第一存储器130中的解密程序P3,借此通过解密程序P3根据杂凑表执行解密演算法(例如,杂凑演算法)计算对应于已加密的执行档E2的特征值,并产生相应的杂凑值。
再者,在步骤530中,产生对应于已加密的执行档的金钥。举例而言,如图1、图4A及图4B所示,在信任执行环境440的使用者模式中,第一处理器110执行第一存储器130中的解密程序P3,借此通过解密程序P3根据已加密的执行档E2的特征值以及杂凑表,执行解密演算法(例如,杂凑演算法)计算步骤525中的杂凑值,并产生对应于已加密的执行档E2的金钥。
一些实施例中,在用于解密操作的存储器中所存储的杂凑表与在用于加密操作的存储器中所存储的杂凑表相同。因此,解密操作所产生的金钥等同于加密操作所产生的金钥。
需说明的是,在一些实施例中,上述用以存储杂凑表的存储器,例如前述一些实施例中的存储单元430或硬件475、用于执行加密操作的第二存储器140等,为一种非易失性存储器。因此,能降低杂凑表被任意读取的几率,进而提升程序码的保护性。
再者,在步骤535中,传送金钥至普通执行环境。举例而言,如图1、图4A及图4B所示,在信任执行环境440的核心模式中,第一处理器110执行第一存储器130中的解密程序P3,借此通过信任应用程序接口455传送金钥至信任核心460,并通过信任核心460传送金钥至普通执行环境410。
接着,在步骤540中,传送金钥至已加密的执行档。举例而言,如图1、图4A及图4B所示,在普通执行环境410的使用者模式中,第一处理器110执行第一存储器130中的解密程序P3,借此通过普通驱动程序435接收金钥,并通过客户端应用程序接口425传送金钥至已加密的执行档E2。
然后,在步骤545中,解密还原为执行档。举例而言,如图1、图4A及图4B所示,在普通执行环境410的使用者模式中,第一处理器110执行第一存储器130中的解密程序P3,借此通过解密程序P3根据所接收的金钥,执行解密演算法对已加密的执行档E2解密,并解密还原为执行档E1(示出于图2)。
一些实施例中,第一存储器130中的电脑程序码更用以实现Arm TrustedFirmware(ATF),用以执行安全检查,并用以存取解密程序P3,以执行环境检查。一些安全检查的例子包含信任执行环境440的存取权限检查、身分权限(root permission)检查等。因此,能防止以动态分析的方法破解软件保护系统。
综上所述,加密或解密操作中的金钥只会用在产生已加密的执行档或是解密还原成执行档的步骤,且金钥并不需要通过使用者输入任何认证数据或者另外连接硬件(如加密狗)即可自动被计算获得。特别是解密的步骤中,操作过程产生或需要的数据皆在信任执行环境中执行,因此达到金钥保护的高度安全性。
虽然本公开文件已以实施例公开如上,然其并非用以限定本公开文件,任何本领域技术人员,在不脱离本公开文件的构思和范围内,当可作各种的变动与润饰,因此本公开文件的保护范围当视权利要求所界定者为准。
Claims (12)
1.一种软件保护方法,包含:
通过一第一处理器对已加密的执行档解密,其中解密的步骤包含:
在一第一执行环境中,执行连结指令;
在该第一执行环境中,根据该连结指令,产生对应于该已加密的执行档的特征值;
在该第一执行环境中,根据该特征值及一杂凑表,执行解密演算法并产生金钥;以及
在该第一执行环境中,将该金钥传送至在不同于该第一执行环境的一第二执行环境中的该已加密的执行档。
2.如权利要求1所述的软件保护方法,其中该解密的步骤还包含:
在该第二执行环境中,根据该金钥,解密还原该已加密的执行档为执行档,
其中该第一执行环境与该第二执行环境为互相独立的作业环境,且该第一执行环境通过核心驱动程序与该第二执行环境进行数据传递。
3.如权利要求2所述的软件保护方法,其中
该第一执行环境关联于一第一作业系统,
该第二执行环境关联于一第二作业系统,
该第二作业系统用以存储执行包含该已加密的执行档,且
该第一作业系统用以存储包含用以执行该解密的步骤的电脑程序码及该杂凑表。
4.如权利要求2所述的软件保护方法,其中该解密的步骤还包含:
在该第二执行环境中,执行附加程序码,以通过该核心驱动器传送该连结指令至该第一执行环境中。
5.如权利要求1所述的软件保护方法,还包含:
通过与该第一处理器通信连结的一第二处理器对执行档加密,其中加密的步骤包含:
产生对应于该执行档的该特征值;
根据该特征值及该杂凑表,执行加密演算法并产生该金钥;以及
根据该金钥,加密该执行档,以产生该已加密的执行档,
其中该已加密的执行档包含该连结指令。
6.如权利要求5所述的软件保护方法,还包含:
通过该第二处理器传送该已加密的执行档至与该第一处理器关联的存储器。
7.如权利要求1所述的软件保护方法,其中
该已加密的执行档包含附加程序码,且
该附加程序码用以指向该第一处理器对应的存储器的核心驱动程序,并用以通过该核心驱动程序传送该连结指令至用以执行该解密的步骤的执行环境。
8.一种软件保护系统,包含:
一第一处理器;以及
一第一存储器,用以存储第一电脑程序码,
其中该第一处理器用以执行该第一存储器中的该第一电脑程序码,以执行:
执行解密程序,其步骤包含:
在一第一执行环境中,执行连结指令;
在该第一执行环境中,根据该连结指令,产生对应于已加密的执行档的特征值;
在该第一执行环境中,根据该特征值及一杂凑表,执行解密演算法并产生金钥;以及
在该第一执行环境中,将该金钥传送至不同于该第一执行环境的一第二执行环境中该已加密的执行档。
9.如权利要求8所述的软件保护系统,其中该第一存储器更用以存储:
关联于该第二执行环境的该已加密的执行档;以及
关联于该第一执行环境的该解密程序及该杂凑表,
其中该第一执行环境与该第二执行环境为互相独立的作业环境,且该第一执行环境通过核心驱动程序与该第二执行环境进行数据传递。
10.如权利要求9所述的软件保护系统,其中该第一处理器用以执行该第一存储器中的该第一电脑程序码,以在该第二执行环境中执行:
通过该核心驱动程序传送该连结指令至该第一执行环境中的该解密程序。
11.如权利要求9所述的软件保护系统,其中该第一处理器用以执行该第一存储器中的该第一电脑程序码,以在该第二执行环境中执行:
接收来自该第一执行环境的该金钥;以及
根据该金钥,解密还原该已加密的执行档为执行档。
12.如权利要求8所述的软件保护系统,还包含:
一第二处理器,通信连接与该第一处理器;以及
一第二存储器,用以存储第二电脑程序码,
其中该第二处理器用以执行该第二存储器中的该第二电脑程序码,以执行:
执行加密程序,其步骤包含:
产生对应于该执行档的该特征值;
根据该特征值及该杂凑表,执行加密演算法并产生该金钥;以及
根据该金钥,加密该执行档,以产生该已加密的执行档,
其中该已加密的执行档包含该连结指令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010472616.4A CN113742657A (zh) | 2020-05-29 | 2020-05-29 | 软件保护方法及其系统 |
US17/022,057 US11610003B2 (en) | 2020-05-29 | 2020-09-15 | Software protection method and system thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010472616.4A CN113742657A (zh) | 2020-05-29 | 2020-05-29 | 软件保护方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113742657A true CN113742657A (zh) | 2021-12-03 |
Family
ID=78706437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010472616.4A Pending CN113742657A (zh) | 2020-05-29 | 2020-05-29 | 软件保护方法及其系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11610003B2 (zh) |
CN (1) | CN113742657A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114969711A (zh) * | 2022-05-13 | 2022-08-30 | 北京百度网讯科技有限公司 | 一种安全认证方法、电子设备及存储介质 |
CN117610089B (zh) * | 2024-01-23 | 2024-03-26 | 上海励驰半导体有限公司 | 多核异构芯片的加密方法、系统、设备和存储介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0175487A3 (en) | 1984-08-23 | 1989-03-08 | Btg International Limited | Software protection device |
US6052780A (en) * | 1996-09-12 | 2000-04-18 | Open Security Solutions, Llc | Computer system and process for accessing an encrypted and self-decrypting digital information product while restricting access to decrypted digital information |
US6055503A (en) * | 1997-08-29 | 2000-04-25 | Preview Systems | Software program self-modification |
US7257712B2 (en) * | 2003-05-30 | 2007-08-14 | Microsoft Corporation | Runtime digital signatures |
US8271803B2 (en) * | 2003-10-08 | 2012-09-18 | Microsoft Corporation | Anti-debugging protection of binaries with proxy code execution |
EP1840782B1 (en) * | 2004-04-02 | 2017-11-22 | Panasonic Intellectual Property Management Co., Ltd. | Unauthorized contents detection system |
EP1798653B1 (de) * | 2005-12-16 | 2011-08-03 | Aladdin Europe GmbH | Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms |
WO2007147495A2 (en) * | 2006-06-21 | 2007-12-27 | Wibu-Systems Ag | Method and system for intrusion detection |
US20080250251A1 (en) | 2007-04-04 | 2008-10-09 | Cyberlink Corp. | Systems and Methods for Hardware Driven Program Execution |
US8856938B2 (en) * | 2008-07-30 | 2014-10-07 | Oracle America, Inc. | Unvalidated privilege cap |
WO2013140774A1 (ja) * | 2012-03-20 | 2013-09-26 | パナソニック株式会社 | サーバ装置、再生装置及びコンテンツ配信システム |
US10038550B2 (en) | 2013-08-08 | 2018-07-31 | Intel Corporation | Instruction and logic to provide a secure cipher hash round functionality |
TWI524208B (zh) | 2013-12-31 | 2016-03-01 | Giga Byte Tech Co Ltd | Encryption and Decryption of Function Library of Open System |
US9769290B2 (en) * | 2014-05-23 | 2017-09-19 | Intel Corporation | Packet flow classification |
JP6754495B2 (ja) * | 2016-10-06 | 2020-09-09 | マスターカード インターナシヨナル インコーポレーテツド | ブロックチェーンを介したアイデンティティと証明書の保護及び検証とのための方法及びシステム |
US10922441B2 (en) * | 2018-05-04 | 2021-02-16 | Huawei Technologies Co., Ltd. | Device and method for data security with a trusted execution environment |
KR102275827B1 (ko) * | 2020-03-26 | 2021-07-13 | 한국전자통신연구원 | 기밀 실행 소프트웨어 배포 방법 및 장치 |
US11252460B2 (en) * | 2020-03-27 | 2022-02-15 | The Nielsen Company (Us), Llc | Signature matching with meter data aggregation for media identification |
-
2020
- 2020-05-29 CN CN202010472616.4A patent/CN113742657A/zh active Pending
- 2020-09-15 US US17/022,057 patent/US11610003B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210374254A1 (en) | 2021-12-02 |
US11610003B2 (en) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5611598B2 (ja) | Usbトークン上の暗号化キーコンテナ | |
CN112005237B (zh) | 安全区中的处理器与处理加速器之间的安全协作 | |
CN106997439B (zh) | 基于TrustZone的数据加解密方法、装置及终端设备 | |
CN110032885B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
US20180218156A1 (en) | Encryption and Decryption Method and Apparatus in Virtualization System, and System | |
US11290446B2 (en) | Access to data stored in a cloud | |
KR100678927B1 (ko) | 비보안 영역에 보안 영역을 할당하는 방법 및 이를제공하는 휴대용 저장 장치 | |
CN110020549B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
JP2009518742A (ja) | マイクロコントローラにおけるデータの安全な取扱いのための方法および装置 | |
CN111901402A (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
US20080229115A1 (en) | Provision of functionality via obfuscated software | |
US8095977B2 (en) | Secure PIN transmission | |
CN111917540B (zh) | 一种数据加解密方法、装置、移动终端和存储介质 | |
JP2008527532A (ja) | 非セキュリティ領域にセキュリティ領域を割り当てる方法及び携帯用保存装置 | |
KR20210078437A (ko) | 안전한 중복 제거를 위한 방법, 장치, 및 시스템 | |
CN113742657A (zh) | 软件保护方法及其系统 | |
US20110145596A1 (en) | Secure Data Handling In A Computer System | |
TWI791995B (zh) | 軟體保護方法及其系統 | |
CN117157623A (zh) | 结合容器化应用程序使用时保护秘密的系统和方法 | |
EP2827276A1 (en) | Secure data processing | |
CN116226870B (zh) | 安全增强系统及方法 | |
CN110999205A (zh) | 用于简档证书私有密钥或其他数据的封装的装置和方法 | |
US20220318438A1 (en) | Systems and methods for data security on a mobile device | |
KR102398380B1 (ko) | 키 교환 방법 및 시스템 | |
CN113225336A (zh) | 信息加密传输方法、加解密装置、可读介质以及电子设备 |
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 |