CN102016867A - 基于至少一个已安装的简档来授权执行软件代码的系统和方法 - Google Patents

基于至少一个已安装的简档来授权执行软件代码的系统和方法 Download PDF

Info

Publication number
CN102016867A
CN102016867A CN2009801159972A CN200980115997A CN102016867A CN 102016867 A CN102016867 A CN 102016867A CN 2009801159972 A CN2009801159972 A CN 2009801159972A CN 200980115997 A CN200980115997 A CN 200980115997A CN 102016867 A CN102016867 A CN 102016867A
Authority
CN
China
Prior art keywords
software module
profile
equipment
data
processor
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
CN2009801159972A
Other languages
English (en)
Other versions
CN102016867B (zh
Inventor
D·德阿特勒
H·潘塞
M·安德勒尔
S·库铂
M·布劳沃
M·丽达
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.)
Apple Inc
Original Assignee
Apple Computer Inc
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 Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN102016867A publication Critical patent/CN102016867A/zh
Application granted granted Critical
Publication of CN102016867B publication Critical patent/CN102016867B/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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
    • 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)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

实施例包括用于授权软件代码在安全操作环境中被执行或访问性能的系统和方法。简档可由可信实体发出,以将信任扩展到其他实体,从而准许这些其他实体在安全操作环境中,例如在特定计算设备上,提供或控制应用程序的执行。该简档准许实体将软件代码添加到设备,而无需由可信授权机构再次授权每个发布,例如测试、质量确保,或者添加到由其他实体控制或授权的有限组设备。

Description

基于至少一个已安装的简档来授权执行软件代码的系统和方法
技术领域
本申请涉及控制对软件代码的执行。
背景技术
计算设备可被配置为要求在计算机系统上执行的代码由可信方来授权。例如,这种授权可以用于帮助确保计算设备的完整性不会被恶意或未授权的代码损害。在一些情况下,计算设备可被配置为要求代码由可信方数字地签名以及验证,用以在计算设备上执行和/或控制对访问设备的特定资源或服务的软件的执行。对数字签名的验证有助于确保底层的应用代码自被可信授权机构(authority)102数字签名起不再被修改。然而,这种安全方案在允许多个实体在设备上实施它们的策略方面是有挑战的。
例如,在开发期间,软件开发者将在计算机系统上频繁地修改其代码,并且可能试图在该系统上测试代码。每当修改代码时,数字签名就失效了。因此,为了执行任何新的或未修改的代码,软件开发者必须使可信授权机构102对代码再次签名。这个过程可能是令人厌烦且费时的。
附图说明
图1是例示了计算环境的一个示例的框图,在该计算环境中,软件代码从一个或多个开发者发布到计算设备。
图2是例示了在如图1中所例示的环境中的计算设备的软件部件的一个实施例的框图。
图3是例示了用于控制在如图2中所例示的设备上执行软件的简档的一个实施例的框图。
图4是例示了在图2所例示的计算设备的一个实施例的软件部件之间的数据流的框图。
图5是例示了基于图2所例示的简档而执行软件的方法的一个实施例的流程图。
图6是更详细地例示了图5的方法的部分的流程图。
图7是例示了如图2所例示的计算设备的一个示例的框图。
图8A和8B是例示了如图2所例示的计算设备的一个示例的框图。
图9是例示了如图8A和8B所例示的移动设备的实施的一个示例的框图。
具体实施方式
提供了如下实施例,这些实施例允许软件开发者在开发和控制软件在设备上的执行方面具有特定可信权限。在应用程序由第一可信方加密签名的计算设备中,可以提供开发者简档,该开发者简档针对由设备标识符标识的指定设备列表规定设备的操作以将信任扩展到由第二方签名的应用程序。特定简档可以使得应用程序能够从多个开发者在一个设备上运行,在多个设备上运行,以及针对不同设备、简档和/或开发者指定不同可用的能力。
控制应用程序的执行可以保持在设备的处理器的可信空间中。该可信空间可以包括特权或监管模式或者处理器的存储器空间,例如存储器的内核空间。在不可信空间(例如,存储器的用户空间)中运行的服务(或处理)可以被配置为管理简档,以及确定是否特定的应用程序是可执行的,并识别对可信空间的可信应用程序。不可信空间可以包括在处理器上执行的用户模式或非特权处理的存储器空间。
加密功能及它们随附的计算可以由用户空间服务来执行。另外,用户空间服务可以被配置为基于一个或多个可能特定于特定开发者简档、特定设备标识符、特定承载商等的简档和策略来认证软件。将这些逻辑上和计算上复杂的处理与可信空间分离将改善软件系统可靠性和性能,并使得能够采用复杂的加密和策略执行。
为了例示本发明的实施例,下面将给出图1-7。图1例示了实施例可以实施的整体系统图。图2-3示出了软件部件和用于控制软件的执行的示例性简档的实施例。图4示出了软件部件之间的数据流的一个示例。接着图5-6例示了用于基于简档执行软件的处理流程图。提供图7来例示移动计算设备的一个示例。下面将从参照图1开始进一步描述这些附图。
图1是计算环境的一个示例,该计算环境允许授权软件代码分布到被配置为仅执行授权代码的计算设备。计算设备100可以是任意数量的不同类型的计算设备,包括移动通信设备、台式计算机、膝上型计算机、手持式计算机、个人数字辅助(PDA)设备、移动电话设备、媒体播放设备,等等。计算设备100可以被配置为要求在计算设备100上执行的任何代码由可信授权机构102来授权。在其他实施例中,可以采用更复杂的授权方案,例如,未授权软件可执行仅用于有限用途或者访问有限设备资源,而授权软件可以被提供以对设备100的资源的更广泛访问。
如下面将更详细讨论的,授权功能可以由确定代码是否已经由可信授权机构授权的设备100的操作系统提供或者与之相结合地提供。如果代码如此被授权和验证,则其一般可以被执行而无需任何进一步的系统或用户交互;如果代码没有被授权,则其在计算设备100上执行的能力可以被限制或者甚至禁止。在一些实施例中,计算设备可以警告用户该代码没有被授权,并且询问用户是否仍希望执行该未授权的代码。在其他实施例中,计算设备100可以被配置为根本禁止未授权代码被执行,而不顾用户的意愿。
在一些实施例中,可信授权机构102可以通过数字签名软件106来授权软件106。如本领域所公知的,数字签名采用公钥加密法来确保数据的完整性。例如,软件开发者104可以向可信授权机构102提供经编译的对象代码。然后可信授权机构102可以创建具有对软件106的对象代码的私钥的数字签名,并且可以使得代码对计算设备100是可用的。
当可以在计算设备100上请求执行软件时,计算设备100检查软件106的数字签名来验证其真实性和/或授权。如果软件被验证为由可信授权机构102签名,则软件106可以在计算设备100上执行。计算设备100可以有多种方法来在执行之前检查软件106的数字签名。
软件开发者104可以是编写、开发、测试、行销、销售和/或发布用以在计算设备100上运行的软件的任何人或组织。在一个实施例中,开发者104可以是开发在其控制或管理的设备100上使用的软件的公司或企业。
作为软件开发周期的一部分,软件开发者104可能希望在与软件106将现场部署于其上的计算设备相类似的计算设备上测试其软件。因此,软件开发者104可以具有一个或多个开发者计算设备100,其允许软件开发者开发、测试和/或以其他方式进一步开发软件106。
开发者计算设备100可以与所开发的软件106将要提供给的计算设备100相同。例如,如果软件开发者104在编写要运行在诸如iPhone的移动电话平台上的软件106,例如,开发者计算设备100可以是iPhone。类似地,如果针对软件106的计算设备平台100是诸如iPodTouch的媒体播放器,那么开发者计算设备100可以是iPod touch。通过采用类似的设备用于测试和开发,软件开发者104可以能够在将软件发布到终端用户以在计算设备100上使用之前更有效地开发和测试软件。
在软件开发过程期间,软件应用程序中的代码可以被频繁改变。因此,如下面将描述的,软件开发者可以获得和使用在一个或多个计算设备100上的开发者访问。该开发者访问简档可以安装在开发者计算设备100上,其允许开发者在设备100上修改、重编译并测试他们的软件,而无需从可信授权机构102请求附加的代码签名服务。
在一些实施例中,除了接收开发者访问简档之外,开发者计算设备100还可以包括诸如调试、追踪或描绘软件的开发和测试相关的软件,作为安装在开发者计算设备100上的标准发布的一部分,作为预先准备处理的一部分,或者在任何其他时间包括该软件。在一些实施例中,开发者计算设备100被预先准备有这种附加的开发相关软件。在其他实施例中,开发相关软件可以随开发者访问简档或者与之相结合地被安装在设备上。
图2是提供开发者计算设备100如何可以被配置为采用开发者访问简档208来执行没有被可信授权机构102签名的软件模块206的一个示例的框图。如上所述,开发者计算设备100可以与可以向其提供软件开发者104创建的软件106的计算设备100类型相同。
软件106可以包括存储在设备100上或可由设备100访问的一个或多个软件模块206。在一个实施例中,计算设备100的存储设备209可以包括计算机可读存储介质(易失性和/或非易失性的),其可被配置为存储软件模块206和简档208中的一个或两者。存储设备209还可以被配置为存储操作系统202的代码,并且还可以包括设备100的通用存储设备。软件模块206可以被暂时存储在设备100上或者永久性地存储在设备100上。
开发者计算设备100可以包括操作系统。操作系统可以是广为公知的操作系统,例如MacOS、Windows、Linux、Unix、Symbian等等。如以上简要地讨论的,操作系统的一部分(例如,操作系统202的内核)可以被配置为要求在设备100上执行的代码在被允许在设备上执行之前被授权。该授权可以采取数字地签名软件模块206中的一些或全部的可信授权机构102的形式。在一些实施例中,可信授权机构102采用代码签名证书,其可以被用于验证经签名的计算机代码的来源和完整性。
操作系统202所采用的存储器的内核空间在概念上可以被认为是可信空间。信任可以通过对内核的引导时认证来建立。在一个实施例中,计算设备100可以包括用于提供对操作系统202及其内容所采用的内核空间的引导时认证的硬件支持。例如,在一个实施例中,计算设备100的引导加载器可以例如采用适合的公钥签名验证来在加载和引导内核之前认证内核软件的签名。
数字签名可以包括摘要,该摘要例如可以通过在软件上执行散列函数以创建消息摘要来创建。在一些实施例中,可以采用递增代码签名。散列值可以是针对软件的全部或特定部分产生的散列值。例如,在一些实施例中,软件被分为诸如一个或多个页面的一个或多个单元。散列值是针对软件的每个单元或页面生成的。在这种实施例中,软件的摘要包括针对每个代码或页面的散列值的阵列或表生成的散列值。然后可以利用与可信授权机构102相关联的私用加密密钥来加密消息摘要。在一个实施例中,广为公知的SHA-1函数可以用来生成消息摘要。然后可以将加密的消息摘要(也称为签名)附加到一个或多个软件模块206。
在一些实施例中,当在设备上请求执行软件代码时,操作系统202可以通过证实数字签名而验证软件代码的来源和完整性来处理请求。如果可信授权机构102验证了代码的来源,并且代码的完整性没有被损害,则操作系统202可以允许代码在计算设备100上运行。
开发者计算设备100还可以包括设备标识符204。设备标识符204可以采取多种形式。在一个实施例中,设备标识符204可以是唯一地标识开发者计算设备100的序列号。在其他实施例中,设备标识符204可以是操作系统202生成的唯一标识符。
如上所述,开发者计算设备100还可以具有可信授权机构102创建的开发者访问简档208。开发者访问简档208可以包括指示允许特定设备执行没有被可信授权机构102签名的软件的一组数据。在一个实施例中,开发者访问简档208允许软件开发者104修改和重编译其软件模块206的源代码,然后在开发者计算设备100上测试软件模块206,而无需从可信授权机构102请求附加的代码签名服务。相反,软件开发者104可以被允许数字地签名其软件模块206,并且在具有如下开发者访问简档208的开发者计算设备100上运行软件,该开发者访问简档208指定开发者104签名的代码可以在设备100上执行。在一些实施例中,开发者访问简档还可以指定在测试软件模块206中开发者104可以执行的特定操作。例如,开发者访问简档208可以指定由开发者104数字签名的软件模块206可以在开发者计算设备100上被调试。开发者计算设备100还可以具有多于一个的开发者访问简档208。
在一些实施例中,开发者访问简档208可以与策略服务210相结合地操作。策略服务210可以采取在操作系统的用户(不可信)存储器空间中运行的守护(daemon)或其他处理的形式。策略服务210可以被进一步配置为执行开发者访问简档208中指定的策略。例如,如果开发者访问简档208指定开发者可以追踪开发设备上的软件的操作,但是不允许进行调试,那么策略服务210将允许追踪操作,而不允许在调试模式下运行应用程序。
策略服务210可以是由操作系统202初始启动的,操作系统202可以在加载服务210之前验证该服务的加密保护的摘要。操作系统202可以经由处理间通信或类似的适合端口来保持对服务210的引用。由此,当简档服务210在不可信或用户模式的空间中执行时,简档服务210的代码可以在执行时被验证为由可信授权机构签名。
图3是开发者访问简档208的更详细视图。如上所述,开发者访问简档208可以是存储在设备100的存储器中的一组数据,其指示即使在软件没有被可信授权机构102签名的情况下设备也被允许执行该软件。开发者访问简档208可以包括设备标识符数据302、开发者标识符数据304以及权利数据306。
设备标识符数据302指定开发者访问简档208应用到的一个或多个设备标识符302。在设备100是移动电话设备的实施例中,设备标识符数据302可以包括移动电话设备序列号的阵列。
开发者访问简档208的设备标识符数据302可以包括不同设备的一个或多个设备标识符204。在一个实施例中,设备标识符204可以是特定设备的特定标识符,其可以被表示为数字或字母数据。在其他实施例中,可以采用更广义的设备标识数据。例如,一些设备销售商和/或制造商可以提供具有特定于组织的设备标识符的设备。例如,设备销售商和/或制造商可以基于设备递送到的组织来定制与设备相关联的设备标识符204的特定方面。
设备标识符数据302可以包括设备标识符的范围,而非列出每单个设备标识符值。在又一些实施例中,可以采用位掩码(bit mask)或通配字符来指定开发者访问简档应用到具有指定标识符特性的所有设备。在又一些实施例中,设备标识符数据302可以指定开发者访问简档208应用于所有设备。例如,在一个这种实施例中,由开发者标识符数据302中标识的一个或多个开发者签名的软件可以被授权以在安装了开发者访问简档208的任何设备100上运行。
如上所述,开发者访问简档208可以进一步包括开发者标识符数据304,该开发者标识符数据304指定开发者访问简档208所应用到的软件开发者104。开发者标识符数据304可以采取多种形式。在一些实施例中,开发者标识符数据304可以是与由开发者访问简档208覆盖的软件开发者104相关联的公钥。还可以采用其他类型的标识符。在一些实施例中,开发者标识符数据304可以存储在阵列数据结构中,该阵列数据结构存储在开发者访问简档内。当然,可以采用任何适合的数据结构。
此外,开发者访问简档208可以包括权利数据306。权利数据306可以包括如下数据,该数据指示针对由开发者标识符数据304标识的开发者签名的软件模块206在设备标识符数据302中指定的设备100上允许的操作的类型。特定的开发者访问简档208可以指定多于一个的开发者104为被授权,以数字地签名由开发者访问简档208授权的代码。
权利数据306可以指定关于在设备标识符数据302中标识的设备100针对由开发者标识符数据304中标识的开发者104所签名的应用程序所允许的访问的类型。权利数据306可以采取键值对的形式。该值例如可以包括数字、布尔或字母数据。在一个实施例中,权利数据306可以包括指示各种指定权利的预定布尔变量的阵列或其他数据结构。
在一个实施例中,权利数据306可以包括被执行的能力。在一个实施例中,可以包括准许调试权利,该准许调试权利在特定简档中被设置为“真(TRUE)”时指示与开发者访问简档208相关联的开发者104所签名的代码被允许在调试模式下在设备100上执行软件模块206。如果准许调试模式权利被设置为“假(FALSE)”并且开发者104试图在设备100上在调试模式下运行软件,则策略服务210可以阻止对代码的执行。其他这种权利可以包括可以指示准许追踪权利的权利数据。准许追踪权利可以准许由开发者104数字签名的软件模块206在设备100上在追踪模式下被编译和执行。
其他权利可以控制对具有安全或私密暗示(例如,地址簿数据)的设备100的联网资源、数据、库或应用程序的访问。另外,其他权利可以控制对特定开发者API(包括通话、联网、地址或电话存储、或多媒体API)的访问。
图4是例示了在系统接收到并且处理请求时在一个实施例的计算设备100的软件部件之间发生的事件之间的关系的框图。如图所示,在事件1中,可包括可信空间的操作系统202可以接收请求(响应于执行特定软件模块206的用户请求,或者响应于请求设备100上的另一软件部件执行特定软件模块206)以执行标识的软件模块206。在一个实施例中,该请求可以包括对存储设备209的目录或文件的引用,存储设备209存储软件模块206的可执行指令代码。
在事件2中,操作系统202可以将认证软件模块206的请求传送给策略服务210。在一个实施例中,认证请求可以包括对与软件模块206相关联的存储设备209中的存储位置的引用。操作系统202还可以将软件模块206的至少一部分的摘要提供给策略服务210。另选地或者另外地,策略服务210可以生成软件模块206的全部或部分的摘要。在一个实施例中,摘要可以基于针对与软件模块206相关联的每个代码页面或每个文件所确定的摘要值。在一个实施例中,对策略服务210的请求可以包括诸如要被执行的特定权利的其他数据。
例如,操作系统202可以指定,权利可以是执行、调试或者访问指定的系统资源的权利。操作系统202或者设备100的操作系统的另一部分可以被配置为请求访问特定网络(例如,移动电话网络、蓝牙堆栈)或者设备100的特定能力(例如,访问设备100的传声器、扬声器、照相机或者其他I/O接口)的权利授权。
在事件5中,策略服务210可以访问与执行软件模块206相关联的一个或多个简档208。在一个实施例中,简档是从存储设备209访问的。在一个实施例中,简档208包括与软件模块206的开发者相关联的特定简档。可以认识到,尽管这里是针对软件开发者104而非可信授权机构102描述了简档,但是还可以利用这里描述的系统和方法来控制对由可信授权机构102(例如,设备或操作系统开发者)提供的软件模块的访问。
在事件5中,策略服务210可以基于摘要和/或简档208验证软件模块206的执行权限。例如,策略服务210可以被配置为接收与软件模块206的摘要相关联的签名,并且加密验证所述摘要。在一个实施例中,策略服务210可以采用与特定开发者104相关联的并且可以被包括作为简档208的一部分的公钥,来验证摘要的签名。
在一个实施例中,为了确保简档和开发者密钥是可信的,策略服务210加密地验证简档可由可信授权机构102信任。在该实施例中,策略服务210可以通过采用可存储在设备100上或者例如经由数据网络以其他方式由设备100访问的可信授权机构102的公钥而验证简档(及其内容)的摘要或其他签名来验证简档。
策略服务210可以被进一步配置为验证可针对特定设备100授权软件模块206。例如,在一个实施例中,简档208可以包括用于匹配设备标识符(例如,用于匹配特定组设备100的掩码或通配符)的一个或多个设备标识符或数据。
策略服务210可以将标识符与设备100所安全保持的标识符进行比较,并且当策略208的标识符数据与设备100的标识符数据匹配时授权软件模块。设备标识符可以包括存储在设备上可用于标识的任何数据,包括制造商序号、诸如集成电路卡ID(ICCID)的移动电话设备的设备或用户标识符、当前插入到设备100上的SIM卡的国际移动用户标识符(IMSI)、设备上编码的国际移动设备标识符(IMEI)、电子序号(ESN)、或者任何其他适于标识特定软件模块206针对其被授权的设备100的数据。
策略服务210可以被配置为基于简档208所指定的进一步的权利或其他能力来授权软件模块206。可执行或不可执行可以被认为是权利的一个示例。其他权利可以指定特定软件模块206是否可以基于一个或多个简档208并基于策略服务210可配置为执行的任何其他策略来执行或访问服务。
策略服务210可以被配置为在用户空间执行,使得其中执行的策略和简档可以是任意复杂并进行更新的而不会增加内核或其他受保护的存储器空间的尺寸,并且更容易被开发和修改而没有一般与内核编程相关联的困难。
应当认识到,尽管图5例示了操作系统202确定特定软件模块206是否具有要被执行的权利的示例,但是这里描述的方法和系统可以用于授权对设备硬件能力、内核的其他服务、其他操作系统服务、或者另一软件模块208的服务的访问。例如,设备100可以包括例如由操作系统202或仅根据被策略服务210执行的策略授权的其他操作系统部件提供的调试或追踪工具(facility)。例如,调试器接口(未示出)可以请求基于与软件模块206相关联的简档208中指定的调试权利或者通过其他策略来授权利用图5所示的系统对特定软件模块206的调试。
可以通过与设备相关联的一个或多个策略来执行权利。例如,用于执行权利的策略可以包括将简档中的权利数据处理为白名单(whitelist),例如,当简档208可以包括指示存在针对特定软件模块206和/或特定设备100的权利的数据时,可以针对特定这种权利认证软件模块206。另一策略可以基于黑名单(blacklist)执行权利,例如,软件模块206可以针对特定这种权利被认证,除非简档208或可应用的策略可以包括否定针对特定软件模块206和/或特定设备100的权利的数据。在另一实施例中,设备100可以被配置具有如下策略,该策略使得一些权利可以被配置为通过白名单执行,而其他权利被配置为通过黑名单执行。
可以包括其他策略以更精细地控制特定权利或解决冲突的简档数据。例如,在一个实施例中,移动服务提供商可以在其网络中使用的设备中包括特定承载商简档208,该简档进一步指定对例如语音网络或拨号盘访问的特定设备能力的权利,其可能与针对特定软件模块206的开发者简档208相冲突。在这种事件中,设备100的策略可以指定一个简档的权利指定来控制。
在事件6中,当策略服务210可以验证软件模块240的权利和/或其他执行权限时,策略服务210向操作系统202或策略服务210的其他客户端提供指示软件模块206的权利和/或认证请求所针对的权利的数据。在事件7中,操作系统202然后可以根据从策略服务210接收到的权利数据来执行软件模块206。
图5是例示了在设备100中验证软件模块206的权利的方法500的一个实施例的流程图。该方法可以在块502处开始,在块502中操作系统202的可信空间接收执行特定软件模块206的请求。在一个实施例中,可信空间可以在通过设备100的引导加载器(其在加载操作系统202前对其进行加密验证)启动设备时建立。
在块504中,可信空间处理将指示软件模块206的数据传送到在不可信空间中执行的策略服务210,但是该不可信空间在初始执行策略服务210时已被授予信任。数据可以包括对软件模块206的存储位置的引用,并且可选地包括指示特定权利被认证的数据。
接下去在块506处,策略服务210认证软件模块206。在一个实施例中,策略服务210基于加密认证来认证软件模块206。例如,策略服务210可以通过采用诸如非对称/公钥加密的适合加密技术验证软件模块206的数字签名来认证软件模块206。此外,可以利用类似的加密技术来认证与软件模块206相关联的一个或多个权利。参照图6将给出块506的更多细节。
前进到块508,策略服务210将指示软件模块的执行权限的数据传送到操作系统202的内核。该数据可以包括布尔认证响应、指示软件模块206的一个或多个权利的数据、软件模块206的经验证摘要或者与请求相关的任何其他适合数据。
在块510中,操作系统202或其他可信处理可以执行软件模块206,或者可以基于经认证的权利执行针对软件模块206的服务。
图6是更详细地例示了图5的方法中的块506的流程图。在块602处,策略服务210可以计算与软件模块206的可执行代码相关联的至少一个文件或其他数据结构的摘要。摘要可以利用例如包括SHA-1的任何适合散列算法来计算。
在块604中,策略服务210可以识别与软件模块206和/或设备100相关联的一个或多个简档208。在一个实施例中,简档208可以各自包括签名密钥和指示软件模块206的权利的数据。例如,权利可以包括诸如表1中例示的表格形式的数据结构。
表1示例简档数据
  开发者签名密钥   123555
  设备ID1   123FFF
  设备ID2   123FFF
  可执行的   真
  可调试的   假
  可访问网络   真
  代码摘要   AAFF1144BB
软件模块206可以经由识别软件模块206的摘要(例如,表1中所例示的“代码摘要”)的简档的键值对而与简档208相关联。简档208还可以包括数字签名,例如通过例如可信授权机构102加密签名的简档的摘要。接下去在块606处,策略服务210例如通过验证简档208的摘要的加密签名是正确的来加密验证简档208。
移至块608,策略服务210验证可以应用到特定设备100的简档208。在一个实施例中,该验证可以包括将特定设备100的设备标识符204与签名简档208中列出的设备标识符进行比较。在块606处的先前签名验证可以确保简档208中识别的设备没有在未授权的情况下被改变或修改。
接下去在块610处,策略服务210可以基于简档208识别与软件模块206相关联的执行权限。在一个实施例中,该识别可以包括访问每个简档的权利。
在块612中,策略服务210可以验证针对软件模块206要被验证的权利与计算设备100的策略一致。在一个实施例中,该验证可以包括确定所请求的权利是否可以被包括在与软件模块206和设备100的策略相关联的简档208中。
前进到块614,策略服务210然后可以将在块602处计算出的摘要值与软件模块206的签名摘要进行比较,并且验证摘要的加密签名。应当认识到,取决于实施例,这里描述的任何方法的特定动作或事件可以按照不同的顺序来执行,可以被添加、合并或者一起省去(例如,并非所有所描述的动作或事件对于实践方法都是必要的)。此外,在特定实施例中,动作或事件可以例如通过多线程处理、中断处理或者多个处理器同时地而非顺序地执行。
图7是例示了实现为移动设备的一个设备100的示例的框图。设备100可以包括与存储器704通信的处理器702。网络接口706可以包括被配置为根据一个或多个适合的数据和/或语音通信系统经由信号进行通信的接收器724和发送器726。例如,网络接口708可以是可通信的,以通过诸如GSM、CDMA、CDMA2000、EDGE或者UMTS的移动电话网络传送语音和/或数据。网络接口706还可以包括用于其他数据网络(例如包括诸如WiFi或蓝牙的任何IEEE 802.x网络)的接收器/发送器。
设备100还可以包括以下中的一个或多个:显示器710;诸如按键、触摸屏或者其他适合的触知型输入设备的用户输入设备712;扬声器714,包括适于基于通过通信链路106接收到的信号提供听觉输出的换能器;和/或传声器716,包括适于提供可通过通信链路106和108中的一个或两者发送的信号的听觉输入的换能器。
在一个实施例中,输入设备712可以包括加速计或被配置为检测设备的移动的其他设备。设备100可选地可包括电池731来为设备100的一个或多个部件提供电力。设备100可以包括移动手持机、个人数字助理、膝上型计算机、头戴式耳机、车载免提设备或者任何其他电子设备中的至少一个。例如,这里教习的一个或多个方面可以并入到电话(例如,移动电话)、个人数据助理(“PDA”)、娱乐设备(例如,音乐或视频设备)、头戴式耳机(例如,头戴式受话器、听筒等等)、传声器或者任何其他电子设备。如下面将进一步描述的,在一些实施例中,设备100被实施为移动设备。
图8A例示了示例移动设备2500。移动设备2500例如可以是手持式计算机、个人数字助理、蜂窝式电话、网络仪器、照相机、智能电话、增强通用分组无线电服务(EGPRS)移动电话、网络基站、媒体播放器、导航设备、电子邮件设备、游戏控制台,或者这些数据处理设备或其他数据处理设备中的任何两个或更多个的组合。
移动设备概览
在一些实施中,移动设备2500包括触摸敏感显示器2502。触摸敏感显示器2502可以利用液晶显示(LCD)技术、发光聚合物显示(LPD)技术或者一些其他显示技术来实施。触摸敏感显示器2502可以对与用户的触觉和/或触知接触敏感。
在一些实施中,触摸敏感显示器2502可以包括多触摸敏感显示器2502。多触摸敏感显示器2502例如可以处理多个同时触摸点,包括处理与每个触摸点的压力、角度和/或位置相关的数据。这种处理便于利用多个手指的姿态和交互、配合(chording)以及其他交互。还可以采用其他触摸敏感显示技术,例如采用触笔或其他指向设备进行接触的显示器。多触摸敏感显示技术的一些示例在美国专利第6,323,846号、第6,570,557号、第6,677,932号以及第6,888,536号中进行了描述,上述专利中的每一个的全部内容通过引用被并入于此。
在一些实施例中,移动设备2500可以在触摸敏感显示器2502上显示一个或多个图形用户界面,用于向用户提供对各种系统对象的访问以及用于向用户传递信息。在一些实施中,图形用户界面可以包括一个或多个显示对象2504、2506。在所示的示例中,显示对象2504、2506是系统对象的图形表示。系统对象的一些示例包括设备功能、应用、窗口、文件、告警、事件或者其他可识别系统对象。
示例移动设备功能
在一些实施中,移动设备2500可以实施多个设备功能,例如,如由电话对象2510指示的电话设备;如由邮件对象2512指示的电子邮件设备;如由地图对象2514指示的地图设备;Wi-Fi基站设备(未示出);以及如由网络视频对象2516指示的网络视频发送和显示设备。在一些实施中,可以在菜单栏2518中显示特定显示对象2504,例如电话对象2510、邮件对象2512、地图对象2514以及网络视频对象2516。在一些实施中,可以从顶层(top-level)的图形用户界面(例如,图8A中所例示的图形用户界面)来访问设备功能。触摸对象2510、2512、2514或2516中的一个例如可以调用对应的功能。
在一些实施中,移动设备2500可以实现网络发布功能。例如,该功能可以使得用户能够在旅行中带上移动设备2500并提供对其相关联的网络的访问。特别地,移动设备2500可以将因特网访问(例如,Wi-Fi)扩展到附近的其他无线设备。例如,移动设备2500可以被配置为一个或多个设备的基站。因此,移动设备2500可以准许或拒绝对其他无线设备的网络访问。
在一些实施中,在调用设备功能时,移动设备2500的图形用户界面改变,或者增加有或替代以另一用户界面或者用户界面元素,以便于用户访问与对应的设备功能相关联的特定功能。例如,响应于用户触摸电话对象2510,触摸敏感显示器2502的图形用户界面可以呈现与各种电话功能相关的显示对象;同样,触摸邮件对象2512可以使得图形用户界面呈现与各种电子邮件功能相关的显示对象;触摸地图对象2514可以使用图形用户界面呈现与各种地图功能相关的显示对象;以及触摸网络视频对象2516可以使得图形用户界面呈现与各种网络视频功能相关的显示对象。
在一些实施中,可以通过按压位于移动设备2500的底部附近的按钮2520来恢复图8A的顶层图形用户界面环境或状态。在一些实施中,各个对应的设备功能可以使得对应的“始位”显示对象显示在触摸敏感显示器2502上,并且可以通过按压“始位”显示对象来恢复图8A的图形用户界面环境。
在一些实施中,顶层图形用户界面可以包括附加显示对象2506,例如短消息传送服务(SMS)对象2530、日历对象2532、照片对象2534、照相机对象2536、计算器对象2538、股票对象2540、地址簿对象2542、媒体对象2544、网络对象2546、视频对象2548、设置对象2550以及备忘录对象(未示出)。触摸SMS显示对象2530例如可以调用SMS消息传送环境和支持功能;同样,对显示对象2532、2534、2536、2538、2540、2542、2544、2546、2548和2550的每个选择可以调用对应的对象环境和功能。
在图8A的图形用户界面上还可以显示附加和/或不同的显示对象。例如,如果设备2500用作其他设备的基站,则在图形用户界面上可以出现一个或多个“连接”对象以指示连接。在一些实施中,显示对象2506可以被用户配置,例如用户可以指定显示哪些显示对象2506,并且/或者可以下载附加应用程序或提供其他功能和对应显示对象的其他软件。
在一些实施中,移动设备2500可以包括一个或多个输入/输出(I/O)设备和/或传感器设备。例如,可以包括扬声器2560和传声器2562来便于语音使能功能,例如电话和语音邮件功能。在一些实施中,可以包括用于扬声器2560和传声器2562的音量控制的上/下按钮2584。移动设备2500还可以包括用于进入的电话呼叫的铃声指示符的开/关按钮2582。在一些实施中,可以包括扬声器2564来便于免提语音功能,例如扬声器电话功能。还可以包括用于头戴式受话器和/或传声器的音频插孔2566。
在一些实施中,还可以包括接近传感器2568来便于检测用户将移动设备2500定位在用户耳边,并且响应地脱开触摸敏感显示器2502以防止意外的功能调用。在一些实施中,当移动设备2500在用户耳边时,触摸敏感显示器2502可以关闭以保存额外电力。
还可以采用其他传感器。例如,在一些实施中,可以利用背景光传感器2570,以便于调整触摸敏感显示器2502的亮度。在一些实施中,可以采用加速计2572来检测移动设备2500的移动,如由方向箭头2574所指示的。因此,可以根据检测到的朝向(例如,纵向或横向)来呈现显示对象和/或媒体。在一些实施中,移动设备2500可以包括用于支持位置确定功能的电路和传感器,例如,由全球定位系统(GPS)或其他定位系统(例如,利用Wi-Fi接入点、电视信号、蜂窝式网格、统一资源定位符(URL)的系统)所提供的功能。在一些实施中,定位系统(例如,GPS接收器)可以被集成到移动设备2500中,或者提供为单独的设备,该单独的设备可以通过提供对基于位置的服务的访问的接口(例如,端口设备2590)耦接到移动设备2500。
在一些实施中,可以包括例如通用串行总线(USB)端口或者对接端口的端口设备2590或者一些其他有线端口连接。端口设备2590例如可以用于建立到其他计算设备的有线连接,所述其他计算设备例如有其他通信设备2500、网络访问设备、个人计算机、打印机、显示屏或者能够接收和/或发送数据的其他处理设备。在一些实施中,端口设备2590允许移动设备2500例如利用一个或多个协议(例如,TCP/IP、HTTP、UDP以及任何其他已知协议)与主机设备同步。
移动设备2500还可以包括照相机镜头和传感器2580。在一些实施中,照相机镜头和传感器2580可以位于移动设备2500的背面。照相机可以捕捉静止图像和/或视频。
移动设备2500还可以包括一个或多个无线通信子系统,例如802.11b/g通信设备2586和/或BluetoothrTM通信设备2588。还可以支持其他通信协议,包括其他802.x通信协议(例如,WiMax、Wi-Fi、3G)、码分多址(CDMA)、全球移动通信系统(GSM)、增强数据GSM环境(EDGE),等等。
示例可配置的顶层图形用户界面
图8B例示了设备2500的可配置的顶层图形用户界面的另一示例。设备2500可以被配置为显示一组不同的显示对象。
在一些实施中,设备2500的一个或多个系统对象中的每一个具有一组与之相关联的系统对象属性;以及属性中的一个确定系统对象的显示对象是否将被呈现在顶层图形用户界面中。该属性可由系统自动设置,或者如下所述地由用户通过特定程序或系统功能来设置。图8B示出了如何将备忘录对象2552(在图8A中未示出)添加到设备2500的顶层图形用户界面并且从设备2500的顶层图形用户界面移除网络视频对象2516的示例(例如,当修改备忘录系统对象和网络视频系统对象的属性时)。
示例移动设备架构
图9是移动设备(例如,移动设备2500)的示例实施的框图3000。移动设备可以包括存储器接口3002,一个或多个数据处理器、图像处理器和/或中央处理单元3004,以及外设接口3006。存储器接口3002、一个或多个处理器3004和/或外设接口3006可以是单独的部件或者可以集成在一个或多个集成电路中。移动设备中的各种部件可以由一个或多个通信总线或信号线来耦接。
传感器、设备以及子系统可以耦接到外设接口3006以便于实现多个功能。例如,可以将运动传感器3010、光敏传感器3012以及接近传感器3014耦接到外设接口3006以便于实现关于图8A描述的定向、照明以及接近功能。还可以将其他传感器3016连接到外设接口3006,例如定位系统(例如,GPS接收器)、温度传感器、生物测量传感器或者其他感测设备,以便于实现相关的功能。
可以利用照相机子系统3020和光学传感器3022(例如,电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)光学传感器)来便于实现照相机功能,例如记录照片和视频剪辑。
可以通过可包括射频接收器和发送器以及/或者光学(例如,红外)接收器和发送器的一个或多个无线通信子系统3024来便于实现通信功能。对通信子系统3024的特定设计和实施可以取决于移动设备要通过其操作的通信网络。例如,移动设备可以包括被设计用于在GSM网络、GPRS网络、EDGE网络、Wi-Fi或WiMax网络以及BluetoothTM网络上操作的通信子系统3024。特别地,无线通信子系统3024可以包括主机协议,使得移动设备可以被配置为用于其他无线设备的基站。
音频子系统3026可以耦接到扬声器3028和传声器3030,以便于能够实现语音功能,例如语音识别、语音复制、数字记录以及电话功能。
I/O子系统3040可以包括触摸屏控制器3042和/或其他输入控制器3044。触摸屏控制器3042可以耦接到触摸屏3046。触摸屏3046和触摸屏控制器3042例如可以利用多种触摸敏感技术(包括但不限于电容式、电阻式、红外的以及表面声波技术)中的任一种以及其他接近传感器阵列或用于确定与触摸屏3046的一个或多个接触点的其他元件来检测接触以及接触的移动或断开。
其他输入控制器3044可以耦接到其他输入/控制设备3048,例如一个或多个按钮、摇臂开关、指轮、红外端口、USB端口以及/或者诸如触笔的指向器设备。一个或多个按钮(未示出)可以包括用于扬声器3028和/或传声器3030的音量控制的上/下按钮。
在一个实施中,按压按钮达第一持续时间可以解除对触摸屏3046的锁定;并且按压按钮达长于第一持续时间的第二持续时间可以对移动设备通电或断电。用户能够定制一个或多个按钮的功能。触摸屏3046例如还可以用于实现虚拟或软按钮和/或键盘。
在一些实施中,移动设备可以呈现所记录的音频和/或视频文件,例如MP3、AAC和MPEG文件。在一些实施中,移动设备可以包括诸如iPodTM的MP3播放器的功能。因此,移动设备可以包括与iPodTM兼容的32针连接器。还可以采用其他输入/输出和控制设备。
存储器接口3002可以耦接到存储器3050。存储器3050可以包括高速随机存取存储器和/或非易失性存储器,例如一个或多个磁盘存储设备、一个或多个光学存储设备以及/或者闪速存储器(例如,NAND、NOR)。存储器3050可以存储操作系统3052,例如Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS或者诸如VxWorks的嵌入式操作系统。操作系统3052可以包括用于处理基本系统服务的指令以及用于执行依赖于硬件的任务的指令。在一些实施中,操作系统3052可以是内核(例如,UNIX内核)。
存储器3050还可以存储便于与一个或多个附加设备、一个或多个计算机以及/或者一个或多个服务器进行通信的通信指令3054。存储器3050可以包括:便于图形用户界面处理的图形用户界面指令3056;便于传感器相关处理和功能的传感器处理指令3058;便于电话相关处理和功能的电话指令3060;便于电子消息传送相关处理和功能的电子消息传送指令3062;便于网络浏览相关处理和功能的网络浏览指令3064;便于媒体处理相关处理和功能的媒体处理指令3066;便于GPS和导航相关处理和指令的GPS/导航指令3068;便于照相机相关处理和功能的照相机指令3070;以及/或者便于其他处理和功能的其他软件指令3072。存储器3050还可以存储其他软件指令(未示出),例如便于网络视频相关处理和功能的网络视频指令;和/或便于网络购物相关处理和功能的网络购物指令。在一些实施中,媒体处理指令3066被分为分别便于音频处理相关处理和功能以及视频处理相关处理和功能的音频处理指令和视频处理指令。在存储器3050中还可以存储激活记录和国际移动设备标识(IMEI)3074或类似的硬件标识符。
鉴于以上所述,将会认识到实施例克服的问题可以包括实施执行简档以允许开发者在通常由一个或多个其他可信实体提供应用程序的执行环境中开发和测试应用程序。另外,可以向诸如企业的设备提供商提供发布自定义开发的应用程序而不会通过可信实体干扰这种应用程序的灵活性。
本领域技术人员将认识到,关于这里公开的实施例所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实施为电子硬件、计算机软件或两者的结合。为了清楚地例示硬件和软件的这种可互换性,以上大体关于其功能描述了各种示例性部件、块、模块、电路和步骤。这种功能是否实施为硬件或软件取决于特定应用和施加于整体系统的设计限制。熟练的技术人员可以针对每个特定应用按照不同的方式来实施所描述的功能,但是这种实施决定不应被解释为脱离本发明的范围。
关于这里公开的实施例所描述的各种示例性逻辑块、模块和电路可以利用以下来实施或执行:被设计用于执行这里所描述的功能的通用处理器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA),或者其他可编程逻辑器件、离散门或晶体管逻辑器件、离散硬件部件,或者它们的任意组合。通用处理器可以是微处理器,但是另选地处理器可以是任何常见处理器、控制器、微控制器或状态机。处理器还可以实施为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、与DSP核结合的一个或多个微处理器、或者任何其他这种配置。
关于这里所公开的实施例描述的方法或算法的步骤可以直接以硬件实现、以处理器执行的软件模块实现或者以两者的组合来实现。软件模块可以位于RAM存储器、闪速存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可拆除盘、CD-ROM或本领域公知的任何其他形式的存储介质内。示例性存储介质耦接到存储器,使得存储器可以从/向存储介质读取/写入信息。另选地,存储介质可以与处理器是一体的。处理器和存储介质可以位于ASIC内。ASIC可以位于用户终端中。另选地,处理器和存储介质可以作为离散部件位于用户终端中。
虽然上面的详细描述已经示出、描述以及指出了本发明的在应用于各种实施例时的新颖特征,但应当明白,在不脱离本发明宗旨的情况下,本领域技术人员可以对所示设备或处理的形式和细节进行各种省略、替代以及改变。如将认识到,本发明可以在不提供这里所阐述的所有特征和优点的形式内实现,因为一些特征可以与其他特征分开使用或实践。本发明的范围由所附权利要求书而非由以上描述来指示。落在权利要求书的含义和等同范围内的所有变化都被认为是包含在其范围内。

Claims (36)

1.一种授权软件的计算机化方法,该方法包括:
在处理器的可信空间中接收用以执行在电子设备上存储的软件模块的请求;
将指示所述软件模块的数据传送到在所述处理器的不可信空间中执行的服务;
通过所述服务认证对所述软件模块的至少一个权利;
将指示所述经认证的权利的数据传送到所述可信空间;以及
基于所述权利执行所述软件模块。
2.根据权利要求1所述的方法,其中,所述可信空间包括在所述设备的处理器上以可信模式执行的操作系统内核,并且在所述不可信空间中执行的所述服务包括以所述处理器的用户模式处理执行的处理。
3.根据权利要求1所述的方法,其中,所述软件模块至少包括应用程序或共享库。
4.根据权利要求1所述的方法,其中,所述指示所述软件模块的数据包括对与所述软件模块相关联的可执行指令的至少一部分的引用。
5.根据权利要求4所述的方法,其中,认证至少一个权利包括计算指示所述部分的摘要。
6.根据权利要求5所述的方法,其中,计算指示所述软件模块的至少一部分的摘要包括:基于指示所述软件模块的相应部分的多个摘要值来生成摘要。
7.根据权利要求5所述的方法,其中,所述摘要包括指示所述至少一个部分的SHA-1散列。
8.根据权利要求5所述的方法,其中,认证所述至少一个权利包括:基于与所述软件模块相关联的实体的加密密钥来认证所述摘要的加密签名。
9.根据权利要求8所述的方法,其中,认证所述摘要的加密签名包括:
基于可信实体的公钥来计算所述摘要的加密签名;以及
将所计算的签名与关于至少一个文件存储的签名进行比较。
10.根据权利要求8所述的方法,其中,认证所述软件模块的至少一个权利包括:
识别与所述软件模块相关联的简档,其中所述简档包括指示至少一个设备标识符的数据;
基于所述实体的加密密钥来认证所述简档;
将所述简档的设备标识符与所述电子设备的设备标识符进行比较;以及
基于所述比较来认证所述权利。
11.根据权利要求10所述的方法,其中,所述简档还包括指示至少一个权利的数据,并且其中,认证所述软件模块的至少一个权利包括当所述软件模块的权利与所述简档的权利一致时认证所述软件模块的权利。
12.根据权利要求1所述的方法,其中,所述软件模块的权利包括准许调试权利、准许追踪权利、准许访问地址簿数据权利或者准许访问多媒体API权利中的至少一个或多个。
13.一种计算机程序产品,包括:
计算机可读介质,包括指示代码的数据,所述代码可由电子设备的至少一个处理器执行以实现包括如下的处理:
在处理器的可信空间中接收用以执行在电子设备上存储的软件模块的请求;
将指示所述软件模块的数据传送到在所述处理器的不可信空间中执行的服务;
通过所述服务认证对所述软件模块的至少一个权利;
将指示所述经认证的权利的数据传送到可信空间处理;以及
基于所述权利执行所述软件模块。
14.根据权利要求13所述的计算机程序产品,其中,所述可信空间包括在所述设备的处理器上以可信模式执行的操作系统内核,并且在所述不可信空间中执行的所述服务包括以所述处理器的用户模式处理执行的处理。
15.根据权利要求13所述的计算机程序产品,其中,所述软件模块至少包括应用程序或共享库。
16.根据权利要求13所述的计算机程序产品,其中,所述指示所述软件模块的数据包括对与所述软件模块相关联的可执行指令的至少一部分的引用。
17.根据权利要求16所述的计算机程序产品,其中,认证至少一个权利包括计算指示所述部分的摘要。
18.根据权利要求17所述的计算机程序产品,其中,计算指示所述软件模块的至少一部分的摘要包括:基于指示所述软件模块的相应部分的多个摘要值来生成摘要。
19.根据权利要求17所述的计算机程序产品,其中,所述摘要包括指示所述至少一个部分的SHA-1散列。
20.根据权利要求17所述的计算机程序产品,其中,认证所述至少一个权利包括:基于与所述软件模块相关联的实体的加密密钥来认证所述摘要的加密签名。
21.根据权利要求20所述的计算机程序产品,其中,认证所述至少一个权利包括:
基于可信实体的公钥来计算所述摘要的加密签名;以及
将所计算的签名与关于至少一个文件存储的签名进行比较。
22.根据权利要求20所述的计算机程序产品,其中,认证所述至少一个权利包括:
识别与所述软件模块相关联的简档,其中所述简档包括指示至少一个设备标识符的数据;
基于所述实体的加密密钥来认证所述简档;
将所述简档的设备标识符与所述电子设备的设备标识符进行比较;以及
基于所述比较来认证所述权利。
23.根据权利要求23所述的计算机程序产品,其中,所述简档还包括指示至少一个权利的数据,并且其中,当所述软件模块的权利与所述简档的权利一致时,处理器认证所述软件模块的权利。
24.根据权利要求13所述的计算机程序产品,其中,所述软件模块的权利包括准许调试权利、准许追踪权利、准许访问地址簿数据权利或者准许访问多媒体API权利中的至少一个或多个。
25.一种设备,包括:
存储介质,该存储介质配置为:
存储用于在所述电子设备上执行的软件模块;和
存储至少一个简档,该至少一个简档包括与所述软件模块相关联的至少一个权利;以及
至少一个处理器,该至少一个处理器配置为:
由在处理器的可信空间中执行的处理接收用以执行软件模块的请求;
将指示所述软件模块的数据传送到在所述处理器的不可信空间中执行的服务;
通过所述服务认证对所述软件模块的至少一个权利;
将指示所述经认证的权利的数据传送到可信空间处理;以及
基于所述权利执行所述软件模块。
26.根据权利要求25所述的设备,其中,所述可信空间包括在所述设备的处理器上以可信模式执行的操作系统内核,并且在所述不可信空间中执行的所述服务包括以所述处理器的用户模式处理执行的处理。
27.根据权利要求25所述的设备,其中,所述软件模块至少包括应用程序或共享库。
28.根据权利要求25所述的设备,其中,所述指示所述软件模块的数据包括对与所述软件模块相关联的可执行指令的至少一部分的引用。
29.根据权利要求28所述的设备,其中,为了认证摘要的加密签名,所述处理器还配置为计算指示所述部分的摘要。
30.根据权利要求29所述的设备,其中,为了计算所述摘要,所述处理器配置为基于指示所述软件模块的相应部分的多个摘要值来生成摘要。
31.根据权利要求29所述的设备,其中,所述摘要包括指示所述至少一个部分的SHA-1散列。
32.根据权利要求29所述的设备,其中,为了认证摘要的加密签名,所述处理器还配置为基于与所述软件模块相关联的实体的加密密钥来认证所述摘要的加密签名。
33.根据权利要求32所述的设备,其中,为了认证所述摘要的加密签名,所述处理器还配置为:
基于可信实体的公钥来计算所述摘要的加密签名;以及
将所计算的签名与关于至少一个文件存储的签名进行比较。
34.根据权利要求32所述的设备,其中,为了认证所述摘要的加密签名,所述处理器还配置为:
识别与所述软件模块相关联的简档,其中所述简档包括指示至少一个设备标识符的数据;
基于所述实体的加密密钥来认证所述简档;
将所述简档的设备标识符与所述电子设备的设备标识符进行比较;以及
基于所述比较的结果来认证所述权利。
35.根据权利要求34所述的设备,其中,所述简档还包括指示至少一个权利的数据,并且其中,认证所述软件模块的至少一个权利包括当所述软件模块的权利与所述简档的权利一致时认证所述软件模块的权利。
36.根据权利要求25所述的设备,其中,所述软件模块的权利包括准许调试权利、准许追踪权利、准许访问地址簿数据权利或者准许访问多媒体API权利中的至少一个或多个。
CN200980115997.2A 2008-03-04 2009-03-02 基于至少一个已安装的简档来授权执行软件代码的系统和方法 Active CN102016867B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US3373508P 2008-03-04 2008-03-04
US61/033,735 2008-03-04
PCT/US2009/035750 WO2009111408A1 (en) 2008-03-04 2009-03-02 System and method of authorizing execution of software code based on at least one installed profile

Publications (2)

Publication Number Publication Date
CN102016867A true CN102016867A (zh) 2011-04-13
CN102016867B CN102016867B (zh) 2015-02-25

Family

ID=40912001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980115997.2A Active CN102016867B (zh) 2008-03-04 2009-03-02 基于至少一个已安装的简档来授权执行软件代码的系统和方法

Country Status (7)

Country Link
US (2) US9672350B2 (zh)
EP (1) EP2250604B1 (zh)
JP (1) JP5069359B2 (zh)
KR (1) KR101239012B1 (zh)
CN (1) CN102016867B (zh)
AU (1) AU2009222006B2 (zh)
WO (1) WO2009111408A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137114A (zh) * 2012-02-03 2014-11-05 苹果公司 集中式操作管理
CN110024426A (zh) * 2017-02-13 2019-07-16 三星电子株式会社 通过eSIM进行访问控制的装置及方法
CN110149806A (zh) * 2017-12-08 2019-08-20 谷歌有限责任公司 堆栈数据结构的数字助理处理

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8208900B2 (en) * 2008-03-04 2012-06-26 Apple Inc. Secure device configuration profiles
US8266684B2 (en) * 2008-09-30 2012-09-11 General Instrument Corporation Tokenized resource access
US8631390B2 (en) 2010-04-02 2014-01-14 Apple Inc. Archiving a build product
US9210528B2 (en) * 2010-07-21 2015-12-08 Tksn Holdings, Llc System and method for control and management of resources for consumers of information
KR101241158B1 (ko) 2010-12-08 2013-03-13 기아자동차주식회사 자동차용 앵커 프리텐셔너 구조
US9367373B2 (en) * 2011-11-09 2016-06-14 Unisys Corporation Automatic configuration consistency check
US8281119B1 (en) * 2011-11-22 2012-10-02 Google Inc. Separate normal firmware and developer firmware
JP5964077B2 (ja) * 2012-02-27 2016-08-03 三菱重工業株式会社 制御プログラム管理システム、及び制御プログラムの変更方法
EP2831787B1 (en) 2012-03-30 2020-07-08 Irdeto B.V. Method and system for preventing and detecting security threats
WO2015175942A1 (en) * 2014-05-15 2015-11-19 Carnegie Mellon University Method and apparatus for on-demand i/o channels for secure applications
US9692879B1 (en) 2014-05-20 2017-06-27 Invincea, Inc. Methods and devices for secure authentication to a compute device
US10127375B2 (en) 2015-03-07 2018-11-13 Protegrity Corporation Enforcing trusted application settings for shared code libraries
US10142370B2 (en) * 2015-06-29 2018-11-27 Vmware, Inc Methods and apparatus for generating and using security assertions associated with containers in a computing environment
CN105354489B (zh) * 2015-10-29 2019-05-10 小米科技有限责任公司 权限授予方法及装置
EP3239882B1 (de) * 2016-04-26 2020-11-11 Deutsche Telekom AG Zugriff auf eine protokolldatei
GB2551813B (en) * 2016-06-30 2020-01-08 Sophos Ltd Mobile device policy enforcement
US10819586B2 (en) * 2018-10-17 2020-10-27 Servicenow, Inc. Functional discovery and mapping of serverless resources
US11102002B2 (en) * 2018-12-28 2021-08-24 Dell Products, L.P. Trust domain isolation management in secured execution environments
CN113536241B (zh) * 2021-06-01 2024-05-28 上海赫千电子科技有限公司 一种车载系统可计数的软件授权方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138423A1 (en) * 2003-12-23 2005-06-23 Kumar Ranganathan Remote provisioning of secure systems for mandatory control
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US20060265754A1 (en) * 2005-05-19 2006-11-23 Microsoft Corporation Systems and methods for pattern matching on principal names to control access to computing resources

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4868877A (en) 1988-02-12 1989-09-19 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5625693A (en) 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US5673316A (en) 1996-03-29 1997-09-30 International Business Machines Corporation Creation and distribution of cryptographic envelope
US5757919A (en) 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
JP4187285B2 (ja) 1997-04-10 2008-11-26 富士通株式会社 認証子付与方法および認証子付与装置
US7246098B1 (en) * 1997-07-15 2007-07-17 Silverbrook Research Pty Ltd Consumable authentication protocol and system
EP2256605B1 (en) 1998-01-26 2017-12-06 Apple Inc. Method and apparatus for integrating manual input
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6553375B1 (en) * 1998-11-25 2003-04-22 International Business Machines Corporation Method and apparatus for server based handheld application and database management
JP4049498B2 (ja) 1999-11-18 2008-02-20 株式会社リコー 原本性保証電子保存方法、装置及びコンピュータ読み取り可能な記録媒体
US6785815B1 (en) * 1999-06-08 2004-08-31 Intertrust Technologies Corp. Methods and systems for encoding and protecting data using digital signature and watermarking techniques
JP2001034470A (ja) 1999-07-22 2001-02-09 Fujitsu Ltd 管理自動化機構を有するサーバ
US6779117B1 (en) * 1999-07-23 2004-08-17 Cybersoft, Inc. Authentication program for a computer operating system
AU6614600A (en) 1999-07-29 2001-02-19 Intertrust Technologies Corp. Systems and methods for using cryptography to protect secure and insecure computing environments
US6324637B1 (en) 1999-08-13 2001-11-27 Sun Microsystems, Inc. Apparatus and method for loading objects from a primary memory hash index
US20010034839A1 (en) * 1999-12-24 2001-10-25 Guenter Karjoth Method and apparatus for secure transmission of data and applications
GB0003920D0 (en) 2000-02-21 2000-04-05 Ncipher Corp Limited Computer system
JP2004531780A (ja) * 2000-06-22 2004-10-14 マイクロソフト コーポレーション 分散型コンピューティングサービスプラットフォーム
CA2414281C (en) 2000-11-17 2009-06-02 Bitfone Corporation System and method for updating and distributing information
US20020078380A1 (en) * 2000-12-20 2002-06-20 Jyh-Han Lin Method for permitting debugging and testing of software on a mobile communication device in a secure environment
US6677932B1 (en) 2001-01-28 2004-01-13 Finger Works, Inc. System and method for recognizing touch typing under limited tactile feedback conditions
US6570557B1 (en) 2001-02-10 2003-05-27 Finger Works, Inc. Multi-touch system and method for emulating modifier keys via fingertip chords
US7478243B2 (en) * 2001-03-21 2009-01-13 Microsoft Corporation On-disk file format for serverless distributed file system with signed manifest of file modifications
US7080000B1 (en) * 2001-03-30 2006-07-18 Mcafee, Inc. Method and system for bi-directional updating of antivirus database
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
US7240205B2 (en) * 2002-01-07 2007-07-03 Xerox Corporation Systems and methods for verifying documents
JP2003202929A (ja) 2002-01-08 2003-07-18 Ntt Docomo Inc 配信方法および配信システム
US20040064457A1 (en) * 2002-09-27 2004-04-01 Zimmer Vincent J. Mechanism for providing both a secure and attested boot
FR2845493A1 (fr) * 2002-10-04 2004-04-09 Canal Plus Technologies Logiciel embarque et procede d'authentification de celui-ci
US7165076B2 (en) * 2002-11-15 2007-01-16 Check Point Software Technologies, Inc. Security system with methodology for computing unique security signature for executable file employed across different machines
US7406176B2 (en) * 2003-04-01 2008-07-29 Microsoft Corporation Fully scalable encryption for scalable multimedia
US7491122B2 (en) 2003-07-09 2009-02-17 Wms Gaming Inc. Gaming machine having targeted run-time software authentication
US7103779B2 (en) * 2003-09-18 2006-09-05 Apple Computer, Inc. Method and apparatus for incremental code signing
US7346163B2 (en) * 2003-10-31 2008-03-18 Sony Corporation Dynamic composition of pre-encrypted video on demand content
US20050239504A1 (en) * 2004-04-23 2005-10-27 Sharp Laboratories Of America, Inc. SIM-based automatic feature activation for mobile phones
US8694802B2 (en) * 2004-04-30 2014-04-08 Apple Inc. System and method for creating tamper-resistant code
US20060143179A1 (en) * 2004-12-29 2006-06-29 Motorola, Inc. Apparatus and method for managing security policy information using a device management tree
JP4606339B2 (ja) * 2005-02-07 2011-01-05 株式会社ソニー・コンピュータエンタテインメント セキュアなプロセッサの処理の移行を実施する方法および装置
JP2006221629A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc プロセッサのリソース管理によるコンテンツ制御方法および装置
US7610273B2 (en) * 2005-03-22 2009-10-27 Microsoft Corporation Application identity and rating service
US7813910B1 (en) * 2005-06-10 2010-10-12 Thinkvillage-Kiwi, Llc System and method for developing an application playing on a mobile device emulated on a personal computer
US8589140B1 (en) * 2005-06-10 2013-11-19 Wapp Tech Corp. System and method for emulating and profiling a frame-based application playing on a mobile device
JP4754299B2 (ja) * 2005-08-18 2011-08-24 株式会社エヌ・ティ・ティ・データ 情報処理装置
US7734290B2 (en) * 2005-10-03 2010-06-08 Kyocera Wireless Corp. Method for managing acquisition lists for wireless local area networks
US8280354B2 (en) * 2005-10-27 2012-10-02 Research In Motion Limited Method and system for provisioning wireless services
WO2007097439A1 (ja) * 2006-02-21 2007-08-30 Nec Corporation プログラムの実行制御システム、実行制御方法、実行制御用コンピュータプログラム
US20070240194A1 (en) * 2006-03-28 2007-10-11 Hargrave Bentley J Scoped permissions for software application deployment
US7685263B2 (en) * 2006-12-19 2010-03-23 Blue Coat Systems, Inc. Method and system for configuring a device with a wireless mobile configurator
US7877087B2 (en) * 2007-07-25 2011-01-25 Sony Ericsson Mobile Communications Ab Methods of remotely updating lists in mobile terminals and related systems and computer program products
US8341083B1 (en) * 2007-09-12 2012-12-25 Devicefidelity, Inc. Wirelessly executing financial transactions
US8613002B2 (en) * 2008-02-08 2013-12-17 Ecrio, Inc. System, method and apparatus for controlling multiple applications and services on a digital electronic device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138423A1 (en) * 2003-12-23 2005-06-23 Kumar Ranganathan Remote provisioning of secure systems for mandatory control
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
US20060265754A1 (en) * 2005-05-19 2006-11-23 Microsoft Corporation Systems and methods for pattern matching on principal names to control access to computing resources

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104137114A (zh) * 2012-02-03 2014-11-05 苹果公司 集中式操作管理
CN104137114B (zh) * 2012-02-03 2017-03-08 苹果公司 集中式操作管理
US10122759B2 (en) 2012-02-03 2018-11-06 Apple Inc. Centralized operation management
CN110024426A (zh) * 2017-02-13 2019-07-16 三星电子株式会社 通过eSIM进行访问控制的装置及方法
CN110024426B (zh) * 2017-02-13 2022-09-02 三星电子株式会社 通过eSIM进行访问控制的装置及方法
US11496883B2 (en) 2017-02-13 2022-11-08 Samsung Electronics Co., Ltd Apparatus and method for access control on eSIM
CN110149806A (zh) * 2017-12-08 2019-08-20 谷歌有限责任公司 堆栈数据结构的数字助理处理
CN110149806B (zh) * 2017-12-08 2023-08-08 谷歌有限责任公司 堆栈数据结构的数字助理处理

Also Published As

Publication number Publication date
KR20100126471A (ko) 2010-12-01
AU2009222006B2 (en) 2013-01-24
US9672350B2 (en) 2017-06-06
AU2009222006A1 (en) 2009-09-11
KR101239012B1 (ko) 2013-03-11
CN102016867B (zh) 2015-02-25
JP5069359B2 (ja) 2012-11-07
EP2250604A1 (en) 2010-11-17
WO2009111408A1 (en) 2009-09-11
US20170277886A1 (en) 2017-09-28
EP2250604B1 (en) 2017-12-27
US20090249065A1 (en) 2009-10-01
JP2011515744A (ja) 2011-05-19

Similar Documents

Publication Publication Date Title
CN102016867B (zh) 基于至少一个已安装的简档来授权执行软件代码的系统和方法
CN102016865A (zh) 基于可用权利来授权执行软件代码的系统和方法
CN102016866B (zh) 基于授予承载商的权利授权在设备上执行软件代码的系统和方法
CN109472166B (zh) 一种电子签章方法、装置、设备及介质
AU2020244394B2 (en) Method, requester device, verifier device and server for proving at least one piece of user information
CN108614878B (zh) 协议数据管理方法、装置、存储介质及系统
CN107241688A (zh) 应用安装包的签名、验证方法、装置及存储介质
US20090249064A1 (en) System and method of authorizing execution of software code based on a trusted cache
US20090249071A1 (en) Managing code entitlements for software developers in secure operating environments
US20090228704A1 (en) Providing developer access in secure operating environments
CN108335105B (zh) 数据处理方法及相关设备
KR20160064033A (ko) 단말기 검증방법, 장치, 프로그램 및 기록매체
CN115618306A (zh) 一种软件保护方法、装置、系统、cpu芯片及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant