用于部分安全存储器处理的软件修改的制作方法

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