CN103856481A - 使用在线认证和经加密代码执行的代码保护 - Google Patents

使用在线认证和经加密代码执行的代码保护 Download PDF

Info

Publication number
CN103856481A
CN103856481A CN201310636865.2A CN201310636865A CN103856481A CN 103856481 A CN103856481 A CN 103856481A CN 201310636865 A CN201310636865 A CN 201310636865A CN 103856481 A CN103856481 A CN 103856481A
Authority
CN
China
Prior art keywords
application program
parts
safe handling
processing unit
code
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
CN201310636865.2A
Other languages
English (en)
Other versions
CN103856481B (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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN103856481A publication Critical patent/CN103856481A/zh
Application granted granted Critical
Publication of CN103856481B publication Critical patent/CN103856481B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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]
    • 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/121Restricting unauthorised execution of 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/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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

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

Abstract

公开了用于代码保护的方法。方法包括使用安全处理部件在由在线服务器对使用应用程序的许可进行认证之后,访问由应用程序的在线服务器加密的经加密部分。安全处理部件用来使用存储在安全处理部件中的加密密钥解密应用程序的经加密部分。基于所存储的状态数据执行应用程序的经解密部分。将结果提供到正在于第二处理部件上执行的应用程序。

Description

使用在线认证和经加密代码执行的代码保护
相关申请的交叉引用
本申请与2012年4月27日提交的、题目为“CONTENT PROTECTIONVIA ONLINE SERVERS AND CODE EXECUTION IN A SECUREOPERATING SYSTEM”的13/458,891号美国专利申请相关,其在此通过援引整体并入本文。
技术领域
本发明涉及代码保护,并且更具体地,涉及使用在线认证和经加密代码执行的代码保护。
背景技术
代码保护(CP)技术涵盖了由硬件制造商、发行商、版权持有者和个人用作控制对数字内容和设备的使用的一种手段的一类访问控制技术。CP技术包括禁止内容提供者所不期望或预期的、对数字内容的使用的技术。
CP技术寻求向内容提供者或设备销售者提供在数字内容或设备已经被消费者购买之后对数字内容或设备的控制。当它涉及数字内容时,这类控制可以包括防止对内容的访问、防止内容拷贝和防止将内容转换为其他格式。当它涉及到设备时,这类控制可以包括限制可以与设备一起使用的硬件和软件。
一些常规的CP技术容易受到特定类型的攻击。例如,基于软件的CP技术可能容易受到基于由软件自身所包含的信息的攻击,因为软件可能包括可使能内容的解密(例如解密密钥)的信息。因此,攻击者可能能够提取该信息并且直接解密和拷贝内容,并且由此绕过CP系统所施加的限制。
基于硬件的CP技术也具有易感性。这些技术中的一些要求使用专用(purpose built)硬件来听和/或看内容。该方法尝试确保仅经许可的用户(那些具有硬件的用户)可以访问内容。另外,它寻求拒绝系统用户对秘密解密密钥的访问。
然而,尽管基于硬件的CP技术可以提供稳健(robust)的保护,但是建立足够稳健以保护秘密密钥对抗足够确定的对手的硬件可能是非常困难的。此外,一旦秘密密钥已知,建立可以用来听和/或看内容的硬件版本可能是相对直截了当的。因此,常规技术可能缺乏足以威慑确定对手(determined adversaries)的保护水平。
发明内容
代码保护的常规方法可能缺乏足以威慑确定对手的保护水平。公开了解决这些缺点的使用在线认证和经加密代码执行的代码保护硬件安全处理部件、架构和方法。然而,所声明的实施例不限于解决任何或所有前述缺点的实现方案。在一个实施例中,在对使用一应用的许可的验证已经完成之后,安全处理部件被用作安全的、基于硬件的、对程序代码片段或“着色器(shader)”进行解密和执行的一部分,所述程序代码片段或“着色器”是该应用所缺失的。利用执行该程序代码片段的结果,以使得一经执行,该应用就可以恰当地运作。在示例性实施例中,安全处理部件与在线服务器和许可验证服务器结合使用,以使得提供强大到足以威慑确定对手的多层代码保护架构。
在一个实施例中,在对使用应用的许可由许可验证服务器验证之后,使用安全处理部件来访问该应用的由在线服务器加密的经加密部分。此后,安全处理部件使用由安全处理部件存储的加密密钥解密该应用的经加密部分,并且基于所存储的状态数据执行该应用的经解密部分。将该应用的经解密部分的执行的结果提供到在第二处理部件上执行的应用。
在一个实施例中,图形处理部件执行该应用的经解密部分。在一个实施例中,图形处理部件在存储器的指定视频保护区中执行该应用的经解密部分。然而,在一个实施例中,从视频保护区读取的能力被限制于安全处理部件。在一个实施例中,图形处理部件在存储器的非视频保护区中执行与应用相关的、程序代码的第二片段。
在一个实施例中,在其上形成有所述安全处理部件的芯片上保存(maintain)状态数据。在一个实施例中,安全处理部件编码并且解码状态数据,并且在其上形成有安全处理部件的芯片之外保存该状态数据。
附图说明
通过结合附图参考下面的描述可以更好地理解本发明及其进一步优势,在附图中:
图1A示出了根据一个实施例的、代码保护安全处理部件的示例性操作环境。
图1B示出了根据一个实施例的、由作为代码保护架构的一部分的部件所实施的操作。
图1C示出了根据一个实施例的、由作为代码保护架构的一部分的部件所实施的操作。
图1D示出了根据一个实施例的、由作为代码保护架构的一部分的部件所实施的操作。
图1E示出了根据一个实施例的、由作为代码保护架构的一部分的部件所实施的操作。
图2示出了根据一个实施例的、代码保护安全处理部件的部件。
图3示出了根据一个实施例的、在用于使用在线认证和经加密代码执行的代码保护的方法中所实施的操作的流程图。
图4示出了在用于使用在线认证和经加密代码执行的代码保护的方法中实施的操作的流程图,其中经解密代码的运行由安全处理部件实施。
图5示出了在用于使用在线认证和经加密代码执行的代码保护的方法中实施的操作的流程图,其中经解密代码的运行由图形处理单元(GPU)实施。
图6示出了在用于使用在线认证和经加密代码执行的代码保护的方法中实施的操作的流程图,其中来自非视频保护区(VPR)位置的第二着色器的运行由GPU实施。
图7示出了根据一个实施例的、作为用于使用在线认证和经加密代码执行的代码保护的方法的一部分实施的认证操作的流程图。
应该注意在图中相似的附图标记指代相似的元件。
具体实施方式
尽管本发明已经结合一个实施例进行了描述,但是本发明不意图被限制于本文所阐述的具体形式。相反,它意图覆盖如可以合理地包括在如所附权利要求所定义的本发明的范围内的这类替换、修改和等同物。
在下面的详细描述中,已经阐述了大量具体细节,诸如具体的方法顺序、结构、元件和连接关系。然而,应该理解不需要利用这些和其他具体细节来实践本发明的实施例。在其他情况下,公知的结构、元件或连接关系已经被省略或尚未特别详细地加以描述以避免对本描述造成不必要的混淆。
说明书内对“一个实施例”或“实施例”的引用意图指示结合该实施例所描述的特定的特征、结构或特点包括在本发明的至少一个实施例中。说明书内的各位置中的词组“在一个实施例中”的出现不一定全部是指同一实施例,也不是与其他实施例互相排斥的分开的或替换的实施例。此外,描述了可以由一些实施例而非其他实施例展示的各种特征。类似地,描述了可以是对于一些实施例而非其他实施例的要求的各种要求。
随后的详细描述的一些部分以程序、步骤、逻辑块、处理和对计算机存储器内的数据位的操作的其他符号表示来呈现。这些描述和表示是由数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域其他技术人员的手段。程序、计算机执行步骤、逻辑块、过程等在此处并且一般地构思为导向期望结果的步骤或指令的自洽序列。步骤是要求对物理量的物理操纵的那些步骤。通常,尽管并非必定,这些量采用能够在计算机系统中被存储、传送、合并、比较和进行其他操纵的电信号或磁信号的形式。已经证明,主要出于普通用法的原因,将这些信号称为位、值、元素、符号、字符、项、数字或相似术语有时是方便的。
然而,应该牢记所有这些和类似术语将与适当的物理量相关联并且仅仅是适用于这些量的方便标签。除非下面的论述另有明显的具体声明,否则应该理解的是,贯穿本发明,利用诸如“访问”或“解密”或“执行”或“提供”等的术语的论述是指计算机系统或类似的电子计算设备的动作和过程,该类似的电子计算设备操纵并且将表示为计算机系统的寄存器和存储器和其他计算机可读介质内的物理(电子)量的数据转化为类似地表示为计算机系统存储器或寄存器或其他这类信息存储、传输或显示设备内的物理量的其他数据。
根据一个实施例的包括使用在线认证和经加密代码执行的安全处理部件的代码保护架构的部件的示例性操作环境
图1A示出了根据一个实施例的、包括安全处理部件101的代码保护架构的部件的示例性操作环境100。在一个实施例中,安全处理部件101提供从程序代码片段所对应的主应用中缺失的该程序代码片段的安全硬件解密,并且与在线服务器105和许可验证服务器107结合使用,以使得提供强大到足以威慑确定对手的多层拷贝保护架构。图1A示出了片上系统(SoC)101、设备103、在线服务器105和许可验证服务器107。在图1A实施例中,SoC101包括安全处理部件101a、CPU101b、GPU101c、视频保护区(VPR)101d和密钥库101e。
参考图1A,设备103是用来操作安装在其上的应用的平台。在一个实施例中,如图1B所示,在在线服务器105处保存来自该应用的程序代码片段或“着色器”,该应用的恰当操作依赖于这段程序代码或“着色器”。因此,参考图1B,如企图在设备103上运行应用150而不从在线服务器105获得该缺失的程序代码片段160,将导致应用150无法恰当地操作。在一个实施例中,可以在操作该应用的用户许可已经被验证之后从在线服务器105下载程序代码片段160。然而,在线服务器105加密程序代码片段160使得对其进行解密的能力被限制于与设备103相关联的安全处理部件(例如图1A中的101a)。这样,对该代码片段进行解密的能力被限制于设备103。
再次参考图1A,主系统处理器CPU101b由半导体材料形成,安全处理部件101a是可以作为该半导体材料的一部分或作为分立的GPU101c的一部分形成的处理核心。在另一个实施例中,如图1A所示,安全处理部件101a、CPU101b和GPU101c可以全部是片上系统101的一部分。在一个实施例中,安全处理部件101a提供在其中解密并执行指定程序代码片段(例如图1B中的160)的安全空间。可以将在由安全处理部件101a所提供的安全空间中执行该程序代码而生成的结果提供到在CPU101b上执行的主应用(例如图1B中的150),用于在主应用的执行中使用。在一个实施例中,安全处理部件101a可以包括密钥库101e,在密钥库101e处保存可以用来解密程序代码片段(例如图1B中的160)的秘密加密密钥。在一个实施例中,秘密加密密钥可以在芯片制造过程中以熔丝形式形成。在一个实施例中,安全处理部件101a具有对在其中形成的秘密加密密钥的独占访问权(秘密密钥可以不向CPU101b或GPU101c提供访问权限)。
CPU101b是主系统处理器。在一个实施例中,CPU101b执行主应用(例如图1B中的150)。在一个实施例中,在将主应用的代码的缺失片段(例如图1B中的160)提供到安全处理器101a(或在其他实施例中到GPU101c)以运行之前,验证对操作主应用(例如图1B中的150)的许可。将由安全处理器101a(或在其他实施例中由GPU101c)所生成的结果提供到主应用(例如图1B中的150),用于由GPU101b在主应用的执行中使用。在一个实施例中,CPU101b不具有对由安全处理部件101a所保存的秘密加密密钥的访问权。
在一个实施例中,GPU101c是可以用来执行主应用的程序代码的缺失片段(例如图1B中的160)的经解密版本的图形处理器。在一个实施例中,GPU101c可以执行来自VPR101d的程序代码片段(例如图1B中的160)。然而,对执行结果的访问被限制于安全处理部件101a。在示例性实施例中,GPU101c,如同CPU101b,可能不具有对由安全处理部件101a保存的秘密加密密钥的访问权。将主应用的程序代码的缺失片段(例如图1B中的160)的经解密版本从安全处理部件101a提供到GPU101c。
视频保护区(VPR)101d是存储器(例如RAM)的安全部分,其为主应用的程序代码的缺失片段(例如图1B中的160)提供安全的执行区域。在一个实施例中,视频保护区101d是存储器的一部分,其中,任何进程可以写入其中但是在硬件级别上得到保护使得读取被限制于受信任的客户。例如,在一个实施例中,安全处理部件101a可以从VPR101d读取,但是不允许CPU101b从VPR101d读取。在另一个实施例中,对VPR101d的读和写访问二者都被限制于安全处理部件101a。
在线服务器105验证设备(例如103)的签名、参与应用许可验证操作并且如果许可被验证,则使用与所涉及的设备(例如设备103)的唯一ID相对应的加密密钥来加密应用的程序代码的缺失片段(例如图1B中的160)或“着色器”。此后,在线服务器105将程序代码的经加密缺失片段(例如图1B中的160)提供到应用(例如图1B中的150),其转而将程序代码的经加密缺失片段(例如图1B中的160)提供到安全处理部件101a用于解密。在一个实施例中,在线服务器105存储由设备的供应商所指定用于代码保护的、用于每个设备(例如设备103)的唯一ID和加密密钥。在一个实施例中,使用与设备的唯一ID相对应的加密密钥来加密程序代码的缺失片段(例如图1B中的160)。在一个实施例中,供应商保存这类私有加密密钥的数据库,以使得在线服务器105和安全处理部件101a可以安全地彼此认证。
许可验证服务器107验证应用(例如图1B中的150)的许可,该应用寻求使它们的许可被验证,以使得它们可以被使能以正常地在特定设备(例如设备103)上进行操作。对应用的许可的验证促使在线服务器加密应用的程序代码的缺失片段(例如图1B中的160)并且将它提供到应用(例如图1B中的150),以使得它可以被解密并且用在应用的执行中。
操作
图1C-1E示出了根据一个实施例的、由作为代码保护架构的一部分的部件所实施的操作。出于清晰和简洁的目的,示出了涉及使用在线认证和经加密代码执行的代码保护的这些操作。应该理解,根据一个实施例,可以实施图1C-1E未示出的其他操作。
经解密代码的安全处理部件运行
参考图1C,在A处,在由在线服务器(例如图1A中的105)验证对操作已经安装在设备(例如图1A中的103)上并且正在CPU101b上执行的应用(例如图1B中的150)的许可之后,与应用(例如图1B中的150)相对应的程序代码的经加密片段或“着色器”由应用(例如图1B中的150)所访问并且被提供到安全处理部件101a用于解密目的。
在B处,由安全处理部件101a解密程序代码的经加密片段。在一个实施例中,安全处理部件101a使用由安全处理部件101a保存的秘密加密密钥来解密程序代码的经加密片段。
在C处,由安全处理部件101a运行程序代码的经解密片段。在一个实施例中,将结果与由代码的运行生成的状态数据一起加以存储。在一个实施例中,在芯片上保存状态数据。在其他实施例中,在芯片外保存状态数据。在一个实施例中,安全处理部件101a可以编码和/或解码在芯片外保存的状态数据。
在D处,将对由程序代码的经解密片段的运行所生成的结果的访问权限赋予CPU101b。在一个实施例中,CPU101b将结果用在在其上执行的相应应用(例如图1B中的150)的执行中。
经解密代码的GPU运行
参考图1D,在A处,在由在线服务器(例如图1A中的105)验证对操作已经安装在设备(例如图1A中的103)上并且正在CPU101b上执行的应用(例如图1B中的150)的许可之后,与应用(例如图1B中的150)相对应的程序代码的经加密片段或“着色器”(例如图1B中的160)由应用(例如图1B中的150)所访问并且被提供到安全处理部件101a用于解密目的。
在B处,由安全处理部件101a解密程序代码的经加密片段。在一个实施例中,安全处理部件101a使用由安全处理部件101a保存的秘密加密密钥来解密程序代码的经加密片段。
在C处,将程序代码的经解密片段存储在VPR101e(例如视频保护区)中。在一个实施例中,安全处理部件101a可以从VPR101e读取但是CPU101b不能从VPR101e读取。
在D处,由GPU101c运行程序代码的经解密片段。在一个实施例中,将结果存储在VPR101e的缓冲区中。
在E处,对由程序代码的经解密片段的运行所生成的结果的访问被写到存储器(例如RAM)并且由CPU101b所访问用于在主应用(例如图1B中的150)的执行中使用。
来自非VPR位置的第二着色器的GPU运行
参考图1E,其中所示的操作A-D的描述与图1C所示的操作A-D的描述类似并且因此出于清晰和简洁的目的不再重复。
再次参考图1E,在E处,在作为操作A-D的一部分所实施的程序代码片段或“着色器”的解密和运行之后,将程序代码片段的运行结果用作输入,输入到GPU101c对来自非视频保护区的第二程序代码片段或“着色器”的运行。在一个实施例中,将从运行第二程序代码片段生成的结果提供到纹理、屏幕对象或其他图形元素。
在示例性实施例中,可以指定任何存储器(高速缓存、RAM等)用于下载程序代码的经加密片段,由此可形成向安全处理部件101a的输入。此外,可以指定任何存储器以接收来自安全处理部件101a的输出。在一个实施例中,输入和输出存储器可以是经加密的或未经加密的。
根据一个实施例的代码保护部件的部件
图2示出了根据一个实施例的、代码保护安全处理部件101a的部件。在一个实施例中,系统101a的部件在硬件中实现用于代码保护的算法。在图2实施例中,安全处理部件101a的部件包括经加密代码访问部件201、经加密代码解密部件203、经解密代码执行部件205、结果访问提供部件207、着色器高速缓存209、状态高速缓存211和密钥库101e。
经加密代码访问部件201访问已经由在线服务器加密的程序代码片段(例如“着色器”),该程序代码片段来自该程序代码片段所对应的正在CPU(例如图1A中的CPU101b)上执行的应用。在一个实施例中,程序代码片段(例如图1B中的160)为正在CPU上执行的应用的正确运作所依赖。
经加密代码解密部件203使用存储在安全处理部件101a的密钥库101e中的解密密钥来解密程序代码的经加密片段。在一个实施例中,将产生自解密的程序代码经解密片段存储在安全处理部件101a的着色器高速缓存209中。
经解密代码执行部件205(可选的)执行由经加密代码解密部件203解密的程序代码经解密片段。在一个实施例中,将执行结果存储在指定的存储器中。在一个实施例中,所存储的状态数据可以被用于程序代码的经解密片段的执行。在另一个实施例中,程序代码的经解密片段的执行由GPU实施。
结果访问提供部件207提供对由经解密代码执行部件205生成的结果的访问。在一个实施例中,将对执行结果的访问赋予程序代码的经解密片段所对应的(并且在CPU上执行的)应用(例如图1B中的150)。在一个实施例中,当GPU运行程序代码的经解密片段时,提供执行结果作为到在非VPR区域中的程序代码的第二片段的运行的输入。
着色器高速缓存209存储由经加密代码解密部件203解密的程序代码的经解密片段。在一个实施例中,将程序代码的经解密片段存储在着色器高速缓存209中,直到做出来自于程序代码的经解密片段所对应的主应用的、促使它的运行的调用。
状态高速缓存211存储状态数据,该状态数据被提供作为到经解密程序代码执行操作(对此本文中已参考图4和5作详细描述)的输入。在一个实施例中,状态数据可以同时包括短期和长期状态数据。在一个实施例中,短期状态数据可以包括但不限于从程序代码片段或“着色器”的先前执行所得出的数据,其反映在着色器的该执行已经完成之后的执行变量的配置。在一个实施例中,长期状态数据可以包括但不限于诸如被保存并被用来得出分数的玩家分数属性的数据。在一个实施例中,短期和长期状态数据二者都可以保存在芯片上。在一个实施例中,长期状态数据可以由安全处理部件编码和解码并且存储在芯片外。
密钥库101e存储秘密加密密钥,该密钥用来解密由在线服务器(例如图1A中的105)提供的程序代码片段。在一个实施例中,密钥库101e存储与设备的唯一ID相对应的加密密钥,该设备上安装有所述程序代码片段所对应的应用。
在一个实施例中,安全处理部件101a的前述部件可以在硬件中实现。在一个实施例中,部件101a的部件和操作可以由一个或多个计算机部件(例如图1A中的CPU101b或GPU101c)的部件和操作包含。在另一个实施例中,系统101a的部件和操作可以与前述的一个或多个计算机部件分开但是可以与其部件和操作协同地进行操作。
根据一个实施例的用于使用在线认证和经加密代码执行的代码保护的方法
图3示出了根据一个实施例的、用于使用在线认证和经加密代码执行的代码保护的方法中所实施的操作的流程图300。图4、5和6示出了图3的方法的示例性实施例的流程图400、500和600。图7示出了根据一个实施例的、用于代码保护的方法的认证过程中所实施的操作的流程图700。这些流程图包括,在一个实施例中,可以在计算机可读和计算机可执行指令的控制下由处理器和电子部件实施的过程。尽管流程图中公开了具体的操作,但是这类操作是示例性的。也就是说,本实施例非常适合实施各种其他操作或流程图中所叙述的操作的变体。尽管流程图中公开了具体的步骤,但是这类步骤是示例性的。也就是说,本实施例非常适合实施各种其他操作或流程图中所叙述的操作的变体。
用于代码保护的示例性方法
参考图3,在301,访问程序代码的经加密片段或“着色器”(例如图1B中的160)。如本文所论述的,在对于应用的操作的许可已经被验证之后由来自在线服务器(例如图1A中的在线服务器105)的、与程序代码的经加密片段所对应的应用访问该程序代码的经加密片段。
在303,解密程序代码的经加密片段(例如图1B中的160)。如本文所论述的,由保存秘密加密密钥的硬件安全处理部件解密程序代码的经加密片段,该程序代码的经加密片段利用该秘密加密密钥来解密。
在305,执行程序代码的经解密片段。在一个实施例中,由安全处理部件(例如图1A中的101a)执行程序代码的经解密片段。在另一个实施例中,程序代码的经解密片段被存储在VPR(例如图1A中的101d)并且由GPU(例如图1A的GPU101c)执行。
在307,提供对经执行的程序代码结果的访问。在一个实施例中,经执行的程序代码结果由正在CPU(例如图1A的CPU101b)上执行的、其所对应的主应用(例如图1B中的150)访问并且由CPU用来执行主应用。在另一个实施例中,当GPU运行程序代码的经解密片段时,提供执行结果作为到在非VPR区域中的程序代码的第二片段的运行的输入。
经解密代码的安全处理部件运行
图4示出了作为用于使用在线认证和经加密代码执行的代码保护的方法的一部分实施的操作的流程图,其中经解密代码的运行由安全处理部件实施。参考图4,作为方法的一部分,CPU101b执行经解密代码所对应的主应用(例如,图1B中的150)。操作401-421与主应用(例如,图1B中的150)的执行相关联。如图4所示,在401,在应用已经被购买并且安装在设备上之后,可以开始应用初始化并且确定用于该应用的程序代码安全片段或“着色器”(例如图1B中的160)是否存在。在403,如果用于该应用的程序代码安全片段(例如图1B中的160)不存在,则检查并且初始化该应用。在405,如果用于该应用的程序代码安全片段(例如图1B中的160)存在,则将程序代码的经加密片段(例如图1B中的160)发送到安全处理部件101a用于解密。在407,完成应用初始化。在409,由安全处理部件101a确定程序代码片段(例如图1B中的160)是否就绪。在411,如果程序代码片段(例如图1B中的160)就绪,则开始用于该应用的主执行循环。在413,如果程序代码片段(例如图1B中的160)未就绪,则退出或重新初始化应用。在415,将指示其唤起程序代码片段(例如图1B中的160)的指令发送到安全处理部件101a。在417,运行其他应用功能。在419,从安全处理部件101a获得来自程序代码片段(例如图1B中的160)的运行的结果并且使用它。在421,确定是否要继续执行。如果确定要继续执行,则将控制返回411。如果确定执行完成,那么退出执行循环。
如图4所示,在一个实施例中,安全处理部件101a解密并且执行与主应用(例如如以上所描述的在CPU101b上执行的图1B中的150)相对应的程序代码片段(例如图1B中的160)。参考图4描述这些操作423-431。参考图4,在423,解密程序代码的经加密片段(例如图1B中的160)。在一个实施例中,使用处理器解密密钥101e来解密程序代码片段(例如图1B中的160)。在425,确定程序代码片段(例如图1B中的160)是否已经正确地被解密并且时间限制是否尚未到期。并且如果程序代码片段已经正确地被解密并且时间限制尚未到期,则在427,将程序代码片段(例如图1B中的160)存储在安全处理设备101a的着色器高速缓存209中并且将回答“就绪”返回用于着色器就绪查询。在429,从着色器高速缓存209访问程序代码片段(例如图1B中的160)并且运行它。并且,在431,从运行程序代码片段(例如图1B中的160)所生成的输出或结果被存储并且提供到主应用(例如图1B中的150)并且将状态数据存储在状态高速缓存211(例如RAM等)中。
经解密代码的GPU运行
图5示出了作为用于使用在线认证和经加密代码执行的代码保护的方法的一部分实施的操作的流程图,其中经解密代码的运行由GPU101c实施。参考图5,作为方法的一部分,CPU101b执行主应用(例如图1B中的150)。操作501-523与主应用(例如图1B中的150)的执行相关联。如图5所示,在501,在应用已经被购买并且安装在设备上之后,可以开始应用初始化并且确定用于该应用的程序代码安全片段或“着色器”(例如图1B中的160)是否存在。在503,如果用于该应用的程序代码安全片段(例如图1B中的160)不存在,则检查并且初始化应用。在505,如果用于该应用的程序代码安全片段存在,则将程序代码的经加密片段(例如图1B中的160)发送到安全处理部件101a用于解密。在507,完成应用初始化。在509,从安全处理部件101a确定程序代码片段(例如图1B中的160)是否就绪。在511,如果程序代码片段(例如图1B中的160)就绪,则开始用于应用的主执行循环。在513,如果程序代码片段(例如图1B中的160)未就绪,则退出或重新初始化应用。在515,将程序输入的相关片段(如图1B中的160)写到RAM。在517,将指示GPU101c运行程序代码片段(例如图1B中的160)的指令发送到GPU101c。在519,运行其他应用功能。在521,从RAM获得运行代码的片段或“着色器”(例如图1B中的160)的结果并且使用它。在523,确定是否要继续执行。如果确定要继续执行,则将控制返回511。如果确定执行完成,那么退出执行循环。
如图5所示,在一个实施例中,安全处理部件101a解密程序代码片段(例如图1B中的160)、将程序代码片段(例如图1B中的160)放置到VPR101e中并且指示GPU101c运行程序代码片段(例如图1B中的160)。参考图5描述这些操作525-535。再次参考图5,在525,解密程序代码的经加密片段(例如图1B中的160)。在一个实施例中,使用处理器解密密钥101e来解密程序代码片段(例如图1B中的160)。在527,如果确定程序代码片段(例如图1B中的160)已经正确地被解密并且时间限制尚未到期,则在529将程序代码片段(例如图1B中的160)放置到VPR中。在527,如果确定程序代码片段(例如图1B中的160)尚未被正确地解密,则将该信息提供到在CPU101b(参见操作509)上执行的主应用(例如图1B中的150)。在531,在程序代码片段输入已经被写到RAM之后,从RAM读取程序代码片段输入并且将其写到VPR101d。在533,安全处理部件101a指示GPU101c运行程序代码片段(例如图1B中的160)。在535,从VPR读取由运行程序代码片段(例如图1B中的160)而生成的输出并且将其写到RAM。在一个实施例中,取决于被使用的硬件,主应用(例如图1B中的150)或安全处理部件(例如图1A中的101a)可以实施操作531和533。
如图5所示,VPR101d接收程序代码片段(图1B中的160)并且提供空间用于程序代码片段(图1B中的160)的安全执行。参考图5描述这些操作537-545。参考图5,在537,VPR101d接收程序代码片段(例如图1B中的160)。在539,将程序代码片段(例如图1B中的160)放置到VPR101d中的输入缓冲区中。在541,在被指示运行程序代码片段(例如图1B中的160)之后,由GPU101d运行程序代码片段(例如图1B中的160)。在543,将输出存储在VPR101d中的缓冲区中。在一个实施例中,该输出被提供到安全处理部件101a并且由在CPU101b上执行的主应用访问。并且,在545,结束与程序代码片段(例如图1B中的160)相关的操作。
来自非VPR位置的第二着色器的GPU运行
图6示出了作为用于使用在线认证和经加密代码执行的代码保护的方法的一部分实施的操作的流程图,其中来自非VPR位置的第二着色器的运行由GPU101c实施。参考图6描述这些操作。操作601-645的描述与对于以上所描述的操作501-545的那些描述类似并且因此不再重复。参考图6,在647,来自程序代码片段或“着色器”的运行的输出被接收并且用来运行第二着色器。并且,在649,将第二着色器输出到纹理、屏幕对象或其他图形元素。在一个实施例中,取决于被使用的硬件,主应用(例如图1B中的150)或安全处理部件(例如图1A中的101a)可以实施操作631和633。
认证
图7示出了根据一个实施例的、作为用于使用在线认证和经加密代码执行的代码保护的方法的一部分实施的认证操作的流程图。参考图7,在701,检查并初始化应用ID。在703,获得所涉及的片上系统(SoC)的用户ID和用户ID签名。在705,从用户ID和加密密钥(安全处理部件)产生签名。在707,由主应用(例如图1B中的150)产生用户ID、签名和应用ID。在709,验证用于用户ID的签名。在711,生成令牌。在713,确定服务器是否应该验证许可。如果服务器应该验证许可,则在715,确定设备是否具有经许可的应用ID(例如使用完成请求并且签署令牌的许可验证服务器107)。之后,在717,进行对许可的有效性和响应是否被正确的签署的验证。如果服务器不应该验证许可,则在719,令牌被用于在线许可检查(例如使用完成请求并且签署令牌的许可验证服务器107)。之后,在721,接收许可响应并且将其发送到服务器(参见717)。在723,加密与应用ID相对应的程序代码片段或“着色器”。在725,将经加密的着色器提供到应用(例如图1B中的150)。并且,在727,着色器被接收并且由应用(例如图1B中的150)存储,并且在729将控制返回到应用初始化。应该理解关于图7所论述的认证和验证操作仅是示例性的,并且可以采用如本文所论述的(参见725)、其成功完成导致将经加密的着色器提供到主应用的、任何安全的基于服务器的认证和验证过程。
本文所描述的方法论的示例性特征是所涉及的应用是可以在许可验证之后下载的、缺失的程序代码的关键片段(例如图1B中的160)。并且,加密该程序代码的缺失片段(例如图1B中的160)用于具体的安全处理部件。这样,程序代码片段(例如图1B中的160)的解密和运行可以被限制于被许可人的个人设备。此外,可以以私有的和安全的方式运行程序代码片段(例如图1B中的160),以使得盗窃可以被防止。在一个实施例中,如果被许可人具有多个设备,则每次在各自的设备上安装并且运行应用时就实施许可验证。
由于本文所描述的架构,如果移除本文所描述的许可检查,则该应用(例如图1B中的150)运行时将缺失程序代码的关键片段。结果,尽管应用(例如图1B中的150)可能运行,但是它可能无法恰当地发挥功能。例如,如果根据本文所描述的原理使游戏格式化,并且它的人工智能(AI)的一部分从程序代码的缺失片段(例如图1B中的160)得出,则AI将仅能够在许可检查通过(许可被验证)的条件下执行。因此,如果移除调用来规避许可检查,则游戏可以运行,但是没有恰当的AI。此外,因为AI形成游戏进行的关键组件,所以没有恰当的AI,游戏很可能是无法被游玩的。
在另一个示例中,如果游戏的碰撞检测代码由安全处理部件(例如图1A中的101a)作为二进制运行,并且移除对安全处理部件(例如图1A中的101a)的许可服务器检查和调用,则非法拷贝执行但是玩家可能穿过墙壁和游戏中的其他对象,因此破坏游戏体验。
在又一个示例中,如果字处理器的“生成可用字体”功能由安全处理部件作为二进制加以执行并且移除对安全处理部件的调用,则应用(例如图1B中的150)可能无法生成可用字体的列表。此外,没有字体,用户不能写任何东西,使得盗版的字处理器无用。
关于其示例性实施例,公开了用于代码保护的部件、架构和方法。方法包括在由在线服务器认证对于应用程序的使用的许可之后使用安全处理部件来访问由在线服务器加密的、应用程序的经加密部分。安全处理部件用来使用存储在安全处理部件中的加密密钥对应用程序的经加密部分进行解密。基于所存储的状态数据执行应用程序的经解密部分。将结果提供到正在第二处理部件上执行的应用程序。
尽管以上为了方便以单数描述了许多部件和过程,但是本领域技术人员应该理解多个部件和重复过程也可以用来实践本发明的技术。进一步地,虽然本发明已经关于其具体实施例进行了特别示出和描述,但是本领域技术人员应该理解可以做出所公开的实施例的形式和细节的改变而不脱离本发明的精神和范围。例如,本发明的实施例可以采用各种各样的部件并且不应该被限制于以上所提及的部件。因此本发明意图被解释为包括落入本发明的真实精神和范围内的所有变体和等同物。

Claims (20)

1.一种用于代码保护的方法,包括:
在由在线服务器验证对使用应用程序的许可之后,使用处理部件,访问所述应用程序的由所述在线服务器加密的经加密部分;
使用所述处理部件,使用存储在所述处理部件中的加密密钥解密所述应用程序的所述经加密部分,其中生成所述应用程序的相应的经解密部分;
使用所存储的状态数据执行所述应用程序的所述经解密部分并且生成执行结果;以及
使用所述处理部件将所述结果提供到正在于第二处理部件上执行的所述应用程序。
2.如权利要求1所述的方法,其中对所述加密密钥的访问被限制于所述处理部件。
3.如权利要求1所述的方法,其中所述执行所述应用程序的所述经解密部分由所述处理部件实施。
4.如权利要求1所述的方法,其中所述执行所述应用程序的所述经解密部分由图形处理部件实施。
5.如权利要求4所述的方法,其中所述应用程序的所述经解密部分存储在存储器的指定视频保护区中并且其中从所述视频保护区读的能力被限制于所述处理部件。
6.如权利要求5所述的方法,其中从所述视频保护区读和写的能力被限制于所述处理部件。
7.如权利要求1所述的方法,其中所述处理部件是具体化在所述第二处理部件和图形处理部件二者之一中的处理部件,其中所述第二处理部件是片上系统的主处理器。
8.如权利要求1所述的方法,其中存储器的提供到所述处理部件的输入并且接收来自所述处理部件的输出的部分是经加密的和未经加密的二者之一的部分。
9.如权利要求1所述的方法,其中所述状态数据包括短期状态数据和长期状态数据,所述长期状态数据是在片上保存的和在片外保存的二者之一。
10.一种安全处理部件,包括:
访问部件,所述访问部件在由在线服务器验证对使用应用程序的许可之后访问所述应用程序的由所述在线服务器加密的经加密部分;
解密部件,所述解密部件使用存储在所述安全处理部件中的加密密钥解密所述应用程序的所述经加密部分,其中生成所述应用程序的相应的经解密部分;
访问提供部件,所述访问提供部件提供对从所述应用程序的所述经解密部分的执行所生成的执行结果的访问。
11.如权利要求10所述的安全处理部件,其中对所述加密密钥的访问被限制于所述安全处理部件。
12.如权利要求10所述的安全处理部件,进一步包括执行部件,所述执行部件执行所述应用程序的所述经解密部分。
13.如权利要求10所述的安全处理部件,其中图形处理部件执行所述应用程序的所述经解密部分。
14.如权利要求13所述的安全处理部件,其中存储器的指定视频保护区存储所述应用的所述经解密部分并且其中从所述存储器的所述视频保护区读的能力被限制于所述安全处理部件。
15.一种片上系统,包括:
处理器;
图形处理器;以及
安全处理部件,所述安全处理部件包括:
访问部件,所述访问部件在由在线服务器验证对使用应用程序的许可之后访问所述应用程序的由所述在线服务器加密的经加密部分;
解密部件,所述解密部件使用存储在所述处理部件中的加密密钥解密所述应用程序的所述经加密部分,其中生成所述应用程序的相应的经解密部分;
访问提供部件,所述访问提供部件提供对从所述应用程序的所述经解密部分的执行所生成的执行结果的访问。
16.如权利要求15所述的片上系统,其中所述加密密钥被限制于所述处理部件。
17.如权利要求15所述的片上系统,进一步包括执行部件,所述执行部件执行所述应用程序的所述经解密部分。
18.如权利要求15所述的片上系统,其中所述图形处理器执行所述应用程序的所述经解密部分。
19.如权利要求15所述的片上系统,其中所述安全处理部件具体化在所述CPU中并且其中所述CPU是所述片上系统的主处理器。
20.如权利要求15所述的片上系统,其中所述安全处理部件具体化在所述GPU中。
CN201310636865.2A 2012-11-30 2013-12-02 使用在线认证和经加密代码执行的代码保护方法和系统 Active CN103856481B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/691,613 2012-11-30
US13/691,613 US9177121B2 (en) 2012-04-27 2012-11-30 Code protection using online authentication and encrypted code execution

Publications (2)

Publication Number Publication Date
CN103856481A true CN103856481A (zh) 2014-06-11
CN103856481B CN103856481B (zh) 2017-09-22

Family

ID=50726261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310636865.2A Active CN103856481B (zh) 2012-11-30 2013-12-02 使用在线认证和经加密代码执行的代码保护方法和系统

Country Status (4)

Country Link
US (1) US9177121B2 (zh)
CN (1) CN103856481B (zh)
DE (1) DE102013224578A1 (zh)
TW (1) TWI526866B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107070848A (zh) * 2015-10-09 2017-08-18 Sap欧洲公司 为分析性web应用加密数据
CN109145654A (zh) * 2018-08-15 2019-01-04 阿里巴巴集团控股有限公司 防止破解算法模型的芯片及业务处理方法
WO2022068322A1 (en) * 2020-09-29 2022-04-07 International Business Machines Corporation Software access through heterogeneous encryption

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242597A1 (en) * 2014-02-24 2015-08-27 Google Inc. Transferring authorization from an authenticated device to an unauthenticated device
US9449189B1 (en) * 2015-11-03 2016-09-20 International Business Machines Corporation Protection of state data in computer system code
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US10318748B2 (en) * 2016-09-30 2019-06-11 Intel Corporation Techniques to protect fuses against non-destructive attacks
US10367639B2 (en) 2016-12-29 2019-07-30 Intel Corporation Graphics processor with encrypted kernels
AU2019277292A1 (en) * 2018-05-28 2020-10-22 Royal Bank Of Canada System and method for secure electronic transaction platform
US11271935B2 (en) * 2020-07-30 2022-03-08 Bank Of America Corporation Blind authenticator

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU783094B2 (en) * 2000-05-10 2005-09-22 Koninklijke Philips Electronics N.V. Controlled distributing of digital information, in particular audio
US7930537B2 (en) 2002-08-13 2011-04-19 Nokia Corporation Architecture for encrypted application installation
US7117284B2 (en) 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
JP4770425B2 (ja) * 2005-11-24 2011-09-14 富士ゼロックス株式会社 保護済み実行プログラムの作成のためのプログラム、方法及び装置
US20090172331A1 (en) 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
JP2009194860A (ja) 2008-02-18 2009-08-27 Toshiba Corp 送信装置、受信装置、コンテンツ送受信システム、コンテンツ送信方法、コンテンツ受信方法及びプログラム
CN101393521B (zh) * 2008-11-13 2012-04-25 上海交通大学 Windows应用程序内部固化数据的提取系统
US8266448B2 (en) * 2008-12-09 2012-09-11 Nvidia Corporation Apparatus, system, method, and computer program product for generating and securing a program capable of being executed utilizing a processor to decrypt content
US20100153667A1 (en) 2008-12-15 2010-06-17 Sony Ericsson Mobile Communications Ab Method, computer program and electronic device
US20110289294A1 (en) 2009-12-14 2011-11-24 Manabu Maeda Information processing apparatus
US8499304B2 (en) 2009-12-15 2013-07-30 At&T Mobility Ii Llc Multiple mode mobile device
US20110154436A1 (en) 2009-12-21 2011-06-23 Mediatek Inc. Provider Management Methods and Systems for a Portable Device Running Android Platform
EP2549380B1 (en) 2010-03-16 2018-06-13 Panasonic Intellectual Property Management Co., Ltd. Information processing device, virtual machine generation method, and application software distribution system
CN101814124A (zh) * 2010-04-20 2010-08-25 浪潮电子信息产业股份有限公司 一种基于Java的软件安全性加强的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
毛文娟 等: "《嵌入式软件代码保护系统的设计与实现》", 《微计算机应用》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107070848A (zh) * 2015-10-09 2017-08-18 Sap欧洲公司 为分析性web应用加密数据
CN107070848B (zh) * 2015-10-09 2021-03-16 Sap欧洲公司 为分析性web应用加密数据
CN109145654A (zh) * 2018-08-15 2019-01-04 阿里巴巴集团控股有限公司 防止破解算法模型的芯片及业务处理方法
WO2022068322A1 (en) * 2020-09-29 2022-04-07 International Business Machines Corporation Software access through heterogeneous encryption
GB2614677A (en) * 2020-09-29 2023-07-12 Ibm Software access through heterogeneous encryption

Also Published As

Publication number Publication date
DE102013224578A1 (de) 2014-06-05
TWI526866B (zh) 2016-03-21
CN103856481B (zh) 2017-09-22
US20140157423A1 (en) 2014-06-05
TW201443680A (zh) 2014-11-16
US9177121B2 (en) 2015-11-03

Similar Documents

Publication Publication Date Title
CN103856481A (zh) 使用在线认证和经加密代码执行的代码保护
US11281769B2 (en) Software integrity verification
US6006328A (en) Computer software authentication, protection, and security system
Nagra et al. Surreptitious software: obfuscation, watermarking, and tamperproofing for software protection
US20210294879A1 (en) Securing executable code integrity using auto-derivative key
CN104318135B (zh) 一种基于可信执行环境的Java代码安全动态载入方法
US20170116410A1 (en) Software protection
US20080060085A1 (en) Protecting Files on a Storage Device from Unauthorized Access or Copying
CN103136468A (zh) 协助用于硬件保护的应用程序的系统服务请求交互
WO1997004394A1 (en) Computer software authentication, protection, and security system
CN102918539A (zh) 用于保护重放内容的方法和装置
US20050198517A1 (en) System and method for distributed module authentication
US9047448B2 (en) Branch auditing in a computer program
US20130227271A1 (en) Method for distributing digital documents to which user rights are attached, which support multiple copying, exchange, and multiple platforms
KR20200099041A (ko) 블록체인 기반 콘텐츠 이용 권한 관리 장치 및 방법
US20190197216A1 (en) Method, apparatus, and computer-readable medium for executing a logic on a computing device and protecting the logic against reverse engineering
CN109145617A (zh) 一种基于区块链的数字版权保护方法及系统
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
Huang et al. Smart contract watermarking based on code obfuscation
KR101405915B1 (ko) 데이터의 암호화 저장 방법 및 암호화된 데이터의 판독방법
CN115828228A (zh) 一种验证内存马检测能力的方法、装置及电子设备
EP2735992B1 (en) Software identification
AU725098B2 (en) Computer software authentication, protection, and security system
US11273380B1 (en) Method and apparatus for preventing cheating in a video game environment by providing obfuscated game variables
Usama et al. Software Copy Protection and Licensing based on XrML and PKCS# 11

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant