CN104040552B - 安全地分发软件的方法、处理器、计算设备及安全地存储和执行应用的系统 - Google Patents

安全地分发软件的方法、处理器、计算设备及安全地存储和执行应用的系统 Download PDF

Info

Publication number
CN104040552B
CN104040552B CN201180076096.4A CN201180076096A CN104040552B CN 104040552 B CN104040552 B CN 104040552B CN 201180076096 A CN201180076096 A CN 201180076096A CN 104040552 B CN104040552 B CN 104040552B
Authority
CN
China
Prior art keywords
application
code
cutout
cutouts
amended
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201180076096.4A
Other languages
English (en)
Other versions
CN104040552A (zh
Inventor
M·茂尔
S·格伦
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN104040552A publication Critical patent/CN104040552A/zh
Application granted granted Critical
Publication of CN104040552B publication Critical patent/CN104040552B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/50Service provisioning or reconfiguring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/60Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
    • 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/2107File encryption

Landscapes

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

Abstract

本披露涉及可以用于防止软件盗版和防止应用的未授权的修改的软件修改。在某些实施例中,在分发至用户之前,软件供应商可以对软件进行修改。软件供应商可以从应用提取多个剪切块以创建修改后的应用。用户设备可以下载该修改后的应用和这些剪切块。用户设备可以使用该修改后的应用和通过在将底层代码隐藏在这些剪切块内的安全执行环境中执行这些剪切块来运行该应用。

Description

安全地分发软件的方法、处理器、计算设备及安全地存储和执 行应用的系统
技术领域
本披露总体上涉及计算机领域。具体地,本披露涉及计算机软件的修改,从而对部分地来自用户设备上的安全存储器的用于执行的代码进行重新打包。
背景技术
应用程序商店正快速地成为许多平台的应用的重要分发器,如智能电话、平板计算机、和常规计算机(例如,笔记本计算机、台式计算机等)。应用商店经常是一些基于网络的商店,这些商店使用户能够电子地下载软件而不接收物理产品。应用的这种分发机制的成功存在若干原因。一个原因在于,开发者可以使用应用程序商店从而能够实现其应用的广泛分发而无需开发者的大的投资。
应用商店正快速地将自己本身建立成为主要的软件分发渠道。当前,对于流行的智能电话和平板计算机操作系统(OS)而言,数十万智能电话应用可供用于下载。此外,用于运行操作系统(OS)或苹果(Apple)OS的常规计算机的数千常规计算机应用也是可供使用的。预期将来应用商店的普及度增加并且成为软件的主导分发器。
虽然迄今为止,当前应用商店发展令人印象深刻,但应用商店正应对或者威胁到禁止其未来发展或者彻底使其陷入危险的许多挑战。通常,这些应用商店的挑战包括:1)软件盗版,2)给应用商店运营商造成运营、法律和安全问题的仿冒应用,3)无力吸引知名的独立软件供应商(ISV),以及4)难于通过此分发机制提供“购买前试用(try before youbuy)”或应用的其他共享软件版本。
自从主流计算已经变得对用户广泛可供使用以来,软件盗版一直是软件开发者和供应商的难题。具体地,在易于访问互联网和易于通过互联网拷贝和发送数据情况下,尽管对那些被起诉盗版软件的人实行重罚,但软件盗版继续泛滥。
发明内容
本披露涉及可以用于防止软件盗版和防止应用的未授权的修改的软件修改。在某些实施例中,在分发至用户之前,软件供应商可以对软件进行修改。可以销售、出租、或由下载软件的用户“试用”修改后的软件。
可以主办应用商店的软件供应商可以最初从开发者或软件公司接收应用。然后,软件供应商可以移除软件的多个部分,如代码段、函数、或软件的其他部分,在此被称为“剪切块(cutout)”。软件供应商可以对剪切块进行加密并将其存储为与不包括这些剪切块(但包括其中已经剪切出代码的孔)的应用的修改后的版本分开的部分,在此称为“修改后的应用”。然后,软件供应商可以至少将修改后的应用和加密后的剪切块、以及可能地其他数据(如许可证、用户手册诸如此类)传输至用户设备。
根据某些实施例,用户设备可以在安全存储器位置(在此被称为“安全存储器”)对剪切块进行存储和解密。安全存储器可以是外部软件(如用户设备上运行的操作系统或其他本机软件)不可访问的存储器。安全存储器可以包括能够使一个或多个处理器或处理器核安全执行安全存储器内的内容的安全执行环境。安全存储器可以被限制为通过安全执行环境来访问。因此,没有向用户设备的用户、用户设备上运行的软件、或向其他人(例如,黑客、供应商等)泄露或公开剪切块中所包含的代码。安全存储器可以存储工作状态(即,未加密的)下的剪切块。此安全存储器和安全执行环境与修改后的应用融洽地合作来执行原始应用。
如针对未修改的应用当前执行的,用户设备上的操作系统可以加载和执行修改后的应用。当修改后的应用的请求部分包括这些剪切块之一时,重定向代码可以将处理定向至安全执行环境以执行相应的剪切块,并且然后将结果数据返回至修改后的应用,这可以使用结果数据而不需剪切块中的代码的实际处理来重新开始运行。
在某些实施例中,用户设备可以包括用于包括剪切块的不同应用的单个“框架”安全执行环境。安全执行环境可以将应用的剪切块以及任何适当的元数据(例如,输入、变量等)一起加载。
例如,一个应用可以具有两个剪切块。加载器堆栈可以将这些剪切块中的至少一个剪切块的加密后的代码加载到安全执行环境内,并且包括与这个(些)剪切块相关联的任何元数据。进入安全执行环境内,剪切块被解密并且可以由修改后的应用调用以执行该应用的被从该应用移除并存储在安全存储器内以便通过安全执行环境进行处理的这些部分的操作(例如,函数、计算等)。
在各实施例中,每个应用可以使用安全存储器和安全执行环境的框架的不同拷贝,因为可以将安全执行环境映射到其对应的应用的地址空间上。
可以用多种方式实施在此描述的技术、设备和系统。以下参照下面的附图提供了示例实施方式。
附图说明
参照附图描述详细说明。在图中,参考号的最左边的数字(或多个数字)标识了该参考号首次出现的图。不同图中的相同的参考号指示相似或完全相同的项目。
图1为用于安全地从应用商店向用户设备提供修改后的软件以便执行该软件的说明性计算环境的示意图。
图2为说明性应用商店服务器的框图。
图3为说明性用户设备的框图。
图4为用于对软件进行修改和安全地向用于执行该软件的用户设备提供修改后的软件的说明性过程的流程图。
图5为示意图,示出了从应用商店服务器到用户设备的安全堆栈密钥的传输。
图6为示意图,示出了应用到应用商店服务器的传输,然后其对该应用进行修改以创建剪切块。
图7为示意图,示出了修改后的应用和剪切块到用户设备的传输。
图8为示意图,示出了用户设备对修改后的应用的执行。
图9为用户设备执行修改后的应用的说明性过程的流程图。
图10为另一个说明性用户设备的框图。
具体实施方式
图1为用于安全地从应用商店向用户设备提供修改后的软件的说明性计算环境100的示意图。该环境包括开发者102(如独立软件供应商(ISV))、应用商店104、以及用户106。在某些实例中,开发者102和应用商店104可以是同一实体。该开发者可以创建和开发可以由开发者服务器110存储和/或访问的应用108。应用商店(AS)104可以使用AS服务器112接收应用。AS服务器112可以对应用108进行修改以创建如上所讨论的剪切块,并且存储加密后的剪切块114和不包括这些剪切块的修改后的应用116。AS服务器112可以使用户106能够通过加密后的剪切块114和修改后的应用116将软件下载到用户设备118。用户设备118可以将加密后的剪切块114存储在安全存储器内,并在解密之后在安全执行环境中执行这些剪切块。开发者服务器110、AS服务器112、以及用户设备118可以通过一个或多个网络120交换数据。
用户设备118可以包括个人计算机、平板计算机、移动电话(包括智能电话)、个人数字助理(PDA)、电视机、机顶盒、游戏控制器、或另一个电子的、便携式或手持式设备。这个(些)网络120可以包括能够实现在环境100中所述的不同计算设备之间的通信的有线和/或无线网络。在某些实施例中,这个(些)网络120可以包括局域网(LAN)、广域网(WAN)、移动电话网(MTN)、以及其他类型的网络,可能地彼此结合使用,以促进不同计算设备(即,这个(些)开发者服务器110、AS服务器112、和/或用户设备118)之间的通信。分别参照图2和图3更加详细地描述了AS服务器112和用户设备118。
图2示出了AS服务器112的说明性计算架构200。该架构可以包括(多个)处理器202和存储器204。存储器204可以存储各种模块、应用、程序、或其他数据。存储器204可以包括如下指令:当由这个(些)处理器202执行时,致使这些处理器执行如针对AS服务器112的在此所述的操作。在某些实施例中,存储器204可以存储应用转换器206、客户端注册管理器208、以及下载管理器210。进而讨论每个模块。
应用转换器206可以是软件引擎,该软件引擎将开发者上传的应用作为输入、并且提取该应用的多个片段作为剪切块。可以将这些剪切块选择为代码的重要部分,从而当从应用中被提取时,使应用不可运行。进一步地,当被提取时,这些剪切块部分防止另一个人重构完整的应用,由此阻挠盗版企图。应用上传之后,应用转换器可以进行应用二进制的分析并且自动识别针对应用的正确执行的最相关的那些片段。在某些实例中,开发者可以指示有待用作剪切块的片段。然后,应用转换器206可以用重定向代码替换所提取的片段,这些片段是对外部位置的调用并且可以基于表格。剪切块可以与分离的文件中的某些元数据(例如,返回值、参数等)聚合。可以对此文件进行加密。
客户端注册管理器208可以配置用于正在运行客户端注册流程的每个新客户端的唯一客户端密钥。此过程可以归界到安全存储器和用户设备118所使用的安全执行环境技术。在某些实施例中,如以下参照图3所讨论的,交付受保护的软件分发技术客户端软件堆栈的同一实体提供客户端注册管理器208。
下载管理器210可以创建许可证并且对应用的剪切块进行加密。例如,对于所有客户端而言,如果二进制在每平台的基础上将是不同的而不是每个应用单个加密密钥,则下载管理器2110可以对剪切块进行加密。下载管理器210可以用特定客户端密钥(其由客户端注册管理器208在登记期间配置)对许可证进行加密并且可以用应用和加密后的剪切块传输该特定客户端密钥。
图3示出了用户设备118的说明性计算架构300。该架构可以包括公开存储器302、(多个)处理器304和安全存储器306。公开存储器302可以存储各种模块、应用、程序、或其他数据。公开存储器302可以包括如下指令:当由这个(些)处理器304执行时,致使这些处理器执行如针对用户设备118的在此所述的某些操作。公开存储器可以是常规存储器,如闪存存储器、RAM、或其他类型的常规存储器。在某些实施例中,公开存储器304可以存储操作系统(OS)308、修改后的应用(修改后的app)114、和应用商店客户端310、以及其他本机应用或程序。
应用商店客户端310可以支持从应用商店204的安全下载。应用商店客户端310可以利用客户端设备118的安全存储器306来存储加密后的剪切块116。应用商店客户端310还可以激活用户设备118上的安全存储器和安全执行环境。
根据各实施例,安全存储器306可以存储受保护的软件分发许可安全环境(PLN)312,该安全环境可以用于一次登记进入应用商店104并且稍后可以在每次用户106想要开始安全应用(具有剪切块)时使用。PLN 312可以管理受保护的软件分发技术的密钥制造(keying)材料并且可以对许可证进行解析。PLN 312可以存储在安全存储器306内并且对于平台与其一起工作的任何给定在线应用商店而言,可以充当客户端平台(用户设备118)上的单元素集合。在某些实例中,PLN 312可以同时支持多个应用商店。如以下所讨论的,PLN312可以参与用户登记和应用执行。
在某些实施例中,安全存储器306可以存储受保护的软件分发执行环境(PXN)314(其可以是安全执行环境),作为存储应用(剪切块)的解密后的内容的安全执行环境。可以为在用户设备118上执行的每个安全应用创建PXN314。来自不同应用的剪切块在大小上可以不同。在某些实施例中,以最小大小加载PXN 312以便能够执行和正确地容纳来自修改后的应用的剪切块。这可以如以下所描述来完成。
可以将为软件堆栈的一部分的静态PXN二进制构建至全最大支持的大小。可以部分地加载PXN二进制以适应具体应用的任何较小的需求。例如,每个应用的最大大小可以是2MB的剪切块(这制作了稍微更大的最大大小的PXN);然而,对于仅使用0.5MB的剪切块的给定应用而言,软件堆栈可以加载那个大小的PXN 314。为堆栈的一部分的测量表可以为可能大小的集合提供其对应的测量。当堆栈加载用于具体应用的PXN 314时,其可能正在使用为应用的一部分的嵌入的受保护的软件分发元数据来决定大小。加载堆栈可以构建具有正确大小的PXN 314。由于此架构可以支付每个正在运行的应用的此开销,针对PXN 314的实施考虑是设计具有最小开销大小的PXN。
说明性操作
图4至图9示出了对软件进行修改并安全地向用户设备提供修改后的软件以便由该用户设备进行安全执行的说明性过程。将这些过程展示为逻辑流程图或示意图中的框的集合,其代表了可以在硬件、软件、或其组合中实施的操作序列。在某些实例中,以可以执行框中所述的各操作的对应实体来组织框的集合。在软件的背景下,这些框代表一个或多个计算机可读存储介质上存储的计算机可执行指令,从而当由一个或多个处理器执行时,执行所述的操作。通常,计算机可执行指令包括执行具体函数或实施具体抽象数据类型的例程、程序、对象、分量、数据结构等等。不旨在将描述这些操作的顺序解释为限制,并且可以用任何顺序组合和/或并列任何数量的所述框来实施这些过程。参照图1至图3描述了这些过程。当然,可以在其他相似和/或不同环境中执行这些过程。
图4为用于对软件进行修改和安全地向用户设备提供修改后的软件以便由该用户设备进行安全执行的说明性过程400的流程图。
在402,AS服务器112可以用应用商店104初始地登记用户106和用户设备118。该登记可以包括加密密钥的交换。根据各实施例,该登记可以使PLN 312能够在用户设备118上建立或使用。关于图5,更详细地描述了操作402。
在404,这个(些)开发者服务器102可以将应用上传到AS服务器112。AS服务器112可以从应用移除剪切块116以创建修改后的应用114。AS服务器112还可以在操作404对这些剪切块进行加密。关于图6,更详细地描述了操作404。
在406,AS服务器112可以将修改后的应用114和加密后的剪切块116下载到用户设备118。AS服务器112还可以在操作406为用户118提供许可证。关于图7,更详细地描述了操作406。
在408,用户设备118可以执行修改后的应用。当适用时,用户设备118可以执行PXN314中的剪切块中的一个或多个以隐藏剪切块中的代码并且将结果数据传递回到正在用户设备118上运行的修改后的应用。因此,甚至在修改和AS服务器112创建剪切块之后,应用可以如开发者所设计的那样运行。可以预测试和通过安全存储器306和PXN 314的使用对用户、操作系统、本机软件、黑客、以及其他人隐藏剪切块中所使用的代码。关于图8,更详细地描述了操作408。
图5为示意图,描绘了环境500,该环境示出了从AS服务器112到用户设备118的安全堆栈密钥的传输。根据各实施例,用户106可以请求登记与应用商店104的关系,如通过建立账户。用户106可以向应用商店104提供用户信息、支付信息、联系信息、用户设备118的信息、和/或其他数据。作为回报,AS服务器112可以向用户设备118的安全存储器306中所存储的PLN 312提供安全堆栈密钥502。安全堆栈密钥502可以用于对剪切块116、修改后的应用114、应用的许可证、或其组合进行解密。当从AS服务器112向用户设备118传输数据时,还可以使用其他加密。当对来自AS服务器112的至少某些信息或数据进行解密时,用户设备118可以使用安全堆栈密钥502(或仅“密钥”或“加密密钥”)。
图6为示意图,描绘了环境600,该环境示出了应用到应用商店服务器104的传输,然后其对该应用进行修改以创建剪切块。开发者通讯器602可以将未经修改的并包括完整的代码集合的应用108传输至AS服务器112。因此,从开发者角度看,应用开发本身没有变化。在开发者网站处的构建过程与任何其他应用的过程相同。
对于安全应用而言(例如,当应用不是免费的时),在上传到应用商店104内之后,应用转换器206可以对该应用(例如,应用二进制)进行分析并生成剪切块列表。可以通过来自开发者、来自AS服务器112进行的对代码的离散部分的检测、或两者的组合的指定来识别剪切块。应用转换器206的输出为包括到用户设备118的安全执行环境(即,PXN 314)的正确调用(重定向代码)的修改后的应用114(例如,应用二进制)。该输出还包括已经被AS服务器112加密的剪切块。该输出还可以包括正确地加载和执行应用作为具有剪切块的修改后的应用的元数据。该元数据可以进一步包括剪切块的大小和其他可能的参数。
在某些实施例中,应用转换器206可以执行与以下说明性算法相似的算法。给定由代码序列C=(c0,c1,c2…ccn)和数据区域(d0,d1,d2…,ddn)组成的应用A,过程可以用如下方式提取序列代码E=(e1,…,en)(其中ei=(ci1,…,ci2))的n个片段:(1)当执行A连同所提取的E片段(用AE表示)时,该操作与A无区别。(2)E片段为序列线性代码摘录(即,没有从ei内到ej内的跳跃,即i<>j,并且没有ei与A之间的跳跃)。(3)E片段不包括软件中断的子集。在交错运行过程中,可以通过如下方式选择剪切块:仔细检查A和E的应用执行流程(其中E执行是不透明的,但可以是单步执行的等),从而使得观察者不具有倒序建造E片段的高效方式。可选地,E片段还包括D子集,当仅Ei在某个D子集上运行时尤其是不重要的,那个子集可以在Ei内。在某些实施例中,剪切块116可以是来自应用的完整函数。剪切块116还可以是没有正在调用外部函数或系统调用的叶函数,由此保护所提取的功能的局部数据不被泄露。在某些实施例中,剪切块116在大小上被限制到存储器的阈值大小(字节)。
图7为示意图,描绘了环境700,该环境示出了修改后的应用114到用户设备118的传输。在某些实施例中,AS服务器112可以为具体用户106的应用生成唯一密钥并且用那个密钥对剪切出的块进行加密。AS服务器112还可以为用户生成唯一用户许可证702。用户许可证702可以包括用于通过用户和唯一应用密钥的应用的激活的可选策略。在某些实施例中,该许可证仅可以允许有限地使用应用(例如,基于使用时间和数量等的试行)或允许出租应用(例如,软件即服务)。AS服务器112可以用唯一客户端密钥(其在登记过程中配置)对许可证进行加密。AS服务器112可以创建包括修改后的应用114、加密后的剪切块116和用户许可证702的下载包704,其随后可以被传输至用户设备118。
图8为示意图,描绘了环境800,该环境示出了用户设备118进行的修改后的应用114的执行。根据各实施例,用户设备118可以加载修改后的应用114用于执行。然后,可以加载具有适用于剪切块116的大小的PXN 314。可以将许可证702发送至PLN 312用于对PXN314进行解密,这可以在对应用在许可证的条款和策略下运行的验证或通知后发生。剪切块116可以被流化进入PXN314。可以使用修改后的应用114和剪切块116激活应用。此外,除其他函数之外,当终止应用时,堆栈可以清除EPC。
在某些实施例中,PXN 314可以作为缓冲器运行并且可以为由于大小约束而不可以存储在PXN 314内的剪切块加载附加代码。因此,PXN 314可以在剪切块的处理过程中检索和可能对一些附加代码和/或剪切块(或其多个部分)进行解密。
图9为用户设备118执行修改后的应用的说明性过程900的流程图。
在902,用户设备118可以对来自存储在公开存储器302内的修改后的应用114的代码进行处理。
在904,用户设备118可以确定在来自修改后的应用114的代码中是否到达了重定向代码。重定向代码(或重新定向代码、跳码等)可以是链接到存储在PXN 314内的相应剪切块的代码。当没有发现重定向代码(沿着“否”路线)时,则处理继续进行操作902。然而,当发现重定向代码(从决定操作904沿着“是”路线),则处理可以在906继续进行。
在906,用户设备118可以向PXN 314发送处理相应的剪切块的请求。该请求可以包括元数据、参数和/或其他数据。例如,该请求可以包括剪切块中的代码所使用的变量。
在908,用户设备118可以对PXN 314中的剪切块内的代码进行处理。可以对操作系统、其他应用、其他用户、用户106等等隐藏剪切块的处理。
在910,用户设备119可以确定是否已经处理了代码。当代码不完整(仍在处理)时,则该过程可以从决定操作910沿着“否”路线在908继续进行。当来自剪切块的代码是完整的(从决定操作910沿着“是”路线)时,则该过程可以在操作912继续进行。
在912,PXN 314可以将参数传递回至公开存储器302以使修改后的应用114能够继续运行。例如,在不泄露底层代码的情况下并通过将剪切块中的代码的底层逻辑模糊至可能的程度,可以将代码的输出传递回公开存储器302。除了正在执行剪切块的处理器线程或处理器核线程以外,解密后的剪切块可能不能由用户设备上的任何软件或硬件可读。在各实施例中,操作912可能不包括将信息传递回至主应用的PXN 314,因为该PXN仅可以改变公开存储器302的状态和/或通过寄存器返回数据。
在某些实施例中,用户设备118可以宣布或以另外方式提供可利用信息,该可利用信息指示修改后的应用的合法或有效许可证和应用的状态为修改后的。因此,用户设备118可以指示应用包括如此处所述的剪切块。
图10为可以执行在此所述的过程和功能性的另一个说明性用户设备1000的框图。用户设备1000可以包括一个或多个处理器1002-1,…,1002-N(其中N为大于或等于1的正整数),这些处理器中的每个处理器可以包括一个或多个处理器核1004-1,…,1004-M(其中M为大于或等于1的正整数)。在某些实施方式中,如以上所讨论的,这个(些)处理器1002可以是单核处理器,而在其他实施方式中,这个(些)处理器1002可以具有大量处理器核,这些处理器核中的每个核可以包括图10中所示的某些或所有组件。例如,每个处理器核1004-1,…,1004-M可以包括用于与寄存器文件1008-1,…,1008-M进行交互和/或执行在此所讨论的操作中的至少某些操作的逻辑1006的实例。逻辑1006可以包括专用电路、逻辑单元、微代码等等中的一个或多个。
可以通过集成存储器控制器(IMC)1010结合局部互连1016来运行这个(些)处理器1002和这个(些)处理器核1004,从而读取和写入到存储器1012。这个(些)处理器1002和这个(些)处理器核1004还可以执行存储在存储器1012或其他计算机可读介质中的计算机可读指令。存储器1012可以包括易失性和非易失性存储器和/或以用于信息存储的任何类型的技术中所实现的可移除和不可移除介质,如计算机可读指令、数据结构、程序模块或其他数据。这种存储器可以包括但不限于RAM、ROM、EEPROM、闪存存储器或其他存储器技术。在存在多个处理器核1004的情况下,在某些实施方式中,该多个处理器核1004可以共享高速缓存1014,该共享高速缓存可以通过局部互连1016是可访问的。此外,可以提供储存器1018用于存储数据、代码、程序、日志等等。储存器1018可以包括固态储存器、磁盘储存器、廉价磁盘冗余阵列(RAID)存储系统、存储阵列、网络附接储存器、存储区域网络、云储存器、CD-ROM、数字多用途光盘(DVD)或其他光储存器、磁盒、磁带、或可以用于存储所期望的信息和可以被计算设备访问的任何其他介质。取决于用户设备1000的配置,存储器1012和/或储存器1018可以是一种类型的计算机可读存储介质并可以是非瞬态介质。
根据各实施例,处理器1102可以通过IMC 1010与安全存储器1019进行通信。安全存储器1019可以包括PLN 312和/或PXN 314。可以用处理器1002-1或另一个处理器或处理器核至少部分地存储安全存储器1019。
在各实施例中,局部互连1016还可以与图形控制器(GFX)1020进行通信以提供图形处理。在某些实施例中,局部互连1016可以与系统代理1022进行通信。系统代理1022可以与中枢1024进行通信,该中枢连接了显示引擎1026、PCIe 1028、以及DMI 1030。
存储器1012可以存储可由这个(些)处理器1002执行的功能组件。在一些实施方式中,这些功能组件包括可由这个(些)处理器1002执行的指令或程序1032。图10中所示的示例功能组件进一步包括用于对用户设备1000的运行进行管理的操作系统(OS)1034。
用户设备1000可以包括一个或多个通信设备1036,这个或这些通信设备可以包括用于能够通过通信链路(如一个或多个网络1038)与各种其他设备进行通信的一个或多个接口和硬件组件。例如,通信设备1036可以促进通过互联网、电缆网络、蜂窝网络、无线网络(例如,Wi-Fi、蜂窝)以及有线网络的通信。用于通信的组件可以至少部分地取决于所选择的网络和/或环境的类型。用于通过这种网络进行通信的协议和组件是众所周知的并且将不在此进行详细讨论。
用户设备1000可以进一步配备有各种输入/输出(I/O)设备1040。这种I/O设备1040可以包括显示器、各种用户接口控件(例如,按钮、操纵杆、键盘、触摸屏等)、扬声器、连接端口等等。可以提供可包括系统总线、点到点接口、芯片组、或其他合适的连接和组件的互连1024,从而能够实现处理器1002、存储器1012、储存器1018、通信设备1036、以及I/O设备1040之间的通信。
结论
尽管以专用于结构特征和/或方法动作的语言描述了主题,但应理解的是,所附权利要求书中限定的主题不一定局限于所描述的特定特征或动作。相反,作为实施权利要求书的说明性形式,披露了这些特定特征和动作。

Claims (24)

1.一种处理器,包括:
第一逻辑单元,用于对包括有待分别地存储在安全存储器内的代码的所提取部分的应用,处理存储在存储器内的代码;以及
第二逻辑单元,用于当所述第一逻辑单元到达代码的所述所提取部分的位置时,在安全执行环境中对存储在所述安全存储器内的代码的所述所提取部分的至少一部分进行处理,所述安全存储器被限制成通过所述安全执行环境访问,所述安全执行环境在将结果数据传递回至所述第一逻辑单元的同时隐藏二进制代码的所述所提取部分的内容。
2.如权利要求1所述的处理器,其中,当检测到重定向代码后,所述第一逻辑单元重定向至所述第二逻辑单元,其中所述重定向代码是用于所述代码的所述所提取部分的应用中的占位符。
3.如权利要求1所述的处理器,其中,代码的所述所提取部分是由所述第二逻辑单元解密并且在所述安全执行环境中执行的。
4.如权利要求1所述的处理器,其中,所述第一逻辑单元将至少一个参数传递至所述第二逻辑单元,以发起对所提取代码的所述至少一部分进行处理的请求。
5.如权利要求1所述的处理器,进一步包括第三逻辑单元,用于对所述应用进行解密并且将所述代码的所述所提取部分存储在所述安全存储器内。
6.一种安全地分发软件的方法,所述方法包括:
从应用中提取代码的多个部分作为剪切块,以创建不包括这些剪切块的修改后的应用,其中,所述修改后的应用包括到安全执行环境的重定向代码;
使用由用户维护的加密密钥对所述这些剪切块进行加密;以及
将这些加密后的剪切块和所述修改后的应用传输至所述用户。
7.如权利要求6所述的方法,其中,所述这些剪切块是来自所述应用的代码的函数。
8.如权利要求6所述的方法,其中,所述这些剪切块在大小上被限制到阈值大小。
9.如权利要求6所述的方法,进一步包括:至少部分地基于使用来自开发者的指示符,对所述这些剪切块进行识别。
10.如权利要求6所述的方法,进一步包括:从开发者接收未修改状态下的所述应用。
11.如权利要求6所述的方法,进一步包括:在所述加密之前,将所述加密密钥传输至所述用户。
12.一种计算设备,包括:
应用转换器,用于从应用中移除代码的多个部分作为剪切块,以创建修改后的应用,其中,所述修改后的应用包括到安全执行环境的重定向代码;以及
下载管理器,用于使用由用户维护的加密密钥对这些剪切块进行加密并且将所述修改后的应用和这些加密后的剪切块传输至所述用户。
13.如权利要求12所述的计算设备,其中,所述应用转换器用于通过自动化的选择过程,将代码的所述多个部分识别为所述这些剪切块。
14.如权利要求12所述的计算设备,其中,所述下载管理器用于将用户许可证传输至所述用户。
15.如权利要求12所述的计算设备,其中,所述修改后的应用和所述这些加密后的剪切块被包括在加密包内用于所述传输。
16.如权利要求12所述的计算设备,还包括客户端注册管理器,所述客户端注册管理器用于在所述加密之前,将所述加密密钥传输至所述用户。
17.一种用于安全地存储和执行应用的系统,所述系统包括:
一个或多个处理器;
公开存储器,用于存储所述一个或多个处理器可执行的应用;
安全存储器,用于在所述公开存储器接收到所述应用之前,将代码存储为从所述应用所提取的一个或多个剪切块,所述安全存储器被限制成使用所述一个或多个处理器通过安全执行环境访问;
其中,所述一个或多个处理器执行来自所述公开存储器的所述应用;以及
当所述执行来自所述公开存储器的所述应用到达所述应用内的剪切块时,在所述安全执行环境中执行所述剪切块内的相应代码而不向所述公开存储器泄露所述剪切块的内容。
18.如权利要求17所述的系统,其中,所述应用包括代替所述剪切块的重定向代码,以将所述处理重定向至所述剪切块内的相应代码。
19.如权利要求17所述的系统,其中,当所述剪切块处于所述安全执行环境中时,对其进行解密。
20.如权利要求17所述的系统,其中,所述剪切块为所述应用的函数。
21.如权利要求17所述的系统,其中,所述安全存储器进一步包括加密密钥,所述加密密钥用于在下载了所述应用和所述一个或多个剪切块之后对所述应用和所述一个或多个剪切块进行解密。
22.如权利要求17所述的系统,其中,所述一个或多个处理器在执行所述相应代码之前将至少一个参数传递至所述安全执行环境。
23.一种存储有指令的计算机可读存储介质,所述指令在被执行时使机器执行如权利要求6-11的任一项所述的方法。
24.一种计算机系统,包括用于执行如权利要求6-11的任一项所述的方法的装置。
CN201180076096.4A 2011-12-29 2011-12-29 安全地分发软件的方法、处理器、计算设备及安全地存储和执行应用的系统 Expired - Fee Related CN104040552B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067781 WO2013101034A1 (en) 2011-12-29 2011-12-29 Software modification for partial secure memory processing

Publications (2)

Publication Number Publication Date
CN104040552A CN104040552A (zh) 2014-09-10
CN104040552B true CN104040552B (zh) 2018-03-30

Family

ID=48698272

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180076096.4A Expired - Fee Related CN104040552B (zh) 2011-12-29 2011-12-29 安全地分发软件的方法、处理器、计算设备及安全地存储和执行应用的系统

Country Status (4)

Country Link
US (1) US9158902B2 (zh)
CN (1) CN104040552B (zh)
TW (1) TWI496023B (zh)
WO (1) WO2013101034A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8843764B2 (en) 2011-07-15 2014-09-23 Cavium, Inc. Secure software and hardware association technique
US20130254906A1 (en) * 2012-03-22 2013-09-26 Cavium, Inc. Hardware and Software Association and Authentication
WO2013180736A1 (en) 2012-06-01 2013-12-05 Intel Corporation Identification and execution of subsets of a plurality of instructions in a more secure execution environment
US8812873B2 (en) 2012-09-26 2014-08-19 Intel Corporation Secure execution of a computer program using binary translators
AU2014200318B2 (en) * 2014-01-17 2020-07-02 Vsk Electronics Nv Threat-monitoring systems and related methods
US9330028B2 (en) * 2014-03-27 2016-05-03 Intel Corporation Instruction and logic for a binary translation mechanism for control-flow security
KR101695639B1 (ko) * 2014-08-13 2017-01-16 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
US10181027B2 (en) * 2014-10-17 2019-01-15 Intel Corporation Interface between a device and a secure processing environment
US10178087B2 (en) * 2015-02-27 2019-01-08 Samsung Electronics Co., Ltd. Trusted pin management
DE102015225651A1 (de) * 2015-12-17 2017-06-22 Robert Bosch Gmbh Verfahren und Vorrichtung zum Übertragen einer Software
KR101814897B1 (ko) * 2016-02-11 2018-01-04 라인 가부시키가이샤 파일 보호 방법 및 시스템
KR101823226B1 (ko) * 2016-02-11 2018-01-29 라인 가부시키가이샤 코드 보호 방법 및 시스템
US11159322B2 (en) * 2019-01-31 2021-10-26 Baidu Usa Llc Secure multiparty computing framework using a restricted operating environment with a guest agent

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051211B1 (en) * 2000-08-21 2006-05-23 International Business Machines Corporation Secure software distribution and installation
US7640595B2 (en) * 2000-09-18 2009-12-29 Navteq North America, Llc Computing system with decryption functions and secure data product

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817140A (en) * 1986-11-05 1989-03-28 International Business Machines Corp. Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor
US6317832B1 (en) * 1997-02-21 2001-11-13 Mondex International Limited Secure multiple application card system and process
US6658548B1 (en) * 2000-01-10 2003-12-02 International Business Machines Corporation System and method in a data processing system for extracting data from a protected region of memory
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7124445B2 (en) * 2002-06-21 2006-10-17 Pace Anti-Piracy, Inc. Protecting software from unauthorized use by converting source code modules to byte codes
US20050028148A1 (en) * 2003-08-01 2005-02-03 Sun Microsystems, Inc. Method for dynamic recompilation of a program
US7788487B2 (en) * 2003-11-28 2010-08-31 Panasonic Corporation Data processing apparatus
US8954751B2 (en) * 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
US8352837B1 (en) * 2009-03-20 2013-01-08 Marvell International Ltd. System and methods for storing data encoded with error information in a storage medium
US20100269106A1 (en) * 2009-04-21 2010-10-21 Ksplice, Inc. Method of finding a safe time to modify code of a running computer program
US8819446B2 (en) * 2009-06-26 2014-08-26 International Business Machines Corporation Support for secure objects in a computer system
TW201110022A (en) * 2009-09-15 2011-03-16 Inventec Corp Plug-in downloading system for expanding functions of software and method thereof
US8695060B2 (en) * 2011-10-10 2014-04-08 Openpeak Inc. System and method for creating secure applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051211B1 (en) * 2000-08-21 2006-05-23 International Business Machines Corporation Secure software distribution and installation
US7640595B2 (en) * 2000-09-18 2009-12-29 Navteq North America, Llc Computing system with decryption functions and secure data product

Also Published As

Publication number Publication date
US9158902B2 (en) 2015-10-13
US20140208435A1 (en) 2014-07-24
TWI496023B (zh) 2015-08-11
CN104040552A (zh) 2014-09-10
TW201337620A (zh) 2013-09-16
WO2013101034A1 (en) 2013-07-04

Similar Documents

Publication Publication Date Title
CN104040552B (zh) 安全地分发软件的方法、处理器、计算设备及安全地存储和执行应用的系统
He et al. Characterizing code clones in the ethereum smart contract ecosystem
US8122100B2 (en) Multiple object download
CN105144189B (zh) 安全云数据库平台
CN104426885B (zh) 异常账号提供方法及装置
US20170116410A1 (en) Software protection
KR20190004309A (ko) 블록체인 iot장치를 위한 동작 시스템
TW201741956A (zh) 使用區塊鏈實現邏輯閘功能
CN107851167A (zh) 在计算环境中保护计算数据的技术
CN104361294B (zh) 一种文档保护方法、设备以及系统
US20130132944A1 (en) Methods and Apparatus for Binding Applications to a Cloud Computing Environment
WO2015006497A1 (en) Secure distributed gambling
CN103577180A (zh) 数据处理方法及装置
CN108989288B (zh) 一种基于区块链的移动数字版权保护方法及装置
CN112363771B (zh) 应用程序的处理方法及相关产品
CN111163094A (zh) 网络攻击检测方法、网络攻击检测装置、电子设备和介质
CN102984706A (zh) 包括两个执行空间的电信终端
CN108140074A (zh) 管理应用特定的特征权限
CN112541820A (zh) 数字资产管理方法、装置、计算机设备及可读存储介质
KR101273370B1 (ko) 어플리케이션 위변조 방지 장치 및 방법
CN112346740B (zh) 一种通过应用来核实设备标识符的方法及其系统
CN113190200A (zh) 展会数据安全的防护方法及装置
Wang What will cloud computing bring to healthcare?-Overview of cloud applications in healthcare
Goel et al. Multisignature Crypto Wallet Paper
CN109726548A (zh) 应用程序行为的处理方法、服务器、系统及存储介质

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180330

Termination date: 20201229