CN103198239A - 经由在线服务器的内容保护和安全操作系统中的代码执行 - Google Patents

经由在线服务器的内容保护和安全操作系统中的代码执行 Download PDF

Info

Publication number
CN103198239A
CN103198239A CN201210333063XA CN201210333063A CN103198239A CN 103198239 A CN103198239 A CN 103198239A CN 201210333063X A CN201210333063X A CN 201210333063XA CN 201210333063 A CN201210333063 A CN 201210333063A CN 103198239 A CN103198239 A CN 103198239A
Authority
CN
China
Prior art keywords
software application
operating system
code section
deciphering
software
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
Application number
CN201210333063XA
Other languages
English (en)
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 CN103198239A publication Critical patent/CN103198239A/zh
Pending legal-status Critical Current

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]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/106Enforcing content protection by specific content processing
    • G06F21/1064Restricting content processing at operating system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

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

Abstract

计算机系统,其包括处理器和用于存储指令的存储器,当由处理器执行时实施拷贝保护方法。拷贝保护方法包括在第一操作系统中执行第一软件应用程序的软件循环。在该软件循环中执行对代码部分的第一调用。响应于该第一调用,在第二操作系统中执行第一软件应用程序的经解密的代码部分。响应于第一软件应用程序的成功验证解密该代码部分。

Description

经由在线服务器的内容保护和安全操作系统中的代码执行
相关申请的交叉引用
本申请案主张享有于2011年9月9日申请提交的题目为“DRM VIAONLINE SERVERS & CODE EXECUTION IN A SECURE OS.”的美国临时申请案No.61/533,060的优先权。
技术领域
本公开总地涉及数字版权管理领域,并且,更具体地,涉及软件应用程序的拷贝保护领域。
背景技术
数字版权管理包括各种方法,包括硬件和软件,其被用于控制或限制数字内容的使用。通常使用此类方法来力图确保数字内容的所有用户已合法购买该数字内容。此类方法还可以被用于控制或限制软件应用程序。
软件拷贝保护通常使用以下技术之一或其组合:在购买或注册之后可以提供完整的应用程序;可以使用序列号或密钥激活完整的软件应用程序;或者在安装期间或当软件正在运行时,可以查询在线服务器以验证安装是否合法或是否是经注册的拷贝。仅在购买或注册(在磁盘上或经由因特网下载)之后提供完整的软件应用程序的问题是合法购买者可以拷贝软件并将它提供给另外一个人,其之后可以在另一设备上安装并运行该软件。使用序列号或密钥激活完整的软件应用程序的一个问题是合法用户也可以将这个序列号给另外一个人,其之后可以采用相同的密钥激活该软件的另一拷贝。最后,查询在线服务器以验证安装是否合法或是否是经注册的拷贝(在安装期间或当该软件正在运行时)的问题是可以规避执行在线服务器检查的程序代码以始终返回“合法”状态。
随着“永远在线”设备的问世,选择查询在线服务器已经成为版权保护的流行方式。不幸的是,在线服务器检查可以很容易地被移除或修改。对于台式机和移动设备软件来说,当操作系统(OS)在没有额外的检查或通知的情况下执行经修改的可执行文件时,这会造成严重的问题。对台式机和移动设备软件的盗版率可能是极其高的。例如,经报道,对于移动设备来说,当个人软件销售量与软件应用程序的下载量相比时,软件应用程序的盗版率高达10:1。因此,存在对用于控制数字内容和用于为软件应用程序提供拷贝保护的改进方法的需求。
发明内容
本发明的实施例提供了对在软件应用程序中管理拷贝保护的固有挑战的解决方案。本发明的实施例通过提供在第一操作系统中执行的软件应用程序来改进拷贝管理,所述第一操作系统包括对执行在安全操作系统中的函数或过程或例程等的调用。响应于这一调用所返回的结果导致下列情况之一:如果所述第一软件应用程序未被验证则导致对于所述第一软件应用程序来说为不可操作状态,和如果所述第一软件应用程序已被成功验证则导致对于所述第一软件应用程序来说为可操作状态。从在所述第一软件应用程序中造成所述不可操作状态的所述调用所返回的所述结果包括下列之一:预定响应、垃圾数据和不返回结果。
根据本发明的一个实施例,公开了用于拷贝管理的方法。所述方法包括在第一操作系统中执行第一软件应用程序的软件循环。在所述软件循环中还执行第一函数调用。响应于所述第一函数调用,在第二操作系统中执行所述第一软件应用程序的经解密的第一函数,其中响应于所述第一软件应用程序的成功验证来解密所述第一函数。如果所述第一软件应用程序未被验证,那么调用所述第一函数将导致死锁或其他程序假象或故障。当所述第一软件应用程序未被验证时,那么调用所述第一函数调用会导致下列之一:预定响应、垃圾数据和不返回结果。
根据本发明的一个实施例,计算机系统包括处理器和用于存储指令的存储器,所述指令当由所述处理器执行时实施拷贝保护方法。所述拷贝保护方法包括在第一操作系统中执行第一软件应用程序的软件循环。在所述软件循环中执行第一函数调用。响应于所述第一函数调用,在第二操作系统中执行所述第一软件应用程序的经解密的第一函数。响应于所述第一软件应用程序的成功验证来解密所述第一函数。如果所述第一软件应用程序未被验证,那么调用所述第一函数将导致死机或其他程序假象或故障。当所述第一软件应用程序未被验证时,那么调用所述第一函数调用会导致下列之一:预定响应、垃圾数据和不返回结果。
根据本发明的一个实施例,计算机系统包括处理器和随机存取存储器,所述随机存取存储器包括非安全化部分和安全化部分。所述非安全化部分包括运行第一软件应用程序的第一操作系统。所述第一软件应用程序包括软件循环。所述安全化部分包括运行第二软件应用程序的第二操作系统。所述计算机系统进一步包括存储第一函数的安全化存储区;和用于存储指令的存储器,所述指令当由所述处理器执行时实施拷贝保护方法。所述方法包括执行所述第一软件应用程序的所述软件循环以及在所述软件循环中执行第一函数调用。响应于所述第一函数调用,在所述第二操作系统中执行所述第一软件应用程序的所述第一函数。所述第一函数调用的结果产生下列情况之一:当所述第一软件应用程序未被成功验证时则在所述第一软件应用程序中产生不可操作状态,和当所述第一软件应用程序已被成功验证时则在所述第一软件应用程序中产生可操作状态。如果所述第一软件应用程序未被验证,那么调用所述第一函数将导致死锁或其他程序假象或故障。在所述第一软件应用程序中造成所述不可操作状态的从所述调用所返回的所述结果包括下列之一:预定响应、垃圾数据和不返回结果。
附图说明
通过阅读以下详细说明,并结合附图将更好地理解本发明,在附图中相同的标号表示相同的元件,其中:
图1示出了根据本发明实施例的具有随机存取存储器的安全化部分和安全化存储区的计算机系统的示例性简化框图;
图2示出了根据本发明实施例的包括实现数字版权管理的安全化操作系统部分的操作系统环境的示例性简化框图;
图3示出了根据本发明实施例的包括非安全化操作系统和安全化操作系统的操作系统环境的示例性简化框图;
图4示出了根据本发明实施例的管理软件应用程序的拷贝保护的方法的示例性流程图;和
图5示出了根据本发明实施例的用于拷贝保护的验证应用程序的方法的示例性流程图。
具体实施方式
现在将详细提及本发明的优选实施例,其示例在附图中示出。虽然本发明将结合优选实施例进行描述,但是应该理解它们并非旨在将本发明局限于这些实施例。正相反,本发明旨在覆盖可能被包括在由所附权利要求定义的本发明的精神和范围内的替代、修改和等同物。此外,在以下本发明实施例的详细描述中,将提出大量具体细节以提供对本发明的透彻理解。然而,本领域的普通技术人员应该认识到本发明可以在没有这些具体细节的情况下实施。在其他例子中,没有详细描述公知的方法、过程(procedure)、组件和电路,以免对本发明实施例的各方面造成不必要的混淆。示出本发明实施例的附图是半图(semi-diagrammatic)式的,并未按比例绘制,并且特别地,一些尺寸是出于显示的清晰度而在附图中夸大示出。同样地,尽管为了便于描述,附图中的视图一般显示相似的方向性,但是图中的描述大多数情况下是任意的。
符号和术语
以下一些部分的详细描述以操作计算机存储器内部数据比特的过程、步骤、逻辑块、处理和其他象征性表示来呈现。这些描述和表示是数据处理领域的技术人员使用的手段以便最有效地向本领域的其他技术人员传达他们的工作内容。过程、计算机所执行的步骤、逻辑块、进程等,在这里一般被设想为引起期望结果的步骤或指令的自洽序列。步骤指的是要求物理量的物理操纵的那些。通常,但并非必然,这些量采取能够在计算机系统中被存储、转移、合并、比较和进行其他处理的电信号或磁信号的形式。已证明,主要由于常见用法的缘故,以比特、值、元件、符号、字符、术语、数字或诸如此类来指代这些信号有时是方便的。
然而,应当牢记所有这些以及类似的术语要与适当的物理量相关联并仅仅是适用于这些量的方便标签。除非特别声明,否则从以下论述中显而易见的是,应当理解,贯穿本发明的利用诸如“处理”或“访问”或“执行”或“存储”或“渲染”或诸如此类的术语的论述指代计算机系统或类似电子计算设备的动作和进程,所述计算机系统或类似电子计算设备操纵被表示为在计算机系统的寄存器和存储器和其他计算机可读介质内部的物理(电子)量的数据并将其转换成其他类似地被表示为在计算机系统存储器或寄存器或其他这类信息存储、传输或显示设备内部的物理量的数据。当组件出现在几个实施例中时,使用相同的标记数字表示该组件与原始实施例中示出的组件相同。
本发明的实施例提供了对软件应用程序的数字版权管理和拷贝保护中固有的日益增加的挑战的解决方案。本公开的各种实施例通过并入将要在安全操作系统中执行的软件应用程序的一部分(例如“二进制数”)来提供软件应用程序验证和拷贝保护。如下面所详细论述的,在常规的非安全操作系统中执行示例性的软件应用程序,而在安全操作系统中执行并维护该软件应用程序的一部分(该二进制数)。在一个示例性实施例中,软件应用程序执行包括对函数的调用的主程序循环,该函数将要在安全操作系统中执行。对函数的调用可以被定义为对子例程、例程、过程或其他功能的调用。如下面所详细论述的,仅当该软件应用程序已被适当验证时才可以解密安全操作系统中的示例性函数等。
发出对这个二进制数的函数调用的结果会产生下列情况之一:如果该软件应用程序未被验证则为该软件应用程序产生不可操作状态,以及如果该软件应用程序已被成功验证则为该软件应用程序产生可操作状态。不可操作状态通过返回垃圾数据来宣布该应用程序不可用。在一个示例性实施例中,如果该软件应用程序未被验证,那么调用该二进制数将导致死锁或其他程序假象(artifact)或故障。在一个示例性实施例中,从在软件应用程序中造成不可操作状态的调用所返回的结果包括下列之一:预定响应、垃圾数据和不返回结果。如下面所详细论述的,安全化(secured)函数的解密以及安全化函数的初始化和执行由运行在安全化操作环境中的“安全化服务”应用程序来提供。
图1示出了示例性的计算机系统100。计算机系统100包括处理器102、随机存取存储器(RAM)模块104、安全RAM模块106、安全存储模块108和存储模块110,存储模块110是非安全存储模块。在各种实施例中,计算机系统100可以是台式计算机、膝上型计算机、移动计算设备、智能电话、平板计算机或一些其他的计算设备。在一个示例性实施例中,处理器102是微处理器。在一个实施例中,该计算机系统包括片上系统(SOC)。在一个示例性实施例中,安全RAM106是RAM104的一部分。可以选择RAM104将要作为安全RAM106的那部分。在一个示例性实施例中,用于存储器地址的可选比特可以将存储器地址指派为安全化范围的一部分。在一个示例性实施例中,安全存储108是更大的非易失存储器设备的一部分。在另一个示例性实施例中,安全存储108是独立的非易失存储器设备。
如下面所详细论述的,图1的计算机系统100可以提供常规的非安全化的主操作环境(主OS),其利用RAM104和存储模块110,同时还运行安全化操作环境(安全OS),所述安全化操作环境利用安全RAM 106和安全存储108。在一个实施例中,安全OS可以包括运行在主OS内部的安全空间中的封装OS内核。在一个示例性实施例中,安全OS是与主OS分开的单独操作系统并在后台引导(boot)时运行。安全OS可以利用计算机处理器102的安全特性来为基本操作系统以及为运行在安全OS中的进程和服务提供安全的引导,该安全OS具有经加密的文件系统(安全存储108)、安全RAM 106和单独的CPU处理。在一个实施例中,如下面所详细论述的,安全OS可以运行在安全OS内部执行的应用程序。在一个实施例中,可以由标准进程通过特定的API调用来访问运行在安全OS中的应用程序。因为这类应用程序仅在安全OS内部是可访问的,因此它们可以具备经加密的处理、存储和RAM。
图2示出了实现拷贝保护技术的示例性计算机操作系统环境。如图2所示,示例性的软件操作环境200包括常规主操作系统(非安全OS)202和安全化操作环境(安全OS)204。安全OS 204包括安全软件应用程序(“安全服务”)206,其包括软件应用程序210的经加密的部分(例如二进制数)212,用于解密该经加密的二进制数212的解密模块214,用于为执行而解释、初始化和准备经解密的二进制数212的解释器模块216,和准备执行的经初始化的二进制数(“Binary”)218。在一个示例性实施例中,可以用本机的CPU指令来替换解释器模块216。如下面所详细描述的,示例性的解释器模块216或其他类似模块可以根据安全OS的规定提供解释服务。
在一个示例性实施例中,解释器216解释经解密的二进制数212的代码使得它可以被执行以实施其所需的功能。如下面所论述的,因为二进制数218可以是任何编译函数,所以安全服务206获得经解密的二进制数220的经编译的代码,对其进行反编译并创建二进制数218,该二进制数218能够实施经加密的二进制数212的所需功能。
如图2中还示出的,非安全OS 202包括软件应用程序210,其可以包括如图2中所示的经加密的部分212,可以被传递到安全OS 204中的安全服务206以在解密模块214中解密。图2还示出了应用程序210,其连接至DRM安全服务器208、设备服务器222和应用程序服务器224。在一个示例性实施例中,经加密的二进制数212不保留在软件应用程序210中,而是根据需要在下面所描述的验证阶段期间或在验证阶段之后从应用程序服务器224下载,并通过软件应用程序210被传递至安全服务206以用于解密214。
还如图2中所示出的和下面所论述的,一旦由安全服务206所解密和解释/初始化,则二进制数218准备好响应于来自软件应用程序210的其相应函数调用而执行。如图2中所示,应用程序210可以调用二进制数218并接收二进制数结果。在一个示例性实施例中,调用二进制数218时,应用程序210将一个或多个变量传递至二进制数218。采用所提供的变量来执行二进制数218并将任何结果返回至应用程序210。连接至安全OS206的安全存储108,如图2所示,可以包含多个相应应用程序的多个经解密的部分或二进制数220。如下面所论述的,在检验应用程序210之后,经加密的二进制数212可以被解密214并将经解密的二进制数220拷贝至安全存储108以供以后检索。例如,下次打开应用程序210时,经解密的二进制数220(如果可用的话)可以从安全存储108被加载进安全服务216中并由解释器216初始化/进行准备以作为二进制数218运行。
如在下面所详细论述的,发出对二进制数218的调用的结果可能取决于软件应用程序210是否已被适当地验证(validate)或检验(verify)。如上下文所论述的,仅当软件应用程序210已被验证时,解密密钥才能被提供给解密模块214以解密经加密的部分212。如果经加密的二进制数212未被解密,那么调用二进制数218将导致二进制数218返回包括“垃圾”数据的响应,以致应用程序210将进入不可操作或不可用状态,这由所提供的结果确定。换句话说,如果应用程序210未被验证,则响应于二进制数218调用可以返回无法识别的或垃圾的数据,而不是所期望的二进制数218采用所传递的变量加以执行。在一个示例性实施例中,如果应用程序210未被验证,那么调用二进制218将导致死机或其他程序缺陷或故障。在一个示例性实施例中,从在应用程序210中造成不可操作状态的调用中所返回的结果包括下列之一:预定响应、垃圾数据和不返回结果。如果经加密的部分已被适当地解密,那么所期望的二进制数218将是可用的,并且调用二进制数218将导致基于在二进制数调用中所提供的变量的适当的结果,以及应用程序210将保持在可操作状态。
图3示出了利用包括非安全OS202和安全OS204的操作系统环境,执行在示例性的主应用程序执行循环中的多个计算机控制步骤的示例性流程图。在一个示例性实施例中,应用程序210可以包括始终运行的执行循环。这类执行循环可以具有开始和结束。如图3所示,执行循环中的某处可以是一定被调用的执行在安全OS 204中的部分代码(例如,函数(二进制数218))。在一个示例性实施例中,应用程序210的余项将取决于由二进制数218所计算的结果。
如图3所示,在步骤304开始主应用程序执行循环300之前,在步骤302打开应用程序210。如下面所论述的,当在步骤302打开应用程序210时,可以由安全服务应用程序206准备二进制数以用于在安全OS 204中执行。在图3的步骤304中,示例性的主应用程序执行循环300以在非安全OS 202中调用并执行一个或多个函数开始。
在图3的步骤306中,执行循环300在非安全OS 202中执行对位于安全OS 204中的函数Z的函数调用。如图2所示,对函数Z的函数调用是指向二进制数218。如图3所示,在步骤306执行对函数Z的函数调用可以包括将一个或多个变量发送至函数Z(二进制数)218以用于执行。如下面所论述的,在一个示例性实施例中,该一个或多个变量可以包括用于软件应用程序210的应用程序ID,还有用于由二进制数218所处理的一个或多个数据块。
在图3的步骤308中,已接收到具有这些变量的函数调用的二进制数218可以执行二进制数函数218并将结果返回至应用程序210。在图3的步骤310中,接收到二进制数218执行的结果后,主应用程序执行循环300可以使用该二进制数结果并继续该执行循环300。如图3所示,在步骤310中,执行循环可以继续在非安全OS 202中调用并执行一个或多个函数。在一个示例性实施例中,步骤310中的一个或多个函数与步骤304中的一个或多个函数不同。在一个示例性实施例中,步骤310中的一个或多个函数与步骤304中的一个或多个函数相同。在一个示例性实施例中,在步骤310中执行的一个或多个函数利用二进制数执行的结果。在图3的步骤312中,应用程序210确定是否继续运行主应用程序执行循环300。如果执行循环300将要结束,那么执行循环300前进至步骤314并结束。如果执行循环300将要继续,那么执行循环300返回至步骤304。
如下面所论述的,从运行二进制数218所返回的结果可以取决于应用程序210是否已被适当地验证。如本文所论述的,如果应用程序210已被验证,那么经适当解密的二进制数212可以由解释器216解释/初始化,使得当在步骤306发出对二进制数218的函数调用时,二进制数218将是可用的。然而,如果应用程序210未被适当地验证,那么经加密的二进制数212将不会被解密。在一个示例性实施例中,当经加密的二进制数212未被解密时,那么任何对二进制数218的调用将返回包括无法识别或垃圾数据的结果。可以由应用程序210的生产商定制这类垃圾数据以为应用程序210产生所期望的不可操作状态。在一个示例性实施例中,如果应用程序210未被验证,那么调用二进制数218将导致死锁或其他程序假象或故障。在一个示例性实施例中,从在应用程序210中造成不可操作状态的调用所返回的结果包括下列之一:预定响应、垃圾数据和不返回结果。
在一个示例性实施例中,应用程序210在安全OS 204中作为二进制数218由安全服务206所运行的一部分可以是视频游戏的人工智能(AI)的一部分。如所论述的,二进制数218将仅在软件应用程序许可证验证过程成功时执行。因此,如果移除了任何对安全服务206的调用以图规避许可证验证,则视频游戏可以运行,但是没有适当的AI(仅接收所选定的垃圾数据而非来自二进制数218的响应)。没有AI,游戏将可能无法进行,因为AI可能形成游戏玩法的关键组件。
在一个示例性实施例中,应用程序210在安全OS 204中作为二进制数218由安全服务206所运行的一部分可以是视频游戏的碰撞检测代码的一部分,该碰撞检测代码取决于该视频游戏的许可服务器检查。在一个实施例中,如果移除了对安全服务206的调用(用于许可服务器检查),则软件应用程序的未经验证的拷贝可以执行,但是视频游戏中的人物可能在游戏的虚拟世界中穿过墙壁和其他物体行走,这会破坏体验。响应于二进制数调用,将返回预定的垃圾数据,而不是二进制数218执行其碰撞检测代码。
在一个示例性实施例中,应用程序210在安全OS 204中作为二进制数218由安全服务206所运行的一部分可以是文字处理器的“生成可用字体”函数的一部分。因此,如果在这一实现方案中移除了对安全服务206的调用,则应用程序210可能不再生成可用字体的列表。没有字体,应用程序210将不能写或编辑文本,这使得这类未经验证的文字处理程序无效。
因此,如本文所描述的,通过结合安全OS 204的安全执行空间、可执行代码的安全服务206和在线许可服务器检查来提供软件应用程序的拷贝保护,软件生产商可以大大减少对他们的视频游戏和应用程序的盗版。
图4示出了利用在安全OS204中的安全服务应用程序206,管理软件应用程序的拷贝保护的计算机控制方法的示例性流程图。如图4所示,该方法的步骤发生在应用程序210和安全服务206中。在图4的步骤402中,获取应用程序210并将其安装在设备100上。在一个实施例中,如果应用程序210是经购买的应用程序,那么如本文所述的拷贝保护方法可以假定交易通过服务发生,该服务通过许可证检验服务器提供检验当前的软件安装在日后拥有有效的软件应用程序许可证的能力。
在一个实施例中,每个在设备100上使用本文所述的拷贝保护的应用程序210各自存储用于检验许可证或二进制数218的几个数据关键片段。可以在下面图5的步骤524中所述的最终检验步骤期间存储它们。在一个示例性实施例中,安全服务206可以是执行在设备100上的安全OS204内部的自定义代码。在一个示例性实施例中,不安全的软件应用程序可以使用生产商定义的API调用(“DRAM API调用”)来调用安全服务206,生产商定义的API调用还包括用于与DRM在线服务器208通信的API调用。
在一个实施例中,对于每个所支持的应用程序,DRM在线服务器208可以存储应用程序专用数据,其包括:唯一的应用程序识别号码(“appID”)、安全服务206可以用以解密应用程序的二进制数218的软件应用程序的二进制数解密密钥(″appBinaryDecryptionKey″)、以及软件应用程序二进制数的密码签名(“appSignature”)。对于每个设备100,DRM在线服务器208可以存储设备专用数据。这类数据可以由DRM在线服务器208使用以安全地与设备100通信并检验设备100。这类数据可以包括唯一的设备识别号码(“deviceID”)和用于检验阶段的各部分的设备加密密钥。在一个示例性实施例中,可以使用在生产过程中融入芯片的生产商的芯片识别号码。在一个示例性实施例中,可以使用用于无线设备的国际移动设备识别码(“IMEI”)。在进一步的示例性实施例中,可以生成唯一的ID。
如下面所论述的,在一个示例性实施例中,每个设备100的经加密的二进制数212的加密将是唯一的。虽然相同类型的加密可被用于经加密的二进制数212,但是设备100接收以解密该经加密的二进制数212的密钥对于特定的设备100/应用程序210组合可以是唯一的。在一个示例性实施例中,对于每个软件应用程序均具有全局密钥。此外,解密经加密的部分212的全局密钥可以采用对每个设备100/应用程序210组合而言唯一的密钥来加密其自身。
在图4的步骤404中,打开应用程序210。在一个示例性实施例中,启动应用程序210并在初始化期间应用程序210发出包含其appID的“打开app”DRM API调用。在图4的步骤406中,在打开app函数执行期间,安全服务206检查appID是否在安全存储108中。如果所请求的appID不在安全存储108中,则安全服务206将“复检”返回至应用程序210。如果在安全存储108有经存储的appID,则安全服务206之后检查在安全存储108中是否有用于该应用程序210的经解密的二进制数220。如果没有用于应用程序210的二进制数218,则安全服务206将“发送二进制数”返回至应用程序210,否则安全服务206将“OK”返回至应用程序210。
如上所述,“二进制数”是由软件应用程序的开发者在开发过程中使用由安全服务206的开发者所提供的编译器工具创建的经加密的代码包。该工具可以编译代码包并采用应用程序加密密钥(“appKey”)将其加密。然后开发者将二进制数包括进应用程序(如图2所示,所包括的二进制数是经加密的二进制数212)。在一个实施例中,经加密的二进制数212仅可以由安全服务206在安全OS 204内部使用正确的appKey解密214。如图2所示,安全存储108可以保有用于一个或多个应用程序的一个或多个经解密的二进制数220,用于每个应用程序210均有一个经解密的二进制数220。如本文所论述的,在一个实施例中,经加密的二进制数212可以在应用程序210中找到,在另一个实施例中,经加密的二进制数212不被保留在应用程序210中而必须在检验阶段期间或之后根据需要由应用程序210从应用程序服务器224下载,并由应用程序210将其传递至安全服务206。
在图4的步骤408中,如果打开app函数已经返回“复检”,则应用程序210在图5的步骤502中开始检验阶段,否则,处理继续至步骤410。在图4的步骤410中,如果打开app函数已经返回“发送二进制数”,那么应用程序210发出包含其appID和经加密的二进制数212的“输入二进制数”DRM API调用。在一个实施例中,可以从设备存储110或由软件应用程序开发者决定的另一个位置来加载经加密的二进制数212。在一个示例性实施例中,可以从应用程序服务器224下载经加密的二进制212并将其传递至安全服务206。否则,方法步骤继续至步骤416。
在图4的步骤414中,在输入二进制数函数中,安全服务206采用appBinaryDecryptionKey(在检验阶段期间从DRM服务器208所下载的)来解密经加密的二进制数212并采用appSignature(也是在检验阶段期间从DRM服务器208所下载的)来检验经解密的二进制数220的签名。如果二进制数218得到检验,则经解密的二进制数220可以存储在安全存储108中,否则,针对该appID由如应用程序开发者所确定的垃圾数据可以被存储在安全存储108中。
在图4的步骤416中,应用程序210采用其appID调用“打开二进制数”DRM API以将经解密的二进制数220加载进安全RAM 106。在图4的步骤418中,安全服务206针对相应的appID从安全存储108加载经解密的二进制数220并与解释器218一起准备经解密的二进制数220以在安全OS 206内部执行。在一个示例性实施例中,根据需要来初始化经解密的二进制数220。如图2所示,一旦由解释器216进行了初始化和/或解释,经解密的二进制数220就成为二进制数218。
在图4的步骤420中,主应用程序执行循环的执行可以开始。图3中还示出了主应用程序执行循环300的执行的示例性实施例。在执行循环中的预定点,软件应用程序将前进到步骤422。在图4的步骤422中,软件应用程序将发出包含appID和数据块的“使用二进制数”DRM API调用,该数据块将会被传递至安全服务206内部的二进制数218。在一个示例性实施例中,所传递的数据可以是开发者选择的任何东西,如可以是由二进制数218所执行的函数。
在图4的步骤424中,响应于该使用二进制数调用,安全服务206可以采用所传递的数据块执行appID的二进制数218。在一个示例性实施例中,二进制数218可以执行,其处理输入数据并将结果存储进输出缓冲区。当二进制数218已经完成执行时,安全服务206可以将输出缓冲区拷贝回应用程序210。在图4的步骤426中,应用程序210从安全服务206接收存储在输出缓冲区中的数据并按照开发者的决定来使用该数据。
在一个示例性实施例中,如果应用程序210未被检验,以致经加密的二进制数212未被解密214,那么调用二进制数218所产生的结果可能是垃圾数据。如果应用程序210在步骤414中未被检验,那么不是将经解密的二进制数220,而是将垃圾代码或数据存储在安全存储108中,该垃圾代码或数据在应用程序210中导致所期望的、可预见的不可操作状态。在一个示例性实施例中,如果应用程序210未被检验,则调用二进制数218的结果是不正确的软件行为(如将垃圾数据提供给继续中的执行循环),但是不会导致应用程序210崩溃或其他运行故障。在一个实施例中,当应用程序210未被检验时,调用二进制数218的结果是从应用程序210退出。
在图4的步骤428中,应用程序210检查以查看基于用户决定或由开发者所选择的其他结束条件,是否应该继续回到步骤420或者退出。如图4所示,如果应用程序210选择继续,那么应用程序210回到步骤420并继续循环的执行。否则,该过程将继续至步骤430并终止应用程序210。
图5示出了用于为拷贝保护而检验/验证应用程序210的计算机控制方法的示例性流程图。以下过程本质上是示例性的,而非意味着是限制性的。也可以利用不同的检验和验证要求及过程来实现用于检验和验证应用程序210的其他方法。如图5所示,图5所示的检验阶段包括在DRM安全服务器208、应用程序210、在安全OS204中的安全服务206以及多个其他服务器中所完成的步骤,所述其他服务器诸如许可证检验服务器、在线交易服务器(例如应用程序服务器224和第三方服务器)和设备服务器222。在图5的步骤502中,检验阶段开始于应用程序210发出对安全服务206的“生成签名”DRM API调用。
在图5的步骤504中,由安全服务206生成签名,所述签名唯一地识别应用程序210和设备100。在一个示例性实施例中,为了创建签名(″devAppSignature″),安全服务206结合appID和deviceID并且随后采用对设备100唯一的以及仅被设备100和DRM服务器208所知的加密密钥来标记结果。之后将devAppSignature返回至应用程序210。在图5的步骤506中,应用程序210通过在“请求交易令牌”DRM服务器调用中发送deviceID,appID和devAppSignature从DRM服务器208请求交易令牌(“令牌”)。
在图5的步骤508中,DRM服务器208检验devAppSignature是否对deviceID和appID均有效。在一个示例性实施例中,DRM服务器208创建对设备100唯一的用于这一检验会话的令牌并以数字方式标记令牌。如图5所示,令牌和签名之后被送回至应用程序210。在图5的步骤510中,应用程序210接收令牌和签名并在“请求随机数”DRM API调用中将他们传递至安全服务206。
在图5的步骤512中,在安全服务206中生成随机数。在请求随机数函数中,安全服务206可以检验来自DRM服务器208的令牌和签名。安全服务206之后可以创建经加密的、经标记的、随机的“供一次性使用的数字”(“随机数”),安全服务206可以将其返回至应用程序210以与许可证检验或购买交易服务器和DRM服务器208一起使用。在一个示例性实施例中,如果令牌未被检验,那么可以创建“垃圾”随机数。
在图5的步骤514中,应用程序210可以建立至许可证检验服务器(如果检查先前购买的许可证)或交易服务器(如果当时购买许可证或“解锁”部分应用程序)的连接。在一个示例性实施例中,被发送至服务器的数据可以基于目标服务器(检验或交易)而不同。在一个示例性实施例中,如上所述,DRM服务器208要求数据包括随机数,并且DRM服务器208可以返回采用应用程序私钥(“appPrivateKey”)(由开发者保有并被提供给DRM服务器208的操作者)所创建的签名,其与存储在DRM服务器208中的应用程序公钥(“appPublicKey”)相匹配。应用程序210之后可以将所要求的数据发送至用于许可证检验的期望服务器。
在图5的步骤516中,可以检验软件应用程序的许可证。在一个示例性实施例中,检验或交易服务器将使用由应用程序210提供的数据。在一个示例性实施例中,在线许可证检验服务器可以确认隶属的安装与软件应用程序的有效许可证相关联。在一个示例性实施例中,在线交易服务器可以完成由应用程序210所请求的购买。在一个示例性实施例中,服务器(检验或交易)采用appPrivateKey来标记响应数据并将签名(“交易签名”)和响应数据返回至应用程序210。在一个示例性实施例中,如果在安装时应用程序210并未提供经加密的二进制数212或者如果在以后丢失,则服务器,诸如检验或交易服务器,可以被用于将经加密的二进制数212下载至应用程序210。
在图5的步骤518中,应用程序210从步骤516接收响应数据和/或交易签名并请求安全服务206将它们加密。在图5的步骤520中,在加密服务器响应函数中,安全服务206结合服务器响应数据和交易签名并采用对设备100唯一且为DRM服务器208所知的加密密钥来将它们加密。这一经加密的响应和签名被返回至应用程序210。
在图5的步骤522中,应用程序210接收现在的经加密的数据并将其发送至DRM服务器用于交易检验。在图5的步骤524中,DRM服务器208可以确认前述每个步骤均被正确地完成。在一个示例性实施例中,DRM服务器208使用设备的唯一加密密钥来解密经加密的数据。DRM服务器208之后提取数据:交易签名、令牌和随机数。提取数据之后,DRM服务器208现在可以检验每个部分。因此DRM服务器206检验来自在线许可证检验或交易服务器的响应。在一个示例性实施例中,DRM服务器还以数据消息的形式加密appID,appBinaryDecryptionKey和appSignature。DRM服务器208之后可以标记该数据消息并将经加密的数据消息和签名送回至应用程序210。
在图5的步骤526中,软件应用程序210将经加密的数据消息和签名传递至安全服务206。在一个示例性实施例中,通过使用“输入消息和签名”DRM API调用来将经加密的数据消息和签名传递至安全服务206。在图5的步骤528中,响应于输入消息和签名调用,安全服务206解密经加密的数据消息并检验签名以确保其仅接收来自DRM服务器208的数据。安全服务206之后提取appBinaryDecryptionKey和AppSignature并将它们紧邻appID存储在安全存储108中,准备在上述执行阶段期间使用。在图5的步骤530中,随着检验阶段完成,进程继续进行至步骤532并返回至初始化阶段。
在一个示例性实施例中,每个设备100均带有主密钥。第一次设备100上线并由DRM服务器识别出来时,会生成密钥环并采用设备的主密钥将其加密。这一经加密的密钥环可以被发送至设备100,并由DRM服务器208存储。这允许DRM服务器208和设备100安全地相互通信。
在一个示例性实施例中,每个设备100均采用设备ID进行识别,使得可以使用特定的设备ID来关联具有主密钥的设备。一旦密钥环由DRM安全服务器208和设备100所初始化,则DRM安全服务器208和设备100就能够安全地相互通信。
在一个示例性实施例中,在经加密的部分已经被解密并被存储在安全存储108中之后,设备100不需要再次上线。这样的安排将允许应用程序210在完成检验阶段和第一次运行之后可以避免再次上线。然而,如果解密部分丢失或损坏,可以从应用程序210请求新的经加密的部分212并对其再次解密并存储在安全存储108中。在另一个实施例中,经加密的部分没有与应用程序210一起被存储在非安全存储110中,而是必须从应用程序服务器224下载。在另一个实施例中,经加密的二进制数212可以被存储在DRM服务器208中以在必要时用于检索。
在一个示例性实施例中,如果应用程序210不具有经加密的二进制数212,那么可以从DRM服务器208或从应用程序服务器224请求经加密的二进制数212。在一个示例性实施例中,如果已经完成检验阶段,则安全服务206可以仅具有经解密的二进制数220,其被存储在安全存储108中。在一个示例性实施例中,应用程序检验的一部分可以是传输已被加密的二进制数(例如已加密的二进制数212),使得只有也在此时接收的组合设备/应用程序密钥能够将其解密。
在一个示例性实施例中,在应用程序210的安装期间由应用程序210将已加密的二进制数212放进非安全化存储110(或某个其他的本地位置)。经加密的二进制数212可能仅在应用程序210已经完成了检验阶段之后才得以解密,其中将用于特定的应用程序210/设备100组合的唯一密钥提供给安全服务206以解密该经加密的二进制数212。
无论被本地存储还是仅在安全化服务器(例如DRM服务器208或应用程序服务器224)中被找到,经加密的二进制数212必须被解密并被准备执行,这是因为应用程序210的主执行循环将周期性地调用二进制数。未能检验软件应用程序的许可证并因此没有完成检验阶段将导致垃圾代码或数据,其代替经解密的二进制数220被存储。因此,调用二进制数将导致垃圾数据被返回至应用程序210,这可以导致应用程序210进入由垃圾数据所确定的不可操作状态。因此,不能完成许可证检验阶段可以导致应用程序210不能恰当运行或无法一起使用。
尽管本文已公开了某些优选实施例和方法,但是从前述公开,对本领域的技术人员显而易见的是,在不脱离本发明的精神和范围的情况下,可以做出这样的实施例和方法的变化和修改。其目的是本发明将仅受限于由所附权利要求书以及适用法律的规则和原则所要求的范围。

Claims (20)

1.一种拷贝保护方法,包括:
在第一操作系统中执行第一软件应用程序的软件循环;
在所述软件循环中执行对代码部分的第一调用;
响应于所述第一调用,在第二操作系统中执行所述第一软件应用程序的经解密的代码部分,其中响应于所述第一软件应用程序的成功验证来解密所述代码部分。
2.根据权利要求1所述的拷贝保护方法,其中所述第二操作系统是安全操作系统。
3.根据权利要求1所述的拷贝保护方法,其中在所述第二操作系统中由第二软件应用程序执行所述代码部分并实施所述验证。
4.根据权利要求3所述的拷贝保护方法,进一步包括:
使用密钥,解密所述第一软件应用程序的经加密的代码部分以产生所述经解密的代码部分。
5.根据权利要求4所述的拷贝保护方法,其中所述解密包括:
将所述第一软件应用程序的经加密的代码部分从所述第一操作系统拷贝到所述第二操作系统;
在完成所述第一软件应用程序的所述验证之后,下载用于解密所述代码部分的解密密钥,其中所述解密密钥专用于特定的设备和第一软件应用程序组合;
在具有所述第二软件应用程序的所述第二操作系统中,采用所述解密密钥来解密所述第一软件应用程序的所述代码部分;以及
将所解密的第一函数存储在安全化存储区中。
6.根据权利要求1所述的拷贝保护方法,其中所述代码部分包括函数、例程、子例程和过程之一。
7.一种计算机系统,包括:
处理器,
存储器,其用于存储指令,当由所述处理器执行时实施拷贝保护方法,所述方法包括:
在第一操作系统中执行第一软件应用程序的软件循环;
在所述软件循环中执行对代码部分的第一调用;
响应于所述第一调用,在第二操作系统中执行所述第一软件应用程序的经解密的代码部分,其中响应于所述第一软件应用程序的成功验证来解密所述代码部分。
8.根据权利要求7所述的计算机系统,其中所述第二操作系统是安全操作系统。
9.根据权利要求7所述的计算机系统,其中在所述第二操作系统中由第二软件应用程序执行所述代码部分并实施所述验证。
10.根据权利要求7所述的计算机系统,进一步包括:
打开所述第一软件应用程序并对数据部分的经解密的拷贝存在于安全化存储区中进行检验,以及如果所述数据部分的所述经解密的拷贝不存在于所述安全化存储区中,则解密所述第一软件应用程序的经加密的数据部分。
11.根据权利要求10所述的计算机系统,其中所述解密包括:
将所述第一软件应用程序的经加密的代码部分从所述第一操作系统拷贝到所述第二操作系统;
在完成所述第一软件应用程序的所述验证之后,下载用于解密所述代码部分的解密密钥,其中所述解密密钥专用于特定的设备和第一软件应用程序组合;
在具有所述第二软件应用程序的所述第二操作系统中,采用所述解密密钥来解密所述第一软件应用程序的所述代码部分;以及
将所解密的第一函数存储在安全化存储区中。
12.根据权利要求7所述的计算机系统,其中所述数据部分包括函数、例程、子例程和过程之一。
13.一种计算机系统,包括:
处理器;
存储器,其包括非安全化部分和安全化部分,其中所述非安全化部分包括运行第一软件应用程序的第一操作系统,其中所述第一软件应用程序包括软件循环,并且其中所述安全化部分包括运行第二软件应用程序的第二操作系统;
安全化存储区,其存储代码部分;以及存储器,其用于存储指令,当由所述处理器执行时实施拷贝保护方法,所述方法包括:
执行所述第一软件应用程序的所述软件循环;
在所述软件循环中执行对所述代码部分的第一调用;
响应于所述第一调用,在所述第二操作系统中执行所述第一软件应用程序的所述代码部分,其中响应于所述第一调用所返回的结果产生下列情况之一:当所述第一软件应用程序未被成功验证时在所述第一软件应用程序中产生不可用状态,以及当所述第一软件应用程序已被成功验证时在所述第一软件应用程序中产生可用状态。
14.根据权利要求13所述的计算机系统,其中所述第二操作系统是安全操作系统。
15.根据权利要求13所述的计算机系统,其中在所述第二操作系统中由第二软件应用程序实施所述第一函数和所述验证。
16.根据权利要求13所述的计算机系统,进一步包括:
如果所述第一函数的所述经解密的拷贝不存在于所述安全化存储区中,则使用密钥解密所述第一软件应用程序的经加密的第一函数。
17.根据权利要求16所述的计算机系统,其中所述解密包括:
将所述第一软件应用程序的经解密的代码部分从所述第一操作系统拷贝到所述第二操作系统;
在完成所述第一软件应用程序的所述验证之后,下载用于解密所述代码部分的解密密钥,其中所述解密密钥专用于特定的设备和第一软件应用程序组合;
在具有所述第二软件应用程序的所述第二操作系统中,采用所述解密密钥来解密所述第一软件应用程序的所述代码部分;以及
将所解密的第一函数存储在安全化存储区中。
18.根据权利要求13所述的计算机系统,其中所述数据部分包括函数、例程、子例程和过程之一。
19.根据权利要求13所述的计算机系统,其中从在所述第一软件应用程序中造成所述不可用状态的所述第一调用所返回的所述结果包括下列之一:预定响应、垃圾数据和不返回结果。
20.根据权利要求19所述的计算机系统,其中当所述第一软件应用程序未被成功验证时所述代码部分包括垃圾代码和垃圾数据之一。
CN201210333063XA 2011-09-09 2012-09-10 经由在线服务器的内容保护和安全操作系统中的代码执行 Pending CN103198239A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161533060P 2011-09-09 2011-09-09
US61/533060 2011-09-09
US13/458891 2012-04-27
US13/458,891 US9489541B2 (en) 2011-09-09 2012-04-27 Content protection via online servers and code execution in a secure operating system

Publications (1)

Publication Number Publication Date
CN103198239A true CN103198239A (zh) 2013-07-10

Family

ID=47830926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210333063XA Pending CN103198239A (zh) 2011-09-09 2012-09-10 经由在线服务器的内容保护和安全操作系统中的代码执行

Country Status (4)

Country Link
US (2) US9489541B2 (zh)
CN (1) CN103198239A (zh)
DE (1) DE102012215770A1 (zh)
TW (1) TWI598764B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468659A (zh) * 2014-09-28 2016-04-06 阿里巴巴集团控股有限公司 一种数据同步方法及装置
CN106415565A (zh) * 2014-03-28 2017-02-15 爱迪德技术有限公司 保护软件项目
CN112424777A (zh) * 2018-08-17 2021-02-26 欧姆龙株式会社 用于操作工业个人计算机装置的方法及工业个人计算机装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140090019A1 (en) * 2011-05-19 2014-03-27 Nippon Hoso Kyokai Integrated broadcasting communications receiver, resource access controlling program, and integrated broadcasting communications system
US20140230052A1 (en) * 2013-02-11 2014-08-14 Motorola Mobility Llc System and method for testing a secured manufactured device
CN105378703A (zh) * 2013-05-20 2016-03-02 茨特里克斯系统公司 用于使用统一规则集合来验证输入的多个方法的方法和系统
US9680872B1 (en) * 2014-03-25 2017-06-13 Amazon Technologies, Inc. Trusted-code generated requests
US10419401B2 (en) * 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US11520913B2 (en) * 2018-05-11 2022-12-06 International Business Machines Corporation Secure execution support for A.I. systems (and other heterogeneous systems)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1595364A (zh) * 2003-09-12 2005-03-16 联华电子股份有限公司 应用硬件检测非法软件加载的系统、方法及其使用的芯片
US20050160210A1 (en) * 2002-11-18 2005-07-21 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
US20090210709A1 (en) * 2008-02-18 2009-08-20 Kabushiki Kaisha Toshiba Content transmitting and receiving system
US20100153667A1 (en) * 2008-12-15 2010-06-17 Sony Ericsson Mobile Communications Ab Method, computer program and electronic device
WO2011074168A1 (ja) * 2009-12-14 2011-06-23 パナソニック株式会社 情報処理装置

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
US6289452B1 (en) * 1997-11-07 2001-09-11 Cybersource Corporation Method and system for delivering digital products electronically
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
AU7182701A (en) * 2000-07-06 2002-01-21 David Paul Felsher Information record infrastructure, system and method
EP1463569A4 (en) * 2001-11-26 2010-06-02 Igt Reno Nev DEVICE AND METHOD FOR ACTIVE INTERCONNECTION VALIDATION
US7680743B2 (en) * 2002-05-15 2010-03-16 Microsoft Corporation Software application protection by way of a digital rights management (DRM) system
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
US7930537B2 (en) * 2002-08-13 2011-04-19 Nokia Corporation Architecture for encrypted application installation
US20040088697A1 (en) * 2002-10-31 2004-05-06 Schwartz Jeffrey D. Software loading system and method
US7370210B2 (en) * 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
US7539853B2 (en) * 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
US7940932B2 (en) * 2004-04-08 2011-05-10 Texas Instruments Incorporated Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
JP4827467B2 (ja) * 2004-09-10 2011-11-30 キヤノン株式会社 ライセンス転送システム及びライセンス情報発行サーバ
US20070266444A1 (en) * 2004-12-03 2007-11-15 Moshe Segal Method and System for Securing Data Stored in a Storage Device
US8713667B2 (en) * 2005-07-08 2014-04-29 Hewlett-Packard Development Company, L.P. Policy based cryptographic application programming interface in secure memory
GB0514492D0 (en) * 2005-07-14 2005-08-17 Ntnu Technology Transfer As Secure media streaming
US8840462B2 (en) * 2005-09-07 2014-09-23 Bally Gaming, Inc. Tournament bonus awards and related methods
US20070167210A1 (en) * 2005-09-07 2007-07-19 Kelly Bryan M Affiliated Gaming Method
US20080016005A1 (en) * 2006-04-24 2008-01-17 Encryptakey, Inc. Systems and methods for performing secure online transactions
US8272048B2 (en) * 2006-08-04 2012-09-18 Apple Inc. Restriction of program process capabilities
DE102006049646B3 (de) * 2006-10-20 2008-06-19 Siemens Ag Verfahren und Sendevorrichtung zum gesicherten Erstellen und Versenden einer elektronischen Nachricht sowie Verfahren und Empfangsvorrichtung zum gesicherten Empfangen und Verarbeiten einer elektronischen Nachricht
US20080262968A1 (en) * 2007-03-26 2008-10-23 Infosys Technologies Ltd. Software licensing control via mobile devices
US20090006261A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Portable device for carrying licenses
JP4936538B2 (ja) * 2007-07-19 2012-05-23 キヤノン株式会社 情報処理装置、使用権譲渡方法、使用権取得方法、及びコンピュータプログラム
GB2453518A (en) * 2007-08-31 2009-04-15 Vodafone Plc Telecommunications device security
US20090172331A1 (en) * 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
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
US20100269179A1 (en) * 2009-04-16 2010-10-21 Comcast Cable Communications, Llc Security Client Translation System and Method
US9656092B2 (en) * 2009-05-12 2017-05-23 Chronicmobile, Inc. Methods and systems for managing, controlling and monitoring medical devices via one or more software applications functioning in a secure environment
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
US8418259B2 (en) * 2010-01-05 2013-04-09 Microsoft Corporation TPM-based license activation and validation
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
US8468600B1 (en) * 2011-03-04 2013-06-18 Adobe Systems Incorporated Handling instruction received from a sandboxed thread of execution
US8528083B2 (en) * 2011-03-10 2013-09-03 Adobe Systems Incorporated Using a call gate to prevent secure sandbox leakage
US8914876B2 (en) * 2011-05-05 2014-12-16 Ebay Inc. System and method for transaction security enhancement
US10496824B2 (en) * 2011-06-24 2019-12-03 Microsoft Licensing Technology, LLC Trusted language runtime on a mobile platform
US8949929B2 (en) * 2011-08-10 2015-02-03 Qualcomm Incorporated Method and apparatus for providing a secure virtual environment on a mobile device
JP5583857B2 (ja) * 2011-11-04 2014-09-03 エスケー プラネット カンパニー、リミテッド セキュアドメインとノーマルドメインとの間の保安連動方法及び保安アプリケーションダウンロードの管理方法、管理サーバー、端末機、及びこれを適用した管理システム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050160210A1 (en) * 2002-11-18 2005-07-21 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
CN1595364A (zh) * 2003-09-12 2005-03-16 联华电子股份有限公司 应用硬件检测非法软件加载的系统、方法及其使用的芯片
US20090210709A1 (en) * 2008-02-18 2009-08-20 Kabushiki Kaisha Toshiba Content transmitting and receiving system
US20100153667A1 (en) * 2008-12-15 2010-06-17 Sony Ericsson Mobile Communications Ab Method, computer program and electronic device
WO2011074168A1 (ja) * 2009-12-14 2011-06-23 パナソニック株式会社 情報処理装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106415565A (zh) * 2014-03-28 2017-02-15 爱迪德技术有限公司 保护软件项目
CN106415565B (zh) * 2014-03-28 2019-11-05 爱迪德技术有限公司 保护软件项目
US11222096B2 (en) 2014-03-28 2022-01-11 Irdeto B.V. Protecting an item of software
CN105468659A (zh) * 2014-09-28 2016-04-06 阿里巴巴集团控股有限公司 一种数据同步方法及装置
CN105468659B (zh) * 2014-09-28 2019-01-04 阿里巴巴集团控股有限公司 一种数据同步方法及装置
US10367789B2 (en) 2014-09-28 2019-07-30 Alibaba Group Holding Limited Data synchronization method and apparatus
CN112424777A (zh) * 2018-08-17 2021-02-26 欧姆龙株式会社 用于操作工业个人计算机装置的方法及工业个人计算机装置
CN112424777B (zh) * 2018-08-17 2023-09-08 欧姆龙株式会社 工业个人计算机装置及其操作方法

Also Published As

Publication number Publication date
DE102012215770A1 (de) 2013-03-14
TWI598764B (zh) 2017-09-11
US9489541B2 (en) 2016-11-08
US11163859B2 (en) 2021-11-02
US20130067240A1 (en) 2013-03-14
TW201331780A (zh) 2013-08-01
US20170235930A1 (en) 2017-08-17

Similar Documents

Publication Publication Date Title
CN103198239A (zh) 经由在线服务器的内容保护和安全操作系统中的代码执行
Zhao et al. Providing root of trust for ARM TrustZone using on-chip SRAM
US20170116410A1 (en) Software protection
EP2183695B1 (en) Device with a secure virtual machine
US11281769B2 (en) Software integrity verification
CN1581118B (zh) 安全设备、信息处理终端、集成电路、应用装置及方法
US10503931B2 (en) Method and apparatus for dynamic executable verification
US20160203087A1 (en) Method for providing security for common intermediate language-based program
CN111143869B (zh) 应用程序包处理方法、装置、电子设备及存储介质
US20090183263A1 (en) Simultaneous tamper-proofing and anti-piracy protection of software
CN109313690A (zh) 自包含的加密引导策略验证
KR20130114593A (ko) 전자 라이센스 관리
CN103136468A (zh) 协助用于硬件保护的应用程序的系统服务请求交互
US9177121B2 (en) Code protection using online authentication and encrypted code execution
US20170024585A1 (en) Secured electronics device
CN112514321A (zh) 共享秘密建立
JP2023512428A (ja) ハードウェアエンクレーブを使用して商用オフザシェルフプログラムバイナリを盗用から保護すること
Haupert et al. Honey, i shrunk your app security: The state of android app hardening
Kohnhäuser et al. PUF-based software protection for low-end embedded devices
CN104246784A (zh) 用于保护和安全地传输媒体内容的方法、设备和系统
CN105308610A (zh) 用于设备上的平台和用户应用安全性的方法和系统
Averbuch et al. Truly-protect: An efficient VM-based software protection
US20190156025A1 (en) Software protection through code and control flow data hiding and obfuscation
KR20160065261A (ko) 앱 위변조 방지시스템 및 그 방법
Jeong et al. An anti-piracy mechanism based on class separation and dynamic loading for android applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20130710